@acorex/platform 19.1.2 → 19.1.3

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.
Files changed (78) hide show
  1. package/common/index.d.ts +1 -0
  2. package/common/lib/app/application.types.d.ts +10 -8
  3. package/common/lib/configs/app.config.d.ts +0 -1
  4. package/common/lib/filters/filters.service.d.ts +8 -0
  5. package/common/lib/filters/filters.types.d.ts +18 -0
  6. package/common/lib/filters/index.d.ts +2 -0
  7. package/common/lib/settings/setting-definition.provider.d.ts +4 -2
  8. package/common/lib/settings/setting.builder.d.ts +3 -5
  9. package/fesm2022/acorex-platform-auth.mjs +5 -4
  10. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-common.mjs +71 -14
  12. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-builder.mjs +72 -27
  14. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-designer.mjs +7 -7
  16. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-entity.mjs +280 -182
  18. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-filters.mjs +47 -0
  20. package/fesm2022/acorex-platform-layout-filters.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-layout-setting.mjs +174 -69
  22. package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layouts.mjs +1 -1
  24. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-B13KvLX4.mjs → acorex-platform-themes-default-entity-master-create-view.component-CSyR4pYp.mjs} +5 -5
  26. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-B13KvLX4.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-CSyR4pYp.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-B6MXHPWi.mjs → acorex-platform-themes-default-entity-master-list-view.component-xHWp2Lk-.mjs} +81 -18
  28. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-xHWp2Lk-.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-tKCGSRQT.mjs → acorex-platform-themes-default-entity-master-modify-view.component-n7mYNduJ.mjs} +6 -6
  30. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-tKCGSRQT.mjs.map → acorex-platform-themes-default-entity-master-modify-view.component-n7mYNduJ.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-CHvC0IAV.mjs → acorex-platform-themes-default-entity-master-single-view.component-DjyYU0Gy.mjs} +14 -14
  32. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-CHvC0IAV.mjs.map → acorex-platform-themes-default-entity-master-single-view.component-DjyYU0Gy.mjs.map} +1 -1
  33. package/fesm2022/acorex-platform-themes-default-setting-page.component-6Dd8MGqr.mjs +78 -0
  34. package/fesm2022/acorex-platform-themes-default-setting-page.component-6Dd8MGqr.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-themes-default-setting-view.component-BgiMClew.mjs +58 -0
  36. package/fesm2022/acorex-platform-themes-default-setting-view.component-BgiMClew.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-themes-default.mjs +38 -112
  38. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  39. package/fesm2022/acorex-platform-themes-shared.mjs +187 -86
  40. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  41. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-juhKoygA.mjs → acorex-platform-widgets-checkbox-widget-designer.component-B_Gec5Qf.mjs} +3 -3
  42. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-B_Gec5Qf.mjs.map +1 -0
  43. package/fesm2022/acorex-platform-widgets.mjs +213 -78
  44. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  45. package/layout/builder/lib/builder/widget-renderer.component.directive.d.ts +3 -4
  46. package/layout/builder/lib/builder/widget.types.d.ts +11 -5
  47. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +2 -1
  48. package/layout/entity/lib/workflows/modify-entity.workflow.d.ts +14 -0
  49. package/layout/filters/README.md +3 -0
  50. package/layout/filters/index.d.ts +1 -0
  51. package/layout/filters/lib/filters.viewmodel.d.ts +20 -0
  52. package/layout/setting/lib/setting.viewmodel.d.ts +23 -21
  53. package/package.json +16 -12
  54. package/themes/default/index.d.ts +0 -1
  55. package/themes/default/lib/layouts/base/simple-page/simple-page.layout.d.ts +5 -5
  56. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-filters/list-view-option-filters.component.d.ts +11 -0
  57. package/themes/default/lib/layouts/filters-layout/simple-filter-builder/filters-view.component.d.ts +12 -0
  58. package/themes/default/lib/layouts/setting-layout/setting-page/setting-page.component.d.ts +47 -2
  59. package/themes/default/lib/layouts/setting-layout/setting-view/setting-view.component.d.ts +43 -0
  60. package/themes/shared/lib/components/layout-elements/index.d.ts +5 -3
  61. package/themes/shared/lib/components/layout-elements/{layout-page-actions.component.d.ts → layout-actions.component.d.ts} +5 -5
  62. package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +1 -1
  63. package/themes/shared/lib/components/layout-elements/layout-header.component.d.ts +12 -0
  64. package/themes/shared/lib/components/layout-elements/layout-list-component.d.ts +13 -0
  65. package/themes/shared/lib/components/layout-elements/layout-section.component.d.ts +9 -0
  66. package/themes/shared/lib/components/layout-elements/layout-side.component.d.ts +9 -0
  67. package/themes/shared/lib/shared.module.d.ts +3 -1
  68. package/widgets/lib/properties/editors.props.d.ts +2 -0
  69. package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +1 -0
  70. package/widgets/lib/widgets/property-editors/border/border-widget-editor.component.d.ts +1 -0
  71. package/widgets/lib/widgets/property-editors/border/index.d.ts +1 -0
  72. package/widgets/lib/widgets/property-editors/spacing/spacing-widget-editor.component.d.ts +14 -3
  73. package/widgets/lib/widgets/property-editors/spacing/spacing-widget-type.d.ts +6 -0
  74. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-B6MXHPWi.mjs.map +0 -1
  75. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-juhKoygA.mjs.map +0 -1
  76. package/themes/default/lib/layouts/setting-layout/index.d.ts +0 -1
  77. package/themes/shared/lib/components/layout-elements/layout-page-header.component.d.ts +0 -11
  78. package/themes/shared/lib/components/layout-elements/layout-page-side.component.d.ts +0 -5
