Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | 1x 4x 4x 2x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 4x 4x 6x 6x 6x 4x 6x 4x 4x 2x 4x | /**
* Copyright (c) Siemens 2016 - 2025
* SPDX-License-Identifier: MIT
*/
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
import { FieldType, FormlyModule } from '@ngx-formly/core';
import { SiFormContainerComponent } from '@siemens/element-ng/form';
import { GridColumnConfig, GridRow, ToGridRowConfig } from './si-formly-object-grid.model';
@Component({
selector: 'si-formly-object-grid',
imports: [FormlyModule, SiFormContainerComponent],
templateUrl: './si-formly-object-grid.component.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class SiFormlyObjectGridComponent extends FieldType implements OnInit {
protected rows: GridRow[] = [];
/**
* Template option to suppress displaying error messages that relate
* to the formControl of this grid (see formControl.errors).
*/
private suppressFormErrorDisplay = false;
protected get containerClass(): string | string[] {
if (Array.isArray(this.props.containerClass) && this.props.containerClass.length > 0) {
return this.props.containerClass;
}
return typeof this.props.containerClass === 'string' ? this.props.containerClass : 'container';
}
ngOnInit(): void {
this.setRows();
this.suppressFormErrorDisplay = this.props.suppressFormErrorDisplay === true;
}
protected get displayErrorMessages(): boolean {
return this.showError && !!this.formControl.errors && !this.suppressFormErrorDisplay;
}
private setRows(): void {
this.rows.length = 0;
Iif (!Array.isArray(this.props.gridConfig) || this.props.gridConfig.length === 0) {
this.rows = [
{
classes: ['row'],
columns: [{ classes: ['col-sm'], fields: this.field.fieldGroup }]
}
];
}
const gridConfig = this.props.gridConfig as ToGridRowConfig[];
const fieldGroup = [...(this.field.fieldGroup ?? [])];
gridConfig.forEach(rowConfig => {
const columns: GridColumnConfig[] = [];
rowConfig.columns.forEach(config => {
const fields = fieldGroup.splice(
0,
config.fieldCount < 0 ? fieldGroup.length : config.fieldCount
);
const colClasses = config.classes ?? [];
if (colClasses.length === 0) {
colClasses.push('col');
}
columns.push({ fields, classes: colClasses });
});
const rowClasses = rowConfig.classes ?? [];
if (rowClasses.length === 0) {
rowClasses.push('row');
}
this.rows.push({ classes: rowClasses, columns });
});
}
}
|