@acorex/platform 19.4.4 → 19.4.6

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 (58) hide show
  1. package/core/lib/types/core.types.d.ts +13 -0
  2. package/core/lib/types/file.types.d.ts +13 -0
  3. package/core/lib/types/index.d.ts +1 -0
  4. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-layout-builder.mjs +2 -3
  6. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-layout-entity.mjs +96 -4
  8. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-views.mjs +3 -3
  10. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-widgets-file-list-popup.component-TNxbcVav.mjs +68 -0
  12. package/fesm2022/acorex-platform-widgets-file-list-popup.component-TNxbcVav.mjs.map +1 -0
  13. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-9XMpubtr.mjs → acorex-platform-widgets-page-widget-designer.component-DuKrIkHh.mjs} +2 -1
  14. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-9XMpubtr.mjs.map → acorex-platform-widgets-page-widget-designer.component-DuKrIkHh.mjs.map} +1 -1
  15. package/fesm2022/acorex-platform-widgets.mjs +554 -947
  16. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-workflow.mjs +6 -2
  18. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  19. package/layout/builder/lib/builder/widget-map.d.ts +2 -3
  20. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +1 -0
  21. package/layout/entity/lib/workflows/show-file-uploader-popup.workflow.d.ts +10 -0
  22. package/package.json +12 -12
  23. package/widgets/lib/properties/layout.props.d.ts +1 -0
  24. package/widgets/lib/widgets/advance/file-uploader/file-list/file-list.component.d.ts +7 -4
  25. package/widgets/lib/widgets/advance/file-uploader/file-list-popup/file-list-popup.component.d.ts +17 -0
  26. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-column.component.d.ts +3 -3
  27. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-edit.component.d.ts +6 -1
  28. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-view.component.d.ts +3 -1
  29. package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget.service.d.ts +13 -11
  30. package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +0 -1
  31. package/widgets/lib/widgets/index.d.ts +2 -2
  32. package/widgets/lib/widgets/layout/block/block-widget-view.component.d.ts +0 -2
  33. package/widgets/lib/widgets/layout/block/block-widget.config.d.ts +1 -0
  34. package/widgets/lib/widgets/layout/flex/flex-widget-designer.component.d.ts +10 -0
  35. package/widgets/lib/widgets/layout/flex/flex-widget-view.component.d.ts +10 -0
  36. package/widgets/lib/widgets/layout/flex/flex-widget.config.d.ts +28 -0
  37. package/widgets/lib/widgets/layout/flex/index.d.ts +3 -0
  38. package/widgets/lib/widgets/layout/grid/grid-widget-view.component.d.ts +6 -1
  39. package/widgets/lib/widgets/property-editors/direction/direction-widget-editor.component.d.ts +13 -0
  40. package/widgets/lib/widgets/{advance/file/file-box-widget.config.d.ts → property-editors/direction/direction-widget.config.d.ts} +2 -2
  41. package/widgets/lib/widgets/property-editors/direction/index.d.ts +2 -0
  42. package/widgets/lib/widgets/property-editors/spacing/spacing-widget-editor.component.d.ts +1 -1
  43. package/workflow/index.d.ts +1 -0
  44. package/workflow/lib/task-board.types.d.ts +21 -0
  45. package/widgets/lib/widgets/advance/file/file-box-widget-column.component.d.ts +0 -6
  46. package/widgets/lib/widgets/advance/file/file-box-widget-edit.component.d.ts +0 -33
  47. package/widgets/lib/widgets/advance/file/file-box-widget-filter.component.d.ts +0 -6
  48. package/widgets/lib/widgets/advance/file/file-box-widget-print.component.d.ts +0 -6
  49. package/widgets/lib/widgets/advance/file/file-box-widget-view.component.d.ts +0 -31
  50. package/widgets/lib/widgets/advance/file/file-box-widget.service.d.ts +0 -12
  51. package/widgets/lib/widgets/advance/file/index.d.ts +0 -7
  52. package/widgets/lib/widgets/editors/single-file-box/index.d.ts +0 -6
  53. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-column.component.d.ts +0 -6
  54. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-edit.component.d.ts +0 -19
  55. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-filter.component.d.ts +0 -6
  56. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-print.component.d.ts +0 -6
  57. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget-view.component.d.ts +0 -8
  58. package/widgets/lib/widgets/editors/single-file-box/single-file-box-widget.config.d.ts +0 -9
@@ -12,7 +12,7 @@ import { AXLoadingModule } from '@acorex/components/loading';
12
12
  import * as i1$1 from '@angular/common';
13
13
  import { CommonModule } from '@angular/common';
14
14
  import * as i0 from '@angular/core';
15
- import { computed, EventEmitter, ChangeDetectionStrategy, Component, inject, afterNextRender, HostBinding, signal, ViewEncapsulation, InjectionToken, effect, ViewChild, untracked, CUSTOM_ELEMENTS_SCHEMA, input, ChangeDetectorRef, viewChild, ElementRef, afterRender, NgZone, model, linkedSignal, HostListener, importProvidersFrom, NgModule } from '@angular/core';
15
+ import { computed, EventEmitter, ChangeDetectionStrategy, Component, inject, afterNextRender, HostBinding, signal, ViewEncapsulation, InjectionToken, effect, ViewChild, CUSTOM_ELEMENTS_SCHEMA, untracked, Injectable, output, input, ChangeDetectorRef, viewChild, ElementRef, afterRender, NgZone, model, linkedSignal, HostListener, importProvidersFrom, NgModule } from '@angular/core';
16
16
  import * as i1 from '@acorex/components/check-box';
17
17
  import { AXCheckBoxModule } from '@acorex/components/check-box';
18
18
  import * as i4 from '@acorex/components/form';
@@ -54,20 +54,19 @@ import * as i5$1 from '@acorex/components/search-box';
54
54
  import { AXSearchBoxModule } from '@acorex/components/search-box';
55
55
  import * as i2$5 from '@acorex/components/selection-list';
56
56
  import { AXSelectionListModule } from '@acorex/components/selection-list';
57
- import { first, Subscription } from 'rxjs';
58
- import { AXFileService } from '@acorex/core/file';
57
+ import { first } from 'rxjs';
59
58
  import * as i6$1 from '@acorex/components/dropdown';
60
59
  import { AXDropdownModule } from '@acorex/components/dropdown';
61
60
  import * as i2$6 from '@acorex/components/switch';
62
61
  import { AXSwitchModule } from '@acorex/components/switch';
63
- import * as i2$7 from '@acorex/components/uploader';
64
- import { AXUploaderModule } from '@acorex/components/uploader';
65
- import { AXLoadingDialogService } from '@acorex/components/loading-dialog';
62
+ import { AXFileService } from '@acorex/core/file';
66
63
  import * as i5$2 from '@acorex/platform/layout/components';
67
64
  import { AXPComponentSlotModule } from '@acorex/platform/layout/components';
65
+ import { AXPDataGenerator, objectKeyValueTransforms } from '@acorex/platform/core';
66
+ import { AXUploaderModule } from '@acorex/components/uploader';
68
67
  import * as i1$5 from '@acorex/components/media-viewer';
69
68
  import { AXMediaViewerModule } from '@acorex/components/media-viewer';
70
- import * as i2$8 from '@acorex/components/image';
69
+ import * as i2$7 from '@acorex/components/image';
71
70
  import { AXImageModule } from '@acorex/components/image';
72
71
  import * as i1$6 from '@acorex/components/map';
73
72
  import { AXMapModule } from '@acorex/components/map';
@@ -78,11 +77,11 @@ import * as i1$8 from '@acorex/components/button-group';
78
77
  import { AXButtonGroupModule } from '@acorex/components/button-group';
79
78
  import * as i7$1 from '@acorex/components/range-slider';
80
79
  import { AXRangeSliderModule } from '@acorex/components/range-slider';
81
- import * as i2$9 from '@acorex/components/color-box';
80
+ import * as i2$8 from '@acorex/components/color-box';
82
81
  import { AXColorBoxModule } from '@acorex/components/color-box';
83
82
  import * as i1$9 from '@acorex/components/popover';