@@ -7,8 +7,8 @@ import { CommonModule } from '@angular/common';
7
7
  import * as i0 from '@angular/core';
8
8
  import { signal, Injectable, InjectionToken, inject, ElementRef, afterNextRender, computed, effect, Injector, Component, ChangeDetectionStrategy, Input, EventEmitter, model, Output, ChangeDetectorRef, ViewChild, input, ViewContainerRef, Directive, NgModule, Optional, Inject } from '@angular/core';
9
9
  import { AXUnsubscriber } from '@acorex/core/utils';
10
- import { set, get, isEqual, clone, merge, cloneDeep, isNil, isUndefined, sum } from 'lodash-es';
11
- import { Subject, debounceTime, filter } from 'rxjs';
10
+ import { set, get, isEqual, clone, merge, isNil, cloneDeep, isUndefined, sum } from 'lodash-es';
11
+ import { Subject, filter } from 'rxjs';
12
12
  import { convertArrayToDataSource, AXDataSource } from '@acorex/components/common';
13
13
  import { AXDataTableColumnComponent, AXBaseDataTable } from '@acorex/components/data-table';
14
14
 
@@ -67,25 +67,33 @@ class AXPLayoutBuilderService {
67
67
  if (isEqual(oldValue, value)) {
68
68
  return;
69
69
  }
70
- if (!this.debouncers[path]) {
71
- // Create a new Subject for debouncing if it doesn't exist
72
- this.debouncers[path] = new Subject();
73
- // Subscribe to the subject with debounceTime
74
- this.debouncerSubscriptions[path] = this.debouncers[path].pipe(debounceTime(150)).subscribe(({ value, init }) => {
75
- // Only emit onChanged event after debounce time
76
- this.onChanged.next({
77
- oldValue: oldValue,
78
- newValue: value,
79
- data: this.context(),
80
- path,
81
- init,
82
- });
83
- });
84
- }
70
+ // if (!this.debouncers[path]) {
71
+ // // Create a new Subject for debouncing if it doesn't exist
72
+ // this.debouncers[path] = new Subject<{ path: string; value: any; init: boolean }>();
73
+ // // Subscribe to the subject with debounceTime
74
+ // this.debouncerSubscriptions[path] = this.debouncers[path].pipe(debounceTime(150)).subscribe(({ value, init }) => {
75
+ // // Only emit onChanged event after debounce time
76
+ // this.onChanged.next({
77
+ // oldValue: oldValue,
78
+ // newValue: value,
79
+ // data: this.context(),
80
+ // path,
81
+ // init,
82
+ // });
83
+ // });
84
+ // }
85
85
  // Update context immediately
86
86
  this.context$.update((ctx) => set(clone(ctx), path, value));
87
+ //
88
+ this.onChanged.next({
89
+ oldValue: oldValue,
90
+ newValue: value,
91
+ data: this.context(),
92
+ path,
93
+ init,
94
+ });
87
95
  // Emit value through the debouncer subject
88
- this.debouncers[path].next({ path, value, init });
96
+ //this.debouncers[path].next({ path, value, init });
89
97
  }
