@acorex/platform 20.3.0-next.0 → 20.3.0-next.10
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/common/index.d.ts +8 -9
- package/core/index.d.ts +597 -46
- package/fesm2022/acorex-platform-auth.mjs +19 -19
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +111 -163
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +759 -113
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +16 -16
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +518 -95
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +1997 -215
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +86 -79
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity-create-entity.command-764ie8R8.mjs +52 -0
- package/fesm2022/acorex-platform-layout-entity-create-entity.command-764ie8R8.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity.mjs +1650 -916
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +37 -29
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +7 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +40 -40
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-I7Eq8Nti.mjs → acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs} +5 -5
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-D3VUh8K8.mjs → acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs} +30 -31
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs +101 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BMkhNfF4.mjs → acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs} +7 -7
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BMkhNfF4.mjs.map → acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-401.component-D4glpFvU.mjs → acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-401.component-D4glpFvU.mjs.map → acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-404.component-BvGeDMjo.mjs → acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-404.component-BvGeDMjo.mjs.map → acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-BINy-Zo3.mjs → acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-BINy-Zo3.mjs.map → acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +40 -40
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-C833prGO.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs} +24 -14
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs → acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs} +2 -2
- package/fesm2022/acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-DjKLg513.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs} +23 -8
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-DE0wO98F.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs} +23 -8
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +241 -74
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-BJtkWusr.mjs → acorex-platform-widgets-button-widget-designer.component-DSaD9Fwc.mjs} +5 -5
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-DSaD9Fwc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-schema-widget-edit.component-B3SJUnGQ.mjs → acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-extra-properties-schema-widget-edit.component-B3SJUnGQ.mjs.map → acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-extra-properties-schema-widget-view.component-BLR0JkRt.mjs → acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-extra-properties-schema-widget-view.component-BLR0JkRt.mjs.map → acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-extra-properties-values-widget-edit.component-hzR2FgOm.mjs → acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-extra-properties-values-widget-edit.component-hzR2FgOm.mjs.map → acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-extra-properties-values-widget-view.component-IDm6Clua.mjs → acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-extra-properties-values-widget-view.component-IDm6Clua.mjs.map → acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-extra-properties-widget-edit.component-BRO9tYDa.mjs → acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-extra-properties-widget-edit.component-BRO9tYDa.mjs.map → acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-extra-properties-widget-view.component-CkpLimyW.mjs → acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-extra-properties-widget-view.component-CkpLimyW.mjs.map → acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs → acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs} +5 -5
- package/fesm2022/acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-Cw9WcZze.mjs → acorex-platform-widgets-page-widget-designer.component-B-ZEi2yd.mjs} +6 -6
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-B-ZEi2yd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-BDQIfr0g.mjs → acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs} +11 -11
- package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-CmPqtt0G.mjs → acorex-platform-widgets-tabular-data-view-popup.component-CRpjdiNz.mjs} +6 -5
- package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-CRpjdiNz.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-DaR4Nkv4.mjs → acorex-platform-widgets-text-block-widget-designer.component-DeSmBqMa.mjs} +5 -6
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-DeSmBqMa.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +9725 -8964
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +25 -25
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/index.d.ts +69 -21
- package/layout/components/index.d.ts +816 -58
- package/layout/designer/index.d.ts +4 -2
- package/layout/entity/index.d.ts +437 -231
- package/package.json +8 -8
- package/widgets/index.d.ts +1806 -732
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-I7Eq8Nti.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D3VUh8K8.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-16sdMBvH.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-16sdMBvH.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-C833prGO.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DjKLg513.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DE0wO98F.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-BJtkWusr.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-DeKpl0uK.mjs +0 -84
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-DeKpl0uK.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-Cv7dEMCm.mjs +0 -55
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-Cv7dEMCm.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-C6-QPsnb.mjs +0 -76
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-C6-QPsnb.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-CohkI1w1.mjs +0 -55
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-CohkI1w1.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-file-rename-popup.component-DA_CgIvm.mjs +0 -211
- package/fesm2022/acorex-platform-widgets-file-rename-popup.component-DA_CgIvm.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-Cw9WcZze.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-CM_v-cL4.mjs +0 -40
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-CM_v-cL4.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-BDQIfr0g.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-CmPqtt0G.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-DaR4Nkv4.mjs.map +0 -1
|
@@ -158,10 +158,10 @@ class AXPLayoutBuilderService {
|
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
160
|
ngOnDestroy() { }
|
|
161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
162
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
161
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPLayoutBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
162
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPLayoutBuilderService }); }
|
|
163
163
|
}
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPLayoutBuilderService, decorators: [{
|
|
165
165
|
type: Injectable
|
|
166
166
|
}] });
|
|
167
167
|
|
|
@@ -284,13 +284,10 @@ const AXPWidgetsCatalog = {
|
|
|
284
284
|
color: 'color-editor',
|
|
285
285
|
contact: 'contact-editor',
|
|
286
286
|
dateTime: 'date-time-editor',
|
|
287
|
-
email: 'email-editor',
|
|
288
287
|
largeText: 'large-text-editor',
|
|
289
|
-
link: 'link-editor',
|
|
290
288
|
number: 'number-editor',
|
|
291
289
|
numberUnit: 'number-unit-editor',
|
|
292
290
|
password: 'password-editor',
|
|
293
|
-
phone: 'phone-editor',
|
|
294
291
|
richText: 'rich-text-editor',
|
|
295
292
|
select: 'select-editor',
|
|
296
293
|
selectionList: 'selection-list-editor',
|
|
@@ -317,7 +314,7 @@ const AXPWidgetsCatalog = {
|
|
|
317
314
|
advancedGridItem: 'advanced-grid-item-layout',
|
|
318
315
|
grid: 'grid-layout',
|
|
319
316
|
gridItem: 'grid-item-layout',
|
|
320
|
-
gridRow: 'grid-row-layout',
|
|
317
|
+
// gridRow: 'grid-row-layout',
|
|
321
318
|
widgetSelector: 'widget-selector',
|
|
322
319
|
template: 'template',
|
|
323
320
|
templateDesigner: 'template-designer',
|
|
@@ -327,6 +324,8 @@ const AXPWidgetsCatalog = {
|
|
|
327
324
|
border: 'border',
|
|
328
325
|
flexLayout: 'flex-layout',
|
|
329
326
|
flexItem: 'flex-item-layout',
|
|
327
|
+
tableLayout: 'table-layout',
|
|
328
|
+
tableItem: 'table-item-layout',
|
|
330
329
|
avatar: 'avatar',
|
|
331
330
|
themePaletteChooser: 'theme-palette-chooser',
|
|
332
331
|
themeModeChooser: 'theme-mode-chooser',
|
|
@@ -469,6 +468,7 @@ class AXPBaseWidgetComponent extends AXPLayoutElement {
|
|
|
469
468
|
this.config = this.token.config;
|
|
470
469
|
this.node = this.token.node;
|
|
471
470
|
this.name = this.token.node.name;
|
|
471
|
+
this.component = this;
|
|
472
472
|
this._options = signal(this.token.options ?? {}, ...(ngDevMode ? [{ debugName: "_options" }] : []));
|
|
473
473
|
this.options = this._options.asReadonly();
|
|
474
474
|
this.onOptionsChanged = new Subject();
|
|
@@ -526,17 +526,17 @@ class AXPBaseWidgetComponent extends AXPLayoutElement {
|
|
|
526
526
|
this._children.set([...children]);
|
|
527
527
|
}
|
|
528
528
|
onAdded() { }
|
|
529
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
530
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
529
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
530
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPBaseWidgetComponent }); }
|
|
531
531
|
}
|
|
532
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
532
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPBaseWidgetComponent, decorators: [{
|
|
533
533
|
type: Injectable
|
|
534
534
|
}] });
|
|
535
535
|
class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {
|
|
536
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
537
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
536
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPLayoutBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
537
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPLayoutBaseWidgetComponent }); }
|
|
538
538
|
}
|
|
539
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
539
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPLayoutBaseWidgetComponent, decorators: [{
|
|
540
540
|
type: Injectable
|
|
541
541
|
}] });
|
|
542
542
|
class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
@@ -640,10 +640,10 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
640
640
|
this.setValue(e.value);
|
|
641
641
|
}
|
|
642
642
|
}
|
|
643
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
644
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
643
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPValueWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
644
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPValueWidgetComponent }); }
|
|
645
645
|
}
|
|
646
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
646
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPValueWidgetComponent, decorators: [{
|
|
647
647
|
type: Injectable
|
|
648
648
|
}] });
|
|
649
649
|
class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
|
|
@@ -750,10 +750,10 @@ class AXPDataListWidgetComponent extends AXPValueWidgetComponent {
|
|
|
750
750
|
[this.textField()]: item,
|
|
751
751
|
};
|
|
752
752
|
}
|
|
753
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
754
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
753
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPDataListWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
754
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPDataListWidgetComponent }); }
|
|
755
755
|
}
|
|
756
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
756
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPDataListWidgetComponent, decorators: [{
|
|
757
757
|
type: Injectable
|
|
758
758
|
}] });
|
|
759
759
|
class AXPColumnWidgetComponent {
|
|
@@ -771,10 +771,10 @@ class AXPColumnWidgetComponent {
|
|
|
771
771
|
return this.rawValue;
|
|
772
772
|
}, ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
773
773
|
}
|
|
774
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
775
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
774
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPColumnWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
775
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPColumnWidgetComponent }); }
|
|
776
776
|
}
|
|
777
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
777
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{
|
|
778
778
|
type: Injectable
|
|
779
779
|
}] });
|
|
780
780
|
|
|
@@ -828,7 +828,7 @@ class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
828
828
|
return {
|
|
829
829
|
'ax-block': true,
|
|
830
830
|
'ax-w-full': true,
|
|
831
|
-
'ax-widget-outline': true,
|
|
831
|
+
// 'ax-widget-outline': true,
|
|
832
832
|
};
|
|
833
833
|
}, ...(ngDevMode ? [{ debugName: "blockClass" }] : []));
|
|
834
834
|
this.inlineClass = computed(() => {
|
|
@@ -837,10 +837,10 @@ class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
837
837
|
};
|
|
838
838
|
}, ...(ngDevMode ? [{ debugName: "inlineClass" }] : []));
|
|
839
839
|
}
|
|
840
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
841
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
840
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
841
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent }); }
|
|
842
842
|
}
|
|
843
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
843
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, decorators: [{
|
|
844
844
|
type: Injectable
|
|
845
845
|
}] });
|
|
846
846
|
|
|
@@ -850,10 +850,10 @@ class AXPBlockBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent
|
|
|
850
850
|
this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
851
851
|
this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
852
852
|
}
|
|
853
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
854
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
853
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
854
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent }); }
|
|
855
855
|
}
|
|
856
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
856
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, decorators: [{
|
|
857
857
|
type: Injectable
|
|
858
858
|
}] });
|
|
859
859
|
|
|
@@ -904,6 +904,7 @@ class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent
|
|
|
904
904
|
return {
|
|
905
905
|
...this.blockClass(),
|
|
906
906
|
'ax-flex': true,
|
|
907
|
+
'ax-h-full': true,
|
|
907
908
|
};
|
|
908
909
|
}, ...(ngDevMode ? [{ debugName: "hostFlexClass" }] : []));
|
|
909
910
|
this.hostClass = computed(() => {
|
|
@@ -913,10 +914,10 @@ class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent
|
|
|
913
914
|
return this.hostFlexStyle();
|
|
914
915
|
}, ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
915
916
|
}
|
|
916
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
917
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
917
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
918
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent }); }
|
|
918
919
|
}
|
|
919
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
920
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, decorators: [{
|
|
920
921
|
type: Injectable
|
|
921
922
|
}] });
|
|
922
923
|
|
|
@@ -926,10 +927,10 @@ class AXPInlineBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponen
|
|
|
926
927
|
this.hostClass = computed(() => this.inlineClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
927
928
|
this.hostStyle = computed(() => this.inlineStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
928
929
|
}
|
|
929
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
930
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
930
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
931
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent }); }
|
|
931
932
|
}
|
|
932
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, decorators: [{
|
|
933
934
|
type: Injectable
|
|
934
935
|
}] });
|
|
935
936
|
|
|
@@ -985,17 +986,17 @@ class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComp
|
|
|
985
986
|
return this.hostFlexItemStyle();
|
|
986
987
|
}, ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
987
988
|
}
|
|
988
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
989
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
989
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
990
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent }); }
|
|
990
991
|
}
|
|
991
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
992
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, decorators: [{
|
|
992
993
|
type: Injectable
|
|
993
994
|
}] });
|
|
994
995
|
|
|
995
996
|
class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
|
|
996
997
|
constructor() {
|
|
997
998
|
super(...arguments);
|
|
998
|
-
this.grid = computed(() => this.options()?.grid, ...(ngDevMode ? [{ debugName: "grid" }] : []));
|
|
999
|
+
this.grid = computed(() => this.options()?.['grid'], ...(ngDevMode ? [{ debugName: "grid" }] : []));
|
|
999
1000
|
this.hostGridStyle = computed(() => {
|
|
1000
1001
|
const style = { ...this.inlineStyle() };
|
|
1001
1002
|
const g = this.grid()?.default;
|
|
@@ -1024,20 +1025,28 @@ class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent
|
|
|
1024
1025
|
this.hostClass = computed(() => this.hostGridClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1025
1026
|
this.hostStyle = computed(() => this.hostGridStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
1026
1027
|
}
|
|
1027
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1028
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
1028
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1029
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent }); }
|
|
1029
1030
|
}
|
|
1030
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1031
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, decorators: [{
|
|
1031
1032
|
type: Injectable
|
|
1032
1033
|
}] });
|
|
1033
1034
|
|
|
1034
|
-
class AXPGridItemBaseLayoutWidgetComponent extends
|
|
1035
|
+
class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetComponent {
|
|
1035
1036
|
constructor() {
|
|
1036
1037
|
super(...arguments);
|
|
1037
1038
|
this.gridItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: "gridItem" }] : []));
|
|
1038
|
-
this.hostGridItemStyle = computed(() =>
|
|
1039
|
+
this.hostGridItemStyle = computed(() => {
|
|
1040
|
+
const style = { ...this.hostFlexStyle() };
|
|
1041
|
+
const g = this.gridItem();
|
|
1042
|
+
if (g?.alignSelf)
|
|
1043
|
+
style['align-self'] = g.alignSelf;
|
|
1044
|
+
if (g?.justifySelf)
|
|
1045
|
+
style['justify-self'] = g.justifySelf;
|
|
1046
|
+
return style;
|
|
1047
|
+
}, ...(ngDevMode ? [{ debugName: "hostGridItemStyle" }] : []));
|
|
1039
1048
|
this.hostGridItemClass = computed(() => {
|
|
1040
|
-
const cls = { ...this.
|
|
1049
|
+
const cls = { ...this.hostFlexClass() };
|
|
1041
1050
|
const g = this.gridItem();
|
|
1042
1051
|
if (g?.colSpan)
|
|
1043
1052
|
cls[`lg:ax-col-span-${g.colSpan}`] = true;
|
|
@@ -1056,10 +1065,60 @@ class AXPGridItemBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetCompo
|
|
|
1056
1065
|
this.hostClass = computed(() => this.hostGridItemClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1057
1066
|
this.hostStyle = computed(() => this.hostGridItemStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
1058
1067
|
}
|
|
1059
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1060
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
1068
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1069
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent }); }
|
|
1070
|
+
}
|
|
1071
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, decorators: [{
|
|
1072
|
+
type: Injectable
|
|
1073
|
+
}] });
|
|
1074
|
+
|
|
1075
|
+
class AXPTableBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
|
|
1076
|
+
constructor() {
|
|
1077
|
+
super(...arguments);
|
|
1078
|
+
this.hostTableClass = computed(() => ({
|
|
1079
|
+
...this.blockClass(),
|
|
1080
|
+
}), ...(ngDevMode ? [{ debugName: "hostTableClass" }] : []));
|
|
1081
|
+
this.hostTableStyle = computed(() => {
|
|
1082
|
+
const style = { ...this.blockStyle() };
|
|
1083
|
+
style['overflow-x'] = 'auto';
|
|
1084
|
+
return style;
|
|
1085
|
+
}, ...(ngDevMode ? [{ debugName: "hostTableStyle" }] : []));
|
|
1086
|
+
this.hostClass = computed(() => this.hostTableClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1087
|
+
this.hostStyle = computed(() => this.hostTableStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
1088
|
+
}
|
|
1089
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1090
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent }); }
|
|
1091
|
+
}
|
|
1092
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, decorators: [{
|
|
1093
|
+
type: Injectable
|
|
1094
|
+
}] });
|
|
1095
|
+
|
|
1096
|
+
class AXPTableItemOpsBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
|
|
1097
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1098
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent }); }
|
|
1061
1099
|
}
|
|
1062
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, decorators: [{
|
|
1101
|
+
type: Injectable
|
|
1102
|
+
}] });
|
|
1103
|
+
|
|
1104
|
+
class AXPTableItemBaseLayoutWidgetComponent extends AXPTableItemOpsBaseLayoutWidgetComponent {
|
|
1105
|
+
constructor() {
|
|
1106
|
+
super(...arguments);
|
|
1107
|
+
this.colSpan = computed(() => {
|
|
1108
|
+
const v = this.options()?.colSpan;
|
|
1109
|
+
return v ? Math.max(1, v) : 1;
|
|
1110
|
+
}, ...(ngDevMode ? [{ debugName: "colSpan" }] : []));
|
|
1111
|
+
this.rowSpan = computed(() => {
|
|
1112
|
+
const v = this.options()?.rowSpan;
|
|
1113
|
+
return v ? Math.max(1, v) : 1;
|
|
1114
|
+
}, ...(ngDevMode ? [{ debugName: "rowSpan" }] : []));
|
|
1115
|
+
this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
|
|
1116
|
+
this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: "hostStyle" }] : []));
|
|
1117
|
+
}
|
|
1118
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1119
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent }); }
|
|
1120
|
+
}
|
|
1121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, decorators: [{
|
|
1063
1122
|
type: Injectable
|
|
1064
1123
|
}] });
|
|
1065
1124
|
|
|
@@ -1090,10 +1149,10 @@ class AXPWidgetRegistryService {
|
|
|
1090
1149
|
all() {
|
|
1091
1150
|
return Array.from(this.types.values());
|
|
1092
1151
|
}
|
|
1093
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1094
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
1152
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1153
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetRegistryService, providedIn: 'root' }); }
|
|
1095
1154
|
}
|
|
1096
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1155
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetRegistryService, decorators: [{
|
|
1097
1156
|
type: Injectable,
|
|
1098
1157
|
args: [{
|
|
1099
1158
|
providedIn: 'root',
|
|
@@ -1175,8 +1234,8 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1175
1234
|
rowData: data,
|
|
1176
1235
|
};
|
|
1177
1236
|
}
|
|
1178
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1179
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
1237
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1238
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.8", type: AXPWidgetColumnRendererComponent, isStandalone: false, selector: "axp-widget-column-renderer", inputs: { caption: "caption", customExpandIcon: "customExpandIcon", customCollapseIcon: "customCollapseIcon", customWidth: "customWidth", node: "node", footerTemplate: "footerTemplate", expandHandler: "expandHandler", cellTemplate: "cellTemplate", headerTemplate: "headerTemplate" }, providers: [
|
|
1180
1239
|
AXPLayoutBuilderService,
|
|
1181
1240
|
{ provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },
|
|
1182
1241
|
], viewQueries: [{ propertyName: "_contentFooterTemplate", first: true, predicate: ["footer"], descendants: true }, { propertyName: "_contentCellTemplate", first: true, predicate: ["cell"], descendants: true }, { propertyName: "_contentHeaderTemplate", first: true, predicate: ["header"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
@@ -1212,7 +1271,7 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1212
1271
|
<ng-template #footer></ng-template>
|
|
1213
1272
|
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1214
1273
|
}
|
|
1215
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1274
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetColumnRendererComponent, decorators: [{
|
|
1216
1275
|
type: Component,
|
|
1217
1276
|
args: [{
|
|
1218
1277
|
selector: 'axp-widget-column-renderer',
|
|
@@ -1313,10 +1372,10 @@ class AXPWidgetContainerComponent {
|
|
|
1313
1372
|
find(name) {
|
|
1314
1373
|
return this.builderService.waitForWidget(name);
|
|
1315
1374
|
}
|
|
1316
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1317
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
1375
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1376
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.8", type: AXPWidgetContainerComponent, isStandalone: false, selector: "axp-widgets-container", inputs: { context: "context", functions: "functions" }, outputs: { onContextChanged: "onContextChanged" }, host: { styleAttribute: "display: contents;" }, providers: [AXPLayoutBuilderService, AXPLayoutBuilderContextStore], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1318
1377
|
}
|
|
1319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1378
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetContainerComponent, decorators: [{
|
|
1320
1379
|
type: Component,
|
|
1321
1380
|
args: [{
|
|
1322
1381
|
selector: 'axp-widgets-container',
|
|
@@ -1335,12 +1394,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
1335
1394
|
}] } });
|
|
1336
1395
|
|
|
1337
1396
|
class AXPWidgetPlaceholderComponent {
|
|
1338
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1339
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
1397
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1398
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.8", type: AXPWidgetPlaceholderComponent, isStandalone: true, selector: "axp-widget-placeholder", ngImport: i0, template: `<div>
|
|
1340
1399
|
<ax-skeleton class="ax-w-full ax-h-10 ax-rounded-md"></ax-skeleton>
|
|
1341
1400
|
</div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i1$1.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1342
1401
|
}
|
|
1343
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1402
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetPlaceholderComponent, decorators: [{
|
|
1344
1403
|
type: Component,
|
|
1345
1404
|
args: [{
|
|
1346
1405
|
selector: 'axp-widget-placeholder',
|
|
@@ -1354,6 +1413,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
1354
1413
|
}] });
|
|
1355
1414
|
|
|
1356
1415
|
class AXPWidgetRendererDirective {
|
|
1416
|
+
//#endregion
|
|
1357
1417
|
//#endregion
|
|
1358
1418
|
constructor() {
|
|
1359
1419
|
this.parentNode = input(...(ngDevMode ? [undefined, { debugName: "parentNode" }] : []));
|
|
@@ -1380,29 +1440,314 @@ class AXPWidgetRendererDirective {
|
|
|
1380
1440
|
this.renderTimeoutId = null;
|
|
1381
1441
|
this.hasInitialRender = false;
|
|
1382
1442
|
this.onContextChanged = new Subject();
|
|
1443
|
+
//#region ---- Performance Optimization Properties ----
|
|
1444
|
+
this.contextUpdateQueue = new Set();
|
|
1445
|
+
this.contextUpdateTimeout = null;
|
|
1446
|
+
this.CONTEXT_UPDATE_DEBOUNCE_MS = 4; // ~250fps for large forms
|
|
1447
|
+
// Removed visibility detection - not needed for current implementation
|
|
1448
|
+
// Expression result caching
|
|
1449
|
+
this.expressionCache = new Map();
|
|
1450
|
+
this.EXPRESSION_CACHE_TTL = 500; // Cache for 500ms (increased for better hit rate)
|
|
1451
|
+
// Options change tracking
|
|
1452
|
+
this.lastAppliedOptions = null;
|
|
1453
|
+
// Expression result tracking
|
|
1454
|
+
this.lastExpressionResults = new Map();
|
|
1455
|
+
// Buffer for context changes that happen before initial render completes
|
|
1456
|
+
this.preRenderContextQueue = new Set();
|
|
1383
1457
|
effect(async () => {
|
|
1384
1458
|
const changed = this.contextService.changeEvent();
|
|
1385
1459
|
// Don't trigger re-render during initial setup
|
|
1386
1460
|
if (!this.hasInitialRender) {
|
|
1461
|
+
if (changed.path) {
|
|
1462
|
+
this.preRenderContextQueue.add(changed.path);
|
|
1463
|
+
// console.log(`📝 [${this.node().type}] Buffered pre-render context change: ${changed.path}`);
|
|
1464
|
+
}
|
|
1387
1465
|
return;
|
|
1388
1466
|
}
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
await this.updateValueBasedOnFormula();
|
|
1394
|
-
}
|
|
1395
|
-
//
|
|
1396
|
-
if (changed.path) {
|
|
1397
|
-
this.onContextChanged.next({ path: changed.path });
|
|
1467
|
+
// CRITICAL PERFORMANCE FIX: Only respond to relevant context changes
|
|
1468
|
+
if (changed.path && this.isRelevantContextChange(changed.path)) {
|
|
1469
|
+
// console.log(`🎯 [${this.node().type}] Context change detected: ${changed.path}`);
|
|
1470
|
+
this.queueContextUpdate(changed.path);
|
|
1398
1471
|
}
|
|
1399
1472
|
});
|
|
1400
1473
|
this.builderService.onRefresh.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async () => {
|
|
1401
|
-
|
|
1402
|
-
|
|
1474
|
+
await this.processBatchedUpdates();
|
|
1475
|
+
});
|
|
1476
|
+
}
|
|
1477
|
+
//#region ---- Expression Caching Methods ----
|
|
1478
|
+
getCachedExpressionResult(expressionKey) {
|
|
1479
|
+
const cached = this.expressionCache.get(expressionKey);
|
|
1480
|
+
if (cached && performance.now() - cached.timestamp < this.EXPRESSION_CACHE_TTL) {
|
|
1481
|
+
// console.log(`💾 [${this.node().type}] Using cached expression result for '${expressionKey}'`);
|
|
1482
|
+
return cached.value;
|
|
1483
|
+
}
|
|
1484
|
+
return null;
|
|
1485
|
+
}
|
|
1486
|
+
setCachedExpressionResult(expressionKey, value) {
|
|
1487
|
+
this.expressionCache.set(expressionKey, {
|
|
1488
|
+
value,
|
|
1489
|
+
timestamp: performance.now(),
|
|
1490
|
+
});
|
|
1491
|
+
}
|
|
1492
|
+
clearExpressionCache() {
|
|
1493
|
+
this.expressionCache.clear();
|
|
1494
|
+
}
|
|
1495
|
+
isPathAffectingExpressions(changedPath) {
|
|
1496
|
+
// console.log(
|
|
1497
|
+
// `🔍 [${this.node().type}] Checking if path '${changedPath}' affects expressions. Expression count: ${this.expressionEvaluators.size}`,
|
|
1498
|
+
// );
|
|
1499
|
+
// If widget has no expressions, no need to clear cache
|
|
1500
|
+
if (this.expressionEvaluators.size === 0) {
|
|
1501
|
+
// console.log(`🔍 [${this.node().type}] Path '${changedPath}' - no expressions, keeping cache`);
|
|
1502
|
+
return false;
|
|
1503
|
+
}
|
|
1504
|
+
// Use the same logic as hasExpressionDependency to check for actual dependencies
|
|
1505
|
+
if (this.hasExpressionDependency(changedPath)) {
|
|
1506
|
+
// console.log(`🔍 [${this.node().type}] Path '${changedPath}' affects expressions - clearing cache`);
|
|
1507
|
+
return true;
|
|
1508
|
+
}
|
|
1509
|
+
// console.log(`🔍 [${this.node().type}] Path '${changedPath}' does not affect expressions - keeping cache`);
|
|
1510
|
+
return false;
|
|
1511
|
+
}
|
|
1512
|
+
//#endregion
|
|
1513
|
+
//#region ---- Context Batching Methods ----
|
|
1514
|
+
queueContextUpdate(path) {
|
|
1515
|
+
if (path) {
|
|
1516
|
+
// console.log(`🔄 [${this.node().type}] Queueing context update for path: ${path}`);
|
|
1517
|
+
this.contextUpdateQueue.add(path);
|
|
1518
|
+
// Clear existing timeout
|
|
1519
|
+
if (this.contextUpdateTimeout) {
|
|
1520
|
+
clearTimeout(this.contextUpdateTimeout);
|
|
1403
1521
|
}
|
|
1522
|
+
// Debounce updates
|
|
1523
|
+
this.contextUpdateTimeout = setTimeout(() => {
|
|
1524
|
+
// console.log(`⚡ [${this.node().type}] Processing batched updates for ${this.contextUpdateQueue.size} paths`);
|
|
1525
|
+
this.processBatchedUpdates();
|
|
1526
|
+
}, this.CONTEXT_UPDATE_DEBOUNCE_MS);
|
|
1527
|
+
}
|
|
1528
|
+
}
|
|
1529
|
+
async processBatchedUpdates() {
|
|
1530
|
+
if (this.contextUpdateQueue.size === 0)
|
|
1531
|
+
return;
|
|
1532
|
+
const startTime = performance.now();
|
|
1533
|
+
const paths = Array.from(this.contextUpdateQueue);
|
|
1534
|
+
this.contextUpdateQueue.clear();
|
|
1535
|
+
// console.log(`📊 [${this.node().type}] Processing ${paths.length} paths:`, paths);
|
|
1536
|
+
// Clear expression cache only if changed paths affect this widget's expressions
|
|
1537
|
+
const shouldClearCache = paths.some((path) => this.isPathAffectingExpressions(path));
|
|
1538
|
+
if (shouldClearCache) {
|
|
1539
|
+
// console.log(`🗑️ [${this.node().type}] Clearing expression cache due to expression-affecting path change`);
|
|
1540
|
+
this.clearExpressionCache();
|
|
1541
|
+
}
|
|
1542
|
+
// Process updates in batches
|
|
1543
|
+
const optionsStartTime = performance.now();
|
|
1544
|
+
const hasOptionsUpdate = await this.updateOptionsBasedOnContext();
|
|
1545
|
+
const optionsTime = performance.now() - optionsStartTime;
|
|
1546
|
+
if (typeof hasOptionsUpdate === 'number' && hasOptionsUpdate > 0) {
|
|
1547
|
+
// console.log(`🔧 [${this.node().type}] Options updated (${optionsTime.toFixed(2)}ms)`);
|
|
1548
|
+
this.applyOptions();
|
|
1549
|
+
}
|
|
1550
|
+
// Check formulas for any of the changed paths
|
|
1551
|
+
const formulaStartTime = performance.now();
|
|
1552
|
+
const formulaNeedsUpdate = paths.some((path) => this.checkFormulaForUpdate(this.node().formula, path));
|
|
1553
|
+
if (formulaNeedsUpdate) {
|
|
1554
|
+
// console.log(`🧮 [${this.node().type}] Formula needs update`);
|
|
1555
|
+
await this.updateValueBasedOnFormula();
|
|
1556
|
+
}
|
|
1557
|
+
const formulaTime = performance.now() - formulaStartTime;
|
|
1558
|
+
// Emit context changes
|
|
1559
|
+
paths.forEach((path) => {
|
|
1560
|
+
this.onContextChanged.next({ path });
|
|
1404
1561
|
});
|
|
1562
|
+
const totalTime = performance.now() - startTime;
|
|
1563
|
+
// console.log(
|
|
1564
|
+
// `✅ [${this.node().type}] Batch processing completed in ${totalTime.toFixed(2)}ms (options: ${optionsTime.toFixed(2)}ms, formula: ${formulaTime.toFixed(2)}ms)`,
|
|
1565
|
+
// );
|
|
1566
|
+
}
|
|
1567
|
+
//#endregion
|
|
1568
|
+
//#region ---- Context Relevance Filtering ----
|
|
1569
|
+
isRelevantContextChange(changedPath) {
|
|
1570
|
+
const node = this.node();
|
|
1571
|
+
// 1. Direct path match - widget's own field
|
|
1572
|
+
if (node.path === changedPath) {
|
|
1573
|
+
return true;
|
|
1574
|
+
}
|
|
1575
|
+
// 2. Parent path match - widget is inside the changed container
|
|
1576
|
+
if (node.path && changedPath.startsWith(node.path + '.')) {
|
|
1577
|
+
return true;
|
|
1578
|
+
}
|
|
1579
|
+
// 3. Child path match - changed field is inside this widget's container
|
|
1580
|
+
if (node.path && node.path.startsWith(changedPath + '.')) {
|
|
1581
|
+
return true;
|
|
1582
|
+
}
|
|
1583
|
+
// 4. Expression dependency check - if widget has expressions that depend on this path
|
|
1584
|
+
if (this.hasExpressionDependency(changedPath)) {
|
|
1585
|
+
return true;
|
|
1586
|
+
}
|
|
1587
|
+
// 5. Formula dependency check - if widget's formula depends on this path
|
|
1588
|
+
if (node.formula && this.checkFormulaForUpdate(node.formula, changedPath)) {
|
|
1589
|
+
return true;
|
|
1590
|
+
}
|
|
1591
|
+
// 6. Trigger dependency check - if widget has triggers that depend on this path
|
|
1592
|
+
if (this.hasTriggerDependency(changedPath)) {
|
|
1593
|
+
return true;
|
|
1594
|
+
}
|
|
1595
|
+
return false;
|
|
1596
|
+
}
|
|
1597
|
+
hasExpressionDependency(changedPath) {
|
|
1598
|
+
// Check if any cached expressions depend on the changed path
|
|
1599
|
+
for (const [path, evaluator] of this.expressionEvaluators) {
|
|
1600
|
+
// Check if the expression path itself contains the changed path
|
|
1601
|
+
if (path.includes(changedPath)) {
|
|
1602
|
+
return true;
|
|
1603
|
+
}
|
|
1604
|
+
// Parse the actual expression content to check for context.eval() calls
|
|
1605
|
+
// We need to get the original expression string to analyze it
|
|
1606
|
+
const node = this.node();
|
|
1607
|
+
const expressionValue = this.getExpressionValueFromNode(node, path);
|
|
1608
|
+
if (expressionValue && typeof expressionValue === 'string') {
|
|
1609
|
+
// Look for context.eval() calls that reference the changed path
|
|
1610
|
+
const contextEvalRegex = /context\.eval\(['"]([^'\"]+)['"]\)/g;
|
|
1611
|
+
let match;
|
|
1612
|
+
while ((match = contextEvalRegex.exec(expressionValue)) !== null) {
|
|
1613
|
+
const evalPath = match[1];
|
|
1614
|
+
// Normalize Id-suffixed segments to dot-id form (e.g., 'typeId' -> 'type.id', 'party.typeId' -> 'party.type.id')
|
|
1615
|
+
const normalizePath = (p) => {
|
|
1616
|
+
if (!p)
|
|
1617
|
+
return p;
|
|
1618
|
+
const parts = p.split('.');
|
|
1619
|
+
const last = parts[parts.length - 1];
|
|
1620
|
+
if (last && last.endsWith('Id')) {
|
|
1621
|
+
parts.splice(parts.length - 1, 1, last.slice(0, -2), 'id');
|
|
1622
|
+
}
|
|
1623
|
+
return parts.join('.');
|
|
1624
|
+
};
|
|
1625
|
+
const isSegmentSuffix = (a, b) => {
|
|
1626
|
+
if (!a || !b)
|
|
1627
|
+
return false;
|
|
1628
|
+
const pa = a.split('.');
|
|
1629
|
+
const pb = b.split('.');
|
|
1630
|
+
if (pb.length > pa.length)
|
|
1631
|
+
return false;
|
|
1632
|
+
for (let i = 1; i <= pb.length; i++) {
|
|
1633
|
+
if (pa[pa.length - i] !== pb[pb.length - i])
|
|
1634
|
+
return false;
|
|
1635
|
+
}
|
|
1636
|
+
return true;
|
|
1637
|
+
};
|
|
1638
|
+
const evalNorm = normalizePath(evalPath);
|
|
1639
|
+
const changedNorm = normalizePath(changedPath);
|
|
1640
|
+
// Debug log for dependency check
|
|
1641
|
+
// console.log(
|
|
1642
|
+
// `🧭 [${this.node().type}] dep-check expr='${path}', changed='${changedPath}', eval='${evalPath}', evalNorm='${evalNorm}', changedNorm='${changedNorm}'`,
|
|
1643
|
+
// );
|
|
1644
|
+
// Generic direct and hierarchical dependency checks (raw and normalized)
|
|
1645
|
+
const rawMatch = evalPath === changedPath ||
|
|
1646
|
+
evalPath.startsWith(changedPath + '.') ||
|
|
1647
|
+
changedPath.startsWith(evalPath + '.') ||
|
|
1648
|
+
isSegmentSuffix(evalPath, changedPath) ||
|
|
1649
|
+
isSegmentSuffix(changedPath, evalPath);
|
|
1650
|
+
const normMatch = evalNorm === changedNorm ||
|
|
1651
|
+
evalNorm.startsWith(changedNorm + '.') ||
|
|
1652
|
+
changedNorm.startsWith(evalNorm + '.') ||
|
|
1653
|
+
isSegmentSuffix(evalNorm, changedNorm) ||
|
|
1654
|
+
isSegmentSuffix(changedNorm, evalNorm);
|
|
1655
|
+
if (rawMatch || normMatch) {
|
|
1656
|
+
// console.log(
|
|
1657
|
+
// `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (generic match)`,
|
|
1658
|
+
// );
|
|
1659
|
+
return true;
|
|
1660
|
+
}
|
|
1661
|
+
// Check for path aliases/mappings (e.g., typeId.id <-> type.id)
|
|
1662
|
+
if (this.isPathAlias(evalPath, changedPath)) {
|
|
1663
|
+
// console.log(
|
|
1664
|
+
// `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (path alias)`,
|
|
1665
|
+
// );
|
|
1666
|
+
return true;
|
|
1667
|
+
}
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1671
|
+
return false;
|
|
1672
|
+
}
|
|
1673
|
+
isPathAlias(evalPath, changedPath) {
|
|
1674
|
+
// Dynamic path alias detection based on 'Id' suffix pattern
|
|
1675
|
+
// Examples: typeId.id <-> type.id, categoryId.name <-> category.name
|
|
1676
|
+
// Check if evalPath ends with 'Id' and has a property
|
|
1677
|
+
if (evalPath.endsWith('Id') && evalPath.includes('.')) {
|
|
1678
|
+
const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));
|
|
1679
|
+
const property = evalPath.substring(evalPath.lastIndexOf('.') + 1);
|
|
1680
|
+
const mappedPath = `${basePath}.${property}`;
|
|
1681
|
+
if (changedPath === mappedPath) {
|
|
1682
|
+
// console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);
|
|
1683
|
+
return true;
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
// Check if changedPath ends with 'Id' and has a property
|
|
1687
|
+
if (changedPath.endsWith('Id') && changedPath.includes('.')) {
|
|
1688
|
+
const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));
|
|
1689
|
+
const property = changedPath.substring(changedPath.lastIndexOf('.') + 1);
|
|
1690
|
+
const mappedPath = `${basePath}.${property}`;
|
|
1691
|
+
if (evalPath === mappedPath) {
|
|
1692
|
+
// console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);
|
|
1693
|
+
return true;
|
|
1694
|
+
}
|
|
1695
|
+
}
|
|
1696
|
+
// Check for direct 'Id' suffix mapping (e.g., typeId <-> type.id)
|
|
1697
|
+
if (evalPath.endsWith('Id') && !evalPath.includes('.')) {
|
|
1698
|
+
const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));
|
|
1699
|
+
const mappedPath = `${basePath}.id`;
|
|
1700
|
+
if (changedPath === mappedPath) {
|
|
1701
|
+
// console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);
|
|
1702
|
+
return true;
|
|
1703
|
+
}
|
|
1704
|
+
}
|
|
1705
|
+
if (changedPath.endsWith('Id') && !changedPath.includes('.')) {
|
|
1706
|
+
const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));
|
|
1707
|
+
const mappedPath = `${basePath}.id`;
|
|
1708
|
+
if (evalPath === mappedPath) {
|
|
1709
|
+
// console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);
|
|
1710
|
+
return true;
|
|
1711
|
+
}
|
|
1712
|
+
}
|
|
1713
|
+
return false;
|
|
1714
|
+
}
|
|
1715
|
+
getExpressionValueFromNode(node, path) {
|
|
1716
|
+
try {
|
|
1717
|
+
// Navigate through the node structure to find the expression value
|
|
1718
|
+
const pathParts = path.split('.');
|
|
1719
|
+
let current = node.options || {};
|
|
1720
|
+
// Navigate through the path parts
|
|
1721
|
+
for (const part of pathParts) {
|
|
1722
|
+
if (current && typeof current === 'object' && part in current) {
|
|
1723
|
+
current = current[part];
|
|
1724
|
+
}
|
|
1725
|
+
else {
|
|
1726
|
+
return null;
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
return typeof current === 'string' ? current : null;
|
|
1730
|
+
}
|
|
1731
|
+
catch (error) {
|
|
1732
|
+
// console.error('Error extracting expression value from node:', error);
|
|
1733
|
+
return null;
|
|
1734
|
+
}
|
|
1735
|
+
}
|
|
1736
|
+
hasTriggerDependency(changedPath) {
|
|
1737
|
+
const node = this.node();
|
|
1738
|
+
const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;
|
|
1739
|
+
if (!triggers)
|
|
1740
|
+
return false;
|
|
1741
|
+
// Check if any trigger event depends on the changed path
|
|
1742
|
+
for (const trigger of triggers) {
|
|
1743
|
+
if (trigger.event && trigger.event.includes(changedPath)) {
|
|
1744
|
+
return true;
|
|
1745
|
+
}
|
|
1746
|
+
}
|
|
1747
|
+
return false;
|
|
1405
1748
|
}
|
|
1749
|
+
//#endregion
|
|
1750
|
+
// Removed visibility detection methods - not needed for current implementation
|
|
1406
1751
|
// Detect input changes
|
|
1407
1752
|
ngOnChanges(changes) {
|
|
1408
1753
|
if (changes['mode'] || changes['node']) {
|
|
@@ -1428,6 +1773,9 @@ class AXPWidgetRendererDirective {
|
|
|
1428
1773
|
if (this.renderTimeoutId) {
|
|
1429
1774
|
clearTimeout(this.renderTimeoutId);
|
|
1430
1775
|
}
|
|
1776
|
+
if (this.contextUpdateTimeout) {
|
|
1777
|
+
clearTimeout(this.contextUpdateTimeout);
|
|
1778
|
+
}
|
|
1431
1779
|
if (this.componentRef) {
|
|
1432
1780
|
this.componentRef.destroy();
|
|
1433
1781
|
}
|
|
@@ -1461,7 +1809,7 @@ class AXPWidgetRendererDirective {
|
|
|
1461
1809
|
props[property.name] = evaluatedValue;
|
|
1462
1810
|
}
|
|
1463
1811
|
catch (error) {
|
|
1464
|
-
console.error(`Error evaluating default value expression for property ${property.name}:`, error);
|
|
1812
|
+
// console.error(`Error evaluating default value expression for property ${property.name}:`, error);
|
|
1465
1813
|
props[property.name] = cloneDeep(defaultValue); // Fallback to original value
|
|
1466
1814
|
}
|
|
1467
1815
|
}
|
|
@@ -1472,6 +1820,9 @@ class AXPWidgetRendererDirective {
|
|
|
1472
1820
|
}
|
|
1473
1821
|
//
|
|
1474
1822
|
this.mergedOptions.set(merge(props, widget?.options, this.node().options) || {});
|
|
1823
|
+
this.expressionEvaluators.clear();
|
|
1824
|
+
// Register expressions from widget defaults and node options to cover related-entity cases
|
|
1825
|
+
this.preprocessAndInitialOptions(cloneDeep(widget?.options));
|
|
1475
1826
|
this.preprocessAndInitialOptions(cloneDeep(this.node().options));
|
|
1476
1827
|
await this.updateOptionsBasedOnContext();
|
|
1477
1828
|
//
|
|
@@ -1502,7 +1853,7 @@ class AXPWidgetRendererDirective {
|
|
|
1502
1853
|
//
|
|
1503
1854
|
const com = await widget?.components[this.mode()]?.component();
|
|
1504
1855
|
if (!com) {
|
|
1505
|
-
console.error(`${this.node().type} widget component not found with mode: ${this.mode()}`);
|
|
1856
|
+
// console.error(`${this.node().type} widget component not found with mode: ${this.mode()}`);
|
|
1506
1857
|
return;
|
|
1507
1858
|
}
|
|
1508
1859
|
this.componentRef = this.viewContainerRef.createComponent(com, { injector: token });
|
|
@@ -1524,9 +1875,24 @@ class AXPWidgetRendererDirective {
|
|
|
1524
1875
|
loadingRef.destroy();
|
|
1525
1876
|
// Mark that initial render is complete
|
|
1526
1877
|
this.hasInitialRender = true;
|
|
1878
|
+
// Re-evaluate expressions after initial render to catch late-arriving related context
|
|
1879
|
+
if (this.expressionEvaluators.size > 0) {
|
|
1880
|
+
// console.log(`🔄 [${this.node().type}] Re-evaluating expressions after initial render`);
|
|
1881
|
+
await this.updateOptionsBasedOnContext();
|
|
1882
|
+
this.applyOptions();
|
|
1883
|
+
}
|
|
1884
|
+
// Process any buffered pre-render context changes now that the component is ready
|
|
1885
|
+
if (this.preRenderContextQueue.size > 0) {
|
|
1886
|
+
// console.log(
|
|
1887
|
+
// `🚀 [${this.node().type}] Processing ${this.preRenderContextQueue.size} buffered pre-render changes`,
|
|
1888
|
+
// );
|
|
1889
|
+
this.preRenderContextQueue.forEach((p) => this.contextUpdateQueue.add(p));
|
|
1890
|
+
this.preRenderContextQueue.clear();
|
|
1891
|
+
await this.processBatchedUpdates();
|
|
1892
|
+
}
|
|
1527
1893
|
}
|
|
1528
1894
|
catch (error) {
|
|
1529
|
-
console.error('Error loading component:', error);
|
|
1895
|
+
// console.error('Error loading component:', error);
|
|
1530
1896
|
}
|
|
1531
1897
|
finally {
|
|
1532
1898
|
this.isLoading.set(false);
|
|
@@ -1535,9 +1901,26 @@ class AXPWidgetRendererDirective {
|
|
|
1535
1901
|
applyOptions() {
|
|
1536
1902
|
if (!this.instance)
|
|
1537
1903
|
return;
|
|
1538
|
-
|
|
1539
|
-
|
|
1904
|
+
const currentOptions = this.mergedOptions();
|
|
1905
|
+
// Check if options have actually changed
|
|
1906
|
+
if (this.hasOptionsChanged(currentOptions)) {
|
|
1907
|
+
// console.log('applyOptions', this.node().path, '- options changed');
|
|
1908
|
+
this._options.update((val) => ({ ...val, ...currentOptions }));
|
|
1909
|
+
this.instance.setOptions(currentOptions);
|
|
1910
|
+
this.lastAppliedOptions = cloneDeep(currentOptions); // Deep clone using Lodash
|
|
1911
|
+
}
|
|
1912
|
+
else {
|
|
1913
|
+
// console.log('applyOptions', this.node().path, '- no changes, skipping');
|
|
1914
|
+
}
|
|
1540
1915
|
}
|
|
1916
|
+
hasOptionsChanged(newOptions) {
|
|
1917
|
+
if (!this.lastAppliedOptions) {
|
|
1918
|
+
return true; // First time, always apply
|
|
1919
|
+
}
|
|
1920
|
+
// Deep comparison of options using Lodash isEqual
|
|
1921
|
+
return !isEqual(newOptions, this.lastAppliedOptions);
|
|
1922
|
+
}
|
|
1923
|
+
// Removed deepCloneValue method - now using Lodash cloneDeep
|
|
1541
1924
|
checkFormulaForUpdate(formula, path) {
|
|
1542
1925
|
if (formula) {
|
|
1543
1926
|
const regex = /context\.eval\('([^']+)'\)/g;
|
|
@@ -1596,24 +1979,64 @@ class AXPWidgetRendererDirective {
|
|
|
1596
1979
|
});
|
|
1597
1980
|
}
|
|
1598
1981
|
async updateOptionsBasedOnContext() {
|
|
1982
|
+
// Early return if no expressions to evaluate
|
|
1983
|
+
if (this.expressionEvaluators.size === 0) {
|
|
1984
|
+
return 0;
|
|
1985
|
+
}
|
|
1986
|
+
// console.log(`🔍 [${this.node().type}] Evaluating ${this.expressionEvaluators.size} expressions`);
|
|
1599
1987
|
const updatePromises = Array.from(this.expressionEvaluators).map(async ([path, evaluator]) => {
|
|
1988
|
+
// Check cache first
|
|
1989
|
+
const cachedValue = this.getCachedExpressionResult(path);
|
|
1990
|
+
if (cachedValue !== null) {
|
|
1991
|
+
// console.log(`💾 [${this.node().type}] Using cached expression result for '${path}'`);
|
|
1992
|
+
return { path, newValue: cachedValue, fromCache: true };
|
|
1993
|
+
}
|
|
1994
|
+
// Evaluate expression if not cached
|
|
1995
|
+
const evalStartTime = performance.now();
|
|
1600
1996
|
const newValue = await evaluator();
|
|
1601
|
-
|
|
1997
|
+
const evalTime = performance.now() - evalStartTime;
|
|
1998
|
+
// Check if result has actually changed using Lodash isEqual
|
|
1999
|
+
const lastValue = this.lastExpressionResults.get(path);
|
|
2000
|
+
const hasChanged = !isEqual(newValue, lastValue);
|
|
2001
|
+
if (hasChanged) {
|
|
2002
|
+
// console.log(
|
|
2003
|
+
// `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value changed`,
|
|
2004
|
+
// );
|
|
2005
|
+
// Cache the result and track it
|
|
2006
|
+
this.setCachedExpressionResult(path, newValue);
|
|
2007
|
+
this.lastExpressionResults.set(path, cloneDeep(newValue));
|
|
2008
|
+
return { path, newValue, fromCache: false, hasChanged: true };
|
|
2009
|
+
}
|
|
2010
|
+
else {
|
|
2011
|
+
// console.log(
|
|
2012
|
+
// `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value unchanged, skipping update`,
|
|
2013
|
+
// );
|
|
2014
|
+
// Cache the result but don't update
|
|
2015
|
+
this.setCachedExpressionResult(path, newValue);
|
|
2016
|
+
this.lastExpressionResults.set(path, cloneDeep(newValue));
|
|
2017
|
+
return { path, newValue, fromCache: false, hasChanged: false };
|
|
2018
|
+
}
|
|
1602
2019
|
});
|
|
1603
2020
|
// Wait for all evaluators to complete
|
|
1604
2021
|
const updates = await Promise.all(updatePromises);
|
|
1605
|
-
//
|
|
1606
|
-
|
|
2022
|
+
// Filter updates to only include those that have actually changed
|
|
2023
|
+
const changedUpdates = updates.filter((update) => update.hasChanged !== false);
|
|
2024
|
+
// Apply updates to mergedOptions only for changed values
|
|
2025
|
+
if (changedUpdates.length > 0) {
|
|
1607
2026
|
this.mergedOptions.update((o) => {
|
|
1608
2027
|
const updatedOptions = { ...o };
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
set(updatedOptions, path, newValue); // Assuming 'set' can handle paths like 'property.subproperty'
|
|
2028
|
+
changedUpdates.forEach(({ path, newValue }) => {
|
|
2029
|
+
set(updatedOptions, path, newValue);
|
|
1612
2030
|
});
|
|
1613
2031
|
return updatedOptions;
|
|
1614
2032
|
});
|
|
1615
2033
|
}
|
|
1616
|
-
|
|
2034
|
+
const cacheHits = updates.filter((update) => update.fromCache).length;
|
|
2035
|
+
const skippedUpdates = updates.length - changedUpdates.length;
|
|
2036
|
+
// console.log(
|
|
2037
|
+
// `📋 [${this.node().type}] Applied ${changedUpdates.length} expression updates (${cacheHits} cache hits, ${skippedUpdates} skipped)`,
|
|
2038
|
+
// );
|
|
2039
|
+
return changedUpdates.length;
|
|
1617
2040
|
}
|
|
1618
2041
|
async updateValueBasedOnFormula() {
|
|
1619
2042
|
if (this.node().formula) {
|
|
@@ -1627,7 +2050,7 @@ class AXPWidgetRendererDirective {
|
|
|
1627
2050
|
return await this.expressionEvaluator.evaluate(templateExpression, scope);
|
|
1628
2051
|
}
|
|
1629
2052
|
catch (error) {
|
|
1630
|
-
console.error('Error evaluating expression:', error);
|
|
2053
|
+
// console.error('Error evaluating expression:', error);
|
|
1631
2054
|
return false;
|
|
1632
2055
|
}
|
|
1633
2056
|
}
|
|
@@ -1763,7 +2186,7 @@ class AXPWidgetRendererDirective {
|
|
|
1763
2186
|
}
|
|
1764
2187
|
}
|
|
1765
2188
|
catch (error) {
|
|
1766
|
-
console.error('Error assigning trigger:', error);
|
|
2189
|
+
// console.error('Error assigning trigger:', error);
|
|
1767
2190
|
}
|
|
1768
2191
|
}
|
|
1769
2192
|
}
|
|
@@ -1780,7 +2203,7 @@ class AXPWidgetRendererDirective {
|
|
|
1780
2203
|
}
|
|
1781
2204
|
}
|
|
1782
2205
|
catch (error) {
|
|
1783
|
-
console.error('Error evaluating trigger expression:', error);
|
|
2206
|
+
// console.error('Error evaluating trigger expression:', error);
|
|
1784
2207
|
return null;
|
|
1785
2208
|
}
|
|
1786
2209
|
}
|
|
@@ -1790,17 +2213,17 @@ class AXPWidgetRendererDirective {
|
|
|
1790
2213
|
await this.expressionEvaluator.evaluate(templateExpression, scope);
|
|
1791
2214
|
}
|
|
1792
2215
|
catch (error) {
|
|
1793
|
-
console.error('Error evaluating action expression:', templateExpression, error);
|
|
2216
|
+
// console.error('Error evaluating action expression:', templateExpression, error);
|
|
1794
2217
|
}
|
|
1795
2218
|
}
|
|
1796
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1797
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.
|
|
2219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2220
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.8", type: AXPWidgetRendererDirective, isStandalone: false, selector: "[axp-widget-renderer]", inputs: { parentNode: { classPropertyName: "parentNode", publicName: "parentNode", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onOptionsChanged: "onOptionsChanged", onValueChanged: "onValueChanged" }, providers: [
|
|
1798
2221
|
{
|
|
1799
2222
|
provide: AXUnsubscriber,
|
|
1800
2223
|
},
|
|
1801
2224
|
], exportAs: ["widgetRenderer"], usesOnChanges: true, ngImport: i0 }); }
|
|
1802
2225
|
}
|
|
1803
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2226
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPWidgetRendererDirective, decorators: [{
|
|
1804
2227
|
type: Directive,
|
|
1805
2228
|
args: [{
|
|
1806
2229
|
selector: '[axp-widget-renderer]',
|
|
@@ -1856,11 +2279,11 @@ class AXPLayoutBuilderModule {
|
|
|
1856
2279
|
f();
|
|
1857
2280
|
});
|
|
1858
2281
|
}
|
|
1859
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1860
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.
|
|
1861
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.
|
|
2282
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPLayoutBuilderModule, deps: [{ token: 'AXPLayoutBuilderModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2283
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.8", ngImport: i0, type: AXPLayoutBuilderModule, declarations: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective], imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule], exports: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective] }); }
|
|
2284
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPLayoutBuilderModule, imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule] }); }
|
|
1862
2285
|
}
|
|
1863
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXPLayoutBuilderModule, decorators: [{
|
|
1864
2287
|
type: NgModule,
|
|
1865
2288
|
args: [{
|
|
1866
2289
|
imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule],
|
|
@@ -2091,5 +2514,5 @@ var AXPWidgetGroupEnum;
|
|
|
2091
2514
|
* Generated bundle index. Do not edit.
|
|
2092
2515
|
*/
|
|
2093
2516
|
|
|
2094
|
-
export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPLayoutBuilderContextStore, AXPLayoutBuilderModule, AXPLayoutBuilderService, AXPLayoutContextChangeEvent, AXPLayoutElement, AXPPageStatus, AXPPropertyEditorHelper, AXPValueWidgetComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetGroupEnum, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetStatus, AXPWidgetsCatalog, AXP_WIDGETS_ACTION_CATEGORY, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_CATEGORIES, AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_TOKEN, cloneProperty, createBooleanProperty, createNumberProperty, createSelectProperty, createStringProperty, findNonEmptyBreakpoints };
|
|
2517
|
+
export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPLayoutBuilderContextStore, AXPLayoutBuilderModule, AXPLayoutBuilderService, AXPLayoutContextChangeEvent, AXPLayoutElement, AXPPageStatus, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetGroupEnum, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetStatus, AXPWidgetsCatalog, AXP_WIDGETS_ACTION_CATEGORY, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_CATEGORIES, AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_TOKEN, cloneProperty, createBooleanProperty, createNumberProperty, createSelectProperty, createStringProperty, findNonEmptyBreakpoints };
|
|
2095
2518
|
//# sourceMappingURL=acorex-platform-layout-builder.mjs.map
|