@node-projects/web-component-designer 0.0.261 → 0.0.262

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.
@@ -18,7 +18,7 @@ export interface IPropertiesService extends IService {
18
18
  getBinding(designItems: IDesignItem[], property: IProperty): IBinding;
19
19
  getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
20
20
  setValue(designItems: IDesignItem[], property: IProperty, value: any): any;
21
- clearValue(designItems: IDesignItem[], property: IProperty): any;
21
+ clearValue(designItems: IDesignItem[], property: IProperty, clearType: 'all' | 'binding' | 'value'): any;
22
22
  isSet(designItems: IDesignItem[], property: IProperty): ValueType;
23
23
  getValue(designItems: IDesignItem[], property: IProperty): any;
24
24
  getUnsetValue(designItems: IDesignItem[], property: IProperty): any;
@@ -13,7 +13,7 @@ export class BasePropertyEditor {
13
13
  const cg = this.designItems[0].openGroup("set property: " + this.property.name);
14
14
  for (let d of this.designItems) {
15
15
  if (newValue == null)
16
- this.property.service.clearValue([d], this.property);
16
+ this.property.service.clearValue([d], this.property, 'value');
17
17
  else
18
18
  this.property.service.setValue([d], this.property, newValue);
19
19
  }
@@ -13,7 +13,7 @@ export declare abstract class AbstractPropertiesService implements IPropertiesSe
13
13
  abstract getProperties(designItem: IDesignItem): IProperty[] | IPropertyGroup[];
14
14
  setValue(designItems: IDesignItem[], property: IProperty, value: any): void;
15
15
  getPropertyTarget(designItem: IDesignItem, property: IProperty): BindingTarget;
16
- clearValue(designItems: IDesignItem[], property: IProperty): void;
16
+ clearValue(designItems: IDesignItem[], property: IProperty, clearType?: 'all' | 'binding' | 'value'): void;
17
17
  isSet(designItems: IDesignItem[], property: IProperty): ValueType;
18
18
  getValue(designItems: IDesignItem[], property: IProperty): string | boolean;
19
19
  getBinding(designItems: IDesignItem[], property: IProperty): IBinding;
@@ -60,21 +60,25 @@ export class AbstractPropertiesService {
60
60
  getPropertyTarget(designItem, property) {
61
61
  return BindingTarget.property;
62
62
  }
63
- clearValue(designItems, property) {
63
+ clearValue(designItems, property, clearType = 'all') {
64
64
  const cg = designItems[0].openGroup("property cleared: " + property.name);
65
65
  for (let d of designItems) {
66
- if (property.propertyType == PropertyType.cssValue) {
67
- d.removeStyle(property.name);
66
+ if (clearType != 'binding') {
67
+ if (property.propertyType == PropertyType.cssValue) {
68
+ d.removeStyle(property.name);
69
+ }
70
+ else {
71
+ let attributeName = property.attributeName;
72
+ if (!attributeName)
73
+ attributeName = PropertiesHelper.camelToDashCase(property.name);
74
+ d.removeAttribute(attributeName);
75
+ }
68
76
  }
69
- else {
70
- let attributeName = property.attributeName;
71
- if (!attributeName)
72
- attributeName = PropertiesHelper.camelToDashCase(property.name);
73
- d.removeAttribute(attributeName);
77
+ if (clearType != 'value') {
78
+ d.serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
79
+ return s.clearBinding(d, property.name, this.getPropertyTarget(d, property));
80
+ });
74
81
  }
75
- d.serviceContainer.forSomeServicesTillResult('bindingService', (s) => {
76
- return s.clearBinding(d, property.name, this.getPropertyTarget(d, property));
77
- });
78
82
  this._notifyChangedProperty(d, property, undefined);
79
83
  }
80
84
  cg.commit();
@@ -190,7 +190,7 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
190
190
  label.onkeyup = e => {
191
191
  if (e.key == 'Enter' && label.value) {
192
192
  const pg = this._designItems[0].openGroup("rename property name from '" + p.name + "' to '" + label.value + "'");
193
- p.service.clearValue(this._designItems, p);
193
+ p.service.clearValue(this._designItems, p, 'all');
194
194
  p.name = label.value;
195
195
  p.service.setValue(this._designItems, p, input.value);
196
196
  pg.commit();
@@ -213,7 +213,7 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
213
213
  const ctxMenu = [
214
214
  {
215
215
  title: 'clear', action: (e) => {
216
- property.service.clearValue(designItems, property);
216
+ property.service.clearValue(designItems, property, 'value');
217
217
  designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(designItems);
218
218
  }
219
219
  },
@@ -227,6 +227,12 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
227
227
  let binding = property.service.getBinding(designItems, property);
228
228
  designItems[0].serviceContainer.config.openBindingsEditor(property, designItems, binding, target);
229
229
  }
230
+ },
231
+ {
232
+ title: 'clear binding', action: () => {
233
+ property.service.clearValue(designItems, property, 'binding');
234
+ designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(designItems);
235
+ }
230
236
  }
231
237
  ]);
232
238
  }
@@ -245,20 +251,25 @@ export class PropertyGridPropertyList extends BaseCustomWebComponentLazyAppend {
245
251
  }
246
252
  }
247
253
  static refreshIsSetElementAndEditorForDesignItems(isSetElement, property, items, propertiesService, editor) {
248
- let s = propertiesService.isSet(items, property);
249
- let v = propertiesService.getValue(items, property);
250
- isSetElement.title = s;
251
- if (s == ValueType.none) {
254
+ if (items) {
255
+ let s = propertiesService.isSet(items, property);
256
+ let v = propertiesService.getValue(items, property);
257
+ isSetElement.title = s;
258
+ if (s == ValueType.none) {
259
+ isSetElement.style.background = '';
260
+ v = propertiesService.getUnsetValue(items, property);
261
+ }
262
+ else if (s == ValueType.all)
263
+ isSetElement.style.background = 'white';
264
+ else if (s == ValueType.some)
265
+ isSetElement.style.background = 'gray';
266
+ else if (s == ValueType.bound)
267
+ isSetElement.style.background = 'orange';
268
+ editor?.refreshValueWithoutNotification(s, v);
269
+ }
270
+ else {
252
271
  isSetElement.style.background = '';
253
- v = propertiesService.getUnsetValue(items, property);
254
272
  }
255
- else if (s == ValueType.all)
256
- isSetElement.style.background = 'white';
257
- else if (s == ValueType.some)
258
- isSetElement.style.background = 'gray';
259
- else if (s == ValueType.bound)
260
- isSetElement.style.background = 'orange';
261
- editor?.refreshValueWithoutNotification(s, v);
262
273
  }
263
274
  }
264
275
  customElements.define('node-projects-property-grid-property-list', PropertyGridPropertyList);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "A UI designer for Polymer apps",
3
3
  "name": "@node-projects/web-component-designer",
4
- "version": "0.0.261",
4
+ "version": "0.0.262",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",