@fuentis/phoenix-ui 0.0.9-alpha.630 → 0.0.9-alpha.633

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.
@@ -8142,12 +8142,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
8142
8142
 
8143
8143
  class QuickPickSidePanelComponent {
8144
8144
  drawer;
8145
- title = 'Default Title';
8146
- data = [];
8147
- columns = [];
8148
- tableConfiguration = {};
8149
- widthClass = 'w-6';
8150
- isFullScreen = false;
8145
+ title = input('Default Title', ...(ngDevMode ? [{ debugName: "title" }] : []));
8146
+ data = input([], ...(ngDevMode ? [{ debugName: "data" }] : []));
8147
+ columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
8148
+ tableConfiguration = input(...(ngDevMode ? [undefined, { debugName: "tableConfiguration" }] : []));
8149
+ widthClass = input('w-6', ...(ngDevMode ? [{ debugName: "widthClass" }] : []));
8150
+ isFullScreen = input(false, ...(ngDevMode ? [{ debugName: "isFullScreen" }] : []));
8151
+ filters = computed(() => {
8152
+ return this.createDynamicFilters(this.data(), this.tableConfiguration()?.filters);
8153
+ }, ...(ngDevMode ? [{ debugName: "filters" }] : []));
8151
8154
  _panelVisible = signal(false, ...(ngDevMode ? [{ debugName: "_panelVisible" }] : []));
8152
8155
  set panelState(value) {
8153
8156
  this._panelVisible.set(value);
@@ -8170,8 +8173,102 @@ class QuickPickSidePanelComponent {
8170
8173
  onTableRowClick(row) {
8171
8174
  this.onRowClick.emit(row);
8172
8175
  }
8176
+ createDynamicFilters(data, fields, defaultFilterType = 'multiselect') {
8177
+ const filters = [];
8178
+ fields?.forEach((field) => {
8179
+ const type = field.type ?? defaultFilterType;
8180
+ if (type === 'boolean-multiselect') {
8181
+ filters.push({
8182
+ ...field,
8183
+ type,
8184
+ optionLabel: field.optionLabel ?? 'label',
8185
+ optionValue: field.optionValue ?? 'key',
8186
+ options: Array.isArray(field.options) && field.options.length
8187
+ ? field.options
8188
+ : [
8189
+ { key: false, label: 'ACTION.NO' },
8190
+ { key: true, label: 'ACTION.YES' },
8191
+ ],
8192
+ selected: Array.isArray(field.selected)
8193
+ ? field.selected
8194
+ : field.selected != null
8195
+ ? [field.selected]
8196
+ : [],
8197
+ });
8198
+ return;
8199
+ }
8200
+ const unique = new Set(); // Holds already added display values for deduplication
8201
+ const options = [];
8202
+ // Helper to add a candidate option if valid and not yet added
8203
+ const addOption = (display) => {
8204
+ if (display === null || display === undefined || display === '')
8205
+ return;
8206
+ const str = this.toDisplay(display);
8207
+ if (!unique.has(str)) {
8208
+ unique.add(str);
8209
+ options.push({ key: str, label: str });
8210
+ }
8211
+ };
8212
+ // Extract values for the current field across all rows
8213
+ data?.forEach((row) => {
8214
+ const value = this.getNestedValue(row, field.key);
8215
+ if (value === null || value === undefined || value === '')
8216
+ return;
8217
+ if (Array.isArray(value)) {
8218
+ // LIST field: process each element individually
8219
+ value.forEach((item) => addOption(this.extractItemNameOrValue(item)));
8220
+ }
8221
+ else if (typeof value === 'object') {
8222
+ // Single object: extract display value
8223
+ addOption(this.extractItemNameOrValue(value));
8224
+ }
8225
+ else {
8226
+ // Primitive value (string, number, boolean)
8227
+ addOption(value);
8228
+ }
8229
+ });
8230
+ // Sort options alphabetically by label
8231
+ options.sort((a, b) => a.label.localeCompare(b.label));
8232
+ // Final filter configuration for this field
8233
+ filters.push({
8234
+ ...field,
8235
+ type: field.type ?? defaultFilterType,
8236
+ options,
8237
+ });
8238
+ });
8239
+ return filters;
8240
+ }
8241
+ toDisplay(val) {
8242
+ if (typeof val === 'boolean') {
8243
+ return val ? 'Yes' : 'No';
8244
+ // return val
8245
+ // ? translate.instant('ACTION.YES')
8246
+ // : translate.instant('ACTION.NO');
8247
+ }
8248
+ return String(val);
8249
+ }
8250
+ /**
8251
+ * Extracts a displayable value from an object or primitive.
8252
+ * - Prefers object.name, then object.label, object.value, or object.title.
8253
+ * - Falls back to JSON stringification for objects without display fields.
8254
+ * - Returns primitive values as-is.
8255
+ */
8256
+ extractItemNameOrValue(item) {
8257
+ if (item === null || item === undefined)
8258
+ return null;
8259
+ if (typeof item === 'object') {
8260
+ const cand = item.name ?? item.label ?? item.value ?? item.title;
8261
+ return cand !== undefined ? cand : JSON.stringify(item);
8262
+ }
8263
+ return item;
8264
+ }
8265
+ getNestedValue(obj, path) {
8266
+ return path.split('.').reduce((curr, key) => {
8267
+ return curr && curr[key] !== undefined ? curr[key] : null;
8268
+ }, obj);
8269
+ }
8173
8270
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: QuickPickSidePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8174
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: QuickPickSidePanelComponent, isStandalone: true, selector: "phoenix-quick-pick-sidepanel", inputs: { title: "title", data: "data", columns: "columns", tableConfiguration: "tableConfiguration", widthClass: "widthClass", isFullScreen: "isFullScreen", panelState: "panelState" }, outputs: { panelStateChange: "panelStateChange", onRowClick: "onRowClick", lazyLoadData: "lazyLoadData", handlePanelFullScreen: "handlePanelFullScreen" }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["drawer"], descendants: true }], ngImport: i0, template: "<p-drawer\n #drawer\n [visible]=\"drawerVisible()\"\n (visibleChange)=\"visibleChange($event)\"\n [header]=\"title | translate\"\n appendTo=\"body\"\n position=\"right\"\n [styleClass]=\"widthClass\"\n>\n <!-- Content -->\n <ng-container *ngIf=\"tableConfiguration\">\n <div class=\"px-2\">\n <phoenix-table\n [data]=\"data\"\n [columns]=\"columns\"\n [tableConfiguration]=\"tableConfiguration\"\n (rowSelection)=\"onTableRowClick($event)\"\n ></phoenix-table>\n </div>\n </ng-container>\n</p-drawer>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: DrawerModule }, { kind: "component", type: i2$2.Drawer, selector: "p-drawer", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "closeButtonProps", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen", "header", "maskStyle", "closable"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "component", type: TableComponent, selector: "phoenix-table", inputs: ["columns", "selectedColumnsInput", "tableConfiguration", "filters", "data"], outputs: ["actionClick", "rowSelection", "checkBoxSelection", "saveColumns"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "pipe", type: i4$2.TranslatePipe, name: "translate" }] });
8271
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: QuickPickSidePanelComponent, isStandalone: true, selector: "phoenix-quick-pick-sidepanel", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, tableConfiguration: { classPropertyName: "tableConfiguration", publicName: "tableConfiguration", isSignal: true, isRequired: false, transformFunction: null }, widthClass: { classPropertyName: "widthClass", publicName: "widthClass", isSignal: true, isRequired: false, transformFunction: null }, isFullScreen: { classPropertyName: "isFullScreen", publicName: "isFullScreen", isSignal: true, isRequired: false, transformFunction: null }, panelState: { classPropertyName: "panelState", publicName: "panelState", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { panelStateChange: "panelStateChange", onRowClick: "onRowClick", lazyLoadData: "lazyLoadData", handlePanelFullScreen: "handlePanelFullScreen" }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["drawer"], descendants: true }], ngImport: i0, template: "<p-drawer\n #drawer\n [visible]=\"drawerVisible()\"\n (visibleChange)=\"visibleChange($event)\"\n [header]=\"title() | translate\"\n appendTo=\"body\"\n position=\"right\"\n [styleClass]=\"widthClass()\"\n>\n <!-- Content -->\n @if (tableConfiguration()) {\n <div class=\"px-2\">\n <phoenix-table\n [data]=\"data()\"\n [columns]=\"columns()\"\n [tableConfiguration]=\"tableConfiguration()\"\n [filters]=\"filters()\"\n (rowSelection)=\"onTableRowClick($event)\"\n ></phoenix-table>\n </div>\n }\n</p-drawer>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DrawerModule }, { kind: "component", type: i2$2.Drawer, selector: "p-drawer", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "closeButtonProps", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen", "header", "maskStyle", "closable"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "component", type: TableComponent, selector: "phoenix-table", inputs: ["columns", "selectedColumnsInput", "tableConfiguration", "filters", "data"], outputs: ["actionClick", "rowSelection", "checkBoxSelection", "saveColumns"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "pipe", type: i4$2.TranslatePipe, name: "translate" }] });
8175
8272
  }