90
98
  getValue(path) {
91
99
  return get(this.context(), path);
@@ -211,6 +219,20 @@ const AXPWidgetsCatalog = {
211
219
  border: 'border',
212
220
  };
213
221
 
222
+ function objectKeyValueTransforms(keyName) {
223
+ return {
224
+ getter: (value) => {
225
+ if (isNil(value))
226
+ return undefined;
227
+ return typeof value == 'object' ? value[keyName] : value;
228
+ },
229
+ setter: (value) => {
230
+ if (isNil(value))
231
+ return undefined;
232
+ return typeof value == 'object' ? value[keyName] : value;
233
+ }
234
+ };
235
+ }
214
236
  function cloneProperty(property, values) {
215
237
  return merge(cloneDeep(property), values);
216
238
  }
@@ -311,6 +333,9 @@ class AXPWidgetComponent extends AXPLayoutElement {
311
333
  get id() {
312
334
  return this._id;
313
335
  }
336
+ outputs() {
337
+ return [];
338
+ }
314
339
  ngOnInit() {
315
340
  this.initRender();
316
341
  }
@@ -349,11 +374,20 @@ class AXPWidgetComponent extends AXPLayoutElement {
349
374
  if (this.fullPath()) {
350
375
  this.contextService.setValue(this.fullPath(), value, init);
351
376
  }
352
- this.onValueChanged(oldValue, value);
377
+ this.onValueChanged(oldValue, value, init);
353
378
  }
354
379
  setOptions(values) {
355
380
  this._options.set({ ...this.options(), ...values });
356
381
  }
382
+ output(name) {
383
+ if (this.outputs().includes(name)) {
384
+ const opt = get(this, name);
385
+ if (typeof opt == 'function') {
386
+ return opt();
387
+ }
388
+ }
389
+ return null;
390
+ }
357
391
  call(name, ...args) {
358
392
  const fn = get(this, name);
359
393
  if (fn && typeof fn == 'function') {
@@ -363,7 +397,7 @@ class AXPWidgetComponent extends AXPLayoutElement {
363
397
  setChildren(children) {
364
398
  this._children.set([...children]);
365
399
  }
366
- onValueChanged(oldValue, newValue) { }
400
+ onValueChanged(oldValue, newValue, init = false) { }
367
401
  onAdded() { }
368
402
  detectFullPath() {
369
403
  const sections = [];
@@ -412,9 +446,9 @@ class AXPDataListWidgetComponent extends AXPWidgetComponent {
412
446
  super(...arguments);
413
447
  this.dataService = inject(AXPWidgetDataSourceProviderService);
414
448
  this.dataSource = signal(convertArrayToDataSource([]));
415
- //protected items = computed<any[]>(() => this.options()['items'] ?? []);
416
449
  this.textField = computed(() => this.options()['textField'] ?? 'title');
417
450
  this.valueField = computed(() => this.options()['valueField'] ?? 'id');
451
+ this.selectedItems = signal([]);
418
452
  this.rf = effect(() => {
419
453
  const rawValue = this.options()['dataSource'];
420
454
  // static datasource class
@@ -433,7 +467,7 @@ class AXPDataListWidgetComponent extends AXPWidgetComponent {
433
467
  if (this.mode == 'designer' && c?.samples?.length) {
434
468
  this.dataSource.set(convertArrayToDataSource(c.samples, {
435
469
  key: this.valueField(),
436
- pageSize: 100,
470
+ pageSize: 500,
437
471
  }));
438
472
  }
439
473
  else {
@@ -999,7 +1033,7 @@ class AXPWidgetRendererDirective {
999
1033
  this.index = input();
1000
1034
  this.mode = input.required();
1001
1035
  this.node = input.required();
1002
- this._options = signal({ needLabel: true });
1036
+ this._options = signal({});
1003
1037
  this.options = this._options.asReadonly();
1004
1038
  this.mergedOptions = signal({});
1005
1039
  this.injector = inject(Injector);
@@ -1057,7 +1091,6 @@ class AXPWidgetRendererDirective {
1057
1091
  //
1058
1092
  const widget = this.widgetRegistery.resolve(this.node().type);
1059
1093
  //
1060
- this._options.update((val) => ({ ...val, ...widget?.options }));
1061
1094
  //
1062
1095
  const props = [...(widget?.properties ?? []), ...(widget?.components[this.mode()]?.properties ?? [])]
1063
1096
  ?.filter((c) => c.schema.defaultValue != null)
@@ -1070,6 +1103,8 @@ class AXPWidgetRendererDirective {
1070
1103
  this.preprocessAndInitialOptions(cloneDeep(this.node().options));
1071
1104
  await this.updateOptionsBasedOnContext();
1072
1105
  //
1106
+ this._options.update((val) => ({ ...val, ...this.mergedOptions() }));
1107
+ //
1073
1108
  const tokenValue = {
1074
1109
  node: this.node(),
1075
1110
  options: this.mergedOptions(),
@@ -1099,6 +1134,7 @@ class AXPWidgetRendererDirective {
1099
1134
  applyOptions() {
1100
1135
  if (!this.instance)
1101
1136
  return;
1137
+ this._options.update((val) => ({ ...val, ...this.mergedOptions() }));
1102
1138
  this.instance.setOptions(this.mergedOptions());
1103
1139
  }
1104
1140
  checkFormulaForUpdate(formula, path) {
@@ -1207,6 +1243,9 @@ class AXPWidgetRendererDirective {
1207
1243
  getContextScope() {
1208
1244
  const scope = {};
1209
1245
  set(scope, 'eval', (path) => this.builderService.getValue(path));
1246
+ set(scope, 'set', (path, value) => {
1247
+ this.builderService.setValue(path, value);
1248
+ });
1210
1249
  return scope;
1211
1250
  }
1212
1251
  getEventScope() {
@@ -1220,8 +1259,14 @@ class AXPWidgetRendererDirective {
1220
1259
  set(scope, 'call', (name, ...args) => {
1221
1260
  this.instance.call(name, ...args);
1222
1261
  });
1262
+ set(scope, 'setValue', (value) => {
1263
+ this.instance.setValue(value);
1264
+ });
1265
+ set(scope, 'output', (name) => {
1266
+ this.instance.output(name);
1267
+ });
1223
1268
  set(scope, 'find', (id) => {
1224
- return this.builderService.getWidget(id)?.api();
1269
+ return this.builderService.getWidget(id);
1225
1270
  });
1226
1271
  return scope;
1227
1272
  }
@@ -1294,7 +1339,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
1294
1339
  type: Directive,
1295
1340
  args: [{
1296
1341
  selector: '[axp-widget-renderer]',
1297
- exportAs: 'widgetRenderer', // Add this line
1342
+ exportAs: 'widgetRenderer',
1298
1343
  providers: [
1299
1344
  {
1300
1345
  provide: AXUnsubscriber,
@@ -1393,5 +1438,5 @@ const AXP_WIDGETS_GROUPS = [
1393
1438
  * Generated bundle index. Do not edit.
1394
1439
  */
1395
1440
 
1396
- export { AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPLayoutBuilderModule, AXPLayoutBuilderService, AXPLayoutElement, AXPWidgetColumnRendererComponent, AXPWidgetComponent, AXPWidgetContainerComponent, AXPWidgetDataSourceProviderService, AXPWidgetRegistryService, AXPWidgetRendererComponent, AXPWidgetRendererDirective, AXPWidgetsCatalog, AXP_WIDGETS_ACTION_GROUP, AXP_WIDGETS_ADVANCE_GROUP, AXP_WIDGETS_EDITOR_GROUP, AXP_WIDGETS_GROUPS, AXP_WIDGETS_LAYOUT_GROUP, AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_DATASOURCE_PROVIDER, AXP_WIDGET_TOKEN, cloneProperty, createBooleanProperty, createSelectProperty, createStringProperty };
1441
+ export { AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPLayoutBuilderModule, AXPLayoutBuilderService, AXPLayoutElement, AXPWidgetColumnRendererComponent, AXPWidgetComponent, AXPWidgetContainerComponent, AXPWidgetDataSourceProviderService, AXPWidgetRegistryService, AXPWidgetRendererComponent, AXPWidgetRendererDirective, AXPWidgetsCatalog, AXP_WIDGETS_ACTION_GROUP, AXP_WIDGETS_ADVANCE_GROUP, AXP_WIDGETS_EDITOR_GROUP, AXP_WIDGETS_GROUPS, AXP_WIDGETS_LAYOUT_GROUP, AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_DATASOURCE_PROVIDER, AXP_WIDGET_TOKEN, cloneProperty, createBooleanProperty, createSelectProperty, createStringProperty, objectKeyValueTransforms };
1397
1442
  //# sourceMappingURL=acorex-platform-layout-builder.mjs.map