84
83
  import { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';
85
- import * as i2$a from '@acorex/components/cron-job';
84
+ import * as i2$9 from '@acorex/components/cron-job';
86
85
  import { AXCronJobModule } from '@acorex/components/cron-job';
87
86
  import * as i1$a from '@acorex/components/qrcode';
88
87
  import { AXQrcodeModule } from '@acorex/components/qrcode';
@@ -90,11 +89,10 @@ import { AXColorUtil } from '@acorex/core/utils';
90
89
  import * as i6$2 from '@acorex/components/dropdown-button';
91
90
  import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
92
91
  import { AXDataTableModule } from '@acorex/components/data-table';
93
- import * as i2$b from '@acorex/components/time-duration';
92
+ import * as i2$a from '@acorex/components/time-duration';
94
93
  import { AXTimeDurationModule } from '@acorex/components/time-duration';
95
94
  import * as i1$b from '@acorex/components/collapse';
96
95
  import { AXCollapseModule } from '@acorex/components/collapse';
97
- import { objectKeyValueTransforms } from '@acorex/platform/core';
98
96
  import { DomSanitizer } from '@angular/platform-browser';
99
97
 
100
98
  const AXP_STYLING_PROPERTY_GROUP = {
@@ -824,6 +822,22 @@ const AXP_LAYOUT_SHOW_HEADER_PROPERTY = createBooleanProperty({
824
822
  path: 'options.showHeader',
825
823
  defaultValue: true,
826
824
  });
825
+ const AXP_LAYOUT_DIRECTION_PROPERTY = {
826
+ name: 'direction',
827
+ title: 'Direction',
828
+ group: AXP_BOX_MODEL_PROPERTY_GROUP,
829
+ schema: {
830
+ dataType: 'string',
831
+ defaultValue: 'ltr',
832
+ interface: {
833
+ name: 'direction',
834
+ path: 'options.direction',
835
+ type: AXPWidgetsCatalog.direction,
836
+ options: {},
837
+ },
838
+ },
839
+ visible: true,
840
+ };
827
841
 
828
842
  const AXP_TABLE_COLUMN_WIDTH_PROPERTY = {
829
843
  name: 'width',
@@ -2776,7 +2790,7 @@ class AXPLargeTextWidgetEditComponent extends AXPValueWidgetComponent {
2776
2790
  }
2777
2791
  ngOnInit() {
2778
2792
  super.ngOnInit();
2779
- console.log(this.multiLanguage());
2793
+ //console.log(this.multiLanguage());
2780
2794
  this.getCurrentLanguage();
2781
2795
  }
2782
2796
  handleValueChange(e) {
@@ -5730,278 +5744,6 @@ const AXPSelectionListWidget = {
5730
5744
  },
5731
5745
  };
5732
5746
 
5733
- class AXPSingleFileBoxWidgetColumnComponent extends AXPValueWidgetComponent {
5734
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSingleFileBoxWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5735
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPSingleFileBoxWidgetColumnComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5736
- }
5737
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSingleFileBoxWidgetColumnComponent, decorators: [{
5738
- type: Component,
5739
- args: [{
5740
- template: ``,
5741
- changeDetection: ChangeDetectionStrategy.OnPush,
5742
- imports: [CommonModule],
5743
- inputs: [],
5744
- }]
5745
- }] });
5746
-
5747
- var singleFileBoxWidgetColumn_component = /*#__PURE__*/Object.freeze({
5748
- __proto__: null,
5749
- AXPSingleFileBoxWidgetColumnComponent: AXPSingleFileBoxWidgetColumnComponent
5750
- });
5751
-
5752
- class AXPSingleFileBoxWidgetEditComponent extends AXPValueWidgetComponent {
5753
- constructor() {
5754
- super(...arguments);
5755
- this.showPreview = computed(() => this.options()['showPreview']);
5756
- this.refId = computed(() => this.options()['refId']);
5757
- this.refType = computed(() => this.options()['refType']);
5758
- this.fileService = inject(AXFileService);
5759
- this.fileStorage = inject(AXPFileStorageService);
5760
- this.url = signal(null);
5761
- this.isEmpty = computed(() => this.url() == null);
5762
- this.markedAsCommited = null;
5763
- this.markedAsDeleted = null;
5764
- this.#effect1 = effect(async () => {
5765
- const fileId = this.getValue();
5766
- await untracked(async () => {
5767
- try {
5768
- if (fileId) {
5769
- this.setStatus(AXPWidgetStatus.Processing);
5770
- const info = await this.fileStorage.getInfo(fileId);
5771
- this.url.set(info.url ? info.url : null);
5772
- }
5773
- else {
5774
- this.url.set(null);
5775
- }
5776
- this.setStatus(AXPWidgetStatus.Rendered);
5777
- }
5778
- catch (error) {
5779
- this.setStatus(AXPWidgetStatus.Error);
5780
- }
5781
- });
5782
- });
5783
- this.#effect2 = effect(async () => {
5784
- const status = this.layoutService.status();
5785
- if (status == AXPPageStatus.Submitted) {
5786
- if (this.markedAsCommited) {
5787
- await this.fileStorage.commit(this.markedAsCommited);
5788
- this.markedAsCommited = null;
5789
- }
5790
- if (this.markedAsDeleted) {
5791
- await this.fileStorage.markForDeletion(this.markedAsDeleted);
5792
- this.markedAsDeleted = null;
5793
- }
5794
- }
5795
- });
5796
- }
5797
- #effect1;
5798
- #effect2;
5799
- async chooseFile() {
5800
- const files = await this.fileService.choose({ accept: 'image/png, image/jpeg' });
5801
- const file = files[0];
5802
- const base64 = await this.fileService.blobToBase64(file);
5803
- this.url.set(base64);
5804
- // start upload
5805
- const info = await this.fileStorage.save({
5806
- category: 'company-logo',
5807
- file: file,
5808
- refId: this.refId(),
5809
- refType: this.refType(),
5810
- isPrimary: true,
5811
- });
5812
- this.markedAsCommited = info.fileId;
5813
- this.setValue(info.fileId);
5814
- }
5815
- async handleChange() {
5816
- await this.chooseFile();
5817
- }
5818
- async handleRemove() {
5819
- this.markedAsDeleted = this.getValue();
5820
- this.setValue(null);
5821
- }
5822
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSingleFileBoxWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5823
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPSingleFileBoxWidgetEditComponent, isStandalone: true, selector: "axp-single-file-box-widget", usesInheritance: true, ngImport: i0, template: `
5824
- @if(showPreview()) { @if(isBusy()) {
5825
- <div class="axp-empty axp-state-loading">
5826
- <i class="fa-solid fa-spinner-third fa-spin"></i>
5827
- </div>
5828
- } @else if(!url()) {
5829
- <div class="axp-empty" (click)="handleChange()" [class.axp-state-error]="this.status() == 'error'">
5830
- <i class="fa-solid fa-camera ax-text-3xl ax-text-gray-400"></i>
5831
- </div>
5832
- } @else {
5833
- <div class="axp-content" [class.axp-state-error]="this.status() == 'error'">
5834
- <div [style.backgroundImage]="url() ? 'url(' + url() + ')' : ''"></div>
5835
- <div>
5836
- <div (click)="handleChange()">
5837
- <i class="fa-solid fa-camera "></i>
5838
- </div>
5839
- <div (click)="handleRemove()">
5840
- <i class="fa-light fa-trash-can "></i>
5841
- </div>
5842
- </div>
5843
- </div>
5844
- } }@else {
5845
- <div>
5846
- <p>Upload</p>
5847
- </div>
5848
- }
5849
- `, isInline: true, styles: ["axp-avatar-widget-edit .axp-empty{height:11rem;width:11rem;cursor:pointer;border-radius:.375rem;border-width:2px;border-style:dashed;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));display:flex;align-items:center;justify-content:center}axp-avatar-widget-edit .axp-empty.axp-state-error{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-danger-surface),var(--tw-border-opacity, 1))}axp-avatar-widget-edit .axp-empty:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-primary-surface),var(--tw-border-opacity, 1))}axp-avatar-widget-edit .axp-empty.axp-state-loading{--fa-animation-duration: .7s}axp-avatar-widget-edit .axp-empty.axp-state-loading i{font-size:1.875rem;line-height:2.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}axp-avatar-widget-edit .axp-empty.axp-state-loading i:is(.ax-dark *){--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-400),var(--tw-text-opacity, 1))}axp-avatar-widget-edit .axp-content{cursor:pointer;overflow:hidden;border-radius:.375rem;border-width:1px;display:flex}axp-avatar-widget-edit .axp-content.axp-state-error{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-danger-surface),var(--tw-border-opacity, 1))}axp-avatar-widget-edit .axp-content>:first-child{border-start-start-radius:.375rem;border-end-start-radius:.375rem;background-size:cover;background-position:center;height:11rem;width:11rem;border-inline-end-width:1px}axp-avatar-widget-edit .axp-content>:last-child{display:flex;flex-direction:column}axp-avatar-widget-edit .axp-content>:last-child>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axp-avatar-widget-edit .axp-content>:last-child{overflow:hidden}axp-avatar-widget-edit .axp-content>:last-child>div{display:flex;width:5rem;flex:1 1 0%;align-items:center;justify-content:center;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1))}axp-avatar-widget-edit .axp-content>:last-child>div:hover{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-darkest-surface),var(--tw-bg-opacity, 1))}axp-avatar-widget-edit .axp-content>:last-child>div>i{font-size:1.5rem;line-height:2rem}axp-avatar-widget-edit .axp-content>:last-child>:first-child{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-surface),var(--tw-text-opacity, 1))}axp-avatar-widget-edit .axp-content>:last-child>:last-child{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-danger-500),var(--tw-text-opacity, 1))}axp-avatar-widget-edit .axp-content>:last-child>:last-child:is(.ax-dark *){--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-danger-800),var(--tw-text-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXButtonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5850
- }
5851
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSingleFileBoxWidgetEditComponent, decorators: [{
5852
- type: Component,
5853
- args: [{ selector: 'axp-single-file-box-widget', template: `
5854
- @if(showPreview()) { @if(isBusy()) {
5855
- <div class="axp-empty axp-state-loading">
5856
- <i class="fa-solid fa-spinner-third fa-spin"></i>
5857
- </div>
5858
- } @else if(!url()) {
5859
- <div class="axp-empty" (click)="handleChange()" [class.axp-state-error]="this.status() == 'error'">
5860
- <i class="fa-solid fa-camera ax-text-3xl ax-text-gray-400"></i>
5861
- </div>
5862
- } @else {
5863
- <div class="axp-content" [class.axp-state-error]="this.status() == 'error'">
5864
- <div [style.backgroundImage]="url() ? 'url(' + url() + ')' : ''"></div>
5865
- <div>
5866
- <div (click)="handleChange()">
5867
- <i class="fa-solid fa-camera "></i>
5868
- </div>
5869
- <div (click)="handleRemove()">
5870
- <i class="fa-light fa-trash-can "></i>
5871
- </div>
5872
- </div>
5873
- </div>
5874
- } }@else {
5875
- <div>
5876
- <p>Upload</p>
5877
- </div>
5878
- }
5879
- `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
5880
- CommonModule,
5881
- AXTextBoxModule,
5882
- FormsModule,
5883
- AXFormModule,
5884
- AXDecoratorModule,
5885
- AXValidationModule,
5886
- AXButtonModule,
5887
- ], inputs: [], styles: ["axp-avatar-widget-edit .axp-empty{height:11rem;width:11rem;cursor:pointer;border-radius:.375rem;border-width:2px;border-style:dashed;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));display:flex;align-items:center;justify-content:center}axp-avatar-widget-edit .axp-empty.axp-state-error{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-danger-surface),var(--tw-border-opacity, 1))}axp-avatar-widget-edit .axp-empty:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-primary-surface),var(--tw-border-opacity, 1))}axp-avatar-widget-edit .axp-empty.axp-state-loading{--fa-animation-duration: .7s}axp-avatar-widget-edit .axp-empty.axp-state-loading i{font-size:1.875rem;line-height:2.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}axp-avatar-widget-edit .axp-empty.axp-state-loading i:is(.ax-dark *){--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-400),var(--tw-text-opacity, 1))}axp-avatar-widget-edit .axp-content{cursor:pointer;overflow:hidden;border-radius:.375rem;border-width:1px;display:flex}axp-avatar-widget-edit .axp-content.axp-state-error{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-danger-surface),var(--tw-border-opacity, 1))}axp-avatar-widget-edit .axp-content>:first-child{border-start-start-radius:.375rem;border-end-start-radius:.375rem;background-size:cover;background-position:center;height:11rem;width:11rem;border-inline-end-width:1px}axp-avatar-widget-edit .axp-content>:last-child{display:flex;flex-direction:column}axp-avatar-widget-edit .axp-content>:last-child>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axp-avatar-widget-edit .axp-content>:last-child{overflow:hidden}axp-avatar-widget-edit .axp-content>:last-child>div{display:flex;width:5rem;flex:1 1 0%;align-items:center;justify-content:center;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1))}axp-avatar-widget-edit .axp-content>:last-child>div:hover{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-darkest-surface),var(--tw-bg-opacity, 1))}axp-avatar-widget-edit .axp-content>:last-child>div>i{font-size:1.5rem;line-height:2rem}axp-avatar-widget-edit .axp-content>:last-child>:first-child{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-surface),var(--tw-text-opacity, 1))}axp-avatar-widget-edit .axp-content>:last-child>:last-child{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-danger-500),var(--tw-text-opacity, 1))}axp-avatar-widget-edit .axp-content>:last-child>:last-child:is(.ax-dark *){--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-danger-800),var(--tw-text-opacity, 1))}\n"] }]
5888
- }] });
5889
-
5890
- var singleFileBoxWidgetEdit_component = /*#__PURE__*/Object.freeze({
5891
- __proto__: null,
5892
- AXPSingleFileBoxWidgetEditComponent: AXPSingleFileBoxWidgetEditComponent
5893
- });
5894
-
5895
- class AXPSingleFileBoxWidgetFilterComponent extends AXPValueWidgetComponent {
5896
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSingleFileBoxWidgetFilterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5897
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPSingleFileBoxWidgetFilterComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5898
- }
5899
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSingleFileBoxWidgetFilterComponent, decorators: [{
5900
- type: Component,
5901
- args: [{
5902
- template: ``,
5903
- changeDetection: ChangeDetectionStrategy.OnPush,
5904
- imports: [CommonModule, FormsModule],
5905
- inputs: [],
5906
- }]
5907
- }] });
5908
-
5909
- var singleFileBoxWidgetFilter_component = /*#__PURE__*/Object.freeze({
5910
- __proto__: null,
5911
- AXPSingleFileBoxWidgetFilterComponent: AXPSingleFileBoxWidgetFilterComponent
5912
- });
5913
-
5914
- class AXPSingleFileBoxWidgetPrintComponent extends AXPValueWidgetComponent {
5915
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSingleFileBoxWidgetPrintComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5916
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPSingleFileBoxWidgetPrintComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5917
- }
5918
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSingleFileBoxWidgetPrintComponent, decorators: [{
5919
- type: Component,
5920
- args: [{
5921
- template: ``,
5922
- changeDetection: ChangeDetectionStrategy.OnPush,
5923
- imports: [CommonModule],
5924
- inputs: [],
5925
- }]
5926
- }] });
5927
-
5928
- var singleFileBoxWidgetPrint_component = /*#__PURE__*/Object.freeze({
5929
- __proto__: null,
5930
- AXPSingleFileBoxWidgetPrintComponent: AXPSingleFileBoxWidgetPrintComponent
5931
- });
5932
-
5933
- class AXPSingleFileBoxWidgetViewComponent extends AXPValueWidgetComponent {
5934
- constructor() {
5935
- super(...arguments);
5936
- this.internalValue = computed(() => (Array.isArray(this.getValue()) ? this.getValue() : [this.getValue()]));
5937
- this.multiple = computed(() => this.options()['multiple']);
5938
- }
5939
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSingleFileBoxWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5940
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPSingleFileBoxWidgetViewComponent, isStandalone: true, selector: "axp-single-file-box-widget", usesInheritance: true, ngImport: i0, template: `
5941
- <div>
5942
- @if(multiple()) { @for (item of internalValue(); track $index) {
5943
- <p>{{ item }}</p>
5944
- } }@else {
5945
- <p>{{ internalValue()[0] }}</p>
5946
- }
5947
- </div>
5948
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5949
- }
5950
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSingleFileBoxWidgetViewComponent, decorators: [{
5951
- type: Component,
5952
- args: [{
5953
- selector: 'axp-single-file-box-widget',
5954
- template: `
5955
- <div>
5956
- @if(multiple()) { @for (item of internalValue(); track $index) {
5957
- <p>{{ item }}</p>
5958
- } }@else {
5959
- <p>{{ internalValue()[0] }}</p>
5960
- }
5961
- </div>
5962
- `,
5963
- changeDetection: ChangeDetectionStrategy.OnPush,
5964
- imports: [CommonModule],
5965
- inputs: [],
5966
- }]
5967
- }] });
5968
-
5969
- var singleFileBoxWidgetView_component = /*#__PURE__*/Object.freeze({
5970
- __proto__: null,
5971
- AXPSingleFileBoxWidgetViewComponent: AXPSingleFileBoxWidgetViewComponent
5972
- });
5973
-
5974
- const AXPSingleFileBoxWidget = {
5975
- name: 'single-file-box-editor',
5976
- title: 'SingleFileBox',
5977
- icon: 'fa-light fa-cube',
5978
- description: 'Single Upload and show file',
5979
- categories: AXP_WIDGETS_EDITOR_CATEGORY,
5980
- type: 'editor',
5981
- defaultFilterWidgetName: 'string-filter',
5982
- properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],
5983
- components: {
5984
- view: {
5985
- component: () => Promise.resolve().then(function () { return singleFileBoxWidgetView_component; }).then((c) => c.AXPSingleFileBoxWidgetViewComponent),
5986
- },
5987
- edit: {
5988
- component: () => Promise.resolve().then(function () { return singleFileBoxWidgetEdit_component; }).then((c) => c.AXPSingleFileBoxWidgetEditComponent),
5989
- },
5990
- filter: {
5991
- component: () => Promise.resolve().then(function () { return singleFileBoxWidgetFilter_component; }).then((c) => c.AXPSingleFileBoxWidgetFilterComponent),
5992
- },
5993
- column: {
5994
- component: () => Promise.resolve().then(function () { return singleFileBoxWidgetColumn_component; }).then((c) => c.AXPSingleFileBoxWidgetColumnComponent),
5995
- },
5996
- print: {
5997
- component: () => Promise.resolve().then(function () { return singleFileBoxWidgetPrint_component; }).then((c) => c.AXPSingleFileBoxWidgetPrintComponent),
5998
- },
5999
- designer: {
6000
- component: () => Promise.resolve().then(function () { return singleFileBoxWidgetEdit_component; }).then((c) => c.AXPSingleFileBoxWidgetEditComponent),
6001
- },
6002
- },
6003
- };
6004
-
6005
5747
  class AXPTemplateBoxWidgetColumnComponent extends AXPValueWidgetComponent {
6006
5748
  constructor() {
6007
5749
  super(...arguments);
@@ -7249,532 +6991,53 @@ const AXPAvatarWidget = {
7249
6991
  },
7250
6992
  };
7251
6993
 
7252
- class AXPFileBoxWidgetColumnComponent extends AXPValueWidgetComponent {
7253
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileBoxWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7254
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPFileBoxWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue" }, usesInheritance: true, ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6994
+ class AXPFileUploaderWidgetService {
6995
+ constructor() {
6996
+ this.popupService = inject(AXPopupService);
6997
+ this.translate = inject(AXTranslationService);
6998
+ }
6999
+ async showFileList(options) {
7000
+ const defaultOptions = {
7001
+ files: [],
7002
+ readOnly: false,
7003
+ multiple: false,
7004
+ accept: '*',
7005
+ };
7006
+ options = { ...defaultOptions, ...options };
7007
+ const component = await import('./acorex-platform-widgets-file-list-popup.component-TNxbcVav.mjs').then(m => m.AXPFileListPopupComponent);
7008
+ const result = await this.popupService.open(component, {
7009
+ title: (await this.translate.translateAsync('@document-management:file')),
7010
+ data: {
7011
+ files: signal(options.files),
7012
+ readOnly: signal(options.readOnly),
7013
+ multiple: signal(options.multiple),
7014
+ accept: signal(options.accept),
7015
+ },
7016
+ });
7017
+ return result?.data?.data?.files;
7018
+ }
7019
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileUploaderWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7020
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileUploaderWidgetService, providedIn: 'root' }); }
7255
7021
  }
7256
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileBoxWidgetColumnComponent, decorators: [{
7257
- type: Component,
7022
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileUploaderWidgetService, decorators: [{
7023
+ type: Injectable,
7258
7024
  args: [{
7259
- template: ``,
7260
- changeDetection: ChangeDetectionStrategy.OnPush,
7261
- imports: [CommonModule],
7262
- inputs: ['rawValue']
7025
+ providedIn: 'root'
7263
7026
  }]
7264
7027
  }] });
7265
7028
 
7266
- var fileBoxWidgetColumn_component = /*#__PURE__*/Object.freeze({
7267
- __proto__: null,
7268
- AXPFileBoxWidgetColumnComponent: AXPFileBoxWidgetColumnComponent
7269
- });
7270
-
7271
- class AXPFileBoxWidgetEditComponent extends AXPValueWidgetComponent {
7029
+ class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetComponent {
7272
7030
  constructor() {
7273
7031
  super(...arguments);
7274
- this.fileStorage = inject(AXPFileStorageService);
7275
- this.fileTypeService = inject(AXPFileTypeProviderService);
7276
- this.isLoading = signal(true);
7277
- this.fileTypes = signal([]);
7278
- this.multiple = computed(() => this.options()['multiple']);
7279
- this.accept = computed(() => this.options()['accept']);
7280
- this.description = computed(() => this.options()['description']);
7281
- this.metaData = computed(() => this.options()['metaData']);
7282
- this.refId = computed(() => this.options()['refId']);
7283
- this.refType = computed(() => this.options()['refType']);
7284
- this.markedListAsCommitted = null;
7285
- this.markedListAsDeleted = null;
7032
+ this.count = computed(() => castArray(this.rawValue).length);
7033
+ this.fileService = inject(AXPFileUploaderWidgetService);
7286
7034
  }
7287
- async ngOnInit() {
7288
- super.ngOnInit();
7289
- this.fileTypes.set(await this.fileTypeService.items());
7290
- this.isLoading.set(false);
7291
- }
7292
- async ngOnDestroy() {
7293
- const status = this.layoutService.status();
7294
- if (status == AXPPageStatus.Submitted) {
7295
- if (this.markedListAsCommitted) {
7296
- for (const fileId of this.markedListAsCommitted) {
7297
- await this.fileStorage.commit(fileId);
7298
- }
7299
- this.markedListAsCommitted = null;
7300
- }
7301
- if (this.markedListAsDeleted) {
7302
- for (const fileId of this.markedListAsDeleted) {
7303
- await this.fileStorage.markForDeletion(fileId);
7304
- }
7305
- this.markedListAsDeleted = null;
7306
- }
7307
- }
7308
- }
7309
- async handleOnFileRemove(file) {
7310
- this.setValue(this.getValue().filter((f) => f.fileId !== file.fileId));
7311
- await this.fileStorage.markForDeletion(file.fileId);
7312
- }
7313
- handleOnFileUploadComplete(e) { }
7314
- handleOnFilesUploadComplete(e) { }
7315
- async handleChanged(e) {
7316
- console.log(e);
7317
- const results = [];
7318
- for (var i = 0; i < e.requests.length; i++) {
7319
- results.push(await this.fileStorage.save({
7320
- category: 'file-upload',
7321
- file: e.requests[i].file,
7322
- refId: this.refId(),
7323
- refType: this.refType(),
7324
- isPrimary: true,
7325
- name: e.requests[i].file.name,
7326
- }));
7327
- e.requests[i].finish({
7328
- id: results[i].fileId,
7329
- });
7330
- }
7331
- if (!this.multiple()) {
7332
- if (results.length > 0 && results[0].fileId) {
7333
- console.log(results[0]);
7334
- this.setValue([results[0]]);
7335
- this.markedListAsCommitted = [results[0].fileId];
7336
- }
7337
- }
7338
- else {
7339
- console.log(results);
7340
- this.setValue([...(this.getValue() ?? []), ...results]);
7341
- this.markedListAsCommitted = [...(this.markedListAsCommitted ?? []), ...results.map((r) => r.fileId)];
7342
- }
7343
- }
7344
- getFileInfo(fileName) {
7345
- const extension = fileName.split('.').pop()?.toLowerCase() || '';
7346
- const extensions = this.fileTypes().flatMap((t) => t.extensions);
7347
- const fileType = extensions.find((e) => e.name === extension);
7348
- return {
7349
- icon: fileType?.icon || 'fa-light fa-file',
7350
- type: fileType?.name || 'Unknown',
7351
- };
7352
- }
7353
- get __class() {
7354
- const cls = {};
7355
- cls[`ax-block`] = true;
7356
- cls[`ax-flex-1`] = true;
7357
- return cls;
7358
- }
7359
- async handleFileDownload(event, file) {
7360
- event.stopPropagation();
7361
- const link = document.createElement('a');
7362
- link.href = file.url ?? '';
7363
- link.download = file.name ?? ''; // Set the desired file name
7364
- document.body.appendChild(link);
7365
- link.click();
7366
- document.body.removeChild(link);
7367
- }
7368
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileBoxWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7369
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPFileBoxWidgetEditComponent, isStandalone: true, selector: "axp-file-widget-edit", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
7370
- @if(isLoading()){<ax-loading></ax-loading>}@else{
7371
- <div class="ax-grid ax-grid-cols-12">
7372
- <div class="ax-col-span-12">
7373
- <ax-uploader-drop-zone
7374
- axUploaderZone
7375
- (onChanged)="handleChanged($event)"
7376
- [multiple]="multiple()"
7377
- [accept]="accept()"
7378
- [description]="description()"
7379
- (onFileUploadComplete)="handleOnFileUploadComplete($event)"
7380
- (onFilesUploadComplete)="handleOnFilesUploadComplete($event)"
7381
- ></ax-uploader-drop-zone>
7382
- </div>
7383
- </div>
7384
- <div class="__content fa-xl">
7385
- @for (file of getValue(); track $index) { @let fileInfo = getFileInfo(file.name!);
7386
- <div class="__explorer-item">
7387
- <div class="__icon">
7388
- <i class="fa-fw {{ fileInfo.icon }} fa-solid"></i>
7389
- </div>
7390
- <div class="__name">{{ file.name }}</div>
7391
- <div class="ax-flex ax-gap-2 ax-ml-auto">
7392
- <ax-icon
7393
- class="fa-regular fa-download ax-text-lg ax-cursor-pointer hover:ax-text-primary"
7394
- (click)="handleFileDownload($event, file)"
7395
- ></ax-icon>
7396
- <ax-icon
7397
- class="fa-regular ax-text-lg fa-trash ax-cursor-pointer hover:ax-text-danger"
7398
- (click)="handleOnFileRemove(file)"
7399
- ></ax-icon>
7400
- </div>
7401
- </div>
7402
- }
7403
- </div>
7404
- }
7405
- `, isInline: true, styles: [":host{width:100%}:host .__content{display:flex;flex-direction:column;gap:.125rem}:host .__content .__explorer-item{display:flex;cursor:pointer;align-items:center;gap:.75rem;border-radius:.375rem;padding:.5rem}:host .__content .__explorer-item:hover{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host .__content .__explorer-item .__icon{width:1.5rem;flex-shrink:0}:host .__content .__explorer-item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:.875rem;line-height:1.25rem;font-weight:500}:host .__content .__explorer-item.--selected{background-color:rgb(var(--ax-sys-color-darker-surface));color:rgb(var(--ax-sys-color-on-darker-surface));border-color:rgb(var(--ax-sys-color-border-darker-surface))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXUploaderModule }, { kind: "component", type: i2$7.AXUploaderDropZoneComponent, selector: "ax-uploader-drop-zone", inputs: ["description"] }, { kind: "directive", type: i2$7.AXUploaderZoneDirective, selector: "[axUploaderZone]", inputs: ["multiple", "accept"], outputs: ["onChanged", "onFileUploadComplete", "onFilesUploadComplete"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7406
- }
7407
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileBoxWidgetEditComponent, decorators: [{
7408
- type: Component,
7409
- args: [{ selector: 'axp-file-widget-edit', template: `
7410
- @if(isLoading()){<ax-loading></ax-loading>}@else{
7411
- <div class="ax-grid ax-grid-cols-12">
7412
- <div class="ax-col-span-12">
7413
- <ax-uploader-drop-zone
7414
- axUploaderZone
7415
- (onChanged)="handleChanged($event)"
7416
- [multiple]="multiple()"
7417
- [accept]="accept()"
7418
- [description]="description()"
7419
- (onFileUploadComplete)="handleOnFileUploadComplete($event)"
7420
- (onFilesUploadComplete)="handleOnFilesUploadComplete($event)"
7421
- ></ax-uploader-drop-zone>
7422
- </div>
7423
- </div>
7424
- <div class="__content fa-xl">
7425
- @for (file of getValue(); track $index) { @let fileInfo = getFileInfo(file.name!);
7426
- <div class="__explorer-item">
7427
- <div class="__icon">
7428
- <i class="fa-fw {{ fileInfo.icon }} fa-solid"></i>
7429
- </div>
7430
- <div class="__name">{{ file.name }}</div>
7431
- <div class="ax-flex ax-gap-2 ax-ml-auto">
7432
- <ax-icon
7433
- class="fa-regular fa-download ax-text-lg ax-cursor-pointer hover:ax-text-primary"
7434
- (click)="handleFileDownload($event, file)"
7435
- ></ax-icon>
7436
- <ax-icon
7437
- class="fa-regular ax-text-lg fa-trash ax-cursor-pointer hover:ax-text-danger"
7438
- (click)="handleOnFileRemove(file)"
7439
- ></ax-icon>
7440
- </div>
7441
- </div>
7442
- }
7443
- </div>
7444
- }
7445
- `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AXButtonModule, AXDecoratorModule, AXUploaderModule, AXLoadingModule], inputs: [], styles: [":host{width:100%}:host .__content{display:flex;flex-direction:column;gap:.125rem}:host .__content .__explorer-item{display:flex;cursor:pointer;align-items:center;gap:.75rem;border-radius:.375rem;padding:.5rem}:host .__content .__explorer-item:hover{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host .__content .__explorer-item .__icon{width:1.5rem;flex-shrink:0}:host .__content .__explorer-item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:.875rem;line-height:1.25rem;font-weight:500}:host .__content .__explorer-item.--selected{background-color:rgb(var(--ax-sys-color-darker-surface));color:rgb(var(--ax-sys-color-on-darker-surface));border-color:rgb(var(--ax-sys-color-border-darker-surface))}\n"] }]
7446
- }], propDecorators: { __class: [{
7447
- type: HostBinding,
7448
- args: ['class']
7449
- }] } });
7450
-
7451
- var fileBoxWidgetEdit_component = /*#__PURE__*/Object.freeze({
7452
- __proto__: null,
7453
- AXPFileBoxWidgetEditComponent: AXPFileBoxWidgetEditComponent
7454
- });
7455
-
7456
- class AXPFileBoxWidgetFilterComponent extends AXPValueWidgetComponent {
7457
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileBoxWidgetFilterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7458
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPFileBoxWidgetFilterComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7459
- }
7460
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileBoxWidgetFilterComponent, decorators: [{
7461
- type: Component,
7462
- args: [{
7463
- template: ``,
7464
- changeDetection: ChangeDetectionStrategy.OnPush,
7465
- imports: [CommonModule, FormsModule],
7466
- inputs: []
7467
- }]
7468
- }] });
7469
-
7470
- var fileBoxWidgetFilter_component = /*#__PURE__*/Object.freeze({
7471
- __proto__: null,
7472
- AXPFileBoxWidgetFilterComponent: AXPFileBoxWidgetFilterComponent
7473
- });
7474
-
7475
- class AXPFileBoxWidgetPrintComponent extends AXPValueWidgetComponent {
7476
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileBoxWidgetPrintComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7477
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPFileBoxWidgetPrintComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: ``, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7478
- }
7479
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileBoxWidgetPrintComponent, decorators: [{
7480
- type: Component,
7481
- args: [{
7482
- template: ``,
7483
- changeDetection: ChangeDetectionStrategy.OnPush,
7484
- imports: [CommonModule],
7485
- inputs: []
7486
- }]
7487
- }] });
7488
-
7489
- var fileBoxWidgetPrint_component = /*#__PURE__*/Object.freeze({
7490
- __proto__: null,
7491
- AXPFileBoxWidgetPrintComponent: AXPFileBoxWidgetPrintComponent
7492
- });
7493
-
7494
- class AXPFileBoxWidgetViewComponent extends AXPValueWidgetComponent {
7495
- constructor() {
7496
- super(...arguments);
7497
- this.fileStorageService = inject(AXPFileStorageService);
7498
- this.loadingDialog = inject(AXLoadingDialogService);
7499
- this.translateService = inject(AXTranslationService);
7500
- this.multiple = computed(() => this.options()['multiple']);
7501
- this.downloadable = computed(() => this.options()['downloadable']);
7502
- this.internalValue = signal([]);
7503
- this.downloadSubscription = new Subscription();
7504
- }
7505
- ngOnInit() {
7506
- this.updateInternalValue();
7507
- super.ngOnInit();
7508
- }
7509
- async handleDownload(item) {
7510
- const d = this.loadingDialog.show({
7511
- title: await this.translateService.translateAsync('downloader.dialog.downloading'), // Downloading File
7512
- mode: 'determinate',
7513
- progressColor: 'primary',
7514
- progressValue: 0,
7515
- text: await this.translateService.translateAsync('downloader.dialog.waiting'), // Waiting...
7516
- buttons: [
7517
- {
7518
- text: await this.translateService.translateAsync('downloader.dialog.cancel'),
7519
- color: 'danger',
7520
- onClick: () => {
7521
- this.cancelDownload();
7522
- d.close();
7523
- },
7524
- },
7525
- ],
7526
- });
7527
- }
7528
- cancelDownload() {
7529
- this.downloadSubscription.unsubscribe();
7530
- }
7531
- triggerDownload(blob, name) {
7532
- const link = document.createElement('a');
7533
- const url = URL.createObjectURL(blob);
7534
- link.href = url;
7535
- link.download = name || 'asset';
7536
- document.body.appendChild(link);
7537
- link.click();
7538
- document.body.removeChild(link);
7539
- URL.revokeObjectURL(url);
7540
- }
7541
- getFileInfo(extension) {
7542
- switch (extension) {
7543
- case 'txt':
7544
- return { icon: 'fa-file-alt', color: 'ax-bg-blue-100 ax-text-blue-500' };
7545
- case 'pdf':
7546
- return { icon: 'fa-file-pdf', color: 'ax-bg-red-100 ax-text-red-500' };
7547
- case 'doc':
7548
- case 'docx':
7549
- return { icon: 'fa-file-word', color: 'ax-bg-blue-200 ax-text-blue-600' };
7550
- case 'xls':
7551
- case 'xlsx':
7552
- return { icon: 'fa-file-excel', color: 'ax-bg-green-100 ax-text-green-500' };
7553
- case 'ppt':
7554
- case 'pptx':
7555
- return { icon: 'fa-file-powerpoint', color: 'ax-bg-orange-100 ax-text-orange-500' };
7556
- case 'jpg':
7557
- case 'jpeg':
7558
- case 'png':
7559
- case 'gif':
7560
- case 'bmp':
7561
- return { icon: 'fa-file-image', color: 'ax-bg-purple-100 ax-text-purple-500' };
7562
- case 'zip':
7563
- case 'rar':
7564
- case '7z':
7565
- return { icon: 'fa-file-archive', color: 'ax-bg-yellow-100 ax-text-yellow-500' };
7566
- case 'mp3':
7567
- case 'wav':
7568
- case 'ogg':
7569
- return { icon: 'fa-file-audio', color: 'ax-bg-pink-100 ax-text-pink-500' };
7570
- case 'mp4':
7571
- case 'avi':
7572
- case 'mkv':
7573
- case 'mov':
7574
- return { icon: 'fa-file-video', color: 'ax-bg-blue-100 ax-text-blue-500' };
7575
- case 'js':
7576
- case 'jsx':
7577
- case 'ts':
7578
- case 'tsx':
7579
- return { icon: 'fa-file-code', color: 'ax-bg-yellow-100 ax-text-yellow-500' };
7580
- // Add more cases as needed for other file types
7581
- default:
7582
- return { icon: 'fa-file', color: 'ax-bg-gray-100 ax-text-gray-500' };
7583
- }
7584
- }
7585
- async updateInternalValue() {
7586
- if (!this.getValue()) {
7587
- this.internalValue.set([]);
7588
- }
7589
- else {
7590
- if (Array.isArray(this.getValue())) {
7591
- this.internalValue.set(await Promise.all(this.getValue().map(async (item) => await this.fileStorageService.getInfo(item))));
7592
- }
7593
- else {
7594
- this.internalValue.set([await this.fileStorageService.getInfo(this.getValue())]);
7595
- }
7596
- }
7597
- console.log(this.internalValue());
7598
- console.log(this.getValue());
7599
- }
7600
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileBoxWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7601
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPFileBoxWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
7602
- <div class="ax-grid ax-grid-cols-12 ax-gap-2">
7603
- @if (multiple()) { @for (item of internalValue(); track item.fileId) {
7604
- <ng-template [ngTemplateOutlet]="itemTemplate" ] [ngTemplateOutletContext]="{ data: item }" ]></ng-template>
7605
- } } @else {
7606
- <ng-template
7607
- [ngTemplateOutlet]="itemTemplate"
7608
- ]
7609
- [ngTemplateOutletContext]="{ data: internalValue()[0] }"
7610
- ]
7611
- ></ng-template>
7612
- }
7613
- <ng-template #itemTemplate let-item="data">
7614
- <div
7615
- *ngIf="item"
7616
- class="ax-flex ax-items-center ax-justify-between ax-p-2 ax-border ax-rounded-lg ax-bg-surface ax-col-start-1 ax-col-end-13"
7617
- >
7618
- <div class="ax-flex ax-items-center ax-gap-3">
7619
- <ng-container *ngIf="getFileInfo(item.mimeType) as fileInfo">
7620
- <div
7621
- class="ax-w-10 ax-h-10 ax-rounded-lg ax-flex ax-items-center ax-justify-center"
7622
- [ngClass]="[fileInfo.color]"
7623
- >
7624
- <i [ngClass]="['fa-solid', 'ax-text-xl', fileInfo.icon]"></i>
7625
- </div>
7626
- </ng-container>
7627
- <div>
7628
- <div class="ax-leading-6">{{ item.fileId }}</div>
7629
- <p class="ax-text-sm ax-text-neutral-400">{{ item.size }}</p>
7630
- </div>
7631
- </div>
7632
- @if (downloadable()) {
7633
- <ax-button
7634
- (onClick)="handleDownload(item)"
7635
- look="blank"
7636
- class="!ax-text-neutral-400 hover:!ax-text-neutral-600"
7637
- >
7638
- <ax-icon>
7639
- <i class="fa-solid fa-download"></i>
7640
- </ax-icon>
7641
- </ax-button>
7642
- }
7643
- </div>
7644
- </ng-template>
7645
- </div>
7646
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7647
- }
7648
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileBoxWidgetViewComponent, decorators: [{
7649
- type: Component,
7650
- args: [{
7651
- template: `
7652
- <div class="ax-grid ax-grid-cols-12 ax-gap-2">
7653
- @if (multiple()) { @for (item of internalValue(); track item.fileId) {
7654
- <ng-template [ngTemplateOutlet]="itemTemplate" ] [ngTemplateOutletContext]="{ data: item }" ]></ng-template>
7655
- } } @else {
7656
- <ng-template
7657
- [ngTemplateOutlet]="itemTemplate"
7658
- ]
7659
- [ngTemplateOutletContext]="{ data: internalValue()[0] }"
7660
- ]
7661
- ></ng-template>
7662
- }
7663
- <ng-template #itemTemplate let-item="data">
7664
- <div
7665
- *ngIf="item"
7666
- class="ax-flex ax-items-center ax-justify-between ax-p-2 ax-border ax-rounded-lg ax-bg-surface ax-col-start-1 ax-col-end-13"
7667
- >
7668
- <div class="ax-flex ax-items-center ax-gap-3">
7669
- <ng-container *ngIf="getFileInfo(item.mimeType) as fileInfo">
7670
- <div
7671
- class="ax-w-10 ax-h-10 ax-rounded-lg ax-flex ax-items-center ax-justify-center"
7672
- [ngClass]="[fileInfo.color]"
7673
- >
7674
- <i [ngClass]="['fa-solid', 'ax-text-xl', fileInfo.icon]"></i>
7675
- </div>
7676
- </ng-container>
7677
- <div>
7678
- <div class="ax-leading-6">{{ item.fileId }}</div>
7679
- <p class="ax-text-sm ax-text-neutral-400">{{ item.size }}</p>
7680
- </div>
7681
- </div>
7682
- @if (downloadable()) {
7683
- <ax-button
7684
- (onClick)="handleDownload(item)"
7685
- look="blank"
7686
- class="!ax-text-neutral-400 hover:!ax-text-neutral-600"
7687
- >
7688
- <ax-icon>
7689
- <i class="fa-solid fa-download"></i>
7690
- </ax-icon>
7691
- </ax-button>
7692
- }
7693
- </div>
7694
- </ng-template>
7695
- </div>
7696
- `,
7697
- changeDetection: ChangeDetectionStrategy.OnPush,
7698
- imports: [CommonModule, AXButtonModule, AXDecoratorModule],
7699
- inputs: [],
7700
- }]
7701
- }] });
7702
-
7703
- var fileBoxWidgetView_component = /*#__PURE__*/Object.freeze({
7704
- __proto__: null,
7705
- AXPFileBoxWidgetViewComponent: AXPFileBoxWidgetViewComponent
7706
- });
7707
-
7708
- const AXPFileBoxWidget = {
7709
- name: 'file',
7710
- title: 'File',
7711
- description: 'Uploads and manages files',
7712
- icon: 'fa-light fa-files',
7713
- categories: AXP_WIDGETS_ADVANCE_CATEGORY,
7714
- type: 'editor',
7715
- properties: [
7716
- AXP_NAME_PROPERTY,
7717
- AXP_DATA_PATH_PROPERTY,
7718
- AXP_ALLOW_MULTIPLE_PROPERTY,
7719
- AXP_DOWNLOADABLE_PROPERTY,
7720
- AXP_DESCRIPTION_PROPERTY,
7721
- {
7722
- name: 'accept',
7723
- title: 'Accept',
7724
- group: AXP_BEHAVIOR_PROPERTY_GROUP,
7725
- schema: {
7726
- dataType: 'string',
7727
- interface: {
7728
- name: 'accept',
7729
- path: 'options.accept',
7730
- type: AXPWidgetsCatalog.text,
7731
- },
7732
- },
7733
- visible: true,
7734
- },
7735
- ],
7736
- components: {
7737
- view: {
7738
- component: () => Promise.resolve().then(function () { return fileBoxWidgetView_component; }).then((c) => c.AXPFileBoxWidgetViewComponent),
7739
- },
7740
- edit: {
7741
- component: () => Promise.resolve().then(function () { return fileBoxWidgetEdit_component; }).then((c) => c.AXPFileBoxWidgetEditComponent),
7742
- },
7743
- filter: {
7744
- component: () => Promise.resolve().then(function () { return fileBoxWidgetFilter_component; }).then((c) => c.AXPFileBoxWidgetFilterComponent),
7745
- },
7746
- column: {
7747
- component: () => Promise.resolve().then(function () { return fileBoxWidgetColumn_component; }).then((c) => c.AXPFileBoxWidgetColumnComponent),
7748
- },
7749
- print: {
7750
- component: () => Promise.resolve().then(function () { return fileBoxWidgetPrint_component; }).then((c) => c.AXPFileBoxWidgetPrintComponent),
7751
- },
7752
- designer: {
7753
- component: () => Promise.resolve().then(function () { return fileBoxWidgetEdit_component; }).then((c) => c.AXPFileBoxWidgetEditComponent),
7754
- },
7755
- },
7756
- };
7757
-
7758
- class AXPFileManagementService {
7759
- }
7760
-
7761
- class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetComponent {
7762
- constructor() {
7763
- super(...arguments);
7764
- this.count = computed(() => castArray(this.rawValue).length);
7765
- this.popupService = inject(AXPopupService);
7766
- this.translate = inject(AXTranslationService);
7767
- }
7768
- async openFileList() {
7769
- const component = await Promise.resolve().then(function () { return fileList_component; }).then(m => m.AXPFileListComponent);
7770
- const files = this.rawValue;
7771
- this.popupService.open(component, {
7772
- title: (await this.translate.translateAsync('@document-management:file')),
7773
- data: {
7774
- readOnly: signal(true),
7775
- files: signal(files)
7776
- }
7777
- });
7035
+ async openFileList() {
7036
+ const files = this.rawValue;
7037
+ this.fileService.showFileList({
7038
+ files: files,
7039
+ readOnly: true,
7040
+ });
7778
7041
  }
7779
7042
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileUploaderWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7780
7043
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPFileUploaderWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
@@ -7809,8 +7072,10 @@ class AXPFileListComponent {
7809
7072
  this.fileTypeService = inject(AXPFileTypeProviderService);
7810
7073
  this.isLoading = signal(true);
7811
7074
  this.fileTypes = signal([]);
7075
+ this.onRemove = output();
7812
7076
  this.readOnly = input(false);
7813
7077
  this.files = input([]);
7078
+ this.displayFiles = computed(() => this.files().filter(file => file.status !== 'deleted'));
7814
7079
  }
7815
7080
  async ngOnInit() {
7816
7081
  this.fileTypes.set(await this.fileTypeService.items());
@@ -7826,11 +7091,10 @@ class AXPFileListComponent {
7826
7091
  };
7827
7092
  }
7828
7093
  async handleFileDownload(file) {
7829
- debugger;
7830
- if (!(file instanceof Blob)) {
7094
+ if (file.source?.kind !== 'blob' || !(file.source.value instanceof Blob)) {
7831
7095
  throw new Error('This action expects a File or Blob object');
7832
7096
  }
7833
- const url = URL.createObjectURL(file);
7097
+ const url = URL.createObjectURL(file.source.value);
7834
7098
  const link = document.createElement('a');
7835
7099
  link.href = url;
7836
7100
  link.download = file.name ?? ''; // Set the desired file name
@@ -7840,11 +7104,12 @@ class AXPFileListComponent {
7840
7104
  URL.revokeObjectURL(url);
7841
7105
  }
7842
7106
  async handleFileRemove(file) {
7107
+ this.onRemove.emit(file);
7843
7108
  }
7844
7109
  ngOnDestroy() {
7845
7110
  }
7846
7111
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7847
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPFileListComponent, isStandalone: true, selector: "axp-file-list", inputs: { readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, files: { classPropertyName: "files", publicName: "files", isSignal: true, isRequired: false, transformFunction: null } }, providers: [], ngImport: i0, template: "@for (file of files(); track $index) {\n <div class=\"__item\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ getFileInfo(file.name).icon }} fa-solid\"></i>\n </div>\n <div class=\"__name\">{{ file.name }}</div>\n <div class=\"__actions\">\n <ax-button [look]=\"'blank'\" class=\"ax-sm\" color=\"primary\" (onClick)=\"handleFileDownload(file)\">\n <ax-icon class=\"fa-light fa-download\"></ax-icon>\n </ax-button>\n @if (!readOnly()) {\n <ax-button [look]=\"'blank'\" class=\"ax-sm\" color=\"danger\" (onClick)=\"handleFileRemove(file)\">\n <ax-icon class=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n }\n </div>\n </div>\n} @empty {\n <div class=\"ax-text-center ax-text-muted ax-text-sm\">\n {{ '@document-management:no-files' | translate | async }}\n </div>\n}\n", styles: [":host{display:flex;width:100%;flex-direction:column;gap:.125rem;padding-top:.5rem;padding-bottom:.5rem}:host .__item{display:flex;cursor:pointer;align-items:center;gap:.75rem;border-radius:.375rem;padding:.5rem}:host .__item:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}:host .__item .__icon{width:1.5rem;flex-shrink:0}:host .__item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:.875rem;line-height:1.25rem;font-weight:500}:host .__item .__actions{margin-left:auto;display:flex}\n"], dependencies: [{ kind: "ngmodule", type:
7112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPFileListComponent, isStandalone: true, selector: "axp-file-list", inputs: { readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, files: { classPropertyName: "files", publicName: "files", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onRemove: "onRemove" }, providers: [], ngImport: i0, template: "@for (file of displayFiles(); track $index) {\n <div class=\"__item\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ getFileInfo(file.name).icon }} fa-solid\"></i>\n </div>\n <div class=\"__name\">{{ file.name }}</div>\n <div class=\"__actions\">\n <ax-button [look]=\"'blank'\" class=\"ax-sm\" color=\"primary\" (onClick)=\"handleFileDownload(file)\">\n <ax-icon class=\"fa-light fa-download\"></ax-icon>\n </ax-button>\n @if (!readOnly()) {\n <ax-button [look]=\"'blank'\" class=\"ax-sm\" color=\"danger\" (onClick)=\"handleFileRemove(file)\">\n <ax-icon class=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n }\n </div>\n </div>\n} @empty {\n <div class=\"ax-text-center ax-text-muted ax-text-sm ax-p-4\">\n {{ '@document-management:no-files' | translate | async }}\n </div>\n}\n", styles: [":host{display:flex;width:100%;flex-direction:column;gap:.125rem;padding-top:.5rem;padding-bottom:.5rem}:host .__item{display:flex;cursor:pointer;align-items:center;gap:.75rem;border-radius:.375rem;padding:.5rem}:host .__item:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}:host .__item .__icon{width:1.5rem;flex-shrink:0}:host .__item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:.875rem;line-height:1.25rem;font-weight:500}:host .__item .__actions{margin-left:auto;display:flex}\n"], dependencies: [{ kind: "ngmodule", type:
7848
7113
  // Angular
7849
7114
  CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type:
7850
7115
  // ACoreX
@@ -7864,20 +7129,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
7864
7129
  AXDecoratorModule,
7865
7130
  AXTranslationModule
7866
7131
  // Platform
7867
- ], providers: [], template: "@for (file of files(); track $index) {\n <div class=\"__item\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ getFileInfo(file.name).icon }} fa-solid\"></i>\n </div>\n <div class=\"__name\">{{ file.name }}</div>\n <div class=\"__actions\">\n <ax-button [look]=\"'blank'\" class=\"ax-sm\" color=\"primary\" (onClick)=\"handleFileDownload(file)\">\n <ax-icon class=\"fa-light fa-download\"></ax-icon>\n </ax-button>\n @if (!readOnly()) {\n <ax-button [look]=\"'blank'\" class=\"ax-sm\" color=\"danger\" (onClick)=\"handleFileRemove(file)\">\n <ax-icon class=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n }\n </div>\n </div>\n} @empty {\n <div class=\"ax-text-center ax-text-muted ax-text-sm\">\n {{ '@document-management:no-files' | translate | async }}\n </div>\n}\n", styles: [":host{display:flex;width:100%;flex-direction:column;gap:.125rem;padding-top:.5rem;padding-bottom:.5rem}:host .__item{display:flex;cursor:pointer;align-items:center;gap:.75rem;border-radius:.375rem;padding:.5rem}:host .__item:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}:host .__item .__icon{width:1.5rem;flex-shrink:0}:host .__item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:.875rem;line-height:1.25rem;font-weight:500}:host .__item .__actions{margin-left:auto;display:flex}\n"] }]
7132
+ ], providers: [], template: "@for (file of displayFiles(); track $index) {\n <div class=\"__item\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ getFileInfo(file.name).icon }} fa-solid\"></i>\n </div>\n <div class=\"__name\">{{ file.name }}</div>\n <div class=\"__actions\">\n <ax-button [look]=\"'blank'\" class=\"ax-sm\" color=\"primary\" (onClick)=\"handleFileDownload(file)\">\n <ax-icon class=\"fa-light fa-download\"></ax-icon>\n </ax-button>\n @if (!readOnly()) {\n <ax-button [look]=\"'blank'\" class=\"ax-sm\" color=\"danger\" (onClick)=\"handleFileRemove(file)\">\n <ax-icon class=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n }\n </div>\n </div>\n} @empty {\n <div class=\"ax-text-center ax-text-muted ax-text-sm ax-p-4\">\n {{ '@document-management:no-files' | translate | async }}\n </div>\n}\n", styles: [":host{display:flex;width:100%;flex-direction:column;gap:.125rem;padding-top:.5rem;padding-bottom:.5rem}:host .__item{display:flex;cursor:pointer;align-items:center;gap:.75rem;border-radius:.375rem;padding:.5rem}:host .__item:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}:host .__item .__icon{width:1.5rem;flex-shrink:0}:host .__item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:.875rem;line-height:1.25rem;font-weight:500}:host .__item .__actions{margin-left:auto;display:flex}\n"] }]
7868
7133
  }] });
