@esfaenza/parameters 20.3.60 → 20.3.61

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.
@@ -26,10 +26,10 @@ class EsParametersLoc extends LocalizationService {
26
26
  super.set("it->en", "Aggiungi", ["Add"]);
27
27
  super.set("it->en", "Rimuovi", ["Remove"]);
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: EsParametersLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
30
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: EsParametersLoc }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: EsParametersLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: EsParametersLoc }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: EsParametersLoc, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: EsParametersLoc, decorators: [{
33
33
  type: Injectable
34
34
  }], ctorParameters: () => [{ type: i0.Injector }] });
35
35
 
@@ -85,10 +85,10 @@ class ParameterTypeDirective {
85
85
  constructor(templateRef) {
86
86
  this.templateRef = templateRef;
87
87
  }
88
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: ParameterTypeDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
89
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.32", type: ParameterTypeDirective, isStandalone: false, selector: "[parameterType]", inputs: { parameterType: "parameterType" }, ngImport: i0 }); }
88
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: ParameterTypeDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
89
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.33", type: ParameterTypeDirective, isStandalone: false, selector: "[parameterType]", inputs: { parameterType: "parameterType" }, ngImport: i0 }); }
90
90
  }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: ParameterTypeDirective, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: ParameterTypeDirective, decorators: [{
92
92
  type: Directive,
93
93
  args: [{
94
94
  selector: "[parameterType]",
@@ -898,8 +898,8 @@ class EsParametersComponent {
898
898
  onInputFinalized(parameter) {
899
899
  this.inputFinalized.emit(parameter);
900
900
  }
901
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: EsParametersComponent, deps: [{ token: i1.UtilityService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.DateService }], target: i0.ɵɵFactoryTarget.Component }); }
902
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.32", type: EsParametersComponent, isStandalone: false, selector: "es-parameters", inputs: { ParentCustomTemplates: "ParentCustomTemplates", NamePrefix: "NamePrefix", BooleanSliderMode: "BooleanSliderMode", DisplayMode: "DisplayMode", HideEmpty: "HideEmpty", LastParameterNoMargin: "LastParameterNoMargin", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", LabelFixedWidth: "LabelFixedWidth", LabelAutoWidth: "LabelAutoWidth", LabelAutoWidthIgnoresCheckboxes: "LabelAutoWidthIgnoresCheckboxes", ModernStyles: "ModernStyles", SubgroupColumns: "SubgroupColumns", submitted: "submitted", RepeaterAddRemoveServerSide: "RepeaterAddRemoveServerSide", RepeaterAddRemove: "RepeaterAddRemove", EmptyMessage: "EmptyMessage", Removal: "Removal", Readonly: "Readonly", ListFormat: "ListFormat", FileMode: "FileMode", Form: "Form", AutocompleteHideChoicesOnSelection: "AutocompleteHideChoicesOnSelection", AutoCompleteDataRetrieve: "AutoCompleteDataRetrieve", MultiselectMode: "MultiselectMode", LabelInputRatio: "LabelInputRatio" }, outputs: { inputFinalized: "inputFinalized" }, providers: [
901
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: EsParametersComponent, deps: [{ token: i1.UtilityService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i1.DateService }], target: i0.ɵɵFactoryTarget.Component }); }
902
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: EsParametersComponent, isStandalone: false, selector: "es-parameters", inputs: { ParentCustomTemplates: "ParentCustomTemplates", NamePrefix: "NamePrefix", BooleanSliderMode: "BooleanSliderMode", DisplayMode: "DisplayMode", HideEmpty: "HideEmpty", LastParameterNoMargin: "LastParameterNoMargin", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", LabelFixedWidth: "LabelFixedWidth", LabelAutoWidth: "LabelAutoWidth", LabelAutoWidthIgnoresCheckboxes: "LabelAutoWidthIgnoresCheckboxes", ModernStyles: "ModernStyles", SubgroupColumns: "SubgroupColumns", submitted: "submitted", RepeaterAddRemoveServerSide: "RepeaterAddRemoveServerSide", RepeaterAddRemove: "RepeaterAddRemove", EmptyMessage: "EmptyMessage", Removal: "Removal", Readonly: "Readonly", ListFormat: "ListFormat", FileMode: "FileMode", Form: "Form", AutocompleteHideChoicesOnSelection: "AutocompleteHideChoicesOnSelection", AutoCompleteDataRetrieve: "AutoCompleteDataRetrieve", MultiselectMode: "MultiselectMode", LabelInputRatio: "LabelInputRatio" }, outputs: { inputFinalized: "inputFinalized" }, providers: [
903
903
  { provide: LocalizationService, useClass: EsParametersLoc },
904
904
  {
905
905
  provide: NG_VALUE_ACCESSOR,
@@ -908,7 +908,7 @@ class EsParametersComponent {
908
908
  }
909
909
  ], queries: [{ propertyName: "CustomTemplateDirectives", predicate: ParameterTypeDirective }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"(!Parameters || Parameters.length == 0) && EmptyMessage\">\r\n <em>{{EmptyMessage}}</em>\r\n</div>\r\n\r\n<div *ngIf=\"Groups && Initialized\" class=\"row\" [class.pars-modern]=\"ModernStyles\">\r\n <ng-container *ngTemplateOutlet=\"Temp; context: {item: { groups: Groups, isSubgroup: false, index: NamePrefix }}\"></ng-container>\r\n</div>\r\n\r\n<ng-template #Temp let-item=\"item\">\r\n <ng-container *ngFor=\"let group of item.groups; let k = index\">\r\n <div [class.pars-subgroup]=\"item.isSubgroup && !item.asColumn\" [class.pars-group]=\"!item.isSubgroup\" class=\"col-md-{{group.size ?? 12}}\">\r\n <div [class.pars-group-box]=\"group.groupName\">\r\n <ng-container *ngTemplateOutlet=\"GroupsOrSubgroupsDisplay; context: { item: { group: group, index: k + (item.index ? ('_' + item.index) : ''), isSubgroup: item.isSubgroup }}\"></ng-container>\r\n <ng-container *ngIf=\"group.subgroups.length > 0\">\r\n @if (SubgroupColumns) {\r\n <!-- Sottogruppi in colonna: si affiancano secondo la loro larghezza, senza rientro -->\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"Temp; context: {item: { groups: group.subgroups, index: k + (item.index ? ('_' + item.index) : ''), isSubgroup: true, asColumn: true }};\"></ng-container>\r\n </div>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"Temp; context: {item: { groups: group.subgroups, index: k + (item.index ? ('_' + item.index) : ''), isSubgroup: true }};\"></ng-container>\r\n }\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #GroupsOrSubgroupsDisplay let-item=\"item\">\r\n @if(item.group && Initialized){\r\n\r\n <div *ngIf=\"item.group.groupName\" [style.margin-left.px]=\"ModernStyles ? 0 : -15\" [style.margin-right.px]=\"ModernStyles ? 0 : -15\" [class.pars-group-title]=\"!item.isSubgroup\" [class.pars-subgroup-title]=\"item.isSubgroup\">{{item.group.groupName}}</div>\r\n <div *ngIf=\"item.group.parameters && item.group.parameters.length > 0\" class=\"row\">\r\n @for (par of item.group.parameters; track $index; let i = $index; let last = $last) {\r\n\r\n @if (!DisplayMode || !HideEmpty || par.value) {\r\n\r\n @if (par.visible) {\r\n\r\n <div class=\"row form-group\" [class.app-margin-bottom-0]=\"LastParameterNoMargin && last\" [class.pars-fixed-label]=\"EffectiveLabelWidth\" [style.--pars-label-width]=\"EffectiveLabelWidth ? EffectiveLabelWidth + 'px' : null\" class=\"col-md-{{par.parametersize ?? 12}}\" >\r\n\r\n @if(par.type != 'text' && par.type != 'repeater'){\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\">\r\n @if (Removal) {\r\n <span class=\"fa fa-remove text-danger\" (click)=\"removeParameter(par)\">&nbsp;</span>\r\n }\r\n {{ par.description }}{{ par.required ? '*' : '' }}:\r\n </label>\r\n }\r\n @switch (par.type) {\r\n\r\n @case ('date') {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <form-date [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [FormLayout]=\"false\" [disabled]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"{{item.index}}par{{i}}_{{par.id}}\"\r\n (inputChange)=\"changed();\" (inputFinalized)=\"onInputFinalized(par);\" #validator>\r\n </form-date>\r\n </div>\r\n }\r\n\r\n @case ('datetime') {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <form-date [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [FormLayout]=\"false\" [disabled]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"{{item.index}}par{{i}}_{{par.id}}\"\r\n (inputChange)=\"changed();\" (inputFinalized)=\"onInputFinalized(par);\" #validator>\r\n </form-date>\r\n </div>\r\n }\r\n\r\n @case ('string') {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <!--Il pattern arriva dal parametro (es. i campi di formato Email). Quando non c'e',\r\n l'interpolazione da stringa vuota, che per Angular vale come nessuna validazione.-->\r\n <form-input [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [FormLayout]=\"false\" [disabled]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"{{item.index}}par{{i}}_{{par.id}}\"\r\n (inputChange)=\"changed();\" (inputFinalized)=\"onInputFinalized(par);\" #validator pattern=\"{{par.pattern}}\">\r\n </form-input>\r\n </div>\r\n }\r\n\r\n @case ('number') {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <form-input [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [FormLayout]=\"false\" [disabled]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"{{item.index}}par{{i}}_{{par.id}}\"\r\n (inputChange)=\"changed();\" (inputFinalized)=\"onInputFinalized(par);\" #validator pattern=\"{{par.pattern || '^[+-]?[0-9]*[,]?[0-9]+$'}}\">\r\n </form-input>\r\n </div>\r\n }\r\n\r\n @case ('integer') {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <form-input [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [FormLayout]=\"false\" [disabled]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"{{item.index}}par{{i}}_{{par.id}}\"\r\n (inputChange)=\"changed();\" (inputFinalized)=\"onInputFinalized(par);\" #validator pattern=\"{{par.pattern || '^[+-]?[0-9]+$'}}\">\r\n </form-input>\r\n </div>\r\n }\r\n\r\n @case ('boolean') {\r\n <div class=\"col-md-{{InputColWidth}} m-t-5\">\r\n <form-checkbox [SliderMode]=\"BooleanSliderMode\" [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [FormLayout]=\"false\" [disabled]=\"Readonly || par.isreadonly\" [(ngModel)]=\"par.value\" name=\"{{item.index}}par{{i}}_{{par.id}}\" \r\n (inputChange)=\"evaluateRadioButtons(par); changed();\" (inputFinalized)=\"onInputFinalized(par);\" #validator>\r\n </form-checkbox>\r\n </div>\r\n }\r\n\r\n @case ('text') {\r\n <div class=\"col-md-12 m-t-5\">\r\n <form-info [LabelInputRatio]=\"'0 12'\"><span style=\"font-size: 16px;\">{{par.value}}</span></form-info>\r\n </div>\r\n }\r\n\r\n @case ('enum') {\r\n @if (!par.sourceapi) {\r\n\r\n @if (!par.multienum) {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <form-select [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [FormLayout]=\"false\" [disabled]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.value\" name=\"{{item.index}}par{{i}}_{{par.id}}\"\r\n (inputChange)=\"changed();\" (inputFinalized)=\"onInputFinalized(par);\" #validator [Source]=\"par.enumvalues\">\r\n </form-select>\r\n </div>\r\n }\r\n @else {\r\n\r\n @if (par.enumvalues) {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <form-multiselect [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [FormLayout]=\"false\" [InOutFormat]=\"MultiselectMode == 'JsonArray'\r\n ? 'JsonList'\r\n : MultiselectMode == 'CommaSeparated'\r\n ? 'CommaSeparatedList'\r\n : 'List'\" [Placeholder]=\"('Seleziona' | localize : lc) + '...'\" [(ngModel)]=\"par.value\" name=\"{{item.index}}par{{i}}_{{par.id}}\" [disabled]=\"Readonly || par.isreadonly\"\r\n [Source]=\"par.enumvalues\" [required]=\"par.required\" (inputChange)=\"changed();\" (inputFinalized)=\"onInputFinalized(par);\" #validator>\r\n </form-multiselect>\r\n </div>\r\n }\r\n @else {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <form-autocomplete [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [FormLayout]=\"false\" [Placeholder]=\"('Seleziona' | localize : lc) + '...'\" multiple forceSelection [(ngModel)]=\"par.value\" name=\"{{item.index}}par{{i}}_{{par.id}}\"\r\n [disabled]=\"Readonly || par.isreadonly\" [required]=\"par.required\" (inputChange)=\"changed();\" (inputFinalized)=\"onInputFinalized(par);\" #validator>\r\n </form-autocomplete>\r\n </div>\r\n }\r\n }\r\n } @else {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <form-autocomplete [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [FormLayout]=\"false\" [(ngModel)]=\"par.value\" name=\"{{item.index}}par{{i}}_{{par.id}}\" [multiple]=\"par.multienum\" [disabled]=\"Readonly || par.isreadonly\"\r\n [SearchFunction]=\"getSource.bind(this, par)\" [required]=\"par.required\" (inputChange)=\"changed();\" (inputFinalized)=\"onInputFinalized(par);\" #validator>\r\n </form-autocomplete>\r\n </div>\r\n }\r\n }\r\n\r\n @case ('file') {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <!--Con isfilemultiple si abilita la selezione multipla e si attiva la FancyMode, piu leggibile con piu file.\r\n Il modello resta un singolo AppFile: i singoli file (e i relativi b64) stanno dentro AppFile.files-->\r\n <form-file [DisplayMode]=\"DisplayMode\" [Form]=\"Form\" [ReadFile]=\"true\" [FormLayout]=\"false\" [disabled]=\"Readonly || par.isreadonly\" [required]=\"par.required\" [(ngModel)]=\"par.file\" name=\"{{item.index}}par{{i}}_{{par.id}}\"\r\n [Multiple]=\"!!par.isfilemultiple\" [AdditiveMode]=\"FileMode === 'Additive'\" \r\n #validator (inputChange)=\"changed();\" (inputFinalized)=\"onInputFinalized(par);\">\r\n </form-file>\r\n </div>\r\n }\r\n\r\n @case ('repeater') {\r\n <div class=\"col-md-12 pars-repeater\">\r\n @if (par.description) {\r\n <div class=\"pars-subgroup-title\">{{ par.description }}{{ par.required ? '*' : '' }}</div>\r\n }\r\n\r\n @for (item_rep of par.value; track $index; let j = $index) {\r\n <div class=\"pars-subgroup pars-repeater-item\">\r\n @if (!DisplayMode && !Readonly && !par.isreadonly && canDeleteRepeaterItem(item_rep)) {\r\n <div class=\"pars-repeater-item-header\">\r\n <button type=\"button\" class=\"btn pars-repeater-remove\" [class.btn-danger]=\"!ModernStyles\" (click)=\"removeRepeaterItem(par, j)\">\r\n <span class=\"fa fa-remove\">&nbsp;</span><span>{{ 'Rimuovi' | localize : lc }}</span>\r\n </button>\r\n </div>\r\n }\r\n <es-parameters [(ngModel)]=\"par.value[j]\" name=\"{{item.index}}par{{i}}_{{par.id}}_rep{{j}}\" [ngModelOptions]=\"{ standalone: true }\"\r\n [NamePrefix]=\"NamePrefix + par.id + '_' + j + '_'\"\r\n [Form]=\"Form\" [DisplayMode]=\"DisplayMode\" [Readonly]=\"Readonly || par.isreadonly\"\r\n [ListFormat]=\"ListFormat\" [MultiselectMode]=\"MultiselectMode\" [RepeaterAddRemoveServerSide]=\"RepeaterAddRemoveServerSide\"\r\n [LabelColWidth]=\"LabelColWidth\" [InputColWidth]=\"InputColWidth\" [RepeaterAddRemove]=\"RepeaterAddRemove\"\r\n [BooleanSliderMode]=\"BooleanSliderMode\" [AutocompleteHideChoicesOnSelection]=\"AutocompleteHideChoicesOnSelection\"\r\n [AutoCompleteDataRetrieve]=\"AutoCompleteDataRetrieve\" [ParentCustomTemplates]=\"MergedCustomTemplates\"\r\n [ModernStyles]=\"ModernStyles\" [SubgroupColumns]=\"SubgroupColumns\" [LabelFixedWidth]=\"LabelFixedWidth\" [LabelAutoWidth]=\"LabelAutoWidth\" [LabelAutoWidthIgnoresCheckboxes]=\"LabelAutoWidthIgnoresCheckboxes\" [FileMode]=\"FileMode\"\r\n (ngModelChange)=\"changed();\" (inputFinalized)=\"onInputFinalized($event);\">\r\n </es-parameters>\r\n </div>\r\n }\r\n\r\n @if (!DisplayMode && !Readonly && !par.isreadonly && canAddRepeaterItem(par)) {\r\n <button type=\"button\" class=\"btn pars-repeater-add\" [class.btn-primary]=\"!ModernStyles\" (click)=\"addRepeaterItem(par)\">\r\n <span class=\"fa fa-plus\">&nbsp;</span><span>{{ 'Aggiungi' | localize : lc }}</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @default {\r\n @if (getCustomTemplate(par.type)) {\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <ng-container *ngTemplateOutlet=\"getCustomTemplate(par.type); context: {\r\n $implicit: par,\r\n par: par,\r\n changed: boundChanged,\r\n finalized: boundFinalized,\r\n Form: Form,\r\n DisplayMode: DisplayMode,\r\n Readonly: Readonly,\r\n InputColWidth: InputColWidth,\r\n index: item.index\r\n }\"></ng-container>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n }\r\n }\r\n }\r\n <div *ngIf=\"DisplayMode && AllParametersEmpty && HideEmpty\" class=\"card card-info app-padding-10 app-no-margin app-white-text\">\r\n Non &egrave; presente nulla da visualizzare\r\n </div>\r\n </div>\r\n }\r\n</ng-template>", styles: ["@charset \"UTF-8\";.list-area{position:fixed}.pars-group-title{background:#ddd;margin-bottom:7px;padding:5px;text-transform:uppercase;font-weight:700;text-align:center;color:#333;font-size:13px}.pars-subgroup-title{font-weight:700;color:#333;font-size:16px}.pars-group{margin-left:0}.pars-subgroup{margin-left:15px}.pars-repeater-item{border:1px solid #ddd;border-radius:4px;padding:10px 10px 10px 15px;margin-bottom:10px}.pars-repeater-item-header{display:flex;justify-content:flex-end;margin-bottom:8px}.pars-repeater-remove{cursor:pointer}.pars-repeater-add{margin-top:5px}.pars-group-box{border:1px solid #ddd;padding-left:15px;padding-right:15px}.pars-fixed-label{display:flex;align-items:flex-start;flex-wrap:nowrap}.pars-fixed-label>label{flex:0 0 var(--pars-label-width);width:var(--pars-label-width);max-width:var(--pars-label-width)}.pars-fixed-label>div{flex:1 1 auto;max-width:none;min-width:0}.pars-modern .pars-group-box{border:1px solid #e3e8ef;border-radius:8px;padding:16px 16px 4px;margin-bottom:16px;background:#fff;box-shadow:0 1px 2px #1018280d}.pars-modern .pars-group-title{background:transparent;color:#1f2a37;text-transform:none;text-align:left;font-size:14px;font-weight:600;letter-spacing:.01em;padding:0 0 8px;margin-bottom:14px;border-bottom:2px solid #e3e8ef}.pars-modern .pars-subgroup-title{color:#1f2a37;font-size:14px;font-weight:600;padding-bottom:6px;margin-bottom:10px;border-bottom:1px solid #eef1f5}.pars-modern .pars-repeater-item{border:1px solid #e3e8ef;border-radius:10px;padding:14px 16px 2px;margin-bottom:14px;background:#f8fafc;box-shadow:0 1px 2px #1018280a}.pars-modern .pars-repeater-item-header{margin-bottom:6px}.pars-modern .pars-repeater-remove{background:transparent;border:1px solid transparent;color:#d92d20;padding:2px 8px;font-size:13px;font-weight:500;line-height:1.5;border-radius:6px;box-shadow:none;transition:background-color .15s ease,color .15s ease}.pars-modern .pars-repeater-remove:hover,.pars-modern .pars-repeater-remove:focus{background:#d92d2014;color:#b42318;box-shadow:none}.pars-modern .pars-repeater-add{background:#eff4ff;border:1px solid #cddbfe;color:#175cd3;padding:6px 14px;font-size:13px;font-weight:500;line-height:1.5;border-radius:8px;box-shadow:none;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.pars-modern .pars-repeater-add:hover,.pars-modern .pars-repeater-add:focus{background:#e0e9ff;border-color:#b4c9fc;color:#1849a9;box-shadow:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.EsFormInputComponent, selector: "form-input", inputs: ["minlength", "maxlength", "pattern", "Password", "Type"] }, { kind: "component", type: i5.EsFormSelectComponent, selector: "form-select", inputs: ["OptionsTemplate"] }, { kind: "component", type: i5.EsFormDateComponent, selector: "form-date", inputs: ["InOutFormat", "FloatingLabel", "DateFormat"] }, { kind: "component", type: i5.EsFormCheckboxComponent, selector: "form-checkbox", inputs: ["SliderMode"] }, { kind: "component", type: i5.EsFormInfoComponent, selector: "form-info", inputs: ["LabelColWidth", "InputColWidth", "Last", "FormGroupClass", "LabelInputRatio"] }, { kind: "component", type: i5.EsFormFileComponent, selector: "form-file", inputs: ["Multiple", "AllowDownload", "MaxSize", "FancyMode", "ReadFile", "AdditiveMode"] }, { kind: "component", type: i5.EsFormMultiselectComponent, selector: "form-multiselect", inputs: ["display", "InOutFormat", "FloatingLabel", "MaxShownElements"] }, { kind: "component", type: i5.EsFormAutocompleteComponent, selector: "form-autocomplete", inputs: ["MinChars", "SearchFunctionContext", "SearchFunction", "multiple", "forceSelection"] }, { kind: "component", type: EsParametersComponent, selector: "es-parameters", inputs: ["ParentCustomTemplates", "NamePrefix", "BooleanSliderMode", "DisplayMode", "HideEmpty", "LastParameterNoMargin", "LabelColWidth", "InputColWidth", "LabelFixedWidth", "LabelAutoWidth", "LabelAutoWidthIgnoresCheckboxes", "ModernStyles", "SubgroupColumns", "submitted", "RepeaterAddRemoveServerSide", "RepeaterAddRemove", "EmptyMessage", "Removal", "Readonly", "ListFormat", "FileMode", "Form", "AutocompleteHideChoicesOnSelection", "AutoCompleteDataRetrieve", "MultiselectMode", "LabelInputRatio"], outputs: ["inputFinalized"] }, { kind: "pipe", type: i2.LocalizePipe, name: "localize" }], encapsulation: i0.ViewEncapsulation.None }); }
910
910
  }
911
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: EsParametersComponent, decorators: [{
911
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: EsParametersComponent, decorators: [{
912
912
  type: Component,
913
913
  args: [{ selector: "es-parameters", providers: [
914
914
  { provide: LocalizationService, useClass: EsParametersLoc },
@@ -978,17 +978,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImpo
978
978
  }] } });
979
979
 
980
980
  class EsParametersModule {
981
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: EsParametersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
982
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.32", ngImport: i0, type: EsParametersModule, declarations: [EsParametersComponent, ParameterTypeDirective], imports: [CommonModule,
981
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: EsParametersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
982
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.33", ngImport: i0, type: EsParametersModule, declarations: [EsParametersComponent, ParameterTypeDirective], imports: [CommonModule,
983
983
  LocalizationModule,
984
984
  FormsModule,
985
985
  FormsAndValidationsModule], exports: [EsParametersComponent, ParameterTypeDirective] }); }
986
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: EsParametersModule, imports: [CommonModule,
986
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: EsParametersModule, imports: [CommonModule,
987
987
  LocalizationModule,
988
988
  FormsModule,
989
989
  FormsAndValidationsModule] }); }