8176
8273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: QuickPickSidePanelComponent, decorators: [{
8177
8274
  type: Component,
@@ -8181,23 +8278,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
8181
8278
  TableComponent,
8182
8279
  TranslateModule,
8183
8280
  ButtonModule,
8184
- ], template: "<p-drawer\n #drawer\n [visible]=\"drawerVisible()\"\n (visibleChange)=\"visibleChange($event)\"\n [header]=\"title | translate\"\n appendTo=\"body\"\n position=\"right\"\n [styleClass]=\"widthClass\"\n>\n <!-- Content -->\n <ng-container *ngIf=\"tableConfiguration\">\n <div class=\"px-2\">\n <phoenix-table\n [data]=\"data\"\n [columns]=\"columns\"\n [tableConfiguration]=\"tableConfiguration\"\n (rowSelection)=\"onTableRowClick($event)\"\n ></phoenix-table>\n </div>\n </ng-container>\n</p-drawer>" }]
8281
+ ], template: "<p-drawer\n #drawer\n [visible]=\"drawerVisible()\"\n (visibleChange)=\"visibleChange($event)\"\n [header]=\"title() | translate\"\n appendTo=\"body\"\n position=\"right\"\n [styleClass]=\"widthClass()\"\n>\n <!-- Content -->\n @if (tableConfiguration()) {\n <div class=\"px-2\">\n <phoenix-table\n [data]=\"data()\"\n [columns]=\"columns()\"\n [tableConfiguration]=\"tableConfiguration()\"\n [filters]=\"filters()\"\n (rowSelection)=\"onTableRowClick($event)\"\n ></phoenix-table>\n </div>\n }\n</p-drawer>\n" }]
8185
8282
  }], propDecorators: { drawer: [{
8186
8283
  type: ViewChild,
8187
8284
  args: ['drawer']
8188
- }], title: [{
8189
- type: Input
8190
- }], data: [{
8191
- type: Input
8192
- }], columns: [{
8193
- type: Input
8194
- }], tableConfiguration: [{
8195
- type: Input
8196
- }], widthClass: [{
8197
- type: Input
8198
- }], isFullScreen: [{
8199
- type: Input
8200
- }], panelState: [{
8285
+ }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], tableConfiguration: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableConfiguration", required: false }] }], widthClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "widthClass", required: false }] }], isFullScreen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFullScreen", required: false }] }], panelState: [{
8201
8286
  type: Input
8202
8287
  }], panelStateChange: [{
8203
8288
  type: Output
@@ -10178,16 +10263,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
10178
10263
  type: Input
10179
10264
  }] } });