7869
7134
 
7870
- var fileList_component = /*#__PURE__*/Object.freeze({
7871
- __proto__: null,
7872
- AXPFileListComponent: AXPFileListComponent
7873
- });
7874
-
7875
7135
  class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7876
7136
  constructor() {
7877
7137
  super(...arguments);
7878
7138
  this.fileService = inject(AXFileService);
7879
7139
  this.multiple = computed(() => this.options()['multiple']);
7880
7140
  this.accept = computed(() => this.options()['accept']);
7141
+ this.files = computed(() => this.getValue()?.map(file => ({
7142
+ ...file,
7143
+ })) ?? []);
7881
7144
  }
7882
7145
  async uploadFromComputer() {
7883
7146
  // Use the direct file upload approach when no document type is specified
@@ -7885,7 +7148,44 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7885
7148
  multiple: this.multiple(),
7886
7149
  accept: this.accept(),
7887
7150
  });
7888
- this.setValue([...(this.getValue() ?? []), ...files]);
7151
+ // if no files are selected, return
7152
+ if (files.length === 0) {
7153
+ return;
7154
+ }
7155
+ // if the widget is not multiple, clear the files
7156
+ if (!this.multiple()) {
7157
+ this.clear();
7158
+ }
7159
+ // create the file upload requests
7160
+ const fileUploadRequests = files.map(file => ({
7161
+ id: AXPDataGenerator.uuid(),
7162
+ name: file.name,
7163
+ size: file.size,
7164
+ type: file.type,
7165
+ status: 'attached',
7166
+ source: {
7167
+ kind: 'blob',
7168
+ value: file
7169
+ }
7170
+ }));
7171
+ this.setValue([...(this.getValue() ?? []), ...fileUploadRequests]);
7172
+ }
7173
+ handleFileRemove(file) {
7174
+ this.removeFile(file);
7175
+ }
7176
+ removeFile(file) {
7177
+ if (file.status === 'attached') {
7178
+ this.setValue(this.getValue()?.filter(f => f.id !== file.id) ?? []);
7179
+ }
7180
+ else {
7181
+ file.status = 'deleted';
7182
+ this.setValue([...(this.getValue() ?? []), file]);
7183
+ }
7184
+ }
7185
+ clear() {
7186
+ for (const file of this.files()) {
7187
+ this.removeFile(file);
7188
+ }
7889
7189
  }
7890
7190
  get __class() {
7891
7191
  const cls = {};
@@ -7897,8 +7197,8 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7897
7197
  return cls;
7898
7198
  }
7899
7199
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileUploaderWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7900
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPFileUploaderWidgetEditComponent, isStandalone: true, selector: "axp-file-uploader-widget-edit", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
7901
- <div class="ax-flex ax-justify-end ax-border-b ax-p-2" *translate="let t">
7200
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", 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: `
7201
+ <div class="ax-flex ax-justify-end ax-border-b ax-p-2" *translate="let t">
7902
7202
  <!-- Add Item Button -->
7903
7203
  <ax-button class="ax-sm" [text]="t('@document-management:actions.add-item') | async" [color]="'primary'">
7904
7204
  <ax-prefix>
@@ -7921,16 +7221,16 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7921
7221
  </ax-button>
7922
7222
  </div>
7923
7223
  <div class="ax-p-2">
7924
- <axp-file-list [files]="getValue()"></axp-file-list>
7224
+ <axp-file-list [files]="files()" (onRemove)="handleFileRemove($event)" ></axp-file-list>
7925
7225
  </div>
7926
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXUploaderModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i6$1.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i5$2.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name", "host", "context"], exportAs: ["slot"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i6.AXTranslatorDirective, selector: "[translate]" }, { kind: "component", type: AXPFileListComponent, selector: "axp-file-list", inputs: ["readOnly", "files"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7226
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i6$1.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i5$2.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name", "host", "context"], exportAs: ["slot"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i6.AXTranslatorDirective, selector: "[translate]" }, { kind: "component", type: AXPFileListComponent, selector: "axp-file-list", inputs: ["readOnly", "files"], outputs: ["onRemove"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7927
7227
  }
