@node-projects/web-component-designer 0.1.150 → 0.1.152
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/README.md +9 -0
- package/dist/elements/services/propertiesService/IPropertiesService.d.ts +1 -1
- package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.d.ts +1 -1
- package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.js +2 -2
- package/dist/elements/services/propertiesService/services/AbstractPropertiesService.d.ts +1 -1
- package/dist/elements/services/propertiesService/services/AbstractPropertiesService.js +6 -5
- package/dist/elements/services/propertiesService/services/AttributesPropertiesService.d.ts +1 -1
- package/dist/elements/services/propertiesService/services/AttributesPropertiesService.js +1 -1
- package/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.d.ts +1 -1
- package/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.js +1 -1
- package/dist/elements/widgets/designerView/DesignContext.d.ts +2 -0
- package/dist/elements/widgets/designerView/DesignContext.js +2 -0
- package/dist/elements/widgets/designerView/IDesignContext.d.ts +2 -0
- package/dist/elements/widgets/designerView/designerView.js +0 -1
- package/dist/elements/widgets/designerView/extensions/buttons/AbstractDesignViewConfigButton.js +6 -0
- package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -56,6 +56,15 @@ Your index.html should be extended as follows:
|
|
|
56
56
|
<link rel="stylesheet" href="/node_modules/mobile-drag-drop/default.css">
|
|
57
57
|
<script src="/node_modules/mobile-drag-drop/index.js"></script>
|
|
58
58
|
|
|
59
|
+
## Similar Frameworks
|
|
60
|
+
|
|
61
|
+
| Name | Licence | Edit Source | | |
|
|
62
|
+
|-------------------------|----------|-------------|---|---|
|
|
63
|
+
| web-component-designer | MIT | yes | | |
|
|
64
|
+
| GrapeJS | BSD-3 | yes | | |
|
|
65
|
+
| CraftJS | MIT | no | | |
|
|
66
|
+
|
|
67
|
+
|
|
59
68
|
## Copyright notice
|
|
60
69
|
|
|
61
70
|
The Library uses Images from the Chrome Dev Tools, see
|
|
@@ -18,7 +18,7 @@ export interface IPropertiesService extends IService {
|
|
|
18
18
|
getProperty(designItem: IDesignItem, name: string): IProperty;
|
|
19
19
|
getBinding(designItems: IDesignItem[], property: IProperty): IBinding;
|
|
20
20
|
getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
|
|
21
|
-
setValue(designItems: IDesignItem[], property: IProperty, value: any):
|
|
21
|
+
setValue(designItems: IDesignItem[], property: IProperty, value: any): Promise<void>;
|
|
22
22
|
clearValue(designItems: IDesignItem[], property: IProperty, clearType: 'all' | 'binding' | 'value'): any;
|
|
23
23
|
isSet(designItems: IDesignItem[], property: IProperty): ValueType;
|
|
24
24
|
getValue(designItems: IDesignItem[], property: IProperty): any;
|
|
@@ -8,7 +8,7 @@ export declare abstract class BasePropertyEditor<T extends HTMLElement> implemen
|
|
|
8
8
|
designItems: IDesignItem[];
|
|
9
9
|
protected disableChangeNotification: boolean;
|
|
10
10
|
constructor(property: IProperty);
|
|
11
|
-
protected _valueChanged(newValue: any): void
|
|
11
|
+
protected _valueChanged(newValue: any): Promise<void>;
|
|
12
12
|
designItemsChanged(designItems: IDesignItem[]): void;
|
|
13
13
|
abstract refreshValue(valueType: ValueType, value: any): any;
|
|
14
14
|
refreshValueWithoutNotification(valueType: ValueType, value: any): void;
|
|
@@ -7,7 +7,7 @@ export class BasePropertyEditor {
|
|
|
7
7
|
constructor(property) {
|
|
8
8
|
this.property = property;
|
|
9
9
|
}
|
|
10
|
-
_valueChanged(newValue) {
|
|
10
|
+
async _valueChanged(newValue) {
|
|
11
11
|
if (!this.disableChangeNotification) {
|
|
12
12
|
if (this.designItems && this.designItems.length) {
|
|
13
13
|
const cg = this.designItems[0].openGroup("set property: " + this.property.name);
|
|
@@ -15,7 +15,7 @@ export class BasePropertyEditor {
|
|
|
15
15
|
if (newValue == null)
|
|
16
16
|
this.property.service.clearValue([d], this.property, 'value');
|
|
17
17
|
else
|
|
18
|
-
this.property.service.setValue([d], this.property, newValue);
|
|
18
|
+
await this.property.service.setValue([d], this.property, newValue);
|
|
19
19
|
}
|
|
20
20
|
cg.commit();
|
|
21
21
|
}
|
|
@@ -18,7 +18,7 @@ export declare abstract class AbstractPropertiesService implements IPropertiesSe
|
|
|
18
18
|
protected _notifyChangedProperty(designItem: IDesignItem, property: IProperty, value: any): void;
|
|
19
19
|
getProperty(designItem: IDesignItem, name: string): IProperty;
|
|
20
20
|
abstract getProperties(designItem: IDesignItem): IProperty[] | IPropertyGroup[];
|
|
21
|
-
setValue(designItems: IDesignItem[], property: IProperty, value: any): void
|
|
21
|
+
setValue(designItems: IDesignItem[], property: IProperty, value: any): Promise<void>;
|
|
22
22
|
getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
|
|
23
23
|
clearValue(designItems: IDesignItem[], property: IProperty, clearType: 'all' | 'binding' | 'value'): void;
|
|
24
24
|
isSet(designItems: IDesignItem[], property: IProperty): ValueType;
|
|
@@ -23,7 +23,7 @@ export class AbstractPropertiesService {
|
|
|
23
23
|
else
|
|
24
24
|
return properties.find(x => x.name == name);
|
|
25
25
|
}
|
|
26
|
-
setValue(designItems, property, value) {
|
|
26
|
+
async setValue(designItems, property, value) {
|
|
27
27
|
const cg = designItems[0].openGroup("property changed: " + property.name + " to " + value);
|
|
28
28
|
for (let d of designItems) {
|
|
29
29
|
if (!this.isHandledElement(d))
|
|
@@ -31,9 +31,10 @@ export class AbstractPropertiesService {
|
|
|
31
31
|
if (!this.getProperty(d, property.name))
|
|
32
32
|
continue;
|
|
33
33
|
if (property.propertyType == PropertyType.cssValue) {
|
|
34
|
-
|
|
34
|
+
//TODO: use async version here, but then everything needs to be async
|
|
35
|
+
await d.updateStyleInSheetOrLocalAsync(property.name, value);
|
|
35
36
|
//unkown css property names do not trigger the mutation observer of property grid,
|
|
36
|
-
//fixed by assinging
|
|
37
|
+
//fixed by assinging style again to the attribute
|
|
37
38
|
d.element.setAttribute('style', d.element.getAttribute('style'));
|
|
38
39
|
}
|
|
39
40
|
else {
|
|
@@ -282,11 +283,11 @@ export class AbstractPropertiesService {
|
|
|
282
283
|
{
|
|
283
284
|
title: 'edit as text', action: (e, _1, _2, menu) => {
|
|
284
285
|
menu.close();
|
|
285
|
-
setTimeout(() => {
|
|
286
|
+
setTimeout(async () => {
|
|
286
287
|
const oldValue = property.service.getValue(designItems, property);
|
|
287
288
|
let value = prompt(`edit value of '${property.name}' as string:`, oldValue);
|
|
288
289
|
if (value && value != oldValue) {
|
|
289
|
-
property.service.setValue(designItems, property, value);
|
|
290
|
+
await property.service.setValue(designItems, property, value);
|
|
290
291
|
}
|
|
291
292
|
designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(designItems);
|
|
292
293
|
}, 10);
|
|
@@ -12,7 +12,7 @@ export declare class AttributesPropertiesService extends AbstractPropertiesServi
|
|
|
12
12
|
isHandledElement(designItem: IDesignItem): boolean;
|
|
13
13
|
getProperty(designItem: IDesignItem, name: string): IProperty;
|
|
14
14
|
getProperties(designItem: IDesignItem): IProperty[] | IPropertyGroup[];
|
|
15
|
-
setValue(designItems: IDesignItem[], property: IProperty, value: any): void
|
|
15
|
+
setValue(designItems: IDesignItem[], property: IProperty, value: any): Promise<void>;
|
|
16
16
|
getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
|
|
17
17
|
clearValue(designItems: IDesignItem[], property: IProperty): void;
|
|
18
18
|
isSet(designItems: IDesignItem[], property: IProperty): ValueType;
|
|
@@ -26,7 +26,7 @@ export class AttributesPropertiesService extends AbstractPropertiesService {
|
|
|
26
26
|
}
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
29
|
-
setValue(designItems, property, value) {
|
|
29
|
+
async setValue(designItems, property, value) {
|
|
30
30
|
const cg = designItems[0].openGroup("properties changed");
|
|
31
31
|
for (let d of designItems) {
|
|
32
32
|
d.setAttribute(property.name, value);
|
|
@@ -15,7 +15,7 @@ export declare class CssCurrentPropertiesService extends AbstractCssPropertiesSe
|
|
|
15
15
|
setValue(designItems: IDesignItem[], property: (IProperty & {
|
|
16
16
|
styleRule: IStyleRule;
|
|
17
17
|
styleDeclaration: IStyleDeclaration;
|
|
18
|
-
}), value: any): void
|
|
18
|
+
}), value: any): Promise<void>;
|
|
19
19
|
clearValue(designItems: IDesignItem[], property: IProperty & {
|
|
20
20
|
styleRule: IStyleRule;
|
|
21
21
|
styleDeclaration: IStyleDeclaration;
|
|
@@ -41,7 +41,7 @@ export class CssCurrentPropertiesService extends AbstractCssPropertiesService {
|
|
|
41
41
|
}));
|
|
42
42
|
return arr;
|
|
43
43
|
}
|
|
44
|
-
setValue(designItems, property, value) {
|
|
44
|
+
async setValue(designItems, property, value) {
|
|
45
45
|
// No selector means local style, styleDeclaration is null means new property
|
|
46
46
|
if (property.styleRule?.selector !== null && property.styleDeclaration) {
|
|
47
47
|
// styleDeclaration stored Propertygrid is not refreshed after entering a new value, so we need to reload
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TypedEvent } from '@node-projects/base-custom-webcomponent';
|
|
1
2
|
import { IDesignContext } from './IDesignContext.js';
|
|
2
3
|
export declare class DesignContext implements IDesignContext {
|
|
3
4
|
imports: string[];
|
|
@@ -5,4 +6,5 @@ export declare class DesignContext implements IDesignContext {
|
|
|
5
6
|
extensionOptions: {
|
|
6
7
|
[key: string]: any;
|
|
7
8
|
};
|
|
9
|
+
extensionOptionsChanged: TypedEvent<void>;
|
|
8
10
|
}
|
|
@@ -322,7 +322,6 @@ export class DesignerView extends BaseCustomWebComponentConstructorAppend {
|
|
|
322
322
|
async parseHTML(html, disableUndo = false) {
|
|
323
323
|
const parserService = this.serviceContainer.htmlParserService;
|
|
324
324
|
if (!html) {
|
|
325
|
-
this.instanceServiceContainer.undoService.clear();
|
|
326
325
|
this._designerCanvas.overlayLayer.removeAllOverlays();
|
|
327
326
|
DomHelper.removeAllChildnodes(this._designerCanvas.overlayLayer);
|
|
328
327
|
this._designerCanvas.rootDesignItem.clearChildren();
|
package/dist/elements/widgets/designerView/extensions/buttons/AbstractDesignViewConfigButton.js
CHANGED
|
@@ -18,6 +18,12 @@ export class AbstractDesignViewConfigButton {
|
|
|
18
18
|
btn.appendChild(this.content);
|
|
19
19
|
btn.title = this.tooltp;
|
|
20
20
|
btn.className = 'toolbar-control';
|
|
21
|
+
designerCanvas.instanceServiceContainer.designContext.extensionOptionsChanged.on(() => {
|
|
22
|
+
if (extensionOptions[this.settingName] !== false)
|
|
23
|
+
btn.classList.add('selected');
|
|
24
|
+
else
|
|
25
|
+
btn.classList.remove('selected');
|
|
26
|
+
});
|
|
21
27
|
const extensionOptions = designerCanvas.instanceServiceContainer.designContext.extensionOptions;
|
|
22
28
|
if (extensionOptions[this.settingName] !== false)
|
|
23
29
|
btn.classList.add('selected');
|
|
@@ -238,12 +238,12 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
|
|
|
238
238
|
let label = document.createElement("input");
|
|
239
239
|
let input = editor.element;
|
|
240
240
|
label.value = p.name;
|
|
241
|
-
label.onkeyup = e => {
|
|
241
|
+
label.onkeyup = async (e) => {
|
|
242
242
|
if (e.key == 'Enter' && label.value) {
|
|
243
243
|
const pg = this._designItems[0].openGroup("rename property name from '" + p.name + "' to '" + label.value + "'");
|
|
244
244
|
p.service.clearValue(this._designItems, p, 'all');
|
|
245
245
|
p.name = label.value;
|
|
246
|
-
p.service.setValue(this._designItems, p, input.value);
|
|
246
|
+
await p.service.setValue(this._designItems, p, input.value);
|
|
247
247
|
pg.commit();
|
|
248
248
|
this._designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(this._designItems);
|
|
249
249
|
}
|
package/package.json
CHANGED