@acorex/platform 21.0.0-next.71 → 21.0.0-next.72
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 +10 -2
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-common-settings.provider-Bi1RYif5.mjs → acorex-platform-common-common-settings.provider-Ytey9uhY.mjs} +15 -1
- package/fesm2022/acorex-platform-common-common-settings.provider-Ytey9uhY.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +3792 -1679
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +1112 -103
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +53 -170
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +70 -46
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +199 -126
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs → acorex-platform-layout-entity-attachments-page.component-B0EkdqvH.mjs} +6 -1
- package/fesm2022/acorex-platform-layout-entity-attachments-page.component-B0EkdqvH.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity.mjs +341 -418
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +675 -301
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +115 -74
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs} +2 -2
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs.map → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs} +2 -2
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs.map → acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs.map} +1 -1
- package/fesm2022/acorex-platform-layout-widgets.mjs +184 -655
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-B1nsdpTY.mjs +48 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-B1nsdpTY.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-D4UvRe8u.mjs +42 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-D4UvRe8u.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +76 -32
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/package.json +1 -1
- package/types/acorex-platform-auth.d.ts +2 -0
- package/types/acorex-platform-common.d.ts +891 -259
- package/types/acorex-platform-core.d.ts +284 -40
- package/types/acorex-platform-layout-builder.d.ts +10 -22
- package/types/acorex-platform-layout-components.d.ts +9 -7
- package/types/acorex-platform-layout-entity.d.ts +37 -41
- package/types/acorex-platform-layout-views.d.ts +125 -67
- package/types/acorex-platform-layout-widget-core.d.ts +53 -61
- package/types/acorex-platform-layout-widgets.d.ts +33 -20
- package/types/acorex-platform-themes-default.d.ts +14 -4
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs +0 -31
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs +0 -25
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +0 -1
|
@@ -5,14 +5,14 @@ import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
|
5
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, viewChild, afterNextRender, 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, DestroyRef } 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, AXPHookService } from '@acorex/platform/core';
|
|
15
|
+
import { AXPBroadcastEventService, AXPPlatformScope, AXPDataSourceDefinitionProviderService, AXPHookService, AXPKeyboardShortcutRegistry, chordToKbdItemKeys, AXPKeyboardShortcutPriority } from '@acorex/platform/core';
|
|
16
16
|
import * as i8 from '@acorex/core/translation';
|
|
17
17
|
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
18
18
|
import * as i1$1 from '@acorex/cdk/common';
|
|
@@ -41,6 +41,7 @@ import { AXMenuModule } from '@acorex/components/menu';
|
|
|
41
41
|
import * as i1$4 from '@acorex/components/breadcrumbs';
|
|
42
42
|
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
|
43
43
|
import { AXPWorkflowService } from '@acorex/platform/workflow';
|
|
44
|
+
import { AXKBDComponent, AXKBDItemComponent } from '@acorex/components/kbd';
|
|
44
45
|
import { AXUnsubscriber } from '@acorex/core/utils';
|
|
45
46
|
import * as i4$1 from '@acorex/components/json-viewer';
|
|
46
47
|
import { AXJsonViewerModule } from '@acorex/components/json-viewer';
|
|
@@ -2260,18 +2261,22 @@ const AXPLayoutDesignerHeaderMenuHookKeys = {
|
|
|
2260
2261
|
|
|
2261
2262
|
//#region ---- Imports ----
|
|
2262
2263
|
class AXPDesignerHeaderMenuComponent {
|
|
2264
|
+
//#endregion
|
|
2265
|
+
//#region ---- Lifecycle Methods ----
|
|
2263
2266
|
constructor() {
|
|
2264
2267
|
//#region ---- Services & Dependencies ----
|
|
2265
2268
|
this.service = inject(AXPDesignerService);
|
|
2266
2269
|
this.hooks = inject(AXPHookService);
|
|
2267
2270
|
this.translationService = inject(AXTranslationService);
|
|
2271
|
+
this.shortcutRegistry = inject(AXPKeyboardShortcutRegistry);
|
|
2272
|
+
this.destroyRef = inject(DestroyRef);
|
|
2273
|
+
this.elementRef = inject((ElementRef));
|
|
2268
2274
|
//#endregion
|
|
2269
2275
|
//#region ---- Hook-driven menu contributions ----
|
|
2270
2276
|
this.rootMenuContributions = signal([], ...(ngDevMode ? [{ debugName: "rootMenuContributions" }] : /* istanbul ignore next */ []));
|
|
2271
2277
|
this.submenuContributions = signal({}, ...(ngDevMode ? [{ debugName: "submenuContributions" }] : /* istanbul ignore next */ []));
|
|
2278
|
+
this.registerDesignerKeyboardShortcuts();
|
|
2272
2279
|
}
|
|
2273
|
-
//#endregion
|
|
2274
|
-
//#region ---- Lifecycle Methods ----
|
|
2275
2280
|
async ngOnInit() {
|
|
2276
2281
|
const rootPayload = await this.hooks.runAsync(AXPLayoutDesignerHeaderMenuHookKeys.root, { designer: this.service, items: [] });
|
|
2277
2282
|
rootPayload.items.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));
|
|
@@ -2303,134 +2308,202 @@ class AXPDesignerHeaderMenuComponent {
|
|
|
2303
2308
|
: e.label,
|
|
2304
2309
|
})));
|
|
2305
2310
|
}
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
const skipDesignerShortcuts = this.isKeyboardTargetInsideEditableField(event.target);
|
|
2309
|
-
if (!skipDesignerShortcuts && event.code == 'Delete' && this.service.canDelete()) {
|
|
2310
|
-
event.preventDefault();
|
|
2311
|
-
this.service.removeWidget();
|
|
2312
|
-
}
|
|
2313
|
-
if (!skipDesignerShortcuts && event.code == 'Insert' && this.service.canInsert()) {
|
|
2314
|
-
event.preventDefault();
|
|
2315
|
-
this.service.showPicker();
|
|
2316
|
-
}
|
|
2317
|
-
if (event.shiftKey && event.target == document.body) {
|
|
2318
|
-
switch (event.code) {
|
|
2319
|
-
case 'KeyN':
|
|
2320
|
-
event.preventDefault();
|
|
2321
|
-
this.service.new();
|
|
2322
|
-
break;
|
|
2323
|
-
}
|
|
2324
|
-
}
|
|
2325
|
-
if (event.ctrlKey) {
|
|
2326
|
-
switch (event.code) {
|
|
2327
|
-
case 'KeyS':
|
|
2328
|
-
event.preventDefault();
|
|
2329
|
-
if (event.shiftKey) {
|
|
2330
|
-
this.service.saveAs();
|
|
2331
|
-
}
|
|
2332
|
-
else {
|
|
2333
|
-
this.service.save();
|
|
2334
|
-
}
|
|
2335
|
-
break;
|
|
2336
|
-
case 'KeyR':
|
|
2337
|
-
event.preventDefault();
|
|
2338
|
-
if (event.shiftKey) {
|
|
2339
|
-
this.service.openPreviewWindow();
|
|
2340
|
-
}
|
|
2341
|
-
else {
|
|
2342
|
-
this.service.openPreviewDialog();
|
|
2343
|
-
}
|
|
2344
|
-
break;
|
|
2345
|
-
}
|
|
2346
|
-
}
|
|
2347
|
-
//
|
|
2348
|
-
if (event.ctrlKey && event.target == document.body) {
|
|
2349
|
-
switch (event.code) {
|
|
2350
|
-
case 'KeyZ':
|
|
2351
|
-
if (this.service.canUndo()) {
|
|
2352
|
-
event.preventDefault();
|
|
2353
|
-
this.service.undo();
|
|
2354
|
-
}
|
|
2355
|
-
break;
|
|
2356
|
-
case 'KeyY':
|
|
2357
|
-
if (this.service.canRedo()) {
|
|
2358
|
-
event.preventDefault();
|
|
2359
|
-
this.service.redo();
|
|
2360
|
-
}
|
|
2361
|
-
break;
|
|
2362
|
-
case 'KeyC':
|
|
2363
|
-
if (this.service.canCutCopy()) {
|
|
2364
|
-
event.preventDefault();
|
|
2365
|
-
this.service.copy();
|
|
2366
|
-
}
|
|
2367
|
-
break;
|
|
2368
|
-
case 'KeyD':
|
|
2369
|
-
if (this.service.canCutCopy()) {
|
|
2370
|
-
event.preventDefault();
|
|
2371
|
-
this.service.clone();
|
|
2372
|
-
}
|
|
2373
|
-
break;
|
|
2374
|
-
case 'KeyX':
|
|
2375
|
-
if (this.service.canCutCopy()) {
|
|
2376
|
-
// ;
|
|
2377
|
-
event.preventDefault();
|
|
2378
|
-
this.service.cut();
|
|
2379
|
-
}
|
|
2380
|
-
break;
|
|
2381
|
-
case 'KeyV':
|
|
2382
|
-
if (this.service.canPaste()) {
|
|
2383
|
-
event.preventDefault();
|
|
2384
|
-
this.service.paste();
|
|
2385
|
-
}
|
|
2386
|
-
break;
|
|
2387
|
-
}
|
|
2388
|
-
}
|
|
2311
|
+
shortcutKeys(chord) {
|
|
2312
|
+
return chordToKbdItemKeys(chord);
|
|
2389
2313
|
}
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
}
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2314
|
+
registerDesignerKeyboardShortcuts() {
|
|
2315
|
+
const scope = '@layout-designer:feature.title';
|
|
2316
|
+
const base = {
|
|
2317
|
+
owner: this.destroyRef,
|
|
2318
|
+
elementRef: this.elementRef,
|
|
2319
|
+
priority: AXPKeyboardShortcutPriority.Page,
|
|
2320
|
+
scope,
|
|
2321
|
+
};
|
|
2322
|
+
this.shortcutRegistry.register({
|
|
2323
|
+
...base,
|
|
2324
|
+
id: 'designer-header-file',
|
|
2325
|
+
shortcuts: [
|
|
2326
|
+
{
|
|
2327
|
+
keys: ['shift+n'],
|
|
2328
|
+
title: '@layout-designer:keyboard-shortcuts.new',
|
|
2329
|
+
group: '@layout-designer:keyboard-shortcuts.groups.file',
|
|
2330
|
+
handler: (event) => {
|
|
2331
|
+
if (this.isDesignerBodyTarget(event)) {
|
|
2332
|
+
this.service.new();
|
|
2333
|
+
}
|
|
2334
|
+
},
|
|
2335
|
+
},
|
|
2336
|
+
{
|
|
2337
|
+
keys: ['ctrl+s'],
|
|
2338
|
+
title: '@layout-designer:keyboard-shortcuts.save',
|
|
2339
|
+
group: '@layout-designer:keyboard-shortcuts.groups.file',
|
|
2340
|
+
allowInEditableFields: true,
|
|
2341
|
+
handler: () => {
|
|
2342
|
+
void this.service.save();
|
|
2343
|
+
},
|
|
2344
|
+
},
|
|
2345
|
+
{
|
|
2346
|
+
keys: ['ctrl+shift+s'],
|
|
2347
|
+
title: '@layout-designer:keyboard-shortcuts.save-as',
|
|
2348
|
+
group: '@layout-designer:keyboard-shortcuts.groups.file',
|
|
2349
|
+
allowInEditableFields: true,
|
|
2350
|
+
handler: () => {
|
|
2351
|
+
void this.service.saveAs();
|
|
2352
|
+
},
|
|
2353
|
+
},
|
|
2354
|
+
],
|
|
2355
|
+
});
|
|
2356
|
+
this.shortcutRegistry.register({
|
|
2357
|
+
...base,
|
|
2358
|
+
id: 'designer-header-run',
|
|
2359
|
+
shortcuts: [
|
|
2360
|
+
{
|
|
2361
|
+
keys: ['ctrl+r'],
|
|
2362
|
+
title: '@layout-designer:keyboard-shortcuts.preview',
|
|
2363
|
+
group: '@layout-designer:keyboard-shortcuts.groups.run',
|
|
2364
|
+
allowInEditableFields: true,
|
|
2365
|
+
handler: () => {
|
|
2366
|
+
void this.service.openPreviewDialog();
|
|
2367
|
+
},
|
|
2368
|
+
},
|
|
2369
|
+
{
|
|
2370
|
+
keys: ['ctrl+shift+r'],
|
|
2371
|
+
title: '@layout-designer:keyboard-shortcuts.preview-window',
|
|
2372
|
+
group: '@layout-designer:keyboard-shortcuts.groups.run',
|
|
2373
|
+
allowInEditableFields: true,
|
|
2374
|
+
handler: () => {
|
|
2375
|
+
void this.service.openPreviewWindow();
|
|
2376
|
+
},
|
|
2377
|
+
},
|
|
2378
|
+
],
|
|
2379
|
+
});
|
|
2380
|
+
this.shortcutRegistry.register({
|
|
2381
|
+
...base,
|
|
2382
|
+
id: 'designer-header-delete',
|
|
2383
|
+
when: () => this.service.canDelete(),
|
|
2384
|
+
shortcuts: [
|
|
2385
|
+
{
|
|
2386
|
+
keys: ['delete'],
|
|
2387
|
+
title: '@layout-designer:keyboard-shortcuts.delete-widget',
|
|
2388
|
+
group: '@layout-designer:keyboard-shortcuts.groups.edit',
|
|
2389
|
+
handler: () => this.service.removeWidget(),
|
|
2390
|
+
},
|
|
2391
|
+
],
|
|
2392
|
+
});
|
|
2393
|
+
this.shortcutRegistry.register({
|
|
2394
|
+
...base,
|
|
2395
|
+
id: 'designer-header-insert',
|
|
2396
|
+
when: () => this.service.canInsert(),
|
|
2397
|
+
shortcuts: [
|
|
2398
|
+
{
|
|
2399
|
+
keys: ['insert'],
|
|
2400
|
+
title: '@layout-designer:keyboard-shortcuts.insert-widget',
|
|
2401
|
+
group: '@layout-designer:keyboard-shortcuts.groups.edit',
|
|
2402
|
+
handler: () => {
|
|
2403
|
+
void this.service.showPicker();
|
|
2404
|
+
},
|
|
2405
|
+
},
|
|
2406
|
+
],
|
|
2407
|
+
});
|
|
2408
|
+
this.shortcutRegistry.register({
|
|
2409
|
+
...base,
|
|
2410
|
+
id: 'designer-header-undo',
|
|
2411
|
+
when: () => this.service.canUndo(),
|
|
2412
|
+
shortcuts: [
|
|
2413
|
+
{
|
|
2414
|
+
keys: ['ctrl+z'],
|
|
2415
|
+
title: '@layout-designer:keyboard-shortcuts.undo',
|
|
2416
|
+
group: '@layout-designer:keyboard-shortcuts.groups.edit',
|
|
2417
|
+
handler: (event) => {
|
|
2418
|
+
if (this.isDesignerBodyTarget(event)) {
|
|
2419
|
+
this.service.undo();
|
|
2420
|
+
}
|
|
2421
|
+
},
|
|
2422
|
+
},
|
|
2423
|
+
],
|
|
2424
|
+
});
|
|
2425
|
+
this.shortcutRegistry.register({
|
|
2426
|
+
...base,
|
|
2427
|
+
id: 'designer-header-redo',
|
|
2428
|
+
when: () => this.service.canRedo(),
|
|
2429
|
+
shortcuts: [
|
|
2430
|
+
{
|
|
2431
|
+
keys: ['ctrl+y'],
|
|
2432
|
+
title: '@layout-designer:keyboard-shortcuts.redo',
|
|
2433
|
+
group: '@layout-designer:keyboard-shortcuts.groups.edit',
|
|
2434
|
+
handler: (event) => {
|
|
2435
|
+
if (this.isDesignerBodyTarget(event)) {
|
|
2436
|
+
this.service.redo();
|
|
2437
|
+
}
|
|
2438
|
+
},
|
|
2439
|
+
},
|
|
2440
|
+
],
|
|
2441
|
+
});
|
|
2442
|
+
this.shortcutRegistry.register({
|
|
2443
|
+
...base,
|
|
2444
|
+
id: 'designer-header-cut-copy',
|
|
2445
|
+
when: () => this.service.canCutCopy(),
|
|
2446
|
+
shortcuts: [
|
|
2447
|
+
{
|
|
2448
|
+
keys: ['ctrl+c'],
|
|
2449
|
+
title: '@layout-designer:keyboard-shortcuts.copy',
|
|
2450
|
+
group: '@layout-designer:keyboard-shortcuts.groups.edit',
|
|
2451
|
+
handler: (event) => {
|
|
2452
|
+
if (this.isDesignerBodyTarget(event)) {
|
|
2453
|
+
this.service.copy();
|
|
2454
|
+
}
|
|
2455
|
+
},
|
|
2456
|
+
},
|
|
2457
|
+
{
|
|
2458
|
+
keys: ['ctrl+d'],
|
|
2459
|
+
title: '@layout-designer:keyboard-shortcuts.clone',
|
|
2460
|
+
group: '@layout-designer:keyboard-shortcuts.groups.edit',
|
|
2461
|
+
handler: (event) => {
|
|
2462
|
+
if (this.isDesignerBodyTarget(event)) {
|
|
2463
|
+
this.service.clone();
|
|
2464
|
+
}
|
|
2465
|
+
},
|
|
2466
|
+
},
|
|
2467
|
+
{
|
|
2468
|
+
keys: ['ctrl+x'],
|
|
2469
|
+
title: '@layout-designer:keyboard-shortcuts.cut',
|
|
2470
|
+
group: '@layout-designer:keyboard-shortcuts.groups.edit',
|
|
2471
|
+
handler: (event) => {
|
|
2472
|
+
if (this.isDesignerBodyTarget(event)) {
|
|
2473
|
+
this.service.cut();
|
|
2474
|
+
}
|
|
2475
|
+
},
|
|
2476
|
+
},
|
|
2477
|
+
],
|
|
2478
|
+
});
|
|
2479
|
+
this.shortcutRegistry.register({
|
|
2480
|
+
...base,
|
|
2481
|
+
id: 'designer-header-paste',
|
|
2482
|
+
when: () => this.service.canPaste(),
|
|
2483
|
+
shortcuts: [
|
|
2484
|
+
{
|
|
2485
|
+
keys: ['ctrl+v'],
|
|
2486
|
+
title: '@layout-designer:keyboard-shortcuts.paste',
|
|
2487
|
+
group: '@layout-designer:keyboard-shortcuts.groups.edit',
|
|
2488
|
+
handler: (event) => {
|
|
2489
|
+
if (this.isDesignerBodyTarget(event)) {
|
|
2490
|
+
this.service.paste();
|
|
2491
|
+
}
|
|
2492
|
+
},
|
|
2493
|
+
},
|
|
2494
|
+
],
|
|
2495
|
+
});
|
|
2496
|
+
}
|
|
2497
|
+
isDesignerBodyTarget(event) {
|
|
2498
|
+
return event.target === document.body;
|
|
2423
2499
|
}
|
|
2424
2500
|
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",
|
|
2501
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDesignerHeaderMenuComponent, isStandalone: true, selector: "axp-designer-header-menu", 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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('shift+n')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+s')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+shift+s')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+z')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+y')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+d')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+x')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+c')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+v')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('delete')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+r')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+shift+r')\"></ax-kbd-item>\n </ax-kbd>\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>\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: "component", type: AXKBDComponent, selector: "ax-kbd", inputs: ["look"] }, { kind: "component", type: AXKBDItemComponent, selector: "ax-kbd-item", inputs: ["keys", "join", "look"], outputs: ["lookChange"] }, { 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 }); }
|
|
2426
2502
|
}
|
|
2427
2503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDesignerHeaderMenuComponent, decorators: [{
|
|
2428
2504
|
type: Component,
|
|
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
|
|
2430
|
-
}],
|
|
2431
|
-
type: HostListener,
|
|
2432
|
-
args: ['document:keydown', ['$event']]
|
|
2433
|
-
}] } });
|
|
2505
|
+
args: [{ imports: [AXDecoratorModule, AXKBDComponent, AXKBDItemComponent, 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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('shift+n')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+s')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+shift+s')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+z')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+y')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+d')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+x')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+c')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+v')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('delete')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+r')\"></ax-kbd-item>\n </ax-kbd>\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-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"shortcutKeys('ctrl+shift+r')\"></ax-kbd-item>\n </ax-kbd>\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>\n" }]
|
|
2506
|
+
}], ctorParameters: () => [] });
|
|
2434
2507
|
|
|
2435
2508
|
class AXPDesignerViewSizeToolbarComponent {
|
|
2436
2509
|
constructor() {
|