7928
7228
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileUploaderWidgetEditComponent, decorators: [{
7929
7229
  type: Component,
7930
7230
  args: [{
7931
7231
  selector: 'axp-file-uploader-widget-edit',
7932
7232
  template: `
7933
- <div class="ax-flex ax-justify-end ax-border-b ax-p-2" *translate="let t">
7233
+ <div class="ax-flex ax-justify-end ax-border-b ax-p-2" *translate="let t">
7934
7234
  <!-- Add Item Button -->
7935
7235
  <ax-button class="ax-sm" [text]="t('@document-management:actions.add-item') | async" [color]="'primary'">
7936
7236
  <ax-prefix>
@@ -7953,9 +7253,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
7953
7253
  </ax-button>
7954
7254
  </div>
7955
7255
  <div class="ax-p-2">
7956
- <axp-file-list [files]="getValue()"></axp-file-list>
7256
+ <axp-file-list [files]="files()" (onRemove)="handleFileRemove($event)" ></axp-file-list>
7957
7257
  </div>
7958
7258
  `,
7259
+ host: {
7260
+ style: 'border-color: rgba(var(--ax-comp-editor-border-color)); !important;'
7261
+ },
7959
7262
  changeDetection: ChangeDetectionStrategy.OnPush,
7960
7263
  standalone: true,
7961
7264
  imports: [
@@ -7963,7 +7266,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
7963
7266
  FormsModule,
7964
7267
  AXButtonModule,
7965
7268
  AXDecoratorModule,
7966
- AXUploaderModule,
7967
7269
  AXLoadingModule,
7968
7270
  AXDropdownModule,
7969
7271
  AXPComponentSlotModule,
@@ -8001,6 +7303,13 @@ var fileUploaderWidgetPrint_component = /*#__PURE__*/Object.freeze({
8001
7303
  });
8002
7304
 
8003
7305
  class AXPFileUploaderWidgetViewComponent extends AXPValueWidgetComponent {
7306
+ constructor() {
7307
+ super(...arguments);
7308
+ this.files = computed(() => this.getValue()?.map(file => ({
7309
+ ...file,
7310
+ status: 'uploaded'
7311
+ })) ?? []);
7312
+ }
8004
7313
  get __class() {
8005
7314
  const cls = {};
8006
7315
  cls[`ax-block`] = true;
@@ -8009,15 +7318,15 @@ class AXPFileUploaderWidgetViewComponent extends AXPValueWidgetComponent {
8009
7318
  }
8010
7319
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileUploaderWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8011
7320
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPFileUploaderWidgetViewComponent, isStandalone: true, selector: "axp-file-uploader-widget-view", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
8012
- <axp-file-list [files]="getValue()" [readOnly]="true"></axp-file-list>
8013
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXUploaderModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPFileListComponent, selector: "axp-file-list", inputs: ["readOnly", "files"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7321
+ <axp-file-list [files]="files()" [readOnly]="true"></axp-file-list>
7322
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXUploaderModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPFileListComponent, selector: "axp-file-list", inputs: ["readOnly", "files"], outputs: ["onRemove"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8014
7323
  }
8015
7324
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFileUploaderWidgetViewComponent, decorators: [{
8016
7325
  type: Component,
8017
7326
  args: [{
8018
7327
  selector: 'axp-file-uploader-widget-view',
8019
7328
  template: `
8020
- <axp-file-list [files]="getValue()" [readOnly]="true"></axp-file-list>
7329
+ <axp-file-list [files]="files()" [readOnly]="true"></axp-file-list>
8021
7330
  `,
8022
7331
  changeDetection: ChangeDetectionStrategy.OnPush,
8023
7332
  standalone: true,
@@ -8091,9 +7400,6 @@ const AXPFileUploaderWidget = {
8091
7400
  },
8092
7401
  };
8093
7402
 
8094
- class AXPFileUploaderManagementService {
8095
- }
8096
-
8097
7403
  class AXPGalleryWidgetEditComponent extends AXPValueWidgetComponent {
8098
7404
  constructor() {
8099
7405
  super(...arguments);
@@ -8325,7 +7631,7 @@ class AXPGalleryWidgetViewComponent extends AXPValueWidgetComponent {
8325
7631
  <small>No Media!</small>
8326
7632
  }
8327
7633
  </div>
8328
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2$8.AXImageComponent, selector: "ax-image", inputs: ["width", "height", "overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7634
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2$7.AXImageComponent, selector: "ax-image", inputs: ["width", "height", "overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8329
7635
  }
8330
7636
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPGalleryWidgetViewComponent, decorators: [{
8331
7637
  type: Component,
@@ -8506,11 +7812,7 @@ class AXPMapBoxWidgetEditComponent extends AXPValueWidgetComponent {
8506
7812
  this.height = computed(() => this.options()['height'] ?? 300);
8507
7813
  this.fitToDraw = computed(() => this.options()['fitToDraw'] ?? false);
8508
7814
  this.limitDraw = computed(() => this.options()?.limitDraw ?? undefined);
8509
- this.#effect2 = effect(() => {
8510
- console.log('limitDraw', this.limitDraw());
8511
- });
8512
7815
  }
8513
- #effect2;
8514
7816
  onMarkerChanged($event) {
8515
7817
  this.setValue({ polygons: this.getValue()?.polygons ?? [], markers: $event });
8516
7818
  }
@@ -8867,7 +8169,7 @@ class AXPSignatureWidgetEditComponent extends AXPValueWidgetComponent {
8867
8169
  </div>
8868
8170
  }
8869
8171
  </div>
8870
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2$8.AXImageComponent, selector: "ax-image", inputs: ["width", "height", "overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8172
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2$7.AXImageComponent, selector: "ax-image", inputs: ["width", "height", "overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8871
8173
  }
8872
8174
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSignatureWidgetEditComponent, decorators: [{
8873
8175
  type: Component,
@@ -8965,7 +8267,7 @@ class AXPSignatureWidgetViewComponent extends AXPValueWidgetComponent {
8965
8267
  <span>{{placeholder()}}</span>
8966
8268
  }
8967
8269
  </div>
8968
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2$8.AXImageComponent, selector: "ax-image", inputs: ["width", "height", "overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8270
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i2$7.AXImageComponent, selector: "ax-image", inputs: ["width", "height", "overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8969
8271
  }
8970
8272
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSignatureWidgetViewComponent, decorators: [{
8971
8273
  type: Component,
@@ -9932,59 +9234,273 @@ class AXPAdvancedGridItemWidgetViewComponent extends AXPLayoutWidgetComponent {
9932
9234
  }
9933
9235
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: i1$3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9934
9236
  }
9935
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPAdvancedGridItemWidgetViewComponent, decorators: [{
9237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPAdvancedGridItemWidgetViewComponent, decorators: [{
9238
+ type: Component,
9239
+ args: [{
9240
+ selector: 'axp-grid-layout-item-widget',
9241
+ template: `
9242
+ @for (child of children(); track $index) {
9243
+ <ng-container axp-widget-renderer [node]="child" [index]="index" [parentNode]="this" [mode]="this.mode">
9244
+ </ng-container>
9245
+ }
9246
+ `,
9247
+ changeDetection: ChangeDetectionStrategy.OnPush,
9248
+ imports: [CommonModule, AXPLayoutBuilderModule],
9249
+ providers: [
9250
+ {
9251
+ provide: AXPLayoutWidgetComponent,
9252
+ useExisting: AXPAdvancedGridItemWidgetViewComponent,
9253
+ },
9254
+ ],
9255
+ }]
9256
+ }], propDecorators: { __class: [{
9257
+ type: HostBinding,
9258
+ args: ['class']
9259
+ }] } });
9260
+
9261
+ var advancedGridItemWidgetView_component = /*#__PURE__*/Object.freeze({
9262
+ __proto__: null,
9263
+ AXPAdvancedGridItemWidgetViewComponent: AXPAdvancedGridItemWidgetViewComponent
9264
+ });
9265
+
9266
+ const AXPAdvancedGridItemWidget = {
9267
+ name: 'advanced-grid-item-layout',
9268
+ title: 'Advanced Grid Item',
9269
+ type: 'container',
9270
+ categories: AXP_WIDGETS_LAYOUT_CATEGORY,
9271
+ icon: 'fa-light fa-objects-column',
9272
+ properties: [
9273
+ AXP_NAME_PROPERTY,
9274
+ // ...AXP_LAYOUT_GRID_ITEM_PROPERTIES,
9275
+ ],
9276
+ components: {
9277
+ view: {
9278
+ component: () => Promise.resolve().then(function () { return advancedGridItemWidgetView_component; }).then((c) => c.AXPAdvancedGridItemWidgetViewComponent),
9279
+ },
9280
+ edit: {
9281
+ component: () => Promise.resolve().then(function () { return advancedGridItemWidgetView_component; }).then((c) => c.AXPAdvancedGridItemWidgetViewComponent),
9282
+ },
9283
+ designer: {
9284
+ component: () => Promise.resolve().then(function () { return advancedGridItemWidgetDesigner_component; }).then((c) => c.AXPAdvancedGridItemWidgetDesignerComponent),
9285
+ },
9286
+ },
9287
+ };
9288
+
9289
+ class AXPBlockWidgetDesignerComponent extends AXPLayoutWidgetComponent {
9290
+ constructor() {
9291
+ super(...arguments);
9292
+ this.backgroundColor = computed(() => this.options()['backgroundColor']);
9293
+ this.cssClass = computed(() => this.options()['cssClass']);
9294
+ }
9295
+ get __class() {
9296
+ const cls = {};
9297
+ //
9298
+ cls[`ax-w-full`] = true;
9299
+ //
9300
+ cls[`ax-flex`] = true;
9301
+ return cls;
9302
+ }
9303
+ get __style() {
9304
+ const spacing = this.options()?.['spacing'];
9305
+ const border = this.options()?.['border'];
9306
+ const direction = this.options()?.['direction'];
9307
+ return {
9308
+ // Background
9309
+ 'background-color': this.backgroundColor(),
9310
+ // Spacing
9311
+ padding: spacing?.padding ?? 0,
9312
+ margin: spacing?.margin ?? 0,
9313
+ // Border
9314
+ 'border-radius': border?.radius ?? 0,
9315
+ 'border-width': border?.width ?? 0,
9316
+ 'border-color': border?.color ?? '#000000',
9317
+ 'border-style': border?.style ?? 'none',
9318
+ // Direction
9319
+ direction: direction ?? 'ltr',
9320
+ };
9321
+ }
9322
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBlockWidgetDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
9323
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPBlockWidgetDesignerComponent, isStandalone: true, selector: "axp-block-widget", host: { properties: { "class": "this.__class", "style": "this.__style" } }, providers: [
9324
+ {
9325
+ provide: AXPLayoutWidgetComponent,
9326
+ useExisting: AXPBlockWidgetDesignerComponent,
9327
+ },
9328
+ ], usesInheritance: true, ngImport: i0, template: `
9329
+ @for (node of children(); track $index) {
9330
+ <ng-container
9331
+ axp-widget-designer-renderer
9332
+ [node]="node"
9333
+ [parentNode]="this"
9334
+ [mode]="this.mode"
9335
+ [locked]="this.locked"
9336
+ ></ng-container>
9337
+ } @empty {
9338
+ <axp-designer-add-widget-mini-button
9339
+ class="ax-flex-1 ax-self-center ax-place-self-end"
9340
+ ></axp-designer-add-widget-mini-button>
9341
+ }
9342
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: AXPWidgetDesignerRendererDirective, selector: "[axp-widget-designer-renderer]", inputs: ["parentNode", "index", "locked", "mode", "node"] }, { kind: "component", type: AXPDesignerAddWidgetMiniButtonComponent, selector: "axp-designer-add-widget-mini-button", outputs: ["onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9343
+ }
9344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBlockWidgetDesignerComponent, decorators: [{
9345
+ type: Component,
9346
+ args: [{
9347
+ selector: 'axp-block-widget',
9348
+ template: `
9349
+ @for (node of children(); track $index) {
9350
+ <ng-container
9351
+ axp-widget-designer-renderer
9352
+ [node]="node"
9353
+ [parentNode]="this"
9354
+ [mode]="this.mode"
9355
+ [locked]="this.locked"
9356
+ ></ng-container>
9357
+ } @empty {
9358
+ <axp-designer-add-widget-mini-button
9359
+ class="ax-flex-1 ax-self-center ax-place-self-end"
9360
+ ></axp-designer-add-widget-mini-button>
9361
+ }
9362
+ `,
9363
+ changeDetection: ChangeDetectionStrategy.OnPush,
9364
+ imports: [
9365
+ CommonModule,
9366
+ AXPLayoutBuilderModule,
9367
+ AXPWidgetDesignerRendererDirective,
9368
+ AXPDesignerAddWidgetMiniButtonComponent,
9369
+ ],
9370
+ providers: [
9371
+ {
9372
+ provide: AXPLayoutWidgetComponent,
9373
+ useExisting: AXPBlockWidgetDesignerComponent,
9374
+ },
9375
+ ],
9376
+ }]
9377
+ }], propDecorators: { __class: [{
9378
+ type: HostBinding,
9379
+ args: ['class']
9380
+ }], __style: [{
9381
+ type: HostBinding,
9382
+ args: ['style']
9383
+ }] } });
9384
+
9385
+ var blockWidgetDesigner_component = /*#__PURE__*/Object.freeze({
9386
+ __proto__: null,
9387
+ AXPBlockWidgetDesignerComponent: AXPBlockWidgetDesignerComponent
9388
+ });
9389
+
9390
+ class AXPBlockWidgetViewComponent extends AXPLayoutWidgetComponent {
9391
+ constructor() {
9392
+ super(...arguments);
9393
+ this.backgroundColor = computed(() => this.options()['backgroundColor']);
9394
+ this.cssClass = computed(() => this.options()['cssClass']);
9395
+ }
9396
+ get __class() {
9397
+ const cls = {};
9398
+ //
9399
+ cls[`ax-w-full`] = true;
9400
+ cls[`ax-widget-outline`] = true;
9401
+ //
9402
+ cls[`ax-flex`] = true;
9403
+ return cls;
9404
+ }
9405
+ get __style() {
9406
+ const spacing = this.options()?.['spacing'];
9407
+ const border = this.options()?.['border'];
9408
+ const direction = this.options()?.['direction'];
9409
+ return {
9410
+ // Background
9411
+ 'background-color': this.backgroundColor(),
9412
+ // Spacing
9413
+ padding: spacing?.padding ?? 0,
9414
+ margin: spacing?.margin ?? 0,
9415
+ // Border
9416
+ 'border-radius': border?.radius ?? 0,
9417
+ 'border-width': border?.width ?? 0,
9418
+ 'border-color': border?.color ?? '#000000',
9419
+ 'border-style': border?.style ?? 'none',
9420
+ // Direction
9421
+ direction: direction ?? 'ltr',
9422
+ };
9423
+ }
9424
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBlockWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
9425
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPBlockWidgetViewComponent, isStandalone: true, selector: "axp-block-widget", host: { properties: { "class": "this.__class", "style": "this.__style" } }, usesInheritance: true, ngImport: i0, template: `
9426
+ @for (node of children(); track $index) {
9427
+ <ng-container
9428
+ axp-widget-renderer
9429
+ [node]="node"
9430
+ [index]="index"
9431
+ [parentNode]="this"
9432
+ [mode]="this.mode"
9433
+ ></ng-container>
9434
+ }
9435
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: i1$3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9436
+ }
9437
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBlockWidgetViewComponent, decorators: [{
9936
9438
  type: Component,
9937
9439
  args: [{
9938
- selector: 'axp-grid-layout-item-widget',
9440
+ selector: 'axp-block-widget',
9939
9441
  template: `
9940
- @for (child of children(); track $index) {
9941
- <ng-container axp-widget-renderer [node]="child" [index]="index" [parentNode]="this" [mode]="this.mode">
9942
- </ng-container>
9442
+ @for (node of children(); track $index) {
9443
+ <ng-container
9444
+ axp-widget-renderer
9445
+ [node]="node"
9446
+ [index]="index"
9447
+ [parentNode]="this"
9448
+ [mode]="this.mode"
9449
+ ></ng-container>
9943
9450
  }
9944
9451
  `,
9945
9452
  changeDetection: ChangeDetectionStrategy.OnPush,
9946
9453
  imports: [CommonModule, AXPLayoutBuilderModule],
9947
- providers: [
9948
- {
9949
- provide: AXPLayoutWidgetComponent,
9950
- useExisting: AXPAdvancedGridItemWidgetViewComponent,
9951
- },
9952
- ],
9953
9454
  }]
9954
9455
  }], propDecorators: { __class: [{
9955
9456
  type: HostBinding,
9956
9457
  args: ['class']
9458
+ }], __style: [{
9459
+ type: HostBinding,
9460
+ args: ['style']
9957
9461
  }] } });
9958
9462
 
9959
- var advancedGridItemWidgetView_component = /*#__PURE__*/Object.freeze({
9463
+ var blockWidgetView_component = /*#__PURE__*/Object.freeze({
9960
9464
  __proto__: null,
9961
- AXPAdvancedGridItemWidgetViewComponent: AXPAdvancedGridItemWidgetViewComponent
9465
+ AXPBlockWidgetViewComponent: AXPBlockWidgetViewComponent
9962
9466
  });
9963
9467
 
9964
- const AXPAdvancedGridItemWidget = {
9965
- name: 'advanced-grid-item-layout',
9966
- title: 'Advanced Grid Item',
9468
+ const AXPBlockWidget = {
9469
+ name: 'block-layout',
9967
9470
  type: 'container',
9471
+ title: 'Block Layout',
9472
+ description: 'Organizes content in blocks',
9473
+ icon: 'fa-light fa-block',
9968
9474
  categories: AXP_WIDGETS_LAYOUT_CATEGORY,
9969
- icon: 'fa-light fa-objects-column',
9475
+ groups: [AXPWidgetGroupEnum.FormElement],
9476
+ options: {
9477
+ canInsert: true,
9478
+ },
9970
9479
  properties: [
9971
9480
  AXP_NAME_PROPERTY,
9972
- // ...AXP_LAYOUT_GRID_ITEM_PROPERTIES,
9481
+ // AXP_FONT_SIZE_PROPERTY,
9482
+ // cloneProperty(AXP_BG_COLOR_PROPERTY, { schema: { defaultValue: null } }),
9483
+ AXP_LAYOUT_SPACING_PROPERTY,
9484
+ AXP_LAYOUT_BORDER_PROPERTY,
9485
+ AXP_LAYOUT_DIRECTION_PROPERTY,
9973
9486
  ],
9974
9487
  components: {
9975
- view: {
9976
- component: () => Promise.resolve().then(function () { return advancedGridItemWidgetView_component; }).then((c) => c.AXPAdvancedGridItemWidgetViewComponent),
9488
+ designer: {
9489
+ component: () => Promise.resolve().then(function () { return blockWidgetDesigner_component; }).then((c) => c.AXPBlockWidgetDesignerComponent),
9977
9490
  },
9978
9491
  edit: {
9979
- component: () => Promise.resolve().then(function () { return advancedGridItemWidgetView_component; }).then((c) => c.AXPAdvancedGridItemWidgetViewComponent),
9492
+ component: () => Promise.resolve().then(function () { return blockWidgetView_component; }).then((c) => c.AXPBlockWidgetViewComponent),
9980
9493
  },
9981
- designer: {
9982
- component: () => Promise.resolve().then(function () { return advancedGridItemWidgetDesigner_component; }).then((c) => c.AXPAdvancedGridItemWidgetDesignerComponent),
9494
+ print: {
9495
+ component: () => Promise.resolve().then(function () { return blockWidgetView_component; }).then((c) => c.AXPBlockWidgetViewComponent),
9496
+ },
9497
+ view: {
9498
+ component: () => Promise.resolve().then(function () { return blockWidgetView_component; }).then((c) => c.AXPBlockWidgetViewComponent),
9983
9499
  },
9984
9500
  },
9985
9501
  };
9986
9502
 
9987
- class AXPBlockWidgetDesignerComponent extends AXPLayoutWidgetComponent {
9503
+ class AXPFlexWidgetDesignerComponent extends AXPLayoutWidgetComponent {
9988
9504
  constructor() {
9989
9505
  super(...arguments);
9990
9506
  this.backgroundColor = computed(() => this.options()['backgroundColor']);
@@ -10016,51 +9532,50 @@ class AXPBlockWidgetDesignerComponent extends AXPLayoutWidgetComponent {
10016
9532
  // Flexbox
10017
9533
  'flex-direction': flex?.direction ?? 'row',
10018
9534
  'flex-wrap': flex?.wrap ?? 'nowrap',
9535
+ 'overflow-x': flex?.wrap === 'nowrap' ? 'auto' : '',
10019
9536
  'justify-content': flex?.justify ?? 'flex-start',
10020
9537
  'align-items': flex?.align ?? 'flex-start',
10021
9538
  gap: flex?.gap ?? '0px',
10022
9539
  };
10023
9540
  }
10024
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBlockWidgetDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
10025
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPBlockWidgetDesignerComponent, isStandalone: true, selector: "axp-block-widget", host: { properties: { "class": "this.__class", "style": "this.__style" } }, providers: [
9541
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFlexWidgetDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
9542
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPFlexWidgetDesignerComponent, isStandalone: true, selector: "axp-flex-widget", host: { properties: { "class": "this.__class", "style": "this.__style" } }, providers: [
10026
9543
  {
10027
9544
  provide: AXPLayoutWidgetComponent,
10028
- useExisting: AXPBlockWidgetDesignerComponent,
9545
+ useExisting: AXPFlexWidgetDesignerComponent,
10029
9546
  },
10030
9547
  ], usesInheritance: true, ngImport: i0, template: `
10031
9548
  @for (node of children(); track $index) {
10032
- <ng-container
10033
- axp-widget-designer-renderer
10034
- [node]="node"
10035
- [parentNode]="this"
10036
- [mode]="this.mode"
10037
- [locked]="this.locked"
10038
- ></ng-container>
10039
- } @empty {
9549
+ <ng-container
9550
+ axp-widget-designer-renderer
9551
+ [node]="node"
9552
+ [parentNode]="this"
9553
+ [mode]="this.mode"
9554
+ [locked]="this.locked"
9555
+ ></ng-container>
9556
+ }
10040
9557
  <axp-designer-add-widget-mini-button
10041
- class="ax-flex-1 ax-self-center ax-place-self-end"
9558
+ class="ax-p-1 ax-flex-1 ax-self-center ax-place-self-end"
10042
9559
  ></axp-designer-add-widget-mini-button>
10043
- }
10044
9560
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: AXPWidgetDesignerRendererDirective, selector: "[axp-widget-designer-renderer]", inputs: ["parentNode", "index", "locked", "mode", "node"] }, { kind: "component", type: AXPDesignerAddWidgetMiniButtonComponent, selector: "axp-designer-add-widget-mini-button", outputs: ["onClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10045
9561
  }
10046
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBlockWidgetDesignerComponent, decorators: [{
9562
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFlexWidgetDesignerComponent, decorators: [{
10047
9563
  type: Component,
10048
9564
  args: [{
10049
- selector: 'axp-block-widget',
9565
+ selector: 'axp-flex-widget',
10050
9566
  template: `
10051
9567
  @for (node of children(); track $index) {
10052
- <ng-container
10053
- axp-widget-designer-renderer
10054
- [node]="node"
10055
- [parentNode]="this"
10056
- [mode]="this.mode"
10057
- [locked]="this.locked"
10058
- ></ng-container>
10059
- } @empty {
9568
+ <ng-container
9569
+ axp-widget-designer-renderer
9570
+ [node]="node"
9571
+ [parentNode]="this"
9572
+ [mode]="this.mode"
9573
+ [locked]="this.locked"
9574
+ ></ng-container>
9575
+ }
10060
9576
  <axp-designer-add-widget-mini-button
10061
- class="ax-flex-1 ax-self-center ax-place-self-end"
9577
+ class="ax-p-1 ax-flex-1 ax-self-center ax-place-self-end"
10062
9578
  ></axp-designer-add-widget-mini-button>
10063
- }
10064
9579
  `,
10065
9580
  changeDetection: ChangeDetectionStrategy.OnPush,
10066
9581
  imports: [
@@ -10072,7 +9587,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
10072
9587
  providers: [
10073
9588
  {
10074
9589
  provide: AXPLayoutWidgetComponent,
10075
- useExisting: AXPBlockWidgetDesignerComponent,
9590
+ useExisting: AXPFlexWidgetDesignerComponent,
10076
9591
  },
10077
9592
  ],
10078
9593
  }]
@@ -10084,17 +9599,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
10084
9599
  args: ['style']
10085
9600
  }] } });
10086
9601
 
10087
- var blockWidgetDesigner_component = /*#__PURE__*/Object.freeze({
9602
+ var flexWidgetDesigner_component = /*#__PURE__*/Object.freeze({
10088
9603
  __proto__: null,
10089
- AXPBlockWidgetDesignerComponent: AXPBlockWidgetDesignerComponent
9604
+ AXPFlexWidgetDesignerComponent: AXPFlexWidgetDesignerComponent
10090
9605
  });
10091
9606
 
10092
- class AXPBlockWidgetViewComponent extends AXPLayoutWidgetComponent {
9607
+ class AXPFlexWidgetViewComponent extends AXPLayoutWidgetComponent {
10093
9608
  constructor() {
10094
9609
  super(...arguments);
10095
9610
  this.backgroundColor = computed(() => this.options()['backgroundColor']);
10096
9611
  this.cssClass = computed(() => this.options()['cssClass']);
10097
- this.flex = computed(() => (this.options()['flex'] ?? {}));
10098
9612
  }
10099
9613
  get __class() {
10100
9614
  const cls = {};
@@ -10103,12 +9617,13 @@ class AXPBlockWidgetViewComponent extends AXPLayoutWidgetComponent {
10103
9617
  cls[`ax-widget-outline`] = true;
10104
9618
  //
10105
9619
  cls[`ax-flex`] = true;
9620
+ // cls[`ax-overflow-auto`] = true;
10106
9621
  return cls;
10107
9622
  }
10108
9623
  get __style() {
10109
9624
  const spacing = this.options()?.['spacing'];
10110
9625
  const border = this.options()?.['border'];
10111
- const flex = this.flex();
9626
+ const flex = this.options()?.['flex'];
10112
9627
  return {
10113
9628
  // Background
10114
9629
  'background-color': this.backgroundColor(),
@@ -10123,37 +9638,38 @@ class AXPBlockWidgetViewComponent extends AXPLayoutWidgetComponent {
10123
9638
  // Flexbox
10124
9639
  'flex-direction': flex?.direction ?? 'row',
10125
9640
  'flex-wrap': flex?.wrap ?? 'nowrap',
9641
+ 'overflow-x': flex?.wrap === 'nowrap' ? 'auto' : '',
10126
9642
  'justify-content': flex?.justify ?? 'flex-start',
10127
9643
  'align-items': flex?.align ?? 'flex-start',
10128
9644
  gap: flex?.gap ?? '0px',
10129
9645
  };
10130
9646
  }
10131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBlockWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
10132
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPBlockWidgetViewComponent, isStandalone: true, selector: "axp-block-widget", host: { properties: { "class": "this.__class", "style": "this.__style" } }, usesInheritance: true, ngImport: i0, template: `
9647
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFlexWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
9648
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPFlexWidgetViewComponent, isStandalone: true, selector: "axp-flex-widget", host: { properties: { "class": "this.__class", "style": "this.__style" } }, usesInheritance: true, ngImport: i0, template: `
10133
9649
  @for (node of children(); track $index) {
10134
- <ng-container
10135
- axp-widget-renderer
10136
- [node]="node"
10137
- [index]="index"
10138
- [parentNode]="this"
10139
- [mode]="this.mode"
10140
- ></ng-container>
9650
+ <ng-container
9651
+ axp-widget-renderer
9652
+ [node]="node"
9653
+ [index]="index"
9654
+ [parentNode]="this"
9655
+ [mode]="this.mode"
9656
+ ></ng-container>
10141
9657
  }
10142
9658
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: i1$3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10143
9659
  }
10144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBlockWidgetViewComponent, decorators: [{
9660
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPFlexWidgetViewComponent, decorators: [{
10145
9661
  type: Component,
10146
9662
  args: [{
10147
- selector: 'axp-block-widget',
9663
+ selector: 'axp-flex-widget',
10148
9664
  template: `
10149
9665
  @for (node of children(); track $index) {
10150
- <ng-container
10151
- axp-widget-renderer
10152
- [node]="node"
10153
- [index]="index"
10154
- [parentNode]="this"
10155
- [mode]="this.mode"
10156
- ></ng-container>
9666
+ <ng-container
9667
+ axp-widget-renderer
9668
+ [node]="node"
9669
+ [index]="index"
9670
+ [parentNode]="this"
9671
+ [mode]="this.mode"
9672
+ ></ng-container>
10157
9673
  }
10158
9674
  `,
10159
9675
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -10167,42 +9683,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
10167
9683
  args: ['style']
10168
9684
  }] } });
10169
9685
 
10170
- var blockWidgetView_component = /*#__PURE__*/Object.freeze({
9686
+ var flexWidgetView_component = /*#__PURE__*/Object.freeze({
10171
9687
  __proto__: null,
10172
- AXPBlockWidgetViewComponent: AXPBlockWidgetViewComponent
9688
+ AXPFlexWidgetViewComponent: AXPFlexWidgetViewComponent
10173
9689
  });
10174
9690
 
10175
- const AXPBlockWidget = {
10176
- name: 'block-layout',
9691
+ const AXPFlexWidget = {
9692
+ name: 'flex-layout',
10177
9693
  type: 'container',
10178
- title: 'Block Layout',
10179
- description: 'Organizes content in blocks',
10180
- icon: 'fa-light fa-block',
9694
+ title: 'Flex Layout',
9695
+ description: 'Organizes content in flexible layout',
9696
+ icon: 'fa-light fa-box-taped',
10181
9697
  categories: AXP_WIDGETS_LAYOUT_CATEGORY,
10182
9698
  groups: [AXPWidgetGroupEnum.FormElement],
10183
9699
  options: {
10184
9700
  canInsert: true,
10185
9701
  },
10186
- properties: [
10187
- AXP_NAME_PROPERTY,
10188
- // AXP_FONT_SIZE_PROPERTY,
10189
- // cloneProperty(AXP_BG_COLOR_PROPERTY, { schema: { defaultValue: null } }),
10190
- AXP_LAYOUT_SPACING_PROPERTY,
10191
- AXP_LAYOUT_BORDER_PROPERTY,
10192
- AXP_LAYOUT_FLEX_PROPERTY,
10193
- ],
9702
+ properties: [AXP_NAME_PROPERTY, AXP_LAYOUT_SPACING_PROPERTY, AXP_LAYOUT_BORDER_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY],
10194
9703
  components: {
10195
9704
  designer: {
10196
- component: () => Promise.resolve().then(function () { return blockWidgetDesigner_component; }).then((c) => c.AXPBlockWidgetDesignerComponent),
9705
+ component: () => Promise.resolve().then(function () { return flexWidgetDesigner_component; }).then((c) => c.AXPFlexWidgetDesignerComponent),
10197
9706
  },
10198
9707
  edit: {
10199
- component: () => Promise.resolve().then(function () { return blockWidgetView_component; }).then((c) => c.AXPBlockWidgetViewComponent),
9708
+ component: () => Promise.resolve().then(function () { return flexWidgetView_component; }).then((c) => c.AXPFlexWidgetViewComponent),
10200
9709
  },
10201
9710
  print: {
10202
- component: () => Promise.resolve().then(function () { return blockWidgetView_component; }).then((c) => c.AXPBlockWidgetViewComponent),
9711
+ component: () => Promise.resolve().then(function () { return flexWidgetView_component; }).then((c) => c.AXPFlexWidgetViewComponent),
10203
9712
  },
10204
9713
  view: {
10205
- component: () => Promise.resolve().then(function () { return blockWidgetView_component; }).then((c) => c.AXPBlockWidgetViewComponent),
9714
+ component: () => Promise.resolve().then(function () { return flexWidgetView_component; }).then((c) => c.AXPFlexWidgetViewComponent),
10206
9715
  },
10207
9716
  },
10208
9717
  };
@@ -10284,7 +9793,7 @@ const AXPPageWidget = {
10284
9793
  component: () => Promise.resolve().then(function () { return pageWidgetView_component; }).then((c) => c.AXPPageWidgetViewComponent),
10285
9794
  },
10286
9795
  designer: {
10287
- component: () => import('./acorex-platform-widgets-page-widget-designer.component-9XMpubtr.mjs').then((c) => c.AXPPageWidgetDesignerComponent),
9796
+ component: () => import('./acorex-platform-widgets-page-widget-designer.component-DuKrIkHh.mjs').then((c) => c.AXPPageWidgetDesignerComponent),
10288
9797
  },
10289
9798
  },
10290
9799
  };
@@ -11375,7 +10884,7 @@ class AXPBorderWidgetEditComponent extends AXPValueWidgetComponent {
11375
10884
  };
11376
10885
  }
11377
10886
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBorderWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
11378
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPBorderWidgetEditComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "allBorderEl", first: true, predicate: ["allBorderEl"], descendants: true, isSignal: true }, { propertyName: "allRadiusEl", first: true, predicate: ["allRadiusEl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-pt-2 axp-border-container\">\n <div class=\"ax-radius-box ax-flex ax-justify-between ax-items-center ax-gap-2 ax-h-[26px]\">\n <span class=\"ax-text-sm ax-font-light\">Radius</span>\n <div class=\"ax-flex ax-gap-2 ax-items-center\">\n <button\n #allRadiusEl\n (pointerdown)=\"handleActiveRadiusSide($event)\"\n name=\"all\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M2.5 5.5C2.5 3.84315 3.84315 2.5 5.5 2.5H10.5C12.1569 2.5 13.5 3.84315 13.5 5.5V10.5C13.5 12.1569 12.1569 13.5 10.5 13.5H5.5C3.84315 13.5 2.5 12.1569 2.5 10.5V5.5Z\"\n stroke=\"currentColor\"\n ></path>\n </svg>\n </button>\n\n <button\n (pointerdown)=\"handleActiveRadiusSide($event)\"\n name=\"sides\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4.5 2C3.11929 2 2 3.11929 2 4.5V7H3V4.5C3 3.67157 3.67157 3 4.5 3H7V2H4.5Z\"\n fill=\"currentColor\"\n ></path>\n <path\n d=\"M9 2V3H11.5C12.3284 3 13 3.67157 13 4.5V7H14V4.5C14 3.11929 12.8807 2 11.5 2H9Z\"\n fill=\"currentColor\"\n ></path>\n <path\n d=\"M14 9H13V11.5C13 12.3284 12.3284 13 11.5 13H9V14H11.5C12.8807 14 14 12.8807 14 11.5V9Z\"\n fill=\"currentColor\"\n ></path>\n <path\n d=\"M7 14V13H4.5C3.67157 13 3 12.3284 3 11.5V9H2V11.5C2 12.8807 3.11929 14 4.5 14H7Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n\n @if(currentActiveRadiusSide() ==='all'){\n <div class=\"ax-flex ax-justify-center ax-items-center ax-flex-shrink\">\n <ax-range-slider\n [values]=\"allRadius()\"\n [min]=\"0\"\n [max]=\"100\"\n (valuesChange)=\"setBorder($event ?? 0, 'radius', 'all')\"\n class=\"ax-min-w-28\"\n ></ax-range-slider>\n </div>\n <div class=\"ax-flex ax-justify-start ax-items-center\">\n <ax-number-box\n [minValue]=\"0\"\n [maxValue]=\"100\"\n [value]=\"allRadius()\"\n [changeOnScroll]=\"true\"\n (valueChange)=\"setBorder($event ?? 0, 'radius', 'all')\"\n class=\"ax-min-w-8\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n }@else{\n <div class=\"ax-w-48\"></div>\n }\n </div>\n </div>\n\n <div\n class=\"axp-border-radius-sides ax-flex ax-justify-end ax-items-center ax-overflow-y-hidden ax-transition-[height] ax-duration-300 ax-ease-in-out\"\n [class]=\"currentActiveRadiusSide() === 'all' ? '!ax-h-0' : '!ax-h-[56px]'\"\n >\n <div class=\"ax-grid ax-grid-cols-2 ax-grid-rows-2 ax-gap-2\">\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.4\">\n <path d=\"M14 14V9H13V13H9V14H14Z\" fill=\"currentColor\"></path>\n <path d=\"M7 14V13H3V9H2V14H7Z\" fill=\"currentColor\"></path>\n <path d=\"M2 7H3V6.5C3 4.567 4.567 3 6.5 3H7V2H6.5C4.01472 2 2 4.01472 2 6.5V7Z\" fill=\"currentColor\"></path>\n <path d=\"M9 2V3H13V7H14V2H9Z\" fill=\"currentColor\"></path>\n </g>\n <path d=\"M2.5 7V6.5C2.5 4.29086 4.29086 2.5 6.5 2.5H7\" stroke=\"currentColor\"></path>\n </svg>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-12\">\n <ax-number-box\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [value]=\"calculatedValues().radius['top-left']\"\n (valueChange)=\"setBorder($event ?? 0, 'radius', 'top-left')\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n </div>\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.4\">\n <path d=\"M2 14V9H3V13H7V14H2Z\" fill=\"currentColor\"></path>\n <path d=\"M9 14V13H13V9H14V14H9Z\" fill=\"currentColor\"></path>\n <path\n d=\"M14 7H13V6.5C13 4.567 11.433 3 9.5 3H9V2H9.5C11.9853 2 14 4.01472 14 6.5V7Z\"\n fill=\"currentColor\"\n ></path>\n <path d=\"M7 2V3H3V7H2V2H7Z\" fill=\"currentColor\"></path>\n </g>\n <path d=\"M13.5 7V6.5C13.5 4.29086 11.7091 2.5 9.5 2.5H9\" stroke=\"currentColor\"></path>\n </svg>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-12\">\n <ax-number-box\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [value]=\"calculatedValues().radius['top-right']\"\n (valueChange)=\"setBorder($event ?? 0, 'radius', 'top-right')\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n </div>\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.4\">\n <path d=\"M2 2V7H3V3H7V2H2Z\" fill=\"currentColor\"></path>\n <path d=\"M9 2V3H13V7H14V2H9Z\" fill=\"currentColor\"></path>\n <path d=\"M14 9H13V13H9V14H14V9Z\" fill=\"currentColor\"></path>\n <path\n d=\"M7 14V13H6.5C4.567 13 3 11.433 3 9.5V9H2V9.5C2 11.9853 4.01472 14 6.5 14H7Z\"\n fill=\"currentColor\"\n ></path>\n </g>\n <path d=\"M2.5 9V9.5C2.5 11.7091 4.29086 13.5 6.5 13.5H7\" stroke=\"currentColor\"></path>\n </svg>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-12\">\n <ax-number-box\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [value]=\"calculatedValues().radius['bottom-left']\"\n (valueChange)=\"setBorder($event ?? 0, 'radius', 'bottom-left')\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n </div>\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.4\">\n <path d=\"M2 2V7H3V3H7V2H2Z\" fill=\"currentColor\"></path>\n <path d=\"M9 2V3H13V7H14V2H9Z\" fill=\"currentColor\"></path>\n <path\n d=\"M14 9H13V11.5C13 12.3284 12.3284 13 11.5 13H9V14H11.5C12.8807 14 14 12.8807 14 11.5V9Z\"\n fill=\"currentColor\"\n ></path>\n <path d=\"M7 14V13H3V9H2V14H7Z\" fill=\"currentColor\"></path>\n </g>\n <path d=\"M13.5 9V9.5C13.5 11.7091 11.7091 13.5 9.5 13.5H9\" stroke=\"currentColor\"></path>\n </svg>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-12\">\n <ax-number-box\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [value]=\"calculatedValues().radius['bottom-right']\"\n (valueChange)=\"setBorder($event ?? 0, 'radius', 'bottom-right')\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ax-flex ax-justify-between ax-items-center ax-py-1\">\n <span class=\"ax-text-sm ax-font-light\">Borders</span>\n </div>\n\n <div class=\"ax-border-box ax-flex ax-justify-between ax-items-center ax-gap-4\">\n <div class=\"ax-grid ax-grid-cols-3 ax-grid-rows-3 ax-gap-1 ax-flex-shrink-0\">\n <!-- Top Border -->\n <div class=\"ax-border-box-top ax-col-start-2 ax-row-start-1\">\n <button\n (pointerdown)=\"handleActiveBorderSide($event)\"\n name=\"top\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n opacity=\"0.4\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2 13C2 13.5523 2.44772 14 3 14H13C13.5523 14 14 13.5523 14 13V5H13V13H3V5H2V13Z\"\n fill=\"currentColor\"\n ></path>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 3H14V2H2V3Z\" fill=\"currentColor\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Right Border -->\n <div class=\"ax-border-box-right ax-col-start-3 ax-row-start-2\">\n <button\n (pointerdown)=\"handleActiveBorderSide($event)\"\n name=\"right\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n opacity=\"0.4\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M3 2C2.44772 2 2 2.44772 2 3L2 13C2 13.5523 2.44772 14 3 14L11 14L11 13L3 13L3 3L11 3L11 2L3 2Z\"\n fill=\"currentColor\"\n ></path>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13 2L13 14L14 14L14 2L13 2Z\" fill=\"currentColor\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Bottom Border -->\n <div class=\"ax-border-box-bottom ax-col-start-2 ax-row-start-3\">\n <button\n (pointerdown)=\"handleActiveBorderSide($event)\"\n name=\"bottom\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n opacity=\"0.4\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2 3C2 2.44772 2.44772 2 3 2H13C13.5523 2 14 2.44772 14 3V11H13V3H3V11H2V3Z\"\n fill=\"currentColor\"\n ></path>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 13H14V14H2V13Z\" fill=\"currentColor\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Left Border -->\n <div class=\"ax-border-box-left ax-col-start-1 ax-row-start-2\">\n <button\n (pointerdown)=\"handleActiveBorderSide($event)\"\n name=\"left\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n opacity=\"0.4\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13 2C13.5523 2 14 2.44772 14 3L14 13C14 13.5523 13.5523 14 13 14L5 14L5 13L13 13L13 3L5 3L5 2L13 2Z\"\n fill=\"currentColor\"\n ></path>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 2L3 14L2 14L2 2L3 2Z\" fill=\"currentColor\"></path>\n </svg>\n </button>\n </div>\n\n <!-- All -->\n <div class=\"ax-border-box-all ax-col-start-2 ax-row-start-2\">\n <button\n #allBorderEl\n (pointerdown)=\"handleActiveBorderSide($event)\"\n name=\"all\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2 3C2 2.44772 2.44772 2 3 2H13C13.5523 2 14 2.44772 14 3V13C14 13.5523 13.5523 14 13 14H3C2.44772 14 2 13.5523 2 13V3ZM13 3L3 3V13H13V3Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n </div>\n </div>\n <div class=\"ax-grid ax-grid-cols-[auto_1fr] ax-items-center ax-gap-x-2 ax-gap-y-2\">\n <div class=\"ax-text-sm ax-font-light\">Style</div>\n <ax-button-group [selection]=\"'single'\">\n <ax-button-group-item\n (onClick)=\"setBorder('none', 'style', currentActiveSide())\"\n [selected]=\"shownStyle() === 'none'\"\n ><ax-prefix\n ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.70714 8.00004L12.3536 4.35359L11.6465 3.64648L8.00004 7.29293L4.35359 3.64648L3.64648 4.35359L7.29293 8.00004L3.64648 11.6465L4.35359 12.3536L8.00004 8.70714L11.6465 12.3536L12.3536 11.6465L8.70714 8.00004Z\"\n fill=\"currentColor\"\n ></path></svg></ax-prefix\n ></ax-button-group-item>\n <ax-button-group-item\n (onClick)=\"setBorder('solid', 'style', currentActiveSide())\"\n [selected]=\"shownStyle() === 'solid'\"\n ><ax-prefix\n ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 7.5H14\" stroke=\"currentColor\"></path></svg></ax-prefix\n ></ax-button-group-item>\n <ax-button-group-item\n (onClick)=\"setBorder('dashed', 'style', currentActiveSide())\"\n [selected]=\"shownStyle() === 'dashed'\"\n ><ax-prefix\n ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M5 7H2V8H5V7ZM11 8H12H14V7H12H11V8ZM9.5 7H6.5V8H9.5V7Z\"\n fill=\"currentColor\"\n ></path></svg></ax-prefix\n ></ax-button-group-item>\n <ax-button-group-item\n (onClick)=\"setBorder('dotted', 'style', currentActiveSide())\"\n [selected]=\"shownStyle() === 'dotted'\"\n ><ax-prefix\n ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4 7H3V8H4V7ZM6 7H5V8H6V7ZM7 7H8V8H7V7ZM10 7H9V8H10V7ZM11 7H12V8H11V7ZM14 7H13V8H14V7Z\"\n fill=\"currentColor\"\n ></path></svg></ax-prefix\n ></ax-button-group-item>\n </ax-button-group>\n <div class=\"ax-contents\" [class]=\"shownStyle() === 'none' ? 'ax-invisible' : 'ax-visible'\">\n <div class=\"ax-text-sm ax-font-light\">Width</div>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-36\">\n <ax-number-box\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [value]=\"shownWidth()\"\n (valueChange)=\"setBorder($event ?? 0, 'width', currentActiveSide())\"\n class=\"ax-min-w-8 ax-exclude\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text>PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n\n <div class=\"ax-text-sm ax-font-light\">Color</div>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-36 ax-overflow-hidden\">\n <ax-color-box\n [value]=\"shownColor()\"\n (valueChange)=\"setBorder($event, 'color', currentActiveSide())\"\n ></ax-color-box>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".axp-border-container{--hover-effect: #404040;--focus-color: rgba(0, 106, 204, .18);--ax-range-slider-base-thickness: .15rem}.axp-border-container ax-range-slider{padding:.5rem!important}.axp-border-container ax-number-box:not(.ax-exclude) div:first-child{height:1.5rem!important;border-radius:.25rem!important;font-size:12px}.axp-border-container ax-number-box:not(.ax-exclude) div:first-child input{padding:.25rem 0 .25rem .25rem!important}\n"], dependencies: [{ kind: "ngmodule", type: AXNumberBoxModule }, { kind: "component", type: i1$4.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "type", "changeOnScroll", "thousandsSeparator", "padDecimalZeros", "step", "decimals", "decimalStep", "showSpinButtons", "minValue", "maxValue", "class"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXRangeSliderModule }, { kind: "component", type: i7$1.AXRangeSliderComponent, selector: "ax-range-slider", inputs: ["disabled", "readonly", "orientation", "color", "values", "mode", "min", "max", "step", "snap", "tooltipMode", "snapMode", "hasStep", "hasSnap", "hasLable", "hasTooltip"], outputs: ["valuesChange"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "component", type: i1$8.AXButtonGroupComponent, selector: "ax-button-group", inputs: ["disabled", "color", "look", "selection"], outputs: ["onBlur", "onFocus", "lookChange", "colorChange", "disabledChange", "onClick", "selectionChange", "selectedButtonChange"] }, { kind: "component", type: i1$8.AXButtonGroupItemComponent, selector: "ax-button-group-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: AXColorBoxModule }, { kind: "component", type: i2$9.AXColorBoxComponent, selector: "ax-color-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "showBadge", "showValue", "showClearButton", "showIcon"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10887
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPBorderWidgetEditComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "allBorderEl", first: true, predicate: ["allBorderEl"], descendants: true, isSignal: true }, { propertyName: "allRadiusEl", first: true, predicate: ["allRadiusEl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-pt-2 axp-border-container\">\n <div class=\"ax-radius-box ax-flex ax-justify-between ax-items-center ax-gap-2 ax-h-[26px]\">\n <span class=\"ax-text-sm ax-font-light\">Radius</span>\n <div class=\"ax-flex ax-gap-2 ax-items-center\">\n <button\n #allRadiusEl\n (pointerdown)=\"handleActiveRadiusSide($event)\"\n name=\"all\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M2.5 5.5C2.5 3.84315 3.84315 2.5 5.5 2.5H10.5C12.1569 2.5 13.5 3.84315 13.5 5.5V10.5C13.5 12.1569 12.1569 13.5 10.5 13.5H5.5C3.84315 13.5 2.5 12.1569 2.5 10.5V5.5Z\"\n stroke=\"currentColor\"\n ></path>\n </svg>\n </button>\n\n <button\n (pointerdown)=\"handleActiveRadiusSide($event)\"\n name=\"sides\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4.5 2C3.11929 2 2 3.11929 2 4.5V7H3V4.5C3 3.67157 3.67157 3 4.5 3H7V2H4.5Z\"\n fill=\"currentColor\"\n ></path>\n <path\n d=\"M9 2V3H11.5C12.3284 3 13 3.67157 13 4.5V7H14V4.5C14 3.11929 12.8807 2 11.5 2H9Z\"\n fill=\"currentColor\"\n ></path>\n <path\n d=\"M14 9H13V11.5C13 12.3284 12.3284 13 11.5 13H9V14H11.5C12.8807 14 14 12.8807 14 11.5V9Z\"\n fill=\"currentColor\"\n ></path>\n <path\n d=\"M7 14V13H4.5C3.67157 13 3 12.3284 3 11.5V9H2V11.5C2 12.8807 3.11929 14 4.5 14H7Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n\n @if(currentActiveRadiusSide() ==='all'){\n <div class=\"ax-flex ax-justify-center ax-items-center ax-flex-shrink\">\n <ax-range-slider\n [values]=\"allRadius()\"\n [min]=\"0\"\n [max]=\"100\"\n (valuesChange)=\"setBorder($event ?? 0, 'radius', 'all')\"\n class=\"ax-min-w-28\"\n ></ax-range-slider>\n </div>\n <div class=\"ax-flex ax-justify-start ax-items-center\">\n <ax-number-box\n [minValue]=\"0\"\n [maxValue]=\"100\"\n [value]=\"allRadius()\"\n [changeOnScroll]=\"true\"\n (valueChange)=\"setBorder($event ?? 0, 'radius', 'all')\"\n class=\"ax-min-w-8\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n }@else{\n <div class=\"ax-w-48\"></div>\n }\n </div>\n </div>\n\n <div\n class=\"axp-border-radius-sides ax-flex ax-justify-end ax-items-center ax-overflow-y-hidden ax-transition-[height] ax-duration-300 ax-ease-in-out\"\n [class]=\"currentActiveRadiusSide() === 'all' ? '!ax-h-0' : '!ax-h-[56px]'\"\n >\n <div class=\"ax-grid ax-grid-cols-2 ax-grid-rows-2 ax-gap-2\">\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.4\">\n <path d=\"M14 14V9H13V13H9V14H14Z\" fill=\"currentColor\"></path>\n <path d=\"M7 14V13H3V9H2V14H7Z\" fill=\"currentColor\"></path>\n <path d=\"M2 7H3V6.5C3 4.567 4.567 3 6.5 3H7V2H6.5C4.01472 2 2 4.01472 2 6.5V7Z\" fill=\"currentColor\"></path>\n <path d=\"M9 2V3H13V7H14V2H9Z\" fill=\"currentColor\"></path>\n </g>\n <path d=\"M2.5 7V6.5C2.5 4.29086 4.29086 2.5 6.5 2.5H7\" stroke=\"currentColor\"></path>\n </svg>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-12\">\n <ax-number-box\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [value]=\"calculatedValues().radius['top-left']\"\n (valueChange)=\"setBorder($event ?? 0, 'radius', 'top-left')\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n </div>\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.4\">\n <path d=\"M2 14V9H3V13H7V14H2Z\" fill=\"currentColor\"></path>\n <path d=\"M9 14V13H13V9H14V14H9Z\" fill=\"currentColor\"></path>\n <path\n d=\"M14 7H13V6.5C13 4.567 11.433 3 9.5 3H9V2H9.5C11.9853 2 14 4.01472 14 6.5V7Z\"\n fill=\"currentColor\"\n ></path>\n <path d=\"M7 2V3H3V7H2V2H7Z\" fill=\"currentColor\"></path>\n </g>\n <path d=\"M13.5 7V6.5C13.5 4.29086 11.7091 2.5 9.5 2.5H9\" stroke=\"currentColor\"></path>\n </svg>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-12\">\n <ax-number-box\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [value]=\"calculatedValues().radius['top-right']\"\n (valueChange)=\"setBorder($event ?? 0, 'radius', 'top-right')\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n </div>\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.4\">\n <path d=\"M2 2V7H3V3H7V2H2Z\" fill=\"currentColor\"></path>\n <path d=\"M9 2V3H13V7H14V2H9Z\" fill=\"currentColor\"></path>\n <path d=\"M14 9H13V13H9V14H14V9Z\" fill=\"currentColor\"></path>\n <path\n d=\"M7 14V13H6.5C4.567 13 3 11.433 3 9.5V9H2V9.5C2 11.9853 4.01472 14 6.5 14H7Z\"\n fill=\"currentColor\"\n ></path>\n </g>\n <path d=\"M2.5 9V9.5C2.5 11.7091 4.29086 13.5 6.5 13.5H7\" stroke=\"currentColor\"></path>\n </svg>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-12\">\n <ax-number-box\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [value]=\"calculatedValues().radius['bottom-left']\"\n (valueChange)=\"setBorder($event ?? 0, 'radius', 'bottom-left')\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n </div>\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.4\">\n <path d=\"M2 2V7H3V3H7V2H2Z\" fill=\"currentColor\"></path>\n <path d=\"M9 2V3H13V7H14V2H9Z\" fill=\"currentColor\"></path>\n <path\n d=\"M14 9H13V11.5C13 12.3284 12.3284 13 11.5 13H9V14H11.5C12.8807 14 14 12.8807 14 11.5V9Z\"\n fill=\"currentColor\"\n ></path>\n <path d=\"M7 14V13H3V9H2V14H7Z\" fill=\"currentColor\"></path>\n </g>\n <path d=\"M13.5 9V9.5C13.5 11.7091 11.7091 13.5 9.5 13.5H9\" stroke=\"currentColor\"></path>\n </svg>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-12\">\n <ax-number-box\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [value]=\"calculatedValues().radius['bottom-right']\"\n (valueChange)=\"setBorder($event ?? 0, 'radius', 'bottom-right')\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"ax-flex ax-justify-between ax-items-center ax-py-1\">\n <span class=\"ax-text-sm ax-font-light\">Borders</span>\n </div>\n\n <div class=\"ax-border-box ax-flex ax-justify-between ax-items-center ax-gap-4\">\n <div class=\"ax-grid ax-grid-cols-3 ax-grid-rows-3 ax-gap-1 ax-flex-shrink-0\">\n <!-- Top Border -->\n <div class=\"ax-border-box-top ax-col-start-2 ax-row-start-1\">\n <button\n (pointerdown)=\"handleActiveBorderSide($event)\"\n name=\"top\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n opacity=\"0.4\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2 13C2 13.5523 2.44772 14 3 14H13C13.5523 14 14 13.5523 14 13V5H13V13H3V5H2V13Z\"\n fill=\"currentColor\"\n ></path>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 3H14V2H2V3Z\" fill=\"currentColor\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Right Border -->\n <div class=\"ax-border-box-right ax-col-start-3 ax-row-start-2\">\n <button\n (pointerdown)=\"handleActiveBorderSide($event)\"\n name=\"right\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n opacity=\"0.4\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M3 2C2.44772 2 2 2.44772 2 3L2 13C2 13.5523 2.44772 14 3 14L11 14L11 13L3 13L3 3L11 3L11 2L3 2Z\"\n fill=\"currentColor\"\n ></path>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13 2L13 14L14 14L14 2L13 2Z\" fill=\"currentColor\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Bottom Border -->\n <div class=\"ax-border-box-bottom ax-col-start-2 ax-row-start-3\">\n <button\n (pointerdown)=\"handleActiveBorderSide($event)\"\n name=\"bottom\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n opacity=\"0.4\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2 3C2 2.44772 2.44772 2 3 2H13C13.5523 2 14 2.44772 14 3V11H13V3H3V11H2V3Z\"\n fill=\"currentColor\"\n ></path>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 13H14V14H2V13Z\" fill=\"currentColor\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Left Border -->\n <div class=\"ax-border-box-left ax-col-start-1 ax-row-start-2\">\n <button\n (pointerdown)=\"handleActiveBorderSide($event)\"\n name=\"left\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n opacity=\"0.4\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13 2C13.5523 2 14 2.44772 14 3L14 13C14 13.5523 13.5523 14 13 14L5 14L5 13L13 13L13 3L5 3L5 2L13 2Z\"\n fill=\"currentColor\"\n ></path>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 2L3 14L2 14L2 2L3 2Z\" fill=\"currentColor\"></path>\n </svg>\n </button>\n </div>\n\n <!-- All -->\n <div class=\"ax-border-box-all ax-col-start-2 ax-row-start-2\">\n <button\n #allBorderEl\n (pointerdown)=\"handleActiveBorderSide($event)\"\n name=\"all\"\n class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2 3C2 2.44772 2.44772 2 3 2H13C13.5523 2 14 2.44772 14 3V13C14 13.5523 13.5523 14 13 14H3C2.44772 14 2 13.5523 2 13V3ZM13 3L3 3V13H13V3Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </button>\n </div>\n </div>\n <div class=\"ax-grid ax-grid-cols-[auto_1fr] ax-items-center ax-gap-x-2 ax-gap-y-2\">\n <div class=\"ax-text-sm ax-font-light\">Style</div>\n <ax-button-group [selection]=\"'single'\">\n <ax-button-group-item\n (onClick)=\"setBorder('none', 'style', currentActiveSide())\"\n [selected]=\"shownStyle() === 'none'\"\n ><ax-prefix\n ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.70714 8.00004L12.3536 4.35359L11.6465 3.64648L8.00004 7.29293L4.35359 3.64648L3.64648 4.35359L7.29293 8.00004L3.64648 11.6465L4.35359 12.3536L8.00004 8.70714L11.6465 12.3536L12.3536 11.6465L8.70714 8.00004Z\"\n fill=\"currentColor\"\n ></path></svg></ax-prefix\n ></ax-button-group-item>\n <ax-button-group-item\n (onClick)=\"setBorder('solid', 'style', currentActiveSide())\"\n [selected]=\"shownStyle() === 'solid'\"\n ><ax-prefix\n ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 7.5H14\" stroke=\"currentColor\"></path></svg></ax-prefix\n ></ax-button-group-item>\n <ax-button-group-item\n (onClick)=\"setBorder('dashed', 'style', currentActiveSide())\"\n [selected]=\"shownStyle() === 'dashed'\"\n ><ax-prefix\n ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M5 7H2V8H5V7ZM11 8H12H14V7H12H11V8ZM9.5 7H6.5V8H9.5V7Z\"\n fill=\"currentColor\"\n ></path></svg></ax-prefix\n ></ax-button-group-item>\n <ax-button-group-item\n (onClick)=\"setBorder('dotted', 'style', currentActiveSide())\"\n [selected]=\"shownStyle() === 'dotted'\"\n ><ax-prefix\n ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M4 7H3V8H4V7ZM6 7H5V8H6V7ZM7 7H8V8H7V7ZM10 7H9V8H10V7ZM11 7H12V8H11V7ZM14 7H13V8H14V7Z\"\n fill=\"currentColor\"\n ></path></svg></ax-prefix\n ></ax-button-group-item>\n </ax-button-group>\n <div class=\"ax-contents\" [class]=\"shownStyle() === 'none' ? 'ax-invisible' : 'ax-visible'\">\n <div class=\"ax-text-sm ax-font-light\">Width</div>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-36\">\n <ax-number-box\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [value]=\"shownWidth()\"\n (valueChange)=\"setBorder($event ?? 0, 'width', currentActiveSide())\"\n class=\"ax-min-w-8 ax-exclude\"\n [showSpinButtons]=\"false\"\n ><ax-suffix><ax-text>PX</ax-text></ax-suffix></ax-number-box\n >\n </div>\n\n <div class=\"ax-text-sm ax-font-light\">Color</div>\n <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-36 ax-overflow-hidden\">\n <ax-color-box\n [value]=\"shownColor()\"\n (valueChange)=\"setBorder($event, 'color', currentActiveSide())\"\n ></ax-color-box>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".axp-border-container{--hover-effect: #404040;--focus-color: rgba(0, 106, 204, .18);--ax-range-slider-base-thickness: .15rem}.axp-border-container ax-range-slider{padding:.5rem!important}.axp-border-container ax-number-box:not(.ax-exclude) div:first-child{height:1.5rem!important;border-radius:.25rem!important;font-size:12px}.axp-border-container ax-number-box:not(.ax-exclude) div:first-child input{padding:.25rem 0 .25rem .25rem!important}\n"], dependencies: [{ kind: "ngmodule", type: AXNumberBoxModule }, { kind: "component", type: i1$4.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "type", "changeOnScroll", "thousandsSeparator", "padDecimalZeros", "step", "decimals", "decimalStep", "showSpinButtons", "minValue", "maxValue", "class"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXRangeSliderModule }, { kind: "component", type: i7$1.AXRangeSliderComponent, selector: "ax-range-slider", inputs: ["disabled", "readonly", "orientation", "color", "values", "mode", "min", "max", "step", "snap", "tooltipMode", "snapMode", "hasStep", "hasSnap", "hasLable", "hasTooltip"], outputs: ["valuesChange"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "component", type: i1$8.AXButtonGroupComponent, selector: "ax-button-group", inputs: ["disabled", "color", "look", "selection"], outputs: ["onBlur", "onFocus", "lookChange", "colorChange", "disabledChange", "onClick", "selectionChange", "selectedButtonChange"] }, { kind: "component", type: i1$8.AXButtonGroupItemComponent, selector: "ax-button-group-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: AXColorBoxModule }, { kind: "component", type: i2$8.AXColorBoxComponent, selector: "ax-color-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "showBadge", "showValue", "showClearButton", "showIcon"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11379
10888
  }
11380
10889
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBorderWidgetEditComponent, decorators: [{
11381
10890
  type: Component,
@@ -11411,6 +10920,47 @@ const AXPBorderWidget = {
11411
10920
  },
11412
10921
  };
11413
10922
 
10923
+ class AXPDirectionWidgetEditComponent extends AXPValueWidgetComponent {
10924
+ constructor() {
10925
+ super(...arguments);
10926
+ this.direction = computed(() => this.getValue() || 'ltr');
10927
+ this.directionOptions = [
10928
+ { id: 'ltr', text: 'Left to Right', icon: 'fa-light fa-arrow-right' },
10929
+ { id: 'rtl', text: 'Right to Left', icon: 'fa-light fa-arrow-left' },
10930
+ ];
10931
+ }
10932
+ setDirection(value) {
10933
+ const data = value || 'ltr';
10934
+ this.setValue(data);
10935
+ }
10936
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPDirectionWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
10937
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPDirectionWidgetEditComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"ax-pt-2\">\n <span class=\"ax-text-sm ax-font-light\">Direction</span>\n <div class=\"ax-mt-2\">\n <ax-selection-list\n [items]=\"directionOptions\"\n [ngModel]=\"direction()\"\n (ngModelChange)=\"setDirection($event)\"\n direction=\"horizontal\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n look=\"card\"\n valueField=\"id\"\n textField=\"text\"\n >\n <ng-template #itemTemplate let-item>\n <div class=\"ax-flex ax-items-center\">\n <i [class]=\"item.icon\"></i>\n <span class=\"ax-ml-2\">{{ item.text }}</span>\n </div>\n </ng-template>\n </ax-selection-list>\n </div>\n</div>\n", styles: [".ax-selection-list-item{min-width:80px;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i2$5.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "size", "value", "valueField", "textField", "disabledField", "readonlyField", "multiple", "direction", "customTemplate", "showControl", "items", "look"], outputs: ["onValueChanged", "onBlur", "onFocus"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10938
+ }
10939
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPDirectionWidgetEditComponent, decorators: [{
10940
+ type: Component,
10941
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXSelectionListModule, FormsModule], template: "<div class=\"ax-pt-2\">\n <span class=\"ax-text-sm ax-font-light\">Direction</span>\n <div class=\"ax-mt-2\">\n <ax-selection-list\n [items]=\"directionOptions\"\n [ngModel]=\"direction()\"\n (ngModelChange)=\"setDirection($event)\"\n direction=\"horizontal\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n look=\"card\"\n valueField=\"id\"\n textField=\"text\"\n >\n <ng-template #itemTemplate let-item>\n <div class=\"ax-flex ax-items-center\">\n <i [class]=\"item.icon\"></i>\n <span class=\"ax-ml-2\">{{ item.text }}</span>\n </div>\n </ng-template>\n </ax-selection-list>\n </div>\n</div>\n", styles: [".ax-selection-list-item{min-width:80px;text-align:center}\n"] }]
10942
+ }] });
10943
+
10944
+ var directionWidgetEditor_component = /*#__PURE__*/Object.freeze({
10945
+ __proto__: null,
10946
+ AXPDirectionWidgetEditComponent: AXPDirectionWidgetEditComponent
10947
+ });
10948
+
10949
+ const AXPDirectionWidget = {
10950
+ name: 'direction',
10951
+ title: 'Direction',
10952
+ description: 'Setting text direction (RTL/LTR)',
10953
+ categories: AXP_WIDGETS_EDITOR_CATEGORY,
10954
+ icon: 'fa-light fa-directions',
10955
+ type: 'editor',
10956
+ properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],
10957
+ components: {
10958
+ edit: {
10959
+ component: () => Promise.resolve().then(function () { return directionWidgetEditor_component; }).then((c) => c.AXPDirectionWidgetEditComponent),
10960
+ },
10961
+ },
10962
+ };
10963
+
11414
10964
  const AXP_Flex_Box_Alignments = [
11415
10965
  { value: 'top-left', label: 'Top Left', align: 'flex-start', justify: 'flex-start' },
11416
10966
  { value: 'top-center', label: 'Top Center', align: 'flex-start', justify: 'center' },
@@ -11740,7 +11290,7 @@ class AXPSpacingWidgetEditComponent extends AXPValueWidgetComponent {
11740
11290
  { label: '200', value: 200 },
11741
11291
  ];
11742
11292
  this.popover = viewChild.required(AXPopoverComponent);
11743
- this.afterRender = afterNextRender(() => {
11293
+ this.#afterRender = afterNextRender(() => {
11744
11294
  if (this.getValue()) {
11745
11295
  this.calculatedValues.set(AXPPropertyEditorHelper.parseSpacingBox(this.getValue()));
11746
11296
  this.originalValues.set(AXPPropertyEditorHelper.parseSpacingBox(this.getValue()));
@@ -11819,6 +11369,7 @@ class AXPSpacingWidgetEditComponent extends AXPValueWidgetComponent {
11819
11369
  const touch = e.touches[0];
11820
11370
  return { clientX: touch.clientX, clientY: touch.clientY };
11821
11371
  }
11372
+ #afterRender;
11822
11373
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPSpacingWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
11823
11374
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPSpacingWidgetEditComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"axp-spacing-box ax-flex ax-justify-center ax-items-center ax-pt-4 ax-pb-2\">\n <div class=\"axp-spacing-inner-box\">\n <div class=\"axp-spacing-margin-box\">\n <!--MARGIN SVG DEFINE-->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"224\" height=\"112\" class=\"area\">\n <mask id=\"margin-mask\" width=\"224\" height=\"112\">\n <rect fill=\"#000\" height=\"112\" width=\"224\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#fff\" height=\"112\" rx=\"4\" width=\"224\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#000\" height=\"66\" rx=\"4\" width=\"154\" x=\"35\" y=\"23\"></rect>\n </mask>\n <defs>\n <linearGradient id=\"FuseLinearGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stop-color=\"white\"></stop>\n <stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\"></stop>\n </linearGradient>\n </defs>\n\n <!--MARGIN TOP SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'top')\"\n (mousedown)=\"listenToMove($event, 'margin', 'top')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n fill-opacity=\"0.12\"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"url(#FuseLinearGradient)\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n fill-opacity=\"0.02\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN RIGHT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'right')\"\n (mousedown)=\"listenToMove($event, 'margin', 'right')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m224,0\n v112\n l-36,-24\n v-64\n l36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m224,0\n v112\n l-36,-24\n v-64\n l36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN BOTTOM SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'bottom')\"\n (mousedown)=\"listenToMove($event, 'margin', 'bottom')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,112\n h224\n l-36,-24\n h-152\n l-36,24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,112\n h224\n l-36,-24\n h-152\n l-36,24z\n \"\n fill-opacity=\"0.064\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN LEFT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'left')\"\n (mousedown)=\"listenToMove($event, 'margin', 'left')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n v112\n l36,-24\n v-64\n l-36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n v112\n l36,-24\n v-64\n l-36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n </svg>\n\n <!--MARGIN TOP VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <span>{{ calculatedValues().margin.top + ' ' + units().margin.top }}</span>\n </div>\n </div>\n\n <!--MARGIN RIGHT VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <span>{{ calculatedValues().margin.right + ' ' + units().margin.right }}</span>\n </div>\n </div>\n\n <!--MARGIN BOTTOM VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <span>{{ calculatedValues().margin.bottom + ' ' + units().margin.bottom }}</span>\n </div>\n </div>\n\n <!--MARGIN LEFT VALUE-->\n <div tabindex=\"0\" style=\"grid-area: 2 / 1 / 3 / 2\" class=\"axp-spacing-value-container\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <span>{{ calculatedValues().margin.left + ' ' + units().margin.left }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"axp-spacing-padding-box\">\n <!--SVG DEFINE-->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"62\" class=\"area\">\n <mask id=\"padding-mask\" width=\"150\" height=\"62\">\n <rect fill=\"#000\" height=\"60\" width=\"150\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#fff\" height=\"60\" rx=\"2\" width=\"150\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#000\" height=\"14\" rx=\"2\" width=\"80\" x=\"35\" y=\"23\"></rect>\n </mask>\n\n <!--PADDING TOP SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'top')\"\n (mousedown)=\"listenToMove($event, 'padding', 'top')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n h150\n l-36,24\n h-78\n l-36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n h150\n l-36,24\n h-78\n l-36,-24z\n \"\n fill-opacity=\"0.064\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING RIGHT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'right')\"\n (mousedown)=\"listenToMove($event, 'padding', 'right')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m150,0\n v60\n l-36,-24\n v-12\n l36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m150,0\n v60\n l-36,-24\n v-12\n l36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING BOTTOM SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'bottom')\"\n (mousedown)=\"listenToMove($event, 'padding', 'bottom')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,60\n h150\n l-36,-24\n h-78\n l-36,24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,60\n h150\n l-36,-24\n h-78\n l-36,24z\n \"\n fill-opacity=\"0.12\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING LEFT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'left')\"\n (mousedown)=\"listenToMove($event, 'padding', 'left')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n v60\n l36,-24\n v-12\n l-36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n v60\n l36,-24\n v-12\n l-36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n </svg>\n\n <!--PADDING TOP SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <span>{{ this.calculatedValues().padding.top + ' ' + units().padding.top }}</span>\n </div>\n </div>\n\n <!--PADDING RIGHT SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <span>{{ this.calculatedValues().padding.right + ' ' + units().padding.right }}</span>\n </div>\n </div>\n\n <!--PADDING BOTTOM SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <span>{{ this.calculatedValues().padding.bottom + ' ' + units().padding.bottom }}</span>\n </div>\n </div>\n\n <!--PADDING LEFT SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <span>{{ this.calculatedValues().padding.left + ' ' + units().padding.left }}</span>\n </div>\n </div>\n </div>\n\n <!--PADDING TEXT-->\n <svg class=\"axp-spacing-padding-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">PADDING</text>\n </svg>\n\n <!--MARGIN TEXT-->\n <svg class=\"axp-spacing-margin-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">MARGIN</text>\n </svg>\n </div>\n</div>\n\n<ng-template #template let-type=\"type\" let-side=\"side\" let-value=\"value\">\n <div\n class=\"axp-spacing-popup-container\"\n (keydown.control.b)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n >\n <div class=\"axp-spacing-popover\">\n <!--SET EMPTY-->\n <div class=\"ax-size-4 ax-cursor-pointer\" (click)=\"setSpacing(0, type, side)\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path opacity=\"0.4\" d=\"M14 2L14 13L10 13L10 2L14 2Z\" fill=\"currentColor\" fill-opacity=\"0.67\"></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.99995 7L7.99995 1H8.99995L8.99995 14H7.99995L7.99995 8L3.70706 8L5.85351 10.1464L5.1464 10.8536L1.79285 7.5L5.1464 4.14645L5.85351 4.85355L3.70706 7L7.99995 7Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n\n <div class=\"ax-flex ax-justify-center ax-h-6 ax-flex-col\">\n <input\n type=\"range\"\n name=\"range\"\n [min]=\"0\"\n [max]=\"200\"\n [value]=\"this.calculatedValues()[this.current().type][this.current().side]\"\n (input)=\"setSpacing($event, type, side)\"\n />\n </div>\n <div>\n <!--INPUT NUMBER-->\n <div style=\"--local-gap: 8px\">\n <div\n style=\"\n gap: 8px;\n height: auto;\n display: flex;\n flex-flow: column;\n -webkit-box-align: stretch;\n align-items: stretch;\n -webkit-box-pack: start;\n position: relative;\n justify-content: stretch;\n width: 100%;\n -webkit-box-flex: 1;\n flex-grow: 1;\n \"\n >\n <div style=\"display: grid; grid-template-columns: 1fr auto; transform: translate3d(0px, 0px, 0px)\">\n <div\n data-legacy-styled=\"true\"\n style=\"\n grid-area: 1 / 1 / 2 / -1;\n align-items: stretch;\n background-color: var(--color-ui-input-background);\n border-color: var(--color-border-2);\n border-radius: 4px;\n border-style: solid;\n border-width: 1px;\n display: flex;\n flex: 0 1 auto;\n height: 24px;\n position: relative;\n \"\n >\n <input\n autocomplete=\"off\"\n data-wf-text-input=\"true\"\n name=\"spacing\"\n placeholder=\"\"\n aria-label=\"Edit spacing input\"\n type=\"text\"\n aria-disabled=\"false\"\n [value]=\"value\"\n (input)=\"setSpacing($event, type, side)\"\n style=\"\n padding-right: 20px;\n background-color: transparent;\n border-color: transparent;\n border-radius: 4px;\n border-style: solid;\n border-width: 0px;\n box-sizing: border-box;\n color: var(--color-text-primary);\n cursor: auto;\n display: block;\n font-family: inherit;\n font-size: inherit;\n height: 100%;\n line-height: 1;\n outline: transparent solid 2px;\n padding: 0px 4px;\n width: 100%;\n \"\n />\n </div>\n <div\n id=\"spacing-UnitSelect\"\n data-prevent-global-event-handlers=\"true\"\n tabindex=\"-1\"\n data-legacy-styled=\"true\"\n aria-expanded=\"false\"\n aria-haspopup=\"listbox\"\n data-focus=\"false\"\n style=\"\n border-color: transparent;\n outline: 0px;\n cursor: default;\n user-select: none;\n font-size: 9px;\n font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu,\n Cantarell, 'Helvetica Neue', Helvetica, Arial, 'Apple Color Emoji', 'Segoe UI Emoji',\n 'Segoe UI Symbol', sans-serif;\n line-height: 12px;\n letter-spacing: -0.115px;\n text-transform: none;\n color: var(--color-text-primary);\n place-self: center stretch;\n grid-area: 1 / 2 / 2 / 3;\n z-index: 1;\n min-width: 16px;\n border-radius: 1px;\n height: calc(100% - 2px);\n text-align: center;\n background: transparent;\n box-shadow: rgba(0, 0, 0, 0) 0px 0px 0px;\n border-width: 0px;\n margin: 1px;\n position: relative;\n right: 2px;\n display: grid;\n grid-template-columns: auto;\n grid-auto-flow: column;\n justify-content: unset;\n width: 100%;\n flex-grow: unset;\n padding: 0px;\n box-sizing: border-box;\n --component-icon-color: var(--color-text-secondary);\n align-items: center;\n border-style: solid;\n \"\n >\n <div\n data-legacy-styled=\"true\"\n style=\"\n justify-self: start;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n \"\n >\n PX\n <!--PX-->\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"axp-spacing-template-values\">\n @for(i of FixedValues; track $index){\n <div\n (click)=\"setSpacing(i.value, type, side)\"\n class=\"hover:!ax-bg-gradient-to-b hover:!ax-from-white/20 hover:!ax-to-white/5 !ax-cursor-pointer\"\n [class]=\"i.colspan ? 'ax-col-span-' + i.colspan : ''\"\n [class]=\"i.rowspan ? 'ax-row-span-' + i.rowspan : ''\"\n tabindex=\"0\"\n style=\"\n border-bottom-color: var(--color-border-1);\n border-left-color: var(--color-border-1);\n border-right-color: var(--color-border-1);\n border-top-color: var(--color-border-1);\n outline: 0px;\n cursor: default;\n user-select: none;\n padding: 0px;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n --component-icon-color: var(--color-text-secondary);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n border-radius: 4px;\n color: var(--color-action-secondary-text);\n background: var(--color-action-secondary-background);\n border-width: 0px;\n border-style: solid;\n box-shadow: var(--box-shadows-action-secondary);\n align-self: center;\n \"\n >\n <div class=\"ax-truncate\">\n {{ i.label }}\n <span class=\"ax-text-xs ax-text-neutral-400\"> {{ units()[this.current().type][this.current().side] }}</span>\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"ax-h-[1px] ax-mt-1 ax-mb-1 ax-bg-border-1 ax-pointer-events-none\"></div>\n\n <div\n [class.ax-opacity-50]=\"\n originalValues()[this.current().type][this.current().side] ===\n calculatedValues()[this.current().type][this.current().side]\n \"\n (click)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n tabindex=\"0\"\n class=\"ax-outline-none ax-select-none ax-py-1 ax-px-2 ax-my-1 ax-min-h-6 ax-cursor-pointer hover:!ax-bg-[#404040]\"\n >\n <div class=\"ax-flex ax-flex-row ax-items-center\">\n <div class=\"ax-min-w-6 ax-self-center ax-grow ax-basis-0\">\n <div class=\"ax-items-center ax-box-border ax-grid ax-grid-cols-[16px_1fr_auto] ax-gap-x-2 ax-gap-y-1\">\n <div class=\"ax-size-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.70712 5.00004L6.35357 2.35359L5.64646 1.64648L1.79291 5.50004L5.64646 9.35359L6.35357 8.64648L3.70712 6.00004H10C11.6569 6.00004 13 7.34318 13 9.00004C13 10.6569 11.6569 12 10 12H8.00001V13H10C12.2092 13 14 11.2092 14 9.00004C14 6.7909 12.2092 5.00004 10 5.00004H3.70712Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Reset</div>\n </div>\n </div>\n <div class=\"ax-self-center\">\n <div\n class=\"ax-cursor-default ax-select-none ax-text-[11.5px] ax-font-normal ax-leading-4 ax-tracking-tight ax-text-secondary ax-justify-self-end ax-ml-[1px]\"\n >\n <span><kbd>Ctrl</kbd> + <kbd>B</kbd></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ax-popover #popover [openOn]=\"'click'\" [offsetY]=\"10\" [closeOn]=\"'clickOut'\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n type: this.current().type,\n side: this.current().side,\n value: this.calculatedValues()[this.current().type][this.current().side]\n }\"\n ></ng-container>\n</ax-popover>\n", styles: [".axp-spacing-box{--color-text-secondary: rgba(255, 255, 255, .67);--color-ui-scrollbar-thumb: rgba(255, 255, 255, .67);--color-background-1: #292929;--color-text-secondary: white;--color-border-2: rgba(255, 255, 255, .16);--color-changed: rgb(167, 209, 255);--color-background: rgba(0, 106, 204, .18)}.axp-spacing-box .axp-spacing-inner-box{transform:scale(1.2);position:relative;display:grid;width:224px;height:112px;grid-template-columns:36px 1px 36px 1fr 36px 1px 36px;grid-template-rows:24px 2px 24px 1fr 24px 2px 24px;outline-style:none;cursor:default;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-value-container{pointer-events:none;border:none;outline:0px;cursor:default;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;display:flex;align-items:center;justify-content:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;place-self:center;padding:2px;height:auto;width:auto;font-family:inherit;font-size:inherit;position:relative;border-radius:4px;color:var(--color-text-secondary);background:transparent;box-sizing:border-box;box-shadow:none}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-value-container .axp-spacing-value-field{cursor:default;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:400;line-height:10px;letter-spacing:-.115px;display:flex;color:var(--color-text-secondary);background:transparent;padding:2px;margin:0;border-radius:2px;max-width:100%;box-sizing:content-box;place-self:center;position:relative;opacity:1;align-items:center;justify-content:center}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-margin-box{border-radius:4px;grid-area:1/1/-1/-1;display:grid;grid-template-columns:36px 1fr 36px;grid-template-rows:24px minmax(8px,1fr) 24px;justify-items:center;width:224px;height:112px}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-padding-box{border-radius:4px;grid-area:3/3/span 3/span 3;display:grid;grid-template-columns:36px 1fr 36px;grid-template-rows:24px minmax(8px,1fr) 24px;justify-items:center;width:150px;height:60px}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-padding-text{grid-area:3/3/span 3/span 3;pointer-events:none;position:relative}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-margin-text{grid-area:1/1/-1/-1;pointer-events:none;position:relative}.axp-spacing-popup-container{--color-action-secondary-text: white;--color-action-secondary-background: linear-gradient( 180deg, rgba(255, 255, 255, .13) 0%, rgba(255, 255, 255, .11) 100% );--box-shadows-action-secondary: 0px .5px 1px rgba(0, 0, 0, .8), inset 0px .5px .5px rgba(255, 255, 255, .12);--color-border-1: rgba(255, 255, 255, .13);max-width:239px;min-width:201px;background:#353535;border-radius:.5rem;color:var(--color-text-secondary, white);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,sans-serif;font-size:11.5px;line-height:16px}.axp-spacing-popup-container .axp-spacing-popover{display:grid;grid-template-columns:16px 1fr 56px;grid-template-rows:24px 1fr;align-items:center;gap:8px;width:241px;padding:8px}.axp-spacing-popup-container .axp-spacing-popover .axp-spacing-template-values{display:grid;grid-area:2/1/3/-1;grid-template-columns:repeat(5,1fr);grid-template-rows:24px 24px;gap:4px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;cursor:pointer;outline:none;overflow:hidden;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-webkit-slider-runnable-track{height:10px;background:#ccc;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-moz-range-track{height:10px;background:#ccc;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:10px;width:10px;background-color:#fff;border-radius:50%;border:1px solid #353535;box-shadow:-407px 0 0 400px rgba(41,41,41,.44)}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-moz-range-thumb{height:10px;width:10px;background-color:#fff;border-radius:50%;border:1px solid #353535;box-shadow:-407px 0 0 400px rgba(41,41,41,.44)}.area{grid-area:1/1/-1/-1;overflow:hidden;border-radius:2px;filter:drop-shadow(rgba(255,255,255,.2) 0px -.5px 0px) drop-shadow(rgba(0,0,0,.4) 0px 0px 1px) drop-shadow(rgba(0,0,0,.2) 0px 1px 0px)}\n"], dependencies: [{ kind: "ngmodule", type: AXNumberBoxModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i1$9.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXRangeSliderModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11824
11375
  }
@@ -12882,7 +12433,7 @@ class AXPCronJobWidgetEditComponent extends AXPValueWidgetComponent {
12882
12433
  this.setValue(e.data);
12883
12434
  }
12884
12435
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPCronJobWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
12885
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPCronJobWidgetEditComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `<ax-cron-job-container [ngModel]="expreesion()"> </ax-cron-job-container>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXCronJobModule }, { kind: "component", type: i2$a.AXCronJobContainerComponent, selector: "ax-cron-job-container", outputs: ["onValueChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12436
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPCronJobWidgetEditComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `<ax-cron-job-container [ngModel]="expreesion()"> </ax-cron-job-container>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXCronJobModule }, { kind: "component", type: i2$9.AXCronJobContainerComponent, selector: "ax-cron-job-container", outputs: ["onValueChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12886
12437
  }
12887
12438
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPCronJobWidgetEditComponent, decorators: [{
12888
12439
  type: Component,
@@ -12962,7 +12513,7 @@ class AXPCronJobWidgetDesignerComponent extends AXPValueWidgetComponent {
12962
12513
  this.expreesion = signal('* * * ? * * *');
12963
12514
  }
12964
12515
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPCronJobWidgetDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
12965
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPCronJobWidgetDesignerComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `<ax-cron-job-container [ngModel]="expreesion()"> </ax-cron-job-container>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXCronJobModule }, { kind: "component", type: i2$a.AXCronJobContainerComponent, selector: "ax-cron-job-container", outputs: ["onValueChanged"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12516
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPCronJobWidgetDesignerComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `<ax-cron-job-container [ngModel]="expreesion()"> </ax-cron-job-container>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXCronJobModule }, { kind: "component", type: i2$9.AXCronJobContainerComponent, selector: "ax-cron-job-container", outputs: ["onValueChanged"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12966
12517
  }
12967
12518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPCronJobWidgetDesignerComponent, decorators: [{
12968
12519
  type: Component,
@@ -13188,7 +12739,7 @@ class AXPColorBoxWidgetEditComponent extends AXPValueWidgetComponent {
13188
12739
  <ax-clear-button></ax-clear-button>
13189
12740
  }
13190
12741
  </ax-color-box>
13191
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXColorBoxModule }, { kind: "component", type: i2$9.AXColorBoxComponent, selector: "ax-color-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "showBadge", "showValue", "showClearButton", "showIcon"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i4.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12742
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXColorBoxModule }, { kind: "component", type: i2$8.AXColorBoxComponent, selector: "ax-color-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "showBadge", "showValue", "showClearButton", "showIcon"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i4.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13192
12743
  }
13193
12744
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPColorBoxWidgetEditComponent, decorators: [{
13194
12745
  type: Component,
@@ -14143,7 +13694,7 @@ class AXPTimerDurationWidgetEditComponent extends AXPValueWidgetComponent {
14143
13694
  [valueEnd]="to()"
14144
13695
  [disabled]="disabled()"
14145
13696
  >
14146
- </ax-time-duration>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXTimeDurationModule }, { kind: "component", type: i2$b.AXTimeDurationComponent, selector: "ax-time-duration", inputs: ["disabled", "tabIndex", "readonly", "look", "valueStart", "valueEnd"], outputs: ["onValueChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13697
+ </ax-time-duration>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXTimeDurationModule }, { kind: "component", type: i2$a.AXTimeDurationComponent, selector: "ax-time-duration", inputs: ["disabled", "tabIndex", "readonly", "look", "valueStart", "valueEnd"], outputs: ["onValueChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14147
13698
  }
14148
13699
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPTimerDurationWidgetEditComponent, decorators: [{
14149
13700
  type: Component,
@@ -15410,17 +14961,49 @@ var gridWidgetDesigner_component = /*#__PURE__*/Object.freeze({
15410
14961
  class AXPGridWidgetViewComponent extends AXPLayoutWidgetComponent {
15411
14962
  constructor() {
15412
14963
  super(...arguments);
15413
- this.cols = computed(() => this.options()['cols'] ?? 1);
15414
- this.rows = computed(() => this.options()['rows'] ?? 1);
15415
- this.gap = computed(() => this.options()['gap'] ?? 0);
14964
+ this.cols = computed(() => this.calcGridRowOrColumn(this.options()['grid']?.default?.gridTemplateColumns ?? 'repeat(1, 1fr)'));
14965
+ this.rows = computed(() => this.calcGridRowOrColumn(this.options()['grid']?.default?.gridTemplateRows ?? 'repeat(1, 1fr)'));
14966
+ this.align = computed(() => this.options()['grid']?.default?.alignItems ?? 'stretch');
14967
+ this.justify = computed(() => this.options()['grid']?.default?.justifyItems ?? 'stretch');
14968
+ this.autoFlow = computed(() => this.options()['grid']?.default?.gridAutoFlow ?? 'row');
14969
+ this.gap = computed(() => this.options()['grid']?.default?.gap ?? '1px');
14970
+ }
14971
+ calcGridRowOrColumn(value) {
14972
+ return AXPPropertyEditorHelper.parseGridTemplate(value);
14973
+ }
14974
+ get __class() {
14975
+ return {
14976
+ 'ax-widget-container': true,
14977
+ 'ax-block': true,
14978
+ 'ax-w-full': true,
14979
+ };
15416
14980
  }
15417
14981
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPGridWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
15418
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPGridWidgetViewComponent, isStandalone: true, selector: "axp-grid-layout-widget", usesInheritance: true, ngImport: i0, template: `
15419
- <div class="ax-grid ax-grid-cols-{{ cols() }} ax-grid-rows-{{ rows() }} ax-gap-{{ gap() }}">
15420
- @for (child of children(); track $index) {
15421
- <ng-container axp-widget-renderer [node]="child" [index]="index" [parentNode]="this" [mode]="this.mode"> </ng-container>
14982
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPGridWidgetViewComponent, isStandalone: true, selector: "axp-grid-layout-widget", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
14983
+ <div
14984
+ class="ax-grid ax-grid-flow-{{ autoFlow() }} ax-grid-cols-{{ cols() }} ax-grid-rows-{{ rows() }} ax-items-{{
14985
+ align()
14986
+ }} ax-justify-items-{{ justify() }}"
14987
+ [style]="{ gap: gap() }"
14988
+ >
14989
+ @for (node of children(); track $index) {
14990
+ <ng-container
14991
+ axp-widget-renderer
14992
+ [node]="node"
14993
+ [index]="index"
14994
+ [parentNode]="this"
14995
+ [mode]="this.mode"
14996
+ ></ng-container>
15422
14997
  }
15423
14998
  </div>
14999
+
15000
+ <!--TO BE SURE ALL DYNAMIC TAILWIND CLASSES WORK WELL!-->
15001
+ @if (false) {
15002
+ <div class="ax-hidden">
15003
+ ax-items-start ax-items-center ax-items-end ax-items-stretch ax-justify-items-start ax-justify-items-center
15004
+ ax-justify-items-end ax-justify-items-stretch ax-grid-flow-row ax-grid-flow-col
15005
+ </div>
15006
+ }
15424
15007
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: i1$3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15425
15008
  }
15426
15009
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPGridWidgetViewComponent, decorators: [{
@@ -15428,16 +15011,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
15428
15011
  args: [{
15429
15012
  selector: 'axp-grid-layout-widget',
15430
15013
  template: `
15431
- <div class="ax-grid ax-grid-cols-{{ cols() }} ax-grid-rows-{{ rows() }} ax-gap-{{ gap() }}">
15432
- @for (child of children(); track $index) {
15433
- <ng-container axp-widget-renderer [node]="child" [index]="index" [parentNode]="this" [mode]="this.mode"> </ng-container>
15014
+ <div
15015
+ class="ax-grid ax-grid-flow-{{ autoFlow() }} ax-grid-cols-{{ cols() }} ax-grid-rows-{{ rows() }} ax-items-{{
15016
+ align()
15017
+ }} ax-justify-items-{{ justify() }}"
15018
+ [style]="{ gap: gap() }"
15019
+ >
15020
+ @for (node of children(); track $index) {
15021
+ <ng-container
15022
+ axp-widget-renderer
15023
+ [node]="node"
15024
+ [index]="index"
15025
+ [parentNode]="this"
15026
+ [mode]="this.mode"
15027
+ ></ng-container>
15434
15028
  }
15435
15029
  </div>
15030
+
15031
+ <!--TO BE SURE ALL DYNAMIC TAILWIND CLASSES WORK WELL!-->
15032
+ @if (false) {
15033
+ <div class="ax-hidden">
15034
+ ax-items-start ax-items-center ax-items-end ax-items-stretch ax-justify-items-start ax-justify-items-center
15035
+ ax-justify-items-end ax-justify-items-stretch ax-grid-flow-row ax-grid-flow-col
15036
+ </div>
15037
+ }
15436
15038
  `,
15437
15039
  changeDetection: ChangeDetectionStrategy.OnPush,
15438
- imports: [CommonModule, AXPLayoutBuilderModule]
15040
+ imports: [CommonModule, AXPLayoutBuilderModule],
15439
15041
  }]
15440
- }] });
15042
+ }], propDecorators: { __class: [{
15043
+ type: HostBinding,
15044
+ args: ['class']
15045
+ }] } });
15441
15046
 
15442
15047
  var gridWidgetView_component = /*#__PURE__*/Object.freeze({
15443
15048
  __proto__: null,
@@ -16499,6 +16104,7 @@ class AXPWidgetsModule {
16499
16104
  AXPDocumentWidget,
16500
16105
  //
16501
16106
  AXPBlockWidget,
16107
+ AXPFlexWidget,
16502
16108
  AXPPageWidget,
16503
16109
  AXPRepeaterWidget,
16504
16110
  AXPTextBlockWidget,
@@ -16525,7 +16131,6 @@ class AXPWidgetsModule {
16525
16131
  AXPLargeTextWidget,
16526
16132
  AXPMapBoxWidget,
16527
16133
  AXPCronJobWidget,
16528
- AXPFileBoxWidget,
16529
16134
  AXPFileUploaderWidget,
16530
16135
  AXPQrcodeWidget,
16531
16136
  AXPPasswordBoxWidget,
@@ -16539,6 +16144,7 @@ class AXPWidgetsModule {
16539
16144
  //
16540
16145
  AXPSpacingWidget,
16541
16146
  AXPBorderWidget,
16147
+ AXPDirectionWidget,
16542
16148
  //
16543
16149
  AXPStringFilterWidget,
16544
16150
  AXPBooleanFilterWidget,
@@ -16574,6 +16180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
16574
16180
  AXPDocumentWidget,
16575
16181
  //
16576
16182
  AXPBlockWidget,
16183
+ AXPFlexWidget,
16577
16184
  AXPPageWidget,
16578
16185
  AXPRepeaterWidget,
16579
16186
  AXPTextBlockWidget,
@@ -16600,7 +16207,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
16600
16207
  AXPLargeTextWidget,
16601
16208
  AXPMapBoxWidget,
16602
16209
  AXPCronJobWidget,
16603
- AXPFileBoxWidget,
16604
16210
  AXPFileUploaderWidget,
16605
16211
  AXPQrcodeWidget,
16606
16212
  AXPPasswordBoxWidget,
@@ -16614,6 +16220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
16614
16220
  //
16615
16221
  AXPSpacingWidget,
16616
16222
  AXPBorderWidget,
16223
+ AXPDirectionWidget,
16617
16224
  //
16618
16225
  AXPStringFilterWidget,
16619
16226
  AXPBooleanFilterWidget,
@@ -16653,5 +16260,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
16653
16260
  * Generated bundle index. Do not edit.
16654
16261
  */
16655
16262
 
16656
- export { AXPAdvancedGridItemWidget, AXPAdvancedGridItemWidgetDesignerComponent, AXPAdvancedGridItemWidgetPrintComponent, AXPAdvancedGridItemWidgetViewComponent, AXPAdvancedGridOptionsWidget, AXPAdvancedGridOptionsWidgetEditComponent, AXPAdvancedGridWidget, AXPAdvancedGridWidgetDesignerComponent, AXPAdvancedGridWidgetViewComponent, AXPAvatarWidget, AXPAvatarWidgetColumnComponent, AXPAvatarWidgetDesignerComponent, AXPAvatarWidgetEditComponent, AXPAvatarWidgetPrintComponent, AXPAvatarWidgetViewComponent, AXPBetweenExpressionValidationWidget, AXPBetweenValidationWidgetEditComponent, AXPBlockWidget, AXPBlockWidgetDesignerComponent, AXPBlockWidgetViewComponent, AXPBorderWidget, AXPBorderWidgetEditComponent, AXPButtonWidget, AXPButtonWidgetViewComponent, AXPCallbackValidationWidget, AXPCallbackValidationWidgetEditComponent, AXPCheckBoxWidget, AXPCheckBoxWidgetEditComponent, AXPContactWidget, AXPContactWidgetColumnComponent, AXPContactWidgetEditComponent, AXPContactWidgetPrintComponent, AXPContactWidgetViewComponent, AXPDateTimeBoxWidget, AXPDateTimeBoxWidgetColumnComponent, AXPDateTimeBoxWidgetEditComponent, AXPDateTimeBoxWidgetFilterComponent, AXPDateTimeBoxWidgetPrintComponent, AXPDateTimeBoxWidgetViewComponent, AXPEmailBoxWidget, AXPEmailBoxWidgetColumnComponent, AXPEmailBoxWidgetEditComponent, AXPEmailBoxWidgetFilterComponent, AXPEmailBoxWidgetPrintComponent, AXPEmailBoxWidgetViewComponent, AXPEqualValidationWidget, AXPEqualValidationWidgetEditComponent, AXPFileBoxWidget, AXPFileBoxWidgetColumnComponent, AXPFileBoxWidgetEditComponent, AXPFileBoxWidgetFilterComponent, AXPFileBoxWidgetPrintComponent, AXPFileBoxWidgetViewComponent, AXPFileManagementService, AXPFileUploaderManagementService, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetPrintComponent, AXPFileUploaderWidgetViewComponent, AXPFlexOptionsWidget, AXPFlexOptionsWidgetEditComponent, AXPGalleryWidget, AXPGalleryWidgetEditComponent, AXPGalleryWidgetPrintComponent, AXPGalleryWidgetViewComponent, AXPGreaterThanExpressionValidationWidget, AXPGreaterThanValidationWidgetEditComponent, AXPGridOptionsWidget, AXPGridOptionsWidgetEditComponent, AXPLargeTextWidget, AXPLargeTextWidgetColumnComponent, AXPLargeTextWidgetEditComponent, AXPLargeTextWidgetFilterComponent, AXPLargeTextWidgetPrintComponent, AXPLargeTextWidgetViewComponent, AXPLessThanExpressionValidationWidget, AXPLessThanValidationWidgetEditComponent, AXPLinkWidget, AXPLinkWidgetColumnComponent, AXPLinkWidgetEditComponent, AXPLinkWidgetFilterComponent, AXPLinkWidgetPrintComponent, AXPLinkWidgetViewComponent, AXPMapBoxWidget, AXPMapBoxWidgetEditComponent, AXPMapBoxWidgetViewComponent, AXPMaxLengthExpressionValidationWidget, AXPMaxLengthValidationWidgetEditComponent, AXPMinLengthExpressionValidationWidget, AXPMinLengthValidationWidgetEditComponent, AXPNumberBoxWidget, AXPNumberBoxWidgetColumnComponent, AXPNumberBoxWidgetEditComponent, AXPNumberBoxWidgetFilterComponent, AXPNumberBoxWidgetPrintComponent, AXPNumberBoxWidgetViewComponent, AXPPageWidget, AXPPageWidgetViewComponent, AXPPasswordBoxWidget, AXPPasswordBoxWidgetColumnComponent, AXPPasswordBoxWidgetEditComponent, AXPPasswordBoxWidgetFilterComponent, AXPPasswordBoxWidgetPrintComponent, AXPPasswordBoxWidgetViewComponent, AXPPhoneBoxWidget, AXPPhoneBoxWidgetColumnComponent, AXPPhoneBoxWidgetEditComponent, AXPPhoneBoxWidgetFilterComponent, AXPPhoneBoxWidgetPrintComponent, AXPPhoneBoxWidgetViewComponent, AXPPropertyEditorHelper, AXPRegularExpressionValidationWidget, AXPRegularExpressionValidationWidgetEditComponent, AXPRepeaterWidget, AXPRepeaterWidgetDesignerComponent, AXPRepeaterWidgetEditComponent, AXPRepeaterWidgetPrintComponent, AXPRepeaterWidgetViewComponent, AXPRequiredValidationWidget, AXPRequiredValidationWidgetEditComponent, AXPRichTextWidget, AXPRichTextWidgetColumnComponent, AXPRichTextWidgetEditComponent, AXPRichTextWidgetFilterComponent, AXPRichTextWidgetPrintComponent, AXPRichTextWidgetViewComponent, AXPSelectBoxWidget, AXPSelectBoxWidgetColumnComponent, AXPSelectBoxWidgetEditComponent, AXPSelectBoxWidgetFilterComponent, AXPSelectBoxWidgetPrintComponent, AXPSelectBoxWidgetViewComponent, AXPSelectionListWidget, AXPSelectionListWidgetColumnComponent, AXPSelectionListWidgetDesignerComponent, AXPSelectionListWidgetEditComponent, AXPSelectionListWidgetFilterComponent, AXPSelectionListWidgetPrintComponent, AXPSelectionListWidgetViewComponent, AXPSignatureWidget, AXPSignatureWidgetColumnComponent, AXPSignatureWidgetEditComponent, AXPSignatureWidgetFilterComponent, AXPSignatureWidgetPrintComponent, AXPSignatureWidgetViewComponent, AXPSingleFileBoxWidget, AXPSingleFileBoxWidgetColumnComponent, AXPSingleFileBoxWidgetEditComponent, AXPSingleFileBoxWidgetFilterComponent, AXPSingleFileBoxWidgetPrintComponent, AXPSingleFileBoxWidgetViewComponent, AXPSpacingWidget, AXPSpacingWidgetEditComponent, AXPTemplateBoxWidget, AXPTemplateBoxWidgetColumnComponent, AXPTemplateBoxWidgetEditComponent, AXPTemplateBoxWidgetFilterComponent, AXPTemplateBoxWidgetPrintComponent, AXPTemplateBoxWidgetViewComponent, AXPTextBoxWidget, AXPTextBoxWidgetColumnComponent, AXPTextBoxWidgetEditComponent, AXPTextBoxWidgetFilterComponent, AXPTextBoxWidgetPrintComponent$1 as AXPTextBoxWidgetPrintComponent, AXPTextBoxWidgetViewComponent, AXPToggleWidget, AXPToggleWidgetColumnComponent, AXPToggleWidgetEditComponent, AXPToggleWidgetFilterComponent, AXPToggleWidgetPrintComponent, AXPToggleWidgetViewComponent, AXPWidgetsModule, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_ALLOW_SEARCH_PROPERTY, AXP_ANIMATION_PROPERTY_GROUP, AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_BETWEEN_VALIDATION_PROPERTY, AXP_BG_COLOR_PROPERTY, AXP_BOX_MODEL_PROPERTY_GROUP, AXP_CALLBACK_VALIDATION_PROPERTY, AXP_COLOR_PROPERTY, AXP_CONTENT_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_DATA_SOURCE_PROPERTIES, AXP_DATA_SOURCE_PROPERTY, AXP_DATA_SOURCE_TEXT_FIELD, AXP_DATA_SOURCE_VALUE_FIELD, AXP_DATE_FORMAT_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_DIRECTION_PROPERTY, AXP_DISABLED_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_EQUAL_VALIDATION_PROPERTY, AXP_FALSY_TEXT_PROPERTY, AXP_FONT_SIZE_PROPERTY, AXP_Flex_Box_Align_Options, AXP_Flex_Box_Alignments, AXP_Flex_Box_Justify_Options, AXP_GREATER_THAN_VALIDATION_PROPERTY, AXP_Grid_Box_Align_Items_Options, AXP_Grid_Box_Alignments, AXP_Grid_Box_Justify_Items_Options, AXP_HAS_CLEAR_BUTTON_PROPERTY, AXP_HAS_COPY_ICON_PROPERTY, AXP_HAS_EYE_ICON_PROPERTY, AXP_HAS_ICON_PROPERTY, AXP_HAS_LABEL_PROPERTY, AXP_ICON_PROPERTY, AXP_IS_LOADING_PROPERTY, AXP_LABEL_PROPERTY, AXP_LAYOUT_ADVANCED_GRID_PROPERTY, AXP_LAYOUT_BORDER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY, AXP_LAYOUT_COL_END_PROPERTY, AXP_LAYOUT_COL_SPAN_PROPERTY, AXP_LAYOUT_COL_START_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY_GROUP, AXP_LAYOUT_GAP_PROPERTY, AXP_LAYOUT_GRID_ITEM_PROPERTIES, AXP_LAYOUT_GRID_PROPERTIES, AXP_LAYOUT_GRID_PROPERTY, AXP_LAYOUT_GRID_PROPERTY_GROUP, AXP_LAYOUT_GRID_ROW_PROPERTIES, AXP_LAYOUT_ROWS_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_SPACING_PROPERTY, AXP_LESS_THAN_VALIDATION_PROPERTY, AXP_MAX_LENGTH_VALIDATION_PROPERTY, AXP_MIN_LENGTH_VALIDATION_PROPERTY, AXP_NAME_PROPERTY, AXP_PLACEHOLDER_PROPERTY, AXP_READONLY_PROPERTY, AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY, AXP_REQUIRED_VALIDATION_PROPERTY, AXP_STYLE_COLOR_PROPERTY, AXP_STYLE_LOOK_PROPERTY, AXP_STYLING_PROPERTY_GROUP, AXP_TABLE_COLUMN_HEIGHT_PROPERTY, AXP_TABLE_COLUMN_WIDTH_PROPERTY, AXP_TEXT_FIELD_PROPERTY, AXP_TEXT_PROPERTY, AXP_THEME_PROPERTY, AXP_TITLE_PROPERTY, AXP_TRULY_TEXT_PROPERTY, AXP_VALIDATION_PROPERTY_GROUP, AXP_VALUE_FIELD_PROPERTY, AXP_WIDGET_PROPERTY_GROUP, AXP_default_Border_Box_Units, AXP_default_Border_Box_Value, AXP_default_Spacing_Box_Units, AXP_default_Spacing_Box_Value, DEFAULT_STRATEGY_CONFIG, STRATEGY_CONFIG_TOKEN, booleanDefaultProperty, findNonEmptyBreakpoints, largeTextDefaultProperty, numberDefaultProperty, numberMaxValueProperty, numberMinValueProperty, plainTextDefaultProperty };
16263
+ export { AXPAdvancedGridItemWidget, AXPAdvancedGridItemWidgetDesignerComponent, AXPAdvancedGridItemWidgetPrintComponent, AXPAdvancedGridItemWidgetViewComponent, AXPAdvancedGridOptionsWidget, AXPAdvancedGridOptionsWidgetEditComponent, AXPAdvancedGridWidget, AXPAdvancedGridWidgetDesignerComponent, AXPAdvancedGridWidgetViewComponent, AXPAvatarWidget, AXPAvatarWidgetColumnComponent, AXPAvatarWidgetDesignerComponent, AXPAvatarWidgetEditComponent, AXPAvatarWidgetPrintComponent, AXPAvatarWidgetViewComponent, AXPBetweenExpressionValidationWidget, AXPBetweenValidationWidgetEditComponent, AXPBlockWidget, AXPBlockWidgetDesignerComponent, AXPBlockWidgetViewComponent, AXPBorderWidget, AXPBorderWidgetEditComponent, AXPButtonWidget, AXPButtonWidgetViewComponent, AXPCallbackValidationWidget, AXPCallbackValidationWidgetEditComponent, AXPCheckBoxWidget, AXPCheckBoxWidgetEditComponent, AXPContactWidget, AXPContactWidgetColumnComponent, AXPContactWidgetEditComponent, AXPContactWidgetPrintComponent, AXPContactWidgetViewComponent, AXPDateTimeBoxWidget, AXPDateTimeBoxWidgetColumnComponent, AXPDateTimeBoxWidgetEditComponent, AXPDateTimeBoxWidgetFilterComponent, AXPDateTimeBoxWidgetPrintComponent, AXPDateTimeBoxWidgetViewComponent, AXPDirectionWidget, AXPDirectionWidgetEditComponent, AXPEmailBoxWidget, AXPEmailBoxWidgetColumnComponent, AXPEmailBoxWidgetEditComponent, AXPEmailBoxWidgetFilterComponent, AXPEmailBoxWidgetPrintComponent, AXPEmailBoxWidgetViewComponent, AXPEqualValidationWidget, AXPEqualValidationWidgetEditComponent, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetPrintComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPFlexOptionsWidget, AXPFlexOptionsWidgetEditComponent, AXPFlexWidget, AXPFlexWidgetDesignerComponent, AXPFlexWidgetViewComponent, AXPGalleryWidget, AXPGalleryWidgetEditComponent, AXPGalleryWidgetPrintComponent, AXPGalleryWidgetViewComponent, AXPGreaterThanExpressionValidationWidget, AXPGreaterThanValidationWidgetEditComponent, AXPGridOptionsWidget, AXPGridOptionsWidgetEditComponent, AXPLargeTextWidget, AXPLargeTextWidgetColumnComponent, AXPLargeTextWidgetEditComponent, AXPLargeTextWidgetFilterComponent, AXPLargeTextWidgetPrintComponent, AXPLargeTextWidgetViewComponent, AXPLessThanExpressionValidationWidget, AXPLessThanValidationWidgetEditComponent, AXPLinkWidget, AXPLinkWidgetColumnComponent, AXPLinkWidgetEditComponent, AXPLinkWidgetFilterComponent, AXPLinkWidgetPrintComponent, AXPLinkWidgetViewComponent, AXPMapBoxWidget, AXPMapBoxWidgetEditComponent, AXPMapBoxWidgetViewComponent, AXPMaxLengthExpressionValidationWidget, AXPMaxLengthValidationWidgetEditComponent, AXPMinLengthExpressionValidationWidget, AXPMinLengthValidationWidgetEditComponent, AXPNumberBoxWidget, AXPNumberBoxWidgetColumnComponent, AXPNumberBoxWidgetEditComponent, AXPNumberBoxWidgetFilterComponent, AXPNumberBoxWidgetPrintComponent, AXPNumberBoxWidgetViewComponent, AXPPageWidget, AXPPageWidgetViewComponent, AXPPasswordBoxWidget, AXPPasswordBoxWidgetColumnComponent, AXPPasswordBoxWidgetEditComponent, AXPPasswordBoxWidgetFilterComponent, AXPPasswordBoxWidgetPrintComponent, AXPPasswordBoxWidgetViewComponent, AXPPhoneBoxWidget, AXPPhoneBoxWidgetColumnComponent, AXPPhoneBoxWidgetEditComponent, AXPPhoneBoxWidgetFilterComponent, AXPPhoneBoxWidgetPrintComponent, AXPPhoneBoxWidgetViewComponent, AXPPropertyEditorHelper, AXPRegularExpressionValidationWidget, AXPRegularExpressionValidationWidgetEditComponent, AXPRepeaterWidget, AXPRepeaterWidgetDesignerComponent, AXPRepeaterWidgetEditComponent, AXPRepeaterWidgetPrintComponent, AXPRepeaterWidgetViewComponent, AXPRequiredValidationWidget, AXPRequiredValidationWidgetEditComponent, AXPRichTextWidget, AXPRichTextWidgetColumnComponent, AXPRichTextWidgetEditComponent, AXPRichTextWidgetFilterComponent, AXPRichTextWidgetPrintComponent, AXPRichTextWidgetViewComponent, AXPSelectBoxWidget, AXPSelectBoxWidgetColumnComponent, AXPSelectBoxWidgetEditComponent, AXPSelectBoxWidgetFilterComponent, AXPSelectBoxWidgetPrintComponent, AXPSelectBoxWidgetViewComponent, AXPSelectionListWidget, AXPSelectionListWidgetColumnComponent, AXPSelectionListWidgetDesignerComponent, AXPSelectionListWidgetEditComponent, AXPSelectionListWidgetFilterComponent, AXPSelectionListWidgetPrintComponent, AXPSelectionListWidgetViewComponent, AXPSignatureWidget, AXPSignatureWidgetColumnComponent, AXPSignatureWidgetEditComponent, AXPSignatureWidgetFilterComponent, AXPSignatureWidgetPrintComponent, AXPSignatureWidgetViewComponent, AXPSpacingWidget, AXPSpacingWidgetEditComponent, AXPTemplateBoxWidget, AXPTemplateBoxWidgetColumnComponent, AXPTemplateBoxWidgetEditComponent, AXPTemplateBoxWidgetFilterComponent, AXPTemplateBoxWidgetPrintComponent, AXPTemplateBoxWidgetViewComponent, AXPTextBoxWidget, AXPTextBoxWidgetColumnComponent, AXPTextBoxWidgetEditComponent, AXPTextBoxWidgetFilterComponent, AXPTextBoxWidgetPrintComponent$1 as AXPTextBoxWidgetPrintComponent, AXPTextBoxWidgetViewComponent, AXPToggleWidget, AXPToggleWidgetColumnComponent, AXPToggleWidgetEditComponent, AXPToggleWidgetFilterComponent, AXPToggleWidgetPrintComponent, AXPToggleWidgetViewComponent, AXPWidgetsModule, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_ALLOW_SEARCH_PROPERTY, AXP_ANIMATION_PROPERTY_GROUP, AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_BETWEEN_VALIDATION_PROPERTY, AXP_BG_COLOR_PROPERTY, AXP_BOX_MODEL_PROPERTY_GROUP, AXP_CALLBACK_VALIDATION_PROPERTY, AXP_COLOR_PROPERTY, AXP_CONTENT_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_DATA_SOURCE_PROPERTIES, AXP_DATA_SOURCE_PROPERTY, AXP_DATA_SOURCE_TEXT_FIELD, AXP_DATA_SOURCE_VALUE_FIELD, AXP_DATE_FORMAT_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_DIRECTION_PROPERTY, AXP_DISABLED_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_EQUAL_VALIDATION_PROPERTY, AXP_FALSY_TEXT_PROPERTY, AXP_FONT_SIZE_PROPERTY, AXP_Flex_Box_Align_Options, AXP_Flex_Box_Alignments, AXP_Flex_Box_Justify_Options, AXP_GREATER_THAN_VALIDATION_PROPERTY, AXP_Grid_Box_Align_Items_Options, AXP_Grid_Box_Alignments, AXP_Grid_Box_Justify_Items_Options, AXP_HAS_CLEAR_BUTTON_PROPERTY, AXP_HAS_COPY_ICON_PROPERTY, AXP_HAS_EYE_ICON_PROPERTY, AXP_HAS_ICON_PROPERTY, AXP_HAS_LABEL_PROPERTY, AXP_ICON_PROPERTY, AXP_IS_LOADING_PROPERTY, AXP_LABEL_PROPERTY, AXP_LAYOUT_ADVANCED_GRID_PROPERTY, AXP_LAYOUT_BORDER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY, AXP_LAYOUT_COL_END_PROPERTY, AXP_LAYOUT_COL_SPAN_PROPERTY, AXP_LAYOUT_COL_START_PROPERTY, AXP_LAYOUT_DIRECTION_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY_GROUP, AXP_LAYOUT_GAP_PROPERTY, AXP_LAYOUT_GRID_ITEM_PROPERTIES, AXP_LAYOUT_GRID_PROPERTIES, AXP_LAYOUT_GRID_PROPERTY, AXP_LAYOUT_GRID_PROPERTY_GROUP, AXP_LAYOUT_GRID_ROW_PROPERTIES, AXP_LAYOUT_ROWS_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_SPACING_PROPERTY, AXP_LESS_THAN_VALIDATION_PROPERTY, AXP_MAX_LENGTH_VALIDATION_PROPERTY, AXP_MIN_LENGTH_VALIDATION_PROPERTY, AXP_NAME_PROPERTY, AXP_PLACEHOLDER_PROPERTY, AXP_READONLY_PROPERTY, AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY, AXP_REQUIRED_VALIDATION_PROPERTY, AXP_STYLE_COLOR_PROPERTY, AXP_STYLE_LOOK_PROPERTY, AXP_STYLING_PROPERTY_GROUP, AXP_TABLE_COLUMN_HEIGHT_PROPERTY, AXP_TABLE_COLUMN_WIDTH_PROPERTY, AXP_TEXT_FIELD_PROPERTY, AXP_TEXT_PROPERTY, AXP_THEME_PROPERTY, AXP_TITLE_PROPERTY, AXP_TRULY_TEXT_PROPERTY, AXP_VALIDATION_PROPERTY_GROUP, AXP_VALUE_FIELD_PROPERTY, AXP_WIDGET_PROPERTY_GROUP, AXP_default_Border_Box_Units, AXP_default_Border_Box_Value, AXP_default_Spacing_Box_Units, AXP_default_Spacing_Box_Value, DEFAULT_STRATEGY_CONFIG, STRATEGY_CONFIG_TOKEN, booleanDefaultProperty, findNonEmptyBreakpoints, largeTextDefaultProperty, numberDefaultProperty, numberMaxValueProperty, numberMinValueProperty, plainTextDefaultProperty };
16657
16264
  //# sourceMappingURL=acorex-platform-widgets.mjs.map