@acorex/platform 20.2.4-next.2 → 20.2.4-next.5

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 (36) hide show
  1. package/common/index.d.ts +30 -4
  2. package/core/index.d.ts +5 -1
  3. package/fesm2022/acorex-platform-common.mjs +2 -0
  4. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-core.mjs +4 -1
  6. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-layout-builder.mjs +9 -0
  8. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-components.mjs +26 -36
  10. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-entity.mjs +770 -243
  12. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-views.mjs +37 -24
  14. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  15. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DXGLsVis.mjs → acorex-platform-themes-default-entity-master-list-view.component-D3VUh8K8.mjs} +5 -4
  16. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D3VUh8K8.mjs.map +1 -0
  17. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-CVaJzWb2.mjs → acorex-platform-themes-default-entity-master-single-view.component-BMkhNfF4.mjs} +3 -3
  18. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BMkhNfF4.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-themes-default.mjs +6 -6
  20. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  21. package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-BNBOATPB.mjs → acorex-platform-widgets-checkbox-widget-column.component-DeKpl0uK.mjs} +1 -2
  22. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-DeKpl0uK.mjs.map +1 -0
  23. package/fesm2022/{acorex-platform-widgets-file-list-popup.component-B601gPsW.mjs → acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs} +4 -2
  24. package/fesm2022/acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-widgets.mjs +231 -71
  26. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  27. package/layout/builder/index.d.ts +4 -0
  28. package/layout/components/index.d.ts +1 -5
  29. package/layout/entity/index.d.ts +4 -5
  30. package/layout/views/index.d.ts +7 -0
  31. package/package.json +1 -1
  32. package/widgets/index.d.ts +25 -2
  33. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DXGLsVis.mjs.map +0 -1
  34. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-CVaJzWb2.mjs.map +0 -1
  35. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-BNBOATPB.mjs.map +0 -1
  36. package/fesm2022/acorex-platform-widgets-file-list-popup.component-B601gPsW.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import * as i1$6 from '@acorex/platform/layout/builder';
2
2
  import { AXPWidgetsCatalog, createStringProperty, createBooleanProperty, createSelectProperty, cloneProperty, AXPLayoutWidgetComponent, AXPWidgetGroupEnum, AXP_WIDGETS_ACTION_CATEGORY, AXPValueWidgetComponent, AXP_WIDGETS_EDITOR_CATEGORY, AXPColumnWidgetComponent, AXPLayoutBuilderModule, createNumberProperty, AXPDataListWidgetComponent, AXPWidgetStatus, AXPPageStatus, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_LAYOUT_CATEGORY } from '@acorex/platform/layout/builder';
3
- import { objectKeyValueTransforms, AXPDataGenerator, AXPExpressionEvaluatorService } from '@acorex/platform/core';
3
+ import { objectKeyValueTransforms, setSmart, AXPDataGenerator, AXPExpressionEvaluatorService } from '@acorex/platform/core';
4
4
  import { AX_STYLE_COLOR_TYPES, AX_STYLE_LOOK_TYPES, AXDataSource, convertArrayToDataSource } from '@acorex/cdk/common';
5
5
  import * as i1$5 from '@acorex/components/badge';
6
6
  import { AXBadgeModule } from '@acorex/components/badge';
@@ -1205,7 +1205,7 @@ const AXPCheckBoxWidget = {
1205
1205
  component: () => Promise.resolve().then(function () { return checkboxWidgetEdit_component; }).then((c) => c.AXPCheckBoxWidgetEditComponent),
1206
1206
  },
1207
1207
  column: {
1208
- component: () => import('./acorex-platform-widgets-checkbox-widget-column.component-BNBOATPB.mjs').then((c) => c.AXPCheckBoxWidgetColumnComponent),
1208
+ component: () => import('./acorex-platform-widgets-checkbox-widget-column.component-DeKpl0uK.mjs').then((c) => c.AXPCheckBoxWidgetColumnComponent),
1209
1209
  },
