@node-projects/web-component-designer 0.0.244 → 0.0.246
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/helper/GridHelper.js +4 -3
- package/dist/elements/helper/TransformHelper.d.ts +1 -0
- package/dist/elements/helper/TransformHelper.js +20 -2
- package/dist/elements/helper/contextMenu/ContextMenu.d.ts +3 -2
- package/dist/elements/helper/contextMenu/ContextMenu.js +7 -5
- package/dist/elements/helper/contextMenu/IContextMenuItem.d.ts +1 -1
- package/dist/elements/services/placementService/FlexBoxPlacementService.js +36 -12
- package/dist/elements/services/propertiesService/services/CssProperties.json +48 -6
- package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +7 -0
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +9 -1
- package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.d.ts +1 -0
- package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.js +7 -0
- package/dist/elements/widgets/designerView/overlayLayerView.d.ts +1 -0
- package/dist/elements/widgets/designerView/overlayLayerView.js +9 -0
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { getDesignerCanvasNormalizedTransformedCornerDOMPoints } from "./TransformHelper.js";
|
|
1
2
|
export function CalculateGridInformation(designItem) {
|
|
2
3
|
//todo:
|
|
3
4
|
//same name should combine columns/rows
|
|
4
5
|
let itemRect = designItem.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(designItem.element);
|
|
5
|
-
|
|
6
|
+
let transformedCornerPoints = getDesignerCanvasNormalizedTransformedCornerDOMPoints(designItem.element, null, designItem.instanceServiceContainer.designerCanvas);
|
|
6
7
|
const computedStyle = getComputedStyle(designItem.element);
|
|
7
8
|
const rows = computedStyle.gridTemplateRows.split(' ');
|
|
8
9
|
const columns = computedStyle.gridTemplateColumns.split(' ');
|
|
@@ -12,8 +13,8 @@ export function CalculateGridInformation(designItem) {
|
|
|
12
13
|
let xGap = 0;
|
|
13
14
|
let yGap = 0;
|
|
14
15
|
let rw = 0;
|
|
15
|
-
let xOffset =
|
|
16
|
-
let yOffset =
|
|
16
|
+
let xOffset = transformedCornerPoints[0].x;
|
|
17
|
+
let yOffset = transformedCornerPoints[0].y;
|
|
17
18
|
let gridA = null;
|
|
18
19
|
if (computedStyle.gridTemplateAreas && computedStyle.gridTemplateAreas !== 'none')
|
|
19
20
|
gridA = computedStyle.gridTemplateAreas.split('\"');
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IPoint } from "../../interfaces/IPoint.js";
|
|
2
2
|
import { IDesignerCanvas } from "../widgets/designerView/IDesignerCanvas.js";
|
|
3
|
+
export declare function getElementCombinedTransform(element: HTMLElement): DOMMatrix;
|
|
3
4
|
export declare function combineTransforms(element: HTMLElement, actualTransforms: string, requestedTransformation: string): void;
|
|
4
5
|
export declare function getDomMatrix(element: HTMLElement): DOMMatrix;
|
|
5
6
|
export declare function transformPointByInverseMatrix(point: DOMPoint, matrix: DOMMatrix): DOMPoint;
|
|
@@ -5,6 +5,24 @@ let identityMatrix = [
|
|
|
5
5
|
0, 0, 1, 0,
|
|
6
6
|
0, 0, 0, 1
|
|
7
7
|
];
|
|
8
|
+
export function getElementCombinedTransform(element) {
|
|
9
|
+
//https://www.w3.org/TR/css-transforms-2/#ctm
|
|
10
|
+
let s = getComputedStyle(element);
|
|
11
|
+
let m = new DOMMatrix();
|
|
12
|
+
if (s.translate != 'none') {
|
|
13
|
+
m = m.multiply(new DOMMatrix('translate(' + s.translate + ')'));
|
|
14
|
+
}
|
|
15
|
+
if (s.rotate != 'none') {
|
|
16
|
+
m = m.multiply(new DOMMatrix('rotate(' + s.rotate + ')'));
|
|
17
|
+
}
|
|
18
|
+
if (s.scale != 'none') {
|
|
19
|
+
m = m.multiply(new DOMMatrix('scale(' + s.rotate + ')'));
|
|
20
|
+
}
|
|
21
|
+
if (s.transform != 'none') {
|
|
22
|
+
m = m.multiply(new DOMMatrix(s.transform));
|
|
23
|
+
}
|
|
24
|
+
return m;
|
|
25
|
+
}
|
|
8
26
|
export function combineTransforms(element, actualTransforms, requestedTransformation) {
|
|
9
27
|
if (actualTransforms == null || actualTransforms == '') {
|
|
10
28
|
element.style.transform = requestedTransformation;
|
|
@@ -100,8 +118,8 @@ export function getResultingTransformationBetweenElementAndAllAncestors(element,
|
|
|
100
118
|
let originalElementAndAllParentsMultipliedMatrix;
|
|
101
119
|
while (actualElement != ancestor) {
|
|
102
120
|
const newElement = getParentElementIncludingSlots(actualElement);
|
|
103
|
-
actualElementMatrix =
|
|
104
|
-
newElementMatrix =
|
|
121
|
+
actualElementMatrix = getElementCombinedTransform(actualElement);
|
|
122
|
+
newElementMatrix = getElementCombinedTransform(newElement);
|
|
105
123
|
newElementMatrix.m41 = newElementMatrix.m42 = 0;
|
|
106
124
|
if (actualElement == element) {
|
|
107
125
|
originalElementAndAllParentsMultipliedMatrix = actualElementMatrix.multiply(newElementMatrix);
|
|
@@ -11,15 +11,16 @@ export declare class ContextMenu {
|
|
|
11
11
|
static count: number;
|
|
12
12
|
menu: IContextMenuItem[];
|
|
13
13
|
options: IContextMenuOptions;
|
|
14
|
+
context: any;
|
|
14
15
|
private num;
|
|
15
16
|
private _menuElement;
|
|
16
|
-
constructor(menu: IContextMenuItem[], options?: IContextMenuOptions);
|
|
17
|
+
constructor(menu: IContextMenuItem[], options?: IContextMenuOptions, context?: any);
|
|
17
18
|
reload(): void;
|
|
18
19
|
renderLevel(level: IContextMenuItem[]): HTMLUListElement;
|
|
19
20
|
display(event: MouseEvent): void;
|
|
20
21
|
_windowResize(): void;
|
|
21
22
|
_windowDown(e: MouseEvent): boolean;
|
|
22
23
|
_windowKeyUp(e: KeyboardEvent): void;
|
|
23
|
-
static show(menu: IContextMenuItem[], event: MouseEvent, options?: IContextMenuOptions): ContextMenu;
|
|
24
|
+
static show(menu: IContextMenuItem[], event: MouseEvent, options?: IContextMenuOptions, context?: any): ContextMenu;
|
|
24
25
|
close(): void;
|
|
25
26
|
}
|
|
@@ -116,12 +116,14 @@ export class ContextMenu {
|
|
|
116
116
|
static count = 0;
|
|
117
117
|
menu;
|
|
118
118
|
options;
|
|
119
|
+
context;
|
|
119
120
|
num;
|
|
120
121
|
_menuElement;
|
|
121
|
-
constructor(menu, options) {
|
|
122
|
+
constructor(menu, options, context) {
|
|
122
123
|
this.num = ContextMenu.count++;
|
|
123
124
|
this.menu = menu;
|
|
124
125
|
this.options = options;
|
|
126
|
+
this.context = context;
|
|
125
127
|
this.reload();
|
|
126
128
|
this._windowDown = this._windowDown.bind(this);
|
|
127
129
|
this._windowKeyUp = this._windowKeyUp.bind(this);
|
|
@@ -181,12 +183,12 @@ export class ContextMenu {
|
|
|
181
183
|
else {
|
|
182
184
|
if (item.action)
|
|
183
185
|
li.addEventListener('click', (e) => {
|
|
184
|
-
item.action(e, item);
|
|
186
|
+
item.action(e, item, this.context);
|
|
185
187
|
this.close();
|
|
186
188
|
});
|
|
187
189
|
if (this.options?.mode == 'undo') {
|
|
188
190
|
li.addEventListener('mouseup', (e) => {
|
|
189
|
-
item.action(e, item);
|
|
191
|
+
item.action(e, item, this.context);
|
|
190
192
|
this.close();
|
|
191
193
|
});
|
|
192
194
|
}
|
|
@@ -293,8 +295,8 @@ export class ContextMenu {
|
|
|
293
295
|
this.close();
|
|
294
296
|
}
|
|
295
297
|
}
|
|
296
|
-
static show(menu, event, options) {
|
|
297
|
-
let ctxMenu = new ContextMenu(menu, options);
|
|
298
|
+
static show(menu, event, options, context) {
|
|
299
|
+
let ctxMenu = new ContextMenu(menu, options, context);
|
|
298
300
|
ctxMenu.display(event);
|
|
299
301
|
return ctxMenu;
|
|
300
302
|
}
|
|
@@ -5,5 +5,5 @@ export interface IContextMenuItem {
|
|
|
5
5
|
readonly children?: IContextMenuItem[];
|
|
6
6
|
readonly disabled?: boolean;
|
|
7
7
|
readonly shortCut?: string;
|
|
8
|
-
action?: (event: MouseEvent, item: IContextMenuItem) => void;
|
|
8
|
+
action?: (event: MouseEvent, item: IContextMenuItem, context?: any) => void;
|
|
9
9
|
}
|
|
@@ -44,23 +44,31 @@ export class FlexBoxPlacementService {
|
|
|
44
44
|
const pos = placementView.getNormalizedEventCoordinates(event);
|
|
45
45
|
const style = getComputedStyle(container.element);
|
|
46
46
|
const childrenWithPos = Array.from(container.children()).filter(x => !x.isEmptyTextNode).map(x => [x, placementView.getNormalizedElementCoordinates(x.element)]);
|
|
47
|
-
if (style.flexDirection == 'row') {
|
|
47
|
+
if (style.flexDirection == 'row' || style.flexDirection == 'row-reverse') {
|
|
48
48
|
childrenWithPos.sort(x => x[1].x);
|
|
49
49
|
let elBefore = null;
|
|
50
50
|
for (let c of childrenWithPos) {
|
|
51
51
|
if (c[1].x + c[1].width / 2 < pos.x) {
|
|
52
52
|
elBefore = c;
|
|
53
|
+
if (style.flexDirection == 'row-reverse')
|
|
54
|
+
break;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
57
|
let posBefore = childrenWithPos.indexOf(elBefore);
|
|
56
58
|
let posDrag = childrenWithPos.indexOf(childrenWithPos.find(x => x[0] == items[0]));
|
|
57
59
|
if (elBefore && elBefore[0] != items[0]) {
|
|
58
|
-
if (posBefore
|
|
60
|
+
if (style.flexDirection == 'row-reverse' && posBefore - 1 === posDrag)
|
|
61
|
+
return;
|
|
62
|
+
if (style.flexDirection == 'row' && posBefore + 1 === posDrag)
|
|
59
63
|
return;
|
|
60
64
|
const sel = [...container.instanceServiceContainer.selectionService.selectedElements];
|
|
61
65
|
let cg = items[0].openGroup('move in flexbox');
|
|
62
|
-
items[0].
|
|
63
|
-
|
|
66
|
+
if (items[0].parent)
|
|
67
|
+
items[0].remove();
|
|
68
|
+
if (style.flexDirection == 'row-reverse')
|
|
69
|
+
elBefore[0].insertAdjacentElement(items[0], 'beforebegin');
|
|
70
|
+
else
|
|
71
|
+
elBefore[0].insertAdjacentElement(items[0], 'afterend');
|
|
64
72
|
cg.commit();
|
|
65
73
|
container.instanceServiceContainer.selectionService.setSelectedElements(sel);
|
|
66
74
|
}
|
|
@@ -69,29 +77,41 @@ export class FlexBoxPlacementService {
|
|
|
69
77
|
return;
|
|
70
78
|
const sel = [...container.instanceServiceContainer.selectionService.selectedElements];
|
|
71
79
|
let cg = items[0].openGroup('move in flexbox');
|
|
72
|
-
items[0].
|
|
73
|
-
|
|
80
|
+
if (items[0].parent)
|
|
81
|
+
items[0].remove();
|
|
82
|
+
if (style.flexDirection == 'row-reverse')
|
|
83
|
+
container.insertChild(items[0]);
|
|
84
|
+
else
|
|
85
|
+
container.insertChild(items[0], 0);
|
|
74
86
|
cg.commit();
|
|
75
87
|
container.instanceServiceContainer.selectionService.setSelectedElements(sel);
|
|
76
88
|
}
|
|
77
89
|
}
|
|
78
|
-
else if (style.flexDirection == 'column') {
|
|
90
|
+
else if (style.flexDirection == 'column' || style.flexDirection == 'column-reverse') {
|
|
79
91
|
childrenWithPos.sort(x => x[1].y);
|
|
80
92
|
let elBefore = null;
|
|
81
93
|
for (let c of childrenWithPos) {
|
|
82
94
|
if (c[1].y + c[1].height / 2 < pos.y) {
|
|
83
95
|
elBefore = c;
|
|
96
|
+
if (style.flexDirection == 'column-reverse')
|
|
97
|
+
break;
|
|
84
98
|
}
|
|
85
99
|
}
|
|
86
100
|
let posBefore = childrenWithPos.indexOf(elBefore);
|
|
87
101
|
let posDrag = childrenWithPos.indexOf(childrenWithPos.find(x => x[0] == items[0]));
|
|
88
102
|
if (elBefore && elBefore[0] != items[0]) {
|
|
89
|
-
if (posBefore
|
|
103
|
+
if (style.flexDirection == 'column-reverse' && posBefore - 1 === posDrag)
|
|
104
|
+
return;
|
|
105
|
+
if (style.flexDirection == 'column' && posBefore + 1 === posDrag)
|
|
90
106
|
return;
|
|
91
107
|
const sel = [...container.instanceServiceContainer.selectionService.selectedElements];
|
|
92
108
|
let cg = items[0].openGroup('move in flexbox');
|
|
93
|
-
items[0].
|
|
94
|
-
|
|
109
|
+
if (items[0].parent)
|
|
110
|
+
items[0].remove();
|
|
111
|
+
if (style.flexDirection == 'column-reverse')
|
|
112
|
+
elBefore[0].insertAdjacentElement(items[0], 'beforebegin');
|
|
113
|
+
else
|
|
114
|
+
elBefore[0].insertAdjacentElement(items[0], 'afterend');
|
|
95
115
|
cg.commit();
|
|
96
116
|
container.instanceServiceContainer.selectionService.setSelectedElements(sel);
|
|
97
117
|
}
|
|
@@ -100,8 +120,12 @@ export class FlexBoxPlacementService {
|
|
|
100
120
|
return;
|
|
101
121
|
const sel = [...container.instanceServiceContainer.selectionService.selectedElements];
|
|
102
122
|
let cg = items[0].openGroup('move in flexbox');
|
|
103
|
-
items[0].
|
|
104
|
-
|
|
123
|
+
if (items[0].parent)
|
|
124
|
+
items[0].remove();
|
|
125
|
+
if (style.flexDirection == 'column-reverse')
|
|
126
|
+
container.insertChild(items[0]);
|
|
127
|
+
else
|
|
128
|
+
container.insertChild(items[0], 0);
|
|
105
129
|
cg.commit();
|
|
106
130
|
container.instanceServiceContainer.selectionService.setSelectedElements(sel);
|
|
107
131
|
}
|
|
@@ -3,7 +3,26 @@
|
|
|
3
3
|
"type": "color"
|
|
4
4
|
},
|
|
5
5
|
"additiveSymbols": {},
|
|
6
|
-
"alignContent": {
|
|
6
|
+
"alignContent": {
|
|
7
|
+
"type": "list",
|
|
8
|
+
"values": [
|
|
9
|
+
"start",
|
|
10
|
+
"end",
|
|
11
|
+
"flex-start",
|
|
12
|
+
"flex-end",
|
|
13
|
+
"center",
|
|
14
|
+
"normal",
|
|
15
|
+
"baseline",
|
|
16
|
+
"first baseline",
|
|
17
|
+
"last baseline",
|
|
18
|
+
"space-between",
|
|
19
|
+
"space-around",
|
|
20
|
+
"space-evenly",
|
|
21
|
+
"stretch",
|
|
22
|
+
"safe",
|
|
23
|
+
"unsafe"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
7
26
|
"alignItems": {},
|
|
8
27
|
"alignSelf": {},
|
|
9
28
|
"alignmentBaseline": {},
|
|
@@ -229,11 +248,30 @@
|
|
|
229
248
|
"filter": {},
|
|
230
249
|
"flex": {},
|
|
231
250
|
"flexBasis": {},
|
|
232
|
-
"flexDirection": {
|
|
251
|
+
"flexDirection": {
|
|
252
|
+
"type": "list",
|
|
253
|
+
"values": [
|
|
254
|
+
"row",
|
|
255
|
+
"column",
|
|
256
|
+
"row-reverse",
|
|
257
|
+
"column-reverse"
|
|
258
|
+
]
|
|
259
|
+
},
|
|
233
260
|
"flexFlow": {},
|
|
234
|
-
"flexGrow": {
|
|
235
|
-
|
|
236
|
-
|
|
261
|
+
"flexGrow": {
|
|
262
|
+
"type": "number"
|
|
263
|
+
},
|
|
264
|
+
"flexShrink": {
|
|
265
|
+
"type": "number"
|
|
266
|
+
},
|
|
267
|
+
"flexWrap": {
|
|
268
|
+
"type": "list",
|
|
269
|
+
"values": [
|
|
270
|
+
"nowrap",
|
|
271
|
+
"wrap",
|
|
272
|
+
"wrap-reverse"
|
|
273
|
+
]
|
|
274
|
+
},
|
|
237
275
|
"float": {},
|
|
238
276
|
"floodColor": {
|
|
239
277
|
"type": "color"
|
|
@@ -413,7 +451,11 @@
|
|
|
413
451
|
"pointerEvents": {},
|
|
414
452
|
"position": {
|
|
415
453
|
"type": "list",
|
|
416
|
-
"values": [
|
|
454
|
+
"values": [
|
|
455
|
+
"static",
|
|
456
|
+
"relative",
|
|
457
|
+
"absolute"
|
|
458
|
+
]
|
|
417
459
|
},
|
|
418
460
|
"prefix": {},
|
|
419
461
|
"quotes": {},
|
|
@@ -11,6 +11,7 @@ export declare abstract class AbstractExtensionBase {
|
|
|
11
11
|
constructor(extensionManager: IExtensionManager, designerCanvas: IDesignerCanvas);
|
|
12
12
|
protected _removeAllOverlays(): void;
|
|
13
13
|
protected _addOverlay(element: SVGGraphicsElement, overlayLayer?: OverlayLayer): void;
|
|
14
|
+
protected _drawGroup(className?: string, group?: SVGGElement, overlayLayer?: OverlayLayer): SVGGElement;
|
|
14
15
|
protected _drawLine(x1: number, y1: number, x2: number, y2: number, className?: string, line?: SVGLineElement, overlayLayer?: OverlayLayer): SVGLineElement;
|
|
15
16
|
protected _drawCircle(x: number, y: number, radius: number, className?: string, circle?: SVGCircleElement, overlayLayer?: OverlayLayer): SVGCircleElement;
|
|
16
17
|
protected _drawRect(x: number, y: number, w: number, h: number, className?: string, rect?: SVGRectElement, overlayLayer?: OverlayLayer): SVGRectElement;
|
|
@@ -24,6 +24,13 @@ export class AbstractExtensionBase {
|
|
|
24
24
|
this.overlayLayerView.addOverlay(this.constructor.name, element, overlayLayer);
|
|
25
25
|
this.overlays.push(element);
|
|
26
26
|
}
|
|
27
|
+
_drawGroup(className, group, overlayLayer) {
|
|
28
|
+
const newGroup = this.overlayLayerView.drawGroup(this.constructor.name, className, group, overlayLayer);
|
|
29
|
+
if (!group) {
|
|
30
|
+
this.overlays.push(newGroup);
|
|
31
|
+
}
|
|
32
|
+
return newGroup;
|
|
33
|
+
}
|
|
27
34
|
_drawLine(x1, y1, x2, y2, className, line, overlayLayer) {
|
|
28
35
|
const newLine = this.overlayLayerView.drawLine(this.constructor.name, x1, y1, x2, y2, className, line, overlayLayer);
|
|
29
36
|
if (!line) {
|
|
@@ -6,6 +6,7 @@ export declare class DisplayGridExtension extends AbstractExtension {
|
|
|
6
6
|
private _cells;
|
|
7
7
|
private _texts;
|
|
8
8
|
private _gaps;
|
|
9
|
+
private _group;
|
|
9
10
|
private gridInformation;
|
|
10
11
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
11
12
|
extend(event?: Event): void;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { CalculateGridInformation } from "../../../../helper/GridHelper.js";
|
|
2
|
+
import { getElementCombinedTransform } from "../../../../helper/TransformHelper.js";
|
|
2
3
|
import { AbstractExtension } from '../AbstractExtension.js';
|
|
3
4
|
import { OverlayLayer } from "../OverlayLayer.js";
|
|
4
5
|
export class DisplayGridExtension extends AbstractExtension {
|
|
5
6
|
_cells;
|
|
6
7
|
_texts;
|
|
7
8
|
_gaps;
|
|
9
|
+
_group;
|
|
8
10
|
gridInformation;
|
|
9
11
|
constructor(extensionManager, designerView, extendedItem) {
|
|
10
12
|
super(extensionManager, designerView, extendedItem);
|
|
@@ -16,17 +18,23 @@ export class DisplayGridExtension extends AbstractExtension {
|
|
|
16
18
|
refresh(event) {
|
|
17
19
|
this.gridInformation = CalculateGridInformation(this.extendedItem);
|
|
18
20
|
let cells = this.gridInformation.cells;
|
|
21
|
+
this._group = this._drawGroup(null, this._group, OverlayLayer.Background);
|
|
22
|
+
this._group.style.transform = getElementCombinedTransform(this.extendedItem.element).toString();
|
|
23
|
+
this._group.style.transformOrigin = '0 0';
|
|
24
|
+
this._group.style.transformBox = 'fill-box';
|
|
19
25
|
if (cells[0][0] && !isNaN(cells[0][0].height) && !isNaN(cells[0][0].width)) {
|
|
20
26
|
if (this.gridInformation.cells.length != this._cells.length || this.gridInformation.cells[0].length != this._cells[0].length)
|
|
21
27
|
this._initSVGArrays();
|
|
22
28
|
//draw gaps
|
|
23
29
|
this.gridInformation.gaps.forEach((gap, i) => {
|
|
24
|
-
this._gaps[i] = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', this._gaps[i], OverlayLayer.
|
|
30
|
+
this._gaps[i] = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', this._gaps[i], OverlayLayer.Background);
|
|
31
|
+
this._group.appendChild(this._gaps[i]);
|
|
25
32
|
});
|
|
26
33
|
//draw cells
|
|
27
34
|
cells.forEach((row, i) => {
|
|
28
35
|
row.forEach((cell, j) => {
|
|
29
36
|
this._cells[i][j] = this._drawRect(cell.x, cell.y, cell.width, cell.height, 'svg-grid', this._cells[i][j], OverlayLayer.Background);
|
|
37
|
+
this._group.appendChild(this._cells[i][j]);
|
|
30
38
|
if (cell.name) {
|
|
31
39
|
this._texts[i][j] = this._drawText(cell.name, cell.x, cell.y, 'svg-grid-area', this._texts[i][j], OverlayLayer.Background);
|
|
32
40
|
this._texts[i][j].setAttribute("dominant-baseline", "hanging");
|
package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
|
8
8
|
private _resizers;
|
|
9
9
|
private _initalPos;
|
|
10
10
|
private _initialSizes;
|
|
11
|
+
private _group;
|
|
11
12
|
constructor(extensionManager: IExtensionManager, designerView: IDesignerCanvas, extendedItem: IDesignItem);
|
|
12
13
|
extend(event?: Event): void;
|
|
13
14
|
refresh(event?: Event): void;
|
package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EventNames } from "../../../../../enums/EventNames.js";
|
|
2
2
|
import { convertCssUnit, convertCssUnitToPixel, getCssUnit } from "../../../../helper/CssUnitConverter.js";
|
|
3
3
|
import { CalculateGridInformation } from "../../../../helper/GridHelper.js";
|
|
4
|
+
import { getElementCombinedTransform } from "../../../../helper/TransformHelper.js";
|
|
4
5
|
import { AbstractExtension } from '../AbstractExtension.js';
|
|
5
6
|
import { OverlayLayer } from "../OverlayLayer.js";
|
|
6
7
|
export class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
@@ -8,6 +9,7 @@ export class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
|
8
9
|
_resizers = [];
|
|
9
10
|
_initalPos;
|
|
10
11
|
_initialSizes;
|
|
12
|
+
_group;
|
|
11
13
|
constructor(extensionManager, designerView, extendedItem) {
|
|
12
14
|
super(extensionManager, designerView, extendedItem);
|
|
13
15
|
}
|
|
@@ -16,6 +18,10 @@ export class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
|
16
18
|
}
|
|
17
19
|
refresh(event) {
|
|
18
20
|
this.gridInformation = CalculateGridInformation(this.extendedItem);
|
|
21
|
+
this._group = this._drawGroup(null, this._group, OverlayLayer.Background);
|
|
22
|
+
this._group.style.transform = getElementCombinedTransform(this.extendedItem.element).toString();
|
|
23
|
+
this._group.style.transformOrigin = '0 0';
|
|
24
|
+
this._group.style.transformBox = 'fill-box';
|
|
19
25
|
this.gridInformation.gaps.forEach((gap, i) => {
|
|
20
26
|
if (gap.width < 3) {
|
|
21
27
|
gap.width = 3;
|
|
@@ -26,6 +32,7 @@ export class EditGridColumnRowSizesExtension extends AbstractExtension {
|
|
|
26
32
|
gap.y--;
|
|
27
33
|
}
|
|
28
34
|
let rect = this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-resizer-' + gap.type, this._resizers[i], OverlayLayer.Normal);
|
|
35
|
+
this._group.appendChild(rect);
|
|
29
36
|
if (!this._resizers[i]) {
|
|
30
37
|
this._resizers[i] = rect;
|
|
31
38
|
rect.addEventListener(EventNames.PointerDown, event => this._pointerActionTypeResize(event, rect, gap));
|
|
@@ -20,6 +20,7 @@ export declare class OverlayLayerView extends BaseCustomWebComponentConstructorA
|
|
|
20
20
|
removeAllOverlays(): void;
|
|
21
21
|
createPoint(): DOMPointInit;
|
|
22
22
|
elementFromPoint(x: number, y: number): Element;
|
|
23
|
+
drawGroup(overlaySource: string, className?: string, group?: SVGGElement, overlayLayer?: OverlayLayer): SVGGElement;
|
|
23
24
|
drawLine(overlaySource: string, x1: number, y1: number, x2: number, y2: number, className?: string, line?: SVGLineElement, overlayLayer?: OverlayLayer): SVGLineElement;
|
|
24
25
|
drawCircle(overlaySource: string, x: number, y: number, radius: number, className?: string, circle?: SVGCircleElement, overlayLayer?: OverlayLayer): SVGCircleElement;
|
|
25
26
|
drawRect(overlaySource: string, x: number, y: number, w: number, h: number, className?: string, rect?: SVGRectElement, overlayLayer?: OverlayLayer): SVGRectElement;
|
|
@@ -101,6 +101,15 @@ export class OverlayLayerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
101
101
|
//@ts-ignore
|
|
102
102
|
return this.shadowRoot.elementFromPoint(x, y);
|
|
103
103
|
}
|
|
104
|
+
drawGroup(overlaySource, className, group, overlayLayer) {
|
|
105
|
+
if (!group) {
|
|
106
|
+
group = document.createElementNS("http://www.w3.org/2000/svg", "g");
|
|
107
|
+
this.addOverlay(overlaySource, group, overlayLayer);
|
|
108
|
+
}
|
|
109
|
+
if (className)
|
|
110
|
+
group.setAttribute('class', className);
|
|
111
|
+
return group;
|
|
112
|
+
}
|
|
104
113
|
drawLine(overlaySource, x1, y1, x2, y2, className, line, overlayLayer) {
|
|
105
114
|
if (!line) {
|
|
106
115
|
line = document.createElementNS("http://www.w3.org/2000/svg", "line");
|