@acorex-platform/framework-client 0.0.57 → 0.0.59

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 (54) hide show
  1. package/fesm2022/acorex-platform-framework-client-common.mjs +31 -33
  2. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-framework-client-core.mjs +157 -2
  4. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +55 -19
  6. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
  7. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CyZpdazq.mjs} +6 -6
  8. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs.map → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CyZpdazq.mjs.map} +1 -1
  9. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +639 -212
  10. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +34 -18
  12. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
  13. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Cmzwhmjw.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BBuYugjl.mjs} +312 -160
  14. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BBuYugjl.mjs.map +1 -0
  15. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-K9HAtqL6.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-DZDf_nVq.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-K9HAtqL6.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-DZDf_nVq.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-BZECKfez.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-CFFv3jDs.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-BZECKfez.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-CFFv3jDs.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BuDpC58x.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-BDNPJg_6.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BuDpC58x.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-BDNPJg_6.mjs.map} +1 -1
  21. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  22. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +59 -3
  23. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  24. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-D5pndfBW.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-Rv0K9r_e.mjs} +226 -137
  25. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-Rv0K9r_e.mjs.map +1 -0
  26. package/fesm2022/{acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs → acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-DqJIiEyu.mjs} +9 -3
  27. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-DqJIiEyu.mjs.map +1 -0
  28. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BFgrSnfT.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Dzqn3rGa.mjs} +2 -2
  29. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BFgrSnfT.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Dzqn3rGa.mjs.map} +1 -1
  30. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Ctjz1PjP.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-C97rrrmu.mjs} +2 -2
  31. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Ctjz1PjP.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-C97rrrmu.mjs.map} +1 -1
  32. package/fesm2022/{acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-B_OM0T7i.mjs → acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-C-r7txgg.mjs} +21 -17
  33. package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-C-r7txgg.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
  35. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +1 -1
  36. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  37. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +48 -9
  38. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  39. package/fesm2022/acorex-platform-framework-client-workflow.mjs +47 -1
  40. package/fesm2022/acorex-platform-framework-client-workflow.mjs.map +1 -1
  41. package/package.json +2 -2
  42. package/types/acorex-platform-framework-client-common.d.ts +2 -3
  43. package/types/acorex-platform-framework-client-core.d.ts +67 -2
  44. package/types/acorex-platform-framework-client-layout-builder.d.ts +4 -3
  45. package/types/acorex-platform-framework-client-layout-components.d.ts +119 -7
  46. package/types/acorex-platform-framework-client-layout-designer.d.ts +2 -0
  47. package/types/acorex-platform-framework-client-layout-entity.d.ts +33 -9
  48. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +14 -1
  49. package/types/acorex-platform-framework-client-layout-widgets.d.ts +6 -0
  50. package/types/acorex-platform-framework-client-workflow.d.ts +29 -2
  51. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Cmzwhmjw.mjs.map +0 -1
  52. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-D5pndfBW.mjs.map +0 -1
  53. package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs.map +0 -1
  54. package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-B_OM0T7i.mjs.map +0 -1
@@ -15,6 +15,7 @@ import { AXPopupService } from '@acorex/components/popup';
15
15
  import { AXToastService } from '@acorex/components/toast';
16
16
  import { AXFileService } from '@acorex/core/file';
17
17
  import { AXPWidgetsCatalog, AXPPlatformScope, AXPKeyboardShortcutPriority } from '@acorex-platform/framework-shared/core';
18
+ import { AXPDialogOpener } from '@acorex-platform/framework-client/layout/builder';
18
19
  import { AXPBroadcastEventService, AXPDataGenerator, AXPHookService, AXPKeyboardShortcutRegistry, chordToKbdItemKeys, AXPLogoComponent } from '@acorex-platform/framework-client/core';
19
20
  import { isEqual, cloneDeep, assign, sortBy, get, set, isNil, isEmpty, orderBy, castArray, uniqBy, merge } from 'lodash-es';
20
21
  import { Subject, distinctUntilChanged, filter, debounceTime, first, merge as merge$1 } from 'rxjs';
