@acorex/platform 21.0.0-next.5 → 21.0.0-next.50
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.
- package/fesm2022/acorex-platform-auth.mjs +281 -23
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs +163 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +1047 -263
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +1138 -510
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +557 -826
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +804 -186
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs +121 -0
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +6208 -2344
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +456 -204
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +18632 -10286
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +538 -168
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +720 -456
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs → acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs} +10 -10
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs +103 -0
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs → acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs} +12 -12
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs +116 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +8728 -4269
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +8 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +391 -166
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs} +19 -26
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-cfREo88K.mjs → acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs → acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +1836 -67
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs → acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs} +24 -25
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs +86 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +674 -573
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +1715 -535
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/package.json +37 -37
- package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +241 -4
- package/{common/index.d.ts → types/acorex-platform-common.d.ts} +598 -80
- package/{core/index.d.ts → types/acorex-platform-core.d.ts} +595 -132
- package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +744 -412
- package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +193 -48
- package/types/acorex-platform-layout-components.d.ts +2979 -0
- package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
- package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +1601 -261
- package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +116 -55
- package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +272 -124
- package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +1055 -157
- package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
- package/types/acorex-platform-runtime.d.ts +571 -0
- package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +122 -5
- package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +1 -1
- package/types/acorex-platform-workflow.d.ts +1884 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs +0 -71
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs +0 -135
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs +0 -157
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs +0 -1542
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-cfREo88K.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs +0 -19
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs +0 -65
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs +0 -64
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs.map +0 -1
- package/layout/components/index.d.ts +0 -1669
- package/runtime/index.d.ts +0 -307
- package/workflow/index.d.ts +0 -1808
- /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
|
@@ -2,42 +2,43 @@ import * as i2 from '@acorex/components/button';
|
|
|
2
2
|
import { AXButtonModule } from '@acorex/components/button';
|
|
3
3
|
import * as i1 from '@acorex/components/decorators';
|
|
4
4
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
5
|
-
import * as i1$
|
|
5
|
+
import * as i1$3 from '@acorex/platform/layout/widget-core';
|
|
6
6
|
import { AXPWidgetRegistryService, AXPWidgetGroupEnum, AXPWidgetsCatalog, AXPLayoutBaseWidgetComponent, AXP_WIDGET_TOKEN, AXPWidgetStatus, AXPValueWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';
|
|
7
7
|
import * as i0 from '@angular/core';
|
|
8
|
-
import { signal, computed, Injectable, inject, effect, ViewEncapsulation, ChangeDetectionStrategy, Component, input, output, EventEmitter, HostBinding, Output, model, HostListener, Injector, NgZone, ViewContainerRef, Directive, ElementRef, ViewChild } from '@angular/core';
|
|
8
|
+
import { signal, computed, Injectable, inject, effect, ViewEncapsulation, ChangeDetectionStrategy, Component, input, output, EventEmitter, HostBinding, Output, model, HostListener, Injector, viewChild, afterNextRender, NgZone, ViewContainerRef, Directive, ElementRef, ViewChild } from '@angular/core';
|
|
9
9
|
import { AXLoadingDialogService } from '@acorex/components/loading-dialog';
|
|
10
10
|
import { AXPopupService } from '@acorex/components/popup';
|
|
11
11
|
import { AXToastService } from '@acorex/components/toast';
|
|
12
12
|
import { AXFileService } from '@acorex/core/file';
|
|
13
13
|
import { merge, cloneDeep, assign, sortBy, get, set, isNil, isEmpty, orderBy, castArray, uniqBy, isEqual } from 'lodash-es';
|
|
14
14
|
import { Subject, distinctUntilChanged, filter, debounceTime, first, merge as merge$1 } from 'rxjs';
|
|
15
|
-
import { AXPBroadcastEventService, AXPPlatformScope, AXPDataSourceDefinitionProviderService } from '@acorex/platform/core';
|
|
16
|
-
import
|
|
17
|
-
import
|
|
15
|
+
import { AXPBroadcastEventService, AXPPlatformScope, AXPDataSourceDefinitionProviderService, AXPHookService } from '@acorex/platform/core';
|
|
16
|
+
import * as i8 from '@acorex/core/translation';
|
|
17
|
+
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
18
|
+
import * as i1$1 from '@acorex/cdk/common';
|
|
18
19
|
import { AXCommonModule } from '@acorex/cdk/common';
|
|
19
20
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
20
|
-
import * as
|
|
21
|
+
import * as i6 from '@acorex/components/search-box';
|
|
21
22
|
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
22
|
-
import * as
|
|
23
|
+
import * as i5 from '@acorex/components/tabs';
|
|
23
24
|
import { AXTabsModule } from '@acorex/components/tabs';
|
|
24
25
|
import { AXPSettingsService, AXPStickyDirective, AXPClipBoardService } from '@acorex/platform/common';
|
|
25
26
|
import { AXPWidgetItemComponent, AXPStateMessageComponent, AXPWidgetPropertyViewerComponent } from '@acorex/platform/layout/components';
|
|
26
|
-
import * as i1$
|
|
27
|
-
import { CommonModule } from '@angular/common';
|
|
28
|
-
import * as
|
|
27
|
+
import * as i1$2 from '@angular/common';
|
|
28
|
+
import { CommonModule, AsyncPipe } from '@angular/common';
|
|
29
|
+
import * as i2$1 from '@angular/forms';
|
|
29
30
|
import { FormsModule } from '@angular/forms';
|
|
30
|
-
import * as i1$
|
|
31
|
+
import * as i1$5 from '@acorex/components/button-group';
|
|
31
32
|
import { AXButtonGroupModule } from '@acorex/components/button-group';
|
|
32
|
-
import * as i3
|
|
33
|
+
import * as i3 from '@acorex/components/drawer';
|
|
33
34
|
import { AXDrawerModule } from '@acorex/components/drawer';
|
|
34
35
|
import * as i4 from '@acorex/components/dropdown';
|
|
35
36
|
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
36
|
-
import * as i5 from '@acorex/components/dropdown-button';
|
|
37
|
+
import * as i5$1 from '@acorex/components/dropdown-button';
|
|
37
38
|
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
|
38
39
|
import * as i2$2 from '@acorex/components/menu';
|
|
39
40
|
import { AXMenuModule } from '@acorex/components/menu';
|
|
40
|
-
import * as i1$
|
|
41
|
+
import * as i1$4 from '@acorex/components/breadcrumbs';
|
|
41
42
|
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
|
42
43
|
import { AXPWorkflowService } from '@acorex/platform/workflow';
|
|
43
44
|
import { AXUnsubscriber } from '@acorex/core/utils';
|
|
@@ -148,18 +149,18 @@ class UpdateWidgetCommand {
|
|
|
148
149
|
}
|
|
149
150
|
class CommandManager {
|
|
150
151
|
constructor() {
|
|
151
|
-
this.undoStack = signal([], ...(ngDevMode ? [{ debugName: "undoStack" }] : []));
|
|
152
|
-
this.currentIndex = signal(-1, ...(ngDevMode ? [{ debugName: "currentIndex" }] : []));
|
|
153
|
-
this.selectedNode = signal(null, ...(ngDevMode ? [{ debugName: "selectedNode" }] : []));
|
|
154
|
-
this.canUndo = computed(() => this.currentIndex() >= 0, ...(ngDevMode ? [{ debugName: "canUndo" }] : []));
|
|
155
|
-
this.canRedo = computed(() => this.currentIndex() < this.undoStack().length - 1, ...(ngDevMode ? [{ debugName: "canRedo" }] : []));
|
|
152
|
+
this.undoStack = signal([], ...(ngDevMode ? [{ debugName: "undoStack" }] : /* istanbul ignore next */ []));
|
|
153
|
+
this.currentIndex = signal(-1, ...(ngDevMode ? [{ debugName: "currentIndex" }] : /* istanbul ignore next */ []));
|
|
154
|
+
this.selectedNode = signal(null, ...(ngDevMode ? [{ debugName: "selectedNode" }] : /* istanbul ignore next */ []));
|
|
155
|
+
this.canUndo = computed(() => this.currentIndex() >= 0, ...(ngDevMode ? [{ debugName: "canUndo" }] : /* istanbul ignore next */ []));
|
|
156
|
+
this.canRedo = computed(() => this.currentIndex() < this.undoStack().length - 1, ...(ngDevMode ? [{ debugName: "canRedo" }] : /* istanbul ignore next */ []));
|
|
156
157
|
this.history = computed(() => this.undoStack().map((cmd, index) => ({
|
|
157
158
|
description: cmd.description(),
|
|
158
159
|
icon: cmd.icon(),
|
|
159
160
|
isPast: this.currentIndex() > index,
|
|
160
161
|
isFuture: this.currentIndex() < index,
|
|
161
162
|
isCurrent: this.currentIndex() == index
|
|
162
|
-
})), ...(ngDevMode ? [{ debugName: "history" }] : []));
|
|
163
|
+
})), ...(ngDevMode ? [{ debugName: "history" }] : /* istanbul ignore next */ []));
|
|
163
164
|
}
|
|
164
165
|
executeCommand(command) {
|
|
165
166
|
// Check if the currentIndex is not at the end of the undoStack
|
|
@@ -217,10 +218,10 @@ class CommandManager {
|
|
|
217
218
|
this.undoStack.set([]);
|
|
218
219
|
this.currentIndex.set(-1);
|
|
219
220
|
}
|
|
220
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
221
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
221
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CommandManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
222
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CommandManager, providedIn: 'root' }); }
|
|
222
223
|
}
|
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CommandManager, decorators: [{
|
|
224
225
|
type: Injectable,
|
|
225
226
|
args: [{
|
|
226
227
|
providedIn: 'root'
|
|
@@ -228,10 +229,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
228
229
|
}] });
|
|
229
230
|
|
|
230
231
|
class AXPDesignerConnector {
|
|
231
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
232
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
232
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerConnector, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
233
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerConnector }); }
|
|
233
234
|
}
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
235
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerConnector, decorators: [{
|
|
235
236
|
type: Injectable
|
|
236
237
|
}] });
|
|
237
238
|
|
|
@@ -313,6 +314,15 @@ const AXPDesignerMessageKeys = {
|
|
|
313
314
|
FormSaved: 'designer-form-saved-content',
|
|
314
315
|
};
|
|
315
316
|
|
|
317
|
+
/**
|
|
318
|
+
* Suffixes for `forms:widgets:picker:last-tab:{id}` user settings keys.
|
|
319
|
+
* Use one id per distinct widget-picker host (different tab strips / widget sets).
|
|
320
|
+
*/
|
|
321
|
+
const AXP_WIDGET_PICKER_TAB_CONTEXT = {
|
|
322
|
+
layoutDesignerFormElements: 'layout-designer-form-elements',
|
|
323
|
+
dashboardHome: 'dashboard-home',
|
|
324
|
+
};
|
|
325
|
+
|
|
316
326
|
class AXPWidgetPickerService {
|
|
317
327
|
constructor() {
|
|
318
328
|
this.popupService = inject(AXPopupService);
|
|
@@ -330,19 +340,22 @@ class AXPWidgetPickerService {
|
|
|
330
340
|
closeButton: true,
|
|
331
341
|
data: {
|
|
332
342
|
widgets: sortBy(filteredWidgets, (c) => c.title),
|
|
343
|
+
tabPersistenceContext: options.tabPersistenceContext,
|
|
333
344
|
},
|
|
334
345
|
});
|
|
335
346
|
//
|
|
336
347
|
const selectedWidgets = (result.data?.widgets ?? []);
|
|
337
348
|
return selectedWidgets.map((c) => ({
|
|
338
349
|
type: c.name,
|
|
350
|
+
options: c.options,
|
|
351
|
+
title: c.title,
|
|
339
352
|
meta: c.meta,
|
|
340
353
|
}));
|
|
341
354
|
}
|
|
342
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
343
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
355
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
356
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetPickerService, providedIn: 'root' }); }
|
|
344
357
|
}
|
|
345
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
358
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetPickerService, decorators: [{
|
|
346
359
|
type: Injectable,
|
|
347
360
|
args: [{
|
|
348
361
|
providedIn: 'root',
|
|
@@ -360,40 +373,40 @@ class AXPDesignerService {
|
|
|
360
373
|
this.connector = inject(AXPDesignerConnector);
|
|
361
374
|
this.eventService = inject(AXPBroadcastEventService);
|
|
362
375
|
this.widgetPickerService = inject(AXPWidgetPickerService);
|
|
363
|
-
this.document = signal(this.createDoc(), ...(ngDevMode ? [{ debugName: "document" }] : []));
|
|
364
|
-
this.currentPageIndex = signal(0, ...(ngDevMode ? [{ debugName: "currentPageIndex" }] : []));
|
|
365
|
-
this.currentPage = signal(this.document().children?.[0], ...(ngDevMode ? [{ debugName: "currentPage" }] : []));
|
|
376
|
+
this.document = signal(this.createDoc(), ...(ngDevMode ? [{ debugName: "document" }] : /* istanbul ignore next */ []));
|
|
377
|
+
this.currentPageIndex = signal(0, ...(ngDevMode ? [{ debugName: "currentPageIndex" }] : /* istanbul ignore next */ []));
|
|
378
|
+
this.currentPage = signal(this.document().children?.[0], ...(ngDevMode ? [{ debugName: "currentPage" }] : /* istanbul ignore next */ []));
|
|
366
379
|
this.commandManager = inject(CommandManager);
|
|
367
|
-
this.clipboard = signal(null, ...(ngDevMode ? [{ debugName: "clipboard" }] : []));
|
|
380
|
+
this.clipboard = signal(null, ...(ngDevMode ? [{ debugName: "clipboard" }] : /* istanbul ignore next */ []));
|
|
368
381
|
//
|
|
369
|
-
this.canCutCopy = computed(() => this.can(this.selectedNode()).copyOrCut, ...(ngDevMode ? [{ debugName: "canCutCopy" }] : []));
|
|
370
|
-
this.canDelete = computed(() => this.can(this.selectedNode()).delete, ...(ngDevMode ? [{ debugName: "canDelete" }] : []));
|
|
371
|
-
this.canInsert = computed(() => this.can(this.selectedNode()).insert, ...(ngDevMode ? [{ debugName: "canInsert" }] : []));
|
|
372
|
-
this.canPaste = computed(() => this.can(this.selectedNode()).paste, ...(ngDevMode ? [{ debugName: "canPaste" }] : []));
|
|
382
|
+
this.canCutCopy = computed(() => this.can(this.selectedNode()).copyOrCut, ...(ngDevMode ? [{ debugName: "canCutCopy" }] : /* istanbul ignore next */ []));
|
|
383
|
+
this.canDelete = computed(() => this.can(this.selectedNode()).delete, ...(ngDevMode ? [{ debugName: "canDelete" }] : /* istanbul ignore next */ []));
|
|
384
|
+
this.canInsert = computed(() => this.can(this.selectedNode()).insert, ...(ngDevMode ? [{ debugName: "canInsert" }] : /* istanbul ignore next */ []));
|
|
385
|
+
this.canPaste = computed(() => this.can(this.selectedNode()).paste, ...(ngDevMode ? [{ debugName: "canPaste" }] : /* istanbul ignore next */ []));
|
|
373
386
|
//
|
|
374
|
-
this.history = computed(() => this.commandManager.history(), ...(ngDevMode ? [{ debugName: "history" }] : []));
|
|
375
|
-
this.canUndo = computed(() => this.commandManager.canUndo(), ...(ngDevMode ? [{ debugName: "canUndo" }] : []));
|
|
376
|
-
this.canRedo = computed(() => this.commandManager.canRedo(), ...(ngDevMode ? [{ debugName: "canRedo" }] : []));
|
|
387
|
+
this.history = computed(() => this.commandManager.history(), ...(ngDevMode ? [{ debugName: "history" }] : /* istanbul ignore next */ []));
|
|
388
|
+
this.canUndo = computed(() => this.commandManager.canUndo(), ...(ngDevMode ? [{ debugName: "canUndo" }] : /* istanbul ignore next */ []));
|
|
389
|
+
this.canRedo = computed(() => this.commandManager.canRedo(), ...(ngDevMode ? [{ debugName: "canRedo" }] : /* istanbul ignore next */ []));
|
|
377
390
|
//
|
|
378
|
-
this.canSave = computed(() => this.templateId() != null, ...(ngDevMode ? [{ debugName: "canSave" }] : []));
|
|
379
|
-
this.unsavedChanges = signal(false, ...(ngDevMode ? [{ debugName: "unsavedChanges" }] : []));
|
|
391
|
+
this.canSave = computed(() => this.templateId() != null, ...(ngDevMode ? [{ debugName: "canSave" }] : /* istanbul ignore next */ []));
|
|
392
|
+
this.unsavedChanges = signal(false, ...(ngDevMode ? [{ debugName: "unsavedChanges" }] : /* istanbul ignore next */ []));
|
|
380
393
|
this.breadcrumbs = computed(() => {
|
|
381
394
|
return this.selectedNode() ? this.findBreadcrumbs(this.currentPage(), this.selectedNode()) ?? [] : [];
|
|
382
|
-
}, ...(ngDevMode ? [{ debugName: "breadcrumbs" }] : []));
|
|
383
|
-
this.selectedNode = signal(null, ...(ngDevMode ? [{ debugName: "selectedNode" }] : []));
|
|
384
|
-
this.selectedNodeConfig = computed(() => get(this.selectedNode(), '__meta__.config'), ...(ngDevMode ? [{ debugName: "selectedNodeConfig" }] : []));
|
|
395
|
+
}, ...(ngDevMode ? [{ debugName: "breadcrumbs" }] : /* istanbul ignore next */ []));
|
|
396
|
+
this.selectedNode = signal(null, ...(ngDevMode ? [{ debugName: "selectedNode" }] : /* istanbul ignore next */ []));
|
|
397
|
+
this.selectedNodeConfig = computed(() => get(this.selectedNode(), '__meta__.config'), ...(ngDevMode ? [{ debugName: "selectedNodeConfig" }] : /* istanbul ignore next */ []));
|
|
385
398
|
this._focusedNode = null;
|
|
386
399
|
this.focusedNode = () => this._focusedNode;
|
|
387
|
-
this.size = signal('xl', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
400
|
+
this.size = signal('xl', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
388
401
|
this.onSelected = new Subject();
|
|
389
402
|
this.onRefresh = new Subject();
|
|
390
403
|
this.onUpdate = new Subject();
|
|
391
404
|
this.onFocused = new Subject();
|
|
392
|
-
this.templateId = signal(null, ...(ngDevMode ? [{ debugName: "templateId" }] : []));
|
|
393
|
-
this.loadingStrategy = signal(AXPTemplateLoadingStrategy.Connector, ...(ngDevMode ? [{ debugName: "loadingStrategy" }] : []));
|
|
405
|
+
this.templateId = signal(null, ...(ngDevMode ? [{ debugName: "templateId" }] : /* istanbul ignore next */ []));
|
|
406
|
+
this.loadingStrategy = signal(AXPTemplateLoadingStrategy.Connector, ...(ngDevMode ? [{ debugName: "loadingStrategy" }] : /* istanbul ignore next */ []));
|
|
394
407
|
this.#ef = effect(() => {
|
|
395
408
|
this.refresh({ widget: this.currentPage() });
|
|
396
|
-
}, ...(ngDevMode ? [{ debugName: "#ef" }] : []));
|
|
409
|
+
}, ...(ngDevMode ? [{ debugName: "#ef" }] : /* istanbul ignore next */ []));
|
|
397
410
|
this.can = (widget) => {
|
|
398
411
|
if (!widget) {
|
|
399
412
|
return {
|
|
@@ -479,7 +492,10 @@ class AXPDesignerService {
|
|
|
479
492
|
return undefined;
|
|
480
493
|
}
|
|
481
494
|
async showPicker(currentNode = this.selectedNode()) {
|
|
482
|
-
const widgets = await this.widgetPickerService.showPicker({
|
|
495
|
+
const widgets = await this.widgetPickerService.showPicker({
|
|
496
|
+
groups: [AXPWidgetGroupEnum.FormElement],
|
|
497
|
+
tabPersistenceContext: AXP_WIDGET_PICKER_TAB_CONTEXT.layoutDesignerFormElements,
|
|
498
|
+
});
|
|
483
499
|
const result = [];
|
|
484
500
|
if (widgets.length) {
|
|
485
501
|
widgets.forEach((c) => {
|
|
@@ -1001,10 +1017,10 @@ class AXPDesignerService {
|
|
|
1001
1017
|
this.eventService.unsubscribe(AXPDesignerMessageKeys.Loaded);
|
|
1002
1018
|
this.eventService.unsubscribe(AXPDesignerMessageKeys.PreviewWindow);
|
|
1003
1019
|
}
|
|
1004
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1005
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1020
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1021
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerService }); }
|
|
1006
1022
|
}
|
|
1007
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1023
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerService, decorators: [{
|
|
1008
1024
|
type: Injectable
|
|
1009
1025
|
}], ctorParameters: () => [] });
|
|
1010
1026
|
|
|
@@ -1017,8 +1033,8 @@ class AXPDesignerAddWidgetButtonComponent {
|
|
|
1017
1033
|
e.nativeEvent.stopPropagation();
|
|
1018
1034
|
await this.designerService.showPicker(this.parent.node);
|
|
1019
1035
|
}
|
|
1020
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1021
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1036
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerAddWidgetButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1037
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPDesignerAddWidgetButtonComponent, isStandalone: true, selector: "axp-designer-add-widget-button", ngImport: i0, template: `
|
|
1022
1038
|
<div class="ax-container">
|
|
1023
1039
|
<ax-button [text]="'Add New Element'" (onClick)="handleClick($event)" [look]="'solid'" [color]="'primary'">
|
|
1024
1040
|
<ax-icon icon="fa-solid fa-plus"></ax-icon>
|
|
@@ -1026,7 +1042,7 @@ class AXPDesignerAddWidgetButtonComponent {
|
|
|
1026
1042
|
</div>
|
|
1027
1043
|
`, isInline: true, styles: ["axp-designer-add-widget-button .ax-container{margin-left:auto;margin-right:auto;display:flex;justify-content:center;padding:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1028
1044
|
}
|
|
1029
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1045
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerAddWidgetButtonComponent, decorators: [{
|
|
1030
1046
|
type: Component,
|
|
1031
1047
|
args: [{ selector: 'axp-designer-add-widget-button', template: `
|
|
1032
1048
|
<div class="ax-container">
|
|
@@ -1039,14 +1055,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1039
1055
|
|
|
1040
1056
|
class AXPDesignerAddWidgetLineButtonComponent {
|
|
1041
1057
|
constructor() {
|
|
1042
|
-
this.text = input(...(ngDevMode ? [undefined, { debugName: "text" }] : []));
|
|
1058
|
+
this.text = input(...(ngDevMode ? [undefined, { debugName: "text" }] : /* istanbul ignore next */ []));
|
|
1043
1059
|
this.onClick = output();
|
|
1044
1060
|
}
|
|
1045
1061
|
handleClick() {
|
|
1046
1062
|
this.onClick.emit();
|
|
1047
1063
|
}
|
|
1048
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1049
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
1064
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerAddWidgetLineButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1065
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: AXPDesignerAddWidgetLineButtonComponent, isStandalone: true, selector: "axp-designer-add-widget-line-button", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
|
|
1050
1066
|
<div class="ax-flex ax-items-center ax-py-4 ax-text-xs">
|
|
1051
1067
|
<div class="ax-flex-grow ax-border-t-2 ax-border-dashed ax-border-surface"></div>
|
|
1052
1068
|
<div class="ax-mx-2 ax-sm ">
|
|
@@ -1058,7 +1074,7 @@ class AXPDesignerAddWidgetLineButtonComponent {
|
|
|
1058
1074
|
</div>
|
|
1059
1075
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1060
1076
|
}
|
|
1061
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1077
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerAddWidgetLineButtonComponent, decorators: [{
|
|
1062
1078
|
type: Component,
|
|
1063
1079
|
args: [{
|
|
1064
1080
|
selector: 'axp-designer-add-widget-line-button',
|
|
@@ -1103,8 +1119,8 @@ class AXPDesignerAddWidgetMiniButtonComponent {
|
|
|
1103
1119
|
cls[`ax-h-full`] = true;
|
|
1104
1120
|
return cls;
|
|
1105
1121
|
}
|
|
1106
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1107
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1122
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerAddWidgetMiniButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1123
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPDesignerAddWidgetMiniButtonComponent, isStandalone: true, selector: "axp-designer-add-widget-mini-button", outputs: { onClick: "onClick" }, host: { properties: { "class": "this.__class" } }, ngImport: i0, template: `
|
|
1108
1124
|
<div class="axp-empty-space">
|
|
1109
1125
|
<div class="ax-m-auto ax-py-4 ax-px-8">
|
|
1110
1126
|
<div
|
|
@@ -1117,7 +1133,7 @@ class AXPDesignerAddWidgetMiniButtonComponent {
|
|
|
1117
1133
|
</div>
|
|
1118
1134
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1119
1135
|
}
|
|
1120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerAddWidgetMiniButtonComponent, decorators: [{
|
|
1121
1137
|
type: Component,
|
|
1122
1138
|
args: [{
|
|
1123
1139
|
selector: 'axp-designer-add-widget-mini-button',
|
|
@@ -1146,10 +1162,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1146
1162
|
|
|
1147
1163
|
class AXPDesignerFlexDrawerComponent {
|
|
1148
1164
|
constructor() {
|
|
1149
|
-
this.itemsCount = model(12, ...(ngDevMode ?
|
|
1165
|
+
this.itemsCount = model(12, { ...(ngDevMode ? { debugName: "itemsCount" } : /* istanbul ignore next */ {}), alias: 'items' });
|
|
1150
1166
|
this.onSelect = output();
|
|
1151
|
-
this.items = computed(() => Array.from({ length: this.itemsCount() }).map((v, index) => index + 1), ...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
1152
|
-
this.range = signal(0, ...(ngDevMode ? [{ debugName: "range" }] : []));
|
|
1167
|
+
this.items = computed(() => Array.from({ length: this.itemsCount() }).map((v, index) => index + 1), ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
1168
|
+
this.range = signal(0, ...(ngDevMode ? [{ debugName: "range" }] : /* istanbul ignore next */ []));
|
|
1153
1169
|
}
|
|
1154
1170
|
handleMouseHover(c) {
|
|
1155
1171
|
this.range.set(c);
|
|
@@ -1160,8 +1176,8 @@ class AXPDesignerFlexDrawerComponent {
|
|
|
1160
1176
|
handleMouseLeave(event) {
|
|
1161
1177
|
this.range.set(0);
|
|
1162
1178
|
}
|
|
1163
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1164
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1179
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerFlexDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1180
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDesignerFlexDrawerComponent, isStandalone: true, selector: "axp-designer-flex-drawer", inputs: { itemsCount: { classPropertyName: "itemsCount", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemsCount: "itemsChange", onSelect: "onSelect" }, host: { listeners: { "mouseleave": "handleMouseLeave($event)" } }, ngImport: i0, template: `
|
|
1165
1181
|
<table class="table-picker">
|
|
1166
1182
|
<tbody>
|
|
1167
1183
|
<tr>
|
|
@@ -1178,7 +1194,7 @@ class AXPDesignerFlexDrawerComponent {
|
|
|
1178
1194
|
</table>
|
|
1179
1195
|
`, isInline: true, styles: [":host{width:100%}:host table{width:100%;border-collapse:collapse;--tw-border-spacing-x: 0px;--tw-border-spacing-y: 0px;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}:host table td{height:2.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1))}:host table td:after{content:\"\";display:block}:host table td.picked{border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-100),var(--tw-bg-opacity, 1))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1180
1196
|
}
|
|
1181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerFlexDrawerComponent, decorators: [{
|
|
1182
1198
|
type: Component,
|
|
1183
1199
|
args: [{ selector: 'axp-designer-flex-drawer', template: `
|
|
1184
1200
|
<table class="table-picker">
|
|
@@ -1203,13 +1219,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1203
1219
|
|
|
1204
1220
|
class AXPDesignerGridDrawerComponent {
|
|
1205
1221
|
constructor() {
|
|
1206
|
-
this.rowsCount = model(5, ...(ngDevMode ?
|
|
1207
|
-
this.colsCount = model(12, ...(ngDevMode ?
|
|
1222
|
+
this.rowsCount = model(5, { ...(ngDevMode ? { debugName: "rowsCount" } : /* istanbul ignore next */ {}), alias: 'rows' });
|
|
1223
|
+
this.colsCount = model(12, { ...(ngDevMode ? { debugName: "colsCount" } : /* istanbul ignore next */ {}), alias: 'columns' });
|
|
1208
1224
|
this.onSelect = output();
|
|
1209
|
-
this.rows = computed(() => Array.from({ length: this.rowsCount() }).map((v, index) => index + 1), ...(ngDevMode ? [{ debugName: "rows" }] : []));
|
|
1210
|
-
this.columns = computed(() => Array.from({ length: this.colsCount() }).map((v, index) => index + 1), ...(ngDevMode ? [{ debugName: "columns" }] : []));
|
|
1211
|
-
this.rangeR = signal(0, ...(ngDevMode ? [{ debugName: "rangeR" }] : []));
|
|
1212
|
-
this.rangeC = signal(0, ...(ngDevMode ? [{ debugName: "rangeC" }] : []));
|
|
1225
|
+
this.rows = computed(() => Array.from({ length: this.rowsCount() }).map((v, index) => index + 1), ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
1226
|
+
this.columns = computed(() => Array.from({ length: this.colsCount() }).map((v, index) => index + 1), ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
|
|
1227
|
+
this.rangeR = signal(0, ...(ngDevMode ? [{ debugName: "rangeR" }] : /* istanbul ignore next */ []));
|
|
1228
|
+
this.rangeC = signal(0, ...(ngDevMode ? [{ debugName: "rangeC" }] : /* istanbul ignore next */ []));
|
|
1213
1229
|
}
|
|
1214
1230
|
handleMouseHover(r, c) {
|
|
1215
1231
|
this.rangeR.set(r);
|
|
@@ -1227,8 +1243,8 @@ class AXPDesignerGridDrawerComponent {
|
|
|
1227
1243
|
'--cols-width': `${this.colsCount() == 0 ? 0 : 100 / this.colsCount()}%`,
|
|
1228
1244
|
};
|
|
1229
1245
|
}
|
|
1230
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1231
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1246
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerGridDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1247
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDesignerGridDrawerComponent, isStandalone: true, selector: "axp-designer-grid-drawer", inputs: { rowsCount: { classPropertyName: "rowsCount", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, colsCount: { classPropertyName: "colsCount", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowsCount: "rowsChange", colsCount: "columnsChange", onSelect: "onSelect" }, host: { listeners: { "mouseleave": "handleMouseLeave($event)" }, properties: { "style": "this.__style" } }, ngImport: i0, template: `
|
|
1232
1248
|
<table class="table-picker">
|
|
1233
1249
|
<tbody>
|
|
1234
1250
|
@for (r of rows(); track $index) {
|
|
@@ -1251,7 +1267,7 @@ class AXPDesignerGridDrawerComponent {
|
|
|
1251
1267
|
</table>
|
|
1252
1268
|
`, isInline: true, styles: [":host table{width:100%;border-collapse:collapse;--tw-border-spacing-x: 0px;--tw-border-spacing-y: 0px;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}:host table td{height:2.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));width:var(--cols-width)}:host table td:after{content:\"\";display:block}:host table td.picked{border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-100),var(--tw-bg-opacity, 1))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1253
1269
|
}
|
|
1254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1270
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerGridDrawerComponent, decorators: [{
|
|
1255
1271
|
type: Component,
|
|
1256
1272
|
args: [{ selector: 'axp-designer-grid-drawer', template: `
|
|
1257
1273
|
<table class="table-picker">
|
|
@@ -1283,6 +1299,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1283
1299
|
args: ['style']
|
|
1284
1300
|
}] } });
|
|
1285
1301
|
|
|
1302
|
+
const WIDGET_PICKER_I18N = {
|
|
1303
|
+
searchPlaceholder: '@form-template-management:designer.components.widget-picker.search-placeholder',
|
|
1304
|
+
selectedCount: '@form-template-management:designer.components.widget-picker.selected-count',
|
|
1305
|
+
tabAll: '@form-template-management:designer.components.widget-picker.tab-all',
|
|
1306
|
+
pinnedSectionTitle: '@form-template-management:designer.components.widget-picker.pinned-section-title',
|
|
1307
|
+
};
|
|
1286
1308
|
/**
|
|
1287
1309
|
* Maps AXPDisplayWidgetConfig to generic AXPWidgetItemData
|
|
1288
1310
|
*/
|
|
@@ -1292,61 +1314,205 @@ function mapToWidgetItemData(widget) {
|
|
|
1292
1314
|
description: widget.description,
|
|
1293
1315
|
icon: widget.icon ?? 'fa-solid fa-cube',
|
|
1294
1316
|
isPinned: widget.pinned,
|
|
1295
|
-
data: widget
|
|
1317
|
+
data: widget,
|
|
1296
1318
|
};
|
|
1297
1319
|
}
|
|
1298
1320
|
class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {
|
|
1321
|
+
//#endregion
|
|
1322
|
+
//#region ---- Constructor ----
|
|
1299
1323
|
constructor() {
|
|
1300
|
-
super(
|
|
1324
|
+
super();
|
|
1325
|
+
//#region ---- Services & Dependencies ----
|
|
1326
|
+
this.injector = inject(Injector);
|
|
1301
1327
|
this.settingsService = inject(AXPSettingsService);
|
|
1328
|
+
this.mlResolver = inject(AXTranslationService);
|
|
1302
1329
|
this.pinnedSettingKey = 'forms:widgets:picker:pinned';
|
|
1303
|
-
|
|
1304
|
-
|
|
1330
|
+
/** Keeps the line indicator in sync when the selected index is set programmatically (e.g. restored tab). */
|
|
1331
|
+
this.tabsHost = viewChild('tabsHost', ...(ngDevMode ? [{ debugName: "tabsHost" }] : /* istanbul ignore next */ []));
|
|
1332
|
+
//#endregion
|
|
1333
|
+
//#region ---- Class Properties ----
|
|
1334
|
+
this.i18n = WIDGET_PICKER_I18N;
|
|
1335
|
+
this.searchTerm = model('', ...(ngDevMode ? [{ debugName: "searchTerm" }] : /* istanbul ignore next */ []));
|
|
1305
1336
|
this.widgets = [];
|
|
1306
|
-
this.allWidgets = signal([], ...(ngDevMode ? [{ debugName: "allWidgets" }] : []));
|
|
1307
|
-
this.pinnedWidgets = signal([], ...(ngDevMode ? [{ debugName: "pinnedWidgets" }] : []));
|
|
1337
|
+
this.allWidgets = signal([], ...(ngDevMode ? [{ debugName: "allWidgets" }] : /* istanbul ignore next */ []));
|
|
1338
|
+
this.pinnedWidgets = signal([], ...(ngDevMode ? [{ debugName: "pinnedWidgets" }] : /* istanbul ignore next */ []));
|
|
1339
|
+
this.selectedWidgets = signal([], ...(ngDevMode ? [{ debugName: "selectedWidgets" }] : /* istanbul ignore next */ []));
|
|
1340
|
+
this.currentTabIndex = signal(0, ...(ngDevMode ? [{ debugName: "currentTabIndex" }] : /* istanbul ignore next */ []));
|
|
1341
|
+
/** Avoid persisting spurious tab events before restore + first paint complete. */
|
|
1342
|
+
this.allowTabPersistence = false;
|
|
1343
|
+
//#endregion
|
|
1344
|
+
//#region ---- Computed Properties ----
|
|
1308
1345
|
this.displayWidgets = computed(() => {
|
|
1309
1346
|
return this.allWidgets().map((c) => ({ ...c, pinned: this.pinnedWidgets().includes(c.name) }));
|
|
1310
|
-
}, ...(ngDevMode ? [{ debugName: "displayWidgets" }] : []));
|
|
1311
|
-
// Signal to track selected widgets
|
|
1312
|
-
this.selectedWidgets = signal([], ...(ngDevMode ? [{ debugName: "selectedWidgets" }] : []));
|
|
1313
|
-
// Computed for filtered and ordered widget list
|
|
1347
|
+
}, ...(ngDevMode ? [{ debugName: "displayWidgets" }] : /* istanbul ignore next */ []));
|
|
1314
1348
|
this.orderedList = computed(() => {
|
|
1315
1349
|
const search = this.searchTerm().toLowerCase();
|
|
1316
1350
|
const selectedTabName = this.selectedTab().name;
|
|
1317
1351
|
return orderBy(this.displayWidgets().filter((w) => {
|
|
1318
1352
|
const matchesTab = selectedTabName === 'all' || castArray(w.categories ?? []).some((c) => c.name === selectedTabName);
|
|
1319
|
-
const
|
|
1353
|
+
const titleText = this.mlResolver.resolve(w.title).toLowerCase();
|
|
1354
|
+
const descText = this.mlResolver.resolve(w.description ?? '').toLowerCase();
|
|
1355
|
+
const matchesSearch = !search || titleText.includes(search) || descText.includes(search);
|
|
1320
1356
|
return matchesTab && matchesSearch;
|
|
1321
|
-
}), [
|
|
1322
|
-
}, ...(ngDevMode ? [{ debugName: "orderedList" }] : []));
|
|
1323
|
-
|
|
1324
|
-
this.
|
|
1325
|
-
this.
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1357
|
+
}), [(w) => w.pinned, (w) => this.mlResolver.resolve(w.title)], ['desc', 'asc']);
|
|
1358
|
+
}, ...(ngDevMode ? [{ debugName: "orderedList" }] : /* istanbul ignore next */ []));
|
|
1359
|
+
this.pinnedList = computed(() => this.orderedList().filter((c) => c.pinned), ...(ngDevMode ? [{ debugName: "pinnedList" }] : /* istanbul ignore next */ []));
|
|
1360
|
+
this.regularList = computed(() => this.orderedList().filter((c) => !c.pinned), ...(ngDevMode ? [{ debugName: "regularList" }] : /* istanbul ignore next */ []));
|
|
1361
|
+
this.pinnedWidgetItems = computed(() => this.pinnedList().map(mapToWidgetItemData), ...(ngDevMode ? [{ debugName: "pinnedWidgetItems" }] : /* istanbul ignore next */ []));
|
|
1362
|
+
this.regularGroupedSections = computed(() => {
|
|
1363
|
+
const tabName = this.selectedTab().name;
|
|
1364
|
+
const list = this.regularList();
|
|
1365
|
+
if (tabName === 'all') {
|
|
1366
|
+
return this.buildAllTabSections(list);
|
|
1367
|
+
}
|
|
1368
|
+
return this.buildCategoryTabSections(list);
|
|
1369
|
+
}, ...(ngDevMode ? [{ debugName: "regularGroupedSections" }] : /* istanbul ignore next */ []));
|
|
1330
1370
|
this.categories = computed(() => uniqBy(this.allWidgets()
|
|
1331
1371
|
.map((w) => castArray(w.categories ?? []))
|
|
1332
1372
|
.filter((c) => c.length > 0)
|
|
1333
|
-
.flat(), 'name'), ...(ngDevMode ? [{ debugName: "categories" }] : []));
|
|
1334
|
-
this.tabs = computed(() => orderBy([{ name: 'all', title:
|
|
1335
|
-
|
|
1336
|
-
this.
|
|
1337
|
-
this.
|
|
1338
|
-
|
|
1339
|
-
|
|
1373
|
+
.flat(), 'name'), ...(ngDevMode ? [{ debugName: "categories" }] : /* istanbul ignore next */ []));
|
|
1374
|
+
this.tabs = computed(() => orderBy([{ name: 'all', title: WIDGET_PICKER_I18N.tabAll, order: 0 }, ...this.categories()], (c) => c.order), ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
|
|
1375
|
+
this.maxVisibleWidgets = computed(() => Math.max(1, ...this.categories().map((cat) => this.allWidgets().filter((w) => castArray(w.categories ?? []).some((wc) => wc.name === cat.name)).length)), ...(ngDevMode ? [{ debugName: "maxVisibleWidgets" }] : /* istanbul ignore next */ []));
|
|
1376
|
+
this.selectedTab = computed(() => this.tabs()[this.currentTabIndex()], ...(ngDevMode ? [{ debugName: "selectedTab" }] : /* istanbul ignore next */ []));
|
|
1377
|
+
this.pickerShellClass = computed(() => `axp-designer-widget-picker ax-flex ax-flex-col ax-h-[95vh] ${this.maxVisibleWidgets() > 10 ? 'lg:ax-h-[75vh]' : 'lg:ax-h-[50vh]'}`, ...(ngDevMode ? [{ debugName: "pickerShellClass" }] : /* istanbul ignore next */ []));
|
|
1378
|
+
afterNextRender(() => {
|
|
1379
|
+
this.allowTabPersistence = true;
|
|
1380
|
+
}, { injector: this.injector });
|
|
1381
|
+
}
|
|
1382
|
+
//#endregion
|
|
1383
|
+
//#region ---- Lifecycle Methods ----
|
|
1340
1384
|
async ngOnInit() {
|
|
1341
1385
|
super.ngOnInit();
|
|
1342
1386
|
this.allWidgets.set(this.widgets);
|
|
1343
1387
|
this.pinnedWidgets.set((await this.settingsService.get(this.pinnedSettingKey)) || []);
|
|
1388
|
+
await this.restoreLastTabFromSettings();
|
|
1389
|
+
}
|
|
1390
|
+
//#endregion
|
|
1391
|
+
//#region ---- Tab persistence (user settings) ----
|
|
1392
|
+
lastTabSettingKey(context) {
|
|
1393
|
+
return `forms:widgets:picker:last-tab:${context}`;
|
|
1394
|
+
}
|
|
1395
|
+
async restoreLastTabFromSettings() {
|
|
1396
|
+
const ctx = this.tabPersistenceContext;
|
|
1397
|
+
if (!ctx) {
|
|
1398
|
+
return;
|
|
1399
|
+
}
|
|
1400
|
+
const saved = await this.settingsService.get(this.lastTabSettingKey(ctx));
|
|
1401
|
+
if (!saved) {
|
|
1402
|
+
return;
|
|
1403
|
+
}
|
|
1404
|
+
const idx = this.tabs().findIndex((t) => t.name === saved);
|
|
1405
|
+
if (idx >= 0) {
|
|
1406
|
+
this.currentTabIndex.set(idx);
|
|
1407
|
+
this.syncTabsStripToIndex(idx);
|
|
1408
|
+
}
|
|
1344
1409
|
}
|
|
1345
|
-
|
|
1410
|
+
/**
|
|
1411
|
+
* `ax-tab-item` [active] updates labels, but `ax-tabs` keeps the underline from its own index until `select` runs.
|
|
1412
|
+
*/
|
|
1413
|
+
syncTabsStripToIndex(index) {
|
|
1414
|
+
afterNextRender(() => {
|
|
1415
|
+
this.tabsHost()?.select(index);
|
|
1416
|
+
}, { injector: this.injector });
|
|
1417
|
+
}
|
|
1418
|
+
async persistTabSelection(tabIndex) {
|
|
1419
|
+
const ctx = this.tabPersistenceContext;
|
|
1420
|
+
if (!ctx) {
|
|
1421
|
+
return;
|
|
1422
|
+
}
|
|
1423
|
+
const tab = this.tabs()[tabIndex];
|
|
1424
|
+
if (!tab) {
|
|
1425
|
+
return;
|
|
1426
|
+
}
|
|
1427
|
+
await this.settingsService.scope(AXPPlatformScope.User).set(this.lastTabSettingKey(ctx), tab.name);
|
|
1428
|
+
}
|
|
1429
|
+
//#endregion
|
|
1430
|
+
//#region ---- Grouped sections (All = parent only; category tab = sub-category) ----
|
|
1431
|
+
/**
|
|
1432
|
+
* Picks the primary parent category for the "All" tab (lowest `order` wins).
|
|
1433
|
+
*/
|
|
1434
|
+
primaryCategory(widget) {
|
|
1435
|
+
const cats = castArray(widget.categories ?? []);
|
|
1436
|
+
if (cats.length === 0) {
|
|
1437
|
+
return null;
|
|
1438
|
+
}
|
|
1439
|
+
return orderBy(cats, (c) => c.order)[0];
|
|
1440
|
+
}
|
|
1441
|
+
buildAllTabSections(list) {
|
|
1442
|
+
const categoryMeta = this.categories();
|
|
1443
|
+
const withCat = list.filter((w) => castArray(w.categories ?? []).length > 0);
|
|
1444
|
+
const withoutCat = list.filter((w) => castArray(w.categories ?? []).length === 0);
|
|
1445
|
+
const byPrimaryName = new Map();
|
|
1446
|
+
for (const w of withCat) {
|
|
1447
|
+
const primary = this.primaryCategory(w);
|
|
1448
|
+
if (primary == null) {
|
|
1449
|
+
continue;
|
|
1450
|
+
}
|
|
1451
|
+
const key = primary.name;
|
|
1452
|
+
const bucket = byPrimaryName.get(key) ?? [];
|
|
1453
|
+
bucket.push(w);
|
|
1454
|
+
byPrimaryName.set(key, bucket);
|
|
1455
|
+
}
|
|
1456
|
+
const orderedNames = orderBy([...byPrimaryName.keys()], (name) => categoryMeta.find((c) => c.name === name)?.order ?? 999);
|
|
1457
|
+
const sections = orderedNames.map((name) => {
|
|
1458
|
+
const cat = categoryMeta.find((c) => c.name === name);
|
|
1459
|
+
const widgets = orderBy(byPrimaryName.get(name), (w) => this.mlResolver.resolve(w.title), 'asc');
|
|
1460
|
+
return {
|
|
1461
|
+
trackKey: `cat:${name}`,
|
|
1462
|
+
title: cat?.title ?? null,
|
|
1463
|
+
widgetItems: widgets.map(mapToWidgetItemData),
|
|
1464
|
+
};
|
|
1465
|
+
});
|
|
1466
|
+
if (withoutCat.length > 0) {
|
|
1467
|
+
const widgets = orderBy(withoutCat, (w) => this.mlResolver.resolve(w.title), 'asc');
|
|
1468
|
+
sections.push({
|
|
1469
|
+
trackKey: 'cat:uncategorized',
|
|
1470
|
+
title: null,
|
|
1471
|
+
widgetItems: widgets.map(mapToWidgetItemData),
|
|
1472
|
+
});
|
|
1473
|
+
}
|
|
1474
|
+
return sections;
|
|
1475
|
+
}
|
|
1476
|
+
buildCategoryTabSections(list) {
|
|
1477
|
+
const withSub = list.filter((w) => w.subCategory != null);
|
|
1478
|
+
const withoutSub = list.filter((w) => w.subCategory == null);
|
|
1479
|
+
const bySubName = new Map();
|
|
1480
|
+
for (const w of withSub) {
|
|
1481
|
+
const key = w.subCategory.name;
|
|
1482
|
+
const bucket = bySubName.get(key) ?? [];
|
|
1483
|
+
bucket.push(w);
|
|
1484
|
+
bySubName.set(key, bucket);
|
|
1485
|
+
}
|
|
1486
|
+
const orderedSubNames = orderBy([...bySubName.keys()], (k) => bySubName.get(k)[0].subCategory.order);
|
|
1487
|
+
const sections = orderedSubNames.map((name) => {
|
|
1488
|
+
const widgets = orderBy(bySubName.get(name), (w) => this.mlResolver.resolve(w.title), 'asc');
|
|
1489
|
+
const sub = widgets[0].subCategory;
|
|
1490
|
+
return {
|
|
1491
|
+
trackKey: `sub:${name}`,
|
|
1492
|
+
title: sub.title,
|
|
1493
|
+
widgetItems: widgets.map(mapToWidgetItemData),
|
|
1494
|
+
};
|
|
1495
|
+
});
|
|
1496
|
+
if (withoutSub.length > 0) {
|
|
1497
|
+
const widgets = orderBy(withoutSub, (w) => this.mlResolver.resolve(w.title), 'asc');
|
|
1498
|
+
sections.push({
|
|
1499
|
+
trackKey: 'sub:ungrouped',
|
|
1500
|
+
title: null,
|
|
1501
|
+
widgetItems: widgets.map(mapToWidgetItemData),
|
|
1502
|
+
});
|
|
1503
|
+
}
|
|
1504
|
+
return sections;
|
|
1505
|
+
}
|
|
1506
|
+
//#endregion
|
|
1507
|
+
//#region ---- UI Handlers ----
|
|
1508
|
+
async handleTabChange(event) {
|
|
1346
1509
|
const indx = event.index;
|
|
1347
1510
|
if (this.currentTabIndex() != indx) {
|
|
1348
1511
|
this.currentTabIndex.set(indx);
|
|
1349
1512
|
}
|
|
1513
|
+
if (this.allowTabPersistence) {
|
|
1514
|
+
await this.persistTabSelection(indx);
|
|
1515
|
+
}
|
|
1350
1516
|
}
|
|
1351
1517
|
handleWidgetClick(clickEvent) {
|
|
1352
1518
|
const { event, widget } = clickEvent;
|
|
@@ -1355,16 +1521,13 @@ class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {
|
|
|
1355
1521
|
const currentSelection = this.selectedWidgets();
|
|
1356
1522
|
const isAlreadySelected = currentSelection.some((w) => w === originalWidget);
|
|
1357
1523
|
if (isAlreadySelected) {
|
|
1358
|
-
// Deselect widget if already selected
|
|
1359
1524
|
this.selectedWidgets.set(currentSelection.filter((w) => w !== originalWidget));
|
|
1360
1525
|
}
|
|
1361
1526
|
else {
|
|
1362
|
-
// Add widget to selection
|
|
1363
1527
|
this.selectedWidgets.set([...currentSelection, originalWidget]);
|
|
1364
1528
|
}
|
|
1365
1529
|
}
|
|
1366
1530
|
else {
|
|
1367
|
-
// If CTRL is not pressed, select only the clicked widget
|
|
1368
1531
|
this.close({ widgets: [originalWidget] });
|
|
1369
1532
|
}
|
|
1370
1533
|
}
|
|
@@ -1372,9 +1535,7 @@ class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {
|
|
|
1372
1535
|
const { widget } = clickEvent;
|
|
1373
1536
|
const originalWidget = widget.data;
|
|
1374
1537
|
originalWidget.pinned = !originalWidget.pinned;
|
|
1375
|
-
// Get the current list of pinned widgets from settings
|
|
1376
1538
|
let pinnedWidgets = (await this.settingsService.get(this.pinnedSettingKey)) || [];
|
|
1377
|
-
// Update the list of pinned widgets based on the pinned status
|
|
1378
1539
|
if (originalWidget.pinned) {
|
|
1379
1540
|
if (!pinnedWidgets.includes(originalWidget.name)) {
|
|
1380
1541
|
pinnedWidgets.push(originalWidget.name);
|
|
@@ -1383,27 +1544,25 @@ class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {
|
|
|
1383
1544
|
else {
|
|
1384
1545
|
pinnedWidgets = pinnedWidgets.filter((name) => name !== originalWidget.name);
|
|
1385
1546
|
}
|
|
1386
|
-
// Save the updated list of pinned widgets
|
|
1387
1547
|
await this.settingsService.scope(AXPPlatformScope.User).set(this.pinnedSettingKey, pinnedWidgets);
|
|
1388
|
-
// Trigger a re-render of the widgets
|
|
1389
1548
|
this.pinnedWidgets.set(pinnedWidgets);
|
|
1390
1549
|
}
|
|
1391
|
-
|
|
1550
|
+
handleConfirmSelection() {
|
|
1551
|
+
this.close({ widgets: this.selectedWidgets() });
|
|
1552
|
+
}
|
|
1553
|
+
//#endregion
|
|
1554
|
+
//#region ---- Selection state ----
|
|
1392
1555
|
isWidgetSelected(widget) {
|
|
1393
1556
|
return this.selectedWidgets().includes(widget);
|
|
1394
1557
|
}
|
|
1395
|
-
// Check if a generic widget item is selected
|
|
1396
1558
|
isWidgetItemSelected(widgetItem) {
|
|
1397
1559
|
const originalWidget = widgetItem.data;
|
|
1398
1560
|
return this.isWidgetSelected(originalWidget);
|
|
1399
1561
|
}
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
}
|
|
1403
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPDesignerWidgetPickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1404
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPDesignerWidgetPickerComponent, isStandalone: true, selector: "ng-component", inputs: { searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTerm: "searchTermChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"ax-flex ax-flex-col ax-h-[95vh]\"\n [ngClass]=\"{ 'lg:ax-h-[75vh]': maxVisibleWidgets() > 10, 'lg:ax-h-[50vh]': maxVisibleWidgets() <= 10 }\">\n <div>\n <ax-tabs [look]=\"'with-line'\" (onActiveTabChanged)=\"handleTabChange($event)\">\n @for(w of tabs();track $index) {\n <ax-tab-item [text]=\"w.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-overflow-auto\" #content>\n <div class=\"ax-p-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-lightest ax-shadow-xl'\" [stickyParent]=\"content\" [stickyOffset]=\"10\">\n <ax-search-box look=\"fill\" placeholder=\"e.g. Button, Text, ...\" [(ngModel)]=\"searchTerm\" [delayTime]=\"300\"\n [axAutoFocus]=\"true\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-p-4 ax-pt-0\">\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for(widgetItem of pinnedWidgetItems();track widgetItem.title) {\n <axp-widget-item [widget]=\"widgetItem\" [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\" (onPinClick)=\"handleWidgetPinClick($event)\">\n </axp-widget-item>\n }\n </div>\n @if(pinnedWidgetItems().length) {\n <hr class=\"ax-my-4 ax-border-dashed\" />\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for(widgetItem of regularWidgetItems();track widgetItem.title) {\n <axp-widget-item [widget]=\"widgetItem\" [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\" (onPinClick)=\"handleWidgetPinClick($event)\">\n </axp-widget-item>\n }\n </div>\n </div>\n </div>\n</div>\n@if(selectedWidgets().length) {\n<ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" color=\"primary\" text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"></ax-button>\n </ax-suffix>\n</ax-footer>\n}", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type: i2$1.AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", 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: AXTabsModule }, { kind: "component", type: i6.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i6.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i7.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "component", type: AXPWidgetItemComponent, selector: "axp-widget-item", inputs: ["widget", "isSelected", "showPinButton", "customClasses"], outputs: ["onWidgetClick", "onPinClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1562
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerWidgetPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1563
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDesignerWidgetPickerComponent, isStandalone: true, selector: "ng-component", inputs: { searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTerm: "searchTermChange" }, viewQueries: [{ propertyName: "tabsHost", first: true, predicate: ["tabsHost"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"pickerShellClass()\">\n <div>\n <ax-tabs #tabsHost [look]=\"'with-line'\" (onActiveTabChanged)=\"handleTabChange($event)\">\n @for (w of tabs(); track w.name; let i = $index) {\n <ax-tab-item\n [text]=\"(w.title | translate | async)!\"\n [key]=\"w.name\"\n [active]=\"currentTabIndex() === i\"\n ></ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-overflow-auto\" #content>\n <div\n class=\"ax-p-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-lightest ax-shadow-xl'\"\n [stickyParent]=\"content\"\n [stickyOffset]=\"10\"\n >\n <ax-search-box\n look=\"fill\"\n [placeholder]=\"(i18n.searchPlaceholder | translate | async) ?? ''\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n [axAutoFocus]=\"true\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-p-4 ax-pt-0\">\n @if (pinnedWidgetItems().length) {\n <div class=\"axp-designer-widget-picker__section axp-designer-widget-picker__section--first\">\n <div class=\"axp-designer-widget-picker__group-heading\">\n <span class=\"axp-designer-widget-picker__group-title\">{{\n (i18n.pinnedSectionTitle | translate | async) ?? ''\n }}</span>\n <span class=\"axp-designer-widget-picker__group-line\"></span>\n </div>\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track $any(widgetItem.data).name) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n }\n @for (group of regularGroupedSections(); track group.trackKey; let isFirst = $first) {\n <div\n class=\"axp-designer-widget-picker__section\"\n [class.axp-designer-widget-picker__section--first]=\"isFirst && pinnedWidgetItems().length === 0\"\n >\n @if (group.title) {\n <div class=\"axp-designer-widget-picker__group-heading\">\n <span class=\"axp-designer-widget-picker__group-title\">{{\n (group.title | translate | async) ?? ''\n }}</span>\n <span class=\"axp-designer-widget-picker__group-line\"></span>\n </div>\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of group.widgetItems; track $any(widgetItem.data).name) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"(i18n.selectedCount | translate: { params: { count: selectedWidgets().length } } | async) ?? ''\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n", styles: [".axp-designer-widget-picker__group-heading{margin-bottom:.75rem;display:flex;align-items:center;gap:.75rem;padding-bottom:.25rem}.axp-designer-widget-picker__group-title{flex-shrink:0;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}.axp-designer-widget-picker__group-line{min-width:1rem;flex:1 1 0%;border-top-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1))}.axp-designer-widget-picker__section{margin-top:1.5rem;padding-top:.25rem}.axp-designer-widget-picker__section--first{margin-top:0;padding-top:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type: i1$1.AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", 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: AXTabsModule }, { kind: "component", type: i5.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i5.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "component", type: AXPWidgetItemComponent, selector: "axp-widget-item", inputs: ["widget", "isSelected", "showPinButton", "customClasses"], outputs: ["onWidgetClick", "onPinClick"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1405
1564
|
}
|
|
1406
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1565
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerWidgetPickerComponent, decorators: [{
|
|
1407
1566
|
type: Component,
|
|
1408
1567
|
args: [{ imports: [
|
|
1409
1568
|
CommonModule,
|
|
@@ -1415,8 +1574,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1415
1574
|
AXSearchBoxModule,
|
|
1416
1575
|
AXPStickyDirective,
|
|
1417
1576
|
AXPWidgetItemComponent,
|
|
1418
|
-
|
|
1419
|
-
|
|
1577
|
+
AXTranslationModule,
|
|
1578
|
+
], encapsulation: ViewEncapsulation.None, template: "<div [class]=\"pickerShellClass()\">\n <div>\n <ax-tabs #tabsHost [look]=\"'with-line'\" (onActiveTabChanged)=\"handleTabChange($event)\">\n @for (w of tabs(); track w.name; let i = $index) {\n <ax-tab-item\n [text]=\"(w.title | translate | async)!\"\n [key]=\"w.name\"\n [active]=\"currentTabIndex() === i\"\n ></ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-overflow-auto\" #content>\n <div\n class=\"ax-p-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-lightest ax-shadow-xl'\"\n [stickyParent]=\"content\"\n [stickyOffset]=\"10\"\n >\n <ax-search-box\n look=\"fill\"\n [placeholder]=\"(i18n.searchPlaceholder | translate | async) ?? ''\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n [axAutoFocus]=\"true\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-p-4 ax-pt-0\">\n @if (pinnedWidgetItems().length) {\n <div class=\"axp-designer-widget-picker__section axp-designer-widget-picker__section--first\">\n <div class=\"axp-designer-widget-picker__group-heading\">\n <span class=\"axp-designer-widget-picker__group-title\">{{\n (i18n.pinnedSectionTitle | translate | async) ?? ''\n }}</span>\n <span class=\"axp-designer-widget-picker__group-line\"></span>\n </div>\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track $any(widgetItem.data).name) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n }\n @for (group of regularGroupedSections(); track group.trackKey; let isFirst = $first) {\n <div\n class=\"axp-designer-widget-picker__section\"\n [class.axp-designer-widget-picker__section--first]=\"isFirst && pinnedWidgetItems().length === 0\"\n >\n @if (group.title) {\n <div class=\"axp-designer-widget-picker__group-heading\">\n <span class=\"axp-designer-widget-picker__group-title\">{{\n (group.title | translate | async) ?? ''\n }}</span>\n <span class=\"axp-designer-widget-picker__group-line\"></span>\n </div>\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for (widgetItem of group.widgetItems; track $any(widgetItem.data).name) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"(i18n.selectedCount | translate: { params: { count: selectedWidgets().length } } | async) ?? ''\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n", styles: [".axp-designer-widget-picker__group-heading{margin-bottom:.75rem;display:flex;align-items:center;gap:.75rem;padding-bottom:.25rem}.axp-designer-widget-picker__group-title{flex-shrink:0;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}.axp-designer-widget-picker__group-line{min-width:1rem;flex:1 1 0%;border-top-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1))}.axp-designer-widget-picker__section{margin-top:1.5rem;padding-top:.25rem}.axp-designer-widget-picker__section--first{margin-top:0;padding-top:0}\n"] }]
|
|
1579
|
+
}], ctorParameters: () => [], propDecorators: { tabsHost: [{ type: i0.ViewChild, args: ['tabsHost', { isSignal: true }] }], searchTerm: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchTerm", required: false }] }, { type: i0.Output, args: ["searchTermChange"] }] } });
|
|
1420
1580
|
|
|
1421
1581
|
var widgetPicker_component = /*#__PURE__*/Object.freeze({
|
|
1422
1582
|
__proto__: null,
|
|
@@ -1428,22 +1588,22 @@ class AXPWidgetDesignerRendererDirective {
|
|
|
1428
1588
|
* @ignore
|
|
1429
1589
|
*/
|
|
1430
1590
|
constructor() {
|
|
1431
|
-
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : []));
|
|
1591
|
+
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : /* istanbul ignore next */ []));
|
|
1432
1592
|
this.injector = inject(Injector);
|
|
1433
1593
|
this.widgetRegistry = inject(AXPWidgetRegistryService);
|
|
1434
1594
|
this.zone = inject(NgZone);
|
|
1435
|
-
this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
|
|
1595
|
+
this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
|
|
1436
1596
|
this.isLoadingComponent = false;
|
|
1437
1597
|
this.currentNodeId = null;
|
|
1438
1598
|
this.service = inject(AXPDesignerService);
|
|
1439
1599
|
this.viewContainerRef = inject(ViewContainerRef);
|
|
1440
|
-
this.parentNode = input(...(ngDevMode ? [undefined, { debugName: "parentNode" }] : []));
|
|
1441
|
-
this.parentElement = input(...(ngDevMode ? [undefined, { debugName: "parentElement" }] : []));
|
|
1442
|
-
this.parentComponent = input(...(ngDevMode ? [undefined, { debugName: "parentComponent" }] : []));
|
|
1443
|
-
this.index = input(...(ngDevMode ? [undefined, { debugName: "index" }] : []));
|
|
1444
|
-
this.locked = input(false, ...(ngDevMode ? [{ debugName: "locked" }] : []));
|
|
1445
|
-
this.mode = input.required(...(ngDevMode ? [{ debugName: "mode" }] : []));
|
|
1446
|
-
this.node = input.required(...(ngDevMode ? [{ debugName: "node" }] : []));
|
|
1600
|
+
this.parentNode = input(...(ngDevMode ? [undefined, { debugName: "parentNode" }] : /* istanbul ignore next */ []));
|
|
1601
|
+
this.parentElement = input(...(ngDevMode ? [undefined, { debugName: "parentElement" }] : /* istanbul ignore next */ []));
|
|
1602
|
+
this.parentComponent = input(...(ngDevMode ? [undefined, { debugName: "parentComponent" }] : /* istanbul ignore next */ []));
|
|
1603
|
+
this.index = input(...(ngDevMode ? [undefined, { debugName: "index" }] : /* istanbul ignore next */ []));
|
|
1604
|
+
this.locked = input(false, ...(ngDevMode ? [{ debugName: "locked" }] : /* istanbul ignore next */ []));
|
|
1605
|
+
this.mode = input.required(...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
1606
|
+
this.node = input.required(...(ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []));
|
|
1447
1607
|
this.hostElement = () => this.instance?.host;
|
|
1448
1608
|
this.getId = (w) => get(w, '__meta__.id');
|
|
1449
1609
|
this.isCurrentWidget = (w) => this.getId(w) == this.getId(this.node());
|
|
@@ -1689,10 +1849,10 @@ class AXPWidgetDesignerRendererDirective {
|
|
|
1689
1849
|
});
|
|
1690
1850
|
this.instance?.setOptions(this.mergedOptions());
|
|
1691
1851
|
}
|
|
1692
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1693
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
1852
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetDesignerRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1853
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: AXPWidgetDesignerRendererDirective, isStandalone: true, selector: "[axp-widget-designer-renderer]", inputs: { parentNode: { classPropertyName: "parentNode", publicName: "parentNode", isSignal: true, isRequired: false, transformFunction: null }, parentElement: { classPropertyName: "parentElement", publicName: "parentElement", isSignal: true, isRequired: false, transformFunction: null }, parentComponent: { classPropertyName: "parentComponent", publicName: "parentComponent", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, locked: { classPropertyName: "locked", publicName: "locked", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, usesOnChanges: true, ngImport: i0 }); }
|
|
1694
1854
|
}
|
|
1695
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1855
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetDesignerRendererDirective, decorators: [{
|
|
1696
1856
|
type: Directive,
|
|
1697
1857
|
args: [{
|
|
1698
1858
|
selector: '[axp-widget-designer-renderer]',
|
|
@@ -1749,6 +1909,7 @@ class AXPDesignerBoardComponent {
|
|
|
1749
1909
|
constructor() {
|
|
1750
1910
|
this.context = {};
|
|
1751
1911
|
this.elementRef = inject((ElementRef));
|
|
1912
|
+
this.mlResolver = inject(AXTranslationService);
|
|
1752
1913
|
this.breakpointMap = {
|
|
1753
1914
|
sm: 640,
|
|
1754
1915
|
md: 768,
|
|
@@ -1767,13 +1928,13 @@ class AXPDesignerBoardComponent {
|
|
|
1767
1928
|
default:
|
|
1768
1929
|
return '100%';
|
|
1769
1930
|
}
|
|
1770
|
-
}, ...(ngDevMode ? [{ debugName: "width" }] : []));
|
|
1931
|
+
}, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
|
|
1771
1932
|
this.ef = effect(() => {
|
|
1772
1933
|
this.removeCustomClass();
|
|
1773
1934
|
if (this.service.size() != 'xl') {
|
|
1774
1935
|
this.applyResponsiveStyles(this.service.size());
|
|
1775
1936
|
}
|
|
1776
|
-
}, ...(ngDevMode ? [{ debugName: "ef" }] : []));
|
|
1937
|
+
}, ...(ngDevMode ? [{ debugName: "ef" }] : /* istanbul ignore next */ []));
|
|
1777
1938
|
this.service.onRefresh.subscribe(() => {
|
|
1778
1939
|
this.contextMenu?.refresh();
|
|
1779
1940
|
});
|
|
@@ -1815,7 +1976,7 @@ class AXPDesignerBoardComponent {
|
|
|
1815
1976
|
const parentContextItems = this.service.getContextMenuItems(widget);
|
|
1816
1977
|
// Create a new menu item for this parent
|
|
1817
1978
|
const parentMenuItem = {
|
|
1818
|
-
text: parent.config.title,
|
|
1979
|
+
text: this.mlResolver.resolve(parent.config.title),
|
|
1819
1980
|
icon: parent.config.icon,
|
|
1820
1981
|
items: [
|
|
1821
1982
|
{
|
|
@@ -1850,12 +2011,12 @@ class AXPDesignerBoardComponent {
|
|
|
1850
2011
|
}
|
|
1851
2012
|
async handleContextMenuItemClick(e) {
|
|
1852
2013
|
if (e.item.name) {
|
|
1853
|
-
const instance = get(e.item.data,
|
|
2014
|
+
const instance = get(e.item.data, 'instance');
|
|
1854
2015
|
await this.service.executeCommand({ instance, name: e.item.name });
|
|
1855
2016
|
}
|
|
1856
2017
|
}
|
|
1857
2018
|
bindInstanceToItems(items, instance) {
|
|
1858
|
-
items.forEach(item => {
|
|
2019
|
+
items.forEach((item) => {
|
|
1859
2020
|
// Ensure each item gets the correct instance
|
|
1860
2021
|
item.data = { ...(item.data ?? {}), instance };
|
|
1861
2022
|
// If the item has sub-items, bind instance to them recursively
|
|
@@ -1879,10 +2040,10 @@ class AXPDesignerBoardComponent {
|
|
|
1879
2040
|
cls[`axp-preview-${this.service.size()}`] = true;
|
|
1880
2041
|
return cls;
|
|
1881
2042
|
}
|
|
1882
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1883
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2043
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerBoardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2044
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPDesignerBoardComponent, isStandalone: true, selector: "axp-designer-board", host: { properties: { "style": "this.__style", "class": "this.__class" } }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["contextMenu"], descendants: true }], ngImport: i0, template: "<axp-widgets-container [context]=\"context\">\n <ng-container axp-widget-designer-renderer [node]=\"service.currentPage()\" [mode]=\"'designer'\"></ng-container>\n</axp-widgets-container>\n\n<ax-context-menu class=\"ax-dark\" #contextMenu [target]=\"'.axp-widget-host'\" [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\" (onOpening)=\"handleContextMenuOpening($event)\" (onItemClick)=\"handleContextMenuItemClick($event)\">\n</ax-context-menu>", dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$3.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: AXPWidgetDesignerRendererDirective, selector: "[axp-widget-designer-renderer]", inputs: ["parentNode", "parentElement", "parentComponent", "index", "locked", "mode", "node"] }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i2$2.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening", "onClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1884
2045
|
}
|
|
1885
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2046
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerBoardComponent, decorators: [{
|
|
1886
2047
|
type: Component,
|
|
1887
2048
|
args: [{ selector: 'axp-designer-board', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXPWidgetCoreModule, AXPWidgetDesignerRendererDirective, AXMenuModule], template: "<axp-widgets-container [context]=\"context\">\n <ng-container axp-widget-designer-renderer [node]=\"service.currentPage()\" [mode]=\"'designer'\"></ng-container>\n</axp-widgets-container>\n\n<ax-context-menu class=\"ax-dark\" #contextMenu [target]=\"'.axp-widget-host'\" [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\" (onOpening)=\"handleContextMenuOpening($event)\" (onItemClick)=\"handleContextMenuItemClick($event)\">\n</ax-context-menu>" }]
|
|
1888
2049
|
}], ctorParameters: () => [], propDecorators: { contextMenu: [{
|
|
@@ -1909,21 +2070,21 @@ class AXPDesignerBreadcrumbsComponent {
|
|
|
1909
2070
|
handleMouseOver(node) {
|
|
1910
2071
|
this.service.focus({ widget: node });
|
|
1911
2072
|
}
|
|
1912
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1913
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2073
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2074
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDesignerBreadcrumbsComponent, isStandalone: true, selector: "axp-designer-breadcrumbs", ngImport: i0, template: `
|
|
1914
2075
|
<ax-breadcrumbs>
|
|
1915
2076
|
@for( b of service.breadcrumbs();track $index){
|
|
1916
2077
|
<ax-breadcrumbs-item>
|
|
1917
|
-
<a (click)="handleClick(b)" (mouseover)="handleMouseOver(b)"> {{ getTitle(b) }}</a>
|
|
2078
|
+
<a (click)="handleClick(b)" (mouseover)="handleMouseOver(b)"> {{ getTitle(b) | translate | async }}</a>
|
|
1918
2079
|
</ax-breadcrumbs-item>
|
|
1919
2080
|
}
|
|
1920
2081
|
<ng-template #divider>
|
|
1921
2082
|
<i class="ax-icon ax-icon-chevron-right"></i>
|
|
1922
2083
|
</ng-template>
|
|
1923
2084
|
</ax-breadcrumbs>
|
|
1924
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i1$
|
|
2085
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i1$4.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i1$4.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i8.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1925
2086
|
}
|
|
1926
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2087
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerBreadcrumbsComponent, decorators: [{
|
|
1927
2088
|
type: Component,
|
|
1928
2089
|
args: [{
|
|
1929
2090
|
selector: 'axp-designer-breadcrumbs',
|
|
@@ -1931,7 +2092,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1931
2092
|
<ax-breadcrumbs>
|
|
1932
2093
|
@for( b of service.breadcrumbs();track $index){
|
|
1933
2094
|
<ax-breadcrumbs-item>
|
|
1934
|
-
<a (click)="handleClick(b)" (mouseover)="handleMouseOver(b)"> {{ getTitle(b) }}</a>
|
|
2095
|
+
<a (click)="handleClick(b)" (mouseover)="handleMouseOver(b)"> {{ getTitle(b) | translate | async }}</a>
|
|
1935
2096
|
</ax-breadcrumbs-item>
|
|
1936
2097
|
}
|
|
1937
2098
|
<ng-template #divider>
|
|
@@ -1941,17 +2102,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1941
2102
|
`,
|
|
1942
2103
|
encapsulation: ViewEncapsulation.None,
|
|
1943
2104
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1944
|
-
imports: [AXPWidgetCoreModule, AXBreadcrumbsModule, AXDecoratorModule]
|
|
2105
|
+
imports: [AXPWidgetCoreModule, AXBreadcrumbsModule, AXDecoratorModule, AXTranslationModule, AsyncPipe]
|
|
1945
2106
|
}]
|
|
1946
2107
|
}] });
|
|
1947
2108
|
|
|
1948
2109
|
class AXPLayoutDesignerDrawerContentComponent {
|
|
1949
2110
|
constructor() { }
|
|
1950
2111
|
ngOnInit() { }
|
|
1951
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1952
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutDesignerDrawerContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPLayoutDesignerDrawerContentComponent, isStandalone: true, selector: "axp-designer-drawer-content", ngImport: i0, template: "<div class=\"ax-flex ax-flex-col ax-border-e ax-w-72 ax-h-full\">\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-p-2 ax-border-b\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center ax-font-semibold\">\n <ng-content select=\"ax-title\"></ng-content>\n </div>\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <ng-content select=\"ax-content[header]\">\n </ng-content>\n <ax-close-button></ax-close-button>\n </div>\n </div>\n <div class=\"ax-flex-1 ax-h-full ax-overflow-auto\">\n <ng-content select=\"ax-content[body]\">\n\n </ng-content>\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }] }); }
|
|
1953
2114
|
}
|
|
1954
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutDesignerDrawerContentComponent, decorators: [{
|
|
1955
2116
|
type: Component,
|
|
1956
2117
|
args: [{ imports: [AXDecoratorModule], selector: 'axp-designer-drawer-content', template: "<div class=\"ax-flex ax-flex-col ax-border-e ax-w-72 ax-h-full\">\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-p-2 ax-border-b\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center ax-font-semibold\">\n <ng-content select=\"ax-title\"></ng-content>\n </div>\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <ng-content select=\"ax-content[header]\">\n </ng-content>\n <ax-close-button></ax-close-button>\n </div>\n </div>\n <div class=\"ax-flex-1 ax-h-full ax-overflow-auto\">\n <ng-content select=\"ax-content[body]\">\n\n </ng-content>\n </div>\n</div>" }]
|
|
1957
2118
|
}], ctorParameters: () => [] });
|
|
@@ -1961,7 +2122,7 @@ class AXPDesignerDataSourcesComponent {
|
|
|
1961
2122
|
this.service = inject(AXPDesignerService);
|
|
1962
2123
|
this.workflow = inject(AXPWorkflowService);
|
|
1963
2124
|
this.dataSourceProvider = inject(AXPDataSourceDefinitionProviderService);
|
|
1964
|
-
this.list = signal([], ...(ngDevMode ? [{ debugName: "list" }] : []));
|
|
2125
|
+
this.list = signal([], ...(ngDevMode ? [{ debugName: "list" }] : /* istanbul ignore next */ []));
|
|
1965
2126
|
}
|
|
1966
2127
|
async ngOnInit() {
|
|
1967
2128
|
const items = (await this.dataSourceProvider.items()).map(c => ({ name: c.name, title: c.title }));
|
|
@@ -1984,10 +2145,10 @@ class AXPDesignerDataSourcesComponent {
|
|
|
1984
2145
|
}
|
|
1985
2146
|
});
|
|
1986
2147
|
}
|
|
1987
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1988
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2148
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerDataSourcesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2149
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDesignerDataSourcesComponent, isStandalone: true, selector: "axp-designer-data-sources", ngImport: i0, template: "<axp-designer-drawer-content>\n <ax-title>Data Sources</ax-title>\n\n <ax-content header>\n <ax-button look=\"blank\" class=\"ax-sm\" title=\"Add New Data Source\" (onClick)=\"handleAddClick()\">\n <ax-icon class=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n </ax-content>\n\n <ax-content body>\n @if (list().length) {\n <ul class=\"axp-designer-drawer-list\">\n @for (item of list(); track $index) {\n <li>\n <i class=\"ax-me-1 fa-solid fa-table\"></i>\n {{ item.title }}\n </li>\n }\n </ul>\n } @else {\n <axp-state-message\n icon=\"fa-light fa-database\"\n [title]=\"'@layout-designer:components.data-sources.empty-states.no-data-sources.title'\"\n [description]=\"'@layout-designer:components.data-sources.empty-states.no-data-sources.description'\"\n >\n </axp-state-message>\n }\n </ax-content>\n</axp-designer-drawer-content>\n", dependencies: [{ 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: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXPLayoutDesignerDrawerContentComponent, selector: "axp-designer-drawer-content" }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "look"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1989
2150
|
}
|
|
1990
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerDataSourcesComponent, decorators: [{
|
|
1991
2152
|
type: Component,
|
|
1992
2153
|
args: [{ selector: 'axp-designer-data-sources', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1993
2154
|
AXDecoratorModule,
|
|
@@ -2001,10 +2162,10 @@ class AXPDesignerHistoryComponent {
|
|
|
2001
2162
|
constructor() {
|
|
2002
2163
|
this.service = inject(AXPDesignerService);
|
|
2003
2164
|
}
|
|
2004
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2005
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2165
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2166
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDesignerHistoryComponent, isStandalone: true, selector: "axp-designer-history", ngImport: i0, template: "<axp-designer-drawer-content>\n <ax-title>History</ax-title>\n\n <ax-content header>\n <ax-button look=\"blank\" class=\"ax-sm\">\n <ax-icon class=\"fa-light fa-ellipsis\"></ax-icon>\n <ax-dropdown-panel class=\"ax-sm\">\n <ax-button-item-list>\n <ax-button-item text=\"Clear\" name=\"add\" (onClick)=\"service.clearHistory()\"> </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </ax-content>\n\n <ax-content body>\n @if (service.history().length) {\n <ul class=\"axp-designer-drawer-list\">\n @for (step of service.history(); track $index) {\n <li\n (click)=\"service.navigateTo($index)\"\n [class.ax-italic]=\"step.isFuture\"\n [class.ax-text-neutral-400]=\"step.isFuture\"\n [class.ax-state-selected]=\"step.isCurrent\"\n >\n <i class=\"ax-me-1\" [ngClass]=\"step.icon\"></i>\n {{ step.description }}\n </li>\n }\n </ul>\n } @else {\n <axp-state-message\n icon=\"fa-light fa-history\"\n [title]=\"'@layout-designer:components.history.empty-states.no-changes.title'\"\n [description]=\"'@layout-designer:components.history.empty-states.no-changes.description'\"\n >\n </axp-state-message>\n }\n </ax-content>\n</axp-designer-drawer-content>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXPLayoutDesignerDrawerContentComponent, selector: "axp-designer-drawer-content" }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "look"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2006
2167
|
}
|
|
2007
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2168
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerHistoryComponent, decorators: [{
|
|
2008
2169
|
type: Component,
|
|
2009
2170
|
args: [{ selector: 'axp-designer-history', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2010
2171
|
CommonModule,
|
|
@@ -2020,7 +2181,7 @@ class AXPDesignerOutlineComponent {
|
|
|
2020
2181
|
constructor() {
|
|
2021
2182
|
this.service = inject(AXPDesignerService);
|
|
2022
2183
|
this.collapsedStates = new Map();
|
|
2023
|
-
this.root = signal(this.getTree(), ...(ngDevMode ? [{ debugName: "root" }] : []));
|
|
2184
|
+
this.root = signal(this.getTree(), ...(ngDevMode ? [{ debugName: "root" }] : /* istanbul ignore next */ []));
|
|
2024
2185
|
merge$1(this.service.onRefresh, this.service.onUpdate).subscribe(() => {
|
|
2025
2186
|
this.root.update((c) => ({ ...this.getTree() }));
|
|
2026
2187
|
});
|
|
@@ -2054,10 +2215,10 @@ class AXPDesignerOutlineComponent {
|
|
|
2054
2215
|
e.stopPropagation();
|
|
2055
2216
|
this.service.focus({ widget: node });
|
|
2056
2217
|
}
|
|
2057
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2058
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2218
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerOutlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2219
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDesignerOutlineComponent, isStandalone: true, selector: "axp-designer-outline", ngImport: i0, template: "<axp-designer-drawer-content>\n <ax-title>Outline</ax-title>\n\n <ax-content body>\n @if (root().children?.length) {\n <ul class=\"ax-space-y-1 ax-p-1 ax-text-white ax-text-sm\">\n @for (node of root().children; track $index) {\n <ng-container [ngTemplateOutlet]=\"sideMenu\" [ngTemplateOutletContext]=\"{ $implicit: node }\"> </ng-container>\n }\n </ul>\n <ng-template #sideMenu let-item>\n <li (click)=\"handleClick($event, item)\" (mouseover)=\"handleMouseOver($event, item)\">\n <div\n [class.ax-bg-neutral-700]=\"item === service.selectedNode()\"\n class=\"ax-flex ax-flex-row ax-items-center ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out ax-hover:bg-gray-700 ax-py-1 ax-px-2 ax-rounded-sm ax-group\"\n >\n <span class=\"ax-w-5\">\n @if (item.children?.length) {\n <i\n class=\"fa-solid\"\n [class.fa-chevron-right]=\"isCollapsed(item)\"\n (click)=\"handleToggleClick($event, item)\"\n [class.fa-chevron-down]=\"!isCollapsed(item)\"\n ></i>\n }\n </span>\n @let config = getConfig(item);\n <span class=\"ax-w-5\">\n @if (config.icon) {\n <i [ngClass]=\"config.icon\"></i>\n }\n </span>\n <span class=\"ax-truncate ax-flex-1 ax-pe-2\">{{ config.title }} : {{ item.name }}</span>\n <div class=\"ax-invisible group-hover:ax-visible ax-flex ax-gap-2 ax-justify-end\">\n @if (config.type == 'container') {\n <i class=\"fa-light fa-plus hover:ax-text-primary-500\" (click)=\"service.showPicker(item)\"></i>\n }\n @if (config.name != 'page-layout') {\n <i class=\"fa-light fa-xmark hover:ax-text-danger-500\" (click)=\"service.removeWidget(item)\"></i>\n }\n </div>\n </div>\n @if (item.children?.length && !isCollapsed(item)) {\n <ul class=\"ax-space-y-1 ax-ps-3 ax-text-white ax-text-sm\">\n @for (child of item.children; track child) {\n <ng-container [ngTemplateOutlet]=\"sideMenu\" [ngTemplateOutletContext]=\"{ $implicit: child }\">\n </ng-container>\n }\n </ul>\n }\n </li>\n </ng-template>\n } @else {\n <axp-state-message\n icon=\"fa-light fa-shapes\"\n [title]=\"'@layout-designer:components.outline.empty-states.no-widgets.title'\"\n [description]=\"'@layout-designer:components.outline.empty-states.no-widgets.description'\"\n >\n </axp-state-message>\n }\n </ax-content>\n</axp-designer-drawer-content>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXDecoratorModule }, { 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: "component", type: AXPLayoutDesignerDrawerContentComponent, selector: "axp-designer-drawer-content" }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "look"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2059
2220
|
}
|
|
2060
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerOutlineComponent, decorators: [{
|
|
2061
2222
|
type: Component,
|
|
2062
2223
|
args: [{ selector: 'axp-designer-outline', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2063
2224
|
CommonModule,
|
|
@@ -2071,10 +2232,10 @@ class AXPDesignerPagesComponent {
|
|
|
2071
2232
|
constructor() {
|
|
2072
2233
|
this.service = inject(AXPDesignerService);
|
|
2073
2234
|
}
|
|
2074
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2075
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2235
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerPagesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2236
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDesignerPagesComponent, isStandalone: true, selector: "axp-designer-pages", ngImport: i0, template: "<axp-designer-drawer-content class=\"ax-text-on-lightest\">\n <ax-title>Pages</ax-title>\n <ax-content header>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"service.addNewPage()\" title=\"Add New Page\">\n <ax-icon class=\"fa-light fa-file-circle-plus\"></ax-icon>\n </ax-button>\n </ax-content>\n\n <ax-content body>\n @let count = service.document().children?.length ?? 0; @if(count) {\n <ul class=\"ax-text-sm ax-p-2 ax-rounded ax-md ax-space-y-1\">\n @for( page of service.document().children;track $index) {\n <li (click)=\"service.goToPage($index)\"\n class=\"ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out hover:ax-bg-dark ax-py-1 ax-px-2 ax-rounded-sm ax-group ax-flex ax-justify-between ax-items-center\"\n [class.ax-bg-darkest]=\"$index == service.currentPageIndex()\">\n <div>\n <i class=\"fa-light fa-file ax-me-1\"></i>\n Page {{ $index + 1 }}\n </div>\n <div class=\"ax-invisible group-hover:ax-visible ax-flex ax-gap-2\">\n @if(count>1) {\n <i class=\"fa-light fa-xmark hover:ax-text-danger-500\" (click)=\"service.removePage($index)\"></i>\n }\n <i class=\"fa-light fa-clone hover:ax-text-primary-500\" (click)=\"service.clonePage($index)\"></i>\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"ax-flex ax-justify-center ax-items-center ax-text-gray-300 ax-p-4\">No pages found in the document</div>\n }\n </ax-content>\n</axp-designer-drawer-content>\n", dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { 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: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXPLayoutDesignerDrawerContentComponent, selector: "axp-designer-drawer-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2076
2237
|
}
|
|
2077
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerPagesComponent, decorators: [{
|
|
2078
2239
|
type: Component,
|
|
2079
2240
|
args: [{ selector: 'axp-designer-pages', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2080
2241
|
AXPWidgetCoreModule,
|
|
@@ -2084,16 +2245,72 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
2084
2245
|
], template: "<axp-designer-drawer-content class=\"ax-text-on-lightest\">\n <ax-title>Pages</ax-title>\n <ax-content header>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"service.addNewPage()\" title=\"Add New Page\">\n <ax-icon class=\"fa-light fa-file-circle-plus\"></ax-icon>\n </ax-button>\n </ax-content>\n\n <ax-content body>\n @let count = service.document().children?.length ?? 0; @if(count) {\n <ul class=\"ax-text-sm ax-p-2 ax-rounded ax-md ax-space-y-1\">\n @for( page of service.document().children;track $index) {\n <li (click)=\"service.goToPage($index)\"\n class=\"ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out hover:ax-bg-dark ax-py-1 ax-px-2 ax-rounded-sm ax-group ax-flex ax-justify-between ax-items-center\"\n [class.ax-bg-darkest]=\"$index == service.currentPageIndex()\">\n <div>\n <i class=\"fa-light fa-file ax-me-1\"></i>\n Page {{ $index + 1 }}\n </div>\n <div class=\"ax-invisible group-hover:ax-visible ax-flex ax-gap-2\">\n @if(count>1) {\n <i class=\"fa-light fa-xmark hover:ax-text-danger-500\" (click)=\"service.removePage($index)\"></i>\n }\n <i class=\"fa-light fa-clone hover:ax-text-primary-500\" (click)=\"service.clonePage($index)\"></i>\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"ax-flex ax-justify-center ax-items-center ax-text-gray-300 ax-p-4\">No pages found in the document</div>\n }\n </ax-content>\n</axp-designer-drawer-content>\n" }]
|
|
2085
2246
|
}] });
|
|
2086
2247
|
|
|
2248
|
+
//#region ---- Hook keys ----
|
|
2249
|
+
/**
|
|
2250
|
+
* Distributed hooks for extending the layout designer header menu without coupling the designer library to feature modules.
|
|
2251
|
+
*
|
|
2252
|
+
* - {@link AXPLayoutDesignerHeaderMenuHookKeys.root}: top-level bar items (siblings of File, Edit, …).
|
|
2253
|
+
* - {@link AXPLayoutDesignerHeaderMenuHookKeys.submenu}: extra items inside a top-level menu (`file`, `edit`, `run`, `help`).
|
|
2254
|
+
*/
|
|
2255
|
+
const AXPLayoutDesignerHeaderMenuHookKeys = {
|
|
2256
|
+
root: 'layout-designer.header-menu.root',
|
|
2257
|
+
submenu: 'layout-designer.header-menu.submenu',
|
|
2258
|
+
};
|
|
2259
|
+
//#endregion
|
|
2260
|
+
|
|
2261
|
+
//#region ---- Imports ----
|
|
2087
2262
|
class AXPDesignerHeaderMenuComponent {
|
|
2088
2263
|
constructor() {
|
|
2264
|
+
//#region ---- Services & Dependencies ----
|
|
2089
2265
|
this.service = inject(AXPDesignerService);
|
|
2266
|
+
this.hooks = inject(AXPHookService);
|
|
2267
|
+
this.translationService = inject(AXTranslationService);
|
|
2268
|
+
//#endregion
|
|
2269
|
+
//#region ---- Hook-driven menu contributions ----
|
|
2270
|
+
this.rootMenuContributions = signal([], ...(ngDevMode ? [{ debugName: "rootMenuContributions" }] : /* istanbul ignore next */ []));
|
|
2271
|
+
this.submenuContributions = signal({}, ...(ngDevMode ? [{ debugName: "submenuContributions" }] : /* istanbul ignore next */ []));
|
|
2090
2272
|
}
|
|
2273
|
+
//#endregion
|
|
2274
|
+
//#region ---- Lifecycle Methods ----
|
|
2275
|
+
async ngOnInit() {
|
|
2276
|
+
const rootPayload = await this.hooks.runAsync(AXPLayoutDesignerHeaderMenuHookKeys.root, { designer: this.service, items: [] });
|
|
2277
|
+
rootPayload.items.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));
|
|
2278
|
+
this.rootMenuContributions.set(await this.resolveMenuLabels(rootPayload.items));
|
|
2279
|
+
const parents = ['file', 'edit', 'run', 'help'];
|
|
2280
|
+
const map = {};
|
|
2281
|
+
for (const parentMenuId of parents) {
|
|
2282
|
+
const subPayload = await this.hooks.runAsync(AXPLayoutDesignerHeaderMenuHookKeys.submenu, { designer: this.service, parentMenuId, items: [] });
|
|
2283
|
+
subPayload.items.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));
|
|
2284
|
+
map[parentMenuId] = await this.resolveMenuLabels(subPayload.items);
|
|
2285
|
+
}
|
|
2286
|
+
this.submenuContributions.set(map);
|
|
2287
|
+
}
|
|
2288
|
+
//#endregion
|
|
2289
|
+
//#region ---- UI Handlers ----
|
|
2290
|
+
submenuFor(parent) {
|
|
2291
|
+
return this.submenuContributions()[parent] ?? [];
|
|
2292
|
+
}
|
|
2293
|
+
runMenuEntry(entry) {
|
|
2294
|
+
void Promise.resolve(entry.run());
|
|
2295
|
+
}
|
|
2296
|
+
//#endregion
|
|
2297
|
+
//#region ---- Utility Methods ----
|
|
2298
|
+
async resolveMenuLabels(items) {
|
|
2299
|
+
return Promise.all(items.map(async (e) => ({
|
|
2300
|
+
...e,
|
|
2301
|
+
resolvedLabel: e.labelKey
|
|
2302
|
+
? await this.translationService.translateAsync(e.labelKey)
|
|
2303
|
+
: e.label,
|
|
2304
|
+
})));
|
|
2305
|
+
}
|
|
2306
|
+
//#endregion
|
|
2091
2307
|
handleKeyboardEvent(event) {
|
|
2092
|
-
|
|
2308
|
+
const skipDesignerShortcuts = this.isKeyboardTargetInsideEditableField(event.target);
|
|
2309
|
+
if (!skipDesignerShortcuts && event.code == 'Delete' && this.service.canDelete()) {
|
|
2093
2310
|
event.preventDefault();
|
|
2094
2311
|
this.service.removeWidget();
|
|
2095
2312
|
}
|
|
2096
|
-
if (event.code == 'Insert' && this.service.canInsert()) {
|
|
2313
|
+
if (!skipDesignerShortcuts && event.code == 'Insert' && this.service.canInsert()) {
|
|
2097
2314
|
event.preventDefault();
|
|
2098
2315
|
this.service.showPicker();
|
|
2099
2316
|
}
|
|
@@ -2170,12 +2387,46 @@ class AXPDesignerHeaderMenuComponent {
|
|
|
2170
2387
|
}
|
|
2171
2388
|
}
|
|
2172
2389
|
}
|
|
2173
|
-
|
|
2174
|
-
|
|
2390
|
+
/**
|
|
2391
|
+
* When focus is in a native edit control, avoid stealing Del/Ins for designer widget commands
|
|
2392
|
+
* (e.g. AI assist prompt textarea over the form designer).
|
|
2393
|
+
*/
|
|
2394
|
+
isKeyboardTargetInsideEditableField(target) {
|
|
2395
|
+
if (!(target instanceof HTMLElement)) {
|
|
2396
|
+
return false;
|
|
2397
|
+
}
|
|
2398
|
+
if (target.isContentEditable) {
|
|
2399
|
+
return true;
|
|
2400
|
+
}
|
|
2401
|
+
const field = target.closest('input, textarea, select');
|
|
2402
|
+
if (!field || field.disabled) {
|
|
2403
|
+
return false;
|
|
2404
|
+
}
|
|
2405
|
+
if (field instanceof HTMLInputElement) {
|
|
2406
|
+
const type = field.type;
|
|
2407
|
+
if (type === 'hidden' ||
|
|
2408
|
+
type === 'checkbox' ||
|
|
2409
|
+
type === 'radio' ||
|
|
2410
|
+
type === 'button' ||
|
|
2411
|
+
type === 'submit' ||
|
|
2412
|
+
type === 'reset' ||
|
|
2413
|
+
type === 'file' ||
|
|
2414
|
+
field.readOnly) {
|
|
2415
|
+
return false;
|
|
2416
|
+
}
|
|
2417
|
+
return true;
|
|
2418
|
+
}
|
|
2419
|
+
if (field instanceof HTMLTextAreaElement) {
|
|
2420
|
+
return !field.readOnly;
|
|
2421
|
+
}
|
|
2422
|
+
return true;
|
|
2423
|
+
}
|
|
2424
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerHeaderMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2425
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDesignerHeaderMenuComponent, isStandalone: true, selector: "axp-designer-header-menu", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<ax-menu [openOn]=\"'hover'\" [hasArrow]=\"false\">\n <ax-menu-item>\n <ax-text>File</ax-text>\n <ax-menu-item (onClick)=\"service.new()\">\n <ax-text>New</ax-text>\n <ax-suffix>\n <ax-text> Shift+N </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n @if(service.canSave())\n {\n <ng-container>\n <ax-menu-item (onClick)=\"service.save()\">\n <ax-text>Save</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.saveAs()\">\n <ax-text>Save As...</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+Shift+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n </ng-container>\n }\n <ax-menu-item>\n <ax-text>Export</ax-text>\n <ax-menu-item (onClick)=\"service.downloadJson()\">\n <ax-text>Download JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Import</ax-text>\n <ax-menu-item (onClick)=\"service.importJSon()\">\n <ax-text>Import JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n @for (item of submenuFor('file'); track item.id) {\n <ax-menu-item (onClick)=\"runMenuEntry(item)\">\n @if (item.iconClass) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n </ax-prefix>\n }\n @if (item.resolvedLabel) {\n <ax-text>{{ item.resolvedLabel }}</ax-text>\n }\n </ax-menu-item>\n }\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Edit</ax-text>\n <ax-menu-item [disabled]=\"!service.canUndo()\" (onClick)=\"service.undo()\">\n <ax-text>Undo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-left\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Z </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canRedo()\" (onClick)=\"service.redo()\">\n <ax-text>Redo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-right\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Y </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.clone()\">\n <ax-text>Clone</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-clone\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+D </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.cut()\">\n <ax-text>Cut</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-cut\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+X </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.copy()\">\n <ax-text>Copy</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-copy\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+C </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canPaste()\" (onClick)=\"service.paste()\">\n <ax-text>Paste</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-paste\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+V</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canDelete()\" (onClick)=\"service.removeWidget()\">\n <ax-text>Delete</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-trash\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Del</ax-text>\n </ax-suffix>\n </ax-menu-item>\n @for (item of submenuFor('edit'); track item.id) {\n <ax-menu-item (onClick)=\"runMenuEntry(item)\">\n @if (item.iconClass) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n </ax-prefix>\n }\n @if (item.resolvedLabel) {\n <ax-text>{{ item.resolvedLabel }}</ax-text>\n }\n </ax-menu-item>\n }\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Run</ax-text>\n <ax-menu-item (onClick)=\"service.openPreviewDialog()\">\n <ax-text>Preview</ax-text>\n <ax-prefix>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.openPreviewWindow()\">\n <ax-text>Preview in seperate window</ax-text>\n <ax-prefix> </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+Shift+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n @for (item of submenuFor('run'); track item.id) {\n <ax-menu-item (onClick)=\"runMenuEntry(item)\">\n @if (item.iconClass) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n </ax-prefix>\n }\n @if (item.resolvedLabel) {\n <ax-text>{{ item.resolvedLabel }}</ax-text>\n }\n </ax-menu-item>\n }\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Help</ax-text>\n <ax-menu-item>\n <ax-text>About</ax-text>\n </ax-menu-item>\n @for (item of submenuFor('help'); track item.id) {\n <ax-menu-item (onClick)=\"runMenuEntry(item)\">\n @if (item.iconClass) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n </ax-prefix>\n }\n @if (item.resolvedLabel) {\n <ax-text>{{ item.resolvedLabel }}</ax-text>\n }\n </ax-menu-item>\n }\n </ax-menu-item>\n @for (item of rootMenuContributions(); track item.id) {\n <ax-menu-item (onClick)=\"runMenuEntry(item)\">\n @if (item.iconClass) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n </ax-prefix>\n }\n @if (item.resolvedLabel) {\n <ax-text>{{ item.resolvedLabel }}</ax-text>\n }\n </ax-menu-item>\n }\n</ax-menu>", dependencies: [{ 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: "component", type: i2$2.AXMenuItemComponent, selector: "ax-menu-item", inputs: ["name", "data", "disabled", "color"], outputs: ["onClick"] }, { kind: "component", type: i2$2.AXMenuComponent, selector: "ax-menu", inputs: ["orientation", "openOn", "closeOn", "items", "hasArrow"], outputs: ["onItemClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2175
2426
|
}
|
|
2176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2427
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerHeaderMenuComponent, decorators: [{
|
|
2177
2428
|
type: Component,
|
|
2178
|
-
args: [{ imports: [AXDecoratorModule, AXMenuModule], selector: 'axp-designer-header-menu', template: "<ax-menu [openOn]=\"'hover'\" [hasArrow]=\"false\">\n <ax-menu-item>\n <ax-text>File</ax-text>\n <ax-menu-item (onClick)=\"service.new()\">\n <ax-text>New</ax-text>\n <ax-suffix>\n <ax-text> Shift+N </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n @if(service.canSave())\n {\n <ng-container>\n <ax-menu-item (onClick)=\"service.save()\">\n <ax-text>Save</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.saveAs()\">\n <ax-text>Save As...</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+Shift+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n </ng-container>\n }\n <ax-menu-item>\n <ax-text>Export</ax-text>\n <ax-menu-item (onClick)=\"service.downloadJson()\">\n <ax-text>Download JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Import</ax-text>\n <ax-menu-item (onClick)=\"service.importJSon()\">\n <ax-text>Import JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Edit</ax-text>\n <ax-menu-item [disabled]=\"!service.canUndo()\" (onClick)=\"service.undo()\">\n <ax-text>Undo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-left\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Z </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canRedo()\" (onClick)=\"service.redo()\">\n <ax-text>Redo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-right\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Y </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.clone()\">\n <ax-text>Clone</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-clone\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+D </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.cut()\">\n <ax-text>Cut</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-cut\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+X </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.copy()\">\n <ax-text>Copy</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-copy\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+C </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canPaste()\" (onClick)=\"service.paste()\">\n <ax-text>Paste</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-paste\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+V</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canDelete()\" (onClick)=\"service.removeWidget()\">\n <ax-text>Delete</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-trash\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Del</ax-text>\n </ax-suffix>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Run</ax-text>\n <ax-menu-item (onClick)=\"service.openPreviewDialog()\">\n <ax-text>Preview</ax-text>\n <ax-prefix>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.openPreviewWindow()\">\n <ax-text>Preview in seperate window</ax-text>\n <ax-prefix> </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+Shift+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Help</ax-text>\n <ax-menu-item>\n <ax-text>About</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n</ax-menu>" }]
|
|
2429
|
+
args: [{ imports: [AXDecoratorModule, AXMenuModule], selector: 'axp-designer-header-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ax-menu [openOn]=\"'hover'\" [hasArrow]=\"false\">\n <ax-menu-item>\n <ax-text>File</ax-text>\n <ax-menu-item (onClick)=\"service.new()\">\n <ax-text>New</ax-text>\n <ax-suffix>\n <ax-text> Shift+N </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n @if(service.canSave())\n {\n <ng-container>\n <ax-menu-item (onClick)=\"service.save()\">\n <ax-text>Save</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.saveAs()\">\n <ax-text>Save As...</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+Shift+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n </ng-container>\n }\n <ax-menu-item>\n <ax-text>Export</ax-text>\n <ax-menu-item (onClick)=\"service.downloadJson()\">\n <ax-text>Download JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Import</ax-text>\n <ax-menu-item (onClick)=\"service.importJSon()\">\n <ax-text>Import JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n @for (item of submenuFor('file'); track item.id) {\n <ax-menu-item (onClick)=\"runMenuEntry(item)\">\n @if (item.iconClass) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n </ax-prefix>\n }\n @if (item.resolvedLabel) {\n <ax-text>{{ item.resolvedLabel }}</ax-text>\n }\n </ax-menu-item>\n }\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Edit</ax-text>\n <ax-menu-item [disabled]=\"!service.canUndo()\" (onClick)=\"service.undo()\">\n <ax-text>Undo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-left\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Z </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canRedo()\" (onClick)=\"service.redo()\">\n <ax-text>Redo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-right\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Y </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.clone()\">\n <ax-text>Clone</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-clone\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+D </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.cut()\">\n <ax-text>Cut</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-cut\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+X </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.copy()\">\n <ax-text>Copy</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-copy\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+C </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canPaste()\" (onClick)=\"service.paste()\">\n <ax-text>Paste</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-paste\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+V</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canDelete()\" (onClick)=\"service.removeWidget()\">\n <ax-text>Delete</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-trash\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Del</ax-text>\n </ax-suffix>\n </ax-menu-item>\n @for (item of submenuFor('edit'); track item.id) {\n <ax-menu-item (onClick)=\"runMenuEntry(item)\">\n @if (item.iconClass) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n </ax-prefix>\n }\n @if (item.resolvedLabel) {\n <ax-text>{{ item.resolvedLabel }}</ax-text>\n }\n </ax-menu-item>\n }\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Run</ax-text>\n <ax-menu-item (onClick)=\"service.openPreviewDialog()\">\n <ax-text>Preview</ax-text>\n <ax-prefix>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.openPreviewWindow()\">\n <ax-text>Preview in seperate window</ax-text>\n <ax-prefix> </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+Shift+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n @for (item of submenuFor('run'); track item.id) {\n <ax-menu-item (onClick)=\"runMenuEntry(item)\">\n @if (item.iconClass) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n </ax-prefix>\n }\n @if (item.resolvedLabel) {\n <ax-text>{{ item.resolvedLabel }}</ax-text>\n }\n </ax-menu-item>\n }\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Help</ax-text>\n <ax-menu-item>\n <ax-text>About</ax-text>\n </ax-menu-item>\n @for (item of submenuFor('help'); track item.id) {\n <ax-menu-item (onClick)=\"runMenuEntry(item)\">\n @if (item.iconClass) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n </ax-prefix>\n }\n @if (item.resolvedLabel) {\n <ax-text>{{ item.resolvedLabel }}</ax-text>\n }\n </ax-menu-item>\n }\n </ax-menu-item>\n @for (item of rootMenuContributions(); track item.id) {\n <ax-menu-item (onClick)=\"runMenuEntry(item)\">\n @if (item.iconClass) {\n <ax-prefix>\n <ax-icon>\n <i [class]=\"item.iconClass\"></i>\n </ax-icon>\n </ax-prefix>\n }\n @if (item.resolvedLabel) {\n <ax-text>{{ item.resolvedLabel }}</ax-text>\n }\n </ax-menu-item>\n }\n</ax-menu>" }]
|
|
2179
2430
|
}], propDecorators: { handleKeyboardEvent: [{
|
|
2180
2431
|
type: HostListener,
|
|
2181
2432
|
args: ['document:keydown', ['$event']]
|
|
@@ -2183,10 +2434,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
2183
2434
|
|
|
2184
2435
|
class AXPDesignerViewSizeToolbarComponent {
|
|
2185
2436
|
constructor() {
|
|
2186
|
-
this.size = model('xl', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
2437
|
+
this.size = model('xl', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
2187
2438
|
}
|
|
2188
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2189
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
2439
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerViewSizeToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2440
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: AXPDesignerViewSizeToolbarComponent, isStandalone: true, selector: "axp-designer-view-sizes", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: "sizeChange" }, ngImport: i0, template: `
|
|
2190
2441
|
<ax-button-group [color]="'primary'" [selection]="'multiple'">
|
|
2191
2442
|
<ax-button-group-item [selected]="size() == 'xl'" [data]="'xl'" (onClick)="size.set('xl')">
|
|
2192
2443
|
<ax-icon class="fa-light fa-desktop fa-fw "></ax-icon>
|
|
@@ -2198,9 +2449,9 @@ class AXPDesignerViewSizeToolbarComponent {
|
|
|
2198
2449
|
<ax-icon class="fa-light fa-mobile fa-fw "></ax-icon>
|
|
2199
2450
|
</ax-button-group-item>
|
|
2200
2451
|
</ax-button-group>
|
|
2201
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXButtonGroupModule }, { kind: "component", type: i1$
|
|
2452
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXButtonGroupModule }, { kind: "component", type: i1$5.AXButtonGroupComponent, selector: "ax-button-group", inputs: ["disabled", "color", "look", "fitParent", "selection"], outputs: ["onBlur", "onFocus", "lookChange", "colorChange", "disabledChange", "onClick", "selectionChange", "selectedButtonChange"] }, { kind: "component", type: i1$5.AXButtonGroupItemComponent, selector: "ax-button-group-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXMenuModule }] }); }
|
|
2202
2453
|
}
|
|
2203
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerViewSizeToolbarComponent, decorators: [{
|
|
2204
2455
|
type: Component,
|
|
2205
2456
|
args: [{
|
|
2206
2457
|
selector: 'axp-designer-view-sizes',
|
|
@@ -2224,9 +2475,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
2224
2475
|
class AXPLayoutDesignerComponent {
|
|
2225
2476
|
constructor() {
|
|
2226
2477
|
this.service = inject(AXPDesignerService);
|
|
2227
|
-
this.id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : []));
|
|
2228
|
-
this.strategy = input(...(ngDevMode ? [undefined, { debugName: "strategy" }] : []));
|
|
2229
|
-
this.nodeConfig = computed(() => this.service.selectedNode() ? get(this.service.selectedNode(), '__meta__.config') : null, ...(ngDevMode ? [{ debugName: "nodeConfig" }] : []));
|
|
2478
|
+
this.id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
|
|
2479
|
+
this.strategy = input(...(ngDevMode ? [undefined, { debugName: "strategy" }] : /* istanbul ignore next */ []));
|
|
2480
|
+
this.nodeConfig = computed(() => this.service.selectedNode() ? get(this.service.selectedNode(), '__meta__.config') : null, ...(ngDevMode ? [{ debugName: "nodeConfig" }] : /* istanbul ignore next */ []));
|
|
2230
2481
|
this.service.onUpdate.subscribe((e) => {
|
|
2231
2482
|
this.propertyViewer.update(e.values);
|
|
2232
2483
|
});
|
|
@@ -2241,10 +2492,10 @@ class AXPLayoutDesignerComponent {
|
|
|
2241
2492
|
styles[`direction`] = 'ltr';
|
|
2242
2493
|
return styles;
|
|
2243
2494
|
}
|
|
2244
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2245
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.12", type: AXPLayoutDesignerComponent, isStandalone: true, selector: "axp-layout-designer", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, strategy: { classPropertyName: "strategy", publicName: "strategy", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "this.__styles" } }, providers: [AXPDesignerService], viewQueries: [{ propertyName: "propertyViewer", first: true, predicate: AXPWidgetPropertyViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<ax-drawer-container class=\"ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden\">\n <ax-content class=\"ax-contents\">\n <!-- Toolbar Side -->\n <div class=\"ax-min-w-10 ax-bg-lightest ax-border-e ax-sm ax-flex ax-flex-col ax-items-center ax-dark\">\n <div class=\"ax-min-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-border-b\">\n <img src=\"assets/images/logos/icon-light.svg\" class=\"ax-w-6\" />\n </div>\n <div class=\"ax-py-1\"></div>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <!-- <ax-button look=\"blank\">\n <ax-icon class=\"fa-solid fa-puzzle ax-text-sm\"> </ax-icon>\n </ax-button> -->\n <ax-button look=\"blank\" (onClick)=\"pages.toggle()\" title=\"Pages\">\n <ax-icon class=\"fa-solid fa-page ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"datasources.toggle()\" title=\"Data Sources\">\n <ax-icon class=\"fa-solid fa-database ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"outline.toggle()\" title=\"Outline\">\n <ax-icon class=\"fa-solid fa-list-tree ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"history.toggle()\" title=\"History\">\n <ax-icon class=\"fa-solid fa-clock-rotate-left ax-text-sm\"> </ax-icon>\n </ax-button>\n <!-- <ax-button look=\"blank\" title=\"Timeline\">\n <ax-icon class=\"fa-solid fa-diagram-sankey ax-text-sm\"> </ax-icon>\n </ax-button> -->\n </div>\n </div>\n <!-- Main Side -->\n <div class=\"ax-col-span-10 ax-flex ax-flex-col ax-flex-1\">\n <!-- Header Toolbar -->\n <div class=\"ax-h-10 ax-bg-lightest ax-border-b ax-flex ax-justify-between ax-px-2 ax-dark\">\n <div class=\"ax-flex ax-flex-1 ax-items-center ax-text-white ax-justify-start\">\n <axp-designer-header-menu></axp-designer-header-menu>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\">\n <axp-designer-view-sizes [(size)]=\"service.size\"></axp-designer-view-sizes>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-end\">\n <ax-dropdown-button mode=\"split\" look=\"solid\" text=\"Preview\" class=\"ax-sm\"\n (onClick)=\"service.openPreviewDialog()\">\n <ax-button-item-list>\n <ax-button-item text=\"Open in new window\" (onClick)=\"service.openPreviewWindow()\">\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=\"ax-w-full ax-flex-1\">\n <!-- Pages -->\n <ax-drawer #pages location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-pages></axp-designer-pages>\n </ax-content>\n </ax-drawer>\n <!-- Datasources -->\n <ax-drawer #datasources location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-data-sources></axp-designer-data-sources>\n </ax-content>\n </ax-drawer>\n <!-- Outline Pnael -->\n <ax-drawer #outline location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-outline></axp-designer-outline>\n </ax-content>\n </ax-drawer>\n <!-- History Pnael -->\n <ax-drawer #history location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\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 ax-bg-lighter ax-flex ax-justify-center ax-p-10\">\n <axp-designer-board class=\"ax-rounded-lg ax-bg-lightest ax-shadow-md\"> </axp-designer-board>\n </ax-content>\n </ax-drawer-container>\n <!-- Footer -->\n <div class=\"ax-h-10 ax-bg-lightest ax-border-t ax-flex ax-items-center ax-dark\">\n <axp-designer-breadcrumbs class=\"ax-border-default ax-p-2 ax-font-normal\">\n </axp-designer-breadcrumbs>\n </div>\n </div>\n </ax-content>\n <!-- Property Side -->\n <ax-drawer class=\"ax-dark axp-designer-prop-side\" location=\"end\" mode=\"push\" [collapsed]=\"false\" #pd>\n <ax-content class=\"ax-flex ax-flex-col ax-h-full ax-overflow-hidden \">\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-px-4 ax-border-b ax-h-10\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center\">\n <i [ngClass]=\"nodeConfig()?.icon\"></i>\n <span class=\"ax-font-semibold\">{{ nodeConfig()?.title }}</span>\n </div>\n </div>\n <axp-widget-property-viewer [mode]=\"'advanced'\" [widget]=\"service.selectedNode()!\"\n (onChanged)=\"service.update({ values: $event.values, mode: $event.mode })\" class=\"ax-flex-1 ax-overflow-auto\">\n </axp-widget-property-viewer>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>", styles: ["axp-layout-designer .axp-designer-board{background-color:#fff;background-image:linear-gradient(45deg,#f0f0f0 25%,transparent 25%,transparent 75%,#f0f0f0 75%,#f0f0f0),linear-gradient(45deg,#f0f0f0 25%,#fff 25% 75%,#f0f0f0 75%,#f0f0f0);background-size:20px 20px;background-position:0 0,10px 10px;display:block;height:100%;width:100%;overflow:auto;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));padding:.75rem}axp-layout-designer .axp-designer-board ax-drawer{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}axp-layout-designer .axp-designer-board.axp-state-design .ax-widget-outline{outline-style:dashed;outline-width:1px;outline-offset:2px;outline-color:#d1d5db}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host{cursor:pointer;position:relative}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected{outline-style:solid;outline-width:2px;outline-offset:1px;outline-color:rgba(var(--ax-sys-color-lightest-surface),1);outline-color:#60a5fa}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:dashed;outline-width:2px;outline-offset:2px;outline-color:#d946ef}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.axp-state-selected{outline-color:#60a5fa}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 1 0%;cursor:default;align-items:center;justify-content:center;background-color:rgba(var(--ax-sys-color-primary-300),10%);background-image:linear-gradient(135deg,rgba(var(--ax-sys-color-primary-300),50%) 10%,transparent 0,transparent 50%,rgba(var(--ax-sys-color-primary-300),50%) 0,rgba(var(--ax-sys-color-primary-300),50%) 60%,transparent 0,transparent);background-size:7.5px 7.5px;height:100%}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}axp-layout-designer .axp-designer-board .axp-page-widget-header:hover,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:.5rem}axp-layout-designer .axp-designer-board .axp-page-widget-footer{margin-top:.5rem}axp-layout-designer .axp-designer-prop-side{width:20rem;border-inline-start-width:1px;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}axp-designer-drawer-content ul.axp-designer-drawer-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}axp-designer-drawer-content ul.axp-designer-drawer-list{padding:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li{cursor:pointer;border-radius:.125rem;padding:.25rem .5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation-duration:.15s;animation-timing-function:cubic-bezier(.4,0,.2,1)}axp-designer-drawer-content ul.axp-designer-drawer-list li:hover:not(.axp-designer-drawer-list){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li.ax-state-selected{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}axp-designer-drawer-content .axp-designer-drawer-empty{display:flex;align-items:center;justify-content:center;padding:1rem;--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.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"], 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", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "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.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2495
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2496
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: AXPLayoutDesignerComponent, isStandalone: true, selector: "axp-layout-designer", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, strategy: { classPropertyName: "strategy", publicName: "strategy", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style": "this.__styles" } }, providers: [AXPDesignerService], viewQueries: [{ propertyName: "propertyViewer", first: true, predicate: AXPWidgetPropertyViewerComponent, descendants: true, static: true }], ngImport: i0, template: "<ax-drawer-container class=\"ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden\">\n <ax-content class=\"ax-contents\">\n <!-- Toolbar Side -->\n <div class=\"ax-min-w-10 ax-bg-lightest ax-border-e ax-sm ax-flex ax-flex-col ax-items-center ax-dark\">\n <div class=\"ax-min-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-border-b\">\n <img src=\"assets/images/logos/icon-light.svg\" class=\"ax-w-6\" />\n </div>\n <div class=\"ax-py-1\"></div>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <!-- <ax-button look=\"blank\">\n <ax-icon class=\"fa-solid fa-puzzle ax-text-sm\"> </ax-icon>\n </ax-button> -->\n <ax-button look=\"blank\" (onClick)=\"pages.toggle()\" title=\"Pages\">\n <ax-icon class=\"fa-solid fa-page ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"datasources.toggle()\" title=\"Data Sources\">\n <ax-icon class=\"fa-solid fa-database ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"outline.toggle()\" title=\"Outline\">\n <ax-icon class=\"fa-solid fa-list-tree ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"history.toggle()\" title=\"History\">\n <ax-icon class=\"fa-solid fa-clock-rotate-left ax-text-sm\"> </ax-icon>\n </ax-button>\n <!-- <ax-button look=\"blank\" title=\"Timeline\">\n <ax-icon class=\"fa-solid fa-diagram-sankey ax-text-sm\"> </ax-icon>\n </ax-button> -->\n </div>\n </div>\n <!-- Main Side -->\n <div class=\"ax-col-span-10 ax-flex ax-flex-col ax-flex-1\">\n <!-- Header Toolbar -->\n <div class=\"ax-h-10 ax-bg-lightest ax-border-b ax-flex ax-justify-between ax-px-2 ax-dark\">\n <div class=\"ax-flex ax-flex-1 ax-items-center ax-text-white ax-justify-start\">\n <axp-designer-header-menu></axp-designer-header-menu>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\">\n <axp-designer-view-sizes [(size)]=\"service.size\"></axp-designer-view-sizes>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-end\">\n <ax-dropdown-button mode=\"split\" look=\"solid\" text=\"Preview\" class=\"ax-sm\"\n (onClick)=\"service.openPreviewDialog()\">\n <ax-button-item-list>\n <ax-button-item text=\"Open in new window\" (onClick)=\"service.openPreviewWindow()\">\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=\"ax-w-full ax-flex-1\">\n <!-- Pages -->\n <ax-drawer #pages location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-pages></axp-designer-pages>\n </ax-content>\n </ax-drawer>\n <!-- Datasources -->\n <ax-drawer #datasources location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-data-sources></axp-designer-data-sources>\n </ax-content>\n </ax-drawer>\n <!-- Outline Pnael -->\n <ax-drawer #outline location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-outline></axp-designer-outline>\n </ax-content>\n </ax-drawer>\n <!-- History Pnael -->\n <ax-drawer #history location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\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 ax-bg-lighter ax-flex ax-justify-center ax-p-10\">\n <axp-designer-board class=\"ax-rounded-lg ax-bg-lightest ax-shadow-md\"> </axp-designer-board>\n </ax-content>\n </ax-drawer-container>\n <!-- Footer -->\n <div class=\"ax-h-10 ax-bg-lightest ax-border-t ax-flex ax-items-center ax-dark\">\n <axp-designer-breadcrumbs class=\"ax-border-default ax-p-2 ax-font-normal\">\n </axp-designer-breadcrumbs>\n </div>\n </div>\n </ax-content>\n <!-- Property Side -->\n <ax-drawer class=\"ax-dark axp-designer-prop-side\" location=\"end\" mode=\"push\" [collapsed]=\"false\" #pd>\n <ax-content class=\"ax-flex ax-flex-col ax-h-full ax-overflow-hidden \">\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-px-4 ax-border-b ax-h-10\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center\">\n <i [ngClass]=\"nodeConfig()?.icon\"></i>\n <span class=\"ax-font-semibold\">{{ nodeConfig()?.title | translate | async }}</span>\n </div>\n </div>\n <axp-widget-property-viewer [mode]=\"'advanced'\" [widget]=\"service.selectedNode()!\"\n (onChanged)=\"service.update({ values: $event.values, mode: $event.mode })\" class=\"ax-flex-1 ax-overflow-auto\">\n </axp-widget-property-viewer>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>", styles: ["axp-layout-designer .axp-designer-board{background-color:#fff;background-image:linear-gradient(45deg,#f0f0f0 25%,transparent 25%,transparent 75%,#f0f0f0 75%,#f0f0f0),linear-gradient(45deg,#f0f0f0 25%,#fff 25% 75%,#f0f0f0 75%,#f0f0f0);background-size:20px 20px;background-position:0 0,10px 10px;display:block;height:100%;width:100%;overflow:auto;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));padding:.75rem}axp-layout-designer .axp-designer-board ax-drawer{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}axp-layout-designer .axp-designer-board.axp-state-design .ax-widget-outline{outline-style:dashed;outline-width:1px;outline-offset:2px;outline-color:#d1d5db}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host{cursor:pointer;position:relative}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected{outline-style:solid;outline-width:2px;outline-offset:1px;outline-color:rgba(var(--ax-sys-color-lightest-surface),1);outline-color:#60a5fa}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:dashed;outline-width:2px;outline-offset:2px;outline-color:#d946ef}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.axp-state-selected{outline-color:#60a5fa}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 1 0%;cursor:default;align-items:center;justify-content:center;background-color:rgba(var(--ax-sys-color-primary-300),10%);background-image:linear-gradient(135deg,rgba(var(--ax-sys-color-primary-300),50%) 10%,transparent 0,transparent 50%,rgba(var(--ax-sys-color-primary-300),50%) 0,rgba(var(--ax-sys-color-primary-300),50%) 60%,transparent 0,transparent);background-size:7.5px 7.5px;height:100%}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}axp-layout-designer .axp-designer-board .axp-page-widget-header:hover,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:.5rem}axp-layout-designer .axp-designer-board .axp-page-widget-footer{margin-top:.5rem}axp-layout-designer .axp-designer-prop-side{width:20rem;border-inline-start-width:1px;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}axp-designer-drawer-content ul.axp-designer-drawer-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}axp-designer-drawer-content ul.axp-designer-drawer-list{padding:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li{cursor:pointer;border-radius:.125rem;padding:.25rem .5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation-duration:.15s;animation-timing-function:cubic-bezier(.4,0,.2,1)}axp-designer-drawer-content ul.axp-designer-drawer-list li:hover:not(.axp-designer-drawer-list){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li.ax-state-selected{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}axp-designer-drawer-content .axp-designer-drawer-empty{display:flex;align-items:center;justify-content:center;padding:1rem;--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}\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"], 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", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3.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", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2246
2497
|
}
|
|
2247
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2498
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutDesignerComponent, decorators: [{
|
|
2248
2499
|
type: Component,
|
|
2249
2500
|
args: [{ selector: 'axp-layout-designer', encapsulation: ViewEncapsulation.None, imports: [
|
|
2250
2501
|
CommonModule,
|
|
@@ -2266,7 +2517,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
2266
2517
|
AXButtonGroupModule,
|
|
2267
2518
|
AXDropdownModule,
|
|
2268
2519
|
AXDropdownButtonModule,
|
|
2269
|
-
|
|
2520
|
+
AXTranslationModule,
|
|
2521
|
+
], providers: [AXPDesignerService], template: "<ax-drawer-container class=\"ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden\">\n <ax-content class=\"ax-contents\">\n <!-- Toolbar Side -->\n <div class=\"ax-min-w-10 ax-bg-lightest ax-border-e ax-sm ax-flex ax-flex-col ax-items-center ax-dark\">\n <div class=\"ax-min-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-border-b\">\n <img src=\"assets/images/logos/icon-light.svg\" class=\"ax-w-6\" />\n </div>\n <div class=\"ax-py-1\"></div>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <!-- <ax-button look=\"blank\">\n <ax-icon class=\"fa-solid fa-puzzle ax-text-sm\"> </ax-icon>\n </ax-button> -->\n <ax-button look=\"blank\" (onClick)=\"pages.toggle()\" title=\"Pages\">\n <ax-icon class=\"fa-solid fa-page ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"datasources.toggle()\" title=\"Data Sources\">\n <ax-icon class=\"fa-solid fa-database ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"outline.toggle()\" title=\"Outline\">\n <ax-icon class=\"fa-solid fa-list-tree ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"history.toggle()\" title=\"History\">\n <ax-icon class=\"fa-solid fa-clock-rotate-left ax-text-sm\"> </ax-icon>\n </ax-button>\n <!-- <ax-button look=\"blank\" title=\"Timeline\">\n <ax-icon class=\"fa-solid fa-diagram-sankey ax-text-sm\"> </ax-icon>\n </ax-button> -->\n </div>\n </div>\n <!-- Main Side -->\n <div class=\"ax-col-span-10 ax-flex ax-flex-col ax-flex-1\">\n <!-- Header Toolbar -->\n <div class=\"ax-h-10 ax-bg-lightest ax-border-b ax-flex ax-justify-between ax-px-2 ax-dark\">\n <div class=\"ax-flex ax-flex-1 ax-items-center ax-text-white ax-justify-start\">\n <axp-designer-header-menu></axp-designer-header-menu>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\">\n <axp-designer-view-sizes [(size)]=\"service.size\"></axp-designer-view-sizes>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-end\">\n <ax-dropdown-button mode=\"split\" look=\"solid\" text=\"Preview\" class=\"ax-sm\"\n (onClick)=\"service.openPreviewDialog()\">\n <ax-button-item-list>\n <ax-button-item text=\"Open in new window\" (onClick)=\"service.openPreviewWindow()\">\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=\"ax-w-full ax-flex-1\">\n <!-- Pages -->\n <ax-drawer #pages location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-pages></axp-designer-pages>\n </ax-content>\n </ax-drawer>\n <!-- Datasources -->\n <ax-drawer #datasources location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-data-sources></axp-designer-data-sources>\n </ax-content>\n </ax-drawer>\n <!-- Outline Pnael -->\n <ax-drawer #outline location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-outline></axp-designer-outline>\n </ax-content>\n </ax-drawer>\n <!-- History Pnael -->\n <ax-drawer #history location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\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 ax-bg-lighter ax-flex ax-justify-center ax-p-10\">\n <axp-designer-board class=\"ax-rounded-lg ax-bg-lightest ax-shadow-md\"> </axp-designer-board>\n </ax-content>\n </ax-drawer-container>\n <!-- Footer -->\n <div class=\"ax-h-10 ax-bg-lightest ax-border-t ax-flex ax-items-center ax-dark\">\n <axp-designer-breadcrumbs class=\"ax-border-default ax-p-2 ax-font-normal\">\n </axp-designer-breadcrumbs>\n </div>\n </div>\n </ax-content>\n <!-- Property Side -->\n <ax-drawer class=\"ax-dark axp-designer-prop-side\" location=\"end\" mode=\"push\" [collapsed]=\"false\" #pd>\n <ax-content class=\"ax-flex ax-flex-col ax-h-full ax-overflow-hidden \">\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-px-4 ax-border-b ax-h-10\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center\">\n <i [ngClass]=\"nodeConfig()?.icon\"></i>\n <span class=\"ax-font-semibold\">{{ nodeConfig()?.title | translate | async }}</span>\n </div>\n </div>\n <axp-widget-property-viewer [mode]=\"'advanced'\" [widget]=\"service.selectedNode()!\"\n (onChanged)=\"service.update({ values: $event.values, mode: $event.mode })\" class=\"ax-flex-1 ax-overflow-auto\">\n </axp-widget-property-viewer>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>", styles: ["axp-layout-designer .axp-designer-board{background-color:#fff;background-image:linear-gradient(45deg,#f0f0f0 25%,transparent 25%,transparent 75%,#f0f0f0 75%,#f0f0f0),linear-gradient(45deg,#f0f0f0 25%,#fff 25% 75%,#f0f0f0 75%,#f0f0f0);background-size:20px 20px;background-position:0 0,10px 10px;display:block;height:100%;width:100%;overflow:auto;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));padding:.75rem}axp-layout-designer .axp-designer-board ax-drawer{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}axp-layout-designer .axp-designer-board.axp-state-design .ax-widget-outline{outline-style:dashed;outline-width:1px;outline-offset:2px;outline-color:#d1d5db}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host{cursor:pointer;position:relative}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected{outline-style:solid;outline-width:2px;outline-offset:1px;outline-color:rgba(var(--ax-sys-color-lightest-surface),1);outline-color:#60a5fa}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:dashed;outline-width:2px;outline-offset:2px;outline-color:#d946ef}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.axp-state-selected{outline-color:#60a5fa}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 1 0%;cursor:default;align-items:center;justify-content:center;background-color:rgba(var(--ax-sys-color-primary-300),10%);background-image:linear-gradient(135deg,rgba(var(--ax-sys-color-primary-300),50%) 10%,transparent 0,transparent 50%,rgba(var(--ax-sys-color-primary-300),50%) 0,rgba(var(--ax-sys-color-primary-300),50%) 60%,transparent 0,transparent);background-size:7.5px 7.5px;height:100%}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}axp-layout-designer .axp-designer-board .axp-page-widget-header:hover,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:.5rem}axp-layout-designer .axp-designer-board .axp-page-widget-footer{margin-top:.5rem}axp-layout-designer .axp-designer-prop-side{width:20rem;border-inline-start-width:1px;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}axp-designer-drawer-content ul.axp-designer-drawer-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}axp-designer-drawer-content ul.axp-designer-drawer-list{padding:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li{cursor:pointer;border-radius:.125rem;padding:.25rem .5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation-duration:.15s;animation-timing-function:cubic-bezier(.4,0,.2,1)}axp-designer-drawer-content ul.axp-designer-drawer-list li:hover:not(.axp-designer-drawer-list){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li.ax-state-selected{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}axp-designer-drawer-content .axp-designer-drawer-empty{display:flex;align-items:center;justify-content:center;padding:1rem;--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}\n"] }]
|
|
2270
2522
|
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], strategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "strategy", required: false }] }], propertyViewer: [{
|
|
2271
2523
|
type: ViewChild,
|
|
2272
2524
|
args: [AXPWidgetPropertyViewerComponent, { static: true }]
|
|
@@ -2278,14 +2530,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
2278
2530
|
class AXPLayoutDesignerPreviewViewerComponent {
|
|
2279
2531
|
constructor() {
|
|
2280
2532
|
this.context = {};
|
|
2281
|
-
this.document = signal({ type: AXPWidgetsCatalog.document }, ...(ngDevMode ? [{ debugName: "document" }] : []));
|
|
2282
|
-
this.currentPageIndex = signal(0, ...(ngDevMode ? [{ debugName: "currentPageIndex" }] : []));
|
|
2533
|
+
this.document = signal({ type: AXPWidgetsCatalog.document }, ...(ngDevMode ? [{ debugName: "document" }] : /* istanbul ignore next */ []));
|
|
2534
|
+
this.currentPageIndex = signal(0, ...(ngDevMode ? [{ debugName: "currentPageIndex" }] : /* istanbul ignore next */ []));
|
|
2283
2535
|
this.connector = inject(AXPDesignerConnector);
|
|
2284
2536
|
this.eventService = inject(AXPBroadcastEventService);
|
|
2285
2537
|
this.unsubscriber = inject(AXUnsubscriber);
|
|
2286
2538
|
this.currentPage = computed(() => {
|
|
2287
2539
|
return (this.document().children?.[this.currentPageIndex()] ?? { type: AXPWidgetsCatalog.pageLayout });
|
|
2288
|
-
}, ...(ngDevMode ? [{ debugName: "currentPage" }] : []));
|
|
2540
|
+
}, ...(ngDevMode ? [{ debugName: "currentPage" }] : /* istanbul ignore next */ []));
|
|
2289
2541
|
this.eventService
|
|
2290
2542
|
.listen(AXPDesignerMessageKeys.Preview)
|
|
2291
2543
|
.pipe(this.unsubscriber.takeUntilDestroy)
|
|
@@ -2309,14 +2561,14 @@ class AXPLayoutDesignerPreviewViewerComponent {
|
|
|
2309
2561
|
ngOnDestroy() {
|
|
2310
2562
|
this.eventService.unsubscribe(AXPDesignerMessageKeys.Preview);
|
|
2311
2563
|
}
|
|
2312
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2313
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2564
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutDesignerPreviewViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2565
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPLayoutDesignerPreviewViewerComponent, isStandalone: true, selector: "axp-layout-builder-viewer", providers: [AXUnsubscriber], ngImport: i0, template: `
|
|
2314
2566
|
<axp-widgets-container [context]="context" (onContextChanged)="handleContextChanged($event)">
|
|
2315
2567
|
<ng-container axp-widget-renderer [node]="currentPage()" [mode]="'edit'"></ng-container>
|
|
2316
2568
|
</axp-widgets-container>
|
|
2317
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$
|
|
2569
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$3.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i1$3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2318
2570
|
}
|
|
2319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2571
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutDesignerPreviewViewerComponent, decorators: [{
|
|
2320
2572
|
type: Component,
|
|
2321
2573
|
args: [{
|
|
2322
2574
|
selector: 'axp-layout-builder-viewer',
|
|
@@ -2333,7 +2585,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
2333
2585
|
|
|
2334
2586
|
class AXPLayoutDesignerPreviewFrameComponent {
|
|
2335
2587
|
constructor() {
|
|
2336
|
-
this.size = input('xl', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
2588
|
+
this.size = input('xl', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
2337
2589
|
this.width = computed(() => {
|
|
2338
2590
|
;
|
|
2339
2591
|
switch (this.size()) {
|
|
@@ -2345,7 +2597,7 @@ class AXPLayoutDesignerPreviewFrameComponent {
|
|
|
2345
2597
|
default:
|
|
2346
2598
|
return '100%';
|
|
2347
2599
|
}
|
|
2348
|
-
}, ...(ngDevMode ? [{ debugName: "width" }] : []));
|
|
2600
|
+
}, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
|
|
2349
2601
|
}
|
|
2350
2602
|
get __class() {
|
|
2351
2603
|
const cls = {};
|
|
@@ -2360,8 +2612,8 @@ class AXPLayoutDesignerPreviewFrameComponent {
|
|
|
2360
2612
|
cls['ax-overflow-auto'] = true;
|
|
2361
2613
|
return cls;
|
|
2362
2614
|
}
|
|
2363
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2364
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
2615
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutDesignerPreviewFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2616
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: AXPLayoutDesignerPreviewFrameComponent, isStandalone: true, selector: "axp-layout-preview-frame", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.__class" } }, ngImport: i0, template: `
|
|
2365
2617
|
<div
|
|
2366
2618
|
class="ax-flex-1 lg:ax-rounded-lg ax-bg-white lg:ax-shadow-md ax-p-2"
|
|
2367
2619
|
[style.width]="width()"
|
|
@@ -2376,7 +2628,7 @@ class AXPLayoutDesignerPreviewFrameComponent {
|
|
|
2376
2628
|
</div>
|
|
2377
2629
|
`, isInline: true, dependencies: [{ kind: "pipe", type: AXSafePipe, name: "safe" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2378
2630
|
}
|
|
2379
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2631
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutDesignerPreviewFrameComponent, decorators: [{
|
|
2380
2632
|
type: Component,
|
|
2381
2633
|
args: [{
|
|
2382
2634
|
selector: 'axp-layout-preview-frame',
|
|
@@ -2411,9 +2663,9 @@ class AXPLayoutDesignerPreviewComponent extends AXBasePageComponent {
|
|
|
2411
2663
|
this.initialSize = 'xl';
|
|
2412
2664
|
this.isDialogWindow = false;
|
|
2413
2665
|
this.jsonSettingsKey = 'forms:preview:json';
|
|
2414
|
-
this.jsonViewCollapsed = signal(true, ...(ngDevMode ? [{ debugName: "jsonViewCollapsed" }] : []));
|
|
2415
|
-
this.size = signal(this.initialSize, ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
2416
|
-
this.context = signal({}, ...(ngDevMode ? [{ debugName: "context" }] : []));
|
|
2666
|
+
this.jsonViewCollapsed = signal(true, ...(ngDevMode ? [{ debugName: "jsonViewCollapsed" }] : /* istanbul ignore next */ []));
|
|
2667
|
+
this.size = signal(this.initialSize, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
2668
|
+
this.context = signal({}, ...(ngDevMode ? [{ debugName: "context" }] : /* istanbul ignore next */ []));
|
|
2417
2669
|
//
|
|
2418
2670
|
this.eventService.listen(AXPDesignerMessageKeys.ContextChanged).subscribe((event) => {
|
|
2419
2671
|
this.context.set(event.data);
|
|
@@ -2443,10 +2695,10 @@ class AXPLayoutDesignerPreviewComponent extends AXBasePageComponent {
|
|
|
2443
2695
|
async handleCollapsedChange(value) {
|
|
2444
2696
|
await this.settings.scope(AXPPlatformScope.User).set(this.jsonSettingsKey, !value);
|
|
2445
2697
|
}
|
|
2446
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2447
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2698
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutDesignerPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2699
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPLayoutDesignerPreviewComponent, isStandalone: true, selector: "axp-layout-preview", usesInheritance: true, ngImport: i0, template: "<ax-drawer-container class=\"ax-dark ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden\">\n <ax-content>\n <div class=\"ax-dark ax-flex ax-flex-col ax-h-full ax-relative ax-bg-default\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-h-12 ax-bg-lightest ax-shadow ax-sm ax-px-2\">\n <div class=\"ax-flex ax-flex-1 ax-w-16 ax-justify-start\">\n <ax-button look=\"blank\" text=\"Back to Designer\" (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=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\">\n <axp-designer-view-sizes [(size)]=\"size\"></axp-designer-view-sizes>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-w-16 ax-justify-end\">\n @if(isDialogWindow) {\n <ax-button look=\"blank\" [title]=\"'Preview in to seperate window'\" (onClick)=\"handlePreviewWindow()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-window-restore\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }@else { }\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-bg-[#f3f3fe] ax-flex ax-flex-1 ax-justify-center ax-overflow-auto\">\n <axp-layout-preview-frame [size]=\"size()\"></axp-layout-preview-frame>\n </div>\n </div>\n </ax-content>\n <!-- [collapsed]=\"jsonViewCollapsed()\"\n (collapsedChange)=\"handleCollapsedChange($event)\" -->\n <ax-drawer class=\"ax-w-1/3 ax-border-s\" location=\"end\" mode=\"push\" #jsonView>\n <ax-content>\n <div class=\"ax-dark ax-flex ax-flex-col ax-h-full ax-relative ax-bg-default\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-h-12 ax-bg-lightest ax-shadow ax-sm ax-px-2\">\n <div class=\"ax-flex ax-flex-1 ax-w-16 ax-justify-start\">\n <span class=\"ax-text-surface-fore ax-font-semibold\">Form Data</span>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\"></div>\n <div class=\"ax-flex ax-flex-1 ax-w-16 ax-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=\"ax-px-6 ax-text-white\">\n <ax-json-viewer [json]=\"context()\"></ax-json-viewer>\n </div>\n </div>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>", styles: [""], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3.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: "component", type: AXPLayoutDesignerPreviewFrameComponent, selector: "axp-layout-preview-frame", inputs: ["size"] }, { kind: "component", type: AXPDesignerViewSizeToolbarComponent, selector: "axp-designer-view-sizes", inputs: ["size"], outputs: ["sizeChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2448
2700
|
}
|
|
2449
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2701
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLayoutDesignerPreviewComponent, decorators: [{
|
|
2450
2702
|
type: Component,
|
|
2451
2703
|
args: [{ selector: 'axp-layout-preview', encapsulation: ViewEncapsulation.None, imports: [
|
|
2452
2704
|
AXButtonModule,
|
|
@@ -2468,5 +2720,5 @@ var preview_component = /*#__PURE__*/Object.freeze({
|
|
|
2468
2720
|
* Generated bundle index. Do not edit.
|
|
2469
2721
|
*/
|
|
2470
2722
|
|
|
2471
|
-
export { AXPDesignerAddWidgetButtonComponent, AXPDesignerAddWidgetLineButtonComponent, AXPDesignerAddWidgetMiniButtonComponent, AXPDesignerConnector, AXPDesignerFlexDrawerComponent, AXPDesignerGridDrawerComponent, AXPDesignerMessageKeys, AXPDesignerModes, AXPDesignerService, AXPDesignerWidgetPickerComponent, AXPLayoutDesignerComponent, AXPLayoutDesignerPreviewComponent, AXPLayoutDesignerPreviewViewerComponent, AXPTemplateLoadingStrategy, AXPWidgetDesignerRendererDirective, AXPWidgetPickerService, AXP_DESIGNER_ADD_WIDGET_MENU, AXP_DESIGNER_CLONE_MENU, AXP_DESIGNER_COPY_MENU, AXP_DESIGNER_CUT_MENU, AXP_DESIGNER_DELETE_WIDGET_MENU, AXP_DESIGNER_PASTE_MENU, AXP_DESIGNER_SAVE_AS_WIDGET_MENU, AXP_DESIGNER_SELECT_WIDGET_MENU, cloneWidgetMenu };
|
|
2723
|
+
export { AXPDesignerAddWidgetButtonComponent, AXPDesignerAddWidgetLineButtonComponent, AXPDesignerAddWidgetMiniButtonComponent, AXPDesignerConnector, AXPDesignerFlexDrawerComponent, AXPDesignerGridDrawerComponent, AXPDesignerMessageKeys, AXPDesignerModes, AXPDesignerService, AXPDesignerWidgetPickerComponent, AXPLayoutDesignerComponent, AXPLayoutDesignerHeaderMenuHookKeys, AXPLayoutDesignerPreviewComponent, AXPLayoutDesignerPreviewViewerComponent, AXPTemplateLoadingStrategy, AXPWidgetDesignerRendererDirective, AXPWidgetPickerService, AXP_DESIGNER_ADD_WIDGET_MENU, AXP_DESIGNER_CLONE_MENU, AXP_DESIGNER_COPY_MENU, AXP_DESIGNER_CUT_MENU, AXP_DESIGNER_DELETE_WIDGET_MENU, AXP_DESIGNER_PASTE_MENU, AXP_DESIGNER_SAVE_AS_WIDGET_MENU, AXP_DESIGNER_SELECT_WIDGET_MENU, AXP_WIDGET_PICKER_TAB_CONTEXT, cloneWidgetMenu };
|
|
2472
2724
|
//# sourceMappingURL=acorex-platform-layout-designer.mjs.map
|