@acorex/platform 20.6.0-next.13 → 20.6.0-next.15

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 (34) hide show
  1. package/core/index.d.ts +106 -23
  2. package/fesm2022/acorex-platform-core.mjs +182 -3
  3. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  4. package/fesm2022/acorex-platform-layout-builder.mjs +1 -1
  5. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  6. package/fesm2022/acorex-platform-layout-components.mjs +175 -154
  7. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  8. package/fesm2022/acorex-platform-layout-entity.mjs +64 -87
  9. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  10. package/fesm2022/acorex-platform-layout-views.mjs +16 -14
  11. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-layout-widget-core.mjs +3 -1
  13. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs +30 -0
  15. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +1 -0
  16. package/fesm2022/acorex-platform-layout-widgets.mjs +1232 -839
  17. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  18. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-xq3eQ6t2.mjs → acorex-platform-themes-default-entity-master-list-view.component-pBT9C2n8.mjs} +5 -3
  19. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-pBT9C2n8.mjs.map +1 -0
  20. package/fesm2022/acorex-platform-themes-default.mjs +12 -10
  21. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-themes-shared.mjs +12 -107
  23. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  24. package/layout/components/index.d.ts +177 -175
  25. package/layout/designer/index.d.ts +1 -1
  26. package/layout/entity/index.d.ts +3 -66
  27. package/layout/views/index.d.ts +4 -58
  28. package/layout/widget-core/index.d.ts +20 -21
  29. package/layout/widgets/README.md +0 -1
  30. package/layout/widgets/index.d.ts +69 -48
  31. package/package.json +5 -5
  32. package/themes/default/index.d.ts +4 -71
  33. package/themes/shared/index.d.ts +1 -39
  34. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-xq3eQ6t2.mjs.map +0 -1
@@ -5028,6 +5028,7 @@ class AXPImageEditorPopupComponent extends AXBasePageComponent {
5028
5028
  this.image = input.required(...(ngDevMode ? [{ debugName: "image" }] : []));
5029
5029
  this.showHistory = input(true, ...(ngDevMode ? [{ debugName: "showHistory" }] : []));
5030
5030
  this.look = input('blank', ...(ngDevMode ? [{ debugName: "look" }] : []));
5031
+ this.aspectRatio = input(undefined, ...(ngDevMode ? [{ debugName: "aspectRatio" }] : []));
5031
5032
  this.container = viewChild(AXImageEditorContainerComponent, ...(ngDevMode ? [{ debugName: "container" }] : []));
5032
5033
  this.blobUrl = signal(null, ...(ngDevMode ? [{ debugName: "blobUrl" }] : []));
5033
5034
  this.url = signal(null, ...(ngDevMode ? [{ debugName: "url" }] : []));
@@ -5057,7 +5058,6 @@ class AXPImageEditorPopupComponent extends AXBasePageComponent {
5057
5058
  }
5058
5059
  }
5059
5060
  handleSave() {
5060
- this.container()?.save();
5061
5061
  this.close({ data: this.context() });
5062
5062
  }
5063
5063
  handleCancel() {
@@ -5070,10 +5070,15 @@ class AXPImageEditorPopupComponent extends AXBasePageComponent {
5070
5070
  }
5071
5071
  }