1210
1210
  filter: {
1211
1211
  component: () => Promise.resolve().then(function () { return checkboxWidgetEdit_component; }).then((c) => c.AXPCheckBoxWidgetEditComponent),
@@ -3920,8 +3920,9 @@ class AXPNumberBoxWidgetColumnComponent extends AXPColumnWidgetComponent {
3920
3920
  super(...arguments);
3921
3921
  this.formatService = inject(AXFormatService);
3922
3922
  this.value = computed(() => {
3923
- if (!isNumber(this.rawValue))
3924
- return '---';
3923
+ if (!isNumber(this.rawValue)) {
3924
+ return this.nullText;
3925
+ }
3925
3926
  const value = Number(this.rawValue);
3926
3927
  if (this.options['format'] && this.options['format']['name']) {
3927
3928
  const { name, options } = this.options['format'];
@@ -5183,8 +5184,17 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
5183
5184
  //
5184
5185
  this.widgetsConfigs = inject(STRATEGY_CONFIG_TOKEN);
5185
5186
  this.filterOperatorMiddleware = inject(AXPFilterOperatorMiddlewareService);
5187
+ //#region ---- Expose & Options ----
5188
+ /**
5189
+ * Expose configuration similar to lookup widget. Can be:
5190
+ * - string path(s): 'field.path'
5191
+ * - mapping objects: { source: 'field.path', target: 'context.target.path' }
5192
+ */
5193
+ this.expose = computed(() => this.options()['expose'], ...(ngDevMode ? [{ debugName: "expose" }] : []));
5194
+ //#endregion
5186
5195
  this.multiple = computed(() => this.options()['multiple'], ...(ngDevMode ? [{ debugName: "multiple" }] : []));
5187
5196
  this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : []));
5197
+ this.readonly = computed(() => this.options()['readonly'], ...(ngDevMode ? [{ debugName: "readonly" }] : []));
5188
5198
  this.placeholder = computed(() => this.options()['placeholder'] ?? '', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
5189
5199
  this.hasClearButton = computed(() => this.options()['hasClearButton'], ...(ngDevMode ? [{ debugName: "hasClearButton" }] : []));
5190
5200
  this.allowSearch = computed(() => this.options()['allowSearch'] ?? false, ...(ngDevMode ? [{ debugName: "allowSearch" }] : []));
@@ -5213,6 +5223,26 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
5213
5223
  handleValueChange(e) {
5214
5224
  this.selectedItems.set(e.component.selectedItems);
5215
5225
  if (e.isUserInteraction) {
5226
+ //#region ---- Expose extra values to context ----
5227
+ if (this.expose()) {
5228
+ const selections = this.selectedItems();
5229
+ const exposeList = Array.isArray(this.expose()) ? this.expose() : [this.expose()];
5230
+ const itemToExpose = {};
5231
+ exposeList.forEach((expr) => {
5232
+ if (typeof expr === 'string') {
5233
+ const values = selections.map((item) => set({}, expr, get(item, expr)));
5234
+ setSmart(itemToExpose, expr, this.singleOrMultiple(values));
5235
+ }
5236
+ else if (expr && typeof expr === 'object') {
5237
+ const values = this.multiple()
5238
+ ? selections.map((item) => set({}, expr.source, get(item, expr.source)))
5239
+ : selections.map((item) => get(item, expr.source));
5240
+ setSmart(itemToExpose, expr.target, this.singleOrMultiple(values));
5241
+ }
5242
+ });
5243
+ this.contextService.patch(itemToExpose);
5244
+ }
5245
+ //#endregion
5216
5246
  if (this.widgetsConfigs.selectValueStrategy === 'valueField') {
5217
5247
  this.setValue(e.value);
5218
5248
  }
@@ -5245,6 +5275,13 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
5245
5275
  cls[`ax-flex-1`] = true;
5246
5276
  return cls;
5247
5277
  }
5278
+ //#region ---- Utility Methods ----
5279
+ /**
5280
+ * Return a single value for single-select, or the full list for multi-select
5281
+ */
5282
+ singleOrMultiple(values) {
5283
+ return this.multiple() ? values : values[0];
5284
+ }
5248
5285
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPSelectBoxWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5249
5286
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPSelectBoxWidgetEditComponent, isStandalone: true, selector: "axp-select-box-widget-edit", host: { properties: { "class": "this.__class" } }, viewQueries: [{ propertyName: "selectBox", first: true, predicate: AXSelectBoxComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
5250
5287
  <ax-select-box
@@ -5254,6 +5291,7 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
5254
5291
  [valueField]="valueField()"
5255
5292
  [textField]="textField()"
5256
5293
  [multiple]="multiple()"
5294
+ [readonly]="readonly()"
5257
5295
  [ngModel]="getValue()"
5258
5296
  (onValueChanged)="handleValueChange($event)"
5259
5297
  >
@@ -5285,6 +5323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
5285
5323
  [valueField]="valueField()"
5286
5324
  [textField]="textField()"
5287
5325
  [multiple]="multiple()"
5326
+ [readonly]="readonly()"
5288
5327
  [ngModel]="getValue()"
5289
5328
  (onValueChanged)="handleValueChange($event)"
5290
5329
  >
@@ -5425,6 +5464,7 @@ class AXPSelectionListWidgetViewComponent extends AXPValueWidgetComponent {
5425
5464
  this.items = computed(() => this.options()['items'], ...(ngDevMode ? [{ debugName: "items" }] : []));
5426
5465
  this.valueField = computed(() => this.options()['valueField'], ...(ngDevMode ? [{ debugName: "valueField" }] : []));
5427
5466
  this.textField = computed(() => this.options()['textField'], ...(ngDevMode ? [{ debugName: "textField" }] : []));
5467
+ this.imageMode = computed(() => this.options()['imageMode'], ...(ngDevMode ? [{ debugName: "imageMode" }] : []));
5428
5468
  this.internalValue = computed(() => {
5429
5469
  return this.items().filter((item) => {
5430
5470
  if (Array.isArray(this.getValue()))
@@ -5444,9 +5484,12 @@ class AXPSelectionListWidgetViewComponent extends AXPValueWidgetComponent {
5444
5484
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPSelectionListWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5445
5485
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPSelectionListWidgetViewComponent, isStandalone: true, selector: "axp-selection-list-widget-view", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
5446
5486
  @for (item of internalValue(); track $index) {
5447
- <ax-badge class="ax-p-0.5" [color]="'surface'" [text]="item[this.textField()]" ></ax-badge>
5448
- }
5449
- @empty {
5487
+ @if (imageMode()) {
5488
+ <img class="ax-w-14 ax-h-14 ax-rounded-sm" [src]="item[this.textField()]" />
5489
+ } @else {
5490
+ <ax-badge class="ax-p-0.5" [color]="'surface'" [text]="item[this.textField()]"></ax-badge>
5491
+ }
5492
+ } @empty {
5450
5493
  <span class="ax-text-muted">---</span>
5451
5494
  }
5452
5495
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i1$5.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -5457,14 +5500,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
5457
5500
  selector: 'axp-selection-list-widget-view',
5458
5501
  template: `
5459
5502
  @for (item of internalValue(); track $index) {
5460
- <ax-badge class="ax-p-0.5" [color]="'surface'" [text]="item[this.textField()]" ></ax-badge>
5461
- }
5462
- @empty {
5503
+ @if (imageMode()) {
5504
+ <img class="ax-w-14 ax-h-14 ax-rounded-sm" [src]="item[this.textField()]" />
5505
+ } @else {
5506
+ <ax-badge class="ax-p-0.5" [color]="'surface'" [text]="item[this.textField()]"></ax-badge>
5507
+ }
5508
+ } @empty {
5463
5509
  <span class="ax-text-muted">---</span>
5464
5510
  }
5465
5511
  `,
5466
5512
  changeDetection: ChangeDetectionStrategy.OnPush,
5467
- imports: [AXBadgeModule]
5513
+ imports: [AXBadgeModule],
5468
5514
  }]
5469
5515
  }], propDecorators: { __class: [{
5470
5516
  type: HostBinding,
@@ -5565,6 +5611,9 @@ class AXPSelectionListWidgetEditComponent extends AXPDataListWidgetComponent {
5565
5611
  this.direction = computed(() => this.options()['direction']?.id ?? 'horizontal', ...(ngDevMode ? [{ debugName: "direction" }] : []));
5566
5612
  this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : []));
5567
5613
  this.readonly = computed(() => this.options()['readonly'], ...(ngDevMode ? [{ debugName: "readonly" }] : []));
5614
+ this.look = computed(() => this.options()['look'], ...(ngDevMode ? [{ debugName: "look" }] : []));
5615
+ this.showControl = computed(() => this.options()['showControl'], ...(ngDevMode ? [{ debugName: "showControl" }] : []));
5616
+ this.imageMode = computed(() => this.options()['imageMode'], ...(ngDevMode ? [{ debugName: "imageMode" }] : []));
5568
5617
  this.displayItems = signal([], ...(ngDevMode ? [{ debugName: "displayItems" }] : []));
5569
5618
  this.ef = effect(() => {
5570
5619
  this.dataSource()
@@ -5599,7 +5648,15 @@ class AXPSelectionListWidgetEditComponent extends AXPDataListWidgetComponent {
5599
5648
  [disabled]="disabled()"
5600
5649
  [readonly]="readonly()"
5601
5650
  [direction]="direction()"
5651
+ [look]="look()"
5652
+ [showControl]="showControl()"
5653
+ [customTemplate]="(imageMode() ? imageTemplate : undefined)!"
5602
5654
  >
5655
+ <ng-template #imageTemplate let-item>
5656
+ @if (imageMode()) {
5657
+ <img class="ax-w-14 ax-h-14" [src]="item.data[textField()]" />
5658
+ }
5659
+ </ng-template>
5603
5660
  @for (validation of validationRules(); track $index) {
5604
5661
  <ax-validation-rule
5605
5662
  [rule]="validation.rule"
@@ -5626,7 +5683,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
5626
5683
  [disabled]="disabled()"
5627
5684
  [readonly]="readonly()"
5628
5685
  [direction]="direction()"
5686
+ [look]="look()"
5687
+ [showControl]="showControl()"
5688
+ [customTemplate]="(imageMode() ? imageTemplate : undefined)!"
5629
5689
  >
5690
+ <ng-template #imageTemplate let-item>
5691
+ @if (imageMode()) {
5692
+ <img class="ax-w-14 ax-h-14" [src]="item.data[textField()]" />
5693
+ }
5694
+ </ng-template>
5630
5695
  @for (validation of validationRules(); track $index) {
5631
5696
  <ax-validation-rule
5632
5697
  [rule]="validation.rule"
@@ -5675,6 +5740,7 @@ class AXPSelectionListWidgetColumnComponent extends AXPColumnWidgetComponent {
5675
5740
  this.textField = this.options['textField'];
5676
5741
  this.items = this.options['items'];
5677
5742
  this.multiple = this.options['multiple'];
5743
+ this.imageMode = this.options['imageMode'];
5678
5744
  this.selectedItemIds = computed(() => {
5679
5745
  return this.rawValue || [];
5680
5746
  }, ...(ngDevMode ? [{ debugName: "selectedItemIds" }] : []));
@@ -5694,10 +5760,20 @@ class AXPSelectionListWidgetColumnComponent extends AXPColumnWidgetComponent {
5694
5760
  }
5695
5761
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPSelectionListWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5696
5762
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPSelectionListWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: ` <div class="ax-flex ax-gap-2">
5697
- @if(multiple){ @for (item of selectedItems(); track $index) {
5698
- <ax-badge [look]="'twotone'" [text]="item[this.textField]" color="primary"></ax-badge>
5699
- } }@else {
5700
- <ax-badge [look]="'twotone'" [text]="firstItem()[this.textField]" color="primary"></ax-badge>
5763
+ @if (multiple) {
5764
+ @for (item of selectedItems(); track $index) {
5765
+ @if (imageMode) {
5766
+ <img class="ax-w-10 ax-h-10 ax-rounded-sm" [src]="item[this.textField]" />
5767
+ } @else {
5768
+ <ax-badge [look]="'twotone'" [text]="item[this.textField]" color="primary"></ax-badge>
5769
+ }
5770
+ }
5771
+ } @else {
5772
+ @if (imageMode) {
5773
+ <img class="ax-w-10 ax-h-10 ax-rounded-sm" [src]="firstItem()[this.textField]" />
5774
+ } @else {
5775
+ <ax-badge [look]="'twotone'" [text]="firstItem()[this.textField]" color="primary"></ax-badge>
5776
+ }
5701
5777
  }
5702
5778
  </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i1$5.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5703
5779
  }
@@ -5705,15 +5781,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
5705
5781
  type: Component,
5706
5782
  args: [{
5707
5783
  template: ` <div class="ax-flex ax-gap-2">
5708
- @if(multiple){ @for (item of selectedItems(); track $index) {
5709
- <ax-badge [look]="'twotone'" [text]="item[this.textField]" color="primary"></ax-badge>
5710
- } }@else {
5711
- <ax-badge [look]="'twotone'" [text]="firstItem()[this.textField]" color="primary"></ax-badge>
5784
+ @if (multiple) {
5785
+ @for (item of selectedItems(); track $index) {
5786
+ @if (imageMode) {
5787
+ <img class="ax-w-10 ax-h-10 ax-rounded-sm" [src]="item[this.textField]" />
5788
+ } @else {
5789
+ <ax-badge [look]="'twotone'" [text]="item[this.textField]" color="primary"></ax-badge>
5790
+ }
5791
+ }
5792
+ } @else {
5793
+ @if (imageMode) {
5794
+ <img class="ax-w-10 ax-h-10 ax-rounded-sm" [src]="firstItem()[this.textField]" />
5795
+ } @else {
5796
+ <ax-badge [look]="'twotone'" [text]="firstItem()[this.textField]" color="primary"></ax-badge>
5797
+ }
5712
5798
  }
5713
5799
  </div>`,
5714
5800
  changeDetection: ChangeDetectionStrategy.OnPush,
5715
5801
  imports: [AXBadgeModule],
5716
- inputs: ['rawValue', 'rowData']
5802
+ inputs: ['rawValue', 'rowData'],
5717
5803
  }]
5718
5804
  }] });
5719
5805
 
@@ -6731,56 +6817,110 @@ var toggleWidgetFilter_component = /*#__PURE__*/Object.freeze({
6731
6817
  class AXPToggleWidgetColumnComponent extends AXPColumnWidgetComponent {
6732
6818
  constructor() {
6733
6819
  super(...arguments);
6820
+ //#region ---- Component Properties ----
6734
6821
  this.negative = this.options['negative'];
6735
6822
  this.trulyText = this.options['trulyText'];
6736
6823
  this.falsyText = this.options['falsyText'];
6737
- this.nullText = this.options['nullText'];
6738
6824
  }
6739
6825
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPToggleWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6740
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPToggleWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `@if(rawValue === null || rawValue === undefined){
6741
- @if(nullText){
6742
- <span>{{nullText}}</span>
6743
- }@else {
6744
- <span>---</span>
6745
- }
6746
- }@else if(rawValue){ @if(trulyText){
6747
- <ax-badge [text]="trulyText" [color]="negative ? 'danger' : 'success'" [look]="'twotone'"></ax-badge>
6748
- }@else { @if(negative){
6749
- <ax-icon class="fa-solid fa-xmark ax-text-danger-500"> </ax-icon>
6750
- }@else {
6751
- <ax-icon class="fa-solid fa-check ax-text-success"> </ax-icon>
6752
- } } }@else { @if(falsyText){
6753
- <ax-badge [text]="falsyText" [color]="negative ? 'success' : 'danger'" [look]="'twotone'"></ax-badge>
6754
- }@else { @if(negative){
6755
- <ax-icon class="fa-solid fa-check ax-text-success"> </ax-icon>
6756
- }@else {
6757
- <ax-icon class="fa-solid fa-xmark ax-text-danger-500"> </ax-icon>
6758
- } } }`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i1$5.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6826
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPToggleWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
6827
+ @if (value() == null || value() == undefined) {
6828
+ <!-- Null/Undefined state -->
6829
+ @if (value() != null && value() != undefined) {
6830
+ <span>{{ nullText | translate | async }}</span>
6831
+ } @else {
6832
+ <span>---</span>
6833
+ }
6834
+ }
6835
+ @else {
6836
+ <!-- True state -->
6837
+ @if(value()==true)
6838
+ {
6839
+ @if (trulyText) {
6840
+ <ax-badge
6841
+ [text]="(trulyText | translate | async)!"
6842
+ [color]="negative ? 'danger' : 'success'"
6843
+ [look]="'twotone'">
6844
+ </ax-badge>
6845
+ } @else {
6846
+ @if (negative) {
6847
+ <ax-icon class="fa-solid fa-xmark ax-text-danger-500"></ax-icon>
6848
+ } @else {
6849
+ <ax-icon class="fa-solid fa-check ax-text-success"></ax-icon>
6850
+ }
6851
+ }
6852
+ }
6853
+ <!-- False state -->
6854
+ @else
6855
+ {
6856
+ @if (falsyText) {
6857
+ <ax-badge
6858
+ [text]="(falsyText | translate | async)!"
6859
+ [color]="negative ? 'success' : 'danger'"
6860
+ [look]="'twotone'">
6861
+ </ax-badge>
6862
+ } @else {
6863
+ @if (negative) {
6864
+ <ax-icon class="fa-solid fa-check ax-text-success"></ax-icon>
6865
+ } @else {
6866
+ <ax-icon class="fa-solid fa-xmark ax-text-danger-500"></ax-icon>
6867
+ }
6868
+ }
6869
+ }
6870
+ }
6871
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i1$5.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6759
6872
  }
6760
6873
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPToggleWidgetColumnComponent, decorators: [{
6761
6874
  type: Component,
6762
6875
  args: [{
6763
- template: `@if(rawValue === null || rawValue === undefined){
6764
- @if(nullText){
6765
- <span>{{nullText}}</span>
6766
- }@else {
6767
- <span>---</span>
6768
- }
6769
- }@else if(rawValue){ @if(trulyText){
6770
- <ax-badge [text]="trulyText" [color]="negative ? 'danger' : 'success'" [look]="'twotone'"></ax-badge>
6771
- }@else { @if(negative){
6772
- <ax-icon class="fa-solid fa-xmark ax-text-danger-500"> </ax-icon>
6773
- }@else {
6774
- <ax-icon class="fa-solid fa-check ax-text-success"> </ax-icon>
6775
- } } }@else { @if(falsyText){
6776
- <ax-badge [text]="falsyText" [color]="negative ? 'success' : 'danger'" [look]="'twotone'"></ax-badge>
6777
- }@else { @if(negative){
6778
- <ax-icon class="fa-solid fa-check ax-text-success"> </ax-icon>
6779
- }@else {
6780
- <ax-icon class="fa-solid fa-xmark ax-text-danger-500"> </ax-icon>
6781
- } } }`,
6876
+ template: `
6877
+ @if (value() == null || value() == undefined) {
6878
+ <!-- Null/Undefined state -->
6879
+ @if (value() != null && value() != undefined) {
6880
+ <span>{{ nullText | translate | async }}</span>
6881
+ } @else {
6882
+ <span>---</span>
6883
+ }
6884
+ }
6885
+ @else {
6886
+ <!-- True state -->
6887
+ @if(value()==true)
6888
+ {
6889
+ @if (trulyText) {
6890
+ <ax-badge
6891
+ [text]="(trulyText | translate | async)!"
6892
+ [color]="negative ? 'danger' : 'success'"
6893
+ [look]="'twotone'">
6894
+ </ax-badge>
6895
+ } @else {
6896
+ @if (negative) {
6897
+ <ax-icon class="fa-solid fa-xmark ax-text-danger-500"></ax-icon>
6898
+ } @else {
6899
+ <ax-icon class="fa-solid fa-check ax-text-success"></ax-icon>
6900
+ }
6901
+ }
6902
+ }
6903
+ <!-- False state -->
6904
+ @else
6905
+ {
6906
+ @if (falsyText) {
6907
+ <ax-badge
6908
+ [text]="(falsyText | translate | async)!"
6909
+ [color]="negative ? 'success' : 'danger'"
6910
+ [look]="'twotone'">
6911
+ </ax-badge>
6912
+ } @else {
6913
+ @if (negative) {
6914
+ <ax-icon class="fa-solid fa-check ax-text-success"></ax-icon>
6915
+ } @else {
6916
+ <ax-icon class="fa-solid fa-xmark ax-text-danger-500"></ax-icon>
6917
+ }
6918
+ }
6919
+ }
6920
+ }
6921
+ `,
6782
6922
  changeDetection: ChangeDetectionStrategy.OnPush,
6783
- imports: [AXDecoratorModule, AXBadgeModule],
6923
+ imports: [CommonModule, AXDecoratorModule, AXBadgeModule, AXTranslationModule],
6784
6924
  inputs: ['rawValue', 'rowData'],
6785
6925
  }]
6786
6926
  }] });
@@ -7104,9 +7244,10 @@ class AXPFileUploaderWidgetService {
7104
7244
  multiple: false,
7105
7245
  accept: '*',
7106
7246
  fileEditable: true,
7247
+ maxFileSize: 1024 * 1024 * 10,
7107
7248
  };
7108
7249
  options = { ...defaultOptions, ...options };
7109
- const component = await import('./acorex-platform-widgets-file-list-popup.component-B601gPsW.mjs').then(m => m.AXPFileListPopupComponent);
7250
+ const component = await import('./acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs').then(m => m.AXPFileListPopupComponent);
7110
7251
  const result = await this.popupService.open(component, {
7111
7252
  title: (await this.translate.translateAsync('@document-management:file')),
7112
7253
  data: {
@@ -7114,6 +7255,7 @@ class AXPFileUploaderWidgetService {
7114
7255
  readOnly: signal(options.readOnly),
7115
7256
  multiple: signal(options.multiple),
7116
7257
  accept: signal(options.accept),
7258
+ maxFileSize: signal(options.maxFileSize),
7117
7259
  fileEditable: signal(options.fileEditable ?? true),
7118
7260
  },
7119
7261
  });
@@ -7134,7 +7276,6 @@ class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetComponent {
7134
7276
  super(...arguments);
7135
7277
  this.count = computed(() => {
7136
7278
  const value = castArray(this.rawValue ?? []);
7137
- console.log('File count:', value.length, 'Raw Data:', this.rowData);
7138
7279
  return value.length;
7139
7280
  }, ...(ngDevMode ? [{ debugName: "count" }] : []));
7140
7281
  this.fileService = inject(AXPFileUploaderWidgetService);
@@ -7339,7 +7480,15 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7339
7480
  this.fileService = inject(AXFileService);
7340
7481
  this.multiple = computed(() => this.options()['multiple'], ...(ngDevMode ? [{ debugName: "multiple" }] : []));
7341
7482
  this.accept = computed(() => this.options()['accept'], ...(ngDevMode ? [{ debugName: "accept" }] : []));
7342
- this.fileEditable = computed(() => this.options()['fileEditable'], ...(ngDevMode ? [{ debugName: "fileEditable" }] : []));
7483
+ this.plugins = computed(() => this.options()['plugins'], ...(ngDevMode ? [{ debugName: "plugins" }] : []));
7484
+ this.fileEditable = computed(() => {
7485
+ if (this.options()['readonly']) {
7486
+ return false;
7487
+ }
7488
+ return this.options()['fileEditable'];
7489
+ }, ...(ngDevMode ? [{ debugName: "fileEditable" }] : []));
7490
+ this.readonly = computed(() => this.options()['readonly'], ...(ngDevMode ? [{ debugName: "readonly" }] : []));
7491
+ this.maxFileSize = computed(() => this.options()['maxFileSize'], ...(ngDevMode ? [{ debugName: "maxFileSize" }] : []));
7343
7492
  this.files = computed(() => (this.getValue() ?? []).map((file) => ({
7344
7493
  ...file,
7345
7494
  })) ?? [], ...(ngDevMode ? [{ debugName: "files" }] : []));
@@ -7358,6 +7507,7 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7358
7507
  if (!this.multiple()) {
7359
7508
  this.clear();
7360
7509
  }
7510
+ // if the file size is greater than the max file size, return
7361
7511
  // create the file upload requests
7362
7512
  const fileUploadRequests = files.map((file) => ({
7363
7513
  id: AXPDataGenerator.uuid(),
@@ -7414,8 +7564,9 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7414
7564
  return cls;
7415
7565
  }
7416
7566
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPFileUploaderWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7417
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AXPFileUploaderWidgetEditComponent, isStandalone: true, selector: "axp-file-uploader-widget-edit", host: { properties: { "class": "this.__class" }, styleAttribute: "border-color: rgba(var(--ax-comp-editor-border-color)); !important;" }, usesInheritance: true, ngImport: i0, template: `
7567
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPFileUploaderWidgetEditComponent, isStandalone: true, selector: "axp-file-uploader-widget-edit", host: { properties: { "class": "this.__class" }, styleAttribute: "border-color: rgba(var(--ax-comp-editor-border-color)); !important;" }, usesInheritance: true, ngImport: i0, template: `
7418
7568
  <div class="ax-flex ax-justify-end ax-border-b ax-p-2" *translate="let t">
7569
+ @if(!readonly()) {
7419
7570
  <!-- Add Item Button -->
7420
7571
  <ax-button class="ax-sm" [text]="t('@document-management:actions.add-item') | async" [color]="'primary'">
7421
7572
  <ax-prefix>
@@ -7436,6 +7587,7 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7436
7587
  </ax-button-item-list>
7437
7588
  </ax-dropdown-panel>
7438
7589
  </ax-button>
7590
+ }
7439
7591
  </div>
7440
7592
  <div class="ax-p-2">
7441
7593
  <axp-file-list
@@ -7454,6 +7606,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
7454
7606
  selector: 'axp-file-uploader-widget-edit',
7455
7607
  template: `
7456
7608
  <div class="ax-flex ax-justify-end ax-border-b ax-p-2" *translate="let t">
7609
+ @if(!readonly()) {
7457
7610
  <!-- Add Item Button -->
7458
7611
  <ax-button class="ax-sm" [text]="t('@document-management:actions.add-item') | async" [color]="'primary'">
7459
7612
  <ax-prefix>
@@ -7474,6 +7627,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
7474
7627
  </ax-button-item-list>
7475
7628
  </ax-dropdown-panel>
7476
7629
  </ax-button>
7630
+ }
7477
7631
  </div>
7478
7632
  <div class="ax-p-2">
7479
7633
  <axp-file-list
@@ -16000,7 +16154,7 @@ class AXPFieldsetWidgetViewComponent extends AXPLayoutWidgetComponent {
16000
16154
  this.icon = computed(() => this.options()['icon'] || '', ...(ngDevMode ? [{ debugName: "icon" }] : []));
16001
16155
  this.collapsible = computed(() => this.options()['collapsible'] || false, ...(ngDevMode ? [{ debugName: "collapsible" }] : []));
16002
16156
  this.isOpen = linkedSignal(() => this.options()['isOpen'] ?? true);
16003
- this.variant = computed(() => this.options()['variant'] || 'card', ...(ngDevMode ? [{ debugName: "variant" }] : []));
16157
+ this.look = computed(() => this.options()['look'] || 'card', ...(ngDevMode ? [{ debugName: "look" }] : []));
16004
16158
  }
16005
16159
  ngOnInit() {
16006
16160
  super.ngOnInit();
@@ -16011,11 +16165,11 @@ class AXPFieldsetWidgetViewComponent extends AXPLayoutWidgetComponent {
16011
16165
  }
16012
16166
  }
16013
16167
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPFieldsetWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16014
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPFieldsetWidgetViewComponent, isStandalone: true, selector: "axp-fieldset-widget", usesInheritance: true, ngImport: i0, template: "@switch (variant()) {\n <!-- fieldset Style -->\n @case ('fieldset') {\n <fieldset class=\"fieldset\">\n <legend class=\"legend\" (click)=\"toggleCollapse()\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n </legend>\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @if (description()) {\n <p class=\"description\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </fieldset>\n }\n <!-- Card Style -->\n @case ('card') {\n <div class=\"card\">\n <div class=\"legend\" (click)=\"toggleCollapse()\">\n <div class=\"caption\">\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n @if (description()) {\n <p class=\"description\">{{ description() | translate | async }}</p>\n }\n </div>\n <div class=\"icon\" [ngClass]=\"{ 'ax-transform ax-rotate-180': isOpen() }\">\n @if (collapsible()) {\n <i class=\"fa-solid fa-chevron-down\"></i>\n }\n </div>\n </div>\n\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </div>\n }\n <!-- Group Line style -->\n @case ('group') {\n <fieldset class=\"group\">\n <legend class=\"legend\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n </legend>\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @if (description()) {\n <p class=\"description\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </fieldset>\n }\n <!-- End of switch-->\n}\n", styles: [":host{display:block;height:fit-content;width:100%;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset{border-radius:.375rem;border-width:1px;padding:.5rem 1.5rem 1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset .legend{display:inline-flex;cursor:pointer;align-items:center;gap:.5rem;padding-left:.5rem;padding-right:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset .content .description{padding-top:.25rem;padding-bottom:.75rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host .group{border-top-width:2px;padding-left:1rem;padding-right:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .group .legend{display:inline-flex;cursor:pointer;align-items:center;gap:.5rem;padding-left:.5rem;padding-right:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .group .content{margin-left:-1rem;margin-right:-1rem;padding-top:.5rem}:host .group .content .description{padding-top:.25rem;padding-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host .card{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .card .legend{display:flex;width:100%;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;padding:.5rem 1.25rem}:host .card .legend .caption{display:flex;flex-direction:column}:host .card .legend .caption .title{width:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.625}:host .card .legend .caption .description{width:100%;font-size:.75rem;line-height:1rem;opacity:.65}:host .card .legend .icon{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host .card .content{border-top-width:1px;padding:1.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: i1$6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16168
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPFieldsetWidgetViewComponent, isStandalone: true, selector: "axp-fieldset-widget", usesInheritance: true, ngImport: i0, template: "@switch (look()) {\n<!-- fieldset Style -->\n@case ('fieldset') {\n<fieldset class=\"fieldset\">\n <legend class=\"legend\" (click)=\"toggleCollapse()\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n </legend>\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @if (description()) {\n <p class=\"description\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container axp-widget-renderer [node]=\"node\" [index]=\"index\" [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"></ng-container>\n }\n </div>\n }\n</fieldset>\n}\n<!-- Card Style -->\n@case ('card') {\n<div class=\"card\">\n <div class=\"legend\" (click)=\"toggleCollapse()\">\n <div class=\"caption\">\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n @if (description()) {\n <p class=\"description\">{{ description() | translate | async }}</p>\n }\n </div>\n <div class=\"icon\" [ngClass]=\"{ 'ax-transform ax-rotate-180': isOpen() }\">\n @if (collapsible()) {\n <i class=\"fa-solid fa-chevron-down\"></i>\n }\n </div>\n </div>\n\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @for (node of children(); track $index) {\n <ng-container axp-widget-renderer [node]=\"node\" [index]=\"index\" [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"></ng-container>\n }\n </div>\n }\n</div>\n}\n<!-- Group Line style -->\n@case ('group') {\n<fieldset class=\"group\">\n <legend class=\"legend\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n </legend>\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @if (description()) {\n <p class=\"description\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container axp-widget-renderer [node]=\"node\" [index]=\"index\" [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"></ng-container>\n }\n </div>\n }\n</fieldset>\n}\n<!-- End of switch-->\n}", styles: [":host{display:block;height:fit-content;width:100%;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset{border-radius:.375rem;border-width:1px;padding:.5rem 1.5rem 1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset .legend{display:inline-flex;cursor:pointer;align-items:center;gap:.5rem;padding-left:.5rem;padding-right:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset .content .description{padding-top:.25rem;padding-bottom:.75rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host .group{border-top-width:2px;padding-left:1rem;padding-right:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .group .legend{display:inline-flex;cursor:pointer;align-items:center;gap:.5rem;padding-left:.5rem;padding-right:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .group .content{margin-left:-1rem;margin-right:-1rem;padding-top:.5rem}:host .group .content .description{padding-top:.25rem;padding-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host .card{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .card .legend{display:flex;width:100%;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;padding:.5rem 1.25rem}:host .card .legend .caption{display:flex;flex-direction:column}:host .card .legend .caption .title{width:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.625}:host .card .legend .caption .description{width:100%;font-size:.75rem;line-height:1rem;opacity:.65}:host .card .legend .icon{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host .card .content{border-top-width:1px;padding:1.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: i1$6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16015
16169
  }
16016
16170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPFieldsetWidgetViewComponent, decorators: [{
16017
16171
  type: Component,
16018
- args: [{ selector: 'axp-fieldset-widget', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXPLayoutBuilderModule, AXTranslationModule], standalone: true, template: "@switch (variant()) {\n <!-- fieldset Style -->\n @case ('fieldset') {\n <fieldset class=\"fieldset\">\n <legend class=\"legend\" (click)=\"toggleCollapse()\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n </legend>\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @if (description()) {\n <p class=\"description\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </fieldset>\n }\n <!-- Card Style -->\n @case ('card') {\n <div class=\"card\">\n <div class=\"legend\" (click)=\"toggleCollapse()\">\n <div class=\"caption\">\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n @if (description()) {\n <p class=\"description\">{{ description() | translate | async }}</p>\n }\n </div>\n <div class=\"icon\" [ngClass]=\"{ 'ax-transform ax-rotate-180': isOpen() }\">\n @if (collapsible()) {\n <i class=\"fa-solid fa-chevron-down\"></i>\n }\n </div>\n </div>\n\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </div>\n }\n <!-- Group Line style -->\n @case ('group') {\n <fieldset class=\"group\">\n <legend class=\"legend\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n </legend>\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @if (description()) {\n <p class=\"description\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </fieldset>\n }\n <!-- End of switch-->\n}\n", styles: [":host{display:block;height:fit-content;width:100%;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset{border-radius:.375rem;border-width:1px;padding:.5rem 1.5rem 1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset .legend{display:inline-flex;cursor:pointer;align-items:center;gap:.5rem;padding-left:.5rem;padding-right:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset .content .description{padding-top:.25rem;padding-bottom:.75rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host .group{border-top-width:2px;padding-left:1rem;padding-right:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .group .legend{display:inline-flex;cursor:pointer;align-items:center;gap:.5rem;padding-left:.5rem;padding-right:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .group .content{margin-left:-1rem;margin-right:-1rem;padding-top:.5rem}:host .group .content .description{padding-top:.25rem;padding-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host .card{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .card .legend{display:flex;width:100%;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;padding:.5rem 1.25rem}:host .card .legend .caption{display:flex;flex-direction:column}:host .card .legend .caption .title{width:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.625}:host .card .legend .caption .description{width:100%;font-size:.75rem;line-height:1rem;opacity:.65}:host .card .legend .icon{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host .card .content{border-top-width:1px;padding:1.25rem}\n"] }]
16172
+ args: [{ selector: 'axp-fieldset-widget', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXPLayoutBuilderModule, AXTranslationModule], standalone: true, template: "@switch (look()) {\n<!-- fieldset Style -->\n@case ('fieldset') {\n<fieldset class=\"fieldset\">\n <legend class=\"legend\" (click)=\"toggleCollapse()\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n </legend>\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @if (description()) {\n <p class=\"description\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container axp-widget-renderer [node]=\"node\" [index]=\"index\" [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"></ng-container>\n }\n </div>\n }\n</fieldset>\n}\n<!-- Card Style -->\n@case ('card') {\n<div class=\"card\">\n <div class=\"legend\" (click)=\"toggleCollapse()\">\n <div class=\"caption\">\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n @if (description()) {\n <p class=\"description\">{{ description() | translate | async }}</p>\n }\n </div>\n <div class=\"icon\" [ngClass]=\"{ 'ax-transform ax-rotate-180': isOpen() }\">\n @if (collapsible()) {\n <i class=\"fa-solid fa-chevron-down\"></i>\n }\n </div>\n </div>\n\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @for (node of children(); track $index) {\n <ng-container axp-widget-renderer [node]=\"node\" [index]=\"index\" [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"></ng-container>\n }\n </div>\n }\n</div>\n}\n<!-- Group Line style -->\n@case ('group') {\n<fieldset class=\"group\">\n <legend class=\"legend\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n </legend>\n @if (!collapsible() || isOpen()) {\n <div class=\"content\">\n @if (description()) {\n <p class=\"description\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container axp-widget-renderer [node]=\"node\" [index]=\"index\" [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"></ng-container>\n }\n </div>\n }\n</fieldset>\n}\n<!-- End of switch-->\n}", styles: [":host{display:block;height:fit-content;width:100%;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset{border-radius:.375rem;border-width:1px;padding:.5rem 1.5rem 1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset .legend{display:inline-flex;cursor:pointer;align-items:center;gap:.5rem;padding-left:.5rem;padding-right:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .fieldset .content .description{padding-top:.25rem;padding-bottom:.75rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host .group{border-top-width:2px;padding-left:1rem;padding-right:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .group .legend{display:inline-flex;cursor:pointer;align-items:center;gap:.5rem;padding-left:.5rem;padding-right:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .group .content{margin-left:-1rem;margin-right:-1rem;padding-top:.5rem}:host .group .content .description{padding-top:.25rem;padding-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host .card{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}:host .card .legend{display:flex;width:100%;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;padding:.5rem 1.25rem}:host .card .legend .caption{display:flex;flex-direction:column}:host .card .legend .caption .title{width:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.625}:host .card .legend .caption .description{width:100%;font-size:.75rem;line-height:1rem;opacity:.65}:host .card .legend .icon{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host .card .content{border-top-width:1px;padding:1.25rem}\n"] }]
16019
16173
  }] });
16020
16174
 
16021
16175
  var fieldsetWidgetView_component = /*#__PURE__*/Object.freeze({
@@ -16520,6 +16674,7 @@ class AXPGridItemWidgetViewComponent extends AXPLayoutWidgetComponent {
16520
16674
  this.colSpan = computed(() => this.options()['colSpan'], ...(ngDevMode ? [{ debugName: "colSpan" }] : []));
16521
16675
  this.colStart = computed(() => this.options()['colStart'], ...(ngDevMode ? [{ debugName: "colStart" }] : []));
16522
16676
  this.colEnd = computed(() => this.options()['colEnd'], ...(ngDevMode ? [{ debugName: "colEnd" }] : []));
16677
+ this.hidden = computed(() => this.options()['hidden'], ...(ngDevMode ? [{ debugName: "hidden" }] : []));
16523
16678
  this.flexAlignItems = computed(() => this.options()['flexAlignItems']?.id, ...(ngDevMode ? [{ debugName: "flexAlignItems" }] : []));
16524
16679
  this.flexJustifyContent = computed(() => this.options()['flexJustifyContent']?.id, ...(ngDevMode ? [{ debugName: "flexJustifyContent" }] : []));
16525
16680
  this.flexWrap = computed(() => this.options()['flexWrap']?.id, ...(ngDevMode ? [{ debugName: "flexWrap" }] : []));
@@ -16549,6 +16704,7 @@ class AXPGridItemWidgetViewComponent extends AXPLayoutWidgetComponent {
16549
16704
  cls[`lg:ax-col-start-${this.colStart()}`] = true;
16550
16705
  if (this.colEnd() != null)
16551
16706
  cls[`lg:ax-col-end-${this.colEnd()}`] = true;
16707
+ cls[`ax-hidden`] = this.hidden();
16552
16708
  return cls;
16553
16709
  }
16554
16710
  get __style() {
@@ -16574,8 +16730,10 @@ class AXPGridItemWidgetViewComponent extends AXPLayoutWidgetComponent {
16574
16730
  },
16575
16731
  ], usesInheritance: true, ngImport: i0, template: `
16576
16732
  @for (child of children(); track $index) {
16577
- <ng-container axp-widget-renderer [node]="child" [index]="index" [parentNode]="this" [mode]="this.mode">
16578
- </ng-container>
16733
+ @if (!this.hidden()) {
16734
+ <ng-container axp-widget-renderer [node]="child" [index]="index" [parentNode]="this" [mode]="this.mode">
16735
+ </ng-container>
16736
+ }
16579
16737
  }
16580
16738
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: i1$6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16581
16739
  }
@@ -16585,8 +16743,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
16585
16743
  selector: 'axp-grid-layout-item-widget',
16586
16744
  template: `
16587
16745
  @for (child of children(); track $index) {
16588
- <ng-container axp-widget-renderer [node]="child" [index]="index" [parentNode]="this" [mode]="this.mode">
16589
- </ng-container>
16746
+ @if (!this.hidden()) {
16747
+ <ng-container axp-widget-renderer [node]="child" [index]="index" [parentNode]="this" [mode]="this.mode">
16748
+ </ng-container>
16749
+ }
16590
16750
  }
16591
16751
  `,
16592
16752
  changeDetection: ChangeDetectionStrategy.OnPush,