From 6e5276686156ff83759ed9eb5b50f3c2c4a7547b Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Fri, 13 Dec 2019 19:31:33 +0100 Subject: [PATCH] Show and sync common selectors --- src/selector_manager/view/ClassTagsView.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/selector_manager/view/ClassTagsView.js b/src/selector_manager/view/ClassTagsView.js index 605c876a6..ba4d6f3dd 100644 --- a/src/selector_manager/view/ClassTagsView.js +++ b/src/selector_manager/view/ClassTagsView.js @@ -192,6 +192,13 @@ export default Backbone.View.extend({ state && this.getStates().val(state); const selectors = target.getSelectors(); validSelectors = selectors.getValid(); + + if (this.config.componentFirst) { + const targets = this.getTargets(); + const trSelectors = targets.map(tr => tr.getSelectors().getValid()); + validSelectors = this._commonSelectors(...trSelectors); + } + this.checkSync({ validSelectors }); } @@ -199,6 +206,17 @@ export default Backbone.View.extend({ this.updateStateVis(target); }), + _commonSelectors(...args) { + if (!args.length) return []; + if (args.length === 1) return args[0]; + if (args.length === 2) + return args[0].filter(item => args[1].indexOf(item) >= 0); + + return args + .slice(1) + .reduce((acc, item) => this._commonSelectors(acc, item), args[0]); + }, + checkSync: debounce(function({ validSelectors }) { const { $btnSyncEl, config } = this; const target = this.getTarget();