5072
5072
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPImageEditorPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5073
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPImageEditorPopupComponent, isStandalone: true, selector: "axp-image-editor-popup", inputs: { image: { classPropertyName: "image", publicName: "image", isSignal: true, isRequired: true, transformFunction: null }, showHistory: { classPropertyName: "showHistory", publicName: "showHistory", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "container", first: true, predicate: AXImageEditorContainerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
5073
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPImageEditorPopupComponent, isStandalone: true, selector: "axp-image-editor-popup", inputs: { image: { classPropertyName: "image", publicName: "image", isSignal: true, isRequired: true, transformFunction: null }, showHistory: { classPropertyName: "showHistory", publicName: "showHistory", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null }, aspectRatio: { classPropertyName: "aspectRatio", publicName: "aspectRatio", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "container", first: true, predicate: AXImageEditorContainerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
5074
5074
  <ax-form class="ax-flex ax-justify-center">
5075
5075
  <ax-form-field class="ax-p-2">
5076
- <ax-image-editor-container #container [look]="look()" (onValueChanged)="handleValueChanged($event)">
5076
+ <ax-image-editor-container
5077
+ [aspectRatio]="[aspectRatio() ?? '16/9']"
5078
+ #container
5079
+ [look]="look()"
5080
+ (onValueChanged)="handleValueChanged($event)"
5081
+ >
5077
5082
  <ax-header>
5078
5083
  <ax-toolbar>
5079
5084
  <ax-prefix>
@@ -5089,9 +5094,14 @@ class AXPImageEditorPopupComponent extends AXBasePageComponent {
5089
5094
  </ax-form>
5090
5095
  <ax-footer class="ax-flex ax-justify-end ax-gap-2">
5091
5096
  <ax-suffix>
5092
- <ax-button look="solid" (onClick)="handleCancel()" [text]="'@general:actions.cancel.title' | translate | async">
5097
+ <ax-button look="solid" (onClick)="handleCancel()" [text]="'@general:actions.cancel.title' | translate | async">
5093
5098
  </ax-button>
5094
- <ax-button color="primary" look="solid" (onClick)="handleSave()" [text]="'@general:actions.save.title' | translate | async">
5099
+ <ax-button
5100
+ color="primary"
5101
+ look="solid"
5102
+ (onClick)="handleSave()"
5103
+ [text]="'@general:actions.save.title' | translate | async"
5104
+ >
5095
5105
  </ax-button>
5096
5106
  </ax-suffix>
5097
5107
  </ax-footer>
@@ -5110,7 +5120,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
5110
5120
  ], template: `
5111
5121
  <ax-form class="ax-flex ax-justify-center">
5112
5122
  <ax-form-field class="ax-p-2">
5113
- <ax-image-editor-container #container [look]="look()" (onValueChanged)="handleValueChanged($event)">
5123
+ <ax-image-editor-container
5124
+ [aspectRatio]="[aspectRatio() ?? '16/9']"
5125
+ #container
5126
+ [look]="look()"
5127
+ (onValueChanged)="handleValueChanged($event)"
5128
+ >
5114
5129
  <ax-header>
5115
5130
  <ax-toolbar>
5116
5131
  <ax-prefix>
@@ -5126,14 +5141,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
5126
5141
  </ax-form>
5127
5142
  <ax-footer class="ax-flex ax-justify-end ax-gap-2">
5128
5143
  <ax-suffix>
5129
- <ax-button look="solid" (onClick)="handleCancel()" [text]="'@general:actions.cancel.title' | translate | async">
5144
+ <ax-button look="solid" (onClick)="handleCancel()" [text]="'@general:actions.cancel.title' | translate | async">
5130
5145
  </ax-button>
5131
- <ax-button color="primary" look="solid" (onClick)="handleSave()" [text]="'@general:actions.save.title' | translate | async">
5146
+ <ax-button
5147
+ color="primary"
5148
+ look="solid"
5149
+ (onClick)="handleSave()"
5150
+ [text]="'@general:actions.save.title' | translate | async"
5151
+ >
5132
5152
  </ax-button>
5133
5153
  </ax-suffix>
5134
5154
  </ax-footer>
5135
5155
  `, styles: ["::ng-deep ax-image-editor-view>canvas{height:65vh}\n"] }]
5136
- }], propDecorators: { image: [{ type: i0.Input, args: [{ isSignal: true, alias: "image", required: true }] }], showHistory: [{ type: i0.Input, args: [{ isSignal: true, alias: "showHistory", required: false }] }], look: [{ type: i0.Input, args: [{ isSignal: true, alias: "look", required: false }] }], container: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXImageEditorContainerComponent), { isSignal: true }] }] } });
5156
+ }], propDecorators: { image: [{ type: i0.Input, args: [{ isSignal: true, alias: "image", required: true }] }], showHistory: [{ type: i0.Input, args: [{ isSignal: true, alias: "showHistory", required: false }] }], look: [{ type: i0.Input, args: [{ isSignal: true, alias: "look", required: false }] }], aspectRatio: [{ type: i0.Input, args: [{ isSignal: true, alias: "aspectRatio", required: false }] }], container: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXImageEditorContainerComponent), { isSignal: true }] }] } });
5137
5157
 
5138
5158
  var imageEditorPopup_component = /*#__PURE__*/Object.freeze({
5139
5159
  __proto__: null,
@@ -5153,6 +5173,7 @@ class AXPImageEditorService {
5153
5173
  image: signal(options?.image),
5154
5174
  showHistory: signal(options?.showHistory ?? true),
5155
5175
  look: signal(options?.look ?? 'solid'),
5176
+ aspectRatio: signal(options?.aspectRatio),
5156
5177
  },
5157
5178
  });
5158
5179
  return result?.data?.data?.image ?? null;
@@ -5165,97 +5186,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
5165
5186
  args: [{ providedIn: 'root' }]
5166
5187
  }] });
5167
5188
 
