From d6faa50c278e6370c571908c53222271e5905c10 Mon Sep 17 00:00:00 2001 From: artf Date: Fri, 14 Dec 2018 18:45:05 +0100 Subject: [PATCH 1/4] Avoid clear button on nested properties --- src/style_manager/model/Layer.js | 1 + src/style_manager/view/PropertyView.js | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/style_manager/model/Layer.js b/src/style_manager/model/Layer.js index 15ed5809b..7b35ad3cb 100644 --- a/src/style_manager/model/Layer.js +++ b/src/style_manager/model/Layer.js @@ -18,6 +18,7 @@ module.exports = Backbone.Model.extend({ 'properties', properties instanceof Properties ? properties : new Properties(properties) ); + this.get('properties').forEach(item => item.parent = this.collection.property); // If there is no value I'll try to get it from values // I need value setted to make preview working diff --git a/src/style_manager/view/PropertyView.js b/src/style_manager/view/PropertyView.js index 80c3ee6d6..b214c5440 100644 --- a/src/style_manager/view/PropertyView.js +++ b/src/style_manager/view/PropertyView.js @@ -21,11 +21,13 @@ module.exports = Backbone.View.extend({ const pfx = this.pfx; const icon = model.get('icon'); const info = model.get('info'); + const parent = model.parent; + return ` ${model.get('name')} - + ${ !parent ? `` : '' } `; }, @@ -89,20 +91,23 @@ module.exports = Backbone.View.extend({ * @private */ updateStatus() { - const status = this.model.get('status'); + const { model } = this; + const status = model.get('status'); + const parent = model.parent; const pfx = this.pfx; const ppfx = this.ppfx; const config = this.config; const updatedCls = `${ppfx}four-color`; const computedCls = `${ppfx}color-warn`; const labelEl = this.$el.children(`.${pfx}label`); - const clearStyle = this.getClearEl().style; + const clearStyleEl = this.getClearEl(); + const clearStyle = clearStyleEl ? clearStyleEl.style : {}; labelEl.removeClass(`${updatedCls} ${computedCls}`); clearStyle.display = 'none'; switch (status) { case 'updated': - labelEl.addClass(updatedCls); + !parent && labelEl.addClass(updatedCls); if (config.clearProperties) { clearStyle.display = 'inline'; From 974b29ace519a4fd40f1c513b1309895be1cfdcb Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sun, 16 Dec 2018 14:33:04 +0100 Subject: [PATCH 2/4] Don't propagate status value to parent, in PropertyView, if it's empty. Fixes #1613 --- src/style_manager/view/PropertyView.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/style_manager/view/PropertyView.js b/src/style_manager/view/PropertyView.js index b214c5440..d01c6419e 100644 --- a/src/style_manager/view/PropertyView.js +++ b/src/style_manager/view/PropertyView.js @@ -27,7 +27,7 @@ module.exports = Backbone.View.extend({ ${model.get('name')} - ${ !parent ? `` : '' } + ${!parent ? `` : ''} `; }, @@ -184,7 +184,7 @@ module.exports = Backbone.View.extend({ setStatus(value) { this.model.set('status', value); const parent = this.model.parent; - parent && parent.set('status', value); + parent && value && parent.set('status', value); }, emitUpdateTarget: debounce(function() { From 777180e0aa326b5490297b315d4953b5d16ddbe6 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sun, 16 Dec 2018 16:21:42 +0100 Subject: [PATCH 3/4] Fix update on clear of properties --- src/style_manager/model/PropertyFactory.js | 10 ++++++---- src/style_manager/view/PropertyView.js | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/style_manager/model/PropertyFactory.js b/src/style_manager/model/PropertyFactory.js index d51e0cb04..e3d690fd0 100644 --- a/src/style_manager/model/PropertyFactory.js +++ b/src/style_manager/model/PropertyFactory.js @@ -185,10 +185,6 @@ module.exports = () => ({ case 'text-shadow-v': case 'text-shadow-blur': case 'border-radius-c': - case 'border-top-left-radius': - case 'border-top-right-radius': - case 'border-bottom-left-radius': - case 'border-bottom-right-radius': case 'box-shadow-h': case 'box-shadow-v': case 'box-shadow-spread': @@ -198,6 +194,12 @@ module.exports = () => ({ case 'transform-rotate-z': obj.defaults = 0; break; + case 'border-top-left-radius': + case 'border-top-right-radius': + case 'border-bottom-left-radius': + case 'border-bottom-right-radius': + obj.defaults = '0px'; + break; case 'transform-scale-x': case 'transform-scale-y': case 'transform-scale-z': diff --git a/src/style_manager/view/PropertyView.js b/src/style_manager/view/PropertyView.js index d01c6419e..017996224 100644 --- a/src/style_manager/view/PropertyView.js +++ b/src/style_manager/view/PropertyView.js @@ -125,7 +125,8 @@ module.exports = Backbone.View.extend({ clear(e) { e && e.stopPropagation(); this.model.clearValue(); - this.targetUpdated(); + // Skip one stack with setTimeout to avoid inconsistencies + setTimeout(() => this.targetUpdated()); }, /** From 518fb9c15a2270f8dcce3fd5a25716fb3db18e08 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sun, 16 Dec 2018 16:26:39 +0100 Subject: [PATCH 4/4] Fix test regression --- src/style_manager/model/Layer.js | 5 ++++- test/specs/style_manager/model/Models.js | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/style_manager/model/Layer.js b/src/style_manager/model/Layer.js index 7b35ad3cb..a082fa5e1 100644 --- a/src/style_manager/model/Layer.js +++ b/src/style_manager/model/Layer.js @@ -18,7 +18,10 @@ module.exports = Backbone.Model.extend({ 'properties', properties instanceof Properties ? properties : new Properties(properties) ); - this.get('properties').forEach(item => item.parent = this.collection.property); + this.get('properties').forEach(item => { + const { collection } = this; + item.parent = collection && collection.property; + }); // If there is no value I'll try to get it from values // I need value setted to make preview working diff --git a/test/specs/style_manager/model/Models.js b/test/specs/style_manager/model/Models.js index 53fea9d58..9dd0cdb3f 100644 --- a/test/specs/style_manager/model/Models.js +++ b/test/specs/style_manager/model/Models.js @@ -703,7 +703,7 @@ module.exports = { property: 'border-top-left-radius', type: 'integer', units: ['px', '%'], - defaults: 0, + defaults: '0px', min: 0 }, { @@ -711,21 +711,21 @@ module.exports = { type: 'integer', units: ['px', '%'], min: 0, - defaults: 0 + defaults: '0px' }, { property: 'border-bottom-left-radius', type: 'integer', units: ['px', '%'], min: 0, - defaults: 0 + defaults: '0px' }, { property: 'border-bottom-right-radius', type: 'integer', units: ['px', '%'], min: 0, - defaults: 0 + defaults: '0px' } ] };