10180
10265
 
10266
+ /**
10267
+ * Splits a flat list of fields into row chunks for grid rendering.
10268
+ * A field with `style.newRow === true` always starts a fresh row,
10269
+ * regardless of how much space is left in the current row.
10270
+ * Fields without `newRow` keep flowing into the current row (existing
10271
+ * PrimeFlex wrap-by-colWidth behavior is preserved within each chunk).
10272
+ */
10273
+ function splitControlsIntoRows(controls) {
10274
+ if (!controls || !controls.length)
10275
+ return [];
10276
+ const rows = [];
10277
+ let current = [];
10278
+ for (const field of controls) {
10279
+ if (field?.style?.newRow && current.length) {
10280
+ rows.push(current);
10281
+ current = [];
10282
+ }
10283
+ current.push(field);
10284
+ }
10285
+ if (current.length)
10286
+ rows.push(current);
10287
+ return rows;
10288
+ }
10289
+
10181
10290
  class MetaFormGroupV2Component {
10182
10291
  group;
10183
10292
  form;
10184
10293
  readOnly = false;
10294
+ /** Group's fields split into row chunks, honoring `style.newRow` hard breaks. */
10295
+ get rows() {
10296
+ return splitControlsIntoRows(this.group?.ctrl);
10297
+ }
10185
10298
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MetaFormGroupV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
10186
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: MetaFormGroupV2Component, isStandalone: true, selector: "phoenix-meta-form-group-v2", inputs: { group: "group", form: "form", readOnly: "readOnly" }, ngImport: i0, template: "<div class=\"pho-group\" [formGroup]=\"form\">\n <div class=\"grid\">\n @for (f of group.ctrl; track f?.configuration?.key) {\n <div [ngClass]=\"f.style.colWidth || 'col-12 md:col-6'\">\n <phoenix-meta-form-field-v2 [field]=\"f\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-field-v2>\n </div>\n }\n </div>\n\n</div>", styles: [".pho-group{margin-bottom:16px}.pho-group__title{font-weight:700;margin-bottom:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MetaFormFieldV2Component, selector: "phoenix-meta-form-field-v2", inputs: ["field", "form", "readOnly", "disableForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10299
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: MetaFormGroupV2Component, isStandalone: true, selector: "phoenix-meta-form-group-v2", inputs: { group: "group", form: "form", readOnly: "readOnly" }, ngImport: i0, template: "<div class=\"pho-group\" [formGroup]=\"form\">\n @for (row of rows; track $index) {\n <div class=\"grid\">\n @for (f of row; track f?.configuration?.key) {\n <div [ngClass]=\"f.style.colWidth || 'col-12 md:col-6'\">\n <phoenix-meta-form-field-v2 [field]=\"f\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-field-v2>\n </div>\n }\n </div>\n }\n\n</div>", styles: [".pho-group{margin-bottom:16px}.pho-group__title{font-weight:700;margin-bottom:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MetaFormFieldV2Component, selector: "phoenix-meta-form-field-v2", inputs: ["field", "form", "readOnly", "disableForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10187
10300
  }
10188
10301
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MetaFormGroupV2Component, decorators: [{
10189
10302
  type: Component,
10190
- args: [{ selector: 'phoenix-meta-form-group-v2', standalone: true, imports: [CommonModule, ReactiveFormsModule, MetaFormFieldV2Component], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"pho-group\" [formGroup]=\"form\">\n <div class=\"grid\">\n @for (f of group.ctrl; track f?.configuration?.key) {\n <div [ngClass]=\"f.style.colWidth || 'col-12 md:col-6'\">\n <phoenix-meta-form-field-v2 [field]=\"f\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-field-v2>\n </div>\n }\n </div>\n\n</div>", styles: [".pho-group{margin-bottom:16px}.pho-group__title{font-weight:700;margin-bottom:8px}\n"] }]
10303
+ args: [{ selector: 'phoenix-meta-form-group-v2', standalone: true, imports: [CommonModule, ReactiveFormsModule, MetaFormFieldV2Component], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"pho-group\" [formGroup]=\"form\">\n @for (row of rows; track $index) {\n <div class=\"grid\">\n @for (f of row; track f?.configuration?.key) {\n <div [ngClass]=\"f.style.colWidth || 'col-12 md:col-6'\">\n <phoenix-meta-form-field-v2 [field]=\"f\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-field-v2>\n </div>\n }\n </div>\n }\n\n</div>", styles: [".pho-group{margin-bottom:16px}.pho-group__title{font-weight:700;margin-bottom:8px}\n"] }]
10191
10304
  }], propDecorators: { group: [{
10192
10305
  type: Input,
10193
10306
  args: [{ required: true }]
@@ -10800,6 +10913,13 @@ class MetaFormV2Component {
10800
10913
  get flatControls() {
10801
10914
  return this.config?.controls ?? [];
10802
10915
  }
10916
+ /**
10917
+ * Flat schema split into row chunks, honoring `style.newRow` hard breaks.
10918
+ * Used by the non-grouped grid template.
10919
+ */
10920
+ get controlRows() {
10921
+ return splitControlsIntoRows(this.flatControls);
10922
+ }
10803
10923
  /** TrackBy for group rendering */
10804
10924
  groupTrack(g, idx) {
10805
10925
  return g?.id ?? idx;
@@ -10907,7 +11027,7 @@ class MetaFormV2Component {
10907
11027
  this.depCleanup?.();
10908
11028
  }
10909
11029
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MetaFormV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
10910
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: MetaFormV2Component, isStandalone: true, selector: "phoenix-meta-form-v2", inputs: { form: "form", config: "config", readOnly: "readOnly", contentStyle: "contentStyle", contentClass: "contentClass" }, usesOnChanges: true, ngImport: i0, template: "<div [formGroup]=\"form\">\n @if (hasControls) {\n\n @if (isGrouped) {\n <p-accordion\n [multiple]=\"true\"\n [value]=\"expandedGroupIds\"\n (valueChange)=\"onAccordionValueChange($event)\"\n >\n @for (g of groupedControls; track groupTrack(g, $index)) {\n <p-accordion-panel [value]=\"panelValue(g)\">\n <p-accordion-header>\n\n <!-- plus/minus toggle icon -->\n <ng-template #toggleicon let-active=\"active\">\n @if (active) {\n <i class=\"pi pi-minus-circle\"></i>\n } @else {\n <i class=\"pi pi-plus-circle\"></i>\n }\n </ng-template>\n\n {{ g?.groupName | translate }}\n </p-accordion-header>\n \n <p-accordion-content>\n <div [ngStyle]=\"contentStyle\" [ngClass]=\"contentClass\">\n <phoenix-meta-form-group-v2 [group]=\"g\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-group-v2>\n </div>\n </p-accordion-content>\n </p-accordion-panel>\n }\n </p-accordion>\n\n } @else {\n <div class=\"grid\">\n @for (f of flatControls; track f.configuration.key) {\n <div [ngClass]=\"f.style.colWidth ?? 'col-12 md:col-6'\">\n <phoenix-meta-form-field-v2 [field]=\"f\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-field-v2>\n </div>\n }\n </div>\n }\n\n }\n</div>", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: AccordionModule }, { kind: "component", type: i3$1.Accordion, selector: "p-accordion", inputs: ["value", "multiple", "styleClass", "expandIcon", "collapseIcon", "selectOnFocus", "transitionOptions"], outputs: ["valueChange", "onClose", "onOpen"] }, { kind: "component", type: i3$1.AccordionPanel, selector: "p-accordion-panel, p-accordionpanel", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: i3$1.AccordionHeader, selector: "p-accordion-header, p-accordionheader" }, { kind: "component", type: i3$1.AccordionContent, selector: "p-accordion-content, p-accordioncontent" }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: MetaFormFieldV2Component, selector: "phoenix-meta-form-field-v2", inputs: ["field", "form", "readOnly", "disableForm"] }, { kind: "component", type: MetaFormGroupV2Component, selector: "phoenix-meta-form-group-v2", inputs: ["group", "form", "readOnly"] }, { kind: "pipe", type: i4$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11030
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: MetaFormV2Component, isStandalone: true, selector: "phoenix-meta-form-v2", inputs: { form: "form", config: "config", readOnly: "readOnly", contentStyle: "contentStyle", contentClass: "contentClass" }, usesOnChanges: true, ngImport: i0, template: "<div [formGroup]=\"form\">\n @if (hasControls) {\n\n @if (isGrouped) {\n <p-accordion\n [multiple]=\"true\"\n [value]=\"expandedGroupIds\"\n (valueChange)=\"onAccordionValueChange($event)\"\n >\n @for (g of groupedControls; track groupTrack(g, $index)) {\n <p-accordion-panel [value]=\"panelValue(g)\">\n <p-accordion-header>\n\n <!-- plus/minus toggle icon -->\n <ng-template #toggleicon let-active=\"active\">\n @if (active) {\n <i class=\"pi pi-minus-circle\"></i>\n } @else {\n <i class=\"pi pi-plus-circle\"></i>\n }\n </ng-template>\n\n {{ g?.groupName | translate }}\n </p-accordion-header>\n \n <p-accordion-content>\n <div [ngStyle]=\"contentStyle\" [ngClass]=\"contentClass\">\n <phoenix-meta-form-group-v2 [group]=\"g\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-group-v2>\n </div>\n </p-accordion-content>\n </p-accordion-panel>\n }\n </p-accordion>\n\n } @else {\n @for (row of controlRows; track $index) {\n <div class=\"grid\">\n @for (f of row; track f.configuration.key) {\n <div [ngClass]=\"f.style.colWidth ?? 'col-12 md:col-6'\">\n <phoenix-meta-form-field-v2 [field]=\"f\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-field-v2>\n </div>\n }\n </div>\n }\n }\n\n }\n</div>", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: AccordionModule }, { kind: "component", type: i3$1.Accordion, selector: "p-accordion", inputs: ["value", "multiple", "styleClass", "expandIcon", "collapseIcon", "selectOnFocus", "transitionOptions"], outputs: ["valueChange", "onClose", "onOpen"] }, { kind: "component", type: i3$1.AccordionPanel, selector: "p-accordion-panel, p-accordionpanel", inputs: ["value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: i3$1.AccordionHeader, selector: "p-accordion-header, p-accordionheader" }, { kind: "component", type: i3$1.AccordionContent, selector: "p-accordion-content, p-accordioncontent" }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: MetaFormFieldV2Component, selector: "phoenix-meta-form-field-v2", inputs: ["field", "form", "readOnly", "disableForm"] }, { kind: "component", type: MetaFormGroupV2Component, selector: "phoenix-meta-form-group-v2", inputs: ["group", "form", "readOnly"] }, { kind: "pipe", type: i4$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10911
11031
  }
10912
11032
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MetaFormV2Component, decorators: [{
10913
11033
  type: Component,
@@ -10918,7 +11038,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
10918
11038
  TranslateModule,
10919
11039
  MetaFormFieldV2Component,
10920
11040
  MetaFormGroupV2Component,
10921
- ], template: "<div [formGroup]=\"form\">\n @if (hasControls) {\n\n @if (isGrouped) {\n <p-accordion\n [multiple]=\"true\"\n [value]=\"expandedGroupIds\"\n (valueChange)=\"onAccordionValueChange($event)\"\n >\n @for (g of groupedControls; track groupTrack(g, $index)) {\n <p-accordion-panel [value]=\"panelValue(g)\">\n <p-accordion-header>\n\n <!-- plus/minus toggle icon -->\n <ng-template #toggleicon let-active=\"active\">\n @if (active) {\n <i class=\"pi pi-minus-circle\"></i>\n } @else {\n <i class=\"pi pi-plus-circle\"></i>\n }\n </ng-template>\n\n {{ g?.groupName | translate }}\n </p-accordion-header>\n \n <p-accordion-content>\n <div [ngStyle]=\"contentStyle\" [ngClass]=\"contentClass\">\n <phoenix-meta-form-group-v2 [group]=\"g\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-group-v2>\n </div>\n </p-accordion-content>\n </p-accordion-panel>\n }\n </p-accordion>\n\n } @else {\n <div class=\"grid\">\n @for (f of flatControls; track f.configuration.key) {\n <div [ngClass]=\"f.style.colWidth ?? 'col-12 md:col-6'\">\n <phoenix-meta-form-field-v2 [field]=\"f\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-field-v2>\n </div>\n }\n </div>\n }\n\n }\n</div>", styles: [":host{display:block}\n"] }]
11041
+ ], template: "<div [formGroup]=\"form\">\n @if (hasControls) {\n\n @if (isGrouped) {\n <p-accordion\n [multiple]=\"true\"\n [value]=\"expandedGroupIds\"\n (valueChange)=\"onAccordionValueChange($event)\"\n >\n @for (g of groupedControls; track groupTrack(g, $index)) {\n <p-accordion-panel [value]=\"panelValue(g)\">\n <p-accordion-header>\n\n <!-- plus/minus toggle icon -->\n <ng-template #toggleicon let-active=\"active\">\n @if (active) {\n <i class=\"pi pi-minus-circle\"></i>\n } @else {\n <i class=\"pi pi-plus-circle\"></i>\n }\n </ng-template>\n\n {{ g?.groupName | translate }}\n </p-accordion-header>\n \n <p-accordion-content>\n <div [ngStyle]=\"contentStyle\" [ngClass]=\"contentClass\">\n <phoenix-meta-form-group-v2 [group]=\"g\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-group-v2>\n </div>\n </p-accordion-content>\n </p-accordion-panel>\n }\n </p-accordion>\n\n } @else {\n @for (row of controlRows; track $index) {\n <div class=\"grid\">\n @for (f of row; track f.configuration.key) {\n <div [ngClass]=\"f.style.colWidth ?? 'col-12 md:col-6'\">\n <phoenix-meta-form-field-v2 [field]=\"f\" [form]=\"form\" [readOnly]=\"readOnly\"></phoenix-meta-form-field-v2>\n </div>\n }\n </div>\n }\n }\n\n }\n</div>", styles: [":host{display:block}\n"] }]
10922
11042
  }], propDecorators: { form: [{
10923
11043
  type: Input,
10924
11044
  args: [{ required: true }]