5168
- class AXPWidgetPropertyViewerPopupComponent extends AXBasePageComponent {
5169
- constructor() {
5170
- super(...arguments);
5171
- //#region ---- Inputs ----
5172
- this.widget = input.required(...(ngDevMode ? [{ debugName: "widget" }] : []));
5173
- this.mode = input('simple', ...(ngDevMode ? [{ debugName: "mode" }] : []));
5174
- //#endregion
5175
- //#region ---- Properties ----
5176
- this.currentValues = signal({}, ...(ngDevMode ? [{ debugName: "currentValues" }] : []));
5177
- }
5178
- //#endregion
5179
- //#region ---- Event Handlers ----
5180
- handlePropertyChanged(event) {
5181
- this.currentValues.set(event.values);
5182
- }
5183
- handleCloseClick() {
5184
- this.close();
5185
- }
5186
- handleApplyClick() {
5187
- this.close({
5188
- values: this.currentValues(),
5189
- mode: 'update'
5190
- });
5191
- }
5192
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetPropertyViewerPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5193
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.12", type: AXPWidgetPropertyViewerPopupComponent, isStandalone: true, selector: "axp-widget-property-viewer-popup", inputs: { widget: { classPropertyName: "widget", publicName: "widget", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
5194
- <div class="ax-flex ax-flex-col ax-h-full ax-overflow-hidden">
5195
- <axp-widget-property-viewer
5196
- [widget]="widget()"
5197
- [mode]="mode()"
5198
- (onChanged)="handlePropertyChanged($event)">
5199
- </axp-widget-property-viewer>
5200
- </div>
5201
-
5202
- <ax-footer>
5203
- <ax-suffix>
5204
- <ax-button
5205
- look="solid"
5206
- [text]="'@general:actions.close.title' | translate | async"
5207
- (onClick)="handleCloseClick()">
5208
- </ax-button>
5209
- <ax-button
5210
- look="solid"
5211
- color="primary"
5212
- [text]="'@general:actions.apply.title' | translate | async"
5213
- (onClick)="handleApplyClick()">
5214
- </ax-button>
5215
- </ax-suffix>
5216
- </ax-footer>
5217
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5$2.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: i2$1.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: AXTranslationModule }, { kind: "component", type: AXPWidgetPropertyViewerComponent, selector: "axp-widget-property-viewer", inputs: ["widget", "mode"], outputs: ["onChanged"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5218
- }
5219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetPropertyViewerPopupComponent, decorators: [{
5220
- type: Component,
5221
- args: [{
5222
- selector: 'axp-widget-property-viewer-popup',
5223
- template: `
5224
- <div class="ax-flex ax-flex-col ax-h-full ax-overflow-hidden">
5225
- <axp-widget-property-viewer
5226
- [widget]="widget()"
5227
- [mode]="mode()"
5228
- (onChanged)="handlePropertyChanged($event)">
5229
- </axp-widget-property-viewer>
5230
- </div>
5231
-
5232
- <ax-footer>
5233
- <ax-suffix>
5234
- <ax-button
5235
- look="solid"
5236
- [text]="'@general:actions.close.title' | translate | async"
5237
- (onClick)="handleCloseClick()">
5238
- </ax-button>
5239
- <ax-button
5240
- look="solid"
5241
- color="primary"
5242
- [text]="'@general:actions.apply.title' | translate | async"
5243
- (onClick)="handleApplyClick()">
5244
- </ax-button>
5245
- </ax-suffix>
5246
- </ax-footer>
5247
- `,
5248
- changeDetection: ChangeDetectionStrategy.OnPush,
5249
- imports: [
5250
- CommonModule,
5251
- AXButtonModule,
5252
- AXDecoratorModule,
5253
- AXTranslationModule,
5254
- AXPWidgetPropertyViewerComponent
5255
- ],
5256
- }]
5257
- }], propDecorators: { widget: [{ type: i0.Input, args: [{ isSignal: true, alias: "widget", required: true }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }] } });
5258
-
5259
5189
  class AXPQuerySortsComponent {
5260
5190
  constructor() {
5261
5191
  this.sortDefinitions = model([], ...(ngDevMode ? [{ debugName: "sortDefinitions" }] : []));
@@ -5746,60 +5676,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
5746
5676
  args: [{ selector: 'axp-query-views', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [AXTabsModule, AXTranslationModule, CommonModule], template: "<ax-tabs #tabs [look]=\"'with-line'\" class=\"ax-font-semibold\">\n @for (item of views(); track item.name) {\n <ax-tab-item (onClick)=\"setView(item)\" [key]=\"item.name\" [text]=\"(item.title | translate | async) || 'item.title'\">\n </ax-tab-item>\n }\n <!-- <ax-tab-item\n (onClick)=\"createNew()\"\n [key]=\"'create-new'\"\n [text]=\"('@general:actions.create.title' | translate | async) || 'Create New'\"\n >\n </ax-tab-item> -->\n</ax-tabs>\n" }]
5747
5677
  }], propDecorators: { tabs: [{ type: i0.ViewChild, args: ['tabs', { isSignal: true }] }], views: [{ type: i0.Input, args: [{ isSignal: true, alias: "views", required: false }] }, { type: i0.Output, args: ["viewsChange"] }], selectedView: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedView", required: true }] }, { type: i0.Output, args: ["selectedViewChange"] }] } });
5748
5678
 
5749
- /**
5750
- * Generic widget item component for displaying selectable widgets with icons, titles, and descriptions.
5751
- * Can be used across different modules for consistent widget display and interaction.
5752
- */
5753
- class AXPWidgetItemComponent {
5754
- constructor() {
5755
- // Inputs
5756
- /** The widget data to display */
5757
- this.widget = input.required(...(ngDevMode ? [{ debugName: "widget" }] : []));
5758
- /** Whether this widget is currently selected */
5759
- this.isSelected = input(false, ...(ngDevMode ? [{ debugName: "isSelected" }] : []));
5760
- /** Whether to show the pin button */
5761
- this.showPinButton = input(true, ...(ngDevMode ? [{ debugName: "showPinButton" }] : []));
5762
- /** Custom CSS classes to apply to the widget item */
5763
- this.customClasses = input('', ...(ngDevMode ? [{ debugName: "customClasses" }] : []));
5764
- // Outputs
5765
- /** Emitted when the widget item is clicked */
5766
- this.onWidgetClick = output();
5767
- /** Emitted when the pin button is clicked */
5768
- this.onPinClick = output();
5769
- }
5770
- /**
5771
- * Handle widget item click event
5772
- */
5773
- handleClick(event) {
5774
- this.onWidgetClick.emit({
5775
- event,
5776
- widget: this.widget()
5777
- });
5778
- }
5779
- /**
5780
- * Handle pin button click event
5781
- */
5782
- handlePinClick(event) {
5783
- event.stopPropagation(); // Prevent widget click event
5784
- this.onPinClick.emit({
5785
- event,
5786
- widget: this.widget()
5787
- });
5788
- }
5789
- /**
5790
- * Get the effective icon to display
5791
- */
5792
- getIconClass() {
5793
- return this.widget().icon || 'fa-light fa-document';
5794
- }
5795
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5796
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPWidgetItemComponent, isStandalone: true, selector: "axp-widget-item", inputs: { widget: { classPropertyName: "widget", publicName: "widget", isSignal: true, isRequired: true, transformFunction: null }, isSelected: { classPropertyName: "isSelected", publicName: "isSelected", isSignal: true, isRequired: false, transformFunction: null }, showPinButton: { classPropertyName: "showPinButton", publicName: "showPinButton", isSignal: true, isRequired: false, transformFunction: null }, customClasses: { classPropertyName: "customClasses", publicName: "customClasses", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onWidgetClick: "onWidgetClick", onPinClick: "onPinClick" }, ngImport: i0, template: "<div (click)=\"handleClick($event)\"\n class=\"ax-py-2 ax-px-3 ax-rounded-md ax-flex ax-gap-3 ax-items-center ax-group hover:ax-bg-primary-lightest/65 hover:ax-text-primary-on-lightest ax-cursor-pointer ax-w-full\"\n [class.ax-bg-primary-lightest]=\"isSelected()\" [class.ax-text-primary-on-lightest]=\"isSelected()\"\n [class.ax-border-primary-lightest]=\"isSelected()\" [class]=\"customClasses()\">\n\n <!-- Widget Icon -->\n <div class=\"ax-min-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-rounded-md ax-border group-hover:ax-bg-primary-lighter group-hover:ax-text-primary-on-lighter group-hover:ax-border-primary-lighter\"\n [class.ax-bg-primary-light]=\"isSelected()\" [class.ax-text-primary-on-light]=\"isSelected()\"\n [class.ax-border-primary-light]=\"isSelected()\" [class.ax-surface]=\"!isSelected()\">\n <i [ngClass]=\"getIconClass()\" class=\"ax-text-lg\"></i>\n </div>\n\n <!-- Widget Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-w-[70%]\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <!-- Widget Title -->\n <div class=\"ax-font-semibold ax-text-sm ax-truncate\" [title]=\"widget().title\">\n {{ widget().title }}\n </div>\n\n <!-- Pin Button -->\n @if (showPinButton()) {\n <div (click)=\"handlePinClick($event)\" class=\"ax-cursor-pointer\">\n @if (widget().isPinned) {\n <i class=\"fa-solid fa-thumbtack ax-text-sm ax-rotate-45\" title=\"Unpin\"></i>\n } @else {\n <i class=\"fa-light fa-thumbtack ax-text-sm ax-rotate-45 ax-invisible group-hover:ax-visible\"\n title=\"Pin\"></i>\n }\n </div>\n }\n </div>\n\n <!-- Widget Description -->\n @if (widget().description) {\n <span class=\"ax-text-xs ax-truncate\" [title]=\"widget().description\">\n {{ widget().description }}\n </span>\n }\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None }); }
5797
- }
5798
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetItemComponent, decorators: [{
5799
- type: Component,
5800
- args: [{ selector: 'axp-widget-item', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div (click)=\"handleClick($event)\"\n class=\"ax-py-2 ax-px-3 ax-rounded-md ax-flex ax-gap-3 ax-items-center ax-group hover:ax-bg-primary-lightest/65 hover:ax-text-primary-on-lightest ax-cursor-pointer ax-w-full\"\n [class.ax-bg-primary-lightest]=\"isSelected()\" [class.ax-text-primary-on-lightest]=\"isSelected()\"\n [class.ax-border-primary-lightest]=\"isSelected()\" [class]=\"customClasses()\">\n\n <!-- Widget Icon -->\n <div class=\"ax-min-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-rounded-md ax-border group-hover:ax-bg-primary-lighter group-hover:ax-text-primary-on-lighter group-hover:ax-border-primary-lighter\"\n [class.ax-bg-primary-light]=\"isSelected()\" [class.ax-text-primary-on-light]=\"isSelected()\"\n [class.ax-border-primary-light]=\"isSelected()\" [class.ax-surface]=\"!isSelected()\">\n <i [ngClass]=\"getIconClass()\" class=\"ax-text-lg\"></i>\n </div>\n\n <!-- Widget Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-w-[70%]\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <!-- Widget Title -->\n <div class=\"ax-font-semibold ax-text-sm ax-truncate\" [title]=\"widget().title\">\n {{ widget().title }}\n </div>\n\n <!-- Pin Button -->\n @if (showPinButton()) {\n <div (click)=\"handlePinClick($event)\" class=\"ax-cursor-pointer\">\n @if (widget().isPinned) {\n <i class=\"fa-solid fa-thumbtack ax-text-sm ax-rotate-45\" title=\"Unpin\"></i>\n } @else {\n <i class=\"fa-light fa-thumbtack ax-text-sm ax-rotate-45 ax-invisible group-hover:ax-visible\"\n title=\"Pin\"></i>\n }\n </div>\n }\n </div>\n\n <!-- Widget Description -->\n @if (widget().description) {\n <span class=\"ax-text-xs ax-truncate\" [title]=\"widget().description\">\n {{ widget().description }}\n </span>\n }\n </div>\n</div>" }]
5801
- }], propDecorators: { widget: [{ type: i0.Input, args: [{ isSignal: true, alias: "widget", required: true }] }], isSelected: [{ type: i0.Input, args: [{ isSignal: true, alias: "isSelected", required: false }] }], showPinButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPinButton", required: false }] }], customClasses: [{ type: i0.Input, args: [{ isSignal: true, alias: "customClasses", required: false }] }], onWidgetClick: [{ type: i0.Output, args: ["onWidgetClick"] }], onPinClick: [{ type: i0.Output, args: ["onPinClick"] }] } });
5802
-
5803
5679
  //#region ---- Component ----
5804
5680
  /**
5805
5681
  * Compact widget field configurator component
@@ -6026,6 +5902,151 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
6026
5902
  ], template: "<!-- Widget Selector & Info Container -->\n<div class=\"__widget-container\">\n <!-- Edit Mode: Show Select Box -->\n @if (isEditMode()) {\n <div class=\"__widget-selector\">\n <ax-select-box [(ngModel)]=\"selectedWidgetType\" [dataSource]=\"availableWidgets()\"\n [placeholder]=\"('@general:actions.select.title' | translate | async) ?? ''\" [readonly]=\"readonly()\"\n (onValueChanged)=\"onWidgetTypeChange($event)\" valueField=\"value\" textField=\"text\" [itemTemplate]=\"itemTemplate\"\n [selectedTemplate]=\"selectedTemplate\">\n <ax-search-box></ax-search-box>\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </div>\n }\n\n <!-- View Mode: Show Widget Info -->\n @if (!isEditMode()) {\n @if (selectedWidgetType() && currentWidgetConfig(); as config) {\n <div class=\"__widget-info\">\n <!-- Widget Header (Clickable to Edit) -->\n <div class=\"__widget-header\" [class.__editable]=\"!readonly()\" (click)=\"enterEditMode()\">\n <div>\n @if (config.icon) {\n <i [class]=\"config.icon\"></i>\n }\n <div>\n <span>\n {{ config.title }}\n </span>\n @if (config.description) {\n <p>\n {{ config.description }}\n </p>\n }\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"__action-buttons\" (click)=\"$event.stopPropagation()\">\n <!-- Configure Button -->\n @if (config.hasProperties) {\n <ax-button [disabled]=\"!canConfigure() || readonly()\"\n [title]=\"('@general:actions.configure.title' | translate | async) ?? ''\" look=\"blank\"\n [color]=\"isConfigured() ? 'primary' : 'default'\" size=\"sm\" (onClick)=\"openPropertyViewer()\">\n <ax-icon icon=\"fa-solid fa-cog\"></ax-icon>\n </ax-button>\n }\n <!-- Preview Button -->\n <ax-button [disabled]=\"!canPreview()\" [title]=\"('@general:actions.preview.title' | translate | async) ?? ''\"\n look=\"blank\" size=\"sm\" (onClick)=\"openPreview()\">\n <ax-icon icon=\"fa-solid fa-eye\"></ax-icon>\n </ax-button>\n </div>\n </div>\n\n <!-- No Configuration Needed State -->\n @if (!config.hasProperties) {\n <axp-state-message mode=\"info\" icon=\"fa-solid fa-info-circle\"\n [description]=\"'@general:widgets.widget-configurator.no-configuration-needed'\" variant=\"compact\">\n </axp-state-message>\n }\n </div>\n } @else {\n <!-- Empty State (Clickable to Edit) -->\n <div class=\"__widget-empty\" [class.__editable]=\"!readonly()\" (click)=\"enterEditMode()\">\n <i class=\"fa-solid fa-puzzle-piece\"></i>\n <span>\n {{ ('@general:widgets.widget-configurator.select-widget-type' | translate | async) ?? 'Select a widget type' }}\n </span>\n </div>\n }\n }\n\n <!-- Widget Item Template (Dropdown Items) -->\n <ng-template #itemTemplate let-context>\n @let item = context.data;\n <div class=\"__item-template ax-flex ax-w-full ax-items-center ax-gap-3 ax-p-2\">\n @if (item.icon) {\n <i [class]=\"item.icon + ' ax-text-base ax-w-5 ax-text-center'\"></i>\n }\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-flex-1 ax-min-w-0\">\n <div class=\"ax-text-sm ax-font-medium\">\n {{ item.text }}\n </div>\n @if (item.description) {\n <div class=\"ax-text-xs ax-text-neutral-600\">\n {{ item.description }}\n </div>\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Widget Selected Template (Selected Value Display) -->\n <ng-template #selectedTemplate let-item>\n <div class=\"__selected-template\">\n @if (item?.data?.icon) {\n <i [class]=\"item.data.icon\"></i>\n }\n <span>\n {{ item?.data?.text }}\n </span>\n </div>\n </ng-template>\n</div>", styles: ["axp-widget-field-configurator{display:flex;flex-direction:column}axp-widget-field-configurator .__widget-container{border-radius:.375rem;border-width:1px;padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition:all .2s ease}axp-widget-field-configurator .__widget-selector{display:flex;flex-direction:column}axp-widget-field-configurator .__widget-selector ax-select-box{width:100%}axp-widget-field-configurator .__widget-info{display:flex;flex-direction:column;gap:.75rem}axp-widget-field-configurator .__widget-info .__widget-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.375rem .5rem}axp-widget-field-configurator .__widget-info .__widget-header.__editable{cursor:pointer}axp-widget-field-configurator .__widget-info .__widget-header.__editable:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}axp-widget-field-configurator .__widget-info .__widget-header:not(.__editable){cursor:not-allowed}axp-widget-field-configurator .__widget-info .__widget-header>div:first-child{display:flex;flex:1 1 0%;align-items:center;gap:.5rem}axp-widget-field-configurator .__widget-info .__widget-header>div:first-child i{font-size:1rem;line-height:1.5rem;flex-shrink:0}axp-widget-field-configurator .__widget-info .__widget-header>div:first-child>div{display:flex;flex:1 1 0%;flex-direction:column;gap:.125rem}axp-widget-field-configurator .__widget-info .__widget-header>div:first-child>div>span{font-size:.875rem;line-height:1.25rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}axp-widget-field-configurator .__widget-info .__widget-header>div:first-child>div>p{margin:0;font-size:.75rem;line-height:1rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axp-widget-field-configurator .__widget-info .__description{line-height:1.5}axp-widget-field-configurator .__widget-info .__action-buttons{display:flex;align-items:center;gap:.25rem;flex-shrink:0}axp-widget-field-configurator .__widget-empty{display:flex;align-items:center;gap:.5rem;padding:.5rem}axp-widget-field-configurator .__widget-empty.__editable{cursor:pointer}axp-widget-field-configurator .__widget-empty.__editable:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}axp-widget-field-configurator .__widget-empty:not(.__editable){cursor:not-allowed}axp-widget-field-configurator .__widget-empty>i{font-size:1rem;line-height:1.5rem;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}axp-widget-field-configurator .__widget-empty>span{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axp-widget-field-configurator .__item-template>i{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}axp-widget-field-configurator .__item-template>div>div:first-child{flex-shrink:0}axp-widget-field-configurator .__item-template>div>div:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}axp-widget-field-configurator .__selected-template{display:flex;align-items:center;gap:.5rem}axp-widget-field-configurator .__selected-template>i{font-size:.875rem;line-height:1.25rem}axp-widget-field-configurator .__selected-template>span{font-size:.875rem;line-height:1.25rem;font-weight:500}axp-widget-field-configurator :host([readonly]){pointer-events:none;opacity:.7}\n"] }]
6027
5903
  }], ctorParameters: () => [], propDecorators: { widget: [{ type: i0.Input, args: [{ isSignal: true, alias: "widget", required: false }] }, { type: i0.Output, args: ["widgetChange"] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], fieldName: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldName", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }] } });
6028
5904
 
5905
+ /**
5906
+ * Generic widget item component for displaying selectable widgets with icons, titles, and descriptions.
5907
+ * Can be used across different modules for consistent widget display and interaction.
5908
+ */
5909
+ class AXPWidgetItemComponent {
5910
+ constructor() {
5911
+ // Inputs
5912
+ /** The widget data to display */
5913
+ this.widget = input.required(...(ngDevMode ? [{ debugName: "widget" }] : []));
5914
+ /** Whether this widget is currently selected */
5915
+ this.isSelected = input(false, ...(ngDevMode ? [{ debugName: "isSelected" }] : []));
5916
+ /** Whether to show the pin button */
5917
+ this.showPinButton = input(true, ...(ngDevMode ? [{ debugName: "showPinButton" }] : []));
5918
+ /** Custom CSS classes to apply to the widget item */
5919
+ this.customClasses = input('', ...(ngDevMode ? [{ debugName: "customClasses" }] : []));
5920
+ // Outputs
5921
+ /** Emitted when the widget item is clicked */
5922
+ this.onWidgetClick = output();
5923
+ /** Emitted when the pin button is clicked */
5924
+ this.onPinClick = output();
5925
+ }
5926
+ /**
5927
+ * Handle widget item click event
5928
+ */
5929
+ handleClick(event) {
5930
+ this.onWidgetClick.emit({
5931
+ event,
5932
+ widget: this.widget()
5933
+ });
5934
+ }
5935
+ /**
5936
+ * Handle pin button click event
5937
+ */
5938
+ handlePinClick(event) {
5939
+ event.stopPropagation(); // Prevent widget click event
5940
+ this.onPinClick.emit({
5941
+ event,
5942
+ widget: this.widget()
5943
+ });
5944
+ }
5945
+ /**
5946
+ * Get the effective icon to display
5947
+ */
5948
+ getIconClass() {
5949
+ return this.widget().icon || 'fa-light fa-document';
5950
+ }
5951
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5952
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPWidgetItemComponent, isStandalone: true, selector: "axp-widget-item", inputs: { widget: { classPropertyName: "widget", publicName: "widget", isSignal: true, isRequired: true, transformFunction: null }, isSelected: { classPropertyName: "isSelected", publicName: "isSelected", isSignal: true, isRequired: false, transformFunction: null }, showPinButton: { classPropertyName: "showPinButton", publicName: "showPinButton", isSignal: true, isRequired: false, transformFunction: null }, customClasses: { classPropertyName: "customClasses", publicName: "customClasses", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onWidgetClick: "onWidgetClick", onPinClick: "onPinClick" }, ngImport: i0, template: "<div (click)=\"handleClick($event)\"\n class=\"ax-py-2 ax-px-3 ax-rounded-md ax-flex ax-gap-3 ax-items-center ax-group hover:ax-bg-primary-lightest/65 hover:ax-text-primary-on-lightest ax-cursor-pointer ax-w-full\"\n [class.ax-bg-primary-lightest]=\"isSelected()\" [class.ax-text-primary-on-lightest]=\"isSelected()\"\n [class.ax-border-primary-lightest]=\"isSelected()\" [class]=\"customClasses()\">\n\n <!-- Widget Icon -->\n <div class=\"ax-min-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-rounded-md ax-border group-hover:ax-bg-primary-lighter group-hover:ax-text-primary-on-lighter group-hover:ax-border-primary-lighter\"\n [class.ax-bg-primary-light]=\"isSelected()\" [class.ax-text-primary-on-light]=\"isSelected()\"\n [class.ax-border-primary-light]=\"isSelected()\" [class.ax-surface]=\"!isSelected()\">\n <i [ngClass]=\"getIconClass()\" class=\"ax-text-lg\"></i>\n </div>\n\n <!-- Widget Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-w-[70%]\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <!-- Widget Title -->\n <div class=\"ax-font-semibold ax-text-sm ax-truncate\" [title]=\"widget().title\">\n {{ widget().title }}\n </div>\n\n <!-- Pin Button -->\n @if (showPinButton()) {\n <div (click)=\"handlePinClick($event)\" class=\"ax-cursor-pointer\">\n @if (widget().isPinned) {\n <i class=\"fa-solid fa-thumbtack ax-text-sm ax-rotate-45\" title=\"Unpin\"></i>\n } @else {\n <i class=\"fa-light fa-thumbtack ax-text-sm ax-rotate-45 ax-invisible group-hover:ax-visible\"\n title=\"Pin\"></i>\n }\n </div>\n }\n </div>\n\n <!-- Widget Description -->\n @if (widget().description) {\n <span class=\"ax-text-xs ax-truncate\" [title]=\"widget().description\">\n {{ widget().description }}\n </span>\n }\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None }); }
5953
+ }
5954
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetItemComponent, decorators: [{
5955
+ type: Component,
5956
+ args: [{ selector: 'axp-widget-item', imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div (click)=\"handleClick($event)\"\n class=\"ax-py-2 ax-px-3 ax-rounded-md ax-flex ax-gap-3 ax-items-center ax-group hover:ax-bg-primary-lightest/65 hover:ax-text-primary-on-lightest ax-cursor-pointer ax-w-full\"\n [class.ax-bg-primary-lightest]=\"isSelected()\" [class.ax-text-primary-on-lightest]=\"isSelected()\"\n [class.ax-border-primary-lightest]=\"isSelected()\" [class]=\"customClasses()\">\n\n <!-- Widget Icon -->\n <div class=\"ax-min-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-rounded-md ax-border group-hover:ax-bg-primary-lighter group-hover:ax-text-primary-on-lighter group-hover:ax-border-primary-lighter\"\n [class.ax-bg-primary-light]=\"isSelected()\" [class.ax-text-primary-on-light]=\"isSelected()\"\n [class.ax-border-primary-light]=\"isSelected()\" [class.ax-surface]=\"!isSelected()\">\n <i [ngClass]=\"getIconClass()\" class=\"ax-text-lg\"></i>\n </div>\n\n <!-- Widget Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-w-[70%]\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <!-- Widget Title -->\n <div class=\"ax-font-semibold ax-text-sm ax-truncate\" [title]=\"widget().title\">\n {{ widget().title }}\n </div>\n\n <!-- Pin Button -->\n @if (showPinButton()) {\n <div (click)=\"handlePinClick($event)\" class=\"ax-cursor-pointer\">\n @if (widget().isPinned) {\n <i class=\"fa-solid fa-thumbtack ax-text-sm ax-rotate-45\" title=\"Unpin\"></i>\n } @else {\n <i class=\"fa-light fa-thumbtack ax-text-sm ax-rotate-45 ax-invisible group-hover:ax-visible\"\n title=\"Pin\"></i>\n }\n </div>\n }\n </div>\n\n <!-- Widget Description -->\n @if (widget().description) {\n <span class=\"ax-text-xs ax-truncate\" [title]=\"widget().description\">\n {{ widget().description }}\n </span>\n }\n </div>\n</div>" }]
5957
+ }], propDecorators: { widget: [{ type: i0.Input, args: [{ isSignal: true, alias: "widget", required: true }] }], isSelected: [{ type: i0.Input, args: [{ isSignal: true, alias: "isSelected", required: false }] }], showPinButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPinButton", required: false }] }], customClasses: [{ type: i0.Input, args: [{ isSignal: true, alias: "customClasses", required: false }] }], onWidgetClick: [{ type: i0.Output, args: ["onWidgetClick"] }], onPinClick: [{ type: i0.Output, args: ["onPinClick"] }] } });
5958
+
5959
+ class AXPWidgetPropertyViewerPopupComponent extends AXBasePageComponent {
5960
+ constructor() {
5961
+ super(...arguments);
5962
+ //#region ---- Inputs ----
5963
+ this.widget = input.required(...(ngDevMode ? [{ debugName: "widget" }] : []));
5964
+ this.mode = input('simple', ...(ngDevMode ? [{ debugName: "mode" }] : []));
5965
+ //#endregion
5966
+ //#region ---- Properties ----
5967
+ this.currentValues = signal({}, ...(ngDevMode ? [{ debugName: "currentValues" }] : []));
5968
+ }
5969
+ //#endregion
5970
+ //#region ---- Event Handlers ----
5971
+ handlePropertyChanged(event) {
5972
+ this.currentValues.set(event.values);
5973
+ }
5974
+ handleCloseClick() {
5975
+ this.close();
5976
+ }
5977
+ handleApplyClick() {
5978
+ this.close({
5979
+ values: this.currentValues(),
5980
+ mode: 'update'
5981
+ });
5982
+ }
5983
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetPropertyViewerPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5984
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.12", type: AXPWidgetPropertyViewerPopupComponent, isStandalone: true, selector: "axp-widget-property-viewer-popup", inputs: { widget: { classPropertyName: "widget", publicName: "widget", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
5985
+ <div class="ax-flex ax-flex-col ax-h-full ax-overflow-hidden">
5986
+ <axp-widget-property-viewer
5987
+ [widget]="widget()"
5988
+ [mode]="mode()"
5989
+ (onChanged)="handlePropertyChanged($event)">
5990
+ </axp-widget-property-viewer>
5991
+ </div>
5992
+
5993
+ <ax-footer>
5994
+ <ax-suffix>
5995
+ <ax-button
5996
+ look="solid"
5997
+ [text]="'@general:actions.close.title' | translate | async"
5998
+ (onClick)="handleCloseClick()">
5999
+ </ax-button>
6000
+ <ax-button
6001
+ look="solid"
6002
+ color="primary"
6003
+ [text]="'@general:actions.apply.title' | translate | async"
6004
+ (onClick)="handleApplyClick()">
6005
+ </ax-button>
6006
+ </ax-suffix>
6007
+ </ax-footer>
6008
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5$2.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: i2$1.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: AXTranslationModule }, { kind: "component", type: AXPWidgetPropertyViewerComponent, selector: "axp-widget-property-viewer", inputs: ["widget", "mode"], outputs: ["onChanged"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6009
+ }
6010
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetPropertyViewerPopupComponent, decorators: [{
6011
+ type: Component,
6012
+ args: [{
6013
+ selector: 'axp-widget-property-viewer-popup',
6014
+ template: `
6015
+ <div class="ax-flex ax-flex-col ax-h-full ax-overflow-hidden">
6016
+ <axp-widget-property-viewer
6017
+ [widget]="widget()"
6018
+ [mode]="mode()"
6019
+ (onChanged)="handlePropertyChanged($event)">
6020
+ </axp-widget-property-viewer>
6021
+ </div>
6022
+
6023
+ <ax-footer>
6024
+ <ax-suffix>
6025
+ <ax-button
6026
+ look="solid"
6027
+ [text]="'@general:actions.close.title' | translate | async"
6028
+ (onClick)="handleCloseClick()">
6029
+ </ax-button>
6030
+ <ax-button
6031
+ look="solid"
6032
+ color="primary"
6033
+ [text]="'@general:actions.apply.title' | translate | async"
6034
+ (onClick)="handleApplyClick()">
6035
+ </ax-button>
6036
+ </ax-suffix>
6037
+ </ax-footer>
6038
+ `,
6039
+ changeDetection: ChangeDetectionStrategy.OnPush,
6040
+ imports: [
6041
+ CommonModule,
6042
+ AXButtonModule,
6043
+ AXDecoratorModule,
6044
+ AXTranslationModule,
6045
+ AXPWidgetPropertyViewerComponent
6046
+ ],
6047
+ }]
6048
+ }], propDecorators: { widget: [{ type: i0.Input, args: [{ isSignal: true, alias: "widget", required: true }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }] } });
6049
+
6029
6050
  /**
6030
6051
  * Generated bundle index. Do not edit.
6031
6052
  */