990
990
  }
991
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: EsParametersModule, decorators: [{
991
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: EsParametersModule, decorators: [{
992
992
  type: NgModule,
993
993
  args: [{
994
994
  declarations: [EsParametersComponent, ParameterTypeDirective],
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@esfaenza/parameters",
3
- "version": "20.3.60",
3
+ "version": "20.3.61",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },
7
7
  "peerDependencies": {
8
- "@esfaenza/access-control": "^20.3.20",
9
- "@esfaenza/extensions": "^20.3.27",
10
- "@esfaenza/forms-and-validations": "^20.3.30",
11
- "@esfaenza/localizations": "^20.3.23",
12
- "@angular/common": "^20.3.32",
13
- "@angular/core": "^20.3.32",
14
- "@angular/forms": "^20.3.32",
8
+ "@esfaenza/access-control": "^20.3.21",
9
+ "@esfaenza/extensions": "^20.3.28",
10
+ "@esfaenza/forms-and-validations": "^20.3.31",
11
+ "@esfaenza/localizations": "^20.3.24",
12
+ "@angular/common": "^20.3.33",
13
+ "@angular/core": "^20.3.33",
14
+ "@angular/forms": "^20.3.33",
15
15
  "dayjs": "1.11.23",
16
16
  "sweetalert2": "11.26.25",
17
17
  "@primeng/themes": "20.4.0",