@node-projects/web-component-designer 0.1.109 → 0.1.111
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/dist/elements/item/DesignItem.js +3 -4
- package/dist/elements/services/DefaultServiceBootstrap.js +2 -0
- package/dist/elements/services/dragDropService/DragDropService.js +1 -1
- package/dist/elements/services/placementService/DefaultPlacementService.d.ts +1 -1
- package/dist/elements/services/placementService/DefaultPlacementService.js +3 -1
- package/dist/elements/services/placementService/FlexBoxPlacementService.d.ts +1 -1
- package/dist/elements/services/placementService/FlexBoxPlacementService.js +5 -2
- package/dist/elements/services/placementService/GridPlacementService.d.ts +1 -1
- package/dist/elements/services/placementService/GridPlacementService.js +5 -2
- package/dist/elements/services/placementService/IPlacementService.d.ts +1 -1
- package/dist/elements/services/propertiesService/PropertyGroupsService.js +2 -2
- package/dist/elements/widgets/designerView/designerCanvas.js +10 -3
- package/dist/elements/widgets/designerView/extensions/AbstractExtension.js +12 -2
- package/dist/elements/widgets/designerView/extensions/BasicDisplayToolbarExtension.d.ts +1 -1
- package/dist/elements/widgets/designerView/extensions/BasicDisplayToolbarExtension.js +3 -3
- package/dist/elements/widgets/designerView/extensions/BasicStackedToolbarExtension.d.ts +21 -0
- package/dist/elements/widgets/designerView/extensions/BasicStackedToolbarExtension.js +81 -0
- package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtension.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtension.js +3 -3
- package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtensionProvider.d.ts +0 -1
- package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtensionProvider.js +0 -17
- package/dist/elements/widgets/designerView/extensions/flex/FlexToolbarExtension.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/flex/FlexToolbarExtension.js +5 -5
- package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtension.d.ts +3 -6
- package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtension.js +45 -56
- package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.d.ts +0 -1
- package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.js +5 -7
- package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/grid/GridToolbarExtension.js +12 -8
- package/dist/elements/widgets/designerView/overlayLayerView.js +16 -1
- package/dist/elements/widgets/designerView/tools/PointerTool.js +4 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -536,10 +536,9 @@ export class DesignItem {
|
|
|
536
536
|
return value ?? fallback;
|
|
537
537
|
}
|
|
538
538
|
getComputedStyle() {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
return window.getComputedStyle(this.element);
|
|
539
|
+
if (this.nodeType == NodeType.Element)
|
|
540
|
+
return window.getComputedStyle(this.element);
|
|
541
|
+
return null;
|
|
543
542
|
}
|
|
544
543
|
_stylesCache = null;
|
|
545
544
|
_cacheClearTimer;
|
|
@@ -89,6 +89,7 @@ import { GridToolbarExtensionProvider } from '../widgets/designerView/extensions
|
|
|
89
89
|
import { FlexToolbarExtensionProvider } from '../widgets/designerView/extensions/flex/FlexToolbarExtensionProvider.js';
|
|
90
90
|
import { BlockToolbarExtensionProvider } from '../widgets/designerView/extensions/block/BlockToolbarExtensionProvider.js';
|
|
91
91
|
import { ChildContextMenu } from '../widgets/designerView/extensions/contextMenu/ChildContextMenu.js';
|
|
92
|
+
import { GridChildToolbarExtensionProvider } from '../widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.js';
|
|
92
93
|
export function createDefaultServiceContainer() {
|
|
93
94
|
let serviceContainer = new ServiceContainer();
|
|
94
95
|
let defaultPlacementService = new DefaultPlacementService();
|
|
@@ -133,6 +134,7 @@ export function createDefaultServiceContainer() {
|
|
|
133
134
|
new ConditionExtensionProvider(new MultipleSelectionRectExtensionProvider(), item => !(item.node instanceof SVGElement) || item.node instanceof SVGSVGElement),
|
|
134
135
|
]);
|
|
135
136
|
serviceContainer.designerExtensions.set(ExtensionType.PrimarySelectionRefreshed, [
|
|
137
|
+
new GridChildToolbarExtensionProvider(),
|
|
136
138
|
new GridToolbarExtensionProvider(),
|
|
137
139
|
new FlexToolbarExtensionProvider(),
|
|
138
140
|
new BlockToolbarExtensionProvider(),
|
|
@@ -42,7 +42,7 @@ export class DragDropService {
|
|
|
42
42
|
const elementDefinition = JSON.parse(transferData);
|
|
43
43
|
const di = await designerCanvas.serviceContainer.forSomeServicesTillResult("instanceService", (service) => service.getElement(elementDefinition, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer));
|
|
44
44
|
const grp = di.openGroup("Insert of <" + di.name + ">");
|
|
45
|
-
const containerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainer, newContainer.getComputedStyle()));
|
|
45
|
+
const containerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainer, newContainer.getComputedStyle(), di));
|
|
46
46
|
containerService.enterContainer(newContainer, [di], 'drop');
|
|
47
47
|
const containerPos = designerCanvas.getNormalizedElementCoordinates(newContainer.element);
|
|
48
48
|
const evCoord = designerCanvas.getNormalizedEventCoordinates(event);
|
|
@@ -3,7 +3,7 @@ import type { IPlacementService } from './IPlacementService.js';
|
|
|
3
3
|
import type { IDesignItem } from '../../item/IDesignItem.js';
|
|
4
4
|
import { IPlacementView } from '../../widgets/designerView/IPlacementView.js';
|
|
5
5
|
export declare class DefaultPlacementService implements IPlacementService {
|
|
6
|
-
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
|
|
6
|
+
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration, item?: IDesignItem): boolean;
|
|
7
7
|
isEnterableContainer(container: IDesignItem): boolean;
|
|
8
8
|
canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
9
9
|
canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
@@ -4,7 +4,9 @@ import { filterChildPlaceItems, getDesignItemCurrentPos, placeDesignItem } from
|
|
|
4
4
|
import { ExtensionType } from '../../widgets/designerView/extensions/ExtensionType.js';
|
|
5
5
|
import { straightenLine } from '../../helper/PathDataPolyfill.js';
|
|
6
6
|
export class DefaultPlacementService {
|
|
7
|
-
serviceForContainer(container, containerStyle) {
|
|
7
|
+
serviceForContainer(container, containerStyle, item) {
|
|
8
|
+
if (item != null && item.getComputedStyle()?.position == 'absolute')
|
|
9
|
+
return true;
|
|
8
10
|
if (containerStyle.display === 'grid' || containerStyle.display === 'inline-grid' ||
|
|
9
11
|
containerStyle.display === 'flex' || containerStyle.display === 'inline-flex')
|
|
10
12
|
return false;
|
|
@@ -7,7 +7,7 @@ export declare class FlexBoxPlacementService implements IPlacementService {
|
|
|
7
7
|
constructor(basePlacementService: IPlacementService);
|
|
8
8
|
enterContainer(container: IDesignItem, items: IDesignItem[], mode: 'normal' | 'drop'): void;
|
|
9
9
|
leaveContainer(container: IDesignItem, items: IDesignItem[]): void;
|
|
10
|
-
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
|
|
10
|
+
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration, item?: IDesignItem): boolean;
|
|
11
11
|
isEnterableContainer(container: IDesignItem): any;
|
|
12
12
|
canEnter(container: IDesignItem, items: IDesignItem[]): any;
|
|
13
13
|
canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
@@ -22,9 +22,12 @@ export class FlexBoxPlacementService {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
serviceForContainer(container, containerStyle) {
|
|
26
|
-
if (containerStyle.display == 'flex' || containerStyle.display == 'inline-flex')
|
|
25
|
+
serviceForContainer(container, containerStyle, item) {
|
|
26
|
+
if (containerStyle.display == 'flex' || containerStyle.display == 'inline-flex') {
|
|
27
|
+
if (item != null && item.getComputedStyle()?.position == 'absolute')
|
|
28
|
+
return false;
|
|
27
29
|
return true;
|
|
30
|
+
}
|
|
28
31
|
return false;
|
|
29
32
|
}
|
|
30
33
|
isEnterableContainer(container) {
|
|
@@ -7,7 +7,7 @@ export declare class GridPlacementService implements IPlacementService {
|
|
|
7
7
|
constructor(basePlacementService: IPlacementService);
|
|
8
8
|
enterContainer(container: IDesignItem, items: IDesignItem[], mode: 'normal' | 'drop'): void;
|
|
9
9
|
leaveContainer(container: IDesignItem, items: IDesignItem[]): void;
|
|
10
|
-
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
|
|
10
|
+
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration, item?: IDesignItem): boolean;
|
|
11
11
|
isEnterableContainer(container: IDesignItem): any;
|
|
12
12
|
canEnter(container: IDesignItem, items: IDesignItem[]): any;
|
|
13
13
|
canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
@@ -26,9 +26,12 @@ export class GridPlacementService {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
serviceForContainer(container, containerStyle) {
|
|
30
|
-
if (containerStyle.display == 'grid' || containerStyle.display == 'inline-grid')
|
|
29
|
+
serviceForContainer(container, containerStyle, item) {
|
|
30
|
+
if (containerStyle.display == 'grid' || containerStyle.display == 'inline-grid') {
|
|
31
|
+
if (item != null && item.getComputedStyle()?.position == 'absolute')
|
|
32
|
+
return false;
|
|
31
33
|
return true;
|
|
34
|
+
}
|
|
32
35
|
return false;
|
|
33
36
|
}
|
|
34
37
|
isEnterableContainer(container) {
|
|
@@ -3,7 +3,7 @@ import { IDesignItem } from '../../item/IDesignItem.js';
|
|
|
3
3
|
import { IPlacementView } from '../../widgets/designerView/IPlacementView.js';
|
|
4
4
|
import { IPoint } from '../../../interfaces/IPoint.js';
|
|
5
5
|
export interface IPlacementService extends IService {
|
|
6
|
-
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration): boolean;
|
|
6
|
+
serviceForContainer(container: IDesignItem, containerStyle: CSSStyleDeclaration, item?: IDesignItem): boolean;
|
|
7
7
|
isEnterableContainer(container: IDesignItem): boolean;
|
|
8
8
|
canEnter(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
9
9
|
canLeave(container: IDesignItem, items: IDesignItem[]): boolean;
|
|
@@ -53,8 +53,8 @@ export class PropertyGroupsService {
|
|
|
53
53
|
let lst = this._pgList;
|
|
54
54
|
if (designItems[0].element instanceof SVGElement)
|
|
55
55
|
lst = this._svgPgList;
|
|
56
|
-
if (designItems[0].
|
|
57
|
-
const parentStyle =
|
|
56
|
+
if (designItems[0].parent) {
|
|
57
|
+
const parentStyle = designItems[0].parent.getComputedStyle();
|
|
58
58
|
if (parentStyle.display.includes('grid'))
|
|
59
59
|
lst = [...lst, this._gridChild[0]];
|
|
60
60
|
else if (parentStyle.display.includes('flex'))
|
|
@@ -626,6 +626,8 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
626
626
|
this._resizeBackgroundGrid();
|
|
627
627
|
});
|
|
628
628
|
}
|
|
629
|
+
if (this.isConnected)
|
|
630
|
+
this.extensionManager.connected();
|
|
629
631
|
}
|
|
630
632
|
connectedCallback() {
|
|
631
633
|
if (!this._firstConnect) {
|
|
@@ -638,8 +640,8 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
638
640
|
this.clickOverlay.addEventListener(EventNames.DragLeave, event => this._onDragLeave(event));
|
|
639
641
|
this.clickOverlay.addEventListener(EventNames.DragOver, event => this._onDragOver(event));
|
|
640
642
|
this.clickOverlay.addEventListener(EventNames.Drop, event => this._onDrop(event));
|
|
641
|
-
this.clickOverlay.addEventListener(EventNames.KeyDown, this.onKeyDown
|
|
642
|
-
this.clickOverlay.addEventListener(EventNames.KeyUp, this.onKeyUp
|
|
643
|
+
this.clickOverlay.addEventListener(EventNames.KeyDown, this.onKeyDown);
|
|
644
|
+
this.clickOverlay.addEventListener(EventNames.KeyUp, this.onKeyUp);
|
|
643
645
|
this.clickOverlay.addEventListener(EventNames.DblClick, this._onDblClick, true);
|
|
644
646
|
this.clickOverlay.addEventListener('zoom', (e) => {
|
|
645
647
|
this.zoomFactor = this.zoomFactor + (e.detail.diff / 10);
|
|
@@ -652,7 +654,8 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
652
654
|
this.canvasOffset = newCanvasOffset;
|
|
653
655
|
});
|
|
654
656
|
}
|
|
655
|
-
this.extensionManager
|
|
657
|
+
if (this.extensionManager)
|
|
658
|
+
this.extensionManager.connected();
|
|
656
659
|
}
|
|
657
660
|
disconnectedCallback() {
|
|
658
661
|
this.extensionManager.disconnected();
|
|
@@ -882,6 +885,8 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
882
885
|
}
|
|
883
886
|
}
|
|
884
887
|
onKeyUp(event) {
|
|
888
|
+
if (this._ignoreEvent === event)
|
|
889
|
+
return;
|
|
885
890
|
if (this._moveGroup) {
|
|
886
891
|
this._moveGroup.commit();
|
|
887
892
|
this._moveGroup = null;
|
|
@@ -889,6 +894,8 @@ export class DesignerCanvas extends BaseCustomWebComponentLazyAppend {
|
|
|
889
894
|
event.preventDefault();
|
|
890
895
|
}
|
|
891
896
|
onKeyDown(event) {
|
|
897
|
+
if (this._ignoreEvent === event)
|
|
898
|
+
return;
|
|
892
899
|
if ((event.ctrlKey || event.metaKey) && event.key === 'z' && !event.shiftKey)
|
|
893
900
|
this.executeCommand({ type: CommandType.undo, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey });
|
|
894
901
|
else if ((event.ctrlKey || event.metaKey) && event.key === 'z' && event.shiftKey)
|
|
@@ -11,8 +11,18 @@ export class AbstractExtension extends AbstractExtensionBase {
|
|
|
11
11
|
}
|
|
12
12
|
createToolbar(template, width, height, overlayLayer = OverlayLayer.Foreground) {
|
|
13
13
|
const element = template.content.cloneNode(true);
|
|
14
|
-
element.querySelectorAll('*').forEach(x =>
|
|
15
|
-
|
|
14
|
+
element.querySelectorAll('*').forEach(x => {
|
|
15
|
+
x.onpointerdown = (e) => {
|
|
16
|
+
this.designerCanvas.ignoreEvent(e);
|
|
17
|
+
};
|
|
18
|
+
if (x instanceof HTMLInputElement) {
|
|
19
|
+
x.addEventListener('keydown', (e) => {
|
|
20
|
+
this.designerCanvas.ignoreEvent(e);
|
|
21
|
+
}, { capture: true });
|
|
22
|
+
x.addEventListener('keyup', (e) => {
|
|
23
|
+
this.designerCanvas.ignoreEvent(e);
|
|
24
|
+
}, { capture: true });
|
|
25
|
+
}
|
|
16
26
|
});
|
|
17
27
|
const foreignObject = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject');
|
|
18
28
|
foreignObject.classList.add('svg-toolbar-container');
|
|
@@ -2,7 +2,7 @@ import { AbstractExtension, toolbarObject } from "./AbstractExtension.js";
|
|
|
2
2
|
import { IExtensionManager } from "./IExtensionManger.js";
|
|
3
3
|
import { IDesignerCanvas } from "../IDesignerCanvas.js";
|
|
4
4
|
import { IDesignItem } from "../../../item/IDesignItem.js";
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class BasicStackedToolbarExtension extends AbstractExtension {
|
|
6
6
|
protected static basicTemplate: string;
|
|
7
7
|
protected _toolbar: toolbarObject;
|
|
8
8
|
protected _size: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assetsPath } from "../../../../Constants.js";
|
|
2
2
|
import { AbstractExtension } from "./AbstractExtension.js";
|
|
3
|
-
export class
|
|
3
|
+
export class BasicStackedToolbarExtension extends AbstractExtension {
|
|
4
4
|
static basicTemplate = `
|
|
5
5
|
<node-projects-image-button-list-selector id="inline" no-value-in-header property="inline">
|
|
6
6
|
<img data-value="block" title="block" src="${assetsPath}images/display/block.svg">
|
|
@@ -57,8 +57,8 @@ export class BasicDisplayToolbarExtension extends AbstractExtension {
|
|
|
57
57
|
_addStyleButton(styleAndControlName) {
|
|
58
58
|
const cs = getComputedStyle(this.extendedItem.element);
|
|
59
59
|
const ctl = this._toolbar.getById(styleAndControlName);
|
|
60
|
-
ctl.addEventListener('value-changed', () => {
|
|
61
|
-
this.extendedItem.
|
|
60
|
+
ctl.addEventListener('value-changed', async () => {
|
|
61
|
+
await this.extendedItem.updateStyleInSheetOrLocalAsync(styleAndControlName, ctl.value);
|
|
62
62
|
});
|
|
63
63
|
ctl.value = cs[styleAndControlName];
|
|
64
64
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AbstractExtension, toolbarObject } from "./AbstractExtension.js";
|
|
2
|
+
import { IExtensionManager } from "./IExtensionManger.js";
|
|
3
|
+
import { IDesignerCanvas } from "../IDesignerCanvas.js";
|
|
4
|
+
import { IDesignItem } from "../../../item/IDesignItem.js";
|
|
5
|
+
export declare class BasicStackedToolbarExtension extends AbstractExtension {
|
|
6
|
+
protected static basicTemplate: string;
|
|
7
|
+
protected static toolBars: toolbarObject[];
|
|
8
|
+
protected _toolbar: toolbarObject;
|
|
9
|
+
protected _size: {
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
};
|
|
13
|
+
protected _display: string;
|
|
14
|
+
protected _inline: string;
|
|
15
|
+
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
16
|
+
extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
|
|
17
|
+
updateDisplayValue(): Promise<void>;
|
|
18
|
+
refresh(cache: Record<string | symbol, any>, event?: MouseEvent): void;
|
|
19
|
+
protected _addStyleButton(styleAndControlName: string): void;
|
|
20
|
+
dispose(): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { assetsPath } from "../../../../Constants.js";
|
|
2
|
+
import { AbstractExtension } from "./AbstractExtension.js";
|
|
3
|
+
export class BasicStackedToolbarExtension extends AbstractExtension {
|
|
4
|
+
static basicTemplate = `
|
|
5
|
+
<node-projects-image-button-list-selector id="inline" no-value-in-header property="inline">
|
|
6
|
+
<img data-value="block" title="block" src="${assetsPath}images/display/block.svg">
|
|
7
|
+
<img data-value="inline" title="inline" src="${assetsPath}images/display/inline.svg">
|
|
8
|
+
</node-projects-image-button-list-selector>
|
|
9
|
+
<select title="display" id="displayType" style="pointer-events: all; height: 24px; width: 70px; padding: 0; font-weight: 900; text-transform: uppercase; margin-left: 5px; margin-right: 10px;">
|
|
10
|
+
<option>block</option>
|
|
11
|
+
<option>flex</option>
|
|
12
|
+
<option>grid</option>
|
|
13
|
+
</select>
|
|
14
|
+
`;
|
|
15
|
+
static toolBars = [];
|
|
16
|
+
_toolbar;
|
|
17
|
+
_size = { width: 200, height: 30 };
|
|
18
|
+
_display;
|
|
19
|
+
_inline;
|
|
20
|
+
constructor(extensionManager, designerView, extendedItem) {
|
|
21
|
+
super(extensionManager, designerView, extendedItem);
|
|
22
|
+
}
|
|
23
|
+
extend(cache, event) {
|
|
24
|
+
const cs = getComputedStyle(this.extendedItem.element);
|
|
25
|
+
this._display = cs.display.replace('inline-', '').replace('inline', 'block');
|
|
26
|
+
this._inline = cs.display.startsWith('inline') ? 'inline' : 'block';
|
|
27
|
+
//@ts-ignore
|
|
28
|
+
this._toolbar = this.createToolbar(this.constructor.template, this._size.width, this._size.height);
|
|
29
|
+
BasicStackedToolbarExtension.toolBars.push(this._toolbar);
|
|
30
|
+
const displayTypeEl = this._toolbar.getById('displayType');
|
|
31
|
+
if (displayTypeEl) {
|
|
32
|
+
displayTypeEl.value = this._display;
|
|
33
|
+
displayTypeEl.onchange = async () => {
|
|
34
|
+
this._display = displayTypeEl.value;
|
|
35
|
+
await this.updateDisplayValue();
|
|
36
|
+
this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem]);
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const inlineEl = this._toolbar.getById('inline');
|
|
40
|
+
if (inlineEl) {
|
|
41
|
+
inlineEl.value = this._inline;
|
|
42
|
+
inlineEl.addEventListener('value-changed', async () => {
|
|
43
|
+
this._inline = inlineEl.value;
|
|
44
|
+
if (this._inline && cs.position === 'absolute')
|
|
45
|
+
this.extendedItem.setStyle('position', 'static');
|
|
46
|
+
await this.updateDisplayValue();
|
|
47
|
+
this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem]);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async updateDisplayValue() {
|
|
52
|
+
let v = (this._inline == 'inline' ? 'inline ' : '') + this._display;
|
|
53
|
+
if (v === 'inline block')
|
|
54
|
+
v = 'inline';
|
|
55
|
+
await this.extendedItem.updateStyleInSheetOrLocalAsync('display', v);
|
|
56
|
+
}
|
|
57
|
+
refresh(cache, event) {
|
|
58
|
+
if (event) {
|
|
59
|
+
const pos = this.designerCanvas.getNormalizedEventCoordinates(event);
|
|
60
|
+
let tbOffset = 0;
|
|
61
|
+
for (let i = 0; i < BasicStackedToolbarExtension.toolBars.length - 1; i++) {
|
|
62
|
+
if (BasicStackedToolbarExtension.toolBars[i] === this._toolbar)
|
|
63
|
+
break;
|
|
64
|
+
tbOffset += this._toolbar.children[0].getBoundingClientRect().height + 4;
|
|
65
|
+
}
|
|
66
|
+
this._toolbar.updatePosition({ x: (pos.x - (16 / this.designerCanvas.zoomFactor)), y: (pos.y - tbOffset - ((this._size.height + 14) / this.designerCanvas.zoomFactor)) });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
_addStyleButton(styleAndControlName) {
|
|
70
|
+
const cs = getComputedStyle(this.extendedItem.element);
|
|
71
|
+
const ctl = this._toolbar.getById(styleAndControlName);
|
|
72
|
+
ctl.addEventListener('value-changed', async () => {
|
|
73
|
+
await this.extendedItem.updateStyleInSheetOrLocalAsync(styleAndControlName, ctl.value);
|
|
74
|
+
});
|
|
75
|
+
ctl.value = cs[styleAndControlName];
|
|
76
|
+
}
|
|
77
|
+
dispose() {
|
|
78
|
+
BasicStackedToolbarExtension.toolBars.splice(BasicStackedToolbarExtension.toolBars.indexOf(this._toolbar), 1);
|
|
79
|
+
this._removeAllOverlays();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IDesignItem } from '../../../../item/IDesignItem.js';
|
|
2
2
|
import { IDesignerCanvas } from '../../IDesignerCanvas.js';
|
|
3
|
-
import {
|
|
3
|
+
import { BasicStackedToolbarExtension } from "../BasicStackedToolbarExtension.js";
|
|
4
4
|
import { IExtensionManager } from "../IExtensionManger.js";
|
|
5
|
-
export declare class BlockToolbarExtension extends
|
|
5
|
+
export declare class BlockToolbarExtension extends BasicStackedToolbarExtension {
|
|
6
6
|
protected static template: HTMLTemplateElement;
|
|
7
7
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
8
8
|
extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { html } from "@node-projects/base-custom-webcomponent";
|
|
2
|
-
import {
|
|
3
|
-
export class BlockToolbarExtension extends
|
|
2
|
+
import { BasicStackedToolbarExtension } from "../BasicStackedToolbarExtension.js";
|
|
3
|
+
export class BlockToolbarExtension extends BasicStackedToolbarExtension {
|
|
4
4
|
static template = html `
|
|
5
5
|
<div style="height: 100%; width: 100%;">
|
|
6
|
-
${
|
|
6
|
+
${BasicStackedToolbarExtension.basicTemplate}
|
|
7
7
|
</div>
|
|
8
8
|
`;
|
|
9
9
|
constructor(extensionManager, designerView, extendedItem) {
|
package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtensionProvider.d.ts
CHANGED
|
@@ -6,5 +6,4 @@ import { IExtensionManager } from '../IExtensionManger.js';
|
|
|
6
6
|
export declare class BlockToolbarExtensionProvider implements IDesignerExtensionProvider {
|
|
7
7
|
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
8
8
|
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
9
|
-
readonly style: CSSStyleSheet;
|
|
10
9
|
}
|
package/dist/elements/widgets/designerView/extensions/block/BlockToolbarExtensionProvider.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { BlockToolbarExtension } from './BlockToolbarExtension.js';
|
|
2
2
|
import { NodeType } from '../../../../item/NodeType.js';
|
|
3
|
-
import { css } from '@node-projects/base-custom-webcomponent';
|
|
4
3
|
export class BlockToolbarExtensionProvider {
|
|
5
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
6
5
|
if (designItem.nodeType === NodeType.Element) {
|
|
@@ -12,20 +11,4 @@ export class BlockToolbarExtensionProvider {
|
|
|
12
11
|
getExtension(extensionManager, designerView, designItem) {
|
|
13
12
|
return new BlockToolbarExtension(extensionManager, designerView, designItem);
|
|
14
13
|
}
|
|
15
|
-
style = css `
|
|
16
|
-
node-projects-image-button-list-selector img {
|
|
17
|
-
height: 16px;
|
|
18
|
-
border: 1px solid black;
|
|
19
|
-
border-radius: 4px;
|
|
20
|
-
box-sizing: border-box;
|
|
21
|
-
pointer-events: auto;
|
|
22
|
-
cursor: pointer;
|
|
23
|
-
}
|
|
24
|
-
node-projects-image-button-list-selector img:hover {
|
|
25
|
-
background: lightgray;
|
|
26
|
-
}
|
|
27
|
-
node-projects-image-button-list-selector img:active {
|
|
28
|
-
translate: 1px 1px
|
|
29
|
-
}
|
|
30
|
-
`;
|
|
31
14
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IDesignItem } from '../../../../item/IDesignItem.js';
|
|
2
2
|
import { IDesignerCanvas } from '../../IDesignerCanvas.js';
|
|
3
3
|
import { IExtensionManager } from '../IExtensionManger.js';
|
|
4
|
-
import {
|
|
5
|
-
export declare class FlexToolbarExtension extends
|
|
4
|
+
import { BasicStackedToolbarExtension } from "../BasicStackedToolbarExtension.js";
|
|
5
|
+
export declare class FlexToolbarExtension extends BasicStackedToolbarExtension {
|
|
6
6
|
protected static template: HTMLTemplateElement;
|
|
7
7
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
8
8
|
extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { html } from "@node-projects/base-custom-webcomponent";
|
|
2
2
|
import { assetsPath } from "../../../../../Constants.js";
|
|
3
|
-
import {
|
|
4
|
-
export class FlexToolbarExtension extends
|
|
3
|
+
import { BasicStackedToolbarExtension } from "../BasicStackedToolbarExtension.js";
|
|
4
|
+
export class FlexToolbarExtension extends BasicStackedToolbarExtension {
|
|
5
5
|
static template = html `
|
|
6
6
|
<div style="height: 100%; width: 100%;">
|
|
7
|
-
${
|
|
7
|
+
${BasicStackedToolbarExtension.basicTemplate}
|
|
8
8
|
<node-projects-image-button-list-selector property="direction" no-value-in-header id="flex-direction">
|
|
9
9
|
<img data-value="row" src="${assetsPath}images/chromeDevtools/flex-direction-row-icon.svg">
|
|
10
10
|
<img data-value="column" src="${assetsPath}images/chromeDevtools/flex-direction-column-icon.svg">
|
|
@@ -57,8 +57,8 @@ export class FlexToolbarExtension extends BasicDisplayToolbarExtension {
|
|
|
57
57
|
_addFlexDirectionButton() {
|
|
58
58
|
const cs = getComputedStyle(this.extendedItem.element);
|
|
59
59
|
const ctl = this._toolbar.getById('flex-direction');
|
|
60
|
-
ctl.addEventListener('value-changed', () => {
|
|
61
|
-
this.extendedItem.
|
|
60
|
+
ctl.addEventListener('value-changed', async () => {
|
|
61
|
+
await this.extendedItem.updateStyleInSheetOrLocalAsync('flex-direction', ctl.value);
|
|
62
62
|
this.rotateImagesAcordingFlexDirection(ctl.value);
|
|
63
63
|
});
|
|
64
64
|
ctl.value = cs['flex-direction'];
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { IDesignItem } from '../../../../item/IDesignItem.js';
|
|
2
2
|
import { IDesignerCanvas } from '../../IDesignerCanvas.js';
|
|
3
|
-
import { AbstractExtension } from "../AbstractExtension.js";
|
|
4
3
|
import { IExtensionManager } from '../IExtensionManger.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
import { BasicStackedToolbarExtension } from "../BasicStackedToolbarExtension.js";
|
|
5
|
+
export declare class GridChildToolbarExtension extends BasicStackedToolbarExtension {
|
|
6
|
+
protected static template: HTMLTemplateElement;
|
|
8
7
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
9
8
|
extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
|
|
10
|
-
refresh(cache: Record<string | symbol, any>, event?: MouseEvent): void;
|
|
11
|
-
dispose(): void;
|
|
12
9
|
}
|
|
@@ -1,66 +1,55 @@
|
|
|
1
1
|
import { html } from "@node-projects/base-custom-webcomponent";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { assetsPath } from "../../../../../Constants.js";
|
|
3
|
+
import { BasicStackedToolbarExtension } from "../BasicStackedToolbarExtension.js";
|
|
4
|
+
export class GridChildToolbarExtension extends BasicStackedToolbarExtension {
|
|
4
5
|
static template = html `
|
|
5
6
|
<div style="height: 100%; width: 100%;">
|
|
6
|
-
<
|
|
7
|
-
<
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<
|
|
16
|
-
<
|
|
17
|
-
<
|
|
18
|
-
<
|
|
19
|
-
</
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
7
|
+
<div style="display: flex; flex-direction: column;">
|
|
8
|
+
<span style="font-size: 10px; color: #00aff0;">column:</span>
|
|
9
|
+
<input type="text" title="column" id="gridColumn" style="pointer-events: all; height: 12px; width: 45px; padding: 0; margin-right: 5px">
|
|
10
|
+
</div>
|
|
11
|
+
<div style="display: flex; flex-direction: column;">
|
|
12
|
+
<span style="font-size: 10px; color: #00aff0;">row:</span>
|
|
13
|
+
<input type="text" title="column" id="gridRow" style="pointer-events: all; height: 12px; width: 45px; padding: 0; margin-right: 10px">
|
|
14
|
+
</div>
|
|
15
|
+
<node-projects-image-button-list-selector property="align-self" no-value-in-header id="align-self">
|
|
16
|
+
<img data-value="start" src="${assetsPath}images/chromeDevtools/align-items-start-icon.svg">
|
|
17
|
+
<img data-value="center" src="${assetsPath}images/chromeDevtools/align-items-center-icon.svg">
|
|
18
|
+
<img data-value="end" src="${assetsPath}images/chromeDevtools/align-items-end-icon.svg">
|
|
19
|
+
<img data-value="stretch" src="${assetsPath}images/chromeDevtools/align-items-stretch-icon.svg">
|
|
20
|
+
</node-projects-image-button-list-selector>
|
|
21
|
+
<node-projects-image-button-list-selector property="justify-self" no-value-in-header id="justify-self">
|
|
22
|
+
<img data-value="start" src="${assetsPath}images/chromeDevtools/justify-items-start-icon.svg">
|
|
23
|
+
<img data-value="center" src="${assetsPath}images/chromeDevtools/justify-items-center-icon.svg">
|
|
24
|
+
<img data-value="end" src="${assetsPath}images/chromeDevtools/justify-items-end-icon.svg">
|
|
25
|
+
<img data-value="stretch" src="${assetsPath}images/chromeDevtools/justify-items-stretch-icon.svg">
|
|
26
|
+
</node-projects-image-button-list-selector>
|
|
27
|
+
</div>`;
|
|
23
28
|
constructor(extensionManager, designerView, extendedItem) {
|
|
24
29
|
super(extensionManager, designerView, extendedItem);
|
|
30
|
+
this._size.width = 250;
|
|
25
31
|
}
|
|
26
32
|
extend(cache, event) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
gridTypeEl.insertAdjacentElement('afterbegin', op);
|
|
37
|
-
gridTypeEl.selectedIndex = 0;
|
|
38
|
-
gridTypeEl.onchange = () => {
|
|
39
|
-
if (gridTypeEl.value == 'custom') {
|
|
40
|
-
const columns = prompt("Number of columns?", '4');
|
|
41
|
-
if (!columns)
|
|
42
|
-
return;
|
|
43
|
-
const rows = prompt("Number of rows?", '4');
|
|
44
|
-
if (!rows)
|
|
45
|
-
return;
|
|
46
|
-
this.extendedItem.updateStyleInSheetOrLocal('grid-template-columns', '1fr '.repeat(parseInt(columns)).trim());
|
|
47
|
-
this.extendedItem.updateStyleInSheetOrLocal('grid-template-rows', '1fr '.repeat(parseInt(rows)).trim());
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
const parts = gridTypeEl.value.split('x');
|
|
51
|
-
this.extendedItem.updateStyleInSheetOrLocal('grid-template-columns', '1fr '.repeat(parseInt(parts[0])).trim());
|
|
52
|
-
this.extendedItem.updateStyleInSheetOrLocal('grid-template-rows', '1fr '.repeat(parseInt(parts[1])).trim());
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
this.refresh(cache, event);
|
|
56
|
-
}
|
|
57
|
-
refresh(cache, event) {
|
|
58
|
-
if (event) {
|
|
59
|
-
const pos = this.designerCanvas.getNormalizedEventCoordinates(event);
|
|
60
|
-
this._toolbar.updatePosition({ x: (pos.x - 16), y: (pos.y - 44) });
|
|
33
|
+
super.extend(cache, event);
|
|
34
|
+
const cs = getComputedStyle(this.extendedItem.element);
|
|
35
|
+
const gridColumnEl = this._toolbar.getById('gridColumn');
|
|
36
|
+
if (gridColumnEl) {
|
|
37
|
+
gridColumnEl.value = cs.gridColumn;
|
|
38
|
+
gridColumnEl.onkeyup = async (e) => {
|
|
39
|
+
if (e.key === 'Enter')
|
|
40
|
+
await this.extendedItem.updateStyleInSheetOrLocalAsync('gridColumn', gridColumnEl.value);
|
|
41
|
+
};
|
|
61
42
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
43
|
+
const gridRowEl = this._toolbar.getById('gridRow');
|
|
44
|
+
if (gridRowEl) {
|
|
45
|
+
gridRowEl.value = cs.gridColumn;
|
|
46
|
+
gridRowEl.onkeyup = async (e) => {
|
|
47
|
+
if (e.key === 'Enter')
|
|
48
|
+
await this.extendedItem.updateStyleInSheetOrLocalAsync('gridRow', gridRowEl.value);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
this._addStyleButton('align-self');
|
|
52
|
+
this._addStyleButton('justify-self');
|
|
53
|
+
this.refresh(cache, event);
|
|
65
54
|
}
|
|
66
55
|
}
|
package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.d.ts
CHANGED
|
@@ -6,5 +6,4 @@ import { IExtensionManager } from '../IExtensionManger.js';
|
|
|
6
6
|
export declare class GridChildToolbarExtensionProvider implements IDesignerExtensionProvider {
|
|
7
7
|
shouldExtend(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
8
8
|
getExtension(extensionManager: IExtensionManager, designerView: IDesignerCanvas, designItem: IDesignItem): IDesignerExtension;
|
|
9
|
-
readonly style: CSSStyleSheet;
|
|
10
9
|
}
|
package/dist/elements/widgets/designerView/extensions/grid/GridChildToolbarExtensionProvider.js
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import { css } from '@node-projects/base-custom-webcomponent';
|
|
2
1
|
import { NodeType } from '../../../../item/NodeType.js';
|
|
3
2
|
import { GridChildToolbarExtension } from './GridChildToolbarExtension.js';
|
|
4
3
|
export class GridChildToolbarExtensionProvider {
|
|
5
4
|
shouldExtend(extensionManager, designerView, designItem) {
|
|
6
|
-
if (designItem.nodeType === NodeType.Element &&
|
|
7
|
-
|
|
5
|
+
if (designItem.nodeType === NodeType.Element && designItem.parent) {
|
|
6
|
+
const cs = designItem.parent?.getComputedStyle();
|
|
7
|
+
if (cs != null && (cs.display === 'grid' || cs.display === 'inline-grid'))
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
8
10
|
return false;
|
|
9
11
|
}
|
|
10
12
|
getExtension(extensionManager, designerView, designItem) {
|
|
11
13
|
return new GridChildToolbarExtension(extensionManager, designerView, designItem);
|
|
12
14
|
}
|
|
13
|
-
style = css `
|
|
14
|
-
.svg-toolbar-container { overflow: visible }
|
|
15
|
-
.svg-toolbar-container div { padding: 5px; display: flex; gap: 2px; background: white; border-radius: 4px; box-shadow: 0 2px 10px 0 rgba(19,23,32,.2); align-items: center; }
|
|
16
|
-
`;
|
|
17
15
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IDesignItem } from '../../../../item/IDesignItem.js';
|
|
2
2
|
import { IDesignerCanvas } from '../../IDesignerCanvas.js';
|
|
3
3
|
import { IExtensionManager } from '../IExtensionManger.js';
|
|
4
|
-
import {
|
|
5
|
-
export declare class GridToolbarExtension extends
|
|
4
|
+
import { BasicStackedToolbarExtension } from "../BasicStackedToolbarExtension.js";
|
|
5
|
+
export declare class GridToolbarExtension extends BasicStackedToolbarExtension {
|
|
6
6
|
protected static template: HTMLTemplateElement;
|
|
7
7
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
8
8
|
extend(cache: Record<string | symbol, any>, event: MouseEvent): void;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { html } from "@node-projects/base-custom-webcomponent";
|
|
2
|
-
import {
|
|
2
|
+
import { BasicStackedToolbarExtension } from "../BasicStackedToolbarExtension.js";
|
|
3
3
|
import { assetsPath } from "../../../../../Constants.js";
|
|
4
|
-
export class GridToolbarExtension extends
|
|
4
|
+
export class GridToolbarExtension extends BasicStackedToolbarExtension {
|
|
5
5
|
static template = html `
|
|
6
6
|
<div style="height: 100%; width: 100%;">
|
|
7
|
-
${
|
|
7
|
+
${BasicStackedToolbarExtension.basicTemplate}
|
|
8
8
|
<select title="display" id="gridType" style="pointer-events: all; height: 24px; width: 60px; padding: 0; margin-right: 10px">
|
|
9
9
|
<option>1x1</option>
|
|
10
10
|
<option>1x16</option>
|
|
@@ -58,7 +58,7 @@ export class GridToolbarExtension extends BasicDisplayToolbarExtension {
|
|
|
58
58
|
op.innerText = style.gridTemplateColumns.split(' ').length + 'x' + style.gridTemplateRows.split(' ').length;
|
|
59
59
|
gridTypeEl.insertAdjacentElement('afterbegin', op);
|
|
60
60
|
gridTypeEl.selectedIndex = 0;
|
|
61
|
-
gridTypeEl.onchange = () => {
|
|
61
|
+
gridTypeEl.onchange = async () => {
|
|
62
62
|
if (gridTypeEl.value == 'custom') {
|
|
63
63
|
const columns = prompt("Number of columns?", '4');
|
|
64
64
|
if (!columns)
|
|
@@ -66,13 +66,17 @@ export class GridToolbarExtension extends BasicDisplayToolbarExtension {
|
|
|
66
66
|
const rows = prompt("Number of rows?", '4');
|
|
67
67
|
if (!rows)
|
|
68
68
|
return;
|
|
69
|
-
this.extendedItem.
|
|
70
|
-
this.extendedItem.
|
|
69
|
+
const cg = this.extendedItem.openGroup('change grid type');
|
|
70
|
+
await this.extendedItem.updateStyleInSheetOrLocalAsync('grid-template-columns', '1fr '.repeat(parseInt(columns)).trim());
|
|
71
|
+
await this.extendedItem.updateStyleInSheetOrLocalAsync('grid-template-rows', '1fr '.repeat(parseInt(rows)).trim());
|
|
72
|
+
cg.commit();
|
|
71
73
|
}
|
|
72
74
|
else {
|
|
73
75
|
const parts = gridTypeEl.value.split('x');
|
|
74
|
-
this.extendedItem.
|
|
75
|
-
this.extendedItem.
|
|
76
|
+
const cg = this.extendedItem.openGroup('change grid type');
|
|
77
|
+
await this.extendedItem.updateStyleInSheetOrLocalAsync('grid-template-columns', '1fr '.repeat(parseInt(parts[0])).trim());
|
|
78
|
+
await this.extendedItem.updateStyleInSheetOrLocalAsync('grid-template-rows', '1fr '.repeat(parseInt(parts[1])).trim());
|
|
79
|
+
cg.commit();
|
|
76
80
|
}
|
|
77
81
|
};
|
|
78
82
|
this._addStyleButton('align-content');
|
|
@@ -23,7 +23,22 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
23
23
|
.svg-path-line { stroke: #3899ec; stroke-dasharray: 2; }
|
|
24
24
|
.svg-draw-new-element { stroke: black; fill: transparent; stroke-width: 1; }
|
|
25
25
|
.svg-toolbar-container { overflow: visible }
|
|
26
|
-
.svg-toolbar-container div { padding: 5px; display: flex; gap: 2px; background: white; border-radius: 4px; box-shadow: 0 2px 10px 0 rgba(19,23,32,.2); align-items: center; }
|
|
26
|
+
.svg-toolbar-container > div { padding: 5px; display: flex; gap: 2px; background: white; border-radius: 4px; box-shadow: 0 2px 10px 0 rgba(19,23,32,.2); align-items: center; }
|
|
27
|
+
|
|
28
|
+
node-projects-image-button-list-selector img {
|
|
29
|
+
height: 16px;
|
|
30
|
+
border: 1px solid black;
|
|
31
|
+
border-radius: 4px;
|
|
32
|
+
box-sizing: border-box;
|
|
33
|
+
pointer-events: auto;
|
|
34
|
+
cursor: pointer;
|
|
35
|
+
}
|
|
36
|
+
node-projects-image-button-list-selector img:hover {
|
|
37
|
+
background: lightgray;
|
|
38
|
+
}
|
|
39
|
+
node-projects-image-button-list-selector img:active {
|
|
40
|
+
translate: 1px 1px
|
|
41
|
+
}
|
|
27
42
|
`;
|
|
28
43
|
static is = 'node-projects-overlay-layer-view';
|
|
29
44
|
_serviceContainer;
|
|
@@ -237,7 +237,7 @@ export class PointerTool {
|
|
|
237
237
|
}
|
|
238
238
|
if (this._movedSinceStartedAction) {
|
|
239
239
|
const containerStyle = getComputedStyle(this._actionStartedDesignItem.parent.element);
|
|
240
|
-
const currentContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this._actionStartedDesignItem.parent, containerStyle));
|
|
240
|
+
const currentContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this._actionStartedDesignItem.parent, containerStyle, this._actionStartedDesignItem));
|
|
241
241
|
if (currentContainerService) {
|
|
242
242
|
const dragItem = this._actionStartedDesignItem.parent;
|
|
243
243
|
if (this._dragParentExtensionItem != dragItem) {
|
|
@@ -324,7 +324,7 @@ export class PointerTool {
|
|
|
324
324
|
}
|
|
325
325
|
if (this._movedSinceStartedAction) {
|
|
326
326
|
const containerStyle = getComputedStyle(this._actionStartedDesignItem.parent.element);
|
|
327
|
-
let containerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this._actionStartedDesignItem.parent, containerStyle));
|
|
327
|
+
let containerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(this._actionStartedDesignItem.parent, containerStyle, this._actionStartedDesignItem));
|
|
328
328
|
const cp = { x: currentPoint.x - this._moveItemsOffset.x, y: currentPoint.y - this._moveItemsOffset.y };
|
|
329
329
|
if (containerService) {
|
|
330
330
|
if (!this._changeGroup)
|
|
@@ -400,7 +400,7 @@ export class PointerTool {
|
|
|
400
400
|
else if (e == designerCanvas.rootDesignItem.element) {
|
|
401
401
|
newContainerElementDesignItem = designerCanvas.rootDesignItem;
|
|
402
402
|
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
403
|
-
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
403
|
+
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle, designItem));
|
|
404
404
|
break;
|
|
405
405
|
}
|
|
406
406
|
else if (false) {
|
|
@@ -409,7 +409,7 @@ export class PointerTool {
|
|
|
409
409
|
else {
|
|
410
410
|
newContainerElementDesignItem = DesignItem.GetOrCreateDesignItem(e, e, designerCanvas.serviceContainer, designerCanvas.instanceServiceContainer);
|
|
411
411
|
const containerStyle = getComputedStyle(newContainerElementDesignItem.element);
|
|
412
|
-
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle));
|
|
412
|
+
newContainerService = designerCanvas.serviceContainer.getLastServiceWhere('containerService', x => x.serviceForContainer(newContainerElementDesignItem, containerStyle, designItem));
|
|
413
413
|
if (newContainerService) {
|
|
414
414
|
if (newContainerService.canEnter(newContainerElementDesignItem, designItems)) {
|
|
415
415
|
break;
|
package/dist/index.d.ts
CHANGED
|
@@ -196,7 +196,7 @@ export * from "./elements/widgets/designerView/tools/ZoomTool.js";
|
|
|
196
196
|
export type { IDesignerExtension } from "./elements/widgets/designerView/extensions/IDesignerExtension.js";
|
|
197
197
|
export type { IDesignerExtensionProvider } from "./elements/widgets/designerView/extensions/IDesignerExtensionProvider.js";
|
|
198
198
|
export type { IExtensionManager } from "./elements/widgets/designerView/extensions/IExtensionManger.js";
|
|
199
|
-
export * from "./elements/widgets/designerView/extensions/
|
|
199
|
+
export * from "./elements/widgets/designerView/extensions/BasicStackedToolbarExtension.js";
|
|
200
200
|
export * from "./elements/widgets/designerView/extensions/OverlayLayer.js";
|
|
201
201
|
export * from "./elements/widgets/designerView/extensions/ExtensionType.js";
|
|
202
202
|
export * from "./elements/widgets/designerView/extensions/AbstractExtension.js";
|
package/dist/index.js
CHANGED
|
@@ -137,7 +137,7 @@ export * from "./elements/widgets/designerView/tools/PointerTool.js";
|
|
|
137
137
|
export * from "./elements/widgets/designerView/tools/RectangleSelectorTool.js";
|
|
138
138
|
export * from "./elements/widgets/designerView/tools/TextTool.js";
|
|
139
139
|
export * from "./elements/widgets/designerView/tools/ZoomTool.js";
|
|
140
|
-
export * from "./elements/widgets/designerView/extensions/
|
|
140
|
+
export * from "./elements/widgets/designerView/extensions/BasicStackedToolbarExtension.js";
|
|
141
141
|
export * from "./elements/widgets/designerView/extensions/OverlayLayer.js";
|
|
142
142
|
export * from "./elements/widgets/designerView/extensions/ExtensionType.js";
|
|
143
143
|
export * from "./elements/widgets/designerView/extensions/AbstractExtension.js";
|
package/package.json
CHANGED