ngx-t-forms 2.0.10 → 2.0.12
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/{ngx-t-forms-api-value-access-rules.component-N3ygU2OC.mjs → ngx-t-forms-api-value-access-rules.component-DyptJ5Lx.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-api-value-access-rules.component-N3ygU2OC.mjs.map → ngx-t-forms-api-value-access-rules.component-DyptJ5Lx.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-calculated-field-rules.component-BLWcl6vn.mjs → ngx-t-forms-calculated-field-rules.component-D-p_AC92.mjs} +3 -3
- package/fesm2022/{ngx-t-forms-calculated-field-rules.component-BLWcl6vn.mjs.map → ngx-t-forms-calculated-field-rules.component-D-p_AC92.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-CPerh2tW.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-CZ_RUvAq.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-CPerh2tW.mjs.map → ngx-t-forms-config-mscoa-additional-inputs.component-CZ_RUvAq.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-form-input-selector.component-CPP9vk2K.mjs → ngx-t-forms-form-input-selector.component-DFFfODcQ.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-form-input-selector.component-CPP9vk2K.mjs.map → ngx-t-forms-form-input-selector.component-DFFfODcQ.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-form-json-view.component-DrYn49ee.mjs → ngx-t-forms-form-json-view.component-DnW2Z2Dx.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-form-json-view.component-DrYn49ee.mjs.map → ngx-t-forms-form-json-view.component-DnW2Z2Dx.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-form-section-stepper.component-KFY1Ligw.mjs +243 -0
- package/fesm2022/ngx-t-forms-form-section-stepper.component-KFY1Ligw.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-forms-builder-menu.component-CIpEQV76.mjs → ngx-t-forms-forms-builder-menu.component-oXTutvUh.mjs} +13 -7
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-oXTutvUh.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-input-editor.component-S5vwN832.mjs → ngx-t-forms-input-editor.component-Bw3MLspq.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-input-editor.component-S5vwN832.mjs.map → ngx-t-forms-input-editor.component-Bw3MLspq.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-cuh6pUIa.mjs → ngx-t-forms-mat-chip-list-editor.component-BjgxuRp4.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-cuh6pUIa.mjs.map → ngx-t-forms-mat-chip-list-editor.component-BjgxuRp4.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mat-slider-editor.component-0oKVJ6ZR.mjs → ngx-t-forms-mat-slider-editor.component-BH3FudLk.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-mat-slider-editor.component-0oKVJ6ZR.mjs.map → ngx-t-forms-mat-slider-editor.component-BH3FudLk.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-CH979aIj.mjs → ngx-t-forms-mat-slider-toggle-editor.component-BiedE32P.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-CH979aIj.mjs.map → ngx-t-forms-mat-slider-toggle-editor.component-BiedE32P.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-missing-form-configs.component-DO5tei0F.mjs → ngx-t-forms-missing-form-configs.component-BCUXbEDz.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-missing-form-configs.component-DO5tei0F.mjs.map → ngx-t-forms-missing-form-configs.component-BCUXbEDz.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-DVLk9GU0.mjs → ngx-t-forms-mscoa-segment-config.component-D7r-z327.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-DVLk9GU0.mjs.map → ngx-t-forms-mscoa-segment-config.component-D7r-z327.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-ngx-t-forms-dXesQz32.mjs → ngx-t-forms-ngx-t-forms-D4uTTkn-.mjs} +695 -327
- package/fesm2022/ngx-t-forms-ngx-t-forms-D4uTTkn-.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-pipeline-generator.component-CwqafpEq.mjs → ngx-t-forms-pipeline-generator.component-C5qbKts5.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-pipeline-generator.component-CwqafpEq.mjs.map → ngx-t-forms-pipeline-generator.component-C5qbKts5.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-required-inputs.component-Cle4WsPa.mjs → ngx-t-forms-required-inputs.component-DBOzCWsw.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-required-inputs.component-Cle4WsPa.mjs.map → ngx-t-forms-required-inputs.component-DBOzCWsw.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-N7z59aKu.mjs → ngx-t-forms-rest-api-call-setup.component-DGxWDFUN.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-N7z59aKu.mjs.map → ngx-t-forms-rest-api-call-setup.component-DGxWDFUN.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-section-report.component-CRJIa-3A.mjs → ngx-t-forms-section-report.component-DMvHXB1F.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-section-report.component-CRJIa-3A.mjs.map → ngx-t-forms-section-report.component-DMvHXB1F.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-selection-options-editor.component-Cm41dBKq.mjs → ngx-t-forms-selection-options-editor.component-B5Sw7_ff.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-selection-options-editor.component-Cm41dBKq.mjs.map → ngx-t-forms-selection-options-editor.component-B5Sw7_ff.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-validators-config.component-CAdn7-Nn.mjs → ngx-t-forms-validators-config.component-B8J6K4e5.mjs} +3 -3
- package/fesm2022/{ngx-t-forms-validators-config.component-CAdn7-Nn.mjs.map → ngx-t-forms-validators-config.component-B8J6K4e5.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms.mjs +1 -1
- package/lib/components/form-builder/elements/form-section-stepper/form-section-stepper.component.d.ts +5 -0
- package/lib/components/form-builder/elements/forms-builder-menu/forms-builder-menu.component.d.ts +2 -0
- package/lib/components/form-builder/elements/select-form-template/select-form-template.component.d.ts +7 -2
- package/lib/components/t-form-input/elements/Geo-location-form-input/geo-location.component.d.ts +1 -4
- package/lib/components/t-form-input/elements/auto-complete-input-element/auto-complete-input-element.component.d.ts +1 -4
- package/lib/components/t-form-input/elements/auto-complete-input-element/core/auto-complet-reactive-input/auto-complet-reactive-input.component.d.ts +19 -0
- package/lib/components/t-form-input/elements/basic-input-input-element/basic-input-input-element.component.d.ts +1 -4
- package/lib/components/t-form-input/elements/date-picker-input-element/core/date-picker-reactive-input/date-picker-reactive-input.component.d.ts +16 -0
- package/lib/components/t-form-input/elements/date-picker-input-element/date-picker-input-element.component.d.ts +1 -5
- package/lib/components/t-form-input/elements/date-range-picker-input-element/core/date-range-picker-reactive-input/date-range-picker-reactive-input.component.d.ts +17 -0
- package/lib/components/t-form-input/elements/date-range-picker-input-element/date-range-picker-input-element.component.d.ts +22 -5
- package/lib/components/t-form-input/elements/editor-input-element/editor-input-element.component.d.ts +1 -4
- package/lib/components/t-form-input/elements/file-upload-input-element/file-upload-input-element.component.d.ts +1 -4
- package/lib/components/t-form-input/elements/image-capture-input-element/image-capture-input-element.component.d.ts +1 -4
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/mscoa-chart.component.d.ts +3 -1
- package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-reactive-form-field/mscoa-reactive-form-field.component.d.ts +1 -0
- package/lib/components/t-form-input/elements/mscoa-form-input/mscoa-form-input.component.d.ts +2 -5
- package/lib/components/t-form-input/elements/multiple-input-input-element/core/multiple-input-table/multiple-input-table.component.d.ts +8 -6
- package/lib/components/t-form-input/elements/multiple-input-input-element/multiple-input-input-element.component.d.ts +1 -4
- package/lib/components/t-form-input/elements/select-input-element/elements/select-input/select-input.component.d.ts +1 -0
- package/lib/components/t-form-input/elements/select-input-element/select-input-element.component.d.ts +1 -5
- package/lib/components/t-form-input/elements/select-table-input/select-table-input.component.d.ts +1 -4
- package/lib/components/t-form-input/elements/signature-input-element/signature-input-element.component.d.ts +1 -4
- package/lib/components/t-form-input/elements/textarea-input-element/core/text-area-reactive-input/text-area-reactive-input.component.d.ts +20 -0
- package/lib/components/t-form-input/elements/textarea-input-element/textarea-input-element.component.d.ts +1 -4
- package/lib/components/t-form-input/elements/toggle-input-element/core/toggle/toggle.component.d.ts +1 -0
- package/lib/components/t-form-input/elements/toggle-input-element/toggle-input-element.component.d.ts +1 -4
- package/lib/components/t-form-input/t-form-input.component.d.ts +1 -4
- package/lib/components/t-form-input-status/t-form-input-status.component.d.ts +1 -0
- package/lib/services/core/t-form-controller/function/multipleFormInputsMapValueToFormInputId.d.ts +2 -0
- package/lib/services/core/t-form-section-controller/Functions/commonFormOperations.d.ts +1 -1
- package/lib/services/core/t-form-tower-controller/form-tower-controller.service.d.ts +1 -1
- package/lib/services/core/t-input-controller/functions/baseCustomInput.d.ts +0 -1
- package/package.json +2 -2
- package/fesm2022/ngx-t-forms-form-section-stepper.component-8D5I7skU.mjs +0 -225
- package/fesm2022/ngx-t-forms-form-section-stepper.component-8D5I7skU.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-CIpEQV76.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-ngx-t-forms-dXesQz32.mjs.map +0 -1
package/fesm2022/{ngx-t-forms-ngx-t-forms-dXesQz32.mjs → ngx-t-forms-ngx-t-forms-D4uTTkn-.mjs}
RENAMED
|
@@ -61,7 +61,7 @@ import { MatSelectModule } from '@angular/material/select';
|
|
|
61
61
|
import * as i8$1 from '@angular/material/sidenav';
|
|
62
62
|
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
63
63
|
import { MatSliderModule } from '@angular/material/slider';
|
|
64
|
-
import * as i2$
|
|
64
|
+
import * as i2$4 from '@angular/material/slide-toggle';
|
|
65
65
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
66
66
|
import { MatSnackBarModule, MatSnackBar } from '@angular/material/snack-bar';
|
|
67
67
|
import * as i4$1 from '@angular/material/sort';
|
|
@@ -78,7 +78,7 @@ import { MatTreeModule, MatTreeFlattener, MatTreeFlatDataSource } from '@angular
|
|
|
78
78
|
import { OverlayModule } from '@angular/cdk/overlay';
|
|
79
79
|
import * as i3$1 from '@angular/material/form-field';
|
|
80
80
|
import { MatFormFieldModule, MatFormFieldControl } from '@angular/material/form-field';
|
|
81
|
-
import * as
|
|
81
|
+
import * as i2$3 from '@angular/material/autocomplete';
|
|
82
82
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
83
83
|
import * as i2$2 from '@angular/common';
|
|
84
84
|
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
@@ -425,12 +425,12 @@ function compileInputValidators(input, getFormValue) {
|
|
|
425
425
|
if (input.type === 'email' && !inputValidators.includes('email')) {
|
|
426
426
|
inputValidators = [...inputValidators, 'email'];
|
|
427
427
|
}
|
|
428
|
-
const formControlOptions = { validators: returnValidator(inputValidators, getFormValue) };
|
|
428
|
+
const formControlOptions = { validators: returnValidator(inputValidators, getFormValue, input) };
|
|
429
429
|
// Set updateOn to 'change' if custom validation functions are present
|
|
430
430
|
formControlOptions.updateOn = 'change';
|
|
431
431
|
return formControlOptions;
|
|
432
432
|
}
|
|
433
|
-
function returnValidator(validators, formValue) {
|
|
433
|
+
function returnValidator(validators, formValue, input) {
|
|
434
434
|
const Val = [];
|
|
435
435
|
validators.forEach(validate => {
|
|
436
436
|
if (typeof validate === 'object') {
|
|
@@ -440,6 +440,17 @@ function returnValidator(validators, formValue) {
|
|
|
440
440
|
else {
|
|
441
441
|
switch (validate) {
|
|
442
442
|
case 'required':
|
|
443
|
+
if (input.element === ElementTypes.Toggle) {
|
|
444
|
+
Val.push(toggleRequiredValidator);
|
|
445
|
+
break;
|
|
446
|
+
}
|
|
447
|
+
if (input.element === ElementTypes.MultipleInput) {
|
|
448
|
+
Val.push(multipleInPutRequiredValidator);
|
|
449
|
+
break;
|
|
450
|
+
}
|
|
451
|
+
if (input.element === ElementTypes.DateRangePicker) {
|
|
452
|
+
console.error("Date Range Picker Validation is not implemented yet", input);
|
|
453
|
+
}
|
|
443
454
|
Val.push(Validators.required);
|
|
444
455
|
break;
|
|
445
456
|
case 'email':
|
|
@@ -450,6 +461,26 @@ function returnValidator(validators, formValue) {
|
|
|
450
461
|
});
|
|
451
462
|
return Val;
|
|
452
463
|
}
|
|
464
|
+
const multipleInPutRequiredValidator = (control) => {
|
|
465
|
+
const value = control.value;
|
|
466
|
+
if (value === null || value === undefined || value === '') {
|
|
467
|
+
return { 'required': true };
|
|
468
|
+
}
|
|
469
|
+
if (Array.isArray(value) === false) {
|
|
470
|
+
return { 'required': true };
|
|
471
|
+
}
|
|
472
|
+
return value.length === 0 ? { 'required': true } : null;
|
|
473
|
+
};
|
|
474
|
+
const toggleRequiredValidator = (control) => {
|
|
475
|
+
const value = control.value;
|
|
476
|
+
if (value === null || value === undefined || value === '') {
|
|
477
|
+
return { 'required': true };
|
|
478
|
+
}
|
|
479
|
+
if (typeof value !== 'boolean') {
|
|
480
|
+
return { 'required': true };
|
|
481
|
+
}
|
|
482
|
+
return null;
|
|
483
|
+
};
|
|
453
484
|
function createCustomValidator(config, formValue) {
|
|
454
485
|
return (control) => {
|
|
455
486
|
const formGroup = control.parent;
|
|
@@ -520,8 +551,9 @@ function formGenerator(inputs, getFormValue) {
|
|
|
520
551
|
// Create controls for each input in the section
|
|
521
552
|
const controls = sectionInputs.reduce((formControls, input) => {
|
|
522
553
|
// Create explicit FormControl with initial value, disabled state, and validators
|
|
554
|
+
const value = getDefaultValue(input);
|
|
523
555
|
formControls[input.id] = new FormControl({
|
|
524
|
-
value:
|
|
556
|
+
value: value,
|
|
525
557
|
disabled: !!input.disabled
|
|
526
558
|
}, compileInputValidators(input, getFormValue));
|
|
527
559
|
return formControls;
|
|
@@ -559,7 +591,6 @@ function getSectionControl(form, sectionId, controlId) {
|
|
|
559
591
|
if (!sectionForm) {
|
|
560
592
|
return null;
|
|
561
593
|
}
|
|
562
|
-
console.error(sectionForm, "************************************", controlId, sectionForm.controls[controlId]);
|
|
563
594
|
return sectionForm.get(controlId) || sectionForm.controls[controlId];
|
|
564
595
|
}
|
|
565
596
|
function generateControlsForTheseInputs(inputs, getFormValue) {
|
|
@@ -567,14 +598,35 @@ function generateControlsForTheseInputs(inputs, getFormValue) {
|
|
|
567
598
|
const controls = filteredInputs.reduce((formControls, input) => {
|
|
568
599
|
const controlName = input.multipleInputInEditId ? `${input.multipleInputInEditId}.${input.id}` : input.id;
|
|
569
600
|
// Create explicit FormControl with initial value, disabled state, and validators
|
|
601
|
+
const value = getDefaultValue(input);
|
|
570
602
|
formControls[controlName] = new FormControl({
|
|
571
|
-
value:
|
|
603
|
+
value: value,
|
|
572
604
|
disabled: !!input.disabled
|
|
573
605
|
}, compileInputValidators(input, getFormValue()));
|
|
574
606
|
return formControls;
|
|
575
607
|
}, {});
|
|
576
608
|
return controls;
|
|
577
609
|
}
|
|
610
|
+
const getDefaultValue = (input) => {
|
|
611
|
+
try {
|
|
612
|
+
const { value, element } = input;
|
|
613
|
+
if (element === ElementTypes.Toggle) {
|
|
614
|
+
return Boolean(value);
|
|
615
|
+
}
|
|
616
|
+
if (element === ElementTypes.MultipleInput) {
|
|
617
|
+
if (!Array.isArray(value)) {
|
|
618
|
+
return [];
|
|
619
|
+
}
|
|
620
|
+
return value;
|
|
621
|
+
}
|
|
622
|
+
return value || '';
|
|
623
|
+
}
|
|
624
|
+
catch (error) {
|
|
625
|
+
const msg = error instanceof Error ? error.message : 'Unknown error';
|
|
626
|
+
console.error('Error in getDefaultValue:', msg);
|
|
627
|
+
throw new Error('Error in getDefaultValue: ' + msg);
|
|
628
|
+
}
|
|
629
|
+
};
|
|
578
630
|
|
|
579
631
|
/**
|
|
580
632
|
* Compares previous and current objects, returning only properties that changed.
|
|
@@ -1443,6 +1495,30 @@ const getValueFromValueAccessor = (valueAccessRules, data) => {
|
|
|
1443
1495
|
}
|
|
1444
1496
|
};
|
|
1445
1497
|
|
|
1498
|
+
function multipleFormInputMapValueToInputsId(input, value) {
|
|
1499
|
+
try {
|
|
1500
|
+
if (input.element !== ElementTypes.MultipleInput)
|
|
1501
|
+
return value;
|
|
1502
|
+
if (!Array.isArray(value))
|
|
1503
|
+
return value;
|
|
1504
|
+
return value.map((val) => Object.entries(val).reduce((acc, [key, value]) => {
|
|
1505
|
+
const inputId = input.formInputs?.find((input) => input.formControlName === key)?.id;
|
|
1506
|
+
if (!inputId)
|
|
1507
|
+
return acc;
|
|
1508
|
+
return {
|
|
1509
|
+
...acc,
|
|
1510
|
+
[`${input.id}.${inputId}`]: value
|
|
1511
|
+
};
|
|
1512
|
+
}, {}));
|
|
1513
|
+
}
|
|
1514
|
+
catch (error) {
|
|
1515
|
+
const msg = error instanceof Error ? error.message : "Error mapping value to input";
|
|
1516
|
+
console
|
|
1517
|
+
.error(msg);
|
|
1518
|
+
throw new Error(msg);
|
|
1519
|
+
}
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1446
1522
|
/**
|
|
1447
1523
|
* Retrieves the input data for a POST request.
|
|
1448
1524
|
* @param minRequiredInputs - An array of TInputControllerService objects representing the minimum required inputs.
|
|
@@ -1494,12 +1570,13 @@ function inputGetApiPostData(inputConfig, formValues, dataFor, utils) {
|
|
|
1494
1570
|
utils.setInputStatus(inputConfig.id, 'd19be9ca-ceda-4388-9f7b-3fcb5f12d921', 'Fetching data...');
|
|
1495
1571
|
utils.setTemporaryHint(inputConfig.id, 'Fetching data...', HintType.LOADING);
|
|
1496
1572
|
return utils.httpPostDataFunction(submissionParameters.httpEndPoint, submissionParameters.data, submissionParameters.httpHeaderOptions).pipe(tap((response) => {
|
|
1573
|
+
utils.removeInputStatus(inputConfig.id, 'd19be9ca-ceda-4388-9f7b-3fcb5f12d921');
|
|
1497
1574
|
const valueAccessRules = fetchOptions?.valueAccessRules;
|
|
1498
1575
|
const results = getValueFromValueAccessor(valueAccessRules || [], response);
|
|
1499
1576
|
if (dataFor !== "options") {
|
|
1500
|
-
|
|
1577
|
+
console.error(multipleFormInputMapValueToInputsId(inputConfig, results), "tttttttttttttttttttttttttttttttttttttzzz");
|
|
1578
|
+
utils.updateValue(inputConfig.id, multipleFormInputMapValueToInputsId(inputConfig, results));
|
|
1501
1579
|
utils.setTemporaryHint(inputConfig.id, 'Data fetched successfully', HintType.SUCCESS);
|
|
1502
|
-
utils.removeInputStatus(inputConfig.id, 'd19be9ca-ceda-4388-9f7b-3fcb5f12d921');
|
|
1503
1580
|
return;
|
|
1504
1581
|
}
|
|
1505
1582
|
const matOptions = {
|
|
@@ -1595,8 +1672,22 @@ function returnMappedData(formValues, minInputs, endpoint) {
|
|
|
1595
1672
|
}
|
|
1596
1673
|
|
|
1597
1674
|
const sectionFormErrorMessage = (self, sectionId) => {
|
|
1598
|
-
const sectionInputs = self.allFormInputs()?.filter(input => input.sectionId === sectionId
|
|
1599
|
-
|
|
1675
|
+
const sectionInputs = self.allFormInputs()?.filter(input => input.sectionId === sectionId && !input.multipleInputInEditId &&
|
|
1676
|
+
input.element !== ElementTypes.SectionTitle) || [];
|
|
1677
|
+
const sectionForm = getSectionForm(self.mainForm, sectionId);
|
|
1678
|
+
const allInputsWithErrors = sectionInputs.filter(input => {
|
|
1679
|
+
const control = sectionForm?.controls[input.id];
|
|
1680
|
+
if (!control) {
|
|
1681
|
+
return false;
|
|
1682
|
+
}
|
|
1683
|
+
return !!control?.invalid;
|
|
1684
|
+
});
|
|
1685
|
+
const firstError = allInputsWithErrors[0];
|
|
1686
|
+
if (!firstError)
|
|
1687
|
+
return '';
|
|
1688
|
+
const numberOfAllOtherErrors = allInputsWithErrors.length - 1;
|
|
1689
|
+
if (numberOfAllOtherErrors === 0)
|
|
1690
|
+
return `${firstError?.label} is invalid`;
|
|
1600
1691
|
return ` ${allInputsWithErrors[0]?.label} and ${allInputsWithErrors.length - 1} other are invalid`;
|
|
1601
1692
|
};
|
|
1602
1693
|
function selectFormSteps(self) {
|
|
@@ -1640,6 +1731,8 @@ const allFormInputs = (form) => {
|
|
|
1640
1731
|
label: `${column.label} Start Date`,
|
|
1641
1732
|
formControlName: column.startDateControl,
|
|
1642
1733
|
min: column.startMinDate,
|
|
1734
|
+
value: !!column.value?.start ?
|
|
1735
|
+
new Date(column.value.start) : undefined,
|
|
1643
1736
|
max: column.startMaxDate,
|
|
1644
1737
|
};
|
|
1645
1738
|
const end = {
|
|
@@ -1648,6 +1741,7 @@ const allFormInputs = (form) => {
|
|
|
1648
1741
|
label: `${column.label} End Date`,
|
|
1649
1742
|
formControlName: column.endDateControl,
|
|
1650
1743
|
min: column.endMinDate,
|
|
1744
|
+
value: !!column.value?.end ? new Date(column.value.end) : undefined,
|
|
1651
1745
|
max: column.endMaxDate,
|
|
1652
1746
|
};
|
|
1653
1747
|
return [start, end];
|
|
@@ -1667,18 +1761,13 @@ const allFormInputs = (form) => {
|
|
|
1667
1761
|
|
|
1668
1762
|
function formProgress(self) {
|
|
1669
1763
|
try {
|
|
1670
|
-
const requiredInputs = self.allFormInputs()?.filter(c => c.required && !c.multipleInputInEditId) || [];
|
|
1671
|
-
const allValidRequiredInputs = requiredInputs.
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
const end = self.mainForm?.get(c.sectionId)?.get(`${c.id}.${c.endDateControl}`);
|
|
1675
|
-
return [!!start?.valid,
|
|
1676
|
-
!!end?.valid];
|
|
1677
|
-
}
|
|
1678
|
-
return [!!self.mainForm?.get(c.sectionId)?.get(c.id)?.valid];
|
|
1764
|
+
const requiredInputs = self.allFormInputs()?.filter(c => c.required && !c.multipleInputInEditId && c.element !== ElementTypes.SectionTitle) || [];
|
|
1765
|
+
const allValidRequiredInputs = requiredInputs.filter(c => {
|
|
1766
|
+
return !!self.mainForm?.controls[c.sectionId]?.controls[c.id]?.valid === true ||
|
|
1767
|
+
!!self.mainForm?.controls[c.sectionId]?.controls[c.id]?.invalid === false;
|
|
1679
1768
|
});
|
|
1680
|
-
const valid = allValidRequiredInputs.
|
|
1681
|
-
const total =
|
|
1769
|
+
const valid = allValidRequiredInputs.length;
|
|
1770
|
+
const total = requiredInputs.length;
|
|
1682
1771
|
return Math.round((valid / total) * 100);
|
|
1683
1772
|
}
|
|
1684
1773
|
catch (error) {
|
|
@@ -1956,6 +2045,14 @@ const returnAnyFormInputFromForm = (form, id) => {
|
|
|
1956
2045
|
if (mainInput.element === ElementTypes.MultipleInput && nestedInputId) {
|
|
1957
2046
|
return mainInput.formInputs?.find(input => input.id === nestedInputId);
|
|
1958
2047
|
}
|
|
2048
|
+
if (mainInput.element === ElementTypes.DateRangePicker && nestedInputId) {
|
|
2049
|
+
const isStartDate = nestedInputId === mainInput.startDateControl;
|
|
2050
|
+
return {
|
|
2051
|
+
...mainInput,
|
|
2052
|
+
id,
|
|
2053
|
+
value: isStartDate ? mainInput.value?.start : mainInput.value?.end,
|
|
2054
|
+
};
|
|
2055
|
+
}
|
|
1959
2056
|
// If it's a mscoa input and we have a nested ID, find the nested input
|
|
1960
2057
|
if (mainInput.element === ElementTypes.MscoaSelection && nestedInputId) {
|
|
1961
2058
|
return mainInput.mscoaConfig.inputs?.find(input => input.id === nestedInputId);
|
|
@@ -1970,6 +2067,7 @@ const returnAnyFormInputFromForm = (form, id) => {
|
|
|
1970
2067
|
|
|
1971
2068
|
const updateValue = (self, inputId, value) => {
|
|
1972
2069
|
const input = returnAnyFormInputFromForm(self.form, inputId);
|
|
2070
|
+
console.error(`Input with ID ******************** ${inputId} `, input);
|
|
1973
2071
|
if (!input) {
|
|
1974
2072
|
self.setInputTemporaryError(inputId, `Input with ID ${inputId} not found`);
|
|
1975
2073
|
return;
|
|
@@ -1982,17 +2080,24 @@ const updateValue = (self, inputId, value) => {
|
|
|
1982
2080
|
const isDateRangePicker = input?.element === ElementTypes.DateRangePicker;
|
|
1983
2081
|
if (isDateRangePicker) {
|
|
1984
2082
|
const alreadyHasCompoundedKey = inputId.includes('.');
|
|
1985
|
-
if (alreadyHasCompoundedKey) {
|
|
1986
|
-
|
|
1987
|
-
|
|
2083
|
+
if (!alreadyHasCompoundedKey) {
|
|
2084
|
+
throw new Error(`Input ID ${inputId} does not have a compounded key for date range picker`);
|
|
2085
|
+
}
|
|
2086
|
+
const sectionControl = (self.mainForm?.controls[sectionId]).controls[inputId];
|
|
2087
|
+
const isStartDate = inputId.split('.')?.[1] === input.startDateControl;
|
|
2088
|
+
const valueIsDate = !Number.isNaN(Date.parse(value));
|
|
2089
|
+
if (valueIsDate) {
|
|
2090
|
+
sectionControl?.setValue(value);
|
|
1988
2091
|
return;
|
|
1989
2092
|
}
|
|
1990
|
-
|
|
1991
|
-
const sectionControl = (self.mainForm?.controls[sectionId]).controls[key];
|
|
1992
|
-
sectionControl?.setValue(value.value);
|
|
2093
|
+
sectionControl?.setValue(isStartDate ? value.start : value.end);
|
|
1993
2094
|
return;
|
|
1994
2095
|
}
|
|
1995
2096
|
const sectionControl = getSectionControl(self.mainForm, sectionId, inputId);
|
|
2097
|
+
if (!sectionControl) {
|
|
2098
|
+
self.setInputTemporaryError(inputId, `Missing FormControl. Failed to set value `);
|
|
2099
|
+
return;
|
|
2100
|
+
}
|
|
1996
2101
|
sectionControl?.setValue(value);
|
|
1997
2102
|
};
|
|
1998
2103
|
|
|
@@ -2088,6 +2193,18 @@ const getFormValueAsFormControlBasedObject = (self) => {
|
|
|
2088
2193
|
processDateRangePickerValue(result, key, value);
|
|
2089
2194
|
return result;
|
|
2090
2195
|
}
|
|
2196
|
+
if (input.element === ElementTypes.MscoaSelection) { // FIXME: this is a temporary fix for MSCOA inputs, we need to find a better way to handle this
|
|
2197
|
+
const inputs = input.mscoaConfig?.inputs || [];
|
|
2198
|
+
const mscoaInputsValue = inputs.reduce((acc, mscoaInput) => {
|
|
2199
|
+
acc[mscoaInput.formControlName] = formValues[`${input.id}.${mscoaInput.id}`];
|
|
2200
|
+
return acc;
|
|
2201
|
+
}, {});
|
|
2202
|
+
result[input.formControlName] = {
|
|
2203
|
+
...value,
|
|
2204
|
+
...mscoaInputsValue
|
|
2205
|
+
};
|
|
2206
|
+
return result;
|
|
2207
|
+
}
|
|
2091
2208
|
// Handle all other input types - map to formControlName
|
|
2092
2209
|
result[input.formControlName] = value;
|
|
2093
2210
|
return result;
|
|
@@ -2122,7 +2239,10 @@ const processMultipleInputValue = (input, value, allFormValues) => {
|
|
|
2122
2239
|
const result = {};
|
|
2123
2240
|
const itemId = item["id"] || '';
|
|
2124
2241
|
// Process each form input within the multiple input
|
|
2125
|
-
input.formInputs
|
|
2242
|
+
([...(input.formInputs || []), {
|
|
2243
|
+
id: "id",
|
|
2244
|
+
formControlName: "id",
|
|
2245
|
+
}])?.forEach(formInput => {
|
|
2126
2246
|
if (!formInput?.id || !formInput.formControlName)
|
|
2127
2247
|
return;
|
|
2128
2248
|
// Different possible key formats for the input value
|
|
@@ -2251,7 +2371,7 @@ function getApiDataFetching(inputConfig, dataFor, utils) {
|
|
|
2251
2371
|
const valueAccessRules = fetchOptions?.valueAccessRules;
|
|
2252
2372
|
const results = getValueFromValueAccessor(valueAccessRules || [], data);
|
|
2253
2373
|
if (dataFor !== "options") {
|
|
2254
|
-
utils.updateValue(inputConfig.id, results);
|
|
2374
|
+
utils.updateValue(inputConfig.id, multipleFormInputMapValueToInputsId(inputConfig, results));
|
|
2255
2375
|
utils.setTemporaryHint(inputConfig.id, `Data fetched successfully`, HintType.SUCCESS);
|
|
2256
2376
|
return;
|
|
2257
2377
|
}
|
|
@@ -2311,7 +2431,8 @@ const removeInputStatus = (self, inputId, statusId) => {
|
|
|
2311
2431
|
|
|
2312
2432
|
const multipleInputRowIDControlInput = (value, multipleInputInEditId) => ({
|
|
2313
2433
|
id: "id",
|
|
2314
|
-
element: ElementTypes.Input,
|
|
2434
|
+
element: ElementTypes.Input,
|
|
2435
|
+
value,
|
|
2315
2436
|
formControlName: "id",
|
|
2316
2437
|
label: "ID",
|
|
2317
2438
|
required: false,
|
|
@@ -2337,38 +2458,47 @@ const toggleMultipleInput = (self, mainForm, inputId, open, rowInEditId) => {
|
|
|
2337
2458
|
return false;
|
|
2338
2459
|
}
|
|
2339
2460
|
try {
|
|
2340
|
-
console.error(`Row ID before: ${rowInEditId}`, input, sectionGroup.value);
|
|
2341
2461
|
// Generate controls from input's formInputs (defensive programming)
|
|
2342
2462
|
const formInputs = input.formInputs || [];
|
|
2343
2463
|
let controls = {};
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2464
|
+
if (open === true) {
|
|
2465
|
+
try {
|
|
2466
|
+
const idInput = multipleInputRowIDControlInput(rowInEditId, inputId);
|
|
2467
|
+
controls = generateControlsForTheseInputs(idInput ? [...formInputs, idInput] : formInputs, self.getFormValue.bind(this));
|
|
2468
|
+
}
|
|
2469
|
+
catch (error) {
|
|
2470
|
+
console.error(`Failed to generate controls for input ${inputId}:`, error);
|
|
2471
|
+
self.setInputTemporaryError(inputId, 'Failed to generate controls');
|
|
2472
|
+
return false;
|
|
2473
|
+
}
|
|
2474
|
+
Object.entries(controls).forEach(([key, control]) => {
|
|
2475
|
+
const controlExists = !!sectionGroup.get(key);
|
|
2476
|
+
if (open && !controlExists) {
|
|
2477
|
+
// Add control if we're opening and control doesn't exist
|
|
2478
|
+
sectionGroup.addControl(key, control);
|
|
2479
|
+
}
|
|
2480
|
+
});
|
|
2347
2481
|
}
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2482
|
+
else {
|
|
2483
|
+
const subFormControlNames = [...formInputs.map(i => `${inputId}.${i.id}`), `${inputId}.id`];
|
|
2484
|
+
// Remove controls if we're closing and control exists
|
|
2485
|
+
subFormControlNames.forEach(controlName => {
|
|
2486
|
+
const control = sectionGroup.controls[controlName];
|
|
2487
|
+
if (control) {
|
|
2488
|
+
sectionGroup.removeControl(controlName);
|
|
2489
|
+
}
|
|
2490
|
+
else {
|
|
2491
|
+
console.error(`Control ${controlName} not found in section group`);
|
|
2492
|
+
}
|
|
2493
|
+
});
|
|
2494
|
+
//
|
|
2352
2495
|
}
|
|
2353
|
-
// Determine new state (opposite of current state)
|
|
2354
2496
|
// Toggle controls based on new state
|
|
2355
|
-
Object.entries(controls).forEach(([key, control]) => {
|
|
2356
|
-
const controlExists = !!sectionGroup.get(key);
|
|
2357
|
-
if (open && !controlExists) {
|
|
2358
|
-
// Add control if we're opening and control doesn't exist
|
|
2359
|
-
sectionGroup.addControl(key, control);
|
|
2360
|
-
}
|
|
2361
|
-
else if (!open && controlExists) {
|
|
2362
|
-
// Remove control if we're closing and control exists
|
|
2363
|
-
sectionGroup.removeControl(key);
|
|
2364
|
-
}
|
|
2365
|
-
});
|
|
2366
2497
|
// Update the input configuration with new state
|
|
2367
2498
|
self.updateFormInputConfig(inputId, { ...input, formIsOpen: open });
|
|
2368
2499
|
if (!!open && sectionGroup.controls[`${inputId}.id`] && rowInEditId) {
|
|
2369
2500
|
sectionGroup.controls[`${inputId}.id`]?.setValue(rowInEditId);
|
|
2370
2501
|
}
|
|
2371
|
-
console.error(`Row ID before: ${rowInEditId}`, input, sectionGroup.value);
|
|
2372
2502
|
if (open) {
|
|
2373
2503
|
// Log if needed for debugging, but use appropriate log level
|
|
2374
2504
|
console.log(`Opened multiple input for ${inputId}`);
|
|
@@ -2388,6 +2518,25 @@ const multipleInputEditRow = (self, mainForm, inputId, rowId) => {
|
|
|
2388
2518
|
if (!toggled) {
|
|
2389
2519
|
return false;
|
|
2390
2520
|
}
|
|
2521
|
+
const input = self.allFormInputs()?.find(input => input.id === inputId);
|
|
2522
|
+
if (!input) {
|
|
2523
|
+
console.warn(`Input with ID ${inputId} not found`);
|
|
2524
|
+
return false;
|
|
2525
|
+
}
|
|
2526
|
+
const sectionGroup = mainForm?.get(input.sectionId);
|
|
2527
|
+
if (!sectionGroup) {
|
|
2528
|
+
self.setInputTemporaryError(inputId, 'Failed to find section group');
|
|
2529
|
+
return false;
|
|
2530
|
+
}
|
|
2531
|
+
const row = sectionGroup.controls[inputId]?.value?.find((row) => row[`${inputId}.id`] === rowId);
|
|
2532
|
+
if (!row) {
|
|
2533
|
+
console.warn(`Row with ID ${rowId} not found in input ${inputId}`);
|
|
2534
|
+
self.setInputTemporaryError(inputId, "Could not find row to duplicate");
|
|
2535
|
+
return false;
|
|
2536
|
+
}
|
|
2537
|
+
Object.entries(row).forEach(([key, value]) => {
|
|
2538
|
+
self.updateValue(key, value);
|
|
2539
|
+
});
|
|
2391
2540
|
return true;
|
|
2392
2541
|
}
|
|
2393
2542
|
catch (error) {
|
|
@@ -2399,7 +2548,7 @@ const multipleInputEditRow = (self, mainForm, inputId, rowId) => {
|
|
|
2399
2548
|
};
|
|
2400
2549
|
const multipleInputDuplicateRow = (self, mainForm, inputId, rowId) => {
|
|
2401
2550
|
try {
|
|
2402
|
-
const toggled = toggleMultipleInput(self, mainForm, inputId, true
|
|
2551
|
+
const toggled = toggleMultipleInput(self, mainForm, inputId, true);
|
|
2403
2552
|
if (!toggled) {
|
|
2404
2553
|
return false;
|
|
2405
2554
|
}
|
|
@@ -2414,6 +2563,17 @@ const multipleInputDuplicateRow = (self, mainForm, inputId, rowId) => {
|
|
|
2414
2563
|
return false;
|
|
2415
2564
|
}
|
|
2416
2565
|
sectionGroup.controls[`${inputId}.id`]?.setValue(undefined);
|
|
2566
|
+
const row = sectionGroup.controls[inputId]?.value?.find((row) => row[`${inputId}.id`] === rowId);
|
|
2567
|
+
if (!row) {
|
|
2568
|
+
console.warn(`Row with ID ${rowId} not found in input ${inputId}`);
|
|
2569
|
+
self.setInputTemporaryError(inputId, "Could not find row to duplicate");
|
|
2570
|
+
return false;
|
|
2571
|
+
}
|
|
2572
|
+
const newRow = { ...row, id: undefined };
|
|
2573
|
+
Object.entries(newRow).forEach(([key, value]) => {
|
|
2574
|
+
self.updateValue(key, value);
|
|
2575
|
+
});
|
|
2576
|
+
console.error('New row:', sectionGroup.controls, row);
|
|
2417
2577
|
return true;
|
|
2418
2578
|
}
|
|
2419
2579
|
catch (error) {
|
|
@@ -2559,7 +2719,9 @@ const updateExistingRow = (self, mainInput, rowInEditId, innerInputsValues, inpu
|
|
|
2559
2719
|
// Set the updated value back to the main input
|
|
2560
2720
|
mainInput.setValue(updatedValue);
|
|
2561
2721
|
self.setTemporaryHint(inputId, 'Record updated successfully', HintType.DB_LOAD);
|
|
2562
|
-
|
|
2722
|
+
//Ensure to pass the rowInEditId to the toggleMultipleInput function
|
|
2723
|
+
// to close the edit mode for the row
|
|
2724
|
+
self.toggleMultipleInput(inputId, false, rowInEditId);
|
|
2563
2725
|
return true;
|
|
2564
2726
|
};
|
|
2565
2727
|
/**
|
|
@@ -2603,6 +2765,22 @@ const prepPopulateForm = (form, initValue) => {
|
|
|
2603
2765
|
if (column.element === ElementTypes.SectionTitle) {
|
|
2604
2766
|
return column;
|
|
2605
2767
|
}
|
|
2768
|
+
if (column.element === ElementTypes.Toggle) {
|
|
2769
|
+
return {
|
|
2770
|
+
...column,
|
|
2771
|
+
value: Boolean(initValue[column.formControlName] || column.value || false)
|
|
2772
|
+
};
|
|
2773
|
+
}
|
|
2774
|
+
if (column.element === ElementTypes.DateRangePicker) {
|
|
2775
|
+
console.error('initValue[column.startDateControl!]', initValue[column.startDateControl], initValue, column);
|
|
2776
|
+
return {
|
|
2777
|
+
...column,
|
|
2778
|
+
value: {
|
|
2779
|
+
start: initValue[column.startDateControl],
|
|
2780
|
+
end: initValue[column.endDateControl]
|
|
2781
|
+
}
|
|
2782
|
+
};
|
|
2783
|
+
}
|
|
2606
2784
|
if (column.element === ElementTypes.MultipleInput) {
|
|
2607
2785
|
const newM = {
|
|
2608
2786
|
...column,
|
|
@@ -2610,6 +2788,7 @@ const prepPopulateForm = (form, initValue) => {
|
|
|
2610
2788
|
return Object.entries(item).reduce((acc, [key, value]) => {
|
|
2611
2789
|
const inputId = column.formInputs?.find(input => input.formControlName === key)?.id;
|
|
2612
2790
|
if (!inputId) {
|
|
2791
|
+
console.error('inputId not found', key, value);
|
|
2613
2792
|
return acc;
|
|
2614
2793
|
}
|
|
2615
2794
|
return {
|
|
@@ -2619,7 +2798,6 @@ const prepPopulateForm = (form, initValue) => {
|
|
|
2619
2798
|
}, {});
|
|
2620
2799
|
})
|
|
2621
2800
|
};
|
|
2622
|
-
console.error('newM', newM);
|
|
2623
2801
|
return newM;
|
|
2624
2802
|
}
|
|
2625
2803
|
return {
|
|
@@ -2763,6 +2941,26 @@ const makeApiCall = (api, formData, Utils) => {
|
|
|
2763
2941
|
? Utils.httpPostDataFunction(httpEndPoint, formData, {})
|
|
2764
2942
|
: Utils.httpGetDataFunction(`${httpEndPoint}?${createQueryString(formData)}`, {});
|
|
2765
2943
|
};
|
|
2944
|
+
/**
|
|
2945
|
+
* Extracts specific properties from an object based on a comma-separated string of keys.
|
|
2946
|
+
* Supports both direct key mapping and binding key notation for property renaming.
|
|
2947
|
+
*
|
|
2948
|
+
* @param obj - The source object to extract properties from
|
|
2949
|
+
* @param keysString - A comma-separated string of keys to extract.
|
|
2950
|
+
* Supports two formats:
|
|
2951
|
+
* 1. Direct key: "propName"
|
|
2952
|
+
* 2. Binding key: "newName:{originalName}"
|
|
2953
|
+
*
|
|
2954
|
+
* @returns A new object containing only the specified properties
|
|
2955
|
+
*
|
|
2956
|
+
* @example
|
|
2957
|
+
* // Direct key usage
|
|
2958
|
+
* destructureObject({a: 1, b: 2}, "a,b") // Returns {a: 1, b: 2}
|
|
2959
|
+
*
|
|
2960
|
+
* @example
|
|
2961
|
+
* // Binding key usage
|
|
2962
|
+
* destructureObject({orig: 1}, "new:{orig}") // Returns {new: 1}
|
|
2963
|
+
*/
|
|
2766
2964
|
function destructureObject(obj, keysString) {
|
|
2767
2965
|
// Split the keys string into an array of keys
|
|
2768
2966
|
const keys = keysString.split(',').map(key => key.trim()) || [];
|
|
@@ -2786,6 +2984,22 @@ function destructureObject(obj, keysString) {
|
|
|
2786
2984
|
});
|
|
2787
2985
|
return result;
|
|
2788
2986
|
}
|
|
2987
|
+
/**
|
|
2988
|
+
* Projects and combines form data according to API configuration and additional passed data.
|
|
2989
|
+
*
|
|
2990
|
+
* @param api - The API configuration object containing projection settings
|
|
2991
|
+
* @param formData - The form data to be processed
|
|
2992
|
+
* @param passData - Additional data to be merged with the form data
|
|
2993
|
+
* @returns {any} - The projected and combined data object
|
|
2994
|
+
*
|
|
2995
|
+
* If api.projectFormData is not present:
|
|
2996
|
+
* - Returns merged formData and passData if passData is a non-null object
|
|
2997
|
+
* - Returns formData as-is otherwise
|
|
2998
|
+
*
|
|
2999
|
+
* If api.projectFormData is present:
|
|
3000
|
+
* - Destructures formData according to projection rules
|
|
3001
|
+
* - Merges with passData if passData is a non-null object
|
|
3002
|
+
*/
|
|
2789
3003
|
const projectApiData = (api, formData, passData) => {
|
|
2790
3004
|
if (!api?.projectFormData) {
|
|
2791
3005
|
if (typeof passData === 'object' && passData !== null) {
|
|
@@ -2903,8 +3117,8 @@ class FormTowerControllerService {
|
|
|
2903
3117
|
this.changeMonitor = (newFormValue) => {
|
|
2904
3118
|
// Find changed inputs by comparing with previous values
|
|
2905
3119
|
updateChangeHistory(this, newFormValue).then();
|
|
3120
|
+
this.NGX_T_FORMS_CONFIG.formBuilder.saveFormData(this.form?.formId, this.getFormValueNames());
|
|
2906
3121
|
const changedInputIds = Object.keys(newFormValue);
|
|
2907
|
-
console.error(changedInputIds);
|
|
2908
3122
|
if (changedInputIds.length === 0) {
|
|
2909
3123
|
return of(null); // No changes detected
|
|
2910
3124
|
}
|
|
@@ -2996,7 +3210,7 @@ class FormTowerControllerService {
|
|
|
2996
3210
|
this.initializeFormValues = (initialValues) => {
|
|
2997
3211
|
this._initialFormValue = initialValues;
|
|
2998
3212
|
if (this._mainForm === undefined) {
|
|
2999
|
-
console.error("Main form not initialized");
|
|
3213
|
+
console.error("Could not initialize FormValues,Main form not initialized", initialValues, this._initialFormValue);
|
|
3000
3214
|
return;
|
|
3001
3215
|
}
|
|
3002
3216
|
const allInputs = this.allFormInputs();
|
|
@@ -3004,12 +3218,30 @@ class FormTowerControllerService {
|
|
|
3004
3218
|
return;
|
|
3005
3219
|
for (const input of allInputs || []) {
|
|
3006
3220
|
const value = initialValues[input.formControlName];
|
|
3007
|
-
|
|
3221
|
+
const isMultipleInput = input.element === ElementTypes.MultipleInput;
|
|
3222
|
+
if (value !== undefined && !isMultipleInput) {
|
|
3008
3223
|
this.updateValue(input.id, value);
|
|
3224
|
+
continue;
|
|
3009
3225
|
}
|
|
3010
|
-
|
|
3011
|
-
|
|
3226
|
+
if (isMultipleInput) {
|
|
3227
|
+
const v = (value || []).map((item) => {
|
|
3228
|
+
return Object.entries(item).reduce((acc, [key, val]) => {
|
|
3229
|
+
const inp = allInputs.find((i) => i.formControlName === key);
|
|
3230
|
+
if (key === 'id') {
|
|
3231
|
+
acc[`${input.id}.id`] = val;
|
|
3232
|
+
}
|
|
3233
|
+
else {
|
|
3234
|
+
acc[`${inp?.id}`] = val;
|
|
3235
|
+
}
|
|
3236
|
+
return acc;
|
|
3237
|
+
}, {});
|
|
3238
|
+
});
|
|
3239
|
+
v[`${input.id}.id`] = initialValues[input.id];
|
|
3240
|
+
console.error(`Setting multiple input value`, v);
|
|
3241
|
+
this.updateValue(input.id, v);
|
|
3242
|
+
continue;
|
|
3012
3243
|
}
|
|
3244
|
+
this.updateValue(input.id, '');
|
|
3013
3245
|
}
|
|
3014
3246
|
};
|
|
3015
3247
|
this.revertBackHistory = () => {
|
|
@@ -3072,7 +3304,7 @@ class FormTowerControllerService {
|
|
|
3072
3304
|
* @param inputId The ID of the multiple input to toggle
|
|
3073
3305
|
* @returns boolean indicating success or failure
|
|
3074
3306
|
*/
|
|
3075
|
-
this.toggleMultipleInput = (inputId, open) => toggleMultipleInput(this, this._mainForm, inputId, open);
|
|
3307
|
+
this.toggleMultipleInput = (inputId, open, rowInEditId) => toggleMultipleInput(this, this._mainForm, inputId, open, rowInEditId);
|
|
3076
3308
|
this.saveMultipleInputForm = (inputId) => saveMultipleInputForm(this, this._mainForm, inputId);
|
|
3077
3309
|
this.multipleInputEditRow = (inputId, rowId) => multipleInputEditRow(this, this._mainForm, inputId, rowId);
|
|
3078
3310
|
this.multipleInputDuplicateRow = (inputId, rowId) => multipleInputDuplicateRow(this, this._mainForm, inputId, rowId);
|
|
@@ -3095,6 +3327,7 @@ class FormTowerControllerService {
|
|
|
3095
3327
|
ngOnDestroy() {
|
|
3096
3328
|
this._destroyed$.next();
|
|
3097
3329
|
this._destroyed$.complete();
|
|
3330
|
+
this.clearFormState();
|
|
3098
3331
|
}
|
|
3099
3332
|
// Build a reverse dependency map for efficient lookups
|
|
3100
3333
|
buildReverseDependencyMap() {
|
|
@@ -4955,46 +5188,21 @@ function formBuilderStoreActions(store) {
|
|
|
4955
5188
|
})).subscribe();
|
|
4956
5189
|
};
|
|
4957
5190
|
const applyFormTemplate = (form) => {
|
|
4958
|
-
form$.pipe(take(1), tap((
|
|
5191
|
+
form$.pipe(take(1), tap(() => {
|
|
4959
5192
|
if (!form)
|
|
4960
5193
|
return;
|
|
4961
|
-
const
|
|
4962
|
-
|
|
4963
|
-
|
|
4964
|
-
|
|
4965
|
-
|
|
4966
|
-
|
|
4967
|
-
|
|
4968
|
-
|
|
4969
|
-
|
|
4970
|
-
|
|
4971
|
-
|
|
4972
|
-
|
|
4973
|
-
dialogRef.afterClosed().pipe(take(1)).subscribe(proceed => {
|
|
4974
|
-
if (proceed) {
|
|
4975
|
-
const newForm = {
|
|
4976
|
-
systemDefault: false,
|
|
4977
|
-
defaultDepartment: "",
|
|
4978
|
-
form: {
|
|
4979
|
-
...form?.form,
|
|
4980
|
-
formId: undefined,
|
|
4981
|
-
formTitle: `${form?.form.formTitle} - Copy`,
|
|
4982
|
-
},
|
|
4983
|
-
};
|
|
4984
|
-
store.actions.loadFormSuccess(of({
|
|
4985
|
-
form: newForm
|
|
4986
|
-
}));
|
|
4987
|
-
snackBar.open('Form Template Applied', 'Dismiss', {
|
|
4988
|
-
duration: 2000,
|
|
4989
|
-
});
|
|
4990
|
-
return;
|
|
4991
|
-
}
|
|
4992
|
-
});
|
|
4993
|
-
return;
|
|
4994
|
-
}
|
|
4995
|
-
snackBar.open('Form Template Applied', 'Dismiss', {
|
|
4996
|
-
duration: 2000,
|
|
4997
|
-
});
|
|
5194
|
+
const newForm = {
|
|
5195
|
+
systemDefault: false,
|
|
5196
|
+
defaultDepartment: "",
|
|
5197
|
+
form: {
|
|
5198
|
+
formId: undefined,
|
|
5199
|
+
formTitle: `${form?.formTitle} - Copy`,
|
|
5200
|
+
slides: form.slides,
|
|
5201
|
+
},
|
|
5202
|
+
};
|
|
5203
|
+
store.actions.loadFormSuccess(of({
|
|
5204
|
+
form: newForm
|
|
5205
|
+
}));
|
|
4998
5206
|
return;
|
|
4999
5207
|
})).subscribe();
|
|
5000
5208
|
};
|
|
@@ -5291,9 +5499,9 @@ class FormBuilderComponent {
|
|
|
5291
5499
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: FormBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5292
5500
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: FormBuilderComponent, isStandalone: true, selector: "app-form-builder", inputs: { formId: "formId" }, providers: [
|
|
5293
5501
|
FormsStoreService
|
|
5294
|
-
], ngImport: i0, template: "<header>\r\n <mat-toolbar color=\"primary\">\r\n @if (closeButton) {\r\n <button mat-icon-button [style.color]=\"closeButton.color\" (click)=\"closeButton.onClick()\">\r\n <mat-icon>{{closeButton.icon}}</mat-icon>\r\n </button>\r\n }\r\n\r\n <!-- Navigation group -->\r\n <div class=\"nav-group\">\r\n <button mat-button routerLink=\"/\">Forms</button>\r\n <mat-icon>navigate_next</mat-icon>\r\n </div>\r\n\r\n <!-- Title input with optimized binding -->\r\n @if (selectHasFormId()) {\r\n <input [(ngModel)]=\"titleValue\" class=\"section-title-input\" placeholder=\"Enter Form Title\">\r\n }\r\n\r\n <span class=\"spacer\"></span>\r\n\r\n @defer (on viewport) {\r\n <app-forms-builder-menu />\r\n } @placeholder {\r\n <div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"20\" />\r\n </div>\r\n\r\n }\r\n\r\n <span class=\"divider\">|</span>\r\n\r\n <!-- Save/Update button with optimized reactive state -->\r\n <button mat-raised-button color=\"accent\" class=\"save-button\" [disabled]=\"!(canSaveForm())\"\r\n (click)=\"saveForm()\">\r\n\r\n <mat-icon>\r\n {{(isNewForm()) ? 'save' : 'update'}}\r\n </mat-icon>\r\n\r\n @if (selectFormBuilderIsBusy()) {\r\n {{(isNewForm()) ? '..Saving new form' : '..Updating Form'}}\r\n } @else {\r\n {{(isNewForm()) ? 'Save' : 'Update'}}\r\n }\r\n </button>\r\n\r\n <!-- Updated time info -->\r\n @if (!(isNewForm())) {\r\n <div class=\"updated-time\">\r\n <mat-icon>update</mat-icon>\r\n <span>Updated {{ selectFormUpdated() }}</span>\r\n </div>\r\n }\r\n </mat-toolbar>\r\n</header>\r\n\r\n<!-- Main content with optimized loading -->\r\n@defer (on viewport) {\r\n<div class=\"container\">\r\n <div class=\"middle\">\r\n <br>\r\n @if (selectLoadingForm()) {\r\n <div class=\"loading-container\">\r\n <mat-spinner />\r\n </div>\r\n } @else {\r\n <app-form-section-stepper />\r\n }\r\n <br>\r\n @if ((hasMissingConfigs()) && !(selectLoadingForm())) {\r\n <app-missing-form-configs />\r\n }\r\n </div>\r\n\r\n @if (elementEditorOpen()) {\r\n <app-input-editor style=\"max-width:480px;height:calc(100vh - 64px);z-index:1\" cdkDrag cdkDragBoundary=\"container\" class=\"middle editor-container\" />\r\n }\r\n <!-- Missing fields section -->`\r\n\r\n\r\n</div>\r\n}@placeholder {\r\n <div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"50\" />\r\n </div>\r\n}", styles: [".container{display:flex;width:100%;height:calc(100% - 64px)}.side{width:100px;background-color:#f8d7da}.middle{flex-grow:1;height:100%;overflow:auto;background-color:none}.section-title-input{border:none;background-color:transparent;font-size:16px;font-weight:600;color:#fff;padding-top:12px;padding-bottom:12px;outline:none;min-width:268px;transition:border-bottom-color .3s ease-in-out}.section-title-input:focus{border-bottom:1px solid #ffffff}.missing-fields{position:fixed;bottom:0}.updated-time{display:flex;gap:8px;align-items:center;line-height:normal;font-size:14px;bottom:0;position:absolute;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:8px;border-radius:4px}.nav-group{display:flex;align-items:center;gap:8px}.save-button{margin-left:8px;min-width:168px}.loading-container{display:flex;height:calc(100% - 150px);justify-content:center;align-items:center}.editor-container{max-width:500px}.divider{margin:0 8px;opacity:.5}app-missing-form-configs{position:absolute;bottom:0;right:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], deferBlockDependencies: [() => [import('./ngx-t-forms-forms-builder-menu.component-
|
|
5502
|
+
], ngImport: i0, template: "<header>\r\n <mat-toolbar color=\"primary\">\r\n @if (closeButton) {\r\n <button mat-icon-button [style.color]=\"closeButton.color\" (click)=\"closeButton.onClick()\">\r\n <mat-icon>{{closeButton.icon}}</mat-icon>\r\n </button>\r\n }\r\n\r\n <!-- Navigation group -->\r\n <div class=\"nav-group\">\r\n <button mat-button routerLink=\"/\">Forms</button>\r\n <mat-icon>navigate_next</mat-icon>\r\n </div>\r\n\r\n <!-- Title input with optimized binding -->\r\n @if (selectHasFormId()) {\r\n <input [(ngModel)]=\"titleValue\" class=\"section-title-input\" placeholder=\"Enter Form Title\">\r\n }\r\n\r\n <span class=\"spacer\"></span>\r\n\r\n @defer (on viewport) {\r\n <app-forms-builder-menu />\r\n } @placeholder {\r\n <div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"20\" />\r\n </div>\r\n\r\n }\r\n\r\n <span class=\"divider\">|</span>\r\n\r\n <!-- Save/Update button with optimized reactive state -->\r\n <button mat-raised-button color=\"accent\" class=\"save-button\" [disabled]=\"!(canSaveForm())\"\r\n (click)=\"saveForm()\">\r\n\r\n <mat-icon>\r\n {{(isNewForm()) ? 'save' : 'update'}}\r\n </mat-icon>\r\n\r\n @if (selectFormBuilderIsBusy()) {\r\n {{(isNewForm()) ? '..Saving new form' : '..Updating Form'}}\r\n } @else {\r\n {{(isNewForm()) ? 'Save' : 'Update'}}\r\n }\r\n </button>\r\n\r\n <!-- Updated time info -->\r\n @if (!(isNewForm())) {\r\n <div class=\"updated-time\">\r\n <mat-icon>update</mat-icon>\r\n <span>Updated {{ selectFormUpdated() }}</span>\r\n </div>\r\n }\r\n </mat-toolbar>\r\n</header>\r\n\r\n<!-- Main content with optimized loading -->\r\n@defer (on viewport) {\r\n<div class=\"container\">\r\n <div class=\"middle\">\r\n <br>\r\n @if (selectLoadingForm()) {\r\n <div class=\"loading-container\">\r\n <mat-spinner />\r\n </div>\r\n } @else {\r\n <app-form-section-stepper />\r\n }\r\n <br>\r\n @if ((hasMissingConfigs()) && !(selectLoadingForm())) {\r\n <app-missing-form-configs />\r\n }\r\n </div>\r\n\r\n @if (elementEditorOpen()) {\r\n <app-input-editor style=\"max-width:480px;height:calc(100vh - 64px);z-index:1\" cdkDrag cdkDragBoundary=\"container\" class=\"middle editor-container\" />\r\n }\r\n <!-- Missing fields section -->`\r\n\r\n\r\n</div>\r\n}@placeholder {\r\n <div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"50\" />\r\n </div>\r\n}", styles: [".container{display:flex;width:100%;height:calc(100% - 64px)}.side{width:100px;background-color:#f8d7da}.middle{flex-grow:1;height:100%;overflow:auto;background-color:none}.section-title-input{border:none;background-color:transparent;font-size:16px;font-weight:600;color:#fff;padding-top:12px;padding-bottom:12px;outline:none;min-width:268px;transition:border-bottom-color .3s ease-in-out}.section-title-input:focus{border-bottom:1px solid #ffffff}.missing-fields{position:fixed;bottom:0}.updated-time{display:flex;gap:8px;align-items:center;line-height:normal;font-size:14px;bottom:0;position:absolute;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:8px;border-radius:4px}.nav-group{display:flex;align-items:center;gap:8px}.save-button{margin-left:8px;min-width:168px}.loading-container{display:flex;height:calc(100% - 150px);justify-content:center;align-items:center}.editor-container{max-width:500px}.divider{margin:0 8px;opacity:.5}app-missing-form-configs{position:absolute;bottom:0;right:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], deferBlockDependencies: [() => [import('./ngx-t-forms-forms-builder-menu.component-oXTutvUh.mjs').then(m => m.FormsBuilderMenuComponent)], () => [i2$1.CdkDrag, i7.MatProgressSpinner, import('./ngx-t-forms-input-editor.component-Bw3MLspq.mjs').then(m => m.InputEditorComponent), import('./ngx-t-forms-form-section-stepper.component-KFY1Ligw.mjs').then(m => m.FormSectionStepperComponent), import('./ngx-t-forms-missing-form-configs.component-BCUXbEDz.mjs').then(m => m.MissingFormConfigsComponent)]] }); }
|
|
5295
5503
|
}
|
|
5296
|
-
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: FormBuilderComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-forms-builder-menu.component-
|
|
5504
|
+
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: FormBuilderComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-forms-builder-menu.component-oXTutvUh.mjs').then(m => m.FormsBuilderMenuComponent), import('./ngx-t-forms-input-editor.component-Bw3MLspq.mjs').then(m => m.InputEditorComponent), import('./ngx-t-forms-form-section-stepper.component-KFY1Ligw.mjs').then(m => m.FormSectionStepperComponent), import('./ngx-t-forms-missing-form-configs.component-BCUXbEDz.mjs').then(m => m.MissingFormConfigsComponent)], resolveMetadata: (FormsBuilderMenuComponent, InputEditorComponent, FormSectionStepperComponent, MissingFormConfigsComponent) => ({ decorators: [{
|
|
5297
5505
|
type: Component,
|
|
5298
5506
|
args: [{ selector: 'app-form-builder', standalone: true, imports: [CommonModule,
|
|
5299
5507
|
MatModulesModule,
|
|
@@ -5632,9 +5840,9 @@ class TDynamicDataEditComponent {
|
|
|
5632
5840
|
}
|
|
5633
5841
|
}
|
|
5634
5842
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: TDynamicDataEditComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5635
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: TDynamicDataEditComponent, isStandalone: true, selector: "lib-t-dynamic-data-edit", inputs: { editorConfig: "editorConfig", formInputs: "formInputs", data: "data", validationErrors: "validationErrors" }, outputs: { valueChange: "valueChange", blur: "blur" }, ngImport: i0, template: "@defer {\r\n <ng-container *ngIf=\"( vm$ |async) as vm\" >\r\n\r\n <mat-form-field appearance=\"outline\"\r\n [color]=\"((validationErrors)||[]||[]).length>0 ? 'warn' : 'primary'\"\r\n [floatLabel]=\"'always'\" [subscriptSizing]=\"'dynamic'\"\r\n [hintLabel]=\"vm.editorConfigValue?.hint||''\">\r\n <mat-label> {{ (vm. editorConfigValue)?.label + ((vm. editorConfigValue)?.required ? '*' : '')}} </mat-label>\r\n \r\n @switch ((vm. editorConfigValue)?.editType) {\r\n @default {\r\n <input \r\n (blur)=\"elementBlur($event)\" \r\n (input)=\"inputChange($event)\" \r\n [disabled]=\"(vm.disabled)\"\r\n [value]=\"(vm.value)\" matInput \r\n \r\n [placeholder]=\"(vm. editorConfigValue)?.placeholder ||'Enter value'\">\r\n \r\n \r\n }\r\n @case ( elementEditorTypes.Toggle) {\r\n <lib-mat-slider-toggle-editor \r\n [name]=\"((vm. editorConfigValue)?.name||'') \" \r\n [label]=\"((vm. editorConfigValue)?.label||'')\"\r\n \r\n (valueChange)=\"valueChanged(!!$event)\" [value]=\"(vm.value)\" \r\n [errors]=\"(validationErrors)||[]\">\r\n </lib-mat-slider-toggle-editor>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.Range) {\r\n \r\n \r\n <lib-mat-slider-editor [format]=\"( vm.editorConfigValue)?.format \" [formatLabel]=\" formatLabel\"\r\n [max]=\"( vm.editorConfigValue)?.max || 100\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n [min]=\"( vm.editorConfigValue)?.min || 0\" (valueChange)=\"inputChange($event)\"\r\n [step]=\"( vm.editorConfigValue)?.step || 1\" tickInterval=\"( vm.editorConfigValue)?.step || 1\">\r\n \r\n \r\n </lib-mat-slider-editor>\r\n \r\n \r\n \r\n }\r\n \r\n @case (elementEditorTypes.ChipSelect) {\r\n <lib-mat-chip-list-editor [options]=\"(vm.editorConfigValue)?.options\" [required]=\"!!( vm.editorConfigValue)?.required\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" (valueChange)=\" valueChanged($event)\"></lib-mat-chip-list-editor>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.OptionSelect) {\r\n \r\n <mat-select [value]=\"(vm.value)\" (selectionChange)=\"valueChanged($event.value)\">\r\n @for(option of ( vm.editorConfigValue)?.options;track option.value){\r\n <mat-option [value]=\"option.value\">{{option.label}}</mat-option>\r\n }\r\n </mat-select>\r\n \r\n }\r\n <!--\r\n @case (elementEditorTypes.RichTextEditor) {\r\n <p>\r\n Not implemented yet\r\n </p>\r\n }\r\n --->\r\n \r\n @case (elementEditorTypes.SelectionOptions) {\r\n \r\n <app-selection-options-editor [errors]=\"(validationErrors)||[]\" [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [options]=\"(vm.value) || []\" (valueChanged)=\"valueChanged($event)\"></app-selection-options-editor>\r\n }\r\n \r\n @case (\r\n elementEditorTypes.ApiCall) {\r\n \r\n <lib-rest-api-call-setup \r\n [postmanCollectionConfig]=\"(vm.editorConfigValue)?.postmanCollectionConfig\"\r\n [httpGetDataFunction]=\"(vm.editorConfigValue)?.httpGetDataFunction\"\r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n (valueChanged)=\"valueChanged($event)\">\r\n \r\n </lib-rest-api-call-setup>\r\n }\r\n \r\n @case (elementEditorTypes.MongoPipelineBuilder) {\r\n \r\n <app-pipeline-generator [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" [getWorkflowOptions]=\"getWorkflowOptions$\"\r\n (valueChanged)=\"valueChanged($event)\"></app-pipeline-generator>\r\n \r\n }\r\n @case (elementEditorTypes.ApiValueAccessRules) {\r\n \r\n \r\n \r\n <app-api-value-access-rules \r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" [formInputs]=\"formInputs ||[]\" \r\n [postmanCollectionConfig]=\"(vm.editorConfigValue)?.postmanCollectionConfig\"\r\n \r\n [mapToData]=\"vm.dataOptions\"\r\n (valueChanged)=\"valueChanged($event)\">\r\n </app-api-value-access-rules>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.FormInputSelector)\r\n {\r\n \r\n <lib-form-input-selector [formInputs]=\"formInputs ||[]\" [errors]=\"(validationErrors)||[]\" [value]=\"(vm.value) || []\"\r\n (change)=\"valueChanged($event)\">\r\n </lib-form-input-selector>\r\n }\r\n \r\n @case (\r\n elementEditorTypes.RequiredInputs\r\n ){\r\n \r\n <app-required-inputs [formInputs]=\"formInputs ||[]\" [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" (valueChanged)=\"valueChanged($event)\">\r\n </app-required-inputs>\r\n }\r\n \r\n @case(elementEditorTypes.CalculatedFieldRules){\r\n \r\n <app-calculated-field-rules [formInputs]=\"formInputs ||[]\"\r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n (valueChanged)=\"valueChanged($event)\" [mapToData]=\"vm.dataOptions\"></app-calculated-field-rules>\r\n }\r\n \r\n @case(elementEditorTypes.Validators){\r\n \r\n <app-validators-config [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" (valueChanged)=\"valueChanged($event)\" [formInputs]=\"formInputs ||[]\"\r\n [mapToData]=\"vm.dataOptions\">\r\n </app-validators-config>\r\n \r\n }\r\n @case(elementEditorTypes.ConfigMscoaSegments){\r\n \r\n <app-mscoa-segment-config [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" [getMscoaTree]=\"getMscoaTree$\"\r\n [showAllSegments]=\"vm.dataOptions\" (valueChanged)=\"valueChanged($event)\"></app-mscoa-segment-config>\r\n }\r\n @case(elementEditorTypes.ConfigMscoaAdditionalInputs){\r\n \r\n <app-config-mscoa-additional-inputs [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" [getMscoaTree]=\"getMscoaTree$\"\r\n [mapToData]=\"vm.dataOptions\">\r\n (valueChanged)=\"valueChanged($event)\">\r\n </app-config-mscoa-additional-inputs>\r\n \r\n }\r\n }\r\n \r\n <button [matTooltip]=\"blurFunctionTooltip((vm.editorConfigValue)?.blurHandle)\" *ngIf=\"(vm.inputHasBlurFunction)\"\r\n [disabled]=\"(vm.disabled)\" [color]=\"blurOff?'':'primary'\" (click)=\"blurOff=!blurOff\" matSuffix\r\n mat-icon-button>\r\n <mat-icon>{{\r\n blurOff?'blur_off':'blur_on'\r\n }}\r\n \r\n \r\n </mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n \r\n <mat-error style=\" font-size: 12px;\r\n margin-left: 14px;\r\n \" *ngFor=\"let error of (validationErrors)||[]\">\r\n \r\n {{error.message}}</mat-error>\r\n \r\n </ng-container>\r\n \r\n}@error {\r\n <mat-card>\r\n <mat-card-content>\r\n \r\n <span> \r\n Failed to load form inputs\r\n </span>\r\n </mat-card-content>\r\n </mat-card>\r\n }\r\n\r\n\r\n\r\n<!-- - \r\n `TableConfigSetup`\r\n- `ConditionalInputConfig`\r\n- `MatrixTable`-->", styles: [".showItemValue{opacity:.6}mat-form-field{width:100%}mat-slider{width:100%}.range{display:flex;align-items:center}label{line-height:normal;margin-top:12px;font-weight:500;font-size:12px;color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary));display:flex;justify-content:space-between;align-items:center}.elementInfo{display:flex;align-items:center;justify-content:center;padding:0;height:24px;width:24px}.infoIcon{font-size:16px;height:16px;width:16px}.toggle-label{margin-left:5px;align-items:center;display:flex;font-weight:500;line-height:normal;justify-content:space-between;color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }], deferBlockDependencies: [() => [i2$2.NgForOf, i2$2.NgIf, i2$2.AsyncPipe, import('./ngx-t-forms-selection-options-editor.component-Cm41dBKq.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-CPP9vk2K.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-N7z59aKu.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component-N3ygU2OC.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-Cle4WsPa.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-CwqafpEq.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-BLWcl6vn.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-CAdn7-Nn.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-CPerh2tW.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-0oKVJ6ZR.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-DVLk9GU0.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-CH979aIj.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-cuh6pUIa.mjs').then(m => m.MatChipListEditorComponent), i3.MatOption, i2.MatIconButton, i6.MatIcon, i3$1.MatFormField, i3$1.MatLabel, i3$1.MatError, i3$1.MatSuffix, i7$1.MatSelect, i8.MatTooltip, i12.MatInput]] }); }
|
|
5843
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: TDynamicDataEditComponent, isStandalone: true, selector: "lib-t-dynamic-data-edit", inputs: { editorConfig: "editorConfig", formInputs: "formInputs", data: "data", validationErrors: "validationErrors" }, outputs: { valueChange: "valueChange", blur: "blur" }, ngImport: i0, template: "@defer {\r\n <ng-container *ngIf=\"( vm$ |async) as vm\" >\r\n\r\n <mat-form-field appearance=\"outline\"\r\n [color]=\"((validationErrors)||[]||[]).length>0 ? 'warn' : 'primary'\"\r\n [floatLabel]=\"'always'\" [subscriptSizing]=\"'dynamic'\"\r\n [hintLabel]=\"vm.editorConfigValue?.hint||''\">\r\n <mat-label> {{ (vm. editorConfigValue)?.label + ((vm. editorConfigValue)?.required ? '*' : '')}} </mat-label>\r\n \r\n @switch ((vm. editorConfigValue)?.editType) {\r\n @default {\r\n <input \r\n (blur)=\"elementBlur($event)\" \r\n (input)=\"inputChange($event)\" \r\n [disabled]=\"(vm.disabled)\"\r\n [value]=\"(vm.value)\" matInput \r\n \r\n [placeholder]=\"(vm. editorConfigValue)?.placeholder ||'Enter value'\">\r\n \r\n \r\n }\r\n @case ( elementEditorTypes.Toggle) {\r\n <lib-mat-slider-toggle-editor \r\n [name]=\"((vm. editorConfigValue)?.name||'') \" \r\n [label]=\"((vm. editorConfigValue)?.label||'')\"\r\n \r\n (valueChange)=\"valueChanged(!!$event)\" [value]=\"(vm.value)\" \r\n [errors]=\"(validationErrors)||[]\">\r\n </lib-mat-slider-toggle-editor>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.Range) {\r\n \r\n \r\n <lib-mat-slider-editor [format]=\"( vm.editorConfigValue)?.format \" [formatLabel]=\" formatLabel\"\r\n [max]=\"( vm.editorConfigValue)?.max || 100\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n [min]=\"( vm.editorConfigValue)?.min || 0\" (valueChange)=\"inputChange($event)\"\r\n [step]=\"( vm.editorConfigValue)?.step || 1\" tickInterval=\"( vm.editorConfigValue)?.step || 1\">\r\n \r\n \r\n </lib-mat-slider-editor>\r\n \r\n \r\n \r\n }\r\n \r\n @case (elementEditorTypes.ChipSelect) {\r\n <lib-mat-chip-list-editor [options]=\"(vm.editorConfigValue)?.options\" [required]=\"!!( vm.editorConfigValue)?.required\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" (valueChange)=\" valueChanged($event)\"></lib-mat-chip-list-editor>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.OptionSelect) {\r\n \r\n <mat-select [value]=\"(vm.value)\" (selectionChange)=\"valueChanged($event.value)\">\r\n @for(option of ( vm.editorConfigValue)?.options;track option.value){\r\n <mat-option [value]=\"option.value\">{{option.label}}</mat-option>\r\n }\r\n </mat-select>\r\n \r\n }\r\n <!--\r\n @case (elementEditorTypes.RichTextEditor) {\r\n <p>\r\n Not implemented yet\r\n </p>\r\n }\r\n --->\r\n \r\n @case (elementEditorTypes.SelectionOptions) {\r\n \r\n <app-selection-options-editor [errors]=\"(validationErrors)||[]\" [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [options]=\"(vm.value) || []\" (valueChanged)=\"valueChanged($event)\"></app-selection-options-editor>\r\n }\r\n \r\n @case (\r\n elementEditorTypes.ApiCall) {\r\n \r\n <lib-rest-api-call-setup \r\n [postmanCollectionConfig]=\"(vm.editorConfigValue)?.postmanCollectionConfig\"\r\n [httpGetDataFunction]=\"(vm.editorConfigValue)?.httpGetDataFunction\"\r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n (valueChanged)=\"valueChanged($event)\">\r\n \r\n </lib-rest-api-call-setup>\r\n }\r\n \r\n @case (elementEditorTypes.MongoPipelineBuilder) {\r\n \r\n <app-pipeline-generator [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" [getWorkflowOptions]=\"getWorkflowOptions$\"\r\n (valueChanged)=\"valueChanged($event)\"></app-pipeline-generator>\r\n \r\n }\r\n @case (elementEditorTypes.ApiValueAccessRules) {\r\n \r\n \r\n \r\n <app-api-value-access-rules \r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" [formInputs]=\"formInputs ||[]\" \r\n [postmanCollectionConfig]=\"(vm.editorConfigValue)?.postmanCollectionConfig\"\r\n \r\n [mapToData]=\"vm.dataOptions\"\r\n (valueChanged)=\"valueChanged($event)\">\r\n </app-api-value-access-rules>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.FormInputSelector)\r\n {\r\n \r\n <lib-form-input-selector [formInputs]=\"formInputs ||[]\" [errors]=\"(validationErrors)||[]\" [value]=\"(vm.value) || []\"\r\n (change)=\"valueChanged($event)\">\r\n </lib-form-input-selector>\r\n }\r\n \r\n @case (\r\n elementEditorTypes.RequiredInputs\r\n ){\r\n \r\n <app-required-inputs [formInputs]=\"formInputs ||[]\" [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" (valueChanged)=\"valueChanged($event)\">\r\n </app-required-inputs>\r\n }\r\n \r\n @case(elementEditorTypes.CalculatedFieldRules){\r\n \r\n <app-calculated-field-rules [formInputs]=\"formInputs ||[]\"\r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n (valueChanged)=\"valueChanged($event)\" [mapToData]=\"vm.dataOptions\"></app-calculated-field-rules>\r\n }\r\n \r\n @case(elementEditorTypes.Validators){\r\n \r\n <app-validators-config [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" (valueChanged)=\"valueChanged($event)\" [formInputs]=\"formInputs ||[]\"\r\n [mapToData]=\"vm.dataOptions\">\r\n </app-validators-config>\r\n \r\n }\r\n @case(elementEditorTypes.ConfigMscoaSegments){\r\n \r\n <app-mscoa-segment-config [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" [getMscoaTree]=\"getMscoaTree$\"\r\n [showAllSegments]=\"vm.dataOptions\" (valueChanged)=\"valueChanged($event)\"></app-mscoa-segment-config>\r\n }\r\n @case(elementEditorTypes.ConfigMscoaAdditionalInputs){\r\n \r\n <app-config-mscoa-additional-inputs [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" [getMscoaTree]=\"getMscoaTree$\"\r\n [mapToData]=\"vm.dataOptions\">\r\n (valueChanged)=\"valueChanged($event)\">\r\n </app-config-mscoa-additional-inputs>\r\n \r\n }\r\n }\r\n \r\n <button [matTooltip]=\"blurFunctionTooltip((vm.editorConfigValue)?.blurHandle)\" *ngIf=\"(vm.inputHasBlurFunction)\"\r\n [disabled]=\"(vm.disabled)\" [color]=\"blurOff?'':'primary'\" (click)=\"blurOff=!blurOff\" matSuffix\r\n mat-icon-button>\r\n <mat-icon>{{\r\n blurOff?'blur_off':'blur_on'\r\n }}\r\n \r\n \r\n </mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n \r\n <mat-error style=\" font-size: 12px;\r\n margin-left: 14px;\r\n \" *ngFor=\"let error of (validationErrors)||[]\">\r\n \r\n {{error.message}}</mat-error>\r\n \r\n </ng-container>\r\n \r\n}@error {\r\n <mat-card>\r\n <mat-card-content>\r\n \r\n <span> \r\n Failed to load form inputs\r\n </span>\r\n </mat-card-content>\r\n </mat-card>\r\n }\r\n\r\n\r\n\r\n<!-- - \r\n `TableConfigSetup`\r\n- `ConditionalInputConfig`\r\n- `MatrixTable`-->", styles: [".showItemValue{opacity:.6}mat-form-field{width:100%}mat-slider{width:100%}.range{display:flex;align-items:center}label{line-height:normal;margin-top:12px;font-weight:500;font-size:12px;color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary));display:flex;justify-content:space-between;align-items:center}.elementInfo{display:flex;align-items:center;justify-content:center;padding:0;height:24px;width:24px}.infoIcon{font-size:16px;height:16px;width:16px}.toggle-label{margin-left:5px;align-items:center;display:flex;font-weight:500;line-height:normal;justify-content:space-between;color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$2.MatCardContent, selector: "mat-card-content" }], deferBlockDependencies: [() => [i2$2.NgForOf, i2$2.NgIf, i2$2.AsyncPipe, import('./ngx-t-forms-selection-options-editor.component-B5Sw7_ff.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-DFFfODcQ.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-DGxWDFUN.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component-DyptJ5Lx.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-DBOzCWsw.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-C5qbKts5.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-D-p_AC92.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-B8J6K4e5.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-CZ_RUvAq.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-BH3FudLk.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-D7r-z327.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-BiedE32P.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-BjgxuRp4.mjs').then(m => m.MatChipListEditorComponent), i3.MatOption, i2.MatIconButton, i6.MatIcon, i3$1.MatFormField, i3$1.MatLabel, i3$1.MatError, i3$1.MatSuffix, i7$1.MatSelect, i8.MatTooltip, i12.MatInput]] }); }
|
|
5636
5844
|
}
|
|
5637
|
-
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: TDynamicDataEditComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-selection-options-editor.component-
|
|
5845
|
+
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: TDynamicDataEditComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-selection-options-editor.component-B5Sw7_ff.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-DFFfODcQ.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-DGxWDFUN.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component-DyptJ5Lx.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-DBOzCWsw.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-C5qbKts5.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-D-p_AC92.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-B8J6K4e5.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-CZ_RUvAq.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-BH3FudLk.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-D7r-z327.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-BiedE32P.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-BjgxuRp4.mjs').then(m => m.MatChipListEditorComponent)], resolveMetadata: (SelectionOptionsEditorComponent, FormInputSelectorComponent, RestApiCallSetupComponent, ApiValueAccessRulesComponent, RequiredInputsComponent, PipelineGeneratorComponent, CalculatedFieldRulesComponent, ValidatorsConfigComponent, ConfigMscoaAdditionalInputsComponent, MatSliderEditorComponent, MscoaSegmentConfigComponent, MatSliderToggleEditorComponent, MatChipListEditorComponent) => ({ decorators: [{
|
|
5638
5846
|
type: Component,
|
|
5639
5847
|
args: [{ selector: 'lib-t-dynamic-data-edit', standalone: true, imports: [CommonModule,
|
|
5640
5848
|
SelectionOptionsEditorComponent,
|
|
@@ -6016,12 +6224,15 @@ class TFormInputStatusComponent {
|
|
|
6016
6224
|
.map(([key, value]) => value);
|
|
6017
6225
|
return busyMessages.join(', ');
|
|
6018
6226
|
}
|
|
6227
|
+
get isReadOnly() {
|
|
6228
|
+
return Boolean(this.inputConfig?.readonly || false);
|
|
6229
|
+
}
|
|
6019
6230
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: TFormInputStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6020
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: TFormInputStatusComponent, isStandalone: true, selector: "lib-t-form-input-status", inputs: { inputConfig: "inputConfig" }, ngImport: i0, template: "\r\n\r\n<mat-icon color=\"primary\" \r\
|
|
6231
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: TFormInputStatusComponent, isStandalone: true, selector: "lib-t-form-input-status", inputs: { inputConfig: "inputConfig" }, ngImport: i0, template: "\r\n\r\n <mat-icon color=\"primary\" \r\n matTooltip=\"recently updated\"\r\n *ngIf=\"!busy && recentlyUpdated()\">update\r\n </mat-icon>\r\n @if (isReadOnly) {\r\n <mat-icon \r\n style=\"opacity:0.5;\" \r\n matTooltip=\"Read only\"\r\n >\r\n edit_off\r\n </mat-icon>\r\n }\r\n \r\n @if(busy === true) { \r\n <mat-spinner\r\n [matTooltip]=\"busyMessage\" \r\n [diameter]=\"12\"\r\n style=\"display: inline-block;\" > \r\n </mat-spinner>\r\n \r\n }\r\n\r\n\r\n", styles: [".spinner{display:inline-block;position:absolute;height:10px!important;width:10px!important;--mdc-circular-progress-size: 10px;--mdc-circular-progress-active-indicator-width: 10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
6021
6232
|
}
|
|
6022
6233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: TFormInputStatusComponent, decorators: [{
|
|
6023
6234
|
type: Component,
|
|
6024
|
-
args: [{ selector: 'lib-t-form-input-status', standalone: true, imports: [CommonModule, MatModulesModule], template: "\r\n\r\n<mat-icon color=\"primary\" \r\
|
|
6235
|
+
args: [{ selector: 'lib-t-form-input-status', standalone: true, imports: [CommonModule, MatModulesModule], template: "\r\n\r\n <mat-icon color=\"primary\" \r\n matTooltip=\"recently updated\"\r\n *ngIf=\"!busy && recentlyUpdated()\">update\r\n </mat-icon>\r\n @if (isReadOnly) {\r\n <mat-icon \r\n style=\"opacity:0.5;\" \r\n matTooltip=\"Read only\"\r\n >\r\n edit_off\r\n </mat-icon>\r\n }\r\n \r\n @if(busy === true) { \r\n <mat-spinner\r\n [matTooltip]=\"busyMessage\" \r\n [diameter]=\"12\"\r\n style=\"display: inline-block;\" > \r\n </mat-spinner>\r\n \r\n }\r\n\r\n\r\n", styles: [".spinner{display:inline-block;position:absolute;height:10px!important;width:10px!important;--mdc-circular-progress-size: 10px;--mdc-circular-progress-active-indicator-width: 10px}\n"] }]
|
|
6025
6236
|
}], propDecorators: { inputConfig: [{
|
|
6026
6237
|
type: Input
|
|
6027
6238
|
}] } });
|
|
@@ -6112,7 +6323,6 @@ function mscoaStoreActions(store) {
|
|
|
6112
6323
|
...state,
|
|
6113
6324
|
segmentValues: { ...state.segmentValues, [segment.toUpperCase()]: newSegmentValue }
|
|
6114
6325
|
};
|
|
6115
|
-
console.error(newState, "'''''''----------------------------");
|
|
6116
6326
|
return newState;
|
|
6117
6327
|
})
|
|
6118
6328
|
};
|
|
@@ -6655,7 +6865,7 @@ class MscoaComputationComponent {
|
|
|
6655
6865
|
return !this.segmentConfig?.readOnly;
|
|
6656
6866
|
}
|
|
6657
6867
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MscoaComputationComponent, deps: [{ token: i1$1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6658
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MscoaComputationComponent, isStandalone: true, selector: "app-mscoa-computation", ngImport: i0, template: "<mat-toolbar class=\"glass\" [color]=\"activeColumn ==='debit'?'primary':'warn'\">\r\n <span>\r\n <h1>\r\n {{ segment|| 'No segment' | titlecase}} : {{activeColumn |\r\n titlecase}}\r\n account\r\n </h1>\r\n\r\n </span>\r\n\r\n <span class=\"spacer\">\r\n </span>\r\n\r\n</mat-toolbar>\r\n\r\n@if ( _selectedAccount ) {\r\n<div style=\"max-height:calc(98vh - 128px); max-width: 98vw;\">\r\n
|
|
6868
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MscoaComputationComponent, isStandalone: true, selector: "app-mscoa-computation", ngImport: i0, template: "<mat-toolbar class=\"glass\" [color]=\"activeColumn ==='debit'?'primary':'warn'\">\r\n <span>\r\n <h1>\r\n {{ segment|| 'No segment' | titlecase}} : {{activeColumn |\r\n titlecase}}\r\n account\r\n </h1>\r\n\r\n </span>\r\n\r\n <span class=\"spacer\">\r\n </span>\r\n\r\n</mat-toolbar>\r\n\r\n@if ( _selectedAccount ) {\r\n<div style=\"max-height:calc(98vh - 128px); max-width: 98vw;\">\r\n <app-account-value [accountInputs]=\"accountInputs\" [userCanClearAccount]=\"userCanClearAccount\"\r\n [mscoaAccount]=\"_selectedAccount\" (updateAccount)=\"updateAccount($event)\"\r\n (clearSelectedAccount)=\"clearSelectedAccount()\">\r\n </app-account-value>\r\n</div>\r\n\r\n\r\n}@else{\r\n<mat-drawer-container style=\"max-height:calc(98vh - 128px); max-width: 98vw;\" autosize>\r\n <mat-drawer #drawer style=\" \r\n max-width: 98vw;\r\n overflow: auto;\r\n background: var(--mat-toolbar-container-background-color) !important;padding:16px\" mode=\"side\" position=\"end\"\r\n [opened]=\"!searchingAccounts && !!this._selected\">\r\n\r\n <h4>Select an Account</h4>\r\n <p class=\"info\">Please choose from the options below. Search results for account\r\n <strong>{{account}}</strong>\r\n </p>\r\n\r\n\r\n <app-scoa-account-table [selectedAccount]=\" _selectedAccount\" [segment]=\"segment\"\r\n (accountSelected)=\" selectAccount($event)\" [data]=\"{\r\n accounts: searchAccount,\r\n account: ''\r\n }\">\r\n </app-scoa-account-table>\r\n\r\n <footer>\r\n <mat-toolbar>\r\n <span class=\"spacer\"></span>\r\n <button mat-flat-button color=\"warn\" (click)=\"cancel()\">Cancel account selection</button>\r\n\r\n </mat-toolbar>\r\n </footer>\r\n </mat-drawer>\r\n <div class=\"tree-content\">\r\n\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding>\r\n\r\n\r\n <button class=\"toggle-button\" mat-icon-button disabled></button>\r\n <mat-checkbox (change)=\"selectNode(node)\"\r\n disabled=\"{{isActivePathOrParent(node.path) && searchingAccounts}}\"\r\n [checked]=\"isActivePathOrParent(node.path)\">\r\n <mat-spinner color=\"primary\" *ngIf=\"isActivePathOrParent(node.path) && searchingAccounts\"\r\n class=\"loading\"></mat-spinner>\r\n <span *ngIf=\"!(isActivePathOrParent(node.path) && searchingAccounts)\" class=\"label\"\r\n [class.selected]=\"isActivePathOrParent(node.path)\">\r\n {{node.name}}\r\n\r\n </span>\r\n <span *ngIf=\"isActivePathOrParent(node.path) && searchingAccounts\" class=\"label\"\r\n [class.selected]=\"isActivePathOrParent(node.path)\">\r\n ...Loading <strong>{{node.name}}</strong> accounts\r\n </span>\r\n </mat-checkbox>\r\n\r\n </mat-tree-node>\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding>\r\n\r\n <button class=\"toggle-button\" mat-icon-button [attr.aria-label]=\"'Toggle ' + node.name\"\r\n (click)=\"toggleNode(node)\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox (change)=\"selectNode(node)\" disabled=\"true\" checked=\"true\"\r\n *ngIf=\"isActivePathOrParent(node.path)\">\r\n <span class=\"label\" [class.selected]=\"isActivePathOrParent(node.path)\">\r\n {{node.name}}\r\n </span>\r\n </mat-checkbox>\r\n\r\n <span *ngIf=\"!isActivePathOrParent(node.path)\" class=\"label\"\r\n [class.selected]=\"isActivePathOrParent(node.path)\">\r\n {{node.name}} {{node.selected}}\r\n </span>\r\n\r\n\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-drawer-container>\r\n}\r\n<mat-divider></mat-divider>\r\n<mat-toolbar class=\"glass\" style=\" background: rgba(255, 255, 255, 0.15)\">\r\n <span class=\"spacer\"></span>\r\n <button mat-button (click)=\"closeAndPassData(undefined)\">Close</button>\r\n @if (userCanClearAccount&& !!_selectedAccount?._id) {\r\n <button mat-raised-button color=\"primary\" [disabled]=\"!saveSelection\" (click)=\"saveAccount()\">Save</button>\r\n }\r\n\r\n</mat-toolbar>", styles: ["h4{margin-top:0;margin-bottom:0;padding-left:16px}.label{font-size:14px}.selected{color:#243d91!important;font-weight:500}.accountSeperator{margin-left:2px;margin-right:2px}.loading{width:24px!important;height:24px!important;--mdc-circular-progress-size: 28px !important;--mdc-circular-progress-active-indicator-width: 24px !important;position:absolute;left:8px;bottom:8px}.info{font-size:.875rem;opacity:.8;padding-left:16px;border-radius:4px;margin-top:10px;line-height:1.6;max-width:500px}.info strong{opacity:1}.toggle-button{height:28px;width:28px;padding:0;margin-right:4px;margin-left:4px}mat-tree{min-height:368px;min-width:fit-content;max-height:calc(98vh - 128px);overflow:auto;margin-top:8px}mat-tree-node{display:flex;align-items:flex-start;min-height:28px;padding-right:4px!important;box-sizing:border-box;width:100%;padding-top:2px!important;padding-bottom:2px!important}.mat-tree-node{display:flex;align-items:center;flex-wrap:nowrap;min-height:28px;padding:4px 0;box-sizing:border-box}.mat-tree-node button,.mat-tree-node mat-checkbox{flex-shrink:0;height:28px;max-width:236px}.mat-tree-node mat-checkbox{display:flex;align-items:center;height:28px;max-width:236px;min-height:fit-content}.mat-tree-node .label{flex:1;min-width:0;word-wrap:break-word;overflow-wrap:break-word;white-space:normal}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2$2.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3$4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i8$1.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i8$1.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i3$3.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i3$3.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "component", type: i3$3.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i3$3.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "component", type: AccountValueComponent, selector: "app-account-value", inputs: ["mscoaAccount", "accountInputs", "userCanClearAccount"], outputs: ["clearSelectedAccount", "updateAccount"] }, { kind: "component", type: ScoaAccountTableComponent, selector: "app-scoa-account-table", inputs: ["data", "selectedAccount", "segment"], outputs: ["accountSelected"] }] }); }
|
|
6659
6869
|
}
|
|
6660
6870
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MscoaComputationComponent, decorators: [{
|
|
6661
6871
|
type: Component,
|
|
@@ -6663,7 +6873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
6663
6873
|
MatModulesModule,
|
|
6664
6874
|
AccountValueComponent,
|
|
6665
6875
|
ScoaAccountTableComponent
|
|
6666
|
-
], template: "<mat-toolbar class=\"glass\" [color]=\"activeColumn ==='debit'?'primary':'warn'\">\r\n <span>\r\n <h1>\r\n {{ segment|| 'No segment' | titlecase}} : {{activeColumn |\r\n titlecase}}\r\n account\r\n </h1>\r\n\r\n </span>\r\n\r\n <span class=\"spacer\">\r\n </span>\r\n\r\n</mat-toolbar>\r\n\r\n@if ( _selectedAccount ) {\r\n<div style=\"max-height:calc(98vh - 128px); max-width: 98vw;\">\r\n
|
|
6876
|
+
], template: "<mat-toolbar class=\"glass\" [color]=\"activeColumn ==='debit'?'primary':'warn'\">\r\n <span>\r\n <h1>\r\n {{ segment|| 'No segment' | titlecase}} : {{activeColumn |\r\n titlecase}}\r\n account\r\n </h1>\r\n\r\n </span>\r\n\r\n <span class=\"spacer\">\r\n </span>\r\n\r\n</mat-toolbar>\r\n\r\n@if ( _selectedAccount ) {\r\n<div style=\"max-height:calc(98vh - 128px); max-width: 98vw;\">\r\n <app-account-value [accountInputs]=\"accountInputs\" [userCanClearAccount]=\"userCanClearAccount\"\r\n [mscoaAccount]=\"_selectedAccount\" (updateAccount)=\"updateAccount($event)\"\r\n (clearSelectedAccount)=\"clearSelectedAccount()\">\r\n </app-account-value>\r\n</div>\r\n\r\n\r\n}@else{\r\n<mat-drawer-container style=\"max-height:calc(98vh - 128px); max-width: 98vw;\" autosize>\r\n <mat-drawer #drawer style=\" \r\n max-width: 98vw;\r\n overflow: auto;\r\n background: var(--mat-toolbar-container-background-color) !important;padding:16px\" mode=\"side\" position=\"end\"\r\n [opened]=\"!searchingAccounts && !!this._selected\">\r\n\r\n <h4>Select an Account</h4>\r\n <p class=\"info\">Please choose from the options below. Search results for account\r\n <strong>{{account}}</strong>\r\n </p>\r\n\r\n\r\n <app-scoa-account-table [selectedAccount]=\" _selectedAccount\" [segment]=\"segment\"\r\n (accountSelected)=\" selectAccount($event)\" [data]=\"{\r\n accounts: searchAccount,\r\n account: ''\r\n }\">\r\n </app-scoa-account-table>\r\n\r\n <footer>\r\n <mat-toolbar>\r\n <span class=\"spacer\"></span>\r\n <button mat-flat-button color=\"warn\" (click)=\"cancel()\">Cancel account selection</button>\r\n\r\n </mat-toolbar>\r\n </footer>\r\n </mat-drawer>\r\n <div class=\"tree-content\">\r\n\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding>\r\n\r\n\r\n <button class=\"toggle-button\" mat-icon-button disabled></button>\r\n <mat-checkbox (change)=\"selectNode(node)\"\r\n disabled=\"{{isActivePathOrParent(node.path) && searchingAccounts}}\"\r\n [checked]=\"isActivePathOrParent(node.path)\">\r\n <mat-spinner color=\"primary\" *ngIf=\"isActivePathOrParent(node.path) && searchingAccounts\"\r\n class=\"loading\"></mat-spinner>\r\n <span *ngIf=\"!(isActivePathOrParent(node.path) && searchingAccounts)\" class=\"label\"\r\n [class.selected]=\"isActivePathOrParent(node.path)\">\r\n {{node.name}}\r\n\r\n </span>\r\n <span *ngIf=\"isActivePathOrParent(node.path) && searchingAccounts\" class=\"label\"\r\n [class.selected]=\"isActivePathOrParent(node.path)\">\r\n ...Loading <strong>{{node.name}}</strong> accounts\r\n </span>\r\n </mat-checkbox>\r\n\r\n </mat-tree-node>\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding>\r\n\r\n <button class=\"toggle-button\" mat-icon-button [attr.aria-label]=\"'Toggle ' + node.name\"\r\n (click)=\"toggleNode(node)\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox (change)=\"selectNode(node)\" disabled=\"true\" checked=\"true\"\r\n *ngIf=\"isActivePathOrParent(node.path)\">\r\n <span class=\"label\" [class.selected]=\"isActivePathOrParent(node.path)\">\r\n {{node.name}}\r\n </span>\r\n </mat-checkbox>\r\n\r\n <span *ngIf=\"!isActivePathOrParent(node.path)\" class=\"label\"\r\n [class.selected]=\"isActivePathOrParent(node.path)\">\r\n {{node.name}} {{node.selected}}\r\n </span>\r\n\r\n\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n</mat-drawer-container>\r\n}\r\n<mat-divider></mat-divider>\r\n<mat-toolbar class=\"glass\" style=\" background: rgba(255, 255, 255, 0.15)\">\r\n <span class=\"spacer\"></span>\r\n <button mat-button (click)=\"closeAndPassData(undefined)\">Close</button>\r\n @if (userCanClearAccount&& !!_selectedAccount?._id) {\r\n <button mat-raised-button color=\"primary\" [disabled]=\"!saveSelection\" (click)=\"saveAccount()\">Save</button>\r\n }\r\n\r\n</mat-toolbar>", styles: ["h4{margin-top:0;margin-bottom:0;padding-left:16px}.label{font-size:14px}.selected{color:#243d91!important;font-weight:500}.accountSeperator{margin-left:2px;margin-right:2px}.loading{width:24px!important;height:24px!important;--mdc-circular-progress-size: 28px !important;--mdc-circular-progress-active-indicator-width: 24px !important;position:absolute;left:8px;bottom:8px}.info{font-size:.875rem;opacity:.8;padding-left:16px;border-radius:4px;margin-top:10px;line-height:1.6;max-width:500px}.info strong{opacity:1}.toggle-button{height:28px;width:28px;padding:0;margin-right:4px;margin-left:4px}mat-tree{min-height:368px;min-width:fit-content;max-height:calc(98vh - 128px);overflow:auto;margin-top:8px}mat-tree-node{display:flex;align-items:flex-start;min-height:28px;padding-right:4px!important;box-sizing:border-box;width:100%;padding-top:2px!important;padding-bottom:2px!important}.mat-tree-node{display:flex;align-items:center;flex-wrap:nowrap;min-height:28px;padding:4px 0;box-sizing:border-box}.mat-tree-node button,.mat-tree-node mat-checkbox{flex-shrink:0;height:28px;max-width:236px}.mat-tree-node mat-checkbox{display:flex;align-items:center;height:28px;max-width:236px;min-height:fit-content}.mat-tree-node .label{flex:1;min-width:0;word-wrap:break-word;overflow-wrap:break-word;white-space:normal}\n"] }]
|
|
6667
6877
|
}], ctorParameters: () => [{ type: i1$1.MatDialogRef }] });
|
|
6668
6878
|
|
|
6669
6879
|
;
|
|
@@ -6679,6 +6889,7 @@ class MscoaChartComponent {
|
|
|
6679
6889
|
this.inputs$ = this.store.selectors.inputs$;
|
|
6680
6890
|
this.destroy$ = new Subject();
|
|
6681
6891
|
this._formBuilderFunctions = undefined;
|
|
6892
|
+
this.onContainerClick = new EventEmitter();
|
|
6682
6893
|
// Create portal properties
|
|
6683
6894
|
this.inputPortals = {};
|
|
6684
6895
|
this.editorMode = false;
|
|
@@ -6704,6 +6915,9 @@ class MscoaChartComponent {
|
|
|
6704
6915
|
this.countdownSeconds = {};
|
|
6705
6916
|
this.overId = null;
|
|
6706
6917
|
}
|
|
6918
|
+
setAsTouched(ev) {
|
|
6919
|
+
this.onContainerClick.emit(ev);
|
|
6920
|
+
}
|
|
6707
6921
|
// Improved setupPortals method for MscoaChartComponent
|
|
6708
6922
|
setupPortals(inputs) {
|
|
6709
6923
|
// Reset portals
|
|
@@ -6787,8 +7001,7 @@ class MscoaChartComponent {
|
|
|
6787
7001
|
return;
|
|
6788
7002
|
this._config = config;
|
|
6789
7003
|
this.store.actions.setConfig({
|
|
6790
|
-
...config
|
|
6791
|
-
inputId: this.inputConfig?.id
|
|
7004
|
+
...config
|
|
6792
7005
|
});
|
|
6793
7006
|
}
|
|
6794
7007
|
ngOnInit() {
|
|
@@ -6951,12 +7164,14 @@ class MscoaChartComponent {
|
|
|
6951
7164
|
this.formBuilderFunctions?.editInput(input);
|
|
6952
7165
|
}
|
|
6953
7166
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MscoaChartComponent, deps: [{ token: MscoaComponentStore }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6954
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MscoaChartComponent, isStandalone: true, selector: "app-mscoa-chart", inputs: { inputConfig: "inputConfig", editorMode: "editorMode", formBuilderFunctions: "formBuilderFunctions", segmentValues: "segmentValues", readonly: "readonly", config: "config", formGroup: "formGroup" }, outputs: { segmentValuesChanged: "segmentValuesChanged", interaction: "interaction" }, providers: [MscoaComponentStore,], ngImport: i0, template: "<section class=\"p-4\" *ngIf=\"(viewData$ | async) as viewData\">\r\n\r\n @if (viewData.loading) {\r\n <div style=\"padding: 24px; display: flex; align-items: center; justify-content: center;\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n } @else {\r\n @defer (on viewport) {\r\n <ng-container *ngIf=\"viewData.accountTreeKeys\">\r\n <div class=\"table-container\">\r\n <table mat-table [dataSource]=\"viewData.tableData\" class=\"table\">\r\n @for (col of viewData.cols; track col; let i = $index) {\r\n <ng-container [matColumnDef]=\"col\">\r\n <th [style.text-align]=\"i === 0 ? 'right' : 'center'\"\r\n style=\"background: var(--mat-toolbar-container-background-color);\" mat-header-cell *matHeaderCellDef>\r\n @if (viewData.hasMultiSelect || i === 0) {\r\n {{col | titlecase}}\r\n } @else if (col === 'debit') {\r\n Debit / Credit\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\" [style.text-align]=\"i === 0 ? 'right' : 'center'\"\r\n [ngClass]=\"{'segment-cell': i === 0}\"\r\n [class.active]=\"editSelection?.segment === row['segment'] && activeColumn === col\">\r\n @if (i === 0) {\r\n <div style=\" display: flex\r\n;\r\n align-items: center;\r\n justify-self: right;\">\r\n\r\n @if(editorMode && row.innerInput?.id){\r\n <button mat-icon-button\r\n [matMenuTriggerData]=\"{innerInput:row.innerInput}\"\r\n [matMenuTriggerFor]=\"inputMenu\" \r\n [matTooltip]=\"'options for: ' + row.innerInput.label\">\r\n <mat-icon>\r\n more_vert\r\n </mat-icon>\r\n </button>\r\n }\r\n {{row['label']}}\r\n \r\n </div>\r\n \r\n } @else {\r\n \r\n @if(row.innerInput?.id &&formGroup && inputPortals[row.innerInput.id]){\r\n <div>\r\n <ng-template [cdkPortalOutlet]=\"inputPortals[row.innerInput?.id]\"></ng-template>\r\n \r\n </div>\r\n\r\n\r\n\r\n }@else {\r\n @if (row[col]) {\r\n\r\n <button [disabled]=\"!!row['singleSelect'] === true && col === 'credit'\"\r\n (mousedown)=\"$event.preventDefault(); $event.stopPropagation(); selectAccount(row, col)
|
|
7167
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MscoaChartComponent, isStandalone: true, selector: "app-mscoa-chart", inputs: { inputConfig: "inputConfig", editorMode: "editorMode", formBuilderFunctions: "formBuilderFunctions", segmentValues: "segmentValues", readonly: "readonly", config: "config", formGroup: "formGroup" }, outputs: { onContainerClick: "onContainerClick", segmentValuesChanged: "segmentValuesChanged", interaction: "interaction" }, providers: [MscoaComponentStore,], ngImport: i0, template: "<section (click)=\"setAsTouched($event)\" class=\"p-4\" *ngIf=\"(viewData$ | async) as viewData\">\r\n\r\n @if (viewData.loading) {\r\n <div style=\"padding: 24px; display: flex; align-items: center; justify-content: center;\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n } @else {\r\n @defer (on viewport) {\r\n <ng-container *ngIf=\"viewData.accountTreeKeys\">\r\n <div class=\"table-container\">\r\n <table mat-table [dataSource]=\"viewData.tableData\" class=\"table\">\r\n @for (col of viewData.cols; track col; let i = $index) {\r\n <ng-container [matColumnDef]=\"col\">\r\n <th [style.text-align]=\"i === 0 ? 'right' : 'center'\"\r\n style=\"background: var(--mat-toolbar-container-background-color);\" mat-header-cell *matHeaderCellDef>\r\n @if (viewData.hasMultiSelect || i === 0) {\r\n {{col | titlecase}}\r\n } @else if (col === 'debit') {\r\n Debit / Credit\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\" [style.text-align]=\"i === 0 ? 'right' : 'center'\"\r\n [ngClass]=\"{'segment-cell': i === 0}\"\r\n [class.active]=\"editSelection?.segment === row['segment'] && activeColumn === col\">\r\n @if (i === 0) {\r\n <div style=\" display: flex\r\n;\r\n align-items: center;\r\n justify-self: right;\">\r\n\r\n @if(editorMode && row.innerInput?.id){\r\n <button mat-icon-button\r\n [matMenuTriggerData]=\"{innerInput:row.innerInput}\"\r\n [matMenuTriggerFor]=\"inputMenu\" \r\n [matTooltip]=\"'options for: ' + row.innerInput.label\">\r\n <mat-icon>\r\n more_vert\r\n </mat-icon>\r\n </button>\r\n }\r\n {{row['label']}}\r\n \r\n </div>\r\n \r\n } @else {\r\n \r\n @if(row.innerInput?.id &&formGroup && inputPortals[row.innerInput.id]){\r\n <div>\r\n <ng-template [cdkPortalOutlet]=\"inputPortals[row.innerInput?.id]\"></ng-template>\r\n \r\n </div>\r\n\r\n\r\n\r\n }@else {\r\n @if (row[col]) {\r\n\r\n <button [disabled]=\"!!row['singleSelect'] === true && col === 'credit'\"\r\n (mousedown)=\"$event.preventDefault(); $event.stopPropagation(); \r\n selectAccount(row, col);setAsTouched($event)\" color=\"primary\"\r\n mat-button class=\"cell-button\">\r\n <div class=\"content\">\r\n\r\n {{row[col]}}\r\n </div>\r\n </button>\r\n } @else {\r\n <button [disabled]=\"!!row['singleSelect'] === true && col === 'credit'\"\r\n (click)=\"selectAccount(row, col); $event.stopPropagation();setAsTouched($event)\" mat-stroked-button class=\"cell-button\">\r\n <div class=\"content\">\r\n {{!!row['singleSelect'] === true && col === 'credit' ? 'auto selected ' : 'Select ' + row['segment'] + '\r\n ' + col + ' account'}}\r\n </div>\r\n </button>\r\n }\r\n }\r\n\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n <tr mat-header-row *matHeaderRowDef=\"viewData.cols\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: viewData.cols;\"></tr>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"viewData.accountTreeKeys.length === 0\">\r\n <section style=\"padding: 16px; text-align: center; display: flex;\">\r\n <span><mat-icon>info</mat-icon></span>\r\n <span>\r\n No account segments are currently configured.\r\n Please configure account segments to proceed.\r\n </span>\r\n </section>\r\n </ng-container>\r\n </ng-container>\r\n } @placeholder {\r\n <div class=\"table-container\">\r\n <p class=\"text-gray-500\">Loading data...</p>\r\n </div>\r\n }\r\n\r\n @loading (minimum 100ms) {\r\n <div class=\"flex justify-center items-center h-64\">\r\n <mat-progress-spinner mode=\"indeterminate\"></mat-progress-spinner>\r\n </div>\r\n } @error {\r\n <div class=\"table-container\">\r\n <p class=\"text-red-500\">Error loading data. Please try again.</p>\r\n </div>\r\n }\r\n }\r\n\r\n</section>\r\n\r\n<mat-menu #inputMenu=\"matMenu\">\r\n <ng-template matMenuContent let-innerInput=\"innerInput\">\r\n\r\n\r\n <button [matTooltip]=\"'Edit Input: ' +innerInput.label \" (click)=\"editInput(innerInput)\"\r\n mat-icon-button>\r\n <mat-icon>\r\n edit\r\n </mat-icon>\r\n\r\n </button>\r\n @if(!!inputWillBeRemovedIn(innerInput.id) ){\r\n <button (mouseover)=\"overId = innerInput.id\" (mouseout)=\"overId = null\"\r\n (click)=\"removeInput(innerInput)\" color=\"warn\" mat-stroked-button>\r\n <div style=\"display: flex; align-items: center;\">\r\n <mat-progress-spinner style=\"margin-right: 5px;\" color=\"primary\" class=\"cancelProgress\"\r\n [value]=\"((inputWillBeRemovedIn(innerInput.id)||0)/5)*100\">\r\n </mat-progress-spinner>\r\n {{overId === innerInput.id ? 'Click to cancel':'Deleting in'}}\r\n {{inputWillBeRemovedIn(innerInput.id)}}\r\n </div>\r\n\r\n </button>\r\n\r\n }@else {\r\n <button [matTooltip]=\"'Delete input ' + innerInput.label \" (click)=\"removeInput(innerInput)\"\r\n mat-icon-button>\r\n\r\n <mat-icon>\r\n delete\r\n </mat-icon>\r\n </button>\r\n }\r\n </ng-template>\r\n</mat-menu>", styles: [".cell-button{height:fit-content;min-height:38px;min-width:100%}.content{padding:8px}.info-box{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px;margin:8px auto auto}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i6$2.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: PortalModule }], deferBlockDependencies: [() => [i2.MatButton, i2.MatIconButton, i6.MatIcon, i6$2.MatMenuTrigger, i5.MatTable, i5.MatHeaderCellDef, i5.MatHeaderRowDef, i5.MatColumnDef, i5.MatCellDef, i5.MatRowDef, i5.MatHeaderCell, i5.MatCell, i5.MatHeaderRow, i5.MatRow, i8.MatTooltip, i9$1.CdkPortalOutlet, i2$2.NgClass, i2$2.NgIf, i2$2.TitleCasePipe]] }); }
|
|
6955
7168
|
}
|
|
6956
7169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MscoaChartComponent, decorators: [{
|
|
6957
7170
|
type: Component,
|
|
6958
|
-
args: [{ selector: 'app-mscoa-chart', standalone: true, imports: [MatModulesModule, CommonModule, PortalModule], providers: [MscoaComponentStore,], template: "<section class=\"p-4\" *ngIf=\"(viewData$ | async) as viewData\">\r\n\r\n @if (viewData.loading) {\r\n <div style=\"padding: 24px; display: flex; align-items: center; justify-content: center;\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n } @else {\r\n @defer (on viewport) {\r\n <ng-container *ngIf=\"viewData.accountTreeKeys\">\r\n <div class=\"table-container\">\r\n <table mat-table [dataSource]=\"viewData.tableData\" class=\"table\">\r\n @for (col of viewData.cols; track col; let i = $index) {\r\n <ng-container [matColumnDef]=\"col\">\r\n <th [style.text-align]=\"i === 0 ? 'right' : 'center'\"\r\n style=\"background: var(--mat-toolbar-container-background-color);\" mat-header-cell *matHeaderCellDef>\r\n @if (viewData.hasMultiSelect || i === 0) {\r\n {{col | titlecase}}\r\n } @else if (col === 'debit') {\r\n Debit / Credit\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\" [style.text-align]=\"i === 0 ? 'right' : 'center'\"\r\n [ngClass]=\"{'segment-cell': i === 0}\"\r\n [class.active]=\"editSelection?.segment === row['segment'] && activeColumn === col\">\r\n @if (i === 0) {\r\n <div style=\" display: flex\r\n;\r\n align-items: center;\r\n justify-self: right;\">\r\n\r\n @if(editorMode && row.innerInput?.id){\r\n <button mat-icon-button\r\n [matMenuTriggerData]=\"{innerInput:row.innerInput}\"\r\n [matMenuTriggerFor]=\"inputMenu\" \r\n [matTooltip]=\"'options for: ' + row.innerInput.label\">\r\n <mat-icon>\r\n more_vert\r\n </mat-icon>\r\n </button>\r\n }\r\n {{row['label']}}\r\n \r\n </div>\r\n \r\n } @else {\r\n \r\n @if(row.innerInput?.id &&formGroup && inputPortals[row.innerInput.id]){\r\n <div>\r\n <ng-template [cdkPortalOutlet]=\"inputPortals[row.innerInput?.id]\"></ng-template>\r\n \r\n </div>\r\n\r\n\r\n\r\n }@else {\r\n @if (row[col]) {\r\n\r\n <button [disabled]=\"!!row['singleSelect'] === true && col === 'credit'\"\r\n (mousedown)=\"$event.preventDefault(); $event.stopPropagation(); selectAccount(row, col)
|
|
6959
|
-
}], ctorParameters: () => [{ type: MscoaComponentStore }, { type: i0.Injector }], propDecorators: {
|
|
7171
|
+
args: [{ selector: 'app-mscoa-chart', standalone: true, imports: [MatModulesModule, CommonModule, PortalModule], providers: [MscoaComponentStore,], template: "<section (click)=\"setAsTouched($event)\" class=\"p-4\" *ngIf=\"(viewData$ | async) as viewData\">\r\n\r\n @if (viewData.loading) {\r\n <div style=\"padding: 24px; display: flex; align-items: center; justify-content: center;\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n } @else {\r\n @defer (on viewport) {\r\n <ng-container *ngIf=\"viewData.accountTreeKeys\">\r\n <div class=\"table-container\">\r\n <table mat-table [dataSource]=\"viewData.tableData\" class=\"table\">\r\n @for (col of viewData.cols; track col; let i = $index) {\r\n <ng-container [matColumnDef]=\"col\">\r\n <th [style.text-align]=\"i === 0 ? 'right' : 'center'\"\r\n style=\"background: var(--mat-toolbar-container-background-color);\" mat-header-cell *matHeaderCellDef>\r\n @if (viewData.hasMultiSelect || i === 0) {\r\n {{col | titlecase}}\r\n } @else if (col === 'debit') {\r\n Debit / Credit\r\n }\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\" [style.text-align]=\"i === 0 ? 'right' : 'center'\"\r\n [ngClass]=\"{'segment-cell': i === 0}\"\r\n [class.active]=\"editSelection?.segment === row['segment'] && activeColumn === col\">\r\n @if (i === 0) {\r\n <div style=\" display: flex\r\n;\r\n align-items: center;\r\n justify-self: right;\">\r\n\r\n @if(editorMode && row.innerInput?.id){\r\n <button mat-icon-button\r\n [matMenuTriggerData]=\"{innerInput:row.innerInput}\"\r\n [matMenuTriggerFor]=\"inputMenu\" \r\n [matTooltip]=\"'options for: ' + row.innerInput.label\">\r\n <mat-icon>\r\n more_vert\r\n </mat-icon>\r\n </button>\r\n }\r\n {{row['label']}}\r\n \r\n </div>\r\n \r\n } @else {\r\n \r\n @if(row.innerInput?.id &&formGroup && inputPortals[row.innerInput.id]){\r\n <div>\r\n <ng-template [cdkPortalOutlet]=\"inputPortals[row.innerInput?.id]\"></ng-template>\r\n \r\n </div>\r\n\r\n\r\n\r\n }@else {\r\n @if (row[col]) {\r\n\r\n <button [disabled]=\"!!row['singleSelect'] === true && col === 'credit'\"\r\n (mousedown)=\"$event.preventDefault(); $event.stopPropagation(); \r\n selectAccount(row, col);setAsTouched($event)\" color=\"primary\"\r\n mat-button class=\"cell-button\">\r\n <div class=\"content\">\r\n\r\n {{row[col]}}\r\n </div>\r\n </button>\r\n } @else {\r\n <button [disabled]=\"!!row['singleSelect'] === true && col === 'credit'\"\r\n (click)=\"selectAccount(row, col); $event.stopPropagation();setAsTouched($event)\" mat-stroked-button class=\"cell-button\">\r\n <div class=\"content\">\r\n {{!!row['singleSelect'] === true && col === 'credit' ? 'auto selected ' : 'Select ' + row['segment'] + '\r\n ' + col + ' account'}}\r\n </div>\r\n </button>\r\n }\r\n }\r\n\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n <tr mat-header-row *matHeaderRowDef=\"viewData.cols\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: viewData.cols;\"></tr>\r\n </table>\r\n </div>\r\n <ng-container *ngIf=\"viewData.accountTreeKeys.length === 0\">\r\n <section style=\"padding: 16px; text-align: center; display: flex;\">\r\n <span><mat-icon>info</mat-icon></span>\r\n <span>\r\n No account segments are currently configured.\r\n Please configure account segments to proceed.\r\n </span>\r\n </section>\r\n </ng-container>\r\n </ng-container>\r\n } @placeholder {\r\n <div class=\"table-container\">\r\n <p class=\"text-gray-500\">Loading data...</p>\r\n </div>\r\n }\r\n\r\n @loading (minimum 100ms) {\r\n <div class=\"flex justify-center items-center h-64\">\r\n <mat-progress-spinner mode=\"indeterminate\"></mat-progress-spinner>\r\n </div>\r\n } @error {\r\n <div class=\"table-container\">\r\n <p class=\"text-red-500\">Error loading data. Please try again.</p>\r\n </div>\r\n }\r\n }\r\n\r\n</section>\r\n\r\n<mat-menu #inputMenu=\"matMenu\">\r\n <ng-template matMenuContent let-innerInput=\"innerInput\">\r\n\r\n\r\n <button [matTooltip]=\"'Edit Input: ' +innerInput.label \" (click)=\"editInput(innerInput)\"\r\n mat-icon-button>\r\n <mat-icon>\r\n edit\r\n </mat-icon>\r\n\r\n </button>\r\n @if(!!inputWillBeRemovedIn(innerInput.id) ){\r\n <button (mouseover)=\"overId = innerInput.id\" (mouseout)=\"overId = null\"\r\n (click)=\"removeInput(innerInput)\" color=\"warn\" mat-stroked-button>\r\n <div style=\"display: flex; align-items: center;\">\r\n <mat-progress-spinner style=\"margin-right: 5px;\" color=\"primary\" class=\"cancelProgress\"\r\n [value]=\"((inputWillBeRemovedIn(innerInput.id)||0)/5)*100\">\r\n </mat-progress-spinner>\r\n {{overId === innerInput.id ? 'Click to cancel':'Deleting in'}}\r\n {{inputWillBeRemovedIn(innerInput.id)}}\r\n </div>\r\n\r\n </button>\r\n\r\n }@else {\r\n <button [matTooltip]=\"'Delete input ' + innerInput.label \" (click)=\"removeInput(innerInput)\"\r\n mat-icon-button>\r\n\r\n <mat-icon>\r\n delete\r\n </mat-icon>\r\n </button>\r\n }\r\n </ng-template>\r\n</mat-menu>", styles: [".cell-button{height:fit-content;min-height:38px;min-width:100%}.content{padding:8px}.info-box{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px;margin:8px auto auto}\n"] }]
|
|
7172
|
+
}], ctorParameters: () => [{ type: MscoaComponentStore }, { type: i0.Injector }], propDecorators: { onContainerClick: [{
|
|
7173
|
+
type: Output
|
|
7174
|
+
}], inputConfig: [{
|
|
6960
7175
|
type: Input
|
|
6961
7176
|
}], editorMode: [{
|
|
6962
7177
|
type: Input
|
|
@@ -7079,7 +7294,8 @@ class BaseCustomInput {
|
|
|
7079
7294
|
}
|
|
7080
7295
|
}
|
|
7081
7296
|
get errorState() {
|
|
7082
|
-
|
|
7297
|
+
const invalidValue = this.value === null || this.value === undefined || this.value === '';
|
|
7298
|
+
return ((invalidValue && this.required) || !!this.ngControl?.errors) && this.touched;
|
|
7083
7299
|
}
|
|
7084
7300
|
get errors() { return this._errors; }
|
|
7085
7301
|
set errors(err) {
|
|
@@ -7133,28 +7349,6 @@ class BaseCustomInput {
|
|
|
7133
7349
|
this.stateChanges.next();
|
|
7134
7350
|
}
|
|
7135
7351
|
}
|
|
7136
|
-
checkValidationsAndErrors() {
|
|
7137
|
-
const control = this.ngControl?.control;
|
|
7138
|
-
if (!control || !this.touched)
|
|
7139
|
-
return;
|
|
7140
|
-
const errors = { ...control.errors };
|
|
7141
|
-
if (_isEqual(this.errors, errors))
|
|
7142
|
-
return;
|
|
7143
|
-
this.errors = errors;
|
|
7144
|
-
if (this.value && 'required' in errors) {
|
|
7145
|
-
const hasOtherErrors = Object.keys(errors).length > 1;
|
|
7146
|
-
if (!hasOtherErrors) {
|
|
7147
|
-
control.setErrors(null);
|
|
7148
|
-
}
|
|
7149
|
-
else {
|
|
7150
|
-
delete errors['required'];
|
|
7151
|
-
control.setErrors(errors);
|
|
7152
|
-
}
|
|
7153
|
-
}
|
|
7154
|
-
else if (!('required' in errors) && this.required && !this.value) {
|
|
7155
|
-
control.setErrors({ required: true, ...errors });
|
|
7156
|
-
}
|
|
7157
|
-
}
|
|
7158
7352
|
temporaryError(msg) {
|
|
7159
7353
|
// Set the error message
|
|
7160
7354
|
this.errorMessage = msg;
|
|
@@ -7183,7 +7377,7 @@ class BaseCustomInput {
|
|
|
7183
7377
|
return;
|
|
7184
7378
|
this.errors = errors;
|
|
7185
7379
|
const hasIsRequiredError = 'required' in errors;
|
|
7186
|
-
const valueValid = value && control.touched;
|
|
7380
|
+
const valueValid = value !== undefined && value !== '' && value !== null && control.touched;
|
|
7187
7381
|
const hasOtherErrors = Object.keys(errors).length > 1;
|
|
7188
7382
|
if (valueValid) {
|
|
7189
7383
|
if (hasIsRequiredError) {
|
|
@@ -7232,22 +7426,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
7232
7426
|
|
|
7233
7427
|
;
|
|
7234
7428
|
;
|
|
7235
|
-
const customInputConfig$
|
|
7429
|
+
const customInputConfig$f = {
|
|
7236
7430
|
controlType: 'lib-mscoa-reactive-form-field',
|
|
7237
7431
|
nextId: 0
|
|
7238
7432
|
};
|
|
7239
7433
|
class MscoaReactiveFormFieldComponent extends BaseCustomInput {
|
|
7240
7434
|
get empty() {
|
|
7241
|
-
return
|
|
7435
|
+
return this.value === null || this.value === undefined || Object.keys(this.value).length === 0;
|
|
7242
7436
|
}
|
|
7243
7437
|
constructor(ngControl, elementRef) {
|
|
7244
|
-
super(ngControl, elementRef, customInputConfig$
|
|
7438
|
+
super(ngControl, elementRef, customInputConfig$f);
|
|
7245
7439
|
this.editorMode = false;
|
|
7246
7440
|
this.mscoaInputConfig$ = new BehaviorSubject(undefined);
|
|
7247
7441
|
}
|
|
7248
7442
|
set inputConfig(inputConfig) {
|
|
7249
7443
|
this._inputConfig = inputConfig;
|
|
7250
|
-
this.mscoaInputConfig$.next({ ...inputConfig.mscoaConfig });
|
|
7444
|
+
this.mscoaInputConfig$.next({ ...inputConfig.mscoaConfig, inputId: inputConfig.id });
|
|
7251
7445
|
}
|
|
7252
7446
|
get shouldLabelFloat() {
|
|
7253
7447
|
return this.focused || !this.empty;
|
|
@@ -7263,12 +7457,48 @@ class MscoaReactiveFormFieldComponent extends BaseCustomInput {
|
|
|
7263
7457
|
get parentFormGroup() {
|
|
7264
7458
|
return this.ngControl?.control?.parent;
|
|
7265
7459
|
}
|
|
7460
|
+
checkValidationsAnErrors() {
|
|
7461
|
+
const { control } = this.ngControl || {};
|
|
7462
|
+
// Early exit if conditions are not met
|
|
7463
|
+
if (!this.required || !control) {
|
|
7464
|
+
return;
|
|
7465
|
+
}
|
|
7466
|
+
const errors = control.errors ?? {};
|
|
7467
|
+
this.errors = errors;
|
|
7468
|
+
const hasIsRequiredError = 'required' in errors;
|
|
7469
|
+
const requiredSegments = this._inputConfig.mscoaConfig.segments;
|
|
7470
|
+
const allSegmentsValid = requiredSegments?.every((segment) => {
|
|
7471
|
+
const key = segment.customSegment || segment.segment;
|
|
7472
|
+
const segmentValue = this.value && key ? this.value[key] : undefined;
|
|
7473
|
+
return segmentValue !== undefined && segmentValue !== null;
|
|
7474
|
+
});
|
|
7475
|
+
const valueValid = Boolean(allSegmentsValid);
|
|
7476
|
+
const hasOtherErrors = Object.keys(errors).length > 1;
|
|
7477
|
+
if (valueValid === true && hasIsRequiredError) {
|
|
7478
|
+
// Only update errors if there are other errors besides 'required'
|
|
7479
|
+
if (hasOtherErrors) {
|
|
7480
|
+
delete errors['required'];
|
|
7481
|
+
control.setErrors(errors);
|
|
7482
|
+
}
|
|
7483
|
+
else {
|
|
7484
|
+
control.setErrors(null);
|
|
7485
|
+
}
|
|
7486
|
+
}
|
|
7487
|
+
else if (!hasIsRequiredError && valueValid === false) {
|
|
7488
|
+
// Only add 'required' error if it's not already present
|
|
7489
|
+
console.error("Required was set to true but the value is not valid", valueValid, this.value, errors);
|
|
7490
|
+
control.setErrors({ required: true, ...errors });
|
|
7491
|
+
}
|
|
7492
|
+
}
|
|
7266
7493
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MscoaReactiveFormFieldComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7267
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: MscoaReactiveFormFieldComponent, isStandalone: true, selector: "lib-mscoa-reactive-form-field", inputs: { formBuilderFunctions: "formBuilderFunctions", editorMode: "editorMode", inputConfig: "inputConfig" }, providers: [{ provide: MatFormFieldControl, useExisting: MscoaReactiveFormFieldComponent }], usesInheritance: true, ngImport: i0, template: "\r\n<div (click)=\"onContainerClick($event)\">\r\n <app-mscoa-chart \r\n (segmentValuesChanged)=\"segmentValuesChanged($event)\" \r\n [config]=\"mscoaInputConfig$|async\"\r\n [inputConfig]=\"_inputConfig \"\r\n [readonly]=\"readonly\"\r\n [editorMode]=\"editorMode\"\r\n [formGroup]=\"parentFormGroup\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\"\r\n [segmentValues]=\"value\"></app-mscoa-chart>\r\n \r\n\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "component", type: MscoaChartComponent, selector: "app-mscoa-chart", inputs: ["inputConfig", "editorMode", "formBuilderFunctions", "segmentValues", "readonly", "config", "formGroup"], outputs: ["segmentValuesChanged", "interaction"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2$2.AsyncPipe, name: "async" }] }); }
|
|
7494
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: MscoaReactiveFormFieldComponent, isStandalone: true, selector: "lib-mscoa-reactive-form-field", inputs: { formBuilderFunctions: "formBuilderFunctions", editorMode: "editorMode", inputConfig: "inputConfig" }, host: { properties: { "lib-mscoa-reactive-form-field.floating": "shouldLabelFloat", "id": "id" } }, providers: [{ provide: MatFormFieldControl, useExisting: MscoaReactiveFormFieldComponent }], usesInheritance: true, ngImport: i0, template: "\r\n<div (click)=\"onContainerClick($event)\">\r\n <app-mscoa-chart \r\n (onContainerClick)=\"onContainerClick($event)\"\r\n (segmentValuesChanged)=\"segmentValuesChanged($event)\" \r\n [config]=\"mscoaInputConfig$|async\"\r\n [inputConfig]=\"_inputConfig \"\r\n [readonly]=\"readonly\"\r\n [editorMode]=\"editorMode\"\r\n [formGroup]=\"parentFormGroup\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\"\r\n [segmentValues]=\"value\"></app-mscoa-chart>\r\n \r\n\r\n</div>\r\n\r\n", styles: [""], dependencies: [{ kind: "component", type: MscoaChartComponent, selector: "app-mscoa-chart", inputs: ["inputConfig", "editorMode", "formBuilderFunctions", "segmentValues", "readonly", "config", "formGroup"], outputs: ["onContainerClick", "segmentValuesChanged", "interaction"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2$2.AsyncPipe, name: "async" }] }); }
|
|
7268
7495
|
}
|
|
7269
7496
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MscoaReactiveFormFieldComponent, decorators: [{
|
|
7270
7497
|
type: Component,
|
|
7271
|
-
args: [{ selector: 'lib-mscoa-reactive-form-field', standalone: true, imports: [MscoaChartComponent, CommonModule],
|
|
7498
|
+
args: [{ selector: 'lib-mscoa-reactive-form-field', standalone: true, imports: [MscoaChartComponent, CommonModule], host: {
|
|
7499
|
+
'[lib-mscoa-reactive-form-field.floating]': 'shouldLabelFloat',
|
|
7500
|
+
'[id]': 'id',
|
|
7501
|
+
}, providers: [{ provide: MatFormFieldControl, useExisting: MscoaReactiveFormFieldComponent }], template: "\r\n<div (click)=\"onContainerClick($event)\">\r\n <app-mscoa-chart \r\n (onContainerClick)=\"onContainerClick($event)\"\r\n (segmentValuesChanged)=\"segmentValuesChanged($event)\" \r\n [config]=\"mscoaInputConfig$|async\"\r\n [inputConfig]=\"_inputConfig \"\r\n [readonly]=\"readonly\"\r\n [editorMode]=\"editorMode\"\r\n [formGroup]=\"parentFormGroup\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\"\r\n [segmentValues]=\"value\"></app-mscoa-chart>\r\n \r\n\r\n</div>\r\n\r\n" }]
|
|
7272
7502
|
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
7273
7503
|
type: Optional
|
|
7274
7504
|
}, {
|
|
@@ -7289,8 +7519,8 @@ function getInputErrorMessage(inputConfig, formGroup) {
|
|
|
7289
7519
|
if (!startDateControl || !endDateControl) {
|
|
7290
7520
|
return `Start/End Form control is not found`;
|
|
7291
7521
|
}
|
|
7292
|
-
const startControl = formGroup.controls[startDateControl];
|
|
7293
|
-
const endControl = formGroup.controls[endDateControl];
|
|
7522
|
+
const startControl = formGroup.controls[`${inputConfig.id}.${startDateControl}`] || formGroup.controls[startDateControl];
|
|
7523
|
+
const endControl = formGroup.controls[`${inputConfig.id}.${endDateControl}`] || formGroup.controls[endDateControl];
|
|
7294
7524
|
return returnError({
|
|
7295
7525
|
...startControl?.errors,
|
|
7296
7526
|
...endControl?.errors
|
|
@@ -7327,18 +7557,12 @@ function getInputErrorMessage(inputConfig, formGroup) {
|
|
|
7327
7557
|
class MscoaFormInputComponent {
|
|
7328
7558
|
constructor() {
|
|
7329
7559
|
this.editorMode = false;
|
|
7330
|
-
this.valueChange = new EventEmitter();
|
|
7331
|
-
}
|
|
7332
|
-
segmentValuesChanged(event) {
|
|
7333
|
-
if (this.inputConfig.readonly)
|
|
7334
|
-
return;
|
|
7335
|
-
this.valueChange.emit(event);
|
|
7336
7560
|
}
|
|
7337
7561
|
get errorMessage() {
|
|
7338
7562
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
7339
7563
|
}
|
|
7340
7564
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MscoaFormInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7341
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MscoaFormInputComponent, isStandalone: true, selector: "lib-mscoa-form-input", inputs: { inputConfig: "inputConfig", editorMode: "editorMode", formGroup: "formGroup", formBuilderFunctions: "formBuilderFunctions" },
|
|
7565
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MscoaFormInputComponent, isStandalone: true, selector: "lib-mscoa-form-input", inputs: { inputConfig: "inputConfig", editorMode: "editorMode", formGroup: "formGroup", formBuilderFunctions: "formBuilderFunctions" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field \r\n\r\n [appearance]=\"this.inputConfig.appearance ||'fill' \"\r\n [floatLabel]=\"'always'\"\r\n subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status \r\n [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <mat-card style=\"overflow:auto\">\r\n <lib-mscoa-reactive-form-field \r\n [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n [required]=\"this.inputConfig.required\"\r\n [formGroup]=\"formGroup\"\r\n [editorMode]=\"editorMode\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\"\r\n ></lib-mscoa-reactive-form-field>\r\n \r\n </mat-card>\r\n \r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n </mat-form-field>\r\n\r\n\r\n \r\n \r\n \r\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "component", type: MscoaReactiveFormFieldComponent, selector: "lib-mscoa-reactive-form-field", inputs: ["formBuilderFunctions", "editorMode", "inputConfig"] }] }); }
|
|
7342
7566
|
}
|
|
7343
7567
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MscoaFormInputComponent, decorators: [{
|
|
7344
7568
|
type: Component,
|
|
@@ -7348,7 +7572,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
7348
7572
|
ReactiveFormsModule,
|
|
7349
7573
|
TFormInputStatusComponent,
|
|
7350
7574
|
MscoaReactiveFormFieldComponent
|
|
7351
|
-
], template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field \r\n\r\n [appearance]=\"this.inputConfig.appearance ||'fill' \"\r\n [floatLabel]=\"'always'\"\r\n subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status \r\n [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <mat-card style=\"overflow:auto\">\r\n <lib-mscoa-reactive-form-field \r\n [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n [formGroup]=\"formGroup\"\r\n [editorMode]=\"editorMode\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\"\r\n ></lib-mscoa-reactive-form-field>\r\n \r\n </mat-card>\r\n \r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n </mat-form-field>\r\n\r\n\r\n \r\n \r\n \r\n", styles: ["mat-form-field{width:100%}\n"] }]
|
|
7575
|
+
], template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field \r\n\r\n [appearance]=\"this.inputConfig.appearance ||'fill' \"\r\n [floatLabel]=\"'always'\"\r\n subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status \r\n [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <mat-card style=\"overflow:auto\">\r\n <lib-mscoa-reactive-form-field \r\n [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n [required]=\"this.inputConfig.required\"\r\n [formGroup]=\"formGroup\"\r\n [editorMode]=\"editorMode\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\"\r\n ></lib-mscoa-reactive-form-field>\r\n \r\n </mat-card>\r\n \r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n </mat-form-field>\r\n\r\n\r\n \r\n \r\n \r\n", styles: ["mat-form-field{width:100%}\n"] }]
|
|
7352
7576
|
}], propDecorators: { inputConfig: [{
|
|
7353
7577
|
type: Input
|
|
7354
7578
|
}], editorMode: [{
|
|
@@ -7357,8 +7581,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
7357
7581
|
type: Input
|
|
7358
7582
|
}], formBuilderFunctions: [{
|
|
7359
7583
|
type: Input
|
|
7360
|
-
}], valueChange: [{
|
|
7361
|
-
type: Output
|
|
7362
7584
|
}] } });
|
|
7363
7585
|
|
|
7364
7586
|
const SignatureConfigOptions = {
|
|
@@ -7477,7 +7699,7 @@ const generateSecretKey = async (input) => {
|
|
|
7477
7699
|
|
|
7478
7700
|
;
|
|
7479
7701
|
;
|
|
7480
|
-
const customInputConfig$
|
|
7702
|
+
const customInputConfig$e = {
|
|
7481
7703
|
controlType: 'lib-signature-pad-input',
|
|
7482
7704
|
nextId: 0
|
|
7483
7705
|
};
|
|
@@ -7489,7 +7711,7 @@ class SignaturePadInputComponent extends BaseCustomInput {
|
|
|
7489
7711
|
return true;
|
|
7490
7712
|
}
|
|
7491
7713
|
constructor(ngControl, elementRef, cdr, ngZone) {
|
|
7492
|
-
super(ngControl, elementRef, customInputConfig$
|
|
7714
|
+
super(ngControl, elementRef, customInputConfig$e);
|
|
7493
7715
|
this.cdr = cdr;
|
|
7494
7716
|
this.ngZone = ngZone;
|
|
7495
7717
|
this.NGX_T_FORMS_CONFIG = inject(NGX_T_FORMS_CONFIG_TOKEN);
|
|
@@ -7716,30 +7938,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
7716
7938
|
}] } });
|
|
7717
7939
|
|
|
7718
7940
|
class SignatureInputElementComponent {
|
|
7719
|
-
constructor() {
|
|
7720
|
-
this.valueChange = new EventEmitter();
|
|
7721
|
-
}
|
|
7722
|
-
changed($event) {
|
|
7723
|
-
this.valueChange.emit($event);
|
|
7724
|
-
}
|
|
7725
7941
|
get errorMessage() {
|
|
7726
7942
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
7727
7943
|
}
|
|
7728
7944
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SignatureInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7729
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: SignatureInputElementComponent, isStandalone: true, selector: "lib-signature-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
7945
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: SignatureInputElementComponent, isStandalone: true, selector: "lib-signature-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field \r\n [appearance]=\"this.inputConfig.appearance ||'fill' \"\r\n [floatLabel]=\"'always'\"\r\n subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-signature-pad-input [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"inputConfig.id\"></lib-signature-pad-input>\r\n <!-- <app-signature-input [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"inputConfig.id\"></app-signature-input>\r\n -->\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n } \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n \r\n\r\n </mat-form-field>\r\n</form>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: SignaturePadInputComponent, selector: "lib-signature-pad-input", inputs: ["inputConfig"] }] }); }
|
|
7730
7946
|
}
|
|
7731
7947
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SignatureInputElementComponent, decorators: [{
|
|
7732
7948
|
type: Component,
|
|
7733
7949
|
args: [{ selector: 'lib-signature-input-element', standalone: true, imports: [MatModulesModule,
|
|
7734
7950
|
TFormInputStatusComponent,
|
|
7735
7951
|
CommonModule,
|
|
7736
|
-
ReactiveFormsModule, SignaturePadInputComponent], template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field \r\n [appearance]=\"this.inputConfig.appearance ||'fill' \"\r\n [floatLabel]=\"'always'\"\r\n subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-signature-pad-input [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"inputConfig.id\"></lib-signature-pad-input>\r\n <!-- <app-signature-input [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"inputConfig.id\"></app-signature-input>\r\n -->\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n } \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n \r\n\r\n </mat-form-field>\r\n</form>", styles: ["mat-form-field{width:100%}\n"] }]
|
|
7952
|
+
ReactiveFormsModule, SignaturePadInputComponent], template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field \r\n [appearance]=\"this.inputConfig.appearance ||'fill' \"\r\n [floatLabel]=\"'always'\"\r\n subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-signature-pad-input [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"inputConfig.id\"></lib-signature-pad-input>\r\n <!-- <app-signature-input [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"inputConfig.id\"></app-signature-input>\r\n -->\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n } \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n \r\n\r\n </mat-form-field>\r\n</form>", styles: ["mat-form-field{width:100%}\n"] }]
|
|
7737
7953
|
}], propDecorators: { inputConfig: [{
|
|
7738
7954
|
type: Input
|
|
7739
7955
|
}], formGroup: [{
|
|
7740
7956
|
type: Input
|
|
7741
|
-
}], valueChange: [{
|
|
7742
|
-
type: Output
|
|
7743
7957
|
}] } });
|
|
7744
7958
|
|
|
7745
7959
|
class SectionTitleComponent {
|
|
@@ -7753,41 +7967,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
7753
7967
|
type: Input
|
|
7754
7968
|
}] } });
|
|
7755
7969
|
|
|
7756
|
-
|
|
7757
|
-
|
|
7758
|
-
|
|
7970
|
+
const customInputConfig$d = {
|
|
7971
|
+
controlType: 'lib-auto-complet-reactive-input',
|
|
7972
|
+
nextId: 0
|
|
7973
|
+
};
|
|
7974
|
+
class AutoCompletReactiveInputComponent extends BaseCustomInput {
|
|
7975
|
+
get empty() {
|
|
7976
|
+
return !this.value;
|
|
7977
|
+
}
|
|
7978
|
+
get shouldLabelFloat() {
|
|
7979
|
+
return true;
|
|
7980
|
+
}
|
|
7981
|
+
constructor(ngControl, elementRef) {
|
|
7982
|
+
super(ngControl, elementRef, customInputConfig$d);
|
|
7983
|
+
this.debounceTime = 300;
|
|
7984
|
+
this.valueSubject = new Subject();
|
|
7985
|
+
}
|
|
7986
|
+
ngOnInit() {
|
|
7987
|
+
this.valueSubject.pipe(debounceTime(this.debounceTime), takeUntil(this.destroy$)).subscribe(event => {
|
|
7988
|
+
this.value = event.target.value;
|
|
7989
|
+
this.stateChanges.next();
|
|
7990
|
+
this.onChange(this.value);
|
|
7991
|
+
});
|
|
7759
7992
|
}
|
|
7760
|
-
|
|
7761
|
-
this.
|
|
7993
|
+
onInputChange($event) {
|
|
7994
|
+
this.valueSubject.next($event);
|
|
7762
7995
|
}
|
|
7996
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: AutoCompletReactiveInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7997
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: AutoCompletReactiveInputComponent, isStandalone: true, selector: "lib-auto-complet-reactive-input", inputs: { auto: "auto", inputConfig: "inputConfig" }, host: { properties: { "lib-auto-complet-reactive-input": "shouldLabelFloat", "id": "id" } }, providers: [{ provide: MatFormFieldControl, useExisting: AutoCompletReactiveInputComponent }], usesInheritance: true, ngImport: i0, template: "<input [readonly]=\"this.inputConfig?.readonly\" [pattern]=\"this.inputConfig?.pattern || ''\"\r\n [required]=\"!!this.inputConfig?.required\" [attr.maxlength]=\"this.inputConfig?.maxLength\"\r\n [attr.minlength]=\"this.inputConfig?.minLength\"\r\n [type]=\"this.inputConfig?.type||'text'\" \r\n (input)=\"onInputChange($event)\"\r\n [value]=\"value\"\r\n\r\n [min]=\"this.inputConfig?.min\" [max]=\"this.inputConfig?.max\" autocomplete=\"on\"\r\n [matAutocomplete]=\"auto\"\r\n matInput />", styles: [""], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "directive", type: i2$3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i12.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: ReactiveFormsModule }] }); }
|
|
7998
|
+
}
|
|
7999
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: AutoCompletReactiveInputComponent, decorators: [{
|
|
8000
|
+
type: Component,
|
|
8001
|
+
args: [{ selector: 'lib-auto-complet-reactive-input', imports: [
|
|
8002
|
+
MatModulesModule,
|
|
8003
|
+
ReactiveFormsModule,
|
|
8004
|
+
], host: {
|
|
8005
|
+
'[lib-auto-complet-reactive-input]': 'shouldLabelFloat',
|
|
8006
|
+
'[id]': 'id',
|
|
8007
|
+
}, providers: [{ provide: MatFormFieldControl, useExisting: AutoCompletReactiveInputComponent }], template: "<input [readonly]=\"this.inputConfig?.readonly\" [pattern]=\"this.inputConfig?.pattern || ''\"\r\n [required]=\"!!this.inputConfig?.required\" [attr.maxlength]=\"this.inputConfig?.maxLength\"\r\n [attr.minlength]=\"this.inputConfig?.minLength\"\r\n [type]=\"this.inputConfig?.type||'text'\" \r\n (input)=\"onInputChange($event)\"\r\n [value]=\"value\"\r\n\r\n [min]=\"this.inputConfig?.min\" [max]=\"this.inputConfig?.max\" autocomplete=\"on\"\r\n [matAutocomplete]=\"auto\"\r\n matInput />" }]
|
|
8008
|
+
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
8009
|
+
type: Optional
|
|
8010
|
+
}, {
|
|
8011
|
+
type: Self
|
|
8012
|
+
}] }, { type: i0.ElementRef }], propDecorators: { auto: [{
|
|
8013
|
+
type: Input
|
|
8014
|
+
}], inputConfig: [{
|
|
8015
|
+
type: Input
|
|
8016
|
+
}] } });
|
|
8017
|
+
|
|
8018
|
+
class AutoCompleteInputElementComponent {
|
|
7763
8019
|
get errorMessage() {
|
|
7764
8020
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
7765
8021
|
}
|
|
7766
8022
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: AutoCompleteInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7767
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: AutoCompleteInputElementComponent, isStandalone: true, selector: "lib-auto-complete-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup", options: "options" },
|
|
8023
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: AutoCompleteInputElementComponent, isStandalone: true, selector: "lib-auto-complete-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup", options: "options" }, ngImport: i0, template: "\r\n<form [formGroup]=\"formGroup\">\r\n\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-auto-complet-reactive-input\r\n [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n [auto]=\"auto\"\r\n ></lib-auto-complet-reactive-input>\r\n \r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n @for (option of options ; track option.id) {\r\n <mat-option [value]=\"option.value\">{{option.label}}</mat-option>\r\n }\r\n \r\n </mat-autocomplete>\r\n\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint [matTooltip]=\"inputConfig.hintLabel ||''\" class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n \r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n \r\n \r\n </mat-form-field>\r\n</form>\r\n\r\n", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2$3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AutoCompletReactiveInputComponent, selector: "lib-auto-complet-reactive-input", inputs: ["auto", "inputConfig"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }] }); }
|
|
7768
8024
|
}
|
|
7769
8025
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: AutoCompleteInputElementComponent, decorators: [{
|
|
7770
8026
|
type: Component,
|
|
7771
|
-
args: [{ selector: 'lib-auto-complete-input-element', standalone: true, imports: [MatModulesModule, ReactiveFormsModule, CommonModule,
|
|
8027
|
+
args: [{ selector: 'lib-auto-complete-input-element', standalone: true, imports: [MatModulesModule, ReactiveFormsModule, CommonModule,
|
|
8028
|
+
AutoCompletReactiveInputComponent,
|
|
8029
|
+
TFormInputStatusComponent], template: "\r\n<form [formGroup]=\"formGroup\">\r\n\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-auto-complet-reactive-input\r\n [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n [auto]=\"auto\"\r\n ></lib-auto-complet-reactive-input>\r\n \r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n @for (option of options ; track option.id) {\r\n <mat-option [value]=\"option.value\">{{option.label}}</mat-option>\r\n }\r\n \r\n </mat-autocomplete>\r\n\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint [matTooltip]=\"inputConfig.hintLabel ||''\" class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n \r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n \r\n \r\n </mat-form-field>\r\n</form>\r\n\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
7772
8030
|
}], propDecorators: { inputConfig: [{
|
|
7773
8031
|
type: Input
|
|
7774
8032
|
}], formGroup: [{
|
|
7775
8033
|
type: Input
|
|
7776
8034
|
}], options: [{
|
|
7777
8035
|
type: Input
|
|
7778
|
-
}], valueChange: [{
|
|
7779
|
-
type: Output
|
|
7780
8036
|
}] } });
|
|
7781
8037
|
|
|
7782
8038
|
;
|
|
7783
8039
|
;
|
|
7784
|
-
const customInputConfig$
|
|
8040
|
+
const customInputConfig$c = {
|
|
7785
8041
|
controlType: 'lib-geo-location-form-input',
|
|
7786
8042
|
nextId: 0
|
|
7787
8043
|
};
|
|
7788
8044
|
class ToggleComponent extends BaseCustomInput {
|
|
7789
8045
|
constructor(ngControl, elementRef) {
|
|
7790
|
-
super(ngControl, elementRef, customInputConfig$
|
|
8046
|
+
super(ngControl, elementRef, customInputConfig$c);
|
|
7791
8047
|
}
|
|
7792
8048
|
get empty() {
|
|
7793
8049
|
return !this.value;
|
|
@@ -7800,18 +8056,21 @@ class ToggleComponent extends BaseCustomInput {
|
|
|
7800
8056
|
this.onChange(event.checked);
|
|
7801
8057
|
this.stateChanges.next();
|
|
7802
8058
|
}
|
|
8059
|
+
get isChecked() {
|
|
8060
|
+
return Boolean(this.value);
|
|
8061
|
+
}
|
|
7803
8062
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: ToggleComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7804
8063
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: ToggleComponent, isStandalone: true, selector: "lib-toggle", inputs: { inputConfig: "inputConfig", changed: "changed" }, providers: [{
|
|
7805
8064
|
provide: MatFormFieldControl,
|
|
7806
8065
|
useExisting: forwardRef(() => ToggleComponent)
|
|
7807
|
-
}], usesInheritance: true, ngImport: i0, template: "\r\n<mat-slide-toggle \r\n\r\nstyle=\"display: block\" \r\n[required]=\"this.inputConfig.required\" \r\n[labelPosition]=\"this.inputConfig.labelPosition || 'after'\"\r\n(change)=\"this.changed($event)\"\r\n[checked]=\"
|
|
8066
|
+
}], usesInheritance: true, ngImport: i0, template: "\r\n<mat-slide-toggle \r\n\r\nstyle=\"display: block\" \r\n[required]=\"this.inputConfig.required\" \r\n[labelPosition]=\"this.inputConfig.labelPosition || 'after'\"\r\n(change)=\"this.changed($event)\"\r\n[checked]=\"isChecked\"\r\n[ariaReadOnly]=\"this.inputConfig.disabled\"\r\n[disabled]=\"this.inputConfig.disabled\"\r\n>\r\n{{this.inputConfig.label | titlecase }}</mat-slide-toggle>", styles: [""], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2$4.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2$2.TitleCasePipe, name: "titlecase" }] }); }
|
|
7808
8067
|
}
|
|
7809
8068
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: ToggleComponent, decorators: [{
|
|
7810
8069
|
type: Component,
|
|
7811
8070
|
args: [{ selector: 'lib-toggle', standalone: true, imports: [MatModulesModule, CommonModule], providers: [{
|
|
7812
8071
|
provide: MatFormFieldControl,
|
|
7813
8072
|
useExisting: forwardRef(() => ToggleComponent)
|
|
7814
|
-
}], template: "\r\n<mat-slide-toggle \r\n\r\nstyle=\"display: block\" \r\n[required]=\"this.inputConfig.required\" \r\n[labelPosition]=\"this.inputConfig.labelPosition || 'after'\"\r\n(change)=\"this.changed($event)\"\r\n[checked]=\"
|
|
8073
|
+
}], template: "\r\n<mat-slide-toggle \r\n\r\nstyle=\"display: block\" \r\n[required]=\"this.inputConfig.required\" \r\n[labelPosition]=\"this.inputConfig.labelPosition || 'after'\"\r\n(change)=\"this.changed($event)\"\r\n[checked]=\"isChecked\"\r\n[ariaReadOnly]=\"this.inputConfig.disabled\"\r\n[disabled]=\"this.inputConfig.disabled\"\r\n>\r\n{{this.inputConfig.label | titlecase }}</mat-slide-toggle>" }]
|
|
7815
8074
|
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
7816
8075
|
type: Optional
|
|
7817
8076
|
}, {
|
|
@@ -7823,39 +8082,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
7823
8082
|
}] } });
|
|
7824
8083
|
|
|
7825
8084
|
class ToggleInputElementComponent {
|
|
7826
|
-
constructor() {
|
|
7827
|
-
this.valueChange = new EventEmitter();
|
|
7828
|
-
}
|
|
7829
|
-
changed($event) {
|
|
7830
|
-
this.valueChange.emit($event);
|
|
7831
|
-
}
|
|
7832
8085
|
get errorMessage() {
|
|
7833
8086
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
7834
8087
|
}
|
|
7835
8088
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: ToggleInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7836
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: ToggleInputElementComponent, isStandalone: true, selector: "lib-toggle-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
8089
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: ToggleInputElementComponent, isStandalone: true, selector: "lib-toggle-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, ngImport: i0, template: "\r\n<form [formGroup]=\"formGroup\" >\r\n <mat-form-field \r\n [appearance]=\"this.inputConfig.appearance ||'fill' \"\r\n floatLabel=\"always\"\r\n subscriptSizing=\"dynamic\"\r\n *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n toggle to select\r\n \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n<lib-toggle [inputConfig]=\"this.inputConfig\"\r\n[required]=\"this.inputConfig.required\"\r\n[formControlName]=\"inputConfig.id\" ></lib-toggle>\r\n \r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n } \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n</form>\r\n", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToggleComponent, selector: "lib-toggle", inputs: ["inputConfig", "changed"] }] }); }
|
|
7837
8090
|
}
|
|
7838
8091
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: ToggleInputElementComponent, decorators: [{
|
|
7839
8092
|
type: Component,
|
|
7840
8093
|
args: [{ selector: 'lib-toggle-input-element', standalone: true, imports: [MatModulesModule, ReactiveFormsModule, TFormInputStatusComponent,
|
|
7841
8094
|
CommonModule,
|
|
7842
8095
|
ToggleComponent
|
|
7843
|
-
], template: "\r\n<form [formGroup]=\"formGroup\" >\r\n <mat-form-field \r\n [appearance]=\"this.inputConfig.appearance ||'fill' \"\r\n floatLabel=\"always\"\r\n subscriptSizing=\"dynamic\"\r\n *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n toggle to select\r\n \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n<lib-toggle [inputConfig]=\"this.inputConfig\"\r\n[formControlName]=\"inputConfig.id\" ></lib-toggle>\r\n \r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n } \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n</form>\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
8096
|
+
], template: "\r\n<form [formGroup]=\"formGroup\" >\r\n <mat-form-field \r\n [appearance]=\"this.inputConfig.appearance ||'fill' \"\r\n floatLabel=\"always\"\r\n subscriptSizing=\"dynamic\"\r\n *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n toggle to select\r\n \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n<lib-toggle [inputConfig]=\"this.inputConfig\"\r\n[required]=\"this.inputConfig.required\"\r\n[formControlName]=\"inputConfig.id\" ></lib-toggle>\r\n \r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n } \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n</form>\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
7844
8097
|
}], propDecorators: { inputConfig: [{
|
|
7845
8098
|
type: Input
|
|
7846
8099
|
}], formGroup: [{
|
|
7847
8100
|
type: Input
|
|
7848
|
-
}], valueChange: [{
|
|
7849
|
-
type: Output
|
|
7850
8101
|
}] } });
|
|
7851
8102
|
|
|
7852
|
-
const customInputConfig$
|
|
8103
|
+
const customInputConfig$b = {
|
|
7853
8104
|
controlType: 'lib-input-custom',
|
|
7854
8105
|
nextId: 0
|
|
7855
8106
|
};
|
|
7856
8107
|
class SelectInputComponent extends BaseCustomInput {
|
|
7857
8108
|
constructor(ngControl, elementRef) {
|
|
7858
|
-
super(ngControl, elementRef, customInputConfig$
|
|
8109
|
+
super(ngControl, elementRef, customInputConfig$b);
|
|
7859
8110
|
this.valueSubject = new Subject();
|
|
7860
8111
|
}
|
|
7861
8112
|
get empty() {
|
|
@@ -7886,15 +8137,18 @@ class SelectInputComponent extends BaseCustomInput {
|
|
|
7886
8137
|
getAvatar(userName) {
|
|
7887
8138
|
return `https://ui-avatars.com/api/?color=EADDFF&font-size=0.36&bold=true&background=random&name=${userName}`;
|
|
7888
8139
|
}
|
|
8140
|
+
get inputControl() {
|
|
8141
|
+
return this.ngControl?.control;
|
|
8142
|
+
}
|
|
7889
8143
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SelectInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7890
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: SelectInputComponent, isStandalone: true, selector: "lib-select-input", inputs: { inputConfig: "inputConfig" }, host: { properties: { "lib-select-input.floating": "shouldLabelFloat", "id": "id" } }, providers: [{ provide: MatFormFieldControl, useExisting: SelectInputComponent }], usesInheritance: true, ngImport: i0, template: "<mat-select #sele \r\n(selectionChange)=\"onSelectionChange($event)\"\r\n \r\n>\r\n\r\n\r\n\r\n@for (option of getSelectOptions(); track option.value) {\r\n <mat-option [value]=\"option.value\">\r\n
|
|
8144
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: SelectInputComponent, isStandalone: true, selector: "lib-select-input", inputs: { inputConfig: "inputConfig" }, host: { properties: { "lib-select-input.floating": "shouldLabelFloat", "id": "id" } }, providers: [{ provide: MatFormFieldControl, useExisting: SelectInputComponent }], usesInheritance: true, ngImport: i0, template: "<mat-select #sele \r\n\r\n(selectionChange)=\"onSelectionChange($event)\"\r\n[value]=\"value\"\r\n \r\n>\r\n\r\n\r\n\r\n@for (option of getSelectOptions(); track option.value) {\r\n <mat-option [value]=\"option.value\" [disabled]=\"this.inputConfig?.readonly\" >\r\n @switch (this.inputConfig?.matOptions?.optionType) {\r\n @case ('user') {\r\n <mat-list-item style=\"padding: 0px;\">\r\n <img matListItemAvatar [src]=\"getAvatar(option.username)\" />\r\n <div matListItemTitle>{{ option.username | titlecase }}</div>\r\n <div matListItemLine> {{ option.email }}</div>\r\n </mat-list-item>\r\n \r\n }\r\n @default {\r\n {{ option.label }}\r\n }\r\n }\r\n \r\n </mat-option>\r\n}\r\n \r\n</mat-select>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2$2.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i6$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i6$1.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "directive", type: i6$1.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i6$1.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i7$1.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: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
7891
8145
|
}
|
|
7892
8146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SelectInputComponent, decorators: [{
|
|
7893
8147
|
type: Component,
|
|
7894
|
-
args: [{ selector: 'lib-select-input', imports: [CommonModule, MatModulesModule], host: {
|
|
8148
|
+
args: [{ selector: 'lib-select-input', imports: [CommonModule, MatModulesModule, ReactiveFormsModule], host: {
|
|
7895
8149
|
'[lib-select-input.floating]': 'shouldLabelFloat',
|
|
7896
8150
|
'[id]': 'id',
|
|
7897
|
-
}, providers: [{ provide: MatFormFieldControl, useExisting: SelectInputComponent }], template: "<mat-select #sele \r\n(selectionChange)=\"onSelectionChange($event)\"\r\n \r\n>\r\n\r\n\r\n\r\n@for (option of getSelectOptions(); track option.value) {\r\n <mat-option [value]=\"option.value\">\r\n
|
|
8151
|
+
}, providers: [{ provide: MatFormFieldControl, useExisting: SelectInputComponent }], template: "<mat-select #sele \r\n\r\n(selectionChange)=\"onSelectionChange($event)\"\r\n[value]=\"value\"\r\n \r\n>\r\n\r\n\r\n\r\n@for (option of getSelectOptions(); track option.value) {\r\n <mat-option [value]=\"option.value\" [disabled]=\"this.inputConfig?.readonly\" >\r\n @switch (this.inputConfig?.matOptions?.optionType) {\r\n @case ('user') {\r\n <mat-list-item style=\"padding: 0px;\">\r\n <img matListItemAvatar [src]=\"getAvatar(option.username)\" />\r\n <div matListItemTitle>{{ option.username | titlecase }}</div>\r\n <div matListItemLine> {{ option.email }}</div>\r\n </mat-list-item>\r\n \r\n }\r\n @default {\r\n {{ option.label }}\r\n }\r\n }\r\n \r\n </mat-option>\r\n}\r\n \r\n</mat-select>\r\n" }]
|
|
7898
8152
|
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
7899
8153
|
type: Optional
|
|
7900
8154
|
}, {
|
|
@@ -7906,16 +8160,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
7906
8160
|
// Add this to your component
|
|
7907
8161
|
class SelectInputElementComponent {
|
|
7908
8162
|
constructor() {
|
|
7909
|
-
this.valueChange = new EventEmitter();
|
|
7910
8163
|
this.errorStateMatcher = new class {
|
|
7911
8164
|
isErrorState(control, form) {
|
|
7912
8165
|
return !!(control && control.invalid && (control.dirty || control.touched));
|
|
7913
8166
|
}
|
|
7914
8167
|
};
|
|
7915
8168
|
}
|
|
7916
|
-
changed($event) {
|
|
7917
|
-
this.valueChange.emit($event);
|
|
7918
|
-
}
|
|
7919
8169
|
getSelectOptions() {
|
|
7920
8170
|
if (!this.inputConfig.matOptions)
|
|
7921
8171
|
return [];
|
|
@@ -7930,93 +8180,255 @@ class SelectInputElementComponent {
|
|
|
7930
8180
|
get errorMessage() {
|
|
7931
8181
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
7932
8182
|
}
|
|
7933
|
-
onSelectionChange(event) {
|
|
7934
|
-
this.valueChange.emit(event.value);
|
|
7935
|
-
}
|
|
7936
8183
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SelectInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7937
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: SelectInputElementComponent, isStandalone: true, selector: "lib-select-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
8184
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: SelectInputElementComponent, isStandalone: true, selector: "lib-select-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, ngImport: i0, template: "<ng-container [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\"\r\n *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }}\r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n\r\n <lib-select-input [inputConfig]=\"this.inputConfig\"\r\n\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"this.inputConfig.id\" >\r\n\r\n </lib-select-input>\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n\r\n\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n\r\n\r\n </mat-form-field>\r\n</ng-container>\r\n", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: SelectInputComponent, selector: "lib-select-input", inputs: ["inputConfig"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }] }); }
|
|
7938
8185
|
}
|
|
7939
8186
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SelectInputElementComponent, decorators: [{
|
|
7940
8187
|
type: Component,
|
|
7941
|
-
args: [{ selector: 'lib-select-input-element', standalone: true, imports: [CommonModule, MatModulesModule, ReactiveFormsModule, SelectInputComponent, TFormInputStatusComponent], template: "<ng-container [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\"\r\n *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }}\r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n\r\n <lib-select-input [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"this.inputConfig.id\" >\r\n\r\n </lib-select-input>\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n\r\n\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n\r\n\r\n </mat-form-field>\r\n</ng-container>\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
8188
|
+
args: [{ selector: 'lib-select-input-element', standalone: true, imports: [CommonModule, MatModulesModule, ReactiveFormsModule, SelectInputComponent, TFormInputStatusComponent], template: "<ng-container [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\"\r\n *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }}\r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n\r\n <lib-select-input [inputConfig]=\"this.inputConfig\"\r\n\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"this.inputConfig.id\" >\r\n\r\n </lib-select-input>\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n\r\n\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n\r\n\r\n </mat-form-field>\r\n</ng-container>\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
7942
8189
|
}], propDecorators: { inputConfig: [{
|
|
7943
8190
|
type: Input
|
|
7944
8191
|
}], formGroup: [{
|
|
7945
8192
|
type: Input
|
|
7946
|
-
}], valueChange: [{
|
|
7947
|
-
type: Output
|
|
7948
8193
|
}] } });
|
|
7949
8194
|
|
|
7950
|
-
|
|
7951
|
-
|
|
7952
|
-
|
|
8195
|
+
const customInputConfig$a = {
|
|
8196
|
+
controlType: 'lib-text-area-reactive-input',
|
|
8197
|
+
nextId: 0
|
|
8198
|
+
};
|
|
8199
|
+
class TextAreaReactiveInputComponent extends BaseCustomInput {
|
|
8200
|
+
get empty() {
|
|
8201
|
+
return !this.value;
|
|
7953
8202
|
}
|
|
7954
|
-
|
|
7955
|
-
|
|
8203
|
+
get shouldLabelFloat() {
|
|
8204
|
+
return true;
|
|
7956
8205
|
}
|
|
8206
|
+
constructor(ngControl, elementRef) {
|
|
8207
|
+
super(ngControl, elementRef, customInputConfig$a);
|
|
8208
|
+
this.debounceTime = 300;
|
|
8209
|
+
this.valueSubject = new Subject();
|
|
8210
|
+
}
|
|
8211
|
+
ngOnInit() {
|
|
8212
|
+
this.valueSubject.pipe(debounceTime(this.debounceTime), takeUntil(this.destroy$)).subscribe(event => {
|
|
8213
|
+
this.value = event.target.value;
|
|
8214
|
+
this.stateChanges.next();
|
|
8215
|
+
this.onChange(this.value);
|
|
8216
|
+
});
|
|
8217
|
+
}
|
|
8218
|
+
onInputChange($event) {
|
|
8219
|
+
this.valueSubject.next($event);
|
|
8220
|
+
}
|
|
8221
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: TextAreaReactiveInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8222
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: TextAreaReactiveInputComponent, isStandalone: true, selector: "lib-text-area-reactive-input", inputs: { auto: "auto", inputConfig: "inputConfig" }, host: { properties: { "lib-text-area-reactive-input": "shouldLabelFloat", "id": "id" } }, providers: [{ provide: MatFormFieldControl, useExisting: TextAreaReactiveInputComponent }], usesInheritance: true, ngImport: i0, template: "\r\n<textarea \r\n [readonly]=\"this.inputConfig?.readonly\"\r\n [required]=\"inputConfig?.required\" \r\n [attr.maxlength]=\"inputConfig?.maxLength\" [attr.minlength]=\"inputConfig?.minLength\"\r\n [rows]=\"inputConfig?.rows\" [spellcheck]=\"inputConfig?.spellcheck\"\r\n [autocapitalize]=\"inputConfig?.autocapitalize\" [autocomplete]=\"inputConfig?.autocomplete\"\r\n (input)=\"onInputChange($event)\" \r\n [placeholder]=\"inputConfig?.placeholder||''\" [wrap]=\"inputConfig?.wrap\" matInput></textarea>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatModulesModule }, { kind: "directive", type: i12.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: ReactiveFormsModule }] }); }
|
|
8223
|
+
}
|
|
8224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: TextAreaReactiveInputComponent, decorators: [{
|
|
8225
|
+
type: Component,
|
|
8226
|
+
args: [{ selector: 'lib-text-area-reactive-input', imports: [CommonModule, MatModulesModule, ReactiveFormsModule], host: {
|
|
8227
|
+
'[lib-text-area-reactive-input]': 'shouldLabelFloat',
|
|
8228
|
+
'[id]': 'id',
|
|
8229
|
+
}, providers: [{ provide: MatFormFieldControl, useExisting: TextAreaReactiveInputComponent }], template: "\r\n<textarea \r\n [readonly]=\"this.inputConfig?.readonly\"\r\n [required]=\"inputConfig?.required\" \r\n [attr.maxlength]=\"inputConfig?.maxLength\" [attr.minlength]=\"inputConfig?.minLength\"\r\n [rows]=\"inputConfig?.rows\" [spellcheck]=\"inputConfig?.spellcheck\"\r\n [autocapitalize]=\"inputConfig?.autocapitalize\" [autocomplete]=\"inputConfig?.autocomplete\"\r\n (input)=\"onInputChange($event)\" \r\n [placeholder]=\"inputConfig?.placeholder||''\" [wrap]=\"inputConfig?.wrap\" matInput></textarea>\r\n" }]
|
|
8230
|
+
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
8231
|
+
type: Optional
|
|
8232
|
+
}, {
|
|
8233
|
+
type: Self
|
|
8234
|
+
}] }, { type: i0.ElementRef }], propDecorators: { auto: [{
|
|
8235
|
+
type: Input
|
|
8236
|
+
}], inputConfig: [{
|
|
8237
|
+
type: Input
|
|
8238
|
+
}] } });
|
|
8239
|
+
|
|
8240
|
+
class TextareaInputElementComponent {
|
|
7957
8241
|
get errorMessage() {
|
|
7958
8242
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
7959
8243
|
}
|
|
7960
8244
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: TextareaInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7961
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: TextareaInputElementComponent, isStandalone: true, selector: "lib-textarea-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
8245
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: TextareaInputElementComponent, isStandalone: true, selector: "lib-textarea-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-text-area-reactive-input [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n\r\n >\r\n\r\n </lib-text-area-reactive-input>\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n </mat-form-field>\r\n</form>\r\n", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "component", type: TextAreaReactiveInputComponent, selector: "lib-text-area-reactive-input", inputs: ["auto", "inputConfig"] }] }); }
|
|
7962
8246
|
}
|
|
7963
8247
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: TextareaInputElementComponent, decorators: [{
|
|
7964
8248
|
type: Component,
|
|
7965
|
-
args: [{ selector: 'lib-textarea-input-element', standalone: true, imports: [ReactiveFormsModule, CommonModule, MatModulesModule, TFormInputStatusComponent], template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n<
|
|
8249
|
+
args: [{ selector: 'lib-textarea-input-element', standalone: true, imports: [ReactiveFormsModule, CommonModule, MatModulesModule, TFormInputStatusComponent, TextAreaReactiveInputComponent], template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-text-area-reactive-input [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n\r\n >\r\n\r\n </lib-text-area-reactive-input>\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n </mat-form-field>\r\n</form>\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
7966
8250
|
}], propDecorators: { inputConfig: [{
|
|
7967
8251
|
type: Input
|
|
7968
8252
|
}], formGroup: [{
|
|
7969
8253
|
type: Input
|
|
7970
|
-
}], valueChange: [{
|
|
7971
|
-
type: Output
|
|
7972
8254
|
}] } });
|
|
7973
8255
|
|
|
7974
|
-
|
|
7975
|
-
|
|
7976
|
-
|
|
8256
|
+
const customInputConfig$9 = {
|
|
8257
|
+
controlType: 'lib-date-range-picker-reactive-input',
|
|
8258
|
+
nextId: 0
|
|
8259
|
+
};
|
|
8260
|
+
class DateRangePickerReactiveInputComponent extends BaseCustomInput {
|
|
8261
|
+
get empty() {
|
|
8262
|
+
return !this.value;
|
|
8263
|
+
}
|
|
8264
|
+
get shouldLabelFloat() {
|
|
8265
|
+
return true;
|
|
8266
|
+
}
|
|
8267
|
+
constructor(ngControl, elementRef) {
|
|
8268
|
+
super(ngControl, elementRef, customInputConfig$9);
|
|
8269
|
+
}
|
|
8270
|
+
get startDateControl() {
|
|
8271
|
+
return this.parentFormGroup?.controls[`${this.inputConfig?.id}.${this.inputConfig?.startDateControl}`];
|
|
7977
8272
|
}
|
|
8273
|
+
get endDateControl() {
|
|
8274
|
+
return this.parentFormGroup?.controls[`${this.inputConfig?.id}.${this.inputConfig?.endDateControl}`];
|
|
8275
|
+
}
|
|
8276
|
+
get parentFormGroup() {
|
|
8277
|
+
return this.ngControl?.control?.parent;
|
|
8278
|
+
}
|
|
8279
|
+
checkValidationsAnErrors() {
|
|
8280
|
+
const control = this.ngControl?.control;
|
|
8281
|
+
if (!control || !this.touched)
|
|
8282
|
+
return;
|
|
8283
|
+
const errors = { ...control.errors };
|
|
8284
|
+
this.errors = errors;
|
|
8285
|
+
const validStartDate = this.startDateControl?.valid;
|
|
8286
|
+
const validEndDate = this.endDateControl?.valid;
|
|
8287
|
+
if (validStartDate && validEndDate && 'required' in errors) {
|
|
8288
|
+
const hasOtherErrors = Object.keys(errors).length > 1;
|
|
8289
|
+
if (!hasOtherErrors) {
|
|
8290
|
+
control.setErrors(null);
|
|
8291
|
+
}
|
|
8292
|
+
else {
|
|
8293
|
+
delete errors['required'];
|
|
8294
|
+
control.setErrors(errors);
|
|
8295
|
+
}
|
|
8296
|
+
}
|
|
8297
|
+
else if (!('required' in errors) && this.required && !validStartDate || !('required' in errors) && this.required && !validEndDate) {
|
|
8298
|
+
control.setErrors({ required: true, ...errors });
|
|
8299
|
+
}
|
|
8300
|
+
}
|
|
8301
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: DateRangePickerReactiveInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8302
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: DateRangePickerReactiveInputComponent, isStandalone: true, selector: "lib-date-range-picker-reactive-input", inputs: { inputConfig: "inputConfig" }, host: { properties: { "lib-date-picker-reactive-input": "shouldLabelFloat", "id": "id" } }, providers: [{ provide: MatFormFieldControl, useExisting: DateRangePickerReactiveInputComponent }], usesInheritance: true, ngImport: i0, template: "", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatModulesModule }] }); }
|
|
8303
|
+
}
|
|
8304
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: DateRangePickerReactiveInputComponent, decorators: [{
|
|
8305
|
+
type: Component,
|
|
8306
|
+
args: [{ selector: 'lib-date-range-picker-reactive-input', imports: [CommonModule, MatModulesModule], standalone: true, host: {
|
|
8307
|
+
'[lib-date-picker-reactive-input]': 'shouldLabelFloat',
|
|
8308
|
+
'[id]': 'id',
|
|
8309
|
+
}, providers: [{ provide: MatFormFieldControl, useExisting: DateRangePickerReactiveInputComponent }], template: "" }]
|
|
8310
|
+
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
8311
|
+
type: Optional
|
|
8312
|
+
}, {
|
|
8313
|
+
type: Self
|
|
8314
|
+
}] }, { type: i0.ElementRef }], propDecorators: { inputConfig: [{
|
|
8315
|
+
type: Input
|
|
8316
|
+
}] } });
|
|
8317
|
+
|
|
8318
|
+
class DateRangePickerInputElementComponent {
|
|
8319
|
+
/**
|
|
8320
|
+
* Get the appropriate error message for this input
|
|
8321
|
+
*/
|
|
7978
8322
|
get errorMessage() {
|
|
7979
8323
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
7980
8324
|
}
|
|
8325
|
+
/**
|
|
8326
|
+
* Get the start date control name
|
|
8327
|
+
*/
|
|
8328
|
+
get startControlName() {
|
|
8329
|
+
return this.inputConfig.startDateControl
|
|
8330
|
+
? `${this.inputConfig.id}.${this.inputConfig.startDateControl}`
|
|
8331
|
+
: `${this.inputConfig.id}.startDate`;
|
|
8332
|
+
}
|
|
8333
|
+
/**
|
|
8334
|
+
* Get the end date control name
|
|
8335
|
+
*/
|
|
8336
|
+
get endControlName() {
|
|
8337
|
+
return this.inputConfig.endDateControl
|
|
8338
|
+
? `${this.inputConfig.id}.${this.inputConfig.endDateControl}`
|
|
8339
|
+
: `${this.inputConfig.id}.endDate`;
|
|
8340
|
+
}
|
|
8341
|
+
/**
|
|
8342
|
+
* Check if the start date control has a specific error
|
|
8343
|
+
*/
|
|
8344
|
+
hasStartDateError(errorName) {
|
|
8345
|
+
const control = this.formGroup.get(this.startControlName);
|
|
8346
|
+
return control ? control.hasError(errorName) : false;
|
|
8347
|
+
}
|
|
8348
|
+
/**
|
|
8349
|
+
* Check if the end date control has a specific error
|
|
8350
|
+
*/
|
|
8351
|
+
hasEndDateError(errorName) {
|
|
8352
|
+
const control = this.formGroup.get(this.endControlName);
|
|
8353
|
+
return control ? control.hasError(errorName) : false;
|
|
8354
|
+
}
|
|
7981
8355
|
dateChanged(event, formControlName) {
|
|
7982
|
-
|
|
8356
|
+
// set touched and dirty on the form group
|
|
8357
|
+
const control = this.formGroup.controls[`${this.inputConfig.id}.${formControlName}`];
|
|
8358
|
+
if (control) {
|
|
8359
|
+
control.setValue(event.value);
|
|
8360
|
+
control.updateValueAndValidity();
|
|
8361
|
+
control.markAsTouched();
|
|
8362
|
+
control.markAsDirty();
|
|
8363
|
+
}
|
|
7983
8364
|
}
|
|
7984
8365
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: DateRangePickerInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7985
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: DateRangePickerInputElementComponent, isStandalone: true, selector: "lib-date-range-picker-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
8366
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: DateRangePickerInputElementComponent, isStandalone: true, selector: "lib-date-range-picker-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, providers: [provideNativeDateAdapter()], ngImport: i0, template: "<!-- <mat-form-field [appearance]=\"this.inputConfig.appearance || 'fill'\" floatLabel=\"auto\">\r\n <mat-label></mat-label>\r\n @if(inputConfig.startDateControl && inputConfig.endDateControl) {\r\n <ng-container>\r\n <mat-date-range-input [formGroup]=\"formGroup\" [rangePicker]=\"picker\">\r\n <input matStartDate [formControlName]=\"inputConfig.startDateControl\" placeholder=\"Start date\">\r\n <input matEndDate [formControlName]=\"inputConfig.endDateControl\" placeholder=\"End date\">\r\n </mat-date-range-input>\r\n <mat-hint>{{inputConfig.hintLabel}}</mat-hint>\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n\r\n @if (formGroup.controls[inputConfig.startDateControl]?.hasError('matStartDateInvalid')) {\r\n <mat-error>Invalid start date</mat-error>\r\n }\r\n @if (formGroup.controls[inputConfig.endDateControl]?.hasError('matEndDateInvalid')) {\r\n <mat-error>Invalid end date</mat-error>\r\n }\r\n \r\n @if(!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n</mat-form-field> -->\r\n<form [formGroup]=\"formGroup\">\r\n\r\n\r\n<mat-form-field [appearance]=\"this.inputConfig.appearance || 'fill'\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{inputConfig.label}} <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status></mat-label>\r\n <lib-date-range-picker-reactive-input\r\n [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"inputConfig.id+'.'+inputConfig.endDateControl\" \r\n ></lib-date-range-picker-reactive-input>\r\n\r\n <mat-date-range-input [required]=\"inputConfig.required\" [formGroup]=\"formGroup\" [rangePicker]=\"picker\">\r\n @if (inputConfig.startDateControl) {\r\n <input matStartDate \r\n [formControlName]=\"inputConfig.id+'.'+inputConfig.startDateControl\"\r\n [min]=\"inputConfig.startMinDate\"\r\n [max]=\"inputConfig.startMaxDate\"\r\n [value]=\"formGroup.controls[inputConfig.id+'.'+inputConfig.startDateControl]?.value\"\r\n (dateChange)=\"dateChanged($event, inputConfig.startDateControl)\"\r\n placeholder=\"Start date\">\r\n }\r\n @if (inputConfig.endDateControl) {\r\n <input matEndDate \r\n [formControlName]=\"inputConfig.id+'.'+inputConfig.endDateControl\" \r\n [value]=\"formGroup.controls[inputConfig.id+'.'+inputConfig.endDateControl]?.value\"\r\n placeholder=\"End date\"\r\n [min]=\"inputConfig.endMinDate\" \r\n [max]=\"inputConfig.endMaxDate\"\r\n (dateChange)=\"dateChanged($event, inputConfig.endDateControl)\"\r\n >\r\n }\r\n </mat-date-range-input>\r\n\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker >\r\n <mat-datepicker-actions>\r\n <button mat-button matDatepickerCancel>Cancel</button>\r\n <button mat-raised-button color=\"primary\" matDatepickerApply>Apply</button>\r\n </mat-datepicker-actions>\r\n </mat-date-range-picker>\r\n\r\n\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint [matTooltip]=\"inputConfig.hintLabel ||''\" class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n\r\n </ng-container>\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" >\r\n {{ (formGroup.controls[inputConfig.id]?.value.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n</mat-form-field>\r\n\r\n</form>", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$5.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i3$5.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3$5.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3$5.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3$5.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i3$5.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "directive", type: i3$5.MatDatepickerCancel, selector: "[matDatepickerCancel], [matDateRangePickerCancel]" }, { kind: "directive", type: i3$5.MatDatepickerApply, selector: "[matDatepickerApply], [matDateRangePickerApply]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "component", type: DateRangePickerReactiveInputComponent, selector: "lib-date-range-picker-reactive-input", inputs: ["inputConfig"] }] }); }
|
|
7986
8367
|
}
|
|
7987
8368
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: DateRangePickerInputElementComponent, decorators: [{
|
|
7988
8369
|
type: Component,
|
|
7989
|
-
args: [{ selector: 'lib-date-range-picker-input-element', standalone: true, imports: [CommonModule, MatModulesModule, ReactiveFormsModule, TFormInputStatusComponent], providers: [provideNativeDateAdapter()], template: "<!-- <mat-form-field [appearance]=\"this.inputConfig.appearance || 'fill'\" floatLabel=\"auto\">\r\n <mat-label></mat-label>\r\n @if(inputConfig.startDateControl && inputConfig.endDateControl) {\r\n <ng-container>\r\n <mat-date-range-input [formGroup]=\"formGroup\" [rangePicker]=\"picker\">\r\n <input matStartDate [formControlName]=\"inputConfig.startDateControl\" placeholder=\"Start date\">\r\n <input matEndDate [formControlName]=\"inputConfig.endDateControl\" placeholder=\"End date\">\r\n </mat-date-range-input>\r\n <mat-hint>{{inputConfig.hintLabel}}</mat-hint>\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n\r\n @if (formGroup.controls[inputConfig.startDateControl]?.hasError('matStartDateInvalid')) {\r\n <mat-error>Invalid start date</mat-error>\r\n }\r\n @if (formGroup.controls[inputConfig.endDateControl]?.hasError('matEndDateInvalid')) {\r\n <mat-error>Invalid end date</mat-error>\r\n }\r\n \r\n @if(!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n</mat-form-field> -->\r\n<form [formGroup]=\"formGroup\">\r\n\r\n\r\n<mat-form-field [appearance]=\"this.inputConfig.appearance || 'fill'\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{inputConfig.label}} <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status></mat-label>\r\n <mat-date-range-input [required]=\"inputConfig.required\" [formGroup]=\"formGroup\" [rangePicker]=\"picker\">\r\n @if (inputConfig.startDateControl) {\r\n <input matStartDate \r\n [formControlName]=\"inputConfig.id+'.'+inputConfig.startDateControl\"\r\n [min]=\"inputConfig.startMinDate\"\r\n [max]=\"inputConfig.startMaxDate\"\r\n\r\n (dateChange)=\"dateChanged($event, inputConfig.startDateControl)\"\r\n placeholder=\"Start date\">\r\n }\r\n @if (inputConfig.endDateControl) {\r\n <input matEndDate \r\n [formControlName]=\"inputConfig.id+'.'+inputConfig.endDateControl\" \r\n placeholder=\"End date\"\r\n [min]=\"inputConfig.endMinDate\" \r\n [max]=\"inputConfig.endMaxDate\"\r\n (dateChange)=\"dateChanged($event, inputConfig.endDateControl)\"\r\n >\r\n }\r\n </mat-date-range-input>\r\n\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker>\r\n <mat-datepicker-actions>\r\n <button mat-button matDatepickerCancel>Cancel</button>\r\n <button mat-raised-button color=\"primary\" matDatepickerApply>Apply</button>\r\n </mat-datepicker-actions>\r\n </mat-date-range-picker>\r\n\r\n
|
|
8370
|
+
args: [{ selector: 'lib-date-range-picker-input-element', standalone: true, imports: [CommonModule, MatModulesModule, ReactiveFormsModule, TFormInputStatusComponent, DateRangePickerReactiveInputComponent], providers: [provideNativeDateAdapter()], template: "<!-- <mat-form-field [appearance]=\"this.inputConfig.appearance || 'fill'\" floatLabel=\"auto\">\r\n <mat-label></mat-label>\r\n @if(inputConfig.startDateControl && inputConfig.endDateControl) {\r\n <ng-container>\r\n <mat-date-range-input [formGroup]=\"formGroup\" [rangePicker]=\"picker\">\r\n <input matStartDate [formControlName]=\"inputConfig.startDateControl\" placeholder=\"Start date\">\r\n <input matEndDate [formControlName]=\"inputConfig.endDateControl\" placeholder=\"End date\">\r\n </mat-date-range-input>\r\n <mat-hint>{{inputConfig.hintLabel}}</mat-hint>\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n\r\n @if (formGroup.controls[inputConfig.startDateControl]?.hasError('matStartDateInvalid')) {\r\n <mat-error>Invalid start date</mat-error>\r\n }\r\n @if (formGroup.controls[inputConfig.endDateControl]?.hasError('matEndDateInvalid')) {\r\n <mat-error>Invalid end date</mat-error>\r\n }\r\n \r\n @if(!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n</mat-form-field> -->\r\n<form [formGroup]=\"formGroup\">\r\n\r\n\r\n<mat-form-field [appearance]=\"this.inputConfig.appearance || 'fill'\" subscriptSizing=\"dynamic\">\r\n <mat-label>{{inputConfig.label}} <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status></mat-label>\r\n <lib-date-range-picker-reactive-input\r\n [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"inputConfig.id+'.'+inputConfig.endDateControl\" \r\n ></lib-date-range-picker-reactive-input>\r\n\r\n <mat-date-range-input [required]=\"inputConfig.required\" [formGroup]=\"formGroup\" [rangePicker]=\"picker\">\r\n @if (inputConfig.startDateControl) {\r\n <input matStartDate \r\n [formControlName]=\"inputConfig.id+'.'+inputConfig.startDateControl\"\r\n [min]=\"inputConfig.startMinDate\"\r\n [max]=\"inputConfig.startMaxDate\"\r\n [value]=\"formGroup.controls[inputConfig.id+'.'+inputConfig.startDateControl]?.value\"\r\n (dateChange)=\"dateChanged($event, inputConfig.startDateControl)\"\r\n placeholder=\"Start date\">\r\n }\r\n @if (inputConfig.endDateControl) {\r\n <input matEndDate \r\n [formControlName]=\"inputConfig.id+'.'+inputConfig.endDateControl\" \r\n [value]=\"formGroup.controls[inputConfig.id+'.'+inputConfig.endDateControl]?.value\"\r\n placeholder=\"End date\"\r\n [min]=\"inputConfig.endMinDate\" \r\n [max]=\"inputConfig.endMaxDate\"\r\n (dateChange)=\"dateChanged($event, inputConfig.endDateControl)\"\r\n >\r\n }\r\n </mat-date-range-input>\r\n\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker >\r\n <mat-datepicker-actions>\r\n <button mat-button matDatepickerCancel>Cancel</button>\r\n <button mat-raised-button color=\"primary\" matDatepickerApply>Apply</button>\r\n </mat-datepicker-actions>\r\n </mat-date-range-picker>\r\n\r\n\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint [matTooltip]=\"inputConfig.hintLabel ||''\" class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n\r\n </ng-container>\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" >\r\n {{ (formGroup.controls[inputConfig.id]?.value.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n</mat-form-field>\r\n\r\n</form>", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
7990
8371
|
}], propDecorators: { inputConfig: [{
|
|
7991
8372
|
type: Input
|
|
7992
8373
|
}], formGroup: [{
|
|
7993
8374
|
type: Input
|
|
7994
|
-
}], valueChange: [{
|
|
7995
|
-
type: Output
|
|
7996
8375
|
}] } });
|
|
7997
8376
|
|
|
7998
|
-
|
|
7999
|
-
|
|
8000
|
-
|
|
8377
|
+
const customInputConfig$8 = {
|
|
8378
|
+
controlType: 'lib-auto-complet-reactive-input',
|
|
8379
|
+
nextId: 0
|
|
8380
|
+
};
|
|
8381
|
+
class DatePickerReactiveInputComponent extends BaseCustomInput {
|
|
8382
|
+
get empty() {
|
|
8383
|
+
return !this.value;
|
|
8384
|
+
}
|
|
8385
|
+
get shouldLabelFloat() {
|
|
8386
|
+
return true;
|
|
8387
|
+
}
|
|
8388
|
+
constructor(ngControl, elementRef) {
|
|
8389
|
+
super(ngControl, elementRef, customInputConfig$8);
|
|
8001
8390
|
}
|
|
8002
8391
|
changed(event) {
|
|
8003
|
-
this.
|
|
8392
|
+
this.value = event.value;
|
|
8393
|
+
this.stateChanges.next();
|
|
8394
|
+
this.onChange(this.value);
|
|
8004
8395
|
}
|
|
8396
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: DatePickerReactiveInputComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8397
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: DatePickerReactiveInputComponent, isStandalone: true, selector: "lib-date-picker-reactive-input", inputs: { picker: "picker", inputConfig: "inputConfig" }, host: { properties: { "lib-date-picker-reactive-input": "shouldLabelFloat", "id": "id" } }, providers: [{ provide: MatFormFieldControl, useExisting: DatePickerReactiveInputComponent }], usesInheritance: true, ngImport: i0, template: "<input \r\n[required]=\"inputConfig?.required\" \r\n\r\n[min]=\"inputConfig?.min\" \r\n(dateChange)=\"changed($event)\"\r\n[value]=\"value\"\r\n[max]=\"inputConfig?.max\" matInput \r\n[matDatepicker]=\"picker\" />", styles: [""], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "directive", type: i3$5.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "directive", type: i12.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: ReactiveFormsModule }] }); }
|
|
8398
|
+
}
|
|
8399
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: DatePickerReactiveInputComponent, decorators: [{
|
|
8400
|
+
type: Component,
|
|
8401
|
+
args: [{ selector: 'lib-date-picker-reactive-input', imports: [
|
|
8402
|
+
MatModulesModule,
|
|
8403
|
+
ReactiveFormsModule
|
|
8404
|
+
], host: {
|
|
8405
|
+
'[lib-date-picker-reactive-input]': 'shouldLabelFloat',
|
|
8406
|
+
'[id]': 'id',
|
|
8407
|
+
}, providers: [{ provide: MatFormFieldControl, useExisting: DatePickerReactiveInputComponent }], template: "<input \r\n[required]=\"inputConfig?.required\" \r\n\r\n[min]=\"inputConfig?.min\" \r\n(dateChange)=\"changed($event)\"\r\n[value]=\"value\"\r\n[max]=\"inputConfig?.max\" matInput \r\n[matDatepicker]=\"picker\" />" }]
|
|
8408
|
+
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
8409
|
+
type: Optional
|
|
8410
|
+
}, {
|
|
8411
|
+
type: Self
|
|
8412
|
+
}] }, { type: i0.ElementRef }], propDecorators: { picker: [{
|
|
8413
|
+
type: Input
|
|
8414
|
+
}], inputConfig: [{
|
|
8415
|
+
type: Input
|
|
8416
|
+
}] } });
|
|
8417
|
+
|
|
8418
|
+
class DatePickerInputElementComponent {
|
|
8005
8419
|
get errorMessage() {
|
|
8006
8420
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
8007
8421
|
}
|
|
8008
8422
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: DatePickerInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8009
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: DatePickerInputElementComponent, isStandalone: true, selector: "lib-date-picker-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
8423
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: DatePickerInputElementComponent, isStandalone: true, selector: "lib-date-picker-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, providers: [provideNativeDateAdapter()], ngImport: i0, template: "\r\n\r\n<form [formGroup]=\"formGroup\">\r\n\r\n <mat-form-field \r\n [appearance]=\"this.inputConfig.appearance ||'fill' \" \r\n subscriptSizing=\"dynamic\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-date-picker-reactive-input\r\n [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n [picker]=\"picker\"\r\n \r\n ></lib-date-picker-reactive-input>\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker>\r\n <button mat-button matDatepickerCancel>Cancel</button>\r\n <button mat-raised-button color=\"primary\" matDatepickerApply>Apply</button>\r\n </mat-datepicker>\r\n \r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon \r\n matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n \r\n \r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n </mat-form-field>\r\n</form>", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$5.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "component", type: i3$5.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i3$5.MatDatepickerCancel, selector: "[matDatepickerCancel], [matDateRangePickerCancel]" }, { kind: "directive", type: i3$5.MatDatepickerApply, selector: "[matDatepickerApply], [matDateRangePickerApply]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "component", type: DatePickerReactiveInputComponent, selector: "lib-date-picker-reactive-input", inputs: ["picker", "inputConfig"] }] }); }
|
|
8010
8424
|
}
|
|
8011
8425
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: DatePickerInputElementComponent, decorators: [{
|
|
8012
8426
|
type: Component,
|
|
8013
|
-
args: [{ selector: 'lib-date-picker-input-element', standalone: true, imports: [CommonModule, MatModulesModule, ReactiveFormsModule, TFormInputStatusComponent], providers: [provideNativeDateAdapter()], template: "\r\n\r\n<form [formGroup]=\"formGroup\">\r\n\r\n <mat-form-field \r\n [appearance]=\"this.inputConfig.appearance ||'fill' \" \r\n subscriptSizing=\"dynamic\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <input
|
|
8427
|
+
args: [{ selector: 'lib-date-picker-input-element', standalone: true, imports: [CommonModule, MatModulesModule, ReactiveFormsModule, TFormInputStatusComponent, DatePickerReactiveInputComponent], providers: [provideNativeDateAdapter()], template: "\r\n\r\n<form [formGroup]=\"formGroup\">\r\n\r\n <mat-form-field \r\n [appearance]=\"this.inputConfig.appearance ||'fill' \" \r\n subscriptSizing=\"dynamic\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-date-picker-reactive-input\r\n [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n [picker]=\"picker\"\r\n \r\n ></lib-date-picker-reactive-input>\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker>\r\n <button mat-button matDatepickerCancel>Cancel</button>\r\n <button mat-raised-button color=\"primary\" matDatepickerApply>Apply</button>\r\n </mat-datepicker>\r\n \r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon \r\n matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n \r\n \r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n </mat-form-field>\r\n</form>", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
8014
8428
|
}], propDecorators: { inputConfig: [{
|
|
8015
8429
|
type: Input
|
|
8016
8430
|
}], formGroup: [{
|
|
8017
8431
|
type: Input
|
|
8018
|
-
}], valueChange: [{
|
|
8019
|
-
type: Output
|
|
8020
8432
|
}] } });
|
|
8021
8433
|
|
|
8022
8434
|
;
|
|
@@ -8185,12 +8597,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
8185
8597
|
}] } });
|
|
8186
8598
|
|
|
8187
8599
|
class FileUploadInputElementComponent {
|
|
8188
|
-
constructor() {
|
|
8189
|
-
this.valueChange = new EventEmitter();
|
|
8190
|
-
}
|
|
8191
|
-
changed($event) {
|
|
8192
|
-
this.valueChange.emit($event);
|
|
8193
|
-
}
|
|
8194
8600
|
getErrors() {
|
|
8195
8601
|
return this.formGroup.controls[this.inputConfig.id]?.errors;
|
|
8196
8602
|
}
|
|
@@ -8198,17 +8604,15 @@ class FileUploadInputElementComponent {
|
|
|
8198
8604
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
8199
8605
|
}
|
|
8200
8606
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: FileUploadInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8201
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: FileUploadInputElementComponent, isStandalone: true, selector: "lib-file-upload-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
8607
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: FileUploadInputElementComponent, isStandalone: true, selector: "lib-file-upload-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <app-file-uploader\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n [required]=\"this.inputConfig.required\"\r\n ></app-file-uploader>\r\n\r\n\r\n @if(inputConfig.hintLabel || classInput.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ classInput.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n \r\n </mat-form-field>\r\n</form>\r\n\r\n", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "component", type: FileUploaderComponent, selector: "app-file-uploader", inputs: ["inputConfig"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }] }); }
|
|
8202
8608
|
}
|
|
8203
8609
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: FileUploadInputElementComponent, decorators: [{
|
|
8204
8610
|
type: Component,
|
|
8205
|
-
args: [{ selector: 'lib-file-upload-input-element', standalone: true, imports: [FileUploaderComponent, CommonModule, ReactiveFormsModule, TFormInputStatusComponent, MatModulesModule], template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <app-file-uploader\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n ></app-file-uploader>\r\n\r\n\r\n @if(inputConfig.hintLabel || classInput.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ classInput.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n \r\n </mat-form-field>\r\n</form>\r\n\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
8611
|
+
args: [{ selector: 'lib-file-upload-input-element', standalone: true, imports: [FileUploaderComponent, CommonModule, ReactiveFormsModule, TFormInputStatusComponent, MatModulesModule], template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <app-file-uploader\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n [required]=\"this.inputConfig.required\"\r\n ></app-file-uploader>\r\n\r\n\r\n @if(inputConfig.hintLabel || classInput.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ classInput.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n \r\n </mat-form-field>\r\n</form>\r\n\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
8206
8612
|
}], propDecorators: { inputConfig: [{
|
|
8207
8613
|
type: Input
|
|
8208
8614
|
}], formGroup: [{
|
|
8209
8615
|
type: Input
|
|
8210
|
-
}], valueChange: [{
|
|
8211
|
-
type: Output
|
|
8212
8616
|
}] } });
|
|
8213
8617
|
|
|
8214
8618
|
;
|
|
@@ -8420,17 +8824,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
8420
8824
|
}] } });
|
|
8421
8825
|
|
|
8422
8826
|
class EditorInputElementComponent {
|
|
8423
|
-
changed($event) {
|
|
8424
|
-
this.valueChange.emit($event);
|
|
8425
|
-
}
|
|
8426
8827
|
constructor() {
|
|
8427
|
-
this.valueChange = new EventEmitter();
|
|
8428
8828
|
}
|
|
8429
8829
|
get errorMessage() {
|
|
8430
8830
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
8431
8831
|
}
|
|
8432
8832
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: EditorInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8433
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: EditorInputElementComponent, isStandalone: true, selector: "lib-editor-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
8833
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: EditorInputElementComponent, isStandalone: true, selector: "lib-editor-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, ngImport: i0, template: "\r\n@if (inputConfig.richTextEditorLibrary === 'EditorJS') {\r\n <form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-editor-js-input \r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n [required]=\"this.inputConfig.required\"\r\n ></lib-editor-js-input>\r\n <!-- <app-form-input-rich-text-editor\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n (change)=\"changed($event)\"\r\n >\r\n </app-form-input-rich-text-editor> -->\r\n\r\n\r\n @if(inputConfig.hintLabel || classInput.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ classInput.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n\r\n \r\n </mat-form-field>\r\n \r\n</form>\r\n\r\n}\r\n\r\n\r\n\r\n\r\n@if (inputConfig.richTextEditorLibrary === 'CkEditor') {\r\n <form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n<app-form-input-rich-text-editor\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n \r\n >\r\n </app-form-input-rich-text-editor>\r\n \r\n <mat-hint *ngIf=\"inputConfig.hintLabel\" [matTooltip]=\"inputConfig.hintLabel\" class=\"inputHint\">\r\n {{inputConfig.hintLabel}}\r\n </mat-hint>\r\n\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <!-- <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button>\r\n </ng-container> -->\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n </mat-form-field>\r\n \r\n</form>\r\n\r\n}\r\n", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormInputRichTextEditorComponent, selector: "app-form-input-rich-text-editor", inputs: ["inputConfig"] }, { kind: "component", type: EditorJsInputComponent, selector: "lib-editor-js-input", inputs: ["inputConfig"] }] }); }
|
|
8434
8834
|
}
|
|
8435
8835
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: EditorInputElementComponent, decorators: [{
|
|
8436
8836
|
type: Component,
|
|
@@ -8441,13 +8841,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
8441
8841
|
ReactiveFormsModule,
|
|
8442
8842
|
FormInputRichTextEditorComponent,
|
|
8443
8843
|
EditorJsInputComponent
|
|
8444
|
-
], template: "\r\n@if (inputConfig.richTextEditorLibrary === 'EditorJS') {\r\n <form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-editor-js-input \r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n
|
|
8844
|
+
], template: "\r\n@if (inputConfig.richTextEditorLibrary === 'EditorJS') {\r\n <form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-editor-js-input \r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n [required]=\"this.inputConfig.required\"\r\n ></lib-editor-js-input>\r\n <!-- <app-form-input-rich-text-editor\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n (change)=\"changed($event)\"\r\n >\r\n </app-form-input-rich-text-editor> -->\r\n\r\n\r\n @if(inputConfig.hintLabel || classInput.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ classInput.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n\r\n \r\n </mat-form-field>\r\n \r\n</form>\r\n\r\n}\r\n\r\n\r\n\r\n\r\n@if (inputConfig.richTextEditorLibrary === 'CkEditor') {\r\n <form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n<app-form-input-rich-text-editor\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n \r\n >\r\n </app-form-input-rich-text-editor>\r\n \r\n <mat-hint *ngIf=\"inputConfig.hintLabel\" [matTooltip]=\"inputConfig.hintLabel\" class=\"inputHint\">\r\n {{inputConfig.hintLabel}}\r\n </mat-hint>\r\n\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <!-- <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button>\r\n </ng-container> -->\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n </mat-form-field>\r\n \r\n</form>\r\n\r\n}\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
8445
8845
|
}], ctorParameters: () => [], propDecorators: { inputConfig: [{
|
|
8446
8846
|
type: Input
|
|
8447
8847
|
}], formGroup: [{
|
|
8448
8848
|
type: Input
|
|
8449
|
-
}], valueChange: [{
|
|
8450
|
-
type: Output
|
|
8451
8849
|
}] } });
|
|
8452
8850
|
|
|
8453
8851
|
const customInputConfig$4 = {
|
|
@@ -8494,15 +8892,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
8494
8892
|
}] } });
|
|
8495
8893
|
|
|
8496
8894
|
class BasicInputInputElementComponent {
|
|
8497
|
-
constructor() {
|
|
8498
|
-
this.valueChange = new EventEmitter();
|
|
8499
|
-
}
|
|
8500
8895
|
get formControl() {
|
|
8501
8896
|
return this.formGroup.controls[this.inputConfig.id];
|
|
8502
8897
|
}
|
|
8503
|
-
changed($event) {
|
|
8504
|
-
this.valueChange.emit($event);
|
|
8505
|
-
}
|
|
8506
8898
|
passwordStrengthColor(formControlName) {
|
|
8507
8899
|
const form = this.formGroup;
|
|
8508
8900
|
const value = form?.value[formControlName];
|
|
@@ -8542,7 +8934,7 @@ class BasicInputInputElementComponent {
|
|
|
8542
8934
|
return control?.invalid && (control?.touched || control?.dirty);
|
|
8543
8935
|
}
|
|
8544
8936
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: BasicInputInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8545
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: BasicInputInputElementComponent, isStandalone: true, selector: "lib-basic-input-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
8937
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: BasicInputInputElementComponent, isStandalone: true, selector: "lib-basic-input-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, ngImport: i0, template: "\r\n <ng-container [formGroup]=\"formGroup\">\r\n <mat-form-field \r\n\r\n [appearance]=\"this.inputConfig.appearance ||'fill'\" subscriptSizing=\"dynamic\"\r\n *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{inputConfig.label }}\r\n <lib-t-form-input-status \r\n \r\n [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-input-custom\r\n [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n \r\n ></lib-input-custom>\r\n\r\n @if(errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- [type]=\"this.inputConfig.showPassword ? 'text' : this.inputConfig.type||'text'\"-->\r\n <!-- @if(classInput.canRefresh){\r\n <button\r\n (click)=\"classInput.refresh()\"\r\n style=\" min-width: 1%;\"\r\n [matTooltip]=\"'Click to refresh this field. This will update any calculated values, fetch latest data from services, or reload available options'\"\r\n color=\"primary\" matSuffix mat-icon-button>\r\n <mat-icon>\r\n sync\r\n </mat-icon>\r\n </button>\r\n } -->\r\n\r\n\r\n @if(inputConfig.hintLabel || classInput.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ classInput.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n\r\n \r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <!-- <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button>\r\n </ng-container> -->\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n <!-- Password Strength Hint -->\r\n <mat-hint *ngIf=\"inputConfig.type === 'password'\" [style.color]=\"passwordStrengthColor(inputConfig.id)\"\r\n matTooltip=\"The password should be at least 8 characters long. Have at least one uppercase letter, one lowercase, one digit, one special character.\"\r\n align=\"end\">\r\n {{ checkPasswordStrength(inputConfig.id) }} password\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n\r\n \r\n\r\n\r\n</ng-container>\r\n", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: InputCustomComponent, selector: "lib-input-custom", inputs: ["inputConfig"] }] }); }
|
|
8546
8938
|
}
|
|
8547
8939
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: BasicInputInputElementComponent, decorators: [{
|
|
8548
8940
|
type: Component,
|
|
@@ -8553,13 +8945,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
8553
8945
|
CommonModule,
|
|
8554
8946
|
ReactiveFormsModule,
|
|
8555
8947
|
InputCustomComponent
|
|
8556
|
-
], template: "\r\n <ng-container [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill'\" subscriptSizing=\"dynamic\"\r\n *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{inputConfig.label }}\r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-input-custom\r\n [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"this.inputConfig.id\"
|
|
8948
|
+
], template: "\r\n <ng-container [formGroup]=\"formGroup\">\r\n <mat-form-field \r\n\r\n [appearance]=\"this.inputConfig.appearance ||'fill'\" subscriptSizing=\"dynamic\"\r\n *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{inputConfig.label }}\r\n <lib-t-form-input-status \r\n \r\n [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-input-custom\r\n [inputConfig]=\"this.inputConfig\"\r\n [required]=\"this.inputConfig.required\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n \r\n ></lib-input-custom>\r\n\r\n @if(errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- [type]=\"this.inputConfig.showPassword ? 'text' : this.inputConfig.type||'text'\"-->\r\n <!-- @if(classInput.canRefresh){\r\n <button\r\n (click)=\"classInput.refresh()\"\r\n style=\" min-width: 1%;\"\r\n [matTooltip]=\"'Click to refresh this field. This will update any calculated values, fetch latest data from services, or reload available options'\"\r\n color=\"primary\" matSuffix mat-icon-button>\r\n <mat-icon>\r\n sync\r\n </mat-icon>\r\n </button>\r\n } -->\r\n\r\n\r\n @if(inputConfig.hintLabel || classInput.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ classInput.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n\r\n \r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <!-- <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button>\r\n </ng-container> -->\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n <!-- Password Strength Hint -->\r\n <mat-hint *ngIf=\"inputConfig.type === 'password'\" [style.color]=\"passwordStrengthColor(inputConfig.id)\"\r\n matTooltip=\"The password should be at least 8 characters long. Have at least one uppercase letter, one lowercase, one digit, one special character.\"\r\n align=\"end\">\r\n {{ checkPasswordStrength(inputConfig.id) }} password\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n\r\n \r\n\r\n\r\n</ng-container>\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
8557
8949
|
}], propDecorators: { inputConfig: [{
|
|
8558
8950
|
type: Input
|
|
8559
8951
|
}], formGroup: [{
|
|
8560
8952
|
type: Input
|
|
8561
|
-
}], valueChange: [{
|
|
8562
|
-
type: Output
|
|
8563
8953
|
}] } });
|
|
8564
8954
|
|
|
8565
8955
|
class ColorScale {
|
|
@@ -8852,11 +9242,11 @@ class MultipleInputTableViewComponent {
|
|
|
8852
9242
|
return !!this.inputConfig?.formIsOpen && this.formGroup?.controls[`${this.inputConfig?.id}.id`]?.value === row[`${this.inputConfig?.id}.id`];
|
|
8853
9243
|
}
|
|
8854
9244
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MultipleInputTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8855
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MultipleInputTableViewComponent, isStandalone: true, selector: "lib-multiple-input-table-view", inputs: { inputConfig: "inputConfig", dataSource: "dataSource", applyOptionsTo: "applyOptionsTo", formGroup: "formGroup" }, outputs: { onEditItem: "onEditItem", onDeleteItem: "onDeleteItem", onCopy: "onCopy", onApplyOptionsTo: "onApplyOptionsTo" }, ngImport: i0, template: "@defer (on viewport) {\r\n\r\n@if (configureCols.displayedColumnsInOrder.length===0) {\r\n<div style=\"\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n padding-top: 16px;\r\n padding-bottom: 16px;\r\n\r\n display: flex;\r\n justify-content: center;\r\n opacity: 0.6;\r\n font-size: 13px;\r\n \">\r\n No columns\r\n</div>\r\n}\r\n<div class=\"table-container\">\r\n\r\n <table mat-table [dataSource]=\"(dataSource || [])\" class=\"example-table\" matSort matSortActive=\"created\"\r\n matSortDisableClear matSortDirection=\"desc\">\r\n @for (col of (configureCols.displayedColumnsInOrder||[]); track col) {\r\n <ng-container [matColumnDef]=\"col\">\r\n <th mat-header-cell mat-sort-header *matHeaderCellDef>\r\n <span style=\"text-align: start; line-height: normal; font-size: 13px\">\r\n {{ configureCols.columnsConfig?.[col]?.[\"label\"] }}\r\n </span>\r\n </th>\r\n <td [class.functionClass]=\"row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION']\"\r\n \r\n [style.background]=\"\r\n returnBackground(row, configureCols.columnsConfig?.[col])\r\n \" mat-cell *matCellDef=\"let row\">\r\n <div *ngIf=\" configureCols.columnsConfig?.[col]?.['type'] === 'removal'\" class=\"cellClass\">\r\n <span *ngIf=\"\r\n !!row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION'] &&\r\n inputConfig?.multipleInputInEditId !== row['id']\">\r\n <strong>\r\n\r\n {{getCalculationFunction(row)}}\r\n </strong>\r\n\r\n </span>\r\n <button mat-icon-button\r\n [color]=\"t.menuOpen ? 'primary' : 'basic'\"\r\n *ngIf=\"\r\n !row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION'] &&\r\n row['' ] !== 'true'\r\n \r\n \" \r\n [matMenuTriggerFor]=\"rowOptions\" \r\n [matMenuTriggerData]=\"{row}\" \r\n #t=\"matMenuTrigger\" (click)=\"applyOptionsToFn(row)\"\r\n expand=\"block\" fill=\"clear\" style=\"margin-left: auto;margin-right:0px;display:block\">\r\n @if (rowIsInEdit(row)) {\r\n <mat-icon color=\"primary\">\r\n edit\r\n </mat-icon> \r\n\r\n }@else {\r\n <mat-icon >\r\n {{\r\n t.menuOpen ? 'close' : 'more_horiz'\r\n }}\r\n \r\n </mat-icon>\r\n }\r\n \r\n\r\n </button>\r\n\r\n\r\n <mat-chip *ngIf=\"\r\n row['SYSTEM_KEY_IN_EDIT']\r\n \r\n \">\r\n In {{ inputConfig?.readonly ? 'View' : 'Edit' }}\r\n\r\n </mat-chip>\r\n\r\n </div>\r\n <div *ngIf=\"configureCols.columnsConfig && configureCols.columnsConfig?.[col]?.type !== 'removal'\"\r\n class=\"cellClass\">\r\n <span *ngIf=\"isNumber(row[col])\">\r\n {{ row[col] | number }}\r\n </span>\r\n <span *ngIf=\"!isNumber(row[col])\"> {{ row[col] }}\r\n\r\n </span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"configureCols.displayedColumnsInOrder \"></tr>\r\n <tr [style.border-top]=\"hasTopBorder(row) ? 'solid 2px' : ''\" mat-row\r\n *matRowDef=\"let row; columns: configureCols.displayedColumnsInOrder\"></tr>\r\n </table>\r\n <div *ngIf=\"(dataSource?._filterData)?.length === 0\">\r\n <div style=\"\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n padding-top: 16px;\r\n padding-bottom: 16px;\r\n\r\n display: flex;\r\n justify-content: center;\r\n opacity: 0.6;\r\n font-size: 13px;\r\n \">\r\n No items\r\n </div>\r\n </div>\r\n</div>\r\n}@placeholder {\r\n<div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"50\" />\r\n</div>\r\n}\r\n<mat-menu #rowOptions=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n\r\n <button mat-menu-item (click)=\"editItem(row)\">\r\n <mat-icon>\r\n {{inputConfig?.readonly ? 'visibility' : 'edit'}}\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\">\r\n {{inputConfig?.readonly ? 'View details' : 'Edit'}}\r\n </div>\r\n <div class=\"option-sub-text\">\r\n {{inputConfig?.readonly ? 'View item properties' : 'Modify item properties'}}\r\n </div>\r\n </div>\r\n </button>\r\n @if(!inputConfig?.readonly){\r\n <button mat-menu-item (click)=\"copy(row)\">\r\n <mat-icon>\r\n content_copy\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\">\r\n Duplicate\r\n </div>\r\n <div class=\"option-sub-text\">\r\n Create a copy with same values\r\n </div>\r\n </div>\r\n </button>\r\n @if(isAboutToDeleteRow(row)){\r\n <button mat-menu-item (click)=\"multipleInputRemoveItem($event,row)\">\r\n <mat-icon color=\"accent\">\r\n cancel\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\" style=\"color: #2196F3;\">\r\n Cancel Deletion\r\n </div>\r\n <div class=\"option-sub-text\">\r\n Auto-deleting in {{ secondsCountDown()}} seconds...\r\n </div>\r\n </div>\r\n </button>\r\n <div class=\"deletion-progress-container\">\r\n <mat-progress-bar color=\"warn\" mode=\"determinate\" [value]=\"getCountdownSeconds()\"></mat-progress-bar>\r\n <div class=\"deletion-message\" *ngIf=\"getCountdownSeconds() > 75\">\r\n Deleting soon...\r\n </div>\r\n </div>\r\n }@else {\r\n <button mat-menu-item (click)=\"multipleInputRemoveItem($event,row)\">\r\n <mat-icon color=\"warn\">\r\n delete_outline\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\">\r\n Delete \r\n </div>\r\n <div class=\"option-sub-text\">\r\n Will delete after 3 seconds (click to cancel)\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n</mat-menu>", styles: [".functionClass{background:var(--mat-toolbar-container-background-color, var(--mat-app-surface));font-weight:500}.option-text{display:flex;flex-direction:column;margin-left:8px}.option-main-text{font-size:14px;font-weight:500;margin-bottom:2px;line-height:normal}.option-sub-text{line-height:normal;font-size:12px;color:#0000008a;font-weight:400;line-height:1.2}.deletion-progress-container{position:relative;padding:0 16px 8px}.deletion-message{position:absolute;right:16px;top:2px;font-size:11px;color:#f44336;font-weight:500;line-height:1.6;animation:pulse 1s infinite}button:has(+.deletion-progress-container){border-bottom:none!important;padding-bottom:4px!important}@keyframes pulse{0%{opacity:.7}50%{opacity:1}to{opacity:.7}}@media (max-width: 600px){.option-sub-text{max-width:180px;white-space:normal}}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6$2.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "component", type: i4$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTableModule }], deferBlockDependencies: [() => [i2.MatIconButton, i4$3.MatChip, i6.MatIcon, i6$2.MatMenuTrigger, i4$1.MatSort, i4$1.MatSortHeader, i5.MatTable, i5.MatHeaderCellDef, i5.MatHeaderRowDef, i5.MatColumnDef, i5.MatCellDef, i5.MatRowDef, i5.MatHeaderCell, i5.MatCell, i5.MatHeaderRow, i5.MatRow, i2$2.NgIf, i2$2.DecimalPipe]] }); }
|
|
9245
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MultipleInputTableViewComponent, isStandalone: true, selector: "lib-multiple-input-table-view", inputs: { inputConfig: "inputConfig", dataSource: "dataSource", applyOptionsTo: "applyOptionsTo", formGroup: "formGroup" }, outputs: { onEditItem: "onEditItem", onDeleteItem: "onDeleteItem", onCopy: "onCopy", onApplyOptionsTo: "onApplyOptionsTo" }, ngImport: i0, template: "@defer (on viewport) {\r\n\r\n@if (configureCols.displayedColumnsInOrder.length===0) {\r\n<div style=\"\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n padding-top: 16px;\r\n padding-bottom: 16px;\r\n\r\n display: flex;\r\n justify-content: center;\r\n opacity: 0.6;\r\n font-size: 13px;\r\n \">\r\n No columns\r\n</div>\r\n}\r\n<div class=\"table-container\">\r\n\r\n <table mat-table [dataSource]=\"(dataSource || [])\" class=\"example-table\" matSort matSortActive=\"created\"\r\n matSortDisableClear matSortDirection=\"desc\">\r\n @for (col of (configureCols.displayedColumnsInOrder||[]); track col) {\r\n <ng-container [matColumnDef]=\"col\">\r\n <th mat-header-cell mat-sort-header *matHeaderCellDef>\r\n <span style=\"text-align: start; line-height: normal; font-size: 13px\">\r\n {{ configureCols.columnsConfig?.[col]?.[\"label\"] }}\r\n </span>\r\n </th>\r\n <td [class.functionClass]=\"row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION']\"\r\n \r\n [style.background]=\"\r\n returnBackground(row, configureCols.columnsConfig?.[col])\r\n \" mat-cell *matCellDef=\"let row\">\r\n <div *ngIf=\" configureCols.columnsConfig?.[col]?.['type'] === 'removal'\" class=\"cellClass\">\r\n <span *ngIf=\"\r\n !!row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION'] &&\r\n inputConfig?.multipleInputInEditId !== row['id']\">\r\n <strong>\r\n\r\n {{getCalculationFunction(row)}}\r\n </strong>\r\n\r\n </span>\r\n <button mat-icon-button\r\n [color]=\"t.menuOpen ? 'primary' : 'basic'\"\r\n *ngIf=\"\r\n !row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION'] &&\r\n row['' ] !== 'true'\r\n \r\n \" \r\n [matMenuTriggerFor]=\"rowOptions\" \r\n [matMenuTriggerData]=\"{row:row}\" \r\n #t=\"matMenuTrigger\" (click)=\"applyOptionsToFn(row)\"\r\n expand=\"block\" fill=\"clear\" style=\"margin-left: auto;margin-right:0px;display:block\">\r\n @if (rowIsInEdit(row)) {\r\n <mat-icon color=\"primary\">\r\n edit\r\n </mat-icon> \r\n\r\n }@else {\r\n <mat-icon >\r\n {{\r\n t.menuOpen ? 'close' : 'more_horiz'\r\n }}\r\n \r\n </mat-icon>\r\n }\r\n \r\n\r\n </button>\r\n\r\n\r\n <mat-chip *ngIf=\"\r\n row['SYSTEM_KEY_IN_EDIT']\r\n \r\n \">\r\n In {{ inputConfig?.readonly ? 'View' : 'Edit' }}\r\n\r\n </mat-chip>\r\n\r\n </div>\r\n <div *ngIf=\"configureCols.columnsConfig && configureCols.columnsConfig?.[col]?.type !== 'removal'\"\r\n class=\"cellClass\">\r\n <span *ngIf=\"isNumber(row[col])\">\r\n {{ row[col] | number }}\r\n </span>\r\n <span *ngIf=\"!isNumber(row[col])\"> {{ row[col] }}\r\n\r\n </span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"configureCols.displayedColumnsInOrder \"></tr>\r\n <tr [style.border-top]=\"hasTopBorder(row) ? 'solid 2px' : ''\" mat-row\r\n *matRowDef=\"let row; columns: configureCols.displayedColumnsInOrder\"></tr>\r\n </table>\r\n \r\n <div *ngIf=\"!(dataSource?.data)||(dataSource?.data)?.length === 0\">\r\n <div style=\"\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n padding-top: 16px;\r\n padding-bottom: 16px;\r\n\r\n display: flex;\r\n justify-content: center;\r\n opacity: 0.6;\r\n font-size: 13px;\r\n \">\r\n <div style=\"\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n padding-top: 16px;\r\n padding-bottom: 16px;\r\n\r\n display: flex;\r\n justify-content: center;\r\n opacity: 0.6;\r\n font-size: 13px;\r\n \">\r\n \r\n <div style=\"margin-top: 8px; text-align: center;\">\r\n <mat-icon style=\"font-size: 20px; vertical-align: middle; margin-right: 8px;\">list</mat-icon>\r\n <div style=\"margin-top: 8px;\">\r\n <strong>No items yet</strong>\r\n <p style=\"margin-top: 4px; font-size: 13px;\">\r\n <strong>Click the add button</strong> to create a new row. You'll be able to fill in details using a form.\r\n Each saved entry will appear as a row in this table.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}@placeholder {\r\n<div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"50\" />\r\n</div>\r\n}\r\n<mat-menu #rowOptions=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n\r\n <button mat-menu-item (click)=\"editItem(row)\">\r\n <mat-icon>\r\n {{inputConfig?.readonly ? 'visibility' : 'edit'}}\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\">\r\n {{inputConfig?.readonly ? 'View details' : 'Edit'}}\r\n </div>\r\n <div class=\"option-sub-text\">\r\n {{inputConfig?.readonly ? 'View item properties' : 'Modify item properties'}}\r\n </div>\r\n </div>\r\n </button>\r\n @if(!inputConfig?.readonly){\r\n <button mat-menu-item (click)=\"copy(row)\">\r\n <mat-icon>\r\n content_copy\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\">\r\n Duplicate\r\n </div>\r\n <div class=\"option-sub-text\">\r\n Create a copy with same values\r\n </div>\r\n </div>\r\n </button>\r\n @if(isAboutToDeleteRow(row)){\r\n <button mat-menu-item (click)=\"multipleInputRemoveItem($event,row)\">\r\n <mat-icon color=\"accent\">\r\n cancel\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\" style=\"color: #2196F3;\">\r\n Cancel Deletion\r\n </div>\r\n <div class=\"option-sub-text\">\r\n Auto-deleting in {{ secondsCountDown()}} seconds...\r\n </div>\r\n </div>\r\n </button>\r\n <div class=\"deletion-progress-container\">\r\n <mat-progress-bar color=\"warn\" mode=\"determinate\" [value]=\"getCountdownSeconds()\"></mat-progress-bar>\r\n <div class=\"deletion-message\" *ngIf=\"getCountdownSeconds() > 75\">\r\n Deleting soon...\r\n </div>\r\n </div>\r\n }@else {\r\n <button mat-menu-item (click)=\"multipleInputRemoveItem($event,row)\">\r\n <mat-icon color=\"warn\">\r\n delete_outline\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\">\r\n Delete \r\n </div>\r\n <div class=\"option-sub-text\">\r\n Will delete after 3 seconds (click to cancel)\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".functionClass{background:var(--mat-toolbar-container-background-color, var(--mat-app-surface));font-weight:500}.option-text{display:flex;flex-direction:column;margin-left:8px}.option-main-text{font-size:14px;font-weight:500;margin-bottom:2px;line-height:normal}.option-sub-text{line-height:normal;font-size:12px;color:#0000008a;font-weight:400;line-height:1.2}.deletion-progress-container{position:relative;padding:0 16px 8px}.deletion-message{position:absolute;right:16px;top:2px;font-size:11px;color:#f44336;font-weight:500;line-height:1.6;animation:pulse 1s infinite}button:has(+.deletion-progress-container){border-bottom:none!important;padding-bottom:4px!important}@keyframes pulse{0%{opacity:.7}50%{opacity:1}to{opacity:.7}}@media (max-width: 600px){.option-sub-text{max-width:180px;white-space:normal}}.table-container{max-width:100%!important;overflow:auto!important}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6$2.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "component", type: i4$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTableModule }], deferBlockDependencies: [() => [i2.MatIconButton, i4$3.MatChip, i6.MatIcon, i6$2.MatMenuTrigger, i4$1.MatSort, i4$1.MatSortHeader, i5.MatTable, i5.MatHeaderCellDef, i5.MatHeaderRowDef, i5.MatColumnDef, i5.MatCellDef, i5.MatRowDef, i5.MatHeaderCell, i5.MatCell, i5.MatHeaderRow, i5.MatRow, i2$2.NgIf, i2$2.DecimalPipe]] }); }
|
|
8856
9246
|
}
|
|
8857
9247
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MultipleInputTableViewComponent, decorators: [{
|
|
8858
9248
|
type: Component,
|
|
8859
|
-
args: [{ selector: 'lib-multiple-input-table-view', standalone: true, imports: [MatModulesModule, CommonModule, MatTableModule], template: "@defer (on viewport) {\r\n\r\n@if (configureCols.displayedColumnsInOrder.length===0) {\r\n<div style=\"\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n padding-top: 16px;\r\n padding-bottom: 16px;\r\n\r\n display: flex;\r\n justify-content: center;\r\n opacity: 0.6;\r\n font-size: 13px;\r\n \">\r\n No columns\r\n</div>\r\n}\r\n<div class=\"table-container\">\r\n\r\n <table mat-table [dataSource]=\"(dataSource || [])\" class=\"example-table\" matSort matSortActive=\"created\"\r\n matSortDisableClear matSortDirection=\"desc\">\r\n @for (col of (configureCols.displayedColumnsInOrder||[]); track col) {\r\n <ng-container [matColumnDef]=\"col\">\r\n <th mat-header-cell mat-sort-header *matHeaderCellDef>\r\n <span style=\"text-align: start; line-height: normal; font-size: 13px\">\r\n {{ configureCols.columnsConfig?.[col]?.[\"label\"] }}\r\n </span>\r\n </th>\r\n <td [class.functionClass]=\"row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION']\"\r\n \r\n [style.background]=\"\r\n returnBackground(row, configureCols.columnsConfig?.[col])\r\n \" mat-cell *matCellDef=\"let row\">\r\n <div *ngIf=\" configureCols.columnsConfig?.[col]?.['type'] === 'removal'\" class=\"cellClass\">\r\n <span *ngIf=\"\r\n !!row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION'] &&\r\n inputConfig?.multipleInputInEditId !== row['id']\">\r\n <strong>\r\n\r\n {{getCalculationFunction(row)}}\r\n </strong>\r\n\r\n </span>\r\n <button mat-icon-button\r\n [color]=\"t.menuOpen ? 'primary' : 'basic'\"\r\n *ngIf=\"\r\n !row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION'] &&\r\n row['' ] !== 'true'\r\n \r\n \" \r\n [matMenuTriggerFor]=\"rowOptions\" \r\n [matMenuTriggerData]=\"{row}\" \r\n #t=\"matMenuTrigger\" (click)=\"applyOptionsToFn(row)\"\r\n expand=\"block\" fill=\"clear\" style=\"margin-left: auto;margin-right:0px;display:block\">\r\n @if (rowIsInEdit(row)) {\r\n <mat-icon color=\"primary\">\r\n edit\r\n </mat-icon> \r\n\r\n }@else {\r\n <mat-icon >\r\n {{\r\n t.menuOpen ? 'close' : 'more_horiz'\r\n }}\r\n \r\n </mat-icon>\r\n }\r\n \r\n\r\n </button>\r\n\r\n\r\n <mat-chip *ngIf=\"\r\n row['SYSTEM_KEY_IN_EDIT']\r\n \r\n \">\r\n In {{ inputConfig?.readonly ? 'View' : 'Edit' }}\r\n\r\n </mat-chip>\r\n\r\n </div>\r\n <div *ngIf=\"configureCols.columnsConfig && configureCols.columnsConfig?.[col]?.type !== 'removal'\"\r\n class=\"cellClass\">\r\n <span *ngIf=\"isNumber(row[col])\">\r\n {{ row[col] | number }}\r\n </span>\r\n <span *ngIf=\"!isNumber(row[col])\"> {{ row[col] }}\r\n\r\n </span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"configureCols.displayedColumnsInOrder \"></tr>\r\n <tr [style.border-top]=\"hasTopBorder(row) ? 'solid 2px' : ''\" mat-row\r\n *matRowDef=\"let row; columns: configureCols.displayedColumnsInOrder\"></tr>\r\n </table>\r\n <div *ngIf=\"(dataSource?.
|
|
9249
|
+
args: [{ selector: 'lib-multiple-input-table-view', standalone: true, imports: [MatModulesModule, CommonModule, MatTableModule], template: "@defer (on viewport) {\r\n\r\n@if (configureCols.displayedColumnsInOrder.length===0) {\r\n<div style=\"\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n padding-top: 16px;\r\n padding-bottom: 16px;\r\n\r\n display: flex;\r\n justify-content: center;\r\n opacity: 0.6;\r\n font-size: 13px;\r\n \">\r\n No columns\r\n</div>\r\n}\r\n<div class=\"table-container\">\r\n\r\n <table mat-table [dataSource]=\"(dataSource || [])\" class=\"example-table\" matSort matSortActive=\"created\"\r\n matSortDisableClear matSortDirection=\"desc\">\r\n @for (col of (configureCols.displayedColumnsInOrder||[]); track col) {\r\n <ng-container [matColumnDef]=\"col\">\r\n <th mat-header-cell mat-sort-header *matHeaderCellDef>\r\n <span style=\"text-align: start; line-height: normal; font-size: 13px\">\r\n {{ configureCols.columnsConfig?.[col]?.[\"label\"] }}\r\n </span>\r\n </th>\r\n <td [class.functionClass]=\"row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION']\"\r\n \r\n [style.background]=\"\r\n returnBackground(row, configureCols.columnsConfig?.[col])\r\n \" mat-cell *matCellDef=\"let row\">\r\n <div *ngIf=\" configureCols.columnsConfig?.[col]?.['type'] === 'removal'\" class=\"cellClass\">\r\n <span *ngIf=\"\r\n !!row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION'] &&\r\n inputConfig?.multipleInputInEditId !== row['id']\">\r\n <strong>\r\n\r\n {{getCalculationFunction(row)}}\r\n </strong>\r\n\r\n </span>\r\n <button mat-icon-button\r\n [color]=\"t.menuOpen ? 'primary' : 'basic'\"\r\n *ngIf=\"\r\n !row['SYSTEM_KEY_PROPERTY_FOR_MULTIPLE_INPUTS_CALCULATION_FUNCTION'] &&\r\n row['' ] !== 'true'\r\n \r\n \" \r\n [matMenuTriggerFor]=\"rowOptions\" \r\n [matMenuTriggerData]=\"{row:row}\" \r\n #t=\"matMenuTrigger\" (click)=\"applyOptionsToFn(row)\"\r\n expand=\"block\" fill=\"clear\" style=\"margin-left: auto;margin-right:0px;display:block\">\r\n @if (rowIsInEdit(row)) {\r\n <mat-icon color=\"primary\">\r\n edit\r\n </mat-icon> \r\n\r\n }@else {\r\n <mat-icon >\r\n {{\r\n t.menuOpen ? 'close' : 'more_horiz'\r\n }}\r\n \r\n </mat-icon>\r\n }\r\n \r\n\r\n </button>\r\n\r\n\r\n <mat-chip *ngIf=\"\r\n row['SYSTEM_KEY_IN_EDIT']\r\n \r\n \">\r\n In {{ inputConfig?.readonly ? 'View' : 'Edit' }}\r\n\r\n </mat-chip>\r\n\r\n </div>\r\n <div *ngIf=\"configureCols.columnsConfig && configureCols.columnsConfig?.[col]?.type !== 'removal'\"\r\n class=\"cellClass\">\r\n <span *ngIf=\"isNumber(row[col])\">\r\n {{ row[col] | number }}\r\n </span>\r\n <span *ngIf=\"!isNumber(row[col])\"> {{ row[col] }}\r\n\r\n </span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n }\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"configureCols.displayedColumnsInOrder \"></tr>\r\n <tr [style.border-top]=\"hasTopBorder(row) ? 'solid 2px' : ''\" mat-row\r\n *matRowDef=\"let row; columns: configureCols.displayedColumnsInOrder\"></tr>\r\n </table>\r\n \r\n <div *ngIf=\"!(dataSource?.data)||(dataSource?.data)?.length === 0\">\r\n <div style=\"\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n padding-top: 16px;\r\n padding-bottom: 16px;\r\n\r\n display: flex;\r\n justify-content: center;\r\n opacity: 0.6;\r\n font-size: 13px;\r\n \">\r\n <div style=\"\r\n padding-left: 16px;\r\n padding-right: 16px;\r\n padding-top: 16px;\r\n padding-bottom: 16px;\r\n\r\n display: flex;\r\n justify-content: center;\r\n opacity: 0.6;\r\n font-size: 13px;\r\n \">\r\n \r\n <div style=\"margin-top: 8px; text-align: center;\">\r\n <mat-icon style=\"font-size: 20px; vertical-align: middle; margin-right: 8px;\">list</mat-icon>\r\n <div style=\"margin-top: 8px;\">\r\n <strong>No items yet</strong>\r\n <p style=\"margin-top: 4px; font-size: 13px;\">\r\n <strong>Click the add button</strong> to create a new row. You'll be able to fill in details using a form.\r\n Each saved entry will appear as a row in this table.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}@placeholder {\r\n<div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"50\" />\r\n</div>\r\n}\r\n<mat-menu #rowOptions=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n\r\n <button mat-menu-item (click)=\"editItem(row)\">\r\n <mat-icon>\r\n {{inputConfig?.readonly ? 'visibility' : 'edit'}}\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\">\r\n {{inputConfig?.readonly ? 'View details' : 'Edit'}}\r\n </div>\r\n <div class=\"option-sub-text\">\r\n {{inputConfig?.readonly ? 'View item properties' : 'Modify item properties'}}\r\n </div>\r\n </div>\r\n </button>\r\n @if(!inputConfig?.readonly){\r\n <button mat-menu-item (click)=\"copy(row)\">\r\n <mat-icon>\r\n content_copy\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\">\r\n Duplicate\r\n </div>\r\n <div class=\"option-sub-text\">\r\n Create a copy with same values\r\n </div>\r\n </div>\r\n </button>\r\n @if(isAboutToDeleteRow(row)){\r\n <button mat-menu-item (click)=\"multipleInputRemoveItem($event,row)\">\r\n <mat-icon color=\"accent\">\r\n cancel\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\" style=\"color: #2196F3;\">\r\n Cancel Deletion\r\n </div>\r\n <div class=\"option-sub-text\">\r\n Auto-deleting in {{ secondsCountDown()}} seconds...\r\n </div>\r\n </div>\r\n </button>\r\n <div class=\"deletion-progress-container\">\r\n <mat-progress-bar color=\"warn\" mode=\"determinate\" [value]=\"getCountdownSeconds()\"></mat-progress-bar>\r\n <div class=\"deletion-message\" *ngIf=\"getCountdownSeconds() > 75\">\r\n Deleting soon...\r\n </div>\r\n </div>\r\n }@else {\r\n <button mat-menu-item (click)=\"multipleInputRemoveItem($event,row)\">\r\n <mat-icon color=\"warn\">\r\n delete_outline\r\n </mat-icon>\r\n <div class=\"option-text\">\r\n <div class=\"option-main-text\">\r\n Delete \r\n </div>\r\n <div class=\"option-sub-text\">\r\n Will delete after 3 seconds (click to cancel)\r\n </div>\r\n </div>\r\n </button>\r\n }\r\n }\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".functionClass{background:var(--mat-toolbar-container-background-color, var(--mat-app-surface));font-weight:500}.option-text{display:flex;flex-direction:column;margin-left:8px}.option-main-text{font-size:14px;font-weight:500;margin-bottom:2px;line-height:normal}.option-sub-text{line-height:normal;font-size:12px;color:#0000008a;font-weight:400;line-height:1.2}.deletion-progress-container{position:relative;padding:0 16px 8px}.deletion-message{position:absolute;right:16px;top:2px;font-size:11px;color:#f44336;font-weight:500;line-height:1.6;animation:pulse 1s infinite}button:has(+.deletion-progress-container){border-bottom:none!important;padding-bottom:4px!important}@keyframes pulse{0%{opacity:.7}50%{opacity:1}to{opacity:.7}}@media (max-width: 600px){.option-sub-text{max-width:180px;white-space:normal}}.table-container{max-width:100%!important;overflow:auto!important}\n"] }]
|
|
8860
9250
|
}], propDecorators: { inputConfig: [{
|
|
8861
9251
|
type: Input
|
|
8862
9252
|
}], dataSource: [{
|
|
@@ -8976,6 +9366,8 @@ class MultipleInputTableEditComponent {
|
|
|
8976
9366
|
if (control) {
|
|
8977
9367
|
allControls.push(control);
|
|
8978
9368
|
}
|
|
9369
|
+
else {
|
|
9370
|
+
}
|
|
8979
9371
|
});
|
|
8980
9372
|
return allControls.some((control) => control?.invalid || !control);
|
|
8981
9373
|
}
|
|
@@ -9067,13 +9459,15 @@ class MultipleInputTableComponent extends BaseCustomInput {
|
|
|
9067
9459
|
constructor(ngControl, elementRef) {
|
|
9068
9460
|
super(ngControl, elementRef, customInputConfig$3);
|
|
9069
9461
|
this.editorMode = false;
|
|
9462
|
+
this._tableData = [];
|
|
9070
9463
|
}
|
|
9071
|
-
|
|
9072
|
-
this.
|
|
9073
|
-
|
|
9074
|
-
this.
|
|
9075
|
-
|
|
9076
|
-
|
|
9464
|
+
set inputConfig(config) {
|
|
9465
|
+
if (_isEqual(this._inputConfig, config))
|
|
9466
|
+
return;
|
|
9467
|
+
this._inputConfig = config;
|
|
9468
|
+
}
|
|
9469
|
+
get inputConfig() {
|
|
9470
|
+
return this._inputConfig;
|
|
9077
9471
|
}
|
|
9078
9472
|
get empty() {
|
|
9079
9473
|
return !this.value;
|
|
@@ -9081,14 +9475,18 @@ class MultipleInputTableComponent extends BaseCustomInput {
|
|
|
9081
9475
|
get shouldLabelFloat() {
|
|
9082
9476
|
return this.focused || !this.empty;
|
|
9083
9477
|
}
|
|
9084
|
-
checkItemList(
|
|
9478
|
+
checkItemList() {
|
|
9085
9479
|
try {
|
|
9086
|
-
if (
|
|
9480
|
+
if (_isEqual(this._tableData, this.value))
|
|
9481
|
+
return true;
|
|
9482
|
+
this._tableData = this.value || [];
|
|
9483
|
+
if (this.value) {
|
|
9087
9484
|
const TableData = this.inputConfig
|
|
9088
9485
|
.groupBy
|
|
9089
|
-
? addGroups(
|
|
9090
|
-
:
|
|
9486
|
+
? addGroups(this.value, this.inputConfig.groupBy)
|
|
9487
|
+
: this.value;
|
|
9091
9488
|
const data = getCaluculatedTableData(this.inputConfig, TableData);
|
|
9489
|
+
console.error('Table data is not equal to value', data, this.value);
|
|
9092
9490
|
if (!this.dataSource) {
|
|
9093
9491
|
this.dataSource = new MatTableDataSource(data);
|
|
9094
9492
|
this.dataSource;
|
|
@@ -9097,30 +9495,32 @@ class MultipleInputTableComponent extends BaseCustomInput {
|
|
|
9097
9495
|
this.dataSource.data = data;
|
|
9098
9496
|
}
|
|
9099
9497
|
}
|
|
9498
|
+
return true;
|
|
9100
9499
|
}
|
|
9101
9500
|
catch (error) {
|
|
9102
9501
|
console.error(error);
|
|
9502
|
+
return false;
|
|
9103
9503
|
}
|
|
9104
9504
|
}
|
|
9105
9505
|
multipleInputRemoveItem(item) {
|
|
9106
9506
|
if (!this.value)
|
|
9107
9507
|
return;
|
|
9108
9508
|
this.value.splice(this.value.indexOf(item), 1);
|
|
9109
|
-
this.checkItemList(this.value);
|
|
9110
9509
|
this.applyOptionsTo = undefined;
|
|
9111
9510
|
this.onChange(this.value);
|
|
9112
9511
|
this.stateChanges.next();
|
|
9113
9512
|
}
|
|
9114
|
-
configCol() {
|
|
9115
|
-
// this.inputConfig?.configCol();
|
|
9116
|
-
}
|
|
9117
9513
|
generateMultipleInputForm() {
|
|
9118
9514
|
const id = this.inputConfig?.id;
|
|
9119
9515
|
if (!id)
|
|
9120
9516
|
return;
|
|
9121
9517
|
this.formBuilderFunctions?.multipleInputToggleForm(id, true);
|
|
9122
9518
|
}
|
|
9123
|
-
|
|
9519
|
+
editRow(rowId) {
|
|
9520
|
+
if (!rowId) {
|
|
9521
|
+
console.error('Row id not provided');
|
|
9522
|
+
throw new Error('Row id not provided');
|
|
9523
|
+
}
|
|
9124
9524
|
if (!this.formBuilderFunctions || !this.inputConfig)
|
|
9125
9525
|
return;
|
|
9126
9526
|
this.formBuilderFunctions?.multipleInputEditRow(this.inputConfig?.id, rowId);
|
|
@@ -9206,7 +9606,7 @@ class MultipleInputTableComponent extends BaseCustomInput {
|
|
|
9206
9606
|
return this.ngControl?.control?.parent;
|
|
9207
9607
|
}
|
|
9208
9608
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MultipleInputTableComponent, deps: [{ token: i1$2.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9209
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MultipleInputTableComponent, isStandalone: true, selector: "app-multiple-input-table", inputs: { editorMode: "editorMode", inputConfig: "inputConfig", formBuilderFunctions: "formBuilderFunctions" }, providers: [{ provide: MatFormFieldControl, useExisting: MultipleInputTableComponent }], usesInheritance: true, ngImport: i0, template: "\r\n<lib-multiple-input-table-view\r\n[inputConfig]=\"inputConfig\"\r\n[dataSource]=\"dataSource\"\r\n[applyOptionsTo]=\"applyOptionsTo\"\r\n[formGroup]=\"parentFormGroup\"\r\n(onEditItem)=\"
|
|
9609
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MultipleInputTableComponent, isStandalone: true, selector: "app-multiple-input-table", inputs: { editorMode: "editorMode", formGroup: "formGroup", inputConfig: "inputConfig", formBuilderFunctions: "formBuilderFunctions" }, providers: [{ provide: MatFormFieldControl, useExisting: MultipleInputTableComponent }], usesInheritance: true, ngImport: i0, template: "\r\n<lib-multiple-input-table-view\r\n*ngIf=\"checkItemList()\"\r\n[inputConfig]=\"inputConfig\"\r\n[dataSource]=\"dataSource\"\r\n[applyOptionsTo]=\"applyOptionsTo\"\r\n[formGroup]=\"parentFormGroup\"\r\n(onEditItem)=\"editRow($event)\"\r\n\r\n(onDeleteItem)=\"multipleInputRemoveItem(applyOptionsTo)\"\r\n(onCopy)=\"copy($event)\"\r\n(onApplyOptionsTo)=\"applyOptionsTo = $event\"\r\n></lib-multiple-input-table-view>\r\n@if(!!inputConfig?.formIsOpen){\r\n<lib-multiple-input-table-edit \r\n[editorMode]=\"editorMode\"\r\n(editMultipleInput)=\"editInput($event)\"\r\n(deleteInput)=\" deleteItemInput($event)\"\r\n(addFunction)=\"addFunction($event)\"\r\n(showItemAsLabel)=\"showItemAsLabel($event)\"\r\n(onSaveMultipleInputForm)=\"saveMultipleInputForm()\"\r\n(reorderItems)=\"reorderItems($event)\"\r\n[formBuilderFunctions]=\"formBuilderFunctions\"\r\n[formGroup]=\"parentFormGroup\"\r\n[inputConfig]=\"inputConfig\"\r\n></lib-multiple-input-table-edit>\r\n\r\n}\r\n\r\n@if (\r\n !inputConfig?.readonly &&\r\n !inputConfig?.formIsOpen\r\n) {\r\n <section >\r\n <button \r\n color=\"primary\" \r\n style=\" display: block;\r\n margin-top: 8px;\r\n width: 100%;\" (click)=\"generateMultipleInputForm()\" mat-flat-button>\r\n \r\n {{handleLabel}}\r\n <mat-icon matPrefix>{{\r\n handleIcon()\r\n }}</mat-icon>\r\n \r\n \r\n </button>\r\n </section>\r\n \r\n}\r\n", styles: [".table-container{position:relative;max-height:400px;overflow:auto}table{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: MultipleInputTableEditComponent, selector: "lib-multiple-input-table-edit", inputs: ["inputConfig", "editorMode", "formGroup", "formBuilderFunctions"], outputs: ["onSaveMultipleInputForm", "editMultipleInput", "deleteInput", "showItemAsLabel", "addFunction", "reorderItems"] }, { kind: "component", type: MultipleInputTableViewComponent, selector: "lib-multiple-input-table-view", inputs: ["inputConfig", "dataSource", "applyOptionsTo", "formGroup"], outputs: ["onEditItem", "onDeleteItem", "onCopy", "onApplyOptionsTo"] }] }); }
|
|
9210
9610
|
}
|
|
9211
9611
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MultipleInputTableComponent, decorators: [{
|
|
9212
9612
|
type: Component,
|
|
@@ -9215,13 +9615,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
9215
9615
|
MatModulesModule,
|
|
9216
9616
|
MultipleInputTableEditComponent,
|
|
9217
9617
|
MultipleInputTableViewComponent,
|
|
9218
|
-
], providers: [{ provide: MatFormFieldControl, useExisting: MultipleInputTableComponent }], template: "\r\n<lib-multiple-input-table-view\r\n[inputConfig]=\"inputConfig\"\r\n[dataSource]=\"dataSource\"\r\n[applyOptionsTo]=\"applyOptionsTo\"\r\n[formGroup]=\"parentFormGroup\"\r\n(onEditItem)=\"
|
|
9618
|
+
], providers: [{ provide: MatFormFieldControl, useExisting: MultipleInputTableComponent }], template: "\r\n<lib-multiple-input-table-view\r\n*ngIf=\"checkItemList()\"\r\n[inputConfig]=\"inputConfig\"\r\n[dataSource]=\"dataSource\"\r\n[applyOptionsTo]=\"applyOptionsTo\"\r\n[formGroup]=\"parentFormGroup\"\r\n(onEditItem)=\"editRow($event)\"\r\n\r\n(onDeleteItem)=\"multipleInputRemoveItem(applyOptionsTo)\"\r\n(onCopy)=\"copy($event)\"\r\n(onApplyOptionsTo)=\"applyOptionsTo = $event\"\r\n></lib-multiple-input-table-view>\r\n@if(!!inputConfig?.formIsOpen){\r\n<lib-multiple-input-table-edit \r\n[editorMode]=\"editorMode\"\r\n(editMultipleInput)=\"editInput($event)\"\r\n(deleteInput)=\" deleteItemInput($event)\"\r\n(addFunction)=\"addFunction($event)\"\r\n(showItemAsLabel)=\"showItemAsLabel($event)\"\r\n(onSaveMultipleInputForm)=\"saveMultipleInputForm()\"\r\n(reorderItems)=\"reorderItems($event)\"\r\n[formBuilderFunctions]=\"formBuilderFunctions\"\r\n[formGroup]=\"parentFormGroup\"\r\n[inputConfig]=\"inputConfig\"\r\n></lib-multiple-input-table-edit>\r\n\r\n}\r\n\r\n@if (\r\n !inputConfig?.readonly &&\r\n !inputConfig?.formIsOpen\r\n) {\r\n <section >\r\n <button \r\n color=\"primary\" \r\n style=\" display: block;\r\n margin-top: 8px;\r\n width: 100%;\" (click)=\"generateMultipleInputForm()\" mat-flat-button>\r\n \r\n {{handleLabel}}\r\n <mat-icon matPrefix>{{\r\n handleIcon()\r\n }}</mat-icon>\r\n \r\n \r\n </button>\r\n </section>\r\n \r\n}\r\n", styles: [".table-container{position:relative;max-height:400px;overflow:auto}table{width:100%}\n"] }]
|
|
9219
9619
|
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
9220
9620
|
type: Optional
|
|
9221
9621
|
}, {
|
|
9222
9622
|
type: Self
|
|
9223
9623
|
}] }, { type: i0.ElementRef }], propDecorators: { editorMode: [{
|
|
9224
9624
|
type: Input
|
|
9625
|
+
}], formGroup: [{
|
|
9626
|
+
type: Input
|
|
9225
9627
|
}], inputConfig: [{
|
|
9226
9628
|
type: Input
|
|
9227
9629
|
}], formBuilderFunctions: [{
|
|
@@ -9234,23 +9636,19 @@ function addGroups(tableValue, groupBy) {
|
|
|
9234
9636
|
class MultipleInputInputElementComponent {
|
|
9235
9637
|
constructor() {
|
|
9236
9638
|
this.editorMode = false;
|
|
9237
|
-
this.valueChange = new EventEmitter();
|
|
9238
|
-
}
|
|
9239
|
-
changed($event) {
|
|
9240
|
-
this.valueChange.emit($event);
|
|
9241
9639
|
}
|
|
9242
9640
|
get errorMessage() {
|
|
9243
9641
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
9244
9642
|
}
|
|
9245
9643
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MultipleInputInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9246
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MultipleInputInputElementComponent, isStandalone: true, selector: "lib-multiple-input-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup", editorMode: "editorMode", formBuilderFunctions: "formBuilderFunctions" },
|
|
9644
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: MultipleInputInputElementComponent, isStandalone: true, selector: "lib-multiple-input-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup", editorMode: "editorMode", formBuilderFunctions: "formBuilderFunctions" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" floatLabel=\"always\"\r\n *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }}\r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n\r\n <app-multiple-input-table [editorMode]=\"editorMode\" [required]=\"this.inputConfig.required\" [formGroup]=\"formGroup\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\" *ngIf=\"inputConfig.id\" [formControlName]=\"inputConfig.id\"\r\n [inputConfig]=\"inputConfig\">\r\n </app-multiple-input-table>\r\n\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n</form>", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: MultipleInputTableComponent, selector: "app-multiple-input-table", inputs: ["editorMode", "formGroup", "inputConfig", "formBuilderFunctions"] }] }); }
|
|
9247
9645
|
}
|
|
9248
9646
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: MultipleInputInputElementComponent, decorators: [{
|
|
9249
9647
|
type: Component,
|
|
9250
9648
|
args: [{ selector: 'lib-multiple-input-input-element', standalone: true, imports: [MatModulesModule,
|
|
9251
9649
|
TFormInputStatusComponent,
|
|
9252
9650
|
CommonModule,
|
|
9253
|
-
ReactiveFormsModule, MultipleInputTableComponent], template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\"
|
|
9651
|
+
ReactiveFormsModule, MultipleInputTableComponent], template: "<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" floatLabel=\"always\"\r\n *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }}\r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n\r\n <app-multiple-input-table [editorMode]=\"editorMode\" [required]=\"this.inputConfig.required\" [formGroup]=\"formGroup\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\" *ngIf=\"inputConfig.id\" [formControlName]=\"inputConfig.id\"\r\n [inputConfig]=\"inputConfig\">\r\n </app-multiple-input-table>\r\n\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n</form>", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
9254
9652
|
}], propDecorators: { inputConfig: [{
|
|
9255
9653
|
type: Input
|
|
9256
9654
|
}], formGroup: [{
|
|
@@ -9259,8 +9657,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
9259
9657
|
type: Input
|
|
9260
9658
|
}], formBuilderFunctions: [{
|
|
9261
9659
|
type: Input
|
|
9262
|
-
}], valueChange: [{
|
|
9263
|
-
type: Output
|
|
9264
9660
|
}] } });
|
|
9265
9661
|
|
|
9266
9662
|
const DEFAULT_OPTIONS = {
|
|
@@ -9349,20 +9745,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
9349
9745
|
class GeoLocationComponent {
|
|
9350
9746
|
constructor() {
|
|
9351
9747
|
this.editorMode = false;
|
|
9352
|
-
this.valueChange = new EventEmitter();
|
|
9353
|
-
}
|
|
9354
|
-
changed($event) {
|
|
9355
|
-
this.valueChange.emit($event);
|
|
9356
9748
|
}
|
|
9357
9749
|
get errorMessage() {
|
|
9358
9750
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
9359
9751
|
}
|
|
9360
9752
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: GeoLocationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9361
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: GeoLocationComponent, isStandalone: true, selector: "lib-geo-location", inputs: { inputConfig: "inputConfig", formGroup: "formGroup", editorMode: "editorMode", formBuilderFunctions: "formBuilderFunctions" },
|
|
9753
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: GeoLocationComponent, isStandalone: true, selector: "lib-geo-location", inputs: { inputConfig: "inputConfig", formGroup: "formGroup", editorMode: "editorMode", formBuilderFunctions: "formBuilderFunctions" }, ngImport: i0, template: "\r\n\r\n<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status \r\n [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-geo-location-form-input\r\n [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n [required]=\"this.inputConfig.required\"\r\n ></lib-geo-location-form-input>\r\n \r\nL\r\n @if(inputConfig.hintLabel || classInput.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ classInput.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n\r\n </mat-form-field>\r\n</form>", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "component", type: GeoLocationFormInputComponent, selector: "lib-geo-location-form-input", inputs: ["formBuilderFunctions", "inputConfig"] }] }); }
|
|
9362
9754
|
}
|
|
9363
9755
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: GeoLocationComponent, decorators: [{
|
|
9364
9756
|
type: Component,
|
|
9365
|
-
args: [{ selector: 'lib-geo-location', standalone: true, imports: [CommonModule, MatModulesModule, ReactiveFormsModule, TFormInputStatusComponent, GeoLocationFormInputComponent], template: "\r\n\r\n<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status \r\n [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-geo-location-form-input\r\n [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n ></lib-geo-location-form-input>\r\n \r\nL\r\n @if(inputConfig.hintLabel || classInput.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ classInput.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n\r\n </mat-form-field>\r\n</form>", styles: ["mat-form-field{width:100%}\n"] }]
|
|
9757
|
+
args: [{ selector: 'lib-geo-location', standalone: true, imports: [CommonModule, MatModulesModule, ReactiveFormsModule, TFormInputStatusComponent, GeoLocationFormInputComponent], template: "\r\n\r\n<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as classInput\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status \r\n [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n <lib-geo-location-form-input\r\n [inputConfig]=\"this.inputConfig\"\r\n [formControlName]=\"this.inputConfig.id\"\r\n [required]=\"this.inputConfig.required\"\r\n ></lib-geo-location-form-input>\r\n \r\nL\r\n @if(inputConfig.hintLabel || classInput.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ classInput.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"classInput.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ classInput.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n\r\n </mat-form-field>\r\n</form>", styles: ["mat-form-field{width:100%}\n"] }]
|
|
9366
9758
|
}], propDecorators: { inputConfig: [{
|
|
9367
9759
|
type: Input
|
|
9368
9760
|
}], formGroup: [{
|
|
@@ -9371,8 +9763,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
9371
9763
|
type: Input
|
|
9372
9764
|
}], formBuilderFunctions: [{
|
|
9373
9765
|
type: Input
|
|
9374
|
-
}], valueChange: [{
|
|
9375
|
-
type: Output
|
|
9376
9766
|
}] } });
|
|
9377
9767
|
|
|
9378
9768
|
// Image capture
|
|
@@ -9502,28 +9892,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
9502
9892
|
}] } });
|
|
9503
9893
|
|
|
9504
9894
|
class ImageCaptureInputElementComponent {
|
|
9505
|
-
constructor() {
|
|
9506
|
-
this.valueChange = new EventEmitter();
|
|
9507
|
-
}
|
|
9508
|
-
changed($event) {
|
|
9509
|
-
this.valueChange.emit($event);
|
|
9510
|
-
}
|
|
9511
9895
|
get errorMessage() {
|
|
9512
9896
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
9513
9897
|
}
|
|
9514
9898
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: ImageCaptureInputElementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9515
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: ImageCaptureInputElementComponent, isStandalone: true, selector: "lib-image-capture-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
9899
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: ImageCaptureInputElementComponent, isStandalone: true, selector: "lib-image-capture-input-element", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, ngImport: i0, template: "\r\n\r\n<ng-container [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n \r\n <app-camera-capture\r\n [required]=\"this.inputConfig.required\"\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n \r\n ></app-camera-capture> \r\n\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n } \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n</ng-container>\r\n", styles: ["mat-form-field{width:100%!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }, { kind: "component", type: CameraCaptureComponent, selector: "app-camera-capture", inputs: ["inputConfig"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
9516
9900
|
}
|
|
9517
9901
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: ImageCaptureInputElementComponent, decorators: [{
|
|
9518
9902
|
type: Component,
|
|
9519
9903
|
args: [{ selector: 'lib-image-capture-input-element', standalone: true, imports: [CommonModule, MatModulesModule,
|
|
9520
|
-
TFormInputStatusComponent, CameraCaptureComponent, ReactiveFormsModule], template: "\r\n\r\n<ng-container [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n \r\n <app-camera-capture\r\n \r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n ></app-camera-capture> \r\n\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n } \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n</ng-container>\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
9904
|
+
TFormInputStatusComponent, CameraCaptureComponent, ReactiveFormsModule], template: "\r\n\r\n<ng-container [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n \r\n <app-camera-capture\r\n [required]=\"this.inputConfig.required\"\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n \r\n ></app-camera-capture> \r\n\r\n\r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n } \r\n\r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n\r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n\r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n\r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n\r\n\r\n </mat-form-field>\r\n</ng-container>\r\n", styles: ["mat-form-field{width:100%!important}\n"] }]
|
|
9521
9905
|
}], propDecorators: { inputConfig: [{
|
|
9522
9906
|
type: Input
|
|
9523
9907
|
}], formGroup: [{
|
|
9524
9908
|
type: Input
|
|
9525
|
-
}], valueChange: [{
|
|
9526
|
-
type: Output
|
|
9527
9909
|
}] } });
|
|
9528
9910
|
|
|
9529
9911
|
const customInputConfig = {
|
|
@@ -9643,34 +10025,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
9643
10025
|
}] } });
|
|
9644
10026
|
|
|
9645
10027
|
class SelectTableInputComponent {
|
|
9646
|
-
constructor() {
|
|
9647
|
-
this.valueChange = new EventEmitter();
|
|
9648
|
-
}
|
|
9649
|
-
changed($event) {
|
|
9650
|
-
this.valueChange.emit($event);
|
|
9651
|
-
}
|
|
9652
10028
|
get errorMessage() {
|
|
9653
10029
|
return getInputErrorMessage(this.inputConfig, this.formGroup);
|
|
9654
10030
|
}
|
|
9655
10031
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SelectTableInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9656
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: SelectTableInputComponent, isStandalone: true, selector: "lib-select-table-input", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" },
|
|
10032
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: SelectTableInputComponent, isStandalone: true, selector: "lib-select-table-input", inputs: { inputConfig: "inputConfig", formGroup: "formGroup" }, ngImport: i0, template: "<p>select-table-input works!</p>\r\n\r\n\r\n<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n \r\n <app-input-table\r\n [required]=\"this.inputConfig.required\"\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n ></app-input-table> \r\n \r\n \r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n </mat-form-field>\r\n </form>\r\n ", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: InputTableComponent, selector: "app-input-table", inputs: ["inputConfig"] }, { kind: "component", type: TFormInputStatusComponent, selector: "lib-t-form-input-status", inputs: ["inputConfig"] }] }); }
|
|
9657
10033
|
}
|
|
9658
10034
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: SelectTableInputComponent, decorators: [{
|
|
9659
10035
|
type: Component,
|
|
9660
|
-
args: [{ selector: 'lib-select-table-input', standalone: true, imports: [CommonModule, MatModulesModule, ReactiveFormsModule, InputTableComponent, TFormInputStatusComponent], template: "<p>select-table-input works!</p>\r\n\r\n\r\n<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n \r\n <app-input-table\r\n \r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n ></app-input-table> \r\n \r\n \r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n </mat-form-field>\r\n </form>\r\n " }]
|
|
10036
|
+
args: [{ selector: 'lib-select-table-input', standalone: true, imports: [CommonModule, MatModulesModule, ReactiveFormsModule, InputTableComponent, TFormInputStatusComponent], template: "<p>select-table-input works!</p>\r\n\r\n\r\n<form [formGroup]=\"formGroup\">\r\n <mat-form-field [appearance]=\"this.inputConfig.appearance ||'fill' \" subscriptSizing=\"dynamic\" *ngIf=\"this.inputConfig as inputConfig\">\r\n <mat-label>\r\n {{this.inputConfig.label }} \r\n <lib-t-form-input-status [inputConfig]=\"this.inputConfig\"></lib-t-form-input-status>\r\n </mat-label>\r\n \r\n <app-input-table\r\n [required]=\"this.inputConfig.required\"\r\n [inputConfig]=\"inputConfig\"\r\n [formControlName]=\"inputConfig.id\"\r\n ></app-input-table> \r\n \r\n \r\n @if(inputConfig.hintLabel || inputConfig.temporaryHint ){\r\n <mat-hint class=\"inputHint\">\r\n {{ inputConfig.temporaryHint || inputConfig.hintLabel}}\r\n </mat-hint>\r\n }\r\n \r\n @if (!!errorMessage) {\r\n <mat-error class=\"oneLineTextEllipsis\" matTooltipClass=\"errorToolTip\">{{errorMessage}}</mat-error>\r\n }\r\n <!-- Prefix Icon -->\r\n <mat-icon *ngIf=\"inputConfig.prefixIcon\" matPrefix>{{ inputConfig.prefixIcon }}</mat-icon>\r\n \r\n <!-- Suffix Icon or Password Visibility Toggle -->\r\n <ng-container *ngIf=\"inputConfig.suffixIcon\">\r\n <mat-icon *ngIf=\"inputConfig.id !== 'password'\" matSuffix>{{ inputConfig.suffixIcon\r\n }}</mat-icon>\r\n <!-- <button *ngIf=\"inputConfig.id === 'password'\" (click)=\"inputConfig.togglePasswordVisibility()\"\r\n mat-icon-button matSuffix>\r\n <mat-icon>{{ inputConfig.showPassword ? 'remove_red_eye' : 'eye_off' }}</mat-icon>\r\n </button> -->\r\n </ng-container>\r\n \r\n <!-- Prefix & Suffix Text -->\r\n <span *ngIf=\"inputConfig.prefixText\" matPrefix style=\"top: 0\">{{ inputConfig.prefixText }}</span>\r\n <span *ngIf=\"inputConfig.suffixText\" matSuffix style=\"padding-left: 5px\">{{ inputConfig.suffixText\r\n }}</span>\r\n \r\n <!-- Character Count Hint -->\r\n <mat-hint *ngIf=\"inputConfig.maxLength && formGroup\" align=\"end\">\r\n {{ (formGroup.controls[inputConfig.id]?.value?.length || 0) + '/' + inputConfig.maxLength\r\n }}\r\n </mat-hint>\r\n \r\n \r\n </mat-form-field>\r\n </form>\r\n " }]
|
|
9661
10037
|
}], propDecorators: { inputConfig: [{
|
|
9662
10038
|
type: Input
|
|
9663
10039
|
}], formGroup: [{
|
|
9664
10040
|
type: Input
|
|
9665
|
-
}], valueChange: [{
|
|
9666
|
-
type: Output
|
|
9667
10041
|
}] } });
|
|
9668
10042
|
|
|
9669
10043
|
class TFormInputComponent {
|
|
9670
10044
|
constructor(props) {
|
|
9671
10045
|
this.props = props;
|
|
9672
10046
|
this.editorMode = false;
|
|
9673
|
-
this.valueChange = new EventEmitter();
|
|
9674
10047
|
this.elementTypes = ElementTypes;
|
|
9675
10048
|
// Apply props from portal injection if available
|
|
9676
10049
|
if (this.props) {
|
|
@@ -9692,14 +10065,11 @@ class TFormInputComponent {
|
|
|
9692
10065
|
// Handle standard form control case
|
|
9693
10066
|
return !!this.formGroup.controls[id];
|
|
9694
10067
|
}
|
|
9695
|
-
changed(event) {
|
|
9696
|
-
this.valueChange.emit(event);
|
|
9697
|
-
}
|
|
9698
10068
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: TFormInputComponent, deps: [{ token: 'COMPONENT_PROPS', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9699
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: TFormInputComponent, isStandalone: true, selector: "lib-t-form-input", inputs: { inputConfig: "inputConfig", formGroup: "formGroup", editorMode: "editorMode", formBuilderFunctions: "formBuilderFunctions" },
|
|
10069
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: TFormInputComponent, isStandalone: true, selector: "lib-t-form-input", inputs: { inputConfig: "inputConfig", formGroup: "formGroup", editorMode: "editorMode", formBuilderFunctions: "formBuilderFunctions" }, ngImport: i0, template: "\r\n@if(inputConfig ){\r\n\r\n@if(inputConfig.element === elementTypes.SectionTitle){\r\n<lib-section-title [inputConfig]=\"inputConfig\"></lib-section-title>\r\n}\r\n\r\n@if(inputConfig.element !== elementTypes.SectionTitle && !!formGroup && !!hasFormControlInstance){\r\n @switch (inputConfig.element) {\r\n @case (elementTypes.Location) {\r\n <lib-geo-location\r\n [editorMode]=\"editorMode\"\r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\">\r\n </lib-geo-location>\r\n }\r\n <!-- @case (elementTypes.QrCodeScanner) {\r\n <lib-qr-code-scanner-element [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\" \r\n \r\n (valueChange)=\"changed($event)\">\r\n </lib-qr-code-scanner-element>\r\n } -->\r\n @case (elementTypes.AutoCompleteInput) {\r\n <lib-auto-complete-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\"\r\n [options]=\"[]\">\r\n </lib-auto-complete-input-element>\r\n }\r\n @case (elementTypes.Toggle) {\r\n <lib-toggle-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\" >\r\n </lib-toggle-input-element>\r\n\r\n \r\n }\r\n @case (elementTypes.Select) {\r\n <lib-select-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\" >\r\n </lib-select-input-element>\r\n }\r\n @case (elementTypes.Textarea) {\r\n <lib-textarea-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\">\r\n </lib-textarea-input-element>\r\n }\r\n @case (elementTypes.DateRangePicker) {\r\n <lib-date-range-picker-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\">\r\n </lib-date-range-picker-input-element>\r\n }\r\n @case (elementTypes.DatePicker){\r\n <lib-date-picker-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\"\r\n >\r\n </lib-date-picker-input-element>\r\n }\r\n @case (elementTypes.FileUpload) {\r\n <lib-file-upload-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\">\r\n </lib-file-upload-input-element>\r\n\r\n }\r\n @case (elementTypes.ImageCapture) {\r\n <lib-image-capture-input-element [inputConfig]=\"inputConfig\" [formGroup]=\"formGroup\"\r\n ></lib-image-capture-input-element>\r\n\r\n }\r\n @case (elementTypes.Editor) {\r\n <lib-editor-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\" \r\n >\r\n </lib-editor-input-element>\r\n }\r\n @case (elementTypes.Signature) {\r\n <lib-signature-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\" \r\n >\r\n </lib-signature-input-element>\r\n }\r\n \r\n @case (elementTypes.MultipleInput) {\r\n <lib-multiple-input-input-element\r\n [editorMode]=\"editorMode\"\r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\"\r\n \r\n [formBuilderFunctions]=\"formBuilderFunctions\"\r\n \r\n >\r\n\r\n </lib-multiple-input-input-element>\r\n\r\n }\r\n @case (elementTypes.MscoaSelection) {\r\n <lib-mscoa-form-input\r\n [inputConfig]=\"inputConfig\"\r\n [formGroup]=\"formGroup\"\r\n [editorMode]=\"editorMode\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\">\r\n </lib-mscoa-form-input>\r\n\r\n }\r\n @case (elementTypes.TableSelection) {\r\n <lib-select-table-input [inputConfig]=\"inputConfig\"\r\n [formGroup]=\"formGroup\">\r\n\r\n </lib-select-table-input>\r\n }\r\n @default {\r\n <lib-basic-input-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\">\r\n </lib-basic-input-input-element>\r\n }\r\n }\r\n}\r\n} \r\n\r\n\r\n<!-- \r\n<button mat-button (click)=\"externalError()\">error</button>\r\n<button mat-button (click)=\"externalErrorClear()\"> clear error</button>-->\r\n", styles: ["mat-form-field{width:100%!important}.description{font-size:.875rem;text-align:start;line-height:1.6;max-width:493px}.sectionHeading{text-align:start;font-weight:500;margin-bottom:2px;line-height:1.5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MscoaFormInputComponent, selector: "lib-mscoa-form-input", inputs: ["inputConfig", "editorMode", "formGroup", "formBuilderFunctions"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: SectionTitleComponent, selector: "lib-section-title", inputs: ["inputConfig"] }, { kind: "component", type: GeoLocationComponent, selector: "lib-geo-location", inputs: ["inputConfig", "formGroup", "editorMode", "formBuilderFunctions"] }, { kind: "component", type: AutoCompleteInputElementComponent, selector: "lib-auto-complete-input-element", inputs: ["inputConfig", "formGroup", "options"] }, { kind: "component", type: ToggleInputElementComponent, selector: "lib-toggle-input-element", inputs: ["inputConfig", "formGroup"] }, { kind: "component", type: SelectInputElementComponent, selector: "lib-select-input-element", inputs: ["inputConfig", "formGroup"] }, { kind: "component", type: TextareaInputElementComponent, selector: "lib-textarea-input-element", inputs: ["inputConfig", "formGroup"] }, { kind: "component", type: DateRangePickerInputElementComponent, selector: "lib-date-range-picker-input-element", inputs: ["inputConfig", "formGroup"] }, { kind: "component", type: DatePickerInputElementComponent, selector: "lib-date-picker-input-element", inputs: ["inputConfig", "formGroup"] }, { kind: "component", type: FileUploadInputElementComponent, selector: "lib-file-upload-input-element", inputs: ["inputConfig", "formGroup"] }, { kind: "component", type:
|
|
9700
10070
|
//REVIEW - check circular dependency error for ImageCaptureInputElementComponent
|
|
9701
10071
|
// ImageCaptureInputElementComponent,
|
|
9702
|
-
EditorInputElementComponent, selector: "lib-editor-input-element", inputs: ["inputConfig", "formGroup"]
|
|
10072
|
+
EditorInputElementComponent, selector: "lib-editor-input-element", inputs: ["inputConfig", "formGroup"] }, { kind: "component", type: SignatureInputElementComponent, selector: "lib-signature-input-element", inputs: ["inputConfig", "formGroup"] }, { kind: "component", type: MultipleInputInputElementComponent, selector: "lib-multiple-input-input-element", inputs: ["inputConfig", "formGroup", "editorMode", "formBuilderFunctions"] }, { kind: "component", type: BasicInputInputElementComponent, selector: "lib-basic-input-input-element", inputs: ["inputConfig", "formGroup"] }, { kind: "component", type: ImageCaptureInputElementComponent, selector: "lib-image-capture-input-element", inputs: ["inputConfig", "formGroup"] }, { kind: "component", type: SelectTableInputComponent, selector: "lib-select-table-input", inputs: ["inputConfig", "formGroup"] }] }); }
|
|
9703
10073
|
}
|
|
9704
10074
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: TFormInputComponent, decorators: [{
|
|
9705
10075
|
type: Component,
|
|
@@ -9725,7 +10095,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
9725
10095
|
BasicInputInputElementComponent,
|
|
9726
10096
|
ImageCaptureInputElementComponent,
|
|
9727
10097
|
SelectTableInputComponent
|
|
9728
|
-
], template: "\r\n@if(inputConfig ){\r\n\r\n@if(inputConfig.element === elementTypes.SectionTitle){\r\n<lib-section-title [inputConfig]=\"inputConfig\"></lib-section-title>\r\n}\r\n\r\n@if(inputConfig.element !== elementTypes.SectionTitle && !!formGroup && !!hasFormControlInstance){\r\n @switch (inputConfig.element) {\r\n @case (elementTypes.Location) {\r\n <lib-geo-location\r\n [editorMode]=\"editorMode\"\r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\"\r\n
|
|
10098
|
+
], template: "\r\n@if(inputConfig ){\r\n\r\n@if(inputConfig.element === elementTypes.SectionTitle){\r\n<lib-section-title [inputConfig]=\"inputConfig\"></lib-section-title>\r\n}\r\n\r\n@if(inputConfig.element !== elementTypes.SectionTitle && !!formGroup && !!hasFormControlInstance){\r\n @switch (inputConfig.element) {\r\n @case (elementTypes.Location) {\r\n <lib-geo-location\r\n [editorMode]=\"editorMode\"\r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\">\r\n </lib-geo-location>\r\n }\r\n <!-- @case (elementTypes.QrCodeScanner) {\r\n <lib-qr-code-scanner-element [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\" \r\n \r\n (valueChange)=\"changed($event)\">\r\n </lib-qr-code-scanner-element>\r\n } -->\r\n @case (elementTypes.AutoCompleteInput) {\r\n <lib-auto-complete-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\"\r\n [options]=\"[]\">\r\n </lib-auto-complete-input-element>\r\n }\r\n @case (elementTypes.Toggle) {\r\n <lib-toggle-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\" >\r\n </lib-toggle-input-element>\r\n\r\n \r\n }\r\n @case (elementTypes.Select) {\r\n <lib-select-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\" >\r\n </lib-select-input-element>\r\n }\r\n @case (elementTypes.Textarea) {\r\n <lib-textarea-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\">\r\n </lib-textarea-input-element>\r\n }\r\n @case (elementTypes.DateRangePicker) {\r\n <lib-date-range-picker-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\">\r\n </lib-date-range-picker-input-element>\r\n }\r\n @case (elementTypes.DatePicker){\r\n <lib-date-picker-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\"\r\n >\r\n </lib-date-picker-input-element>\r\n }\r\n @case (elementTypes.FileUpload) {\r\n <lib-file-upload-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\">\r\n </lib-file-upload-input-element>\r\n\r\n }\r\n @case (elementTypes.ImageCapture) {\r\n <lib-image-capture-input-element [inputConfig]=\"inputConfig\" [formGroup]=\"formGroup\"\r\n ></lib-image-capture-input-element>\r\n\r\n }\r\n @case (elementTypes.Editor) {\r\n <lib-editor-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\" \r\n >\r\n </lib-editor-input-element>\r\n }\r\n @case (elementTypes.Signature) {\r\n <lib-signature-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\" \r\n >\r\n </lib-signature-input-element>\r\n }\r\n \r\n @case (elementTypes.MultipleInput) {\r\n <lib-multiple-input-input-element\r\n [editorMode]=\"editorMode\"\r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\"\r\n \r\n [formBuilderFunctions]=\"formBuilderFunctions\"\r\n \r\n >\r\n\r\n </lib-multiple-input-input-element>\r\n\r\n }\r\n @case (elementTypes.MscoaSelection) {\r\n <lib-mscoa-form-input\r\n [inputConfig]=\"inputConfig\"\r\n [formGroup]=\"formGroup\"\r\n [editorMode]=\"editorMode\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\">\r\n </lib-mscoa-form-input>\r\n\r\n }\r\n @case (elementTypes.TableSelection) {\r\n <lib-select-table-input [inputConfig]=\"inputConfig\"\r\n [formGroup]=\"formGroup\">\r\n\r\n </lib-select-table-input>\r\n }\r\n @default {\r\n <lib-basic-input-input-element \r\n [inputConfig]=\"inputConfig\" \r\n [formGroup]=\"formGroup\">\r\n </lib-basic-input-input-element>\r\n }\r\n }\r\n}\r\n} \r\n\r\n\r\n<!-- \r\n<button mat-button (click)=\"externalError()\">error</button>\r\n<button mat-button (click)=\"externalErrorClear()\"> clear error</button>-->\r\n", styles: ["mat-form-field{width:100%!important}.description{font-size:.875rem;text-align:start;line-height:1.6;max-width:493px}.sectionHeading{text-align:start;font-weight:500;margin-bottom:2px;line-height:1.5}\n"] }]
|
|
9729
10099
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
9730
10100
|
type: Optional
|
|
9731
10101
|
}, {
|
|
@@ -9739,8 +10109,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
|
|
|
9739
10109
|
type: Input
|
|
9740
10110
|
}], formBuilderFunctions: [{
|
|
9741
10111
|
type: Input
|
|
9742
|
-
}], valueChange: [{
|
|
9743
|
-
type: Output
|
|
9744
10112
|
}] } });
|
|
9745
10113
|
|
|
9746
10114
|
var tFormInput_component = /*#__PURE__*/Object.freeze({
|
|
@@ -9778,7 +10146,7 @@ class UserFormStepperComponent extends FormTowerControllerService {
|
|
|
9778
10146
|
this.loading = false;
|
|
9779
10147
|
if (!form?._id)
|
|
9780
10148
|
return;
|
|
9781
|
-
//
|
|
10149
|
+
// this.initialize(TEST_FORM.form as any);
|
|
9782
10150
|
this.initialize(form?.form);
|
|
9783
10151
|
},
|
|
9784
10152
|
error: (error) => {
|
|
@@ -9860,7 +10228,7 @@ class UserFormStepperComponent extends FormTowerControllerService {
|
|
|
9860
10228
|
this.submitForm(this.passParamsOnSubmit);
|
|
9861
10229
|
}
|
|
9862
10230
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: UserFormStepperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9863
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: UserFormStepperComponent, isStandalone: true, selector: "lib-user-form-stepper", inputs: { formId: "formId", initialValues: "initialValues", passParamsOnSubmit: "passParamsOnSubmit" }, host: { listeners: { "document:keydown": "onKeyDown($event)" } }, viewQueries: [{ propertyName: "stepper", first: true, predicate: ["stepper"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (loading) {\r\n
|
|
10231
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: UserFormStepperComponent, isStandalone: true, selector: "lib-user-form-stepper", inputs: { formId: "formId", initialValues: "initialValues", passParamsOnSubmit: "passParamsOnSubmit" }, host: { listeners: { "document:keydown": "onKeyDown($event)" } }, viewQueries: [{ propertyName: "stepper", first: true, predicate: ["stepper"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (loading) {\r\n<div class=\"loading-container\">\r\n <mat-spinner diameter=\"48\" aria-label=\"Loading form\" />\r\n</div>\r\n}\r\n<mat-stepper [style.display]=\"loading?'none':'block'\" #stepper class=\"form-stepper\" orientation=\"vertical\"\r\n [linear]=\"!isEditable\" aria-label=\"Form sections stepper\" [animationDuration]=\"'300'\"\r\n (selectionChange)=\"handleStepChange($event)\">\r\n\r\n @for (step of selectFormSteps(); track step.sectionId) {\r\n @if (!!step.sectionForm ) {\r\n <mat-step [stepControl]=\"step.sectionForm\" [completed]=\"step.sectionIsSeen && !step.sectionIsInvalid\"\r\n [editable]=\"isEditable\" [errorMessage]=\"step.sectionFormErrorMessage||''\" [state]=\"getStepState(step,$index)\"\r\n [hasError]=\"!step.sectionForm.valid && !!step.sectionForm.touched\">\r\n <ng-template matStepLabel>\r\n <div class=\"step-label-container\" [attr.aria-label]=\"'Section ' + step.label\">\r\n <span class=\"step-label-text\">{{step.label|titlecase}}</span>\r\n @if (step.sectionIsSeen) {\r\n <mat-icon [class.error]=\"step.sectionIsInvalid\"\r\n [attr.aria-label]=\"step.sectionIsInvalid ? 'Section has errors' : 'Section completed'\">\r\n {{step.sectionIsSeen}}\r\n </mat-icon>\r\n }\r\n\r\n <span class=\"tour-trigger \" *ngIf=\"(step)?.activeSectionHasTour&&!!step.isActive \">\r\n <button tourAnchor=\"Form-Tour-trigger\" matTooltip=\"Start section tour\" mat-flat-button>\r\n <mat-icon>tour</mat-icon>\r\n </button>\r\n </span>\r\n </div>\r\n </ng-template>\r\n @if(!!step.isActive){\r\n @defer (on viewport; prefetch on idle) {\r\n <div class=\"step-content\">\r\n <div class=\"row form-section\">\r\n @for (col of step.columns; track col.id) {\r\n <div [class]=\"'col-md-'+col.colSize + ' box'\">\r\n <lib-t-form-input [tourAnchor]=\"col.id\" (valueChange)=\"updateValue(col.id,$event)\" [editorMode]=\"false\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\" [inputConfig]=\"col\" [formGroup]=\"step.sectionForm\"\r\n [attr.aria-label]=\"col?.label || ''\">\r\n </lib-t-form-input>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"step-actions\">\r\n @if(!$first) {\r\n <button mat-button matStepperPrevious type=\"button\" class=\"navigation-button\"\r\n [attr.aria-label]=\"'Go back to ' + getPreviousStepLabel()\">\r\n\r\n Back\r\n </button>\r\n }\r\n @if (!$last) {\r\n <button mat-flat-button matStepperNext color=\"primary\" type=\"button\" class=\"navigation-button\"\r\n [attr.aria-label]=\"'Continue to ' + getNextStepLabel()\">\r\n Next\r\n </button>\r\n }\r\n @if (!!$last) {\r\n <button mat-button (click)=\"stepper.reset();reset()\">Reset</button>\r\n }\r\n </div>\r\n </div>\r\n } @placeholder {\r\n <div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"24\" />\r\n </div>\r\n }\r\n\r\n }\r\n\r\n </mat-step>\r\n }\r\n }\r\n</mat-stepper>\r\n\r\n<!-- Defer the footer toolbar until after the main form is loaded -->\r\n@defer (on idle; prefetch on viewport) {\r\n<footer><mat-toolbar class=\"submission-toolbar\" role=\"toolbar\" aria-label=\"Form submission actions\">\r\n <span class=\"submission-status\" role=\"status\">\r\n {{getSubmissionStatus}}\r\n </span>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"mainForm?.invalid\" (click)=\"handleSubmit()\"\r\n aria-label=\"Submit form\">\r\n <span>\r\n {{ formSubmissionMessage()}}\r\n </span>\r\n @if(submittingForm){\r\n <mat-spinner diameter=\"10\"></mat-spinner>\r\n }\r\n\r\n </button>\r\n </mat-toolbar>\r\n</footer>\r\n} @placeholder {\r\n<!-- Simple placeholder for the footer that maintains layout -->\r\n<footer>\r\n <div class=\"submission-toolbar-placeholder\"></div>\r\n</footer>\r\n}", styles: [".form-stepper{min-height:400px}.step-label-container{display:flex;justify-content:space-between;align-items:center;width:100%;gap:16px}.step-error-message{font-size:12px;opacity:.9;margin-left:16px}.form-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:8px;margin-bottom:24px}.step-actions{display:flex;gap:16px;margin-top:24px}.navigation-button{display:flex;align-items:center;gap:8px}.loading-container{display:flex;justify-content:center;padding:32px}footer{position:sticky;bottom:0}.submission-toolbar{z-index:1000;background:#ffffff0d;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-top:var(--mat-divider-width) solid var(--mat-divider-color);padding:8px 16px;display:flex;justify-content:flex-end;gap:16px}.submission-status{font-size:12px;opacity:.87;display:flex;align-items:center}.box{padding:8px 4px 4px}.tour-trigger{position:absolute;right:8px;font-size:12px;opacity:.6}.tour-trigger:hover{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2$2.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$6.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i3$6.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i3$6.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: TourMatMenuModule }, { kind: "directive", type: i7$3.TourAnchorMatMenuDirective, selector: "[tourAnchor]", inputs: ["tourAnchor"] }, { kind: "ngmodule", type: ReactiveFormsModule }], deferBlockDependencies: [() => [i2.MatButton, i3$6.MatStepperNext, i3$6.MatStepperPrevious, Promise.resolve().then(function () { return tFormInput_component; }).then(m => m.TFormInputComponent), i7$3.TourAnchorMatMenuDirective, i1$2.NgControlStatusGroup, i1$2.FormGroupDirective], () => [i2.MatButton, i7.MatProgressSpinner, i9.MatToolbar]] }); }
|
|
9864
10232
|
}
|
|
9865
10233
|
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: UserFormStepperComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return tFormInput_component; }).then(m => m.TFormInputComponent)], resolveMetadata: TFormInputComponent => ({ decorators: [{
|
|
9866
10234
|
type: Component,
|
|
@@ -9870,7 +10238,7 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ng
|
|
|
9870
10238
|
TFormInputComponent,
|
|
9871
10239
|
TourMatMenuModule,
|
|
9872
10240
|
ReactiveFormsModule
|
|
9873
|
-
], standalone: true, template: "@if (loading) {\r\n
|
|
10241
|
+
], standalone: true, template: "@if (loading) {\r\n<div class=\"loading-container\">\r\n <mat-spinner diameter=\"48\" aria-label=\"Loading form\" />\r\n</div>\r\n}\r\n<mat-stepper [style.display]=\"loading?'none':'block'\" #stepper class=\"form-stepper\" orientation=\"vertical\"\r\n [linear]=\"!isEditable\" aria-label=\"Form sections stepper\" [animationDuration]=\"'300'\"\r\n (selectionChange)=\"handleStepChange($event)\">\r\n\r\n @for (step of selectFormSteps(); track step.sectionId) {\r\n @if (!!step.sectionForm ) {\r\n <mat-step [stepControl]=\"step.sectionForm\" [completed]=\"step.sectionIsSeen && !step.sectionIsInvalid\"\r\n [editable]=\"isEditable\" [errorMessage]=\"step.sectionFormErrorMessage||''\" [state]=\"getStepState(step,$index)\"\r\n [hasError]=\"!step.sectionForm.valid && !!step.sectionForm.touched\">\r\n <ng-template matStepLabel>\r\n <div class=\"step-label-container\" [attr.aria-label]=\"'Section ' + step.label\">\r\n <span class=\"step-label-text\">{{step.label|titlecase}}</span>\r\n @if (step.sectionIsSeen) {\r\n <mat-icon [class.error]=\"step.sectionIsInvalid\"\r\n [attr.aria-label]=\"step.sectionIsInvalid ? 'Section has errors' : 'Section completed'\">\r\n {{step.sectionIsSeen}}\r\n </mat-icon>\r\n }\r\n\r\n <span class=\"tour-trigger \" *ngIf=\"(step)?.activeSectionHasTour&&!!step.isActive \">\r\n <button tourAnchor=\"Form-Tour-trigger\" matTooltip=\"Start section tour\" mat-flat-button>\r\n <mat-icon>tour</mat-icon>\r\n </button>\r\n </span>\r\n </div>\r\n </ng-template>\r\n @if(!!step.isActive){\r\n @defer (on viewport; prefetch on idle) {\r\n <div class=\"step-content\">\r\n <div class=\"row form-section\">\r\n @for (col of step.columns; track col.id) {\r\n <div [class]=\"'col-md-'+col.colSize + ' box'\">\r\n <lib-t-form-input [tourAnchor]=\"col.id\" (valueChange)=\"updateValue(col.id,$event)\" [editorMode]=\"false\"\r\n [formBuilderFunctions]=\"formBuilderFunctions\" [inputConfig]=\"col\" [formGroup]=\"step.sectionForm\"\r\n [attr.aria-label]=\"col?.label || ''\">\r\n </lib-t-form-input>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"step-actions\">\r\n @if(!$first) {\r\n <button mat-button matStepperPrevious type=\"button\" class=\"navigation-button\"\r\n [attr.aria-label]=\"'Go back to ' + getPreviousStepLabel()\">\r\n\r\n Back\r\n </button>\r\n }\r\n @if (!$last) {\r\n <button mat-flat-button matStepperNext color=\"primary\" type=\"button\" class=\"navigation-button\"\r\n [attr.aria-label]=\"'Continue to ' + getNextStepLabel()\">\r\n Next\r\n </button>\r\n }\r\n @if (!!$last) {\r\n <button mat-button (click)=\"stepper.reset();reset()\">Reset</button>\r\n }\r\n </div>\r\n </div>\r\n } @placeholder {\r\n <div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"24\" />\r\n </div>\r\n }\r\n\r\n }\r\n\r\n </mat-step>\r\n }\r\n }\r\n</mat-stepper>\r\n\r\n<!-- Defer the footer toolbar until after the main form is loaded -->\r\n@defer (on idle; prefetch on viewport) {\r\n<footer><mat-toolbar class=\"submission-toolbar\" role=\"toolbar\" aria-label=\"Form submission actions\">\r\n <span class=\"submission-status\" role=\"status\">\r\n {{getSubmissionStatus}}\r\n </span>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"mainForm?.invalid\" (click)=\"handleSubmit()\"\r\n aria-label=\"Submit form\">\r\n <span>\r\n {{ formSubmissionMessage()}}\r\n </span>\r\n @if(submittingForm){\r\n <mat-spinner diameter=\"10\"></mat-spinner>\r\n }\r\n\r\n </button>\r\n </mat-toolbar>\r\n</footer>\r\n} @placeholder {\r\n<!-- Simple placeholder for the footer that maintains layout -->\r\n<footer>\r\n <div class=\"submission-toolbar-placeholder\"></div>\r\n</footer>\r\n}", styles: [".form-stepper{min-height:400px}.step-label-container{display:flex;justify-content:space-between;align-items:center;width:100%;gap:16px}.step-error-message{font-size:12px;opacity:.9;margin-left:16px}.form-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:8px;margin-bottom:24px}.step-actions{display:flex;gap:16px;margin-top:24px}.navigation-button{display:flex;align-items:center;gap:8px}.loading-container{display:flex;justify-content:center;padding:32px}footer{position:sticky;bottom:0}.submission-toolbar{z-index:1000;background:#ffffff0d;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-top:var(--mat-divider-width) solid var(--mat-divider-color);padding:8px 16px;display:flex;justify-content:flex-end;gap:16px}.submission-status{font-size:12px;opacity:.87;display:flex;align-items:center}.box{padding:8px 4px 4px}.tour-trigger{position:absolute;right:8px;font-size:12px;opacity:.6}.tour-trigger:hover{opacity:1}\n"] }]
|
|
9874
10242
|
}], ctorParameters: null, propDecorators: {
|
|
9875
10243
|
/**
|
|
9876
10244
|
* Handles the key down event and opens the application log if the key combination is pressed.
|
|
@@ -9993,4 +10361,4 @@ console.debug = () => { };
|
|
|
9993
10361
|
*/
|
|
9994
10362
|
|
|
9995
10363
|
export { safeReturnDeepProperty as A, validateObjectAgainstString as B, getUrl as C, DaysAgoPipe as D, textIconsForUserHints as E, FormsStoreService as F, index as G, MatModulesModule as M, NGX_T_FORMS_CONFIG_TOKEN as N, PropertyAccessError as P, SyncEditorComponent as S, TDynamicDataEditComponent as T, UTILS_OBJECT_TOKEN as U, WorkflowBuilderComponent as W, _isEqual as _, assignDeepPropertyToObject as a, TDynamicDataViewComponent as b, FormTowerControllerService as c, getSubmissionStatusFn as d, TreeComponent as e, NgxTFormsService as f, getAvatar as g, NgxTFormsComponent as h, initFormConfigToV2 as i, formGenerator as j, FORM_ACTIONS_TOKEN as k, FORM_CONFIG_TOKEN as l, FORM_SLIDES_TOKEN as m, FORM_INPUTS_TOKEN as n, MULTIPLE_FORM_INPUT_TOKEN as o, provideNgxTForms as p, MSCOA_TREE_PROVIDER as q, FormsComponent as r, FormBuilderComponent as s, testAgainstItem as t, MscoaFormInputComponent as u, UserFormStepperComponent as v, TFormInputComponent as w, DialogTemplateComponent as x, SignatureInputElementComponent as y, returnDeepProperty as z };
|
|
9996
|
-
//# sourceMappingURL=ngx-t-forms-ngx-t-forms-
|
|
10364
|
+
//# sourceMappingURL=ngx-t-forms-ngx-t-forms-D4uTTkn-.mjs.map
|