@node-projects/web-component-designer 0.0.46 → 0.0.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/helper/GridHelper.d.ts +16 -0
- package/dist/elements/helper/GridHelper.js +107 -0
- package/dist/elements/helper/Helper.d.ts +3 -0
- package/dist/elements/helper/Helper.js +3 -0
- package/dist/elements/item/DesignItem.d.ts +4 -2
- package/dist/elements/item/DesignItem.js +7 -3
- package/dist/elements/item/IDesignItem.d.ts +3 -1
- package/dist/elements/services/contentService/IContentChanged.d.ts +3 -3
- package/dist/elements/services/htmlWriterService/HtmlWriterService.js +1 -6
- package/dist/elements/services/placementService/DefaultPlacementService.js +6 -0
- package/dist/elements/services/placementService/GridPlacementService.js +52 -1
- package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.d.ts +2 -2
- package/dist/elements/services/undoService/transactionItems/DeleteAction.js +2 -0
- package/dist/elements/services/undoService/transactionItems/InsertAction.js +2 -0
- package/dist/elements/services/undoService/transactionItems/MoveElementInDomAction.js +2 -0
- package/dist/elements/widgets/designerView/DomConverter.d.ts +1 -1
- package/dist/elements/widgets/designerView/DomConverter.js +2 -0
- package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +2 -0
- package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -1
- package/dist/elements/widgets/designerView/designerCanvas.js +3 -2
- package/dist/elements/widgets/designerView/extensions/GridExtension.js +11 -97
- package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +2 -2
- package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +1 -1
- package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.d.ts +2 -1
- package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js +4 -3
- package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js +1 -1
- package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.d.ts +2 -2
- package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js +1 -1
- package/dist/elements/widgets/designerView/tools/PointerTool.js +4 -2
- package/dist/elements/widgets/propertyGrid/PropertyGrid copy.d.ts +17 -0
- package/dist/elements/widgets/propertyGrid/PropertyGrid copy.js +143 -0
- package/dist/elements/widgets/propertyGrid/PropertyGrid.d.ts +4 -0
- package/dist/elements/widgets/propertyGrid/PropertyGrid.js +10 -15
- package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.d.ts +15 -0
- package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.js +86 -0
- package/dist/elements/widgets/treeView/treeView.d.ts +5 -0
- package/dist/elements/widgets/treeView/treeView.js +15 -0
- package/dist/elements/widgets/treeView/treeViewExtended.d.ts +7 -0
- package/dist/elements/widgets/treeView/treeViewExtended.js +56 -37
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/package.json +1 -1
package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
|
|
2
2
|
import { IDesignItem } from "../../../../item/IDesignItem";
|
|
3
3
|
import { IDesignerCanvas } from "../../IDesignerCanvas";
|
|
4
|
-
import { IContextMenuExtension } from "./IContextMenuExtension";
|
|
4
|
+
import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
|
|
5
5
|
export declare class ItemsBelowContextMenu implements IContextMenuExtension {
|
|
6
|
-
shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
6
|
+
shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
|
|
7
7
|
provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
|
|
8
8
|
private _select;
|
|
9
9
|
private _searchForItemsBelow;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DesignItem } from "../../../../item/DesignItem";
|
|
2
2
|
export class ItemsBelowContextMenu {
|
|
3
|
-
shouldProvideContextmenu(event, designerView, designItem) {
|
|
4
|
-
return
|
|
3
|
+
shouldProvideContextmenu(event, designerView, designItem, initiator) {
|
|
4
|
+
return initiator == 'designer';
|
|
5
5
|
}
|
|
6
6
|
provideContextMenuItems(event, designerView, designItem) {
|
|
7
7
|
const lstItems = this._searchForItemsBelow(event, designerView);
|
|
@@ -31,7 +31,8 @@ export class ItemsBelowContextMenu {
|
|
|
31
31
|
break;
|
|
32
32
|
if (el !== designerView.overlayLayer && el.parentElement !== designerView.overlayLayer && el.getRootNode() === designerView.shadowRoot)
|
|
33
33
|
lstEl.push(el);
|
|
34
|
-
backupPEventsMap.
|
|
34
|
+
if (!backupPEventsMap.has(el))
|
|
35
|
+
backupPEventsMap.set(el, el.style.pointerEvents);
|
|
35
36
|
el.style.pointerEvents = 'none';
|
|
36
37
|
const oldEl = el;
|
|
37
38
|
el = designerView.elementFromPoint(event.x, event.y);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
|
|
2
2
|
import { IDesignItem } from "../../../../item/IDesignItem";
|
|
3
3
|
import { IDesignerCanvas } from "../../IDesignerCanvas";
|
|
4
|
-
import { IContextMenuExtension } from "./IContextMenuExtension";
|
|
4
|
+
import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
|
|
5
5
|
export declare class MultipleItemsSelectedContextMenu implements IContextMenuExtension {
|
|
6
6
|
orderIndex: number;
|
|
7
|
-
shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
7
|
+
shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
|
|
8
8
|
provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
|
|
9
9
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export class MultipleItemsSelectedContextMenu {
|
|
2
2
|
orderIndex = 60;
|
|
3
|
-
shouldProvideContextmenu(event, designerView, designItem) {
|
|
3
|
+
shouldProvideContextmenu(event, designerView, designItem, initiator) {
|
|
4
4
|
if (designItem.instanceServiceContainer.selectionService.selectedElements.length > 1) {
|
|
5
5
|
return true;
|
|
6
6
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
|
|
2
2
|
import { IDesignItem } from "../../../../item/IDesignItem";
|
|
3
3
|
import { IDesignerCanvas } from "../../IDesignerCanvas";
|
|
4
|
-
import { IContextMenuExtension } from "./IContextMenuExtension";
|
|
4
|
+
import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
|
|
5
5
|
export declare class ZMoveContextMenu implements IContextMenuExtension {
|
|
6
|
-
shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
|
|
6
|
+
shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
|
|
7
7
|
provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
|
|
8
8
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CommandType } from "../../../../../commandHandling/CommandType";
|
|
2
2
|
export class ZMoveContextMenu {
|
|
3
|
-
shouldProvideContextmenu(event, designerView, designItem) {
|
|
3
|
+
shouldProvideContextmenu(event, designerView, designItem, initiator) {
|
|
4
4
|
return true;
|
|
5
5
|
}
|
|
6
6
|
provideContextMenuItems(event, designerView, designItem) {
|
|
@@ -221,8 +221,10 @@ export class PointerTool {
|
|
|
221
221
|
backupPEventsMap.set(newContainerElement, newContainerElement.style.pointerEvents);
|
|
222
222
|
newContainerElement.style.pointerEvents = 'none';
|
|
223
223
|
const newC = designerCanvas.elementFromPoint(event.x, event.y);
|
|
224
|
-
if (newContainerElement === newC)
|
|
224
|
+
if (newContainerElement === newC) {
|
|
225
|
+
newContainerElement = null;
|
|
225
226
|
break;
|
|
227
|
+
}
|
|
226
228
|
newContainerElement = newC;
|
|
227
229
|
}
|
|
228
230
|
}
|
|
@@ -232,7 +234,7 @@ export class PointerTool {
|
|
|
232
234
|
e[0].style.pointerEvents = e[1];
|
|
233
235
|
}
|
|
234
236
|
}
|
|
235
|
-
if (newContainerElement != null) {
|
|
237
|
+
if (newContainerElement != null) { //Check if container is in designer canvas....
|
|
236
238
|
let p = newContainerElement;
|
|
237
239
|
while (p != null) {
|
|
238
240
|
if (p === designerCanvas.rootDesignItem.element)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ServiceContainer } from '../../services/ServiceContainer';
|
|
2
|
+
import { IDesignItem } from '../../item/IDesignItem';
|
|
3
|
+
import { BaseCustomWebComponentLazyAppend } from '@node-projects/base-custom-webcomponent';
|
|
4
|
+
export declare class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
5
|
+
private _serviceContainer;
|
|
6
|
+
private _designerTabControl;
|
|
7
|
+
private _selectedItems;
|
|
8
|
+
private _propertyGridPropertyLists;
|
|
9
|
+
private _itemsObserver;
|
|
10
|
+
static readonly style: CSSStyleSheet;
|
|
11
|
+
constructor();
|
|
12
|
+
set serviceContainer(value: ServiceContainer);
|
|
13
|
+
get serviceContainer(): ServiceContainer;
|
|
14
|
+
get selectedItems(): IDesignItem[];
|
|
15
|
+
set selectedItems(items: IDesignItem[]);
|
|
16
|
+
private _observeItems;
|
|
17
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { PropertyGridPropertyList } from './PropertyGridPropertyList';
|
|
2
|
+
import { DesignerTabControl } from '../../controls/DesignerTabControl';
|
|
3
|
+
import { BaseCustomWebComponentLazyAppend, css } from '@node-projects/base-custom-webcomponent';
|
|
4
|
+
import { CssPropertiesService } from '../../services/propertiesService/services/CssPropertiesService';
|
|
5
|
+
import { CommonPropertiesService } from '../../services/propertiesService/services/CommonPropertiesService';
|
|
6
|
+
import { AttributesPropertiesService } from '../../services/propertiesService/services/AttributesPropertiesService';
|
|
7
|
+
export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
8
|
+
_serviceContainer;
|
|
9
|
+
_designerTabControl;
|
|
10
|
+
_selectedItems;
|
|
11
|
+
_propertyGridPropertyLists;
|
|
12
|
+
_itemsObserver;
|
|
13
|
+
static style = css `
|
|
14
|
+
:host {
|
|
15
|
+
display: block;
|
|
16
|
+
height: 100%;
|
|
17
|
+
user-select: none;
|
|
18
|
+
}
|
|
19
|
+
iron-pages {
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
height: 250px;
|
|
22
|
+
background: var(--medium-grey, #2f3545);
|
|
23
|
+
color: white;
|
|
24
|
+
}
|
|
25
|
+
button:hover {
|
|
26
|
+
box-shadow: inset 0 3px 0 var(--light-grey);
|
|
27
|
+
}
|
|
28
|
+
button:focus {
|
|
29
|
+
box-shadow: inset 0 3px 0 var(--highlight-pink, #e91e63);
|
|
30
|
+
}
|
|
31
|
+
`;
|
|
32
|
+
constructor() {
|
|
33
|
+
super();
|
|
34
|
+
this._designerTabControl = new DesignerTabControl();
|
|
35
|
+
this.shadowRoot.appendChild(this._designerTabControl);
|
|
36
|
+
this.addEventListener('contextmenu', (e) => {
|
|
37
|
+
if (e.composedPath()[0].localName != 'input')
|
|
38
|
+
e.preventDefault();
|
|
39
|
+
});
|
|
40
|
+
this._itemsObserver = new MutationObserver((m) => {
|
|
41
|
+
for (const a of this._propertyGridPropertyLists) {
|
|
42
|
+
a.refreshForDesignItems(this._selectedItems);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
set serviceContainer(value) {
|
|
47
|
+
this._serviceContainer = value;
|
|
48
|
+
this._propertyGridPropertyLists = [];
|
|
49
|
+
let elementPropertyEditorAttributeList = new PropertyGridPropertyList(value);
|
|
50
|
+
elementPropertyEditorAttributeList.setPropertiesService(new CssPropertiesService("styles")); //This is replace in selectedItems
|
|
51
|
+
elementPropertyEditorAttributeList.title = "properties";
|
|
52
|
+
this._designerTabControl.appendChild(elementPropertyEditorAttributeList);
|
|
53
|
+
this._propertyGridPropertyLists.push(elementPropertyEditorAttributeList);
|
|
54
|
+
let attributeEditorAttributeList = new PropertyGridPropertyList(value);
|
|
55
|
+
attributeEditorAttributeList.setPropertiesService(new AttributesPropertiesService());
|
|
56
|
+
attributeEditorAttributeList.createElements(null);
|
|
57
|
+
attributeEditorAttributeList.title = "attributes";
|
|
58
|
+
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
59
|
+
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
60
|
+
attributeEditorAttributeList = new PropertyGridPropertyList(value);
|
|
61
|
+
attributeEditorAttributeList.setPropertiesService(new CommonPropertiesService());
|
|
62
|
+
attributeEditorAttributeList.createElements(null);
|
|
63
|
+
attributeEditorAttributeList.title = "common";
|
|
64
|
+
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
65
|
+
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
66
|
+
attributeEditorAttributeList = new PropertyGridPropertyList(value);
|
|
67
|
+
attributeEditorAttributeList.setPropertiesService(new CssPropertiesService("set-styles"));
|
|
68
|
+
attributeEditorAttributeList.createElements(null);
|
|
69
|
+
attributeEditorAttributeList.title = "set-styles";
|
|
70
|
+
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
71
|
+
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
72
|
+
attributeEditorAttributeList = new PropertyGridPropertyList(value);
|
|
73
|
+
attributeEditorAttributeList.setPropertiesService(new CssPropertiesService("styles"));
|
|
74
|
+
attributeEditorAttributeList.createElements(null);
|
|
75
|
+
attributeEditorAttributeList.title = "styles";
|
|
76
|
+
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
77
|
+
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
78
|
+
attributeEditorAttributeList = new PropertyGridPropertyList(value);
|
|
79
|
+
attributeEditorAttributeList.setPropertiesService(new CssPropertiesService("alignment"));
|
|
80
|
+
attributeEditorAttributeList.createElements(null);
|
|
81
|
+
attributeEditorAttributeList.title = "alignment";
|
|
82
|
+
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
83
|
+
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
84
|
+
attributeEditorAttributeList = new PropertyGridPropertyList(value);
|
|
85
|
+
attributeEditorAttributeList.setPropertiesService(new CssPropertiesService("grid"));
|
|
86
|
+
attributeEditorAttributeList.createElements(null);
|
|
87
|
+
attributeEditorAttributeList.title = "grid";
|
|
88
|
+
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
89
|
+
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
90
|
+
attributeEditorAttributeList = new PropertyGridPropertyList(value);
|
|
91
|
+
attributeEditorAttributeList.setPropertiesService(new CssPropertiesService("flex"));
|
|
92
|
+
attributeEditorAttributeList.createElements(null);
|
|
93
|
+
attributeEditorAttributeList.title = "flex";
|
|
94
|
+
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
95
|
+
this._propertyGridPropertyLists.push(attributeEditorAttributeList);
|
|
96
|
+
this._designerTabControl.selectedIndex = 0;
|
|
97
|
+
}
|
|
98
|
+
get serviceContainer() {
|
|
99
|
+
return this._serviceContainer;
|
|
100
|
+
}
|
|
101
|
+
get selectedItems() {
|
|
102
|
+
return this._selectedItems;
|
|
103
|
+
}
|
|
104
|
+
set selectedItems(items) {
|
|
105
|
+
this._selectedItems = items;
|
|
106
|
+
if (this.selectedItems && this.selectedItems.length > 0) {
|
|
107
|
+
const propService = this._serviceContainer.getLastServiceWhere('propertyService', x => x.isHandledElement(this.selectedItems[0]));
|
|
108
|
+
this._propertyGridPropertyLists[0].setPropertiesService(propService);
|
|
109
|
+
this._propertyGridPropertyLists[0].createElements(this.selectedItems[0]);
|
|
110
|
+
this._propertyGridPropertyLists[1].createElements(this.selectedItems[0]);
|
|
111
|
+
this._propertyGridPropertyLists[3].createElements(this.selectedItems[0]);
|
|
112
|
+
}
|
|
113
|
+
for (const a of this._propertyGridPropertyLists) {
|
|
114
|
+
a.designItemsChanged(items);
|
|
115
|
+
}
|
|
116
|
+
if (items) {
|
|
117
|
+
if (items.length == 1) {
|
|
118
|
+
for (const a of this._propertyGridPropertyLists) {
|
|
119
|
+
a.designItemsChanged(items);
|
|
120
|
+
a.refreshForDesignItems(items);
|
|
121
|
+
}
|
|
122
|
+
this._observeItems();
|
|
123
|
+
/*let properties = serviceContainer.forSomeServicesTillResult("propertyService", x => x.getProperties(element));
|
|
124
|
+
|
|
125
|
+
if (properties) {
|
|
126
|
+
let attributeEditorAttributeList = new PropertyGridPropertyList();
|
|
127
|
+
attributeEditorAttributeList.serviceContainer = this.serviceContainer;
|
|
128
|
+
// attributeEditorAttributeList.title =
|
|
129
|
+
attributeEditorAttributeList.createElements(properties);
|
|
130
|
+
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
131
|
+
}*/
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this._itemsObserver.disconnect();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
_observeItems() {
|
|
139
|
+
this._itemsObserver.disconnect();
|
|
140
|
+
this._itemsObserver.observe(this._selectedItems[0].element, { attributes: true, childList: false, characterData: false });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
customElements.define('node-projects-property-grid', PropertyGrid);
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { ServiceContainer } from '../../services/ServiceContainer';
|
|
2
2
|
import { IDesignItem } from '../../item/IDesignItem';
|
|
3
3
|
import { BaseCustomWebComponentLazyAppend } from '@node-projects/base-custom-webcomponent';
|
|
4
|
+
import { InstanceServiceContainer } from '../../services/InstanceServiceContainer.js';
|
|
4
5
|
export declare class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
5
6
|
private _serviceContainer;
|
|
6
7
|
private _designerTabControl;
|
|
7
8
|
private _selectedItems;
|
|
8
9
|
private _propertyGridPropertyLists;
|
|
9
10
|
private _itemsObserver;
|
|
11
|
+
private _instanceServiceContainer;
|
|
12
|
+
private _selectionChangedHandler;
|
|
10
13
|
static readonly style: CSSStyleSheet;
|
|
11
14
|
constructor();
|
|
12
15
|
set serviceContainer(value: ServiceContainer);
|
|
13
16
|
get serviceContainer(): ServiceContainer;
|
|
17
|
+
set instanceServiceContainer(value: InstanceServiceContainer);
|
|
14
18
|
get selectedItems(): IDesignItem[];
|
|
15
19
|
set selectedItems(items: IDesignItem[]);
|
|
16
20
|
private _observeItems;
|
|
@@ -10,18 +10,14 @@ export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
|
10
10
|
_selectedItems;
|
|
11
11
|
_propertyGridPropertyLists;
|
|
12
12
|
_itemsObserver;
|
|
13
|
+
_instanceServiceContainer;
|
|
14
|
+
_selectionChangedHandler;
|
|
13
15
|
static style = css `
|
|
14
16
|
:host {
|
|
15
17
|
display: block;
|
|
16
18
|
height: 100%;
|
|
17
19
|
user-select: none;
|
|
18
20
|
}
|
|
19
|
-
iron-pages {
|
|
20
|
-
overflow: hidden;
|
|
21
|
-
height: 250px;
|
|
22
|
-
background: var(--medium-grey, #2f3545);
|
|
23
|
-
color: white;
|
|
24
|
-
}
|
|
25
21
|
button:hover {
|
|
26
22
|
box-shadow: inset 0 3px 0 var(--light-grey);
|
|
27
23
|
}
|
|
@@ -98,6 +94,14 @@ export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
|
98
94
|
get serviceContainer() {
|
|
99
95
|
return this._serviceContainer;
|
|
100
96
|
}
|
|
97
|
+
set instanceServiceContainer(value) {
|
|
98
|
+
this._instanceServiceContainer = value;
|
|
99
|
+
this._selectionChangedHandler?.dispose();
|
|
100
|
+
this._selectionChangedHandler = this._instanceServiceContainer.selectionService.onSelectionChanged.on(e => {
|
|
101
|
+
this.selectedItems = e.selectedElements;
|
|
102
|
+
});
|
|
103
|
+
this.selectedItems = this._instanceServiceContainer.selectionService.selectedElements;
|
|
104
|
+
}
|
|
101
105
|
get selectedItems() {
|
|
102
106
|
return this._selectedItems;
|
|
103
107
|
}
|
|
@@ -120,15 +124,6 @@ export class PropertyGrid extends BaseCustomWebComponentLazyAppend {
|
|
|
120
124
|
a.refreshForDesignItems(items);
|
|
121
125
|
}
|
|
122
126
|
this._observeItems();
|
|
123
|
-
/*let properties = serviceContainer.forSomeServicesTillResult("propertyService", x => x.getProperties(element));
|
|
124
|
-
|
|
125
|
-
if (properties) {
|
|
126
|
-
let attributeEditorAttributeList = new PropertyGridPropertyList();
|
|
127
|
-
attributeEditorAttributeList.serviceContainer = this.serviceContainer;
|
|
128
|
-
// attributeEditorAttributeList.title =
|
|
129
|
-
attributeEditorAttributeList.createElements(properties);
|
|
130
|
-
this._designerTabControl.appendChild(attributeEditorAttributeList);
|
|
131
|
-
}*/
|
|
132
127
|
}
|
|
133
128
|
}
|
|
134
129
|
else {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ServiceContainer } from '../../services/ServiceContainer';
|
|
2
|
+
import { BaseCustomWebComponentLazyAppend } from '@node-projects/base-custom-webcomponent';
|
|
3
|
+
import { InstanceServiceContainer } from '../../services/InstanceServiceContainer';
|
|
4
|
+
export declare class PropertyGridWithHeader extends BaseCustomWebComponentLazyAppend {
|
|
5
|
+
static readonly style: CSSStyleSheet;
|
|
6
|
+
static readonly template: HTMLTemplateElement;
|
|
7
|
+
private _type;
|
|
8
|
+
private _id;
|
|
9
|
+
private _pg;
|
|
10
|
+
private _selectionChangedHandler;
|
|
11
|
+
private _instanceServiceContainer;
|
|
12
|
+
constructor();
|
|
13
|
+
set serviceContainer(value: ServiceContainer);
|
|
14
|
+
set instanceServiceContainer(value: InstanceServiceContainer);
|
|
15
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { BaseCustomWebComponentLazyAppend, css, html } from '@node-projects/base-custom-webcomponent';
|
|
2
|
+
import { sleep } from '../../helper/Helper.js';
|
|
3
|
+
export class PropertyGridWithHeader extends BaseCustomWebComponentLazyAppend {
|
|
4
|
+
static style = css `
|
|
5
|
+
:host {
|
|
6
|
+
display: block;
|
|
7
|
+
height: 100%;
|
|
8
|
+
user-select: none;
|
|
9
|
+
background: var(--medium-grey, #2f3545);
|
|
10
|
+
color: white;
|
|
11
|
+
}
|
|
12
|
+
div {
|
|
13
|
+
display: grid;
|
|
14
|
+
grid-template-columns: auto 1fr;
|
|
15
|
+
padding: 3px 6px;
|
|
16
|
+
font-family: monospace;
|
|
17
|
+
align-items: center;
|
|
18
|
+
}
|
|
19
|
+
.desc {
|
|
20
|
+
font-weight: 700;
|
|
21
|
+
font-size: 10px;
|
|
22
|
+
margin-right: 5px;
|
|
23
|
+
}
|
|
24
|
+
input {
|
|
25
|
+
background: var(--medium-grey, #2f3545);
|
|
26
|
+
border: solid 1px gray;
|
|
27
|
+
color: white;
|
|
28
|
+
width: calc(100% - 6px);
|
|
29
|
+
}
|
|
30
|
+
#type {
|
|
31
|
+
color: wheat;
|
|
32
|
+
white-space: nowrap;
|
|
33
|
+
overflow: hidden;
|
|
34
|
+
font-size: 12px;
|
|
35
|
+
height: 20px;
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
38
|
+
static template = html `
|
|
39
|
+
<div>
|
|
40
|
+
<span class="desc">Type:</span><span id="type"></span>
|
|
41
|
+
<span class="desc">Id:</span><input type="text" id="id">
|
|
42
|
+
</div>
|
|
43
|
+
<node-projects-property-grid id="pg"></node-projects-property-grid>
|
|
44
|
+
`;
|
|
45
|
+
_type;
|
|
46
|
+
_id;
|
|
47
|
+
_pg;
|
|
48
|
+
_selectionChangedHandler;
|
|
49
|
+
_instanceServiceContainer;
|
|
50
|
+
constructor() {
|
|
51
|
+
super();
|
|
52
|
+
this._type = this._getDomElement('type');
|
|
53
|
+
this._id = this._getDomElement('id');
|
|
54
|
+
this._pg = this._getDomElement('pg');
|
|
55
|
+
this._id.onkeydown = e => {
|
|
56
|
+
if (e.key == 'Enter')
|
|
57
|
+
this._instanceServiceContainer.selectionService.primarySelection.id = this._id.value;
|
|
58
|
+
else if (e.key == 'Escape') {
|
|
59
|
+
this._id.value = this._instanceServiceContainer.selectionService.primarySelection?.id ?? '';
|
|
60
|
+
e.preventDefault();
|
|
61
|
+
e.stopPropagation();
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
let pSel;
|
|
65
|
+
this._id.onfocus = e => {
|
|
66
|
+
pSel = this._instanceServiceContainer.selectionService.primarySelection;
|
|
67
|
+
};
|
|
68
|
+
this._id.onblur = e => {
|
|
69
|
+
pSel.id = this._id.value;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
set serviceContainer(value) {
|
|
73
|
+
this._waitForChildrenReady().then(() => this._pg.serviceContainer = value);
|
|
74
|
+
}
|
|
75
|
+
set instanceServiceContainer(value) {
|
|
76
|
+
this._instanceServiceContainer = value;
|
|
77
|
+
this._selectionChangedHandler?.dispose();
|
|
78
|
+
this._selectionChangedHandler = this._instanceServiceContainer.selectionService.onSelectionChanged.on(async (e) => {
|
|
79
|
+
this._pg.instanceServiceContainer = value;
|
|
80
|
+
await sleep(20); // delay assignment a little bit, so onblur above could still set the value.
|
|
81
|
+
this._type.innerText = this._instanceServiceContainer.selectionService.primarySelection?.name ?? '';
|
|
82
|
+
this._id.value = this._instanceServiceContainer.selectionService.primarySelection?.id ?? '';
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
customElements.define('node-projects-property-grid-with-header', PropertyGridWithHeader);
|
|
@@ -2,16 +2,21 @@ import { BaseCustomWebComponentLazyAppend } from '@node-projects/base-custom-web
|
|
|
2
2
|
import { ISelectionChangedEvent } from '../../services/selectionService/ISelectionChangedEvent';
|
|
3
3
|
import { IDesignItem } from '../../item/IDesignItem';
|
|
4
4
|
import { ITreeView } from './ITreeView';
|
|
5
|
+
import { InstanceServiceContainer } from '../../services/InstanceServiceContainer.js';
|
|
5
6
|
export declare class TreeView extends BaseCustomWebComponentLazyAppend implements ITreeView {
|
|
6
7
|
private _items;
|
|
7
8
|
private _index;
|
|
8
9
|
private _previouslySelected;
|
|
9
10
|
private _treeDiv;
|
|
11
|
+
private _instanceServiceContainer;
|
|
12
|
+
private _selectionChangedHandler;
|
|
13
|
+
private _contentChangedHandler;
|
|
10
14
|
private _mapElementTreeitem;
|
|
11
15
|
private _rootItem;
|
|
12
16
|
static readonly style: CSSStyleSheet;
|
|
13
17
|
constructor();
|
|
14
18
|
createTree(rootItem: IDesignItem): void;
|
|
19
|
+
set instanceServiceContainer(value: InstanceServiceContainer);
|
|
15
20
|
selectionChanged(event: ISelectionChangedEvent): void;
|
|
16
21
|
private _recomputeTree;
|
|
17
22
|
private _makeButton;
|
|
@@ -5,6 +5,9 @@ export class TreeView extends BaseCustomWebComponentLazyAppend {
|
|
|
5
5
|
_index;
|
|
6
6
|
_previouslySelected;
|
|
7
7
|
_treeDiv;
|
|
8
|
+
_instanceServiceContainer;
|
|
9
|
+
_selectionChangedHandler;
|
|
10
|
+
_contentChangedHandler;
|
|
8
11
|
_mapElementTreeitem;
|
|
9
12
|
_rootItem;
|
|
10
13
|
//TODO, buuton so key events can be transfered to designer Cnvas (so you can move controls with keys)
|
|
@@ -115,6 +118,18 @@ export class TreeView extends BaseCustomWebComponentLazyAppend {
|
|
|
115
118
|
this._recomputeTree(rootItem.element, null /*, activeElement */);
|
|
116
119
|
}
|
|
117
120
|
// this.instanceServiceContainer.selectionService.setSelectedElements(null);
|
|
121
|
+
set instanceServiceContainer(value) {
|
|
122
|
+
this._instanceServiceContainer = value;
|
|
123
|
+
this._selectionChangedHandler?.dispose();
|
|
124
|
+
this._selectionChangedHandler = this._instanceServiceContainer.selectionService.onSelectionChanged.on(e => {
|
|
125
|
+
this.selectionChanged(e);
|
|
126
|
+
});
|
|
127
|
+
this._contentChangedHandler?.dispose();
|
|
128
|
+
this._contentChangedHandler = this._instanceServiceContainer.contentService.onContentChanged.on(e => {
|
|
129
|
+
this.createTree(value.contentService.rootDesignItem);
|
|
130
|
+
});
|
|
131
|
+
this.createTree(value.contentService.rootDesignItem);
|
|
132
|
+
}
|
|
118
133
|
selectionChanged(event) {
|
|
119
134
|
if (event.selectedElements.length > 0) {
|
|
120
135
|
this._selectTreeElements(event.selectedElements.map(x => this._mapElementTreeitem.get(x.element)));
|
|
@@ -2,10 +2,15 @@ import { BaseCustomWebComponentConstructorAppend } from '@node-projects/base-cus
|
|
|
2
2
|
import { ITreeView } from './ITreeView';
|
|
3
3
|
import { IDesignItem } from '../../item/IDesignItem';
|
|
4
4
|
import { ISelectionChangedEvent } from '../../services/selectionService/ISelectionChangedEvent';
|
|
5
|
+
import { InstanceServiceContainer } from '../../services/InstanceServiceContainer.js';
|
|
6
|
+
import { ContextMenuHelper } from '../../helper/contextMenu/ContextMenuHelper.js';
|
|
5
7
|
export declare class TreeViewExtended extends BaseCustomWebComponentConstructorAppend implements ITreeView {
|
|
6
8
|
private _treeDiv;
|
|
7
9
|
private _tree;
|
|
8
10
|
private _filter;
|
|
11
|
+
private _instanceServiceContainer;
|
|
12
|
+
private _selectionChangedHandler;
|
|
13
|
+
private _contentChangedHandler;
|
|
9
14
|
static readonly style: CSSStyleSheet;
|
|
10
15
|
static readonly template: HTMLTemplateElement;
|
|
11
16
|
constructor();
|
|
@@ -15,8 +20,10 @@ export declare class TreeViewExtended extends BaseCustomWebComponentConstructorA
|
|
|
15
20
|
_switchLockAtDesignTimeState(img: HTMLImageElement, designItem: IDesignItem): void;
|
|
16
21
|
_showHideAtRunTimeState(img: HTMLImageElement, designItem: IDesignItem): void;
|
|
17
22
|
_switchHideAtRunTimeState(img: HTMLImageElement, designItem: IDesignItem): void;
|
|
23
|
+
showDesignItemContextMenu(designItem: IDesignItem, event: MouseEvent): ContextMenuHelper;
|
|
18
24
|
ready(): Promise<void>;
|
|
19
25
|
createTree(rootItem: IDesignItem): void;
|
|
26
|
+
set instanceServiceContainer(value: InstanceServiceContainer);
|
|
20
27
|
selectionChanged(event: ISelectionChangedEvent): void;
|
|
21
28
|
private _recomputeTree;
|
|
22
29
|
private _getChildren;
|