@@ -529,25 +530,36 @@ function designerSurfaceHasDrawer(profile, drawer) {
529
530
  class AXPWidgetPickerService {
530
531
  constructor() {
531
532
  this.popupService = inject(AXPopupService);
533
+ this.dialogOpener = inject(AXPDialogOpener);
532
534
  this.widgetRegistryService = inject(AXPWidgetRegistryService);
533
535
  this.translationService = inject(AXTranslationService);
534
536
  }
535
537
  async showPicker(options) {
536
- const com = await Promise.resolve().then(function () { return widgetPicker_component; }).then((c) => c.AXPDesignerWidgetPickerComponent);
537
538
  const widgets = this.widgetRegistryService.all();
538
539
  const filteredWidgets = widgets.filter((widget) => this.matchesPickerOptions(widget, options));
539
- //
540
- const result = await this.popupService.open(com, {
541
- title: await this.translationService.translateAsync('@form-template-management:designer.components.widget-picker.title'),
542
- size: 'md',
543
- closeButton: true,
540
+ let title = '';
541
+ const result = await this.dialogOpener.openPopup({
542
+ load: () => Promise.resolve().then(function () { return widgetPicker_component; }).then((c) => c.AXPDesignerWidgetPickerComponent),
544
543
  data: {
545
- widgets: sortBy(filteredWidgets, (c) => c.title),
546
544
  tabPersistenceContext: options.tabPersistenceContext,
545
+ groups: options.groups ?? null,
546
+ profileId: options.profile?.id ?? null,
547
+ },
548
+ prepare: async () => {
549
+ title = await this.translationService.translateAsync('@form-template-management:designer.components.widget-picker.title');
547
550
  },
551
+ show: (component) => this.popupService.open(component, {
552
+ title,
553
+ size: 'md',
554
+ closeButton: true,
555
+ data: {
556
+ widgets: sortBy(filteredWidgets, (c) => c.title),
557
+ tabPersistenceContext: options.tabPersistenceContext,
558
+ },
559
+ }),
548
560
  });
549
561
  //
550
- const selectedWidgets = (result.data?.widgets ?? []);
562
+ const selectedWidgets = (result?.data?.widgets ?? []);
551
563
  return selectedWidgets.map((c) => ({
552
564
  type: c.name,
553
565
  options: c.options,
@@ -674,6 +686,7 @@ class AXPDesignerService {
674
686
  #ef;
675
687
  constructor() {
676
688
  this.popupService = inject(AXPopupService);
689
+ this.dialogOpener = inject(AXPDialogOpener);
677
690
  this.toastService = inject(AXToastService);
678
691
  this.fileService = inject(AXFileService);
679
692
  this.loadingService = inject(AXLoadingDialogService);
@@ -1476,14 +1489,17 @@ class AXPDesignerService {
1476
1489
  }
1477
1490
  async openPreviewDialog() {
1478
1491
  this.updatePreview();
1479
- const com = await Promise.resolve().then(function () { return preview_component; }).then((c) => c.AXPLayoutDesignerPreviewComponent);
1480
- await this.popupService.open(com, {
1481
- header: false,
1482
- size: 'full',
1483
- data: {
1484
- initialSize: this.size(),
1485
- isDialogWindow: true,
1486
- },
1492
+ await this.dialogOpener.openPopup({
1493
+ load: () => Promise.resolve().then(function () { return preview_component; }).then((c) => c.AXPLayoutDesignerPreviewComponent),
1494
+ data: { templateId: this.templateId() ?? null },
1495
+ show: (component) => this.popupService.open(component, {
1496
+ header: false,
1497
+ size: 'full',
1498
+ data: {
1499
+ initialSize: this.size(),
1500
+ isDialogWindow: true,
1501
+ },
1502
+ }),
1487
1503
  });
1488
1504
  }
1489
1505
  openPreviewWindow() {
@@ -3496,7 +3512,7 @@ class AXPLayoutDesignerComponent {
3496
3512
  }));
3497
3513
  },
3498
3514
  },
3499
- ], viewQueries: [{ propertyName: "propertyViewer", first: true, predicate: AXPWidgetPropertyViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<ax-drawer-container class=\"h-full w-full flex relative overflow-hidden\">\n <ax-content class=\"contents\">\n <!-- Toolbar Side -->\n <div\n class=\"ax-dark min-w-10 lightest-surface border-e ax-sm flex flex-col items-center\"\n >\n <div class=\"min-w-10 h-10 flex items-center justify-center border-b\">\n <axp-logo logoKey=\"platform\" appearance=\"onDark\" format=\"icon\" [size]=\"24\"></axp-logo>\n </div>\n <div class=\"py-1\"></div>\n <div class=\"flex flex-col gap-2\">\n <!-- ----- Palette opens the widget picker when the surface has no dedicated drawer ----- -->\n @if (hasPaletteDrawer()) {\n <ax-button\n look=\"blank\"\n (onClick)=\"service.showPicker()\"\n [title]=\"('@layout-designer:components.palette.title' | translate | async) ?? ''\"\n >\n <ax-icon class=\"fa-solid fa-puzzle text-sm\"> </ax-icon>\n </ax-button>\n }\n <!-- ----- Pages drawer toggle ----- -->\n @if (hasPagesDrawer()) {\n <ax-button\n look=\"blank\"\n (onClick)=\"pages.toggle()\"\n [title]=\"('@layout-designer:components.pages.title' | translate | async) ?? ''\"\n >\n <ax-icon class=\"fa-solid fa-page text-sm\"> </ax-icon>\n </ax-button>\n }\n <!-- ----- Data sources drawer toggle ----- -->\n @if (hasDataSourcesDrawer()) {\n <ax-button\n look=\"blank\"\n (onClick)=\"datasources.toggle()\"\n [title]=\"('@layout-designer:components.data-sources.title' | translate | async) ?? ''\"\n >\n <ax-icon class=\"fa-solid fa-database text-sm\"> </ax-icon>\n </ax-button>\n }\n <!-- ----- Outline drawer toggle ----- -->\n @if (hasOutlineDrawer()) {\n <ax-button\n look=\"blank\"\n (onClick)=\"outline.toggle()\"\n [title]=\"('@layout-designer:components.outline.title' | translate | async) ?? ''\"\n >\n <ax-icon class=\"fa-solid fa-list-tree text-sm\"> </ax-icon>\n </ax-button>\n }\n <!-- ----- History drawer toggle ----- -->\n @if (hasHistoryDrawer()) {\n <ax-button\n look=\"blank\"\n (onClick)=\"history.toggle()\"\n [title]=\"('@layout-designer:components.history.title' | translate | async) ?? ''\"\n >\n <ax-icon class=\"fa-solid fa-clock-rotate-left text-sm\"> </ax-icon>\n </ax-button>\n }\n </div>\n </div>\n <!-- Main Side -->\n <div class=\"col-span-10 flex flex-col flex-1\">\n <!-- Header Toolbar -->\n <div class=\"ax-dark h-10 lightest-surface border-b flex justify-between px-2\">\n <div class=\"flex flex-1 items-center justify-start text-on-lightest\">\n <axp-designer-header-menu></axp-designer-header-menu>\n </div>\n <div\n class=\"flex flex-1 flex-row gap-2 ax-sm items-center justify-center\"\n >\n <axp-designer-view-sizes\n [(size)]=\"service.size\"\n ></axp-designer-view-sizes>\n </div>\n <div class=\"flex flex-1 flex-row gap-2 ax-sm items-center justify-end\">\n <ax-dropdown-button\n mode=\"split\"\n look=\"solid\"\n [text]=\"('@layout-designer:keyboard-shortcuts.preview' | translate | async) ?? ''\"\n class=\"ax-sm\"\n (onClick)=\"service.openPreviewDialog()\"\n >\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('@layout-designer:keyboard-shortcuts.preview-window' | translate | async) ?? ''\"\n (onClick)=\"service.openPreviewWindow()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-window-restore\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </div>\n </div>\n <!-- Board -->\n <ax-drawer-container class=\"w-full flex-1\">\n <!-- ----- Pages drawer (rail button is profile-gated; panel stays mounted for #pages) ----- -->\n <ax-drawer\n #pages\n location=\"start\"\n mode=\"push\"\n class=\"ax-dark lightest-surface\"\n >\n <ax-content>\n <axp-designer-pages></axp-designer-pages>\n </ax-content>\n </ax-drawer>\n <!-- ----- Data sources drawer ----- -->\n <ax-drawer\n #datasources\n location=\"start\"\n mode=\"push\"\n class=\"ax-dark lightest-surface\"\n >\n <ax-content>\n <axp-designer-data-sources></axp-designer-data-sources>\n </ax-content>\n </ax-drawer>\n <!-- ----- Outline drawer ----- -->\n <ax-drawer\n #outline\n location=\"start\"\n mode=\"push\"\n class=\"ax-dark lightest-surface\"\n >\n <ax-content>\n <axp-designer-outline></axp-designer-outline>\n </ax-content>\n </ax-drawer>\n <!-- ----- History drawer ----- -->\n <ax-drawer\n #history\n location=\"start\"\n mode=\"push\"\n class=\"ax-dark lightest-surface\"\n >\n <ax-content>\n <axp-designer-history></axp-designer-history>\n </ax-content>\n </ax-drawer>\n <!-- Content of board -->\n <ax-content class=\"ax-light lighter-surface axp-designer-canvas flex h-full min-h-0 items-start justify-center overflow-auto p-10\">\n <axp-designer-board class=\"rounded-lg lightest-surface shadow-md\">\n </axp-designer-board>\n </ax-content>\n </ax-drawer-container>\n <!-- Footer -->\n <div class=\"ax-dark h-10 lightest-surface border-t flex items-center text-on-lightest\">\n <axp-designer-breadcrumbs class=\"border-default p-2 font-normal min-w-0 flex-1\">\n </axp-designer-breadcrumbs>\n <!-- ----- Hook-contributed actions at the footer end ----- -->\n @if (footerEndActions().length) {\n <div class=\"ms-auto flex items-center gap-1 pe-2\">\n @for (item of footerEndActions(); track item.id) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [title]=\"item.resolvedLabel ?? ''\"\n (onClick)=\"runFooterEndAction(item)\"\n >\n @if (item.iconClass) {\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n }\n </ax-button>\n }\n </div>\n }\n </div>\n </div>\n </ax-content>\n <!-- Property Side -->\n <ax-drawer\n class=\"ax-dark axp-designer-prop-side lightest-surface\"\n location=\"end\"\n mode=\"push\"\n [collapsed]=\"false\"\n #pd\n >\n <ax-content class=\"flex flex-col h-full overflow-hidden\">\n <div\n class=\"flex flex-row w-full justify-between px-4 border-b h-10 text-on-lightest\"\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <i [ngClass]=\"$safeNavigationMigration(nodeConfig()?.icon)\"></i>\n <span class=\"font-semibold\">{{\n $safeNavigationMigration(nodeConfig()?.title) | translate | async\n }}</span>\n </div>\n </div>\n <axp-widget-property-viewer\n [mode]=\"'advanced'\"\n [bindingExpressionEditorMode]=\"'popup'\"\n [widget]=\"service.selectedNode()!\"\n [layoutProfile]=\"layoutProfileContext()\"\n (onChanged)=\"service.applyPropertyPanelChange($event)\"\n (pointerdown)=\"service.armPropertyPanelHistory()\"\n (focusin)=\"service.armPropertyPanelHistory()\"\n class=\"flex-1 overflow-auto\"\n >\n </axp-widget-property-viewer>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>\n", styles: ["@layer properties;axp-layout-designer .axp-designer-board{display:block;min-height:100%;width:100%;overflow:auto;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding:calc(var(--spacing, .25rem) * 3);background-image:linear-gradient(45deg,rgb(var(--ax-sys-color-light-surface)) 25%,transparent 25%,transparent 75%,rgb(var(--ax-sys-color-light-surface)) 75%,rgb(var(--ax-sys-color-light-surface))),linear-gradient(45deg,rgb(var(--ax-sys-color-light-surface)) 25%,rgb(var(--ax-sys-color-lightest-surface)) 25% 75%,rgb(var(--ax-sys-color-light-surface)) 75%,rgb(var(--ax-sys-color-light-surface)));background-size:20px 20px;background-position:0 0,10px 10px}axp-layout-designer .axp-designer-board.axp-state-design .widget-outline,axp-layout-designer .axp-designer-board.axp-state-design .ax-widget-outline{outline-style:var(--tw-outline-style);outline-width:1px;outline-offset:2px;outline-color:rgba(var(--ax-sys-color-border-light-surface));--tw-outline-style: dashed;outline-style:dashed}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host{position:relative;cursor:pointer}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected{outline-width:1px;outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:1px;outline-color:rgba(var(--ax-sys-color-primary-400))}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected.widget-container,axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected.ax-widget-container{outline-offset:2px}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover{outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:rgba(var(--ax-sys-color-accent1-500));--tw-outline-style: dashed;outline-style:dashed}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.axp-state-selected{outline-color:rgba(var(--ax-sys-color-primary-400))}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.widget-container,axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.ax-widget-container{outline-offset:4px}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host .axp-widget-overlay{position:absolute;inset:0;z-index:2000;height:100%;width:100%}axp-layout-designer .axp-designer-board .axp-empty-space{display:flex;flex:1;cursor:default;align-items:center;justify-content:center;background-color:color-mix(in srgb,rgba(var(--ax-sys-color-primary-300)) 10%,transparent);background-image:linear-gradient(135deg,color-mix(in srgb,rgba(var(--ax-sys-color-primary-300)) 50%,transparent) 10%,transparent 0,transparent 50%,color-mix(in srgb,rgba(var(--ax-sys-color-primary-300)) 50%,transparent) 0,color-mix(in srgb,rgba(var(--ax-sys-color-primary-300)) 50%,transparent) 60%,transparent 0,transparent);background-size:7.5px 7.5px;height:100%}@supports (color: color-mix(in lab,red,red)){axp-layout-designer .axp-designer-board .axp-empty-space{background-color:color-mix(in srgb,var(--color-primary-300) 10%,transparent)}}@supports (color: color-mix(in lab,red,red)){axp-layout-designer .axp-designer-board .axp-empty-space{background-image:linear-gradient(135deg,color-mix(in srgb,var(--color-primary-300) 50%,transparent) 10%,transparent 0,transparent 50%,color-mix(in srgb,var(--color-primary-300) 50%,transparent) 0,color-mix(in srgb,var(--color-primary-300) 50%,transparent) 60%,transparent 0,transparent)}}axp-layout-designer .axp-designer-board .axp-page-widget-header,axp-layout-designer .axp-designer-board .axp-page-widget-footer{filter:grayscale(100%);opacity:.5}:is(axp-layout-designer .axp-designer-board .axp-page-widget-header,axp-layout-designer .axp-designer-board .axp-page-widget-footer):hover{filter:grayscale(0);opacity:1}axp-layout-designer .axp-designer-board .axp-page-widget-header{margin-bottom:calc(var(--spacing, .25rem) * 2)}axp-layout-designer .axp-designer-board .axp-page-widget-footer{margin-top:calc(var(--spacing, .25rem) * 2)}axp-layout-designer .axp-designer-prop-side{width:calc(var(--spacing, .25rem) * 80);border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}axp-designer-drawer-content ul.axp-designer-drawer-list{padding:var(--spacing, .25rem);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-on-lightest-surface))}:where(axp-designer-drawer-content ul.axp-designer-drawer-list>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(var(--spacing, .25rem) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing, .25rem) * calc(1 - var(--tw-space-y-reverse)))}axp-designer-drawer-content ul.axp-designer-drawer-list li{cursor:pointer;border-radius:var(--radius-sm, .25rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .15s;transition-duration:.15s;--tw-ease: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1));transition-timing-function:var(--ease-in-out, cubic-bezier(.4, 0, .2, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li:hover:not(.axp-designer-drawer-list){background-color:var(--color-dark);color:var(--color-on-dark);border-color:var(--color-border-dark)}axp-designer-drawer-content ul.axp-designer-drawer-list li.state-selected{background-color:var(--color-darker);color:var(--color-on-darker);border-color:var(--color-border-darker)}axp-designer-drawer-content .axp-designer-drawer-empty{display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 4);color:rgba(var(--ax-sys-color-on-lightest-surface));opacity:70%}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-space-y-reverse{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-ease{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-outline-style: solid;--tw-border-style: solid;--tw-space-y-reverse: 0;--tw-duration: initial;--tw-ease: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: AXPDesignerBoardComponent, selector: "axp-designer-board" }, { kind: "component", type: AXPWidgetPropertyViewerComponent, selector: "axp-widget-property-viewer", inputs: ["widget", "mode", "layoutProfile", "bindingExpressionEditorMode"], outputs: ["onChanged"] }, { kind: "component", type: AXPDesignerBreadcrumbsComponent, selector: "axp-designer-breadcrumbs" }, { kind: "component", type: AXPDesignerOutlineComponent, selector: "axp-designer-outline" }, { kind: "component", type: AXPDesignerHeaderMenuComponent, selector: "axp-designer-header-menu" }, { kind: "component", type: AXPDesignerHistoryComponent, selector: "axp-designer-history" }, { kind: "component", type: AXPDesignerDataSourcesComponent, selector: "axp-designer-data-sources" }, { kind: "component", type: AXPDesignerPagesComponent, selector: "axp-designer-pages" }, { kind: "component", type: AXPDesignerViewSizeToolbarComponent, selector: "axp-designer-view-sizes", inputs: ["size"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "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", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3$1.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1.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: AXMenuModule }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i5$1.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "text", "selected", "color", "look", "type", "mode", "iconOnly"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
3515
+ ], viewQueries: [{ propertyName: "propertyViewer", first: true, predicate: AXPWidgetPropertyViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<ax-drawer-container class=\"h-full w-full flex relative overflow-hidden\">\n <ax-content class=\"contents\">\n <!-- Toolbar Side -->\n <div\n class=\"ax-dark min-w-10 lightest-surface border-e ax-sm flex flex-col items-center\"\n >\n <div class=\"min-w-10 h-10 flex items-center justify-center border-b\">\n <axp-logo logoKey=\"platform\" appearance=\"onDark\" format=\"icon\" [size]=\"24\"></axp-logo>\n </div>\n <div class=\"py-1\"></div>\n <div class=\"flex flex-col gap-2\">\n <!-- ----- Palette opens the widget picker when the surface has no dedicated drawer ----- -->\n @if (hasPaletteDrawer()) {\n <ax-button\n look=\"blank\"\n (onClick)=\"service.showPicker()\"\n [title]=\"('@layout-designer:components.palette.title' | translate | async) ?? ''\"\n >\n <ax-icon class=\"fa-solid fa-puzzle text-sm\"> </ax-icon>\n </ax-button>\n }\n <!-- ----- Pages drawer toggle ----- -->\n @if (hasPagesDrawer()) {\n <ax-button\n look=\"blank\"\n (onClick)=\"pages.toggle()\"\n [title]=\"('@layout-designer:components.pages.title' | translate | async) ?? ''\"\n >\n <ax-icon class=\"fa-solid fa-page text-sm\"> </ax-icon>\n </ax-button>\n }\n <!-- ----- Data sources drawer toggle ----- -->\n @if (hasDataSourcesDrawer()) {\n <ax-button\n look=\"blank\"\n (onClick)=\"datasources.toggle()\"\n [title]=\"('@layout-designer:components.data-sources.title' | translate | async) ?? ''\"\n >\n <ax-icon class=\"fa-solid fa-database text-sm\"> </ax-icon>\n </ax-button>\n }\n <!-- ----- Outline drawer toggle ----- -->\n @if (hasOutlineDrawer()) {\n <ax-button\n look=\"blank\"\n (onClick)=\"outline.toggle()\"\n [title]=\"('@layout-designer:components.outline.title' | translate | async) ?? ''\"\n >\n <ax-icon class=\"fa-solid fa-list-tree text-sm\"> </ax-icon>\n </ax-button>\n }\n <!-- ----- History drawer toggle ----- -->\n @if (hasHistoryDrawer()) {\n <ax-button\n look=\"blank\"\n (onClick)=\"history.toggle()\"\n [title]=\"('@layout-designer:components.history.title' | translate | async) ?? ''\"\n >\n <ax-icon class=\"fa-solid fa-clock-rotate-left text-sm\"> </ax-icon>\n </ax-button>\n }\n </div>\n </div>\n <!-- Main Side -->\n <div class=\"col-span-10 flex flex-col flex-1\">\n <!-- Header Toolbar -->\n <div class=\"ax-dark h-10 lightest-surface border-b flex justify-between px-2\">\n <div class=\"flex flex-1 items-center justify-start text-on-lightest\">\n <axp-designer-header-menu></axp-designer-header-menu>\n </div>\n <div\n class=\"flex flex-1 flex-row gap-2 ax-sm items-center justify-center\"\n >\n <axp-designer-view-sizes\n [(size)]=\"service.size\"\n ></axp-designer-view-sizes>\n </div>\n <div class=\"flex flex-1 flex-row gap-2 ax-sm items-center justify-end\">\n <ax-dropdown-button\n mode=\"split\"\n look=\"solid\"\n [text]=\"('@layout-designer:keyboard-shortcuts.preview' | translate | async) ?? ''\"\n class=\"ax-sm\"\n (onClick)=\"service.openPreviewDialog()\"\n >\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('@layout-designer:keyboard-shortcuts.preview-window' | translate | async) ?? ''\"\n (onClick)=\"service.openPreviewWindow()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-window-restore\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </div>\n </div>\n <!-- Board -->\n <ax-drawer-container class=\"w-full flex-1\">\n <!-- ----- Pages drawer (rail button is profile-gated; panel stays mounted for #pages) ----- -->\n <ax-drawer\n #pages\n location=\"start\"\n mode=\"push\"\n class=\"ax-dark lightest-surface\"\n >\n <ax-content>\n <axp-designer-pages></axp-designer-pages>\n </ax-content>\n </ax-drawer>\n <!-- ----- Data sources drawer ----- -->\n <ax-drawer\n #datasources\n location=\"start\"\n mode=\"push\"\n class=\"ax-dark lightest-surface\"\n >\n <ax-content>\n <axp-designer-data-sources></axp-designer-data-sources>\n </ax-content>\n </ax-drawer>\n <!-- ----- Outline drawer ----- -->\n <ax-drawer\n #outline\n location=\"start\"\n mode=\"push\"\n class=\"ax-dark lightest-surface\"\n >\n <ax-content>\n <axp-designer-outline></axp-designer-outline>\n </ax-content>\n </ax-drawer>\n <!-- ----- History drawer ----- -->\n <ax-drawer\n #history\n location=\"start\"\n mode=\"push\"\n class=\"ax-dark lightest-surface\"\n >\n <ax-content>\n <axp-designer-history></axp-designer-history>\n </ax-content>\n </ax-drawer>\n <!-- Content of board -->\n <ax-content class=\"ax-light lighter-surface axp-designer-canvas flex h-full min-h-0 items-start justify-center overflow-auto p-10\">\n <axp-designer-board class=\"rounded-lg lightest-surface shadow-md\">\n </axp-designer-board>\n </ax-content>\n </ax-drawer-container>\n <!-- Footer -->\n <div class=\"ax-dark h-10 lightest-surface border-t flex items-center text-on-lightest\">\n <axp-designer-breadcrumbs class=\"border-default p-2 font-normal min-w-0 flex-1\">\n </axp-designer-breadcrumbs>\n <!-- ----- Hook-contributed actions at the footer end ----- -->\n @if (footerEndActions().length) {\n <div class=\"ms-auto flex items-center gap-1 pe-2\">\n @for (item of footerEndActions(); track item.id) {\n <ax-button\n class=\"ax-sm\"\n look=\"blank\"\n [iconOnly]=\"true\"\n [title]=\"item.resolvedLabel ?? ''\"\n (onClick)=\"runFooterEndAction(item)\"\n >\n @if (item.iconClass) {\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n }\n </ax-button>\n }\n </div>\n }\n </div>\n </div>\n </ax-content>\n <!-- Property Side -->\n <ax-drawer\n class=\"ax-dark axp-designer-prop-side lightest-surface\"\n location=\"end\"\n mode=\"push\"\n [collapsed]=\"false\"\n #pd\n >\n <ax-content class=\"flex flex-col h-full overflow-hidden\">\n <div\n class=\"flex flex-row w-full justify-between px-4 border-b h-10 text-on-lightest\"\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <i [ngClass]=\"$safeNavigationMigration(nodeConfig()?.icon)\"></i>\n <span class=\"font-semibold\">{{\n $safeNavigationMigration(nodeConfig()?.title) | translate | async\n }}</span>\n </div>\n </div>\n <axp-widget-property-viewer\n [mode]=\"'advanced'\"\n [bindingExpressionEditorMode]=\"'popup'\"\n [widget]=\"service.selectedNode()!\"\n [layoutProfile]=\"layoutProfileContext()\"\n (onChanged)=\"service.applyPropertyPanelChange($event)\"\n (pointerdown)=\"service.armPropertyPanelHistory()\"\n (focusin)=\"service.armPropertyPanelHistory()\"\n class=\"flex-1 overflow-auto\"\n >\n </axp-widget-property-viewer>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>\n", styles: ["@layer properties;axp-layout-designer .axp-designer-board{display:block;min-height:100%;width:100%;overflow:auto;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding:calc(var(--spacing, .25rem) * 3);background-image:linear-gradient(45deg,rgb(var(--ax-sys-color-light-surface)) 25%,transparent 25%,transparent 75%,rgb(var(--ax-sys-color-light-surface)) 75%,rgb(var(--ax-sys-color-light-surface))),linear-gradient(45deg,rgb(var(--ax-sys-color-light-surface)) 25%,rgb(var(--ax-sys-color-lightest-surface)) 25% 75%,rgb(var(--ax-sys-color-light-surface)) 75%,rgb(var(--ax-sys-color-light-surface)));background-size:20px 20px;background-position:0 0,10px 10px}axp-layout-designer .axp-designer-board.axp-state-design .widget-outline,axp-layout-designer .axp-designer-board.axp-state-design .ax-widget-outline{outline-style:var(--tw-outline-style);outline-width:1px;outline-offset:2px;outline-color:rgba(var(--ax-sys-color-border-light-surface));--tw-outline-style: dashed;outline-style:dashed}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host{position:relative;cursor:pointer}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected{outline-width:1px;outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:1px;outline-color:rgba(var(--ax-sys-color-primary-400))}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected.widget-container,axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected.ax-widget-container{outline-offset:2px}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover{outline-style:var(--tw-outline-style);outline-width:2px;outline-offset:2px;outline-color:rgba(var(--ax-sys-color-accent1-500));--tw-outline-style: dashed;outline-style:dashed}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.axp-state-selected{outline-color:rgba(var(--ax-sys-color-primary-400))}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.widget-container,axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.ax-widget-container{outline-offset:4px}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host .axp-widget-overlay{position:absolute;inset:0;z-index:2000;height:100%;width:100%}axp-layout-designer .axp-designer-board .axp-empty-space{display:flex;flex:1;cursor:default;align-items:center;justify-content:center;background-color:color-mix(in srgb,rgba(var(--ax-sys-color-primary-300)) 10%,transparent);background-image:linear-gradient(135deg,color-mix(in srgb,rgba(var(--ax-sys-color-primary-300)) 50%,transparent) 10%,transparent 0,transparent 50%,color-mix(in srgb,rgba(var(--ax-sys-color-primary-300)) 50%,transparent) 0,color-mix(in srgb,rgba(var(--ax-sys-color-primary-300)) 50%,transparent) 60%,transparent 0,transparent);background-size:7.5px 7.5px;height:100%}@supports (color: color-mix(in lab,red,red)){axp-layout-designer .axp-designer-board .axp-empty-space{background-color:color-mix(in srgb,var(--color-primary-300) 10%,transparent)}}@supports (color: color-mix(in lab,red,red)){axp-layout-designer .axp-designer-board .axp-empty-space{background-image:linear-gradient(135deg,color-mix(in srgb,var(--color-primary-300) 50%,transparent) 10%,transparent 0,transparent 50%,color-mix(in srgb,var(--color-primary-300) 50%,transparent) 0,color-mix(in srgb,var(--color-primary-300) 50%,transparent) 60%,transparent 0,transparent)}}axp-layout-designer .axp-designer-board .axp-page-widget-header,axp-layout-designer .axp-designer-board .axp-page-widget-footer{filter:grayscale(100%);opacity:.5}:is(axp-layout-designer .axp-designer-board .axp-page-widget-header,axp-layout-designer .axp-designer-board .axp-page-widget-footer):hover{filter:grayscale(0);opacity:1}axp-layout-designer .axp-designer-board .axp-page-widget-header{margin-bottom:calc(var(--spacing, .25rem) * 2)}axp-layout-designer .axp-designer-board .axp-page-widget-footer{margin-top:calc(var(--spacing, .25rem) * 2)}axp-layout-designer .axp-designer-prop-side{width:calc(var(--spacing, .25rem) * 80);border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}axp-designer-drawer-content ul.axp-designer-drawer-list{padding:var(--spacing, .25rem);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-on-lightest-surface))}:where(axp-designer-drawer-content ul.axp-designer-drawer-list>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(var(--spacing, .25rem) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing, .25rem) * calc(1 - var(--tw-space-y-reverse)))}axp-designer-drawer-content ul.axp-designer-drawer-list li{cursor:pointer;border-radius:var(--radius-sm, .25rem);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration, var(--default-transition-duration, .15s));--tw-duration: .15s;transition-duration:.15s;--tw-ease: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1));transition-timing-function:var(--ease-in-out, cubic-bezier(.4, 0, .2, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li:hover:not(.axp-designer-drawer-list){background-color:var(--color-dark);color:var(--color-on-dark);border-color:var(--color-border-dark)}axp-designer-drawer-content ul.axp-designer-drawer-list li.state-selected{background-color:var(--color-darker);color:var(--color-on-darker);border-color:var(--color-border-darker)}axp-designer-drawer-content .axp-designer-drawer-empty{display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 4);color:rgba(var(--ax-sys-color-on-lightest-surface));opacity:70%}@property --tw-outline-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-space-y-reverse{syntax: \"*\"; inherits: false; initial-value: 0;}@property --tw-duration{syntax: \"*\"; inherits: false;}@property --tw-ease{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-outline-style: solid;--tw-border-style: solid;--tw-space-y-reverse: 0;--tw-duration: initial;--tw-ease: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: AXPDesignerBoardComponent, selector: "axp-designer-board" }, { kind: "component", type: AXPWidgetPropertyViewerComponent, selector: "axp-widget-property-viewer", inputs: ["widget", "mode", "layoutProfile", "bindingExpressionEditorMode"], outputs: ["onChanged"] }, { kind: "component", type: AXPDesignerBreadcrumbsComponent, selector: "axp-designer-breadcrumbs" }, { kind: "component", type: AXPDesignerOutlineComponent, selector: "axp-designer-outline" }, { kind: "component", type: AXPDesignerHeaderMenuComponent, selector: "axp-designer-header-menu" }, { kind: "component", type: AXPDesignerHistoryComponent, selector: "axp-designer-history" }, { kind: "component", type: AXPDesignerDataSourcesComponent, selector: "axp-designer-data-sources" }, { kind: "component", type: AXPDesignerPagesComponent, selector: "axp-designer-pages" }, { kind: "component", type: AXPDesignerViewSizeToolbarComponent, selector: "axp-designer-view-sizes", inputs: ["size"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "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", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3$1.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["collapsedChange", "onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1.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: AXMenuModule }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i5$1.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "text", "selected", "color", "look", "type", "mode", "iconOnly"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
3500
3516
  }
3501
3517
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLayoutDesignerComponent, decorators: [{
3502
3518
  type: Component,
@@ -3758,7 +3774,7 @@ class AXPLayoutDesignerPreviewComponent extends AXBasePageComponent {
3758
3774
  await this.settings.scope(AXPPlatformScope.User).set(this.jsonSettingsKey, !value);
3759
3775
  }
3760
3776
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLayoutDesignerPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3761
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLayoutDesignerPreviewComponent, isStandalone: true, selector: "axp-layout-preview", usesInheritance: true, ngImport: i0, template: "<ax-drawer-container class=\"ax-dark h-full w-full flex relative overflow-hidden\">\n <ax-content>\n <div class=\"ax-dark flex flex-col h-full relative\">\n <div class=\"flex items-center justify-between h-12 lightest-surface shadow ax-sm px-2\">\n <div class=\"flex flex-1 w-16 justify-start\">\n <ax-button look=\"blank\" [text]=\"'@layout-designer:preview.back' | translate | async\" (onClick)=\"handleCloseButton()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-chevron-left\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n <div class=\"flex flex-1 flex-row gap-2 ax-sm items-center justify-center\">\n <axp-designer-view-sizes [(size)]=\"size\"></axp-designer-view-sizes>\n </div>\n <div class=\"flex flex-1 w-16 justify-end\">\n @if (isDialogWindow) {\n <ax-button look=\"blank\" [title]=\"'@layout-designer:keyboard-shortcuts.preview-window' | translate | async\" (onClick)=\"handlePreviewWindow()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-window-restore\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button look=\"blank\" (onClick)=\"jsonView.toggle()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-list-tree\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <div class=\"ax-light lighter-surface flex flex-1 justify-center overflow-auto min-h-0\">\n <axp-layout-preview-frame [size]=\"size()\"></axp-layout-preview-frame>\n </div>\n </div>\n </ax-content>\n <ax-drawer class=\"ax-dark w-1/3 border-s\" location=\"end\" mode=\"push\" #jsonView>\n <ax-content>\n <div class=\"ax-dark flex flex-col h-full relative\">\n <div class=\"flex items-center justify-between h-12 lightest-surface border-b shadow ax-sm px-2\">\n <div class=\"flex flex-1 w-16 justify-start\">\n <span class=\"font-semibold text-on-lightest\">{{ '@layout-designer:preview.form-data' | translate | async }}</span>\n </div>\n <div class=\"flex flex-1 flex-row gap-2 ax-sm items-center justify-center\"></div>\n <div class=\"flex flex-1 w-16 justify-end\">\n <ax-button look=\"blank\" (onClick)=\"handleCopyJson()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-copy\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n <div class=\"px-6\">\n <ax-json-viewer [json]=\"context()\"></ax-json-viewer>\n </div>\n </div>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>\n", styles: ["/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3$1.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1.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: AXJsonViewerModule }, { kind: "component", type: i4$1.JsonViewerComponent, selector: "ax-json-viewer", inputs: ["json"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXPLayoutDesignerPreviewFrameComponent, selector: "axp-layout-preview-frame", inputs: ["size"] }, { kind: "component", type: AXPDesignerViewSizeToolbarComponent, selector: "axp-designer-view-sizes", inputs: ["size"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
3777
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLayoutDesignerPreviewComponent, isStandalone: true, selector: "axp-layout-preview", usesInheritance: true, ngImport: i0, template: "<ax-drawer-container class=\"ax-dark h-full w-full flex relative overflow-hidden\">\n <ax-content>\n <div class=\"ax-dark flex flex-col h-full relative\">\n <div class=\"flex items-center justify-between h-12 lightest-surface shadow ax-sm px-2\">\n <div class=\"flex flex-1 w-16 justify-start\">\n <ax-button look=\"blank\" [text]=\"'@layout-designer:preview.back' | translate | async\" (onClick)=\"handleCloseButton()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-chevron-left\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n <div class=\"flex flex-1 flex-row gap-2 ax-sm items-center justify-center\">\n <axp-designer-view-sizes [(size)]=\"size\"></axp-designer-view-sizes>\n </div>\n <div class=\"flex flex-1 w-16 justify-end\">\n @if (isDialogWindow) {\n <ax-button look=\"blank\" [title]=\"'@layout-designer:keyboard-shortcuts.preview-window' | translate | async\" (onClick)=\"handlePreviewWindow()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-window-restore\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button look=\"blank\" (onClick)=\"jsonView.toggle()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-list-tree\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <div class=\"ax-light lighter-surface flex flex-1 justify-center overflow-auto min-h-0\">\n <axp-layout-preview-frame [size]=\"size()\"></axp-layout-preview-frame>\n </div>\n </div>\n </ax-content>\n <ax-drawer class=\"ax-dark w-1/3 border-s\" location=\"end\" mode=\"push\" #jsonView>\n <ax-content>\n <div class=\"ax-dark flex flex-col h-full relative\">\n <div class=\"flex items-center justify-between h-12 lightest-surface border-b shadow ax-sm px-2\">\n <div class=\"flex flex-1 w-16 justify-start\">\n <span class=\"font-semibold text-on-lightest\">{{ '@layout-designer:preview.form-data' | translate | async }}</span>\n </div>\n <div class=\"flex flex-1 flex-row gap-2 ax-sm items-center justify-center\"></div>\n <div class=\"flex flex-1 w-16 justify-end\">\n <ax-button look=\"blank\" (onClick)=\"handleCopyJson()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-copy\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n <div class=\"px-6\">\n <ax-json-viewer [json]=\"context()\"></ax-json-viewer>\n </div>\n </div>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>\n", styles: ["/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3$1.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["collapsedChange", "onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3$1.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1.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: AXJsonViewerModule }, { kind: "component", type: i4$1.JsonViewerComponent, selector: "ax-json-viewer", inputs: ["json"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXPLayoutDesignerPreviewFrameComponent, selector: "axp-layout-preview-frame", inputs: ["size"] }, { kind: "component", type: AXPDesignerViewSizeToolbarComponent, selector: "axp-designer-view-sizes", inputs: ["size"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
3762
3778
  }
3763
3779
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLayoutDesignerPreviewComponent, decorators: [{
3764
3780
  type: Component,