sapenlinea-components 0.11.89 → 0.11.91

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.
@@ -3578,11 +3578,11 @@ class InfoGroup {
3578
3578
  typeDocument = input(null, ...(ngDevMode ? [{ debugName: "typeDocument" }] : []));
3579
3579
  document = input(null, ...(ngDevMode ? [{ debugName: "document" }] : []));
3580
3580
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InfoGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
3581
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: InfoGroup, isStandalone: true, selector: "lib-info-group", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, showBox: { classPropertyName: "showBox", publicName: "showBox", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleAlign: { classPropertyName: "titleAlign", publicName: "titleAlign", isSignal: true, isRequired: false, transformFunction: null }, itemsLeft: { classPropertyName: "itemsLeft", publicName: "itemsLeft", isSignal: true, isRequired: false, transformFunction: null }, itemsRight: { classPropertyName: "itemsRight", publicName: "itemsRight", isSignal: true, isRequired: false, transformFunction: null }, titleLeft: { classPropertyName: "titleLeft", publicName: "titleLeft", isSignal: true, isRequired: false, transformFunction: null }, titleRight: { classPropertyName: "titleRight", publicName: "titleRight", isSignal: true, isRequired: false, transformFunction: null }, fullName: { classPropertyName: "fullName", publicName: "fullName", isSignal: true, isRequired: false, transformFunction: null }, typeDocument: { classPropertyName: "typeDocument", publicName: "typeDocument", isSignal: true, isRequired: false, transformFunction: null }, document: { classPropertyName: "document", publicName: "document", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!showBox()) {\r\n<div class=\"info-card\">\r\n @if (title()) {\r\n <h3 class=\"info-title\" [style.text-align]=\"titleAlign()\">{{ title() }}</h3>\r\n }\r\n\r\n @if (itemsLeft().length || itemsRight().length) {\r\n <div class=\"compare-grid\">\r\n <div class=\"compare-col\">\r\n @if (titleLeft()) {\r\n <span class=\"col-title\">{{ titleLeft() }}</span>\r\n }\r\n @for (item of itemsLeft(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"compare-divider\"></div>\r\n <div class=\"compare-col\">\r\n @if (titleRight()) {\r\n <span class=\"col-title\">{{ titleRight() }}</span>\r\n }\r\n @for (item of itemsRight(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"info-grid\">\r\n @for (item of items(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value\r\n || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n} \r\n\r\n@if (showBox()) {\r\n<div class=\"person-box\" [ngClass]=\"type()\" >\r\n <span class=\"person-name\">{{ fullName() || '-' }}</span>\r\n <span class=\"divider\"></span>\r\n <span class=\"person-doc\">{{ typeDocument() }} {{ document() || '-' }}</span>\r\n</div>\r\n}\r\n", styles: [".info-card{background:#f7f6e3;border-radius:18px;padding:20px 24px;width:100%}.info-title{font-size:20px;font-weight:700;color:#40484c;margin-bottom:24px;text-transform:uppercase}.info-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;column-gap:32px;row-gap:14px}.info-grid:after{content:\"\";position:absolute;top:0;bottom:0;left:50%;width:1px;background:#40484c26;transform:translate(-50%);pointer-events:none}.compare-grid{display:flex;gap:0}.compare-col{flex:1;display:flex;flex-direction:column;gap:14px}.compare-divider{width:1px;background:#40484c26;margin:0 16px}.col-title{font-size:15px;font-weight:700;color:#40484c;text-transform:uppercase}.info-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(64,72,76,.15);padding-bottom:14px}.info-row:nth-last-child(1):nth-child(2n),.info-row:nth-last-child(2):nth-child(odd){border-bottom:none}.info-row:nth-last-child(1):nth-child(odd){border-bottom:none}.info-label{font-size:13px;color:#40484c;font-weight:500;text-transform:capitalize}.info-value{font-size:13px;color:#40484c;font-weight:600;text-transform:capitalize}.person-box{background:#d6e873;padding:14px 32px;border-radius:20px;display:flex;align-items:center;font-size:14px;font-weight:500;gap:32px;color:#454733;text-transform:uppercase}.person-name{flex:1;display:flex;justify-content:center}.person-doc{display:flex;flex:1;gap:4px;justify-content:center}.divider{width:2px;height:23px;background:#00000010}.success{background:#dee58f}.info{background:#b6e1f2}.error{background:#fdd8d7}@media (max-width: 768px){.info-grid{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
3581
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: InfoGroup, isStandalone: true, selector: "lib-info-group", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, showBox: { classPropertyName: "showBox", publicName: "showBox", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleAlign: { classPropertyName: "titleAlign", publicName: "titleAlign", isSignal: true, isRequired: false, transformFunction: null }, itemsLeft: { classPropertyName: "itemsLeft", publicName: "itemsLeft", isSignal: true, isRequired: false, transformFunction: null }, itemsRight: { classPropertyName: "itemsRight", publicName: "itemsRight", isSignal: true, isRequired: false, transformFunction: null }, titleLeft: { classPropertyName: "titleLeft", publicName: "titleLeft", isSignal: true, isRequired: false, transformFunction: null }, titleRight: { classPropertyName: "titleRight", publicName: "titleRight", isSignal: true, isRequired: false, transformFunction: null }, fullName: { classPropertyName: "fullName", publicName: "fullName", isSignal: true, isRequired: false, transformFunction: null }, typeDocument: { classPropertyName: "typeDocument", publicName: "typeDocument", isSignal: true, isRequired: false, transformFunction: null }, document: { classPropertyName: "document", publicName: "document", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (!showBox()) {\r\n<div class=\"info-card\">\r\n @if (title()) {\r\n <h3 class=\"info-title\" [style.text-align]=\"titleAlign()\">{{ title() }}</h3>\r\n }\r\n\r\n @if (itemsLeft().length || itemsRight().length) {\r\n <div class=\"compare-grid\">\r\n <div class=\"compare-col\">\r\n @if (titleLeft()) {\r\n <span class=\"col-title\">{{ titleLeft() }}</span>\r\n }\r\n @for (item of itemsLeft(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"compare-divider\"></div>\r\n <div class=\"compare-col\">\r\n @if (titleRight()) {\r\n <span class=\"col-title\">{{ titleRight() }}</span>\r\n }\r\n @for (item of itemsRight(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"info-grid\">\r\n @for (item of items(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value\r\n || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n} \r\n\r\n@if (showBox()) {\r\n<div class=\"person-box\" [ngClass]=\"type()\" >\r\n <span class=\"person-name\">{{ fullName() || '-' }}</span>\r\n <span class=\"divider\"></span>\r\n <span class=\"person-doc\">{{ typeDocument() }} {{ document() || '-' }}</span>\r\n</div>\r\n}\r\n", styles: [".info-card{background:#f7f6e3;border-radius:18px;padding:20px 24px;width:100%}.info-title{font-size:20px;font-weight:700;color:#40484c;margin-bottom:24px;text-transform:uppercase}.info-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;column-gap:32px;row-gap:14px}.info-grid:after{content:\"\";position:absolute;top:0;bottom:0;left:50%;width:1px;background:#40484c26;transform:translate(-50%);pointer-events:none}.compare-grid{display:flex;gap:0}.compare-col{flex:1;display:flex;flex-direction:column;gap:14px}.compare-divider{width:1px;background:#40484c26;margin:0 16px}.col-title{font-size:15px;font-weight:700;color:#40484c;text-transform:uppercase}.info-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(64,72,76,.15);padding-bottom:14px}.info-row:nth-last-child(1):nth-child(2n),.info-row:nth-last-child(2):nth-child(odd){border-bottom:none}.info-row:nth-last-child(1):nth-child(odd){border-bottom:none}.info-label{font-size:13px;color:#40484c;font-weight:500;text-transform:capitalize}.info-value{font-size:13px;color:#40484c;font-weight:600}.person-box{background:#d6e873;padding:14px 32px;border-radius:20px;display:flex;align-items:center;font-size:14px;font-weight:500;gap:32px;color:#454733;text-transform:uppercase}.person-name{flex:1;display:flex;justify-content:center}.person-doc{display:flex;flex:1;gap:4px;justify-content:center}.divider{width:2px;height:23px;background:#00000010}.success{background:#dee58f}.info{background:#b6e1f2}.error{background:#fdd8d7}@media (max-width: 768px){.info-grid{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
3582
3582
  }
3583
3583
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InfoGroup, decorators: [{
3584
3584
  type: Component,
3585
- args: [{ selector: 'lib-info-group', imports: [CommonModule], template: "@if (!showBox()) {\r\n<div class=\"info-card\">\r\n @if (title()) {\r\n <h3 class=\"info-title\" [style.text-align]=\"titleAlign()\">{{ title() }}</h3>\r\n }\r\n\r\n @if (itemsLeft().length || itemsRight().length) {\r\n <div class=\"compare-grid\">\r\n <div class=\"compare-col\">\r\n @if (titleLeft()) {\r\n <span class=\"col-title\">{{ titleLeft() }}</span>\r\n }\r\n @for (item of itemsLeft(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"compare-divider\"></div>\r\n <div class=\"compare-col\">\r\n @if (titleRight()) {\r\n <span class=\"col-title\">{{ titleRight() }}</span>\r\n }\r\n @for (item of itemsRight(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"info-grid\">\r\n @for (item of items(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value\r\n || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n} \r\n\r\n@if (showBox()) {\r\n<div class=\"person-box\" [ngClass]=\"type()\" >\r\n <span class=\"person-name\">{{ fullName() || '-' }}</span>\r\n <span class=\"divider\"></span>\r\n <span class=\"person-doc\">{{ typeDocument() }} {{ document() || '-' }}</span>\r\n</div>\r\n}\r\n", styles: [".info-card{background:#f7f6e3;border-radius:18px;padding:20px 24px;width:100%}.info-title{font-size:20px;font-weight:700;color:#40484c;margin-bottom:24px;text-transform:uppercase}.info-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;column-gap:32px;row-gap:14px}.info-grid:after{content:\"\";position:absolute;top:0;bottom:0;left:50%;width:1px;background:#40484c26;transform:translate(-50%);pointer-events:none}.compare-grid{display:flex;gap:0}.compare-col{flex:1;display:flex;flex-direction:column;gap:14px}.compare-divider{width:1px;background:#40484c26;margin:0 16px}.col-title{font-size:15px;font-weight:700;color:#40484c;text-transform:uppercase}.info-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(64,72,76,.15);padding-bottom:14px}.info-row:nth-last-child(1):nth-child(2n),.info-row:nth-last-child(2):nth-child(odd){border-bottom:none}.info-row:nth-last-child(1):nth-child(odd){border-bottom:none}.info-label{font-size:13px;color:#40484c;font-weight:500;text-transform:capitalize}.info-value{font-size:13px;color:#40484c;font-weight:600;text-transform:capitalize}.person-box{background:#d6e873;padding:14px 32px;border-radius:20px;display:flex;align-items:center;font-size:14px;font-weight:500;gap:32px;color:#454733;text-transform:uppercase}.person-name{flex:1;display:flex;justify-content:center}.person-doc{display:flex;flex:1;gap:4px;justify-content:center}.divider{width:2px;height:23px;background:#00000010}.success{background:#dee58f}.info{background:#b6e1f2}.error{background:#fdd8d7}@media (max-width: 768px){.info-grid{grid-template-columns:1fr}}\n"] }]
3585
+ args: [{ selector: 'lib-info-group', imports: [CommonModule], template: "@if (!showBox()) {\r\n<div class=\"info-card\">\r\n @if (title()) {\r\n <h3 class=\"info-title\" [style.text-align]=\"titleAlign()\">{{ title() }}</h3>\r\n }\r\n\r\n @if (itemsLeft().length || itemsRight().length) {\r\n <div class=\"compare-grid\">\r\n <div class=\"compare-col\">\r\n @if (titleLeft()) {\r\n <span class=\"col-title\">{{ titleLeft() }}</span>\r\n }\r\n @for (item of itemsLeft(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"compare-divider\"></div>\r\n <div class=\"compare-col\">\r\n @if (titleRight()) {\r\n <span class=\"col-title\">{{ titleRight() }}</span>\r\n }\r\n @for (item of itemsRight(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"info-grid\">\r\n @for (item of items(); track item.label) {\r\n <div class=\"info-row\">\r\n <span class=\"info-label\">{{ item.label }}</span>\r\n <span class=\"info-value\">\r\n {{ item.value === true ? \"SI\" : item.value === false ? \"NO\" : item.value\r\n || \"-\" }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n} \r\n\r\n@if (showBox()) {\r\n<div class=\"person-box\" [ngClass]=\"type()\" >\r\n <span class=\"person-name\">{{ fullName() || '-' }}</span>\r\n <span class=\"divider\"></span>\r\n <span class=\"person-doc\">{{ typeDocument() }} {{ document() || '-' }}</span>\r\n</div>\r\n}\r\n", styles: [".info-card{background:#f7f6e3;border-radius:18px;padding:20px 24px;width:100%}.info-title{font-size:20px;font-weight:700;color:#40484c;margin-bottom:24px;text-transform:uppercase}.info-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;column-gap:32px;row-gap:14px}.info-grid:after{content:\"\";position:absolute;top:0;bottom:0;left:50%;width:1px;background:#40484c26;transform:translate(-50%);pointer-events:none}.compare-grid{display:flex;gap:0}.compare-col{flex:1;display:flex;flex-direction:column;gap:14px}.compare-divider{width:1px;background:#40484c26;margin:0 16px}.col-title{font-size:15px;font-weight:700;color:#40484c;text-transform:uppercase}.info-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(64,72,76,.15);padding-bottom:14px}.info-row:nth-last-child(1):nth-child(2n),.info-row:nth-last-child(2):nth-child(odd){border-bottom:none}.info-row:nth-last-child(1):nth-child(odd){border-bottom:none}.info-label{font-size:13px;color:#40484c;font-weight:500;text-transform:capitalize}.info-value{font-size:13px;color:#40484c;font-weight:600}.person-box{background:#d6e873;padding:14px 32px;border-radius:20px;display:flex;align-items:center;font-size:14px;font-weight:500;gap:32px;color:#454733;text-transform:uppercase}.person-name{flex:1;display:flex;justify-content:center}.person-doc{display:flex;flex:1;gap:4px;justify-content:center}.divider{width:2px;height:23px;background:#00000010}.success{background:#dee58f}.info{background:#b6e1f2}.error{background:#fdd8d7}@media (max-width: 768px){.info-grid{grid-template-columns:1fr}}\n"] }]
3586
3586
  }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], showBox: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBox", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], titleAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleAlign", required: false }] }], itemsLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemsLeft", required: false }] }], itemsRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemsRight", required: false }] }], titleLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleLeft", required: false }] }], titleRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleRight", required: false }] }], fullName: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullName", required: false }] }], typeDocument: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeDocument", required: false }] }], document: [{ type: i0.Input, args: [{ isSignal: true, alias: "document", required: false }] }] } });
3587
3587
 
3588
3588
  class FeatureCard {
@@ -3637,23 +3637,20 @@ class FeatureCard {
3637
3637
  }
3638
3638
  }, ...(ngDevMode ? [{ debugName: "formattedDescription" }] : []));
3639
3639
  constructor() {
3640
- // Sincroniza el valor interno cuando cambia el objeto feature inicial
3640
+ // Sincroniza description solo cuando el feature cambia desde el padre,
3641
+ // pero nunca pisa un valor que el formulario (writeValue) ya haya establecido.
3641
3642
  effect(() => {
3642
3643
  const feat = this.feature();
3643
- this.descriptionValue.set(feat?.description ?? '');
3644
+ const incoming = feat?.description ?? '';
3645
+ if (incoming !== this.descriptionValue()) {
3646
+ this.descriptionValue.set(incoming);
3647
+ }
3644
3648
  });
3645
3649
  }
3646
3650
  // --- ControlValueAccessor Implementation ---
3647
3651
  writeValue(value) {
3648
3652
  const nextDescription = value == null ? '' : String(value);
3649
- // Solo actualizamos el valor visual (descriptionValue)
3650
3653
  this.descriptionValue.set(nextDescription);
3651
- // Mantenemos sincronizado el objeto base
3652
- const current = this.feature();
3653
- if (current) {
3654
- // Modificamos el objeto feature subyacente para no perder la configuración
3655
- this.feature.set({ ...current, description: nextDescription });
3656
- }
3657
3654
  }
3658
3655
  registerOnChange(fn) {
3659
3656
  this.onChange = fn;