@node-projects/web-component-designer 0.0.137 → 0.0.139
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/controls/DesignerTabControl.d.ts +0 -1
- package/dist/elements/controls/DesignerTabControl.js +57 -49
- package/dist/elements/services/propertiesService/PropertyGroupsService.d.ts +8 -2
- package/dist/elements/services/propertiesService/PropertyGroupsService.js +2 -1
- package/dist/elements/services/propertiesService/services/AttributesPropertiesService.js +13 -0
- package/dist/elements/services/propertiesService/services/CommonPropertiesService.js +1 -1
- package/dist/elements/services/propertiesService/services/CssPropertiesService.js +3 -1
- package/dist/elements/widgets/designerView/tools/PointerTool.js +4 -1
- package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +7 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/package.json +1 -1
|
@@ -19,7 +19,6 @@ export declare class DesignerTabControl extends BaseCustomWebComponentLazyAppend
|
|
|
19
19
|
connectedCallback(): void;
|
|
20
20
|
get selectedIndex(): number;
|
|
21
21
|
set selectedIndex(value: number);
|
|
22
|
-
disconnectedCallback(): void;
|
|
23
22
|
refreshItems(): void;
|
|
24
23
|
private _selectedIndexChanged;
|
|
25
24
|
readonly onSelectedTabChanged: TypedEvent<DesignerTabControlIndexChangedEventArgs>;
|
|
@@ -97,8 +97,14 @@ export class DesignerTabControl extends BaseCustomWebComponentLazyAppend {
|
|
|
97
97
|
`;
|
|
98
98
|
constructor() {
|
|
99
99
|
super();
|
|
100
|
-
this._contentObserver = new MutationObserver(() => {
|
|
101
|
-
|
|
100
|
+
this._contentObserver = new MutationObserver((mut) => {
|
|
101
|
+
let refresh = false;
|
|
102
|
+
for (let m of mut) {
|
|
103
|
+
if (m.type != 'attributes' || m.attributeName == 'style')
|
|
104
|
+
refresh = true;
|
|
105
|
+
}
|
|
106
|
+
if (refresh)
|
|
107
|
+
this.refreshItems();
|
|
102
108
|
});
|
|
103
109
|
let outerDiv = document.createElement("div");
|
|
104
110
|
outerDiv.className = 'outer';
|
|
@@ -138,16 +144,18 @@ export class DesignerTabControl extends BaseCustomWebComponentLazyAppend {
|
|
|
138
144
|
DomHelper.removeAllChildnodes(this._headerDiv);
|
|
139
145
|
let reloadOnce = true;
|
|
140
146
|
for (let item of this.children) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
this.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
this._headerDiv.
|
|
150
|
-
|
|
147
|
+
if (item.style.display != 'none') {
|
|
148
|
+
let htmlItem = item;
|
|
149
|
+
if (!this._elementMap.has(htmlItem) && reloadOnce) {
|
|
150
|
+
this.refreshItems();
|
|
151
|
+
reloadOnce = false;
|
|
152
|
+
}
|
|
153
|
+
const tabHeaderDiv = this._elementMap.get(htmlItem);
|
|
154
|
+
this._moreContainer.appendChild(tabHeaderDiv);
|
|
155
|
+
if (this._headerDiv.children.length == 0 || (w + (tabHeaderDiv.clientWidth / 2)) < this._headerDiv.clientWidth) {
|
|
156
|
+
this._headerDiv.appendChild(tabHeaderDiv);
|
|
157
|
+
w += tabHeaderDiv.clientWidth;
|
|
158
|
+
}
|
|
151
159
|
}
|
|
152
160
|
}
|
|
153
161
|
}
|
|
@@ -155,7 +163,7 @@ export class DesignerTabControl extends BaseCustomWebComponentLazyAppend {
|
|
|
155
163
|
if (this._firstConnect) {
|
|
156
164
|
this.refreshItems();
|
|
157
165
|
this._firstConnect = false;
|
|
158
|
-
this._contentObserver.observe(this, { childList: true });
|
|
166
|
+
this._contentObserver.observe(this, { childList: true, subtree: true, attributes: true });
|
|
159
167
|
let selectedIndexAttribute = this.getAttribute("selected-index");
|
|
160
168
|
if (selectedIndexAttribute) {
|
|
161
169
|
this.selectedIndex = parseInt(selectedIndexAttribute);
|
|
@@ -171,52 +179,52 @@ export class DesignerTabControl extends BaseCustomWebComponentLazyAppend {
|
|
|
171
179
|
if (this.children.length && old != this._selectedIndex)
|
|
172
180
|
this._selectedIndexChanged(old);
|
|
173
181
|
}
|
|
174
|
-
disconnectedCallback() {
|
|
175
|
-
//this._contentObserver.disconnect();
|
|
176
|
-
}
|
|
177
182
|
refreshItems() {
|
|
178
183
|
this._headerDiv.innerHTML = "";
|
|
179
184
|
let i = 0;
|
|
180
185
|
for (let item of this.children) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
this.
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
186
|
+
if (item.style.display != 'none') {
|
|
187
|
+
let htmlItem = item;
|
|
188
|
+
let tabHeaderDiv = document.createElement("div");
|
|
189
|
+
tabHeaderDiv.innerText = htmlItem.title;
|
|
190
|
+
tabHeaderDiv.title = htmlItem.title;
|
|
191
|
+
tabHeaderDiv.className = 'tab-header';
|
|
192
|
+
let j = i;
|
|
193
|
+
tabHeaderDiv.onpointerdown = () => {
|
|
194
|
+
let old = this._selectedIndex;
|
|
195
|
+
this._selectedIndex = j;
|
|
196
|
+
if (this._headerDiv.children.length)
|
|
197
|
+
this._selectedIndexChanged(old, true);
|
|
198
|
+
this._moreContainer.style.visibility = 'hidden';
|
|
199
|
+
};
|
|
200
|
+
this._elementMap.set(htmlItem, tabHeaderDiv);
|
|
201
|
+
this._headerDiv.appendChild(tabHeaderDiv);
|
|
202
|
+
i++;
|
|
203
|
+
}
|
|
197
204
|
}
|
|
198
205
|
this._showHideHeaderItems();
|
|
199
206
|
this._selectedIndexChanged();
|
|
200
207
|
}
|
|
201
208
|
_selectedIndexChanged(oldIndex, viaClick = false) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
if (
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
headerEl
|
|
210
|
-
|
|
211
|
-
element.activated
|
|
209
|
+
let index = -1;
|
|
210
|
+
for (let element of this.children) {
|
|
211
|
+
if (element.style.display != 'none') {
|
|
212
|
+
index++;
|
|
213
|
+
if (index == this._selectedIndex) {
|
|
214
|
+
element.slot = "panels";
|
|
215
|
+
const headerEl = this._elementMap.get(element);
|
|
216
|
+
if (headerEl) {
|
|
217
|
+
headerEl.classList.add('selected');
|
|
218
|
+
if (element.activated)
|
|
219
|
+
element.activated();
|
|
220
|
+
}
|
|
212
221
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
headerEl.classList.remove('selected');
|
|
222
|
+
else {
|
|
223
|
+
element.removeAttribute("slot");
|
|
224
|
+
const headerEl = this._elementMap.get(element);
|
|
225
|
+
if (headerEl) {
|
|
226
|
+
headerEl.classList.remove('selected');
|
|
227
|
+
}
|
|
220
228
|
}
|
|
221
229
|
}
|
|
222
230
|
}
|
|
@@ -2,8 +2,14 @@ import { IDesignItem } from "../../item/IDesignItem";
|
|
|
2
2
|
import { IPropertiesService } from "./IPropertiesService";
|
|
3
3
|
import { IPropertyGroupsService } from "./IPropertyGroupsService";
|
|
4
4
|
export declare class PropertyGroupsService implements IPropertyGroupsService {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
protected _pgList: {
|
|
6
|
+
name: string;
|
|
7
|
+
propertiesService: IPropertiesService;
|
|
8
|
+
}[];
|
|
9
|
+
protected _svgPgList: {
|
|
10
|
+
name: string;
|
|
11
|
+
propertiesService: IPropertiesService;
|
|
12
|
+
}[];
|
|
7
13
|
getPropertygroups(designItems: IDesignItem[]): {
|
|
8
14
|
name: string;
|
|
9
15
|
propertiesService: IPropertiesService;
|
|
@@ -21,7 +21,8 @@ export class PropertyGroupsService {
|
|
|
21
21
|
if (designItems == null || designItems.length == 0)
|
|
22
22
|
return [];
|
|
23
23
|
this._pgList[0].propertiesService = designItems[0].serviceContainer.getLastServiceWhere('propertyService', x => x.isHandledElement(designItems[0]));
|
|
24
|
-
|
|
24
|
+
this._svgPgList[0].propertiesService = designItems[0].serviceContainer.getLastServiceWhere('propertyService', x => x.isHandledElement(designItems[0]));
|
|
25
|
+
if (designItems[0].element instanceof SVGElement)
|
|
25
26
|
return this._svgPgList;
|
|
26
27
|
return this._pgList;
|
|
27
28
|
}
|
|
@@ -24,11 +24,24 @@ export class AttributesPropertiesService {
|
|
|
24
24
|
return null;
|
|
25
25
|
}
|
|
26
26
|
setValue(designItems, property, value) {
|
|
27
|
+
const cg = designItems[0].openGroup("properties changed");
|
|
28
|
+
for (let d of designItems) {
|
|
29
|
+
d.attributes.set(property.name, value);
|
|
30
|
+
d.element.setAttribute(property.name, value);
|
|
31
|
+
}
|
|
32
|
+
cg.commit();
|
|
27
33
|
}
|
|
28
34
|
getPropertyTarget(designItem, property) {
|
|
29
35
|
return BindingTarget.attribute;
|
|
30
36
|
}
|
|
31
37
|
clearValue(designItems, property) {
|
|
38
|
+
for (let d of designItems) {
|
|
39
|
+
d.attributes.delete(property.name);
|
|
40
|
+
d.element.removeAttribute(property.name);
|
|
41
|
+
d.serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
|
|
42
|
+
return s.clearBinding(d, property.name, this.getPropertyTarget(d, property));
|
|
43
|
+
});
|
|
44
|
+
}
|
|
32
45
|
}
|
|
33
46
|
isSet(designItems, property) {
|
|
34
47
|
let all = true;
|
|
@@ -195,7 +195,9 @@ export class CssPropertiesService {
|
|
|
195
195
|
if (this.name == 'styles') {
|
|
196
196
|
if (!designItem)
|
|
197
197
|
return [];
|
|
198
|
-
|
|
198
|
+
let arr = Array.from(designItem.styles.keys(), x => ({ name: x, type: 'string', service: this, propertyType: PropertyType.cssValue }));
|
|
199
|
+
arr.push({ name: '', type: 'addNew', service: this, propertyType: PropertyType.complex });
|
|
200
|
+
return arr;
|
|
199
201
|
}
|
|
200
202
|
return this[this.name];
|
|
201
203
|
}
|
|
@@ -198,9 +198,12 @@ export class PointerTool {
|
|
|
198
198
|
this._clonedItems = [];
|
|
199
199
|
for (let d of this._actionStartedDesignItems) {
|
|
200
200
|
const clone = await d.clone();
|
|
201
|
-
this._clonedItems
|
|
201
|
+
if (this._clonedItems)
|
|
202
|
+
this._clonedItems.push(clone);
|
|
202
203
|
}
|
|
203
204
|
}
|
|
205
|
+
if (!this._actionStartedDesignItem)
|
|
206
|
+
return;
|
|
204
207
|
if (event.ctrlKey && !this._copiedItemsInserted) {
|
|
205
208
|
this._copiedItemsInserted = true;
|
|
206
209
|
if (!this._changeGroup)
|
|
@@ -124,11 +124,16 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
|
|
|
124
124
|
this.openContextMenu(event, p);
|
|
125
125
|
};
|
|
126
126
|
if (p.type == 'addNew') {
|
|
127
|
+
let input = editor.element;
|
|
128
|
+
input.disabled = true;
|
|
127
129
|
let label = document.createElement("input");
|
|
128
130
|
label.value = p.name;
|
|
129
131
|
label.onkeyup = e => {
|
|
130
|
-
if (e.key == 'Enter') {
|
|
131
|
-
|
|
132
|
+
if (e.key == 'Enter' && label.value) {
|
|
133
|
+
p.name = label.value;
|
|
134
|
+
label.disabled = true;
|
|
135
|
+
input.disabled = false;
|
|
136
|
+
input.focus();
|
|
132
137
|
}
|
|
133
138
|
};
|
|
134
139
|
this._div.appendChild(label);
|
package/dist/index.d.ts
CHANGED
|
@@ -92,6 +92,7 @@ export * from "./elements/services/propertiesService/services/SVGElementsPropert
|
|
|
92
92
|
export * from "./elements/services/propertiesService/services/PolymerPropertiesService.js";
|
|
93
93
|
export * from "./elements/services/propertiesService/services/UnkownElementPropertiesService.js";
|
|
94
94
|
export * from "./elements/services/propertiesService/services/WebcomponentManifestPropertiesService.js";
|
|
95
|
+
export * from "./elements/services/propertiesService/services/AttributesPropertiesService.js";
|
|
95
96
|
export * from "./elements/services/propertiesService/PropertyType.js";
|
|
96
97
|
export * from "./elements/services/propertiesService/ValueType.js";
|
|
97
98
|
export * from "./elements/services/propertiesService/PropertyGroupsService.js";
|
package/dist/index.js
CHANGED
|
@@ -63,6 +63,7 @@ export * from "./elements/services/propertiesService/services/SVGElementsPropert
|
|
|
63
63
|
export * from "./elements/services/propertiesService/services/PolymerPropertiesService.js";
|
|
64
64
|
export * from "./elements/services/propertiesService/services/UnkownElementPropertiesService.js";
|
|
65
65
|
export * from "./elements/services/propertiesService/services/WebcomponentManifestPropertiesService.js";
|
|
66
|
+
export * from "./elements/services/propertiesService/services/AttributesPropertiesService.js";
|
|
66
67
|
export * from "./elements/services/propertiesService/PropertyType.js";
|
|
67
68
|
export * from "./elements/services/propertiesService/ValueType.js";
|
|
68
69
|
export * from "./elements/services/propertiesService/PropertyGroupsService.js";
|