From c6565ed65377b8aad627da223426304d1617efb5 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Wed, 7 Nov 2018 14:26:54 +0100 Subject: [PATCH 1/4] new: [plugin:chosen] added chosen plugin feature for value input of type select --- src/plugins/chosen-selectpicker/plugin.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/chosen-selectpicker/plugin.js b/src/plugins/chosen-selectpicker/plugin.js index 3e72e72f..c94b0f27 100644 --- a/src/plugins/chosen-selectpicker/plugin.js +++ b/src/plugins/chosen-selectpicker/plugin.js @@ -26,6 +26,11 @@ QueryBuilder.define('chosen-selectpicker', function(options) { rule.$el.find(Selectors.rule_operator).removeClass('form-control').chosen(options); }); + this.on('afterCreateRuleInput', function(e, rule) { + let select_selector = Selectors.value_container + ' select[name*=_value_]'; + rule.$el.find(select_selector).removeClass('form-control').chosen(options); + }); + // update selectpicker on change this.on('afterUpdateRuleFilter', function(e, rule) { rule.$el.find(Selectors.rule_filter).trigger('chosen:updated'); From 8a675884ca266fc60fa5b78084f0f4eaf1695b88 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Wed, 7 Nov 2018 14:42:19 +0100 Subject: [PATCH 2/4] chg: [plugin:chosen] avoid creating useless chosen widget Prevent the creation of an glitchy empty chosen widget in case of a select containing only one value. --- src/plugins/chosen-selectpicker/plugin.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/chosen-selectpicker/plugin.js b/src/plugins/chosen-selectpicker/plugin.js index c94b0f27..c313159e 100644 --- a/src/plugins/chosen-selectpicker/plugin.js +++ b/src/plugins/chosen-selectpicker/plugin.js @@ -23,7 +23,10 @@ QueryBuilder.define('chosen-selectpicker', function(options) { }); this.on('afterCreateRuleOperators', function(e, rule) { - rule.$el.find(Selectors.rule_operator).removeClass('form-control').chosen(options); + let node = rule.$el.find(Selectors.rule_operator); + if (node.css('display') !== 'none') { // avoid creating useless chosen widget + rule.$el.find(Selectors.rule_operator).removeClass('form-control').chosen(options); + } }); this.on('afterCreateRuleInput', function(e, rule) { From de933786dbc7ca0e111f289eb14c06d86fe9f7f9 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Thu, 8 Nov 2018 14:58:45 +0100 Subject: [PATCH 3/4] fix: [plugin:chosen] replaced `let` by `var` to comply with other js version --- src/plugins/chosen-selectpicker/plugin.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/chosen-selectpicker/plugin.js b/src/plugins/chosen-selectpicker/plugin.js index c313159e..9a7de52d 100644 --- a/src/plugins/chosen-selectpicker/plugin.js +++ b/src/plugins/chosen-selectpicker/plugin.js @@ -23,14 +23,14 @@ QueryBuilder.define('chosen-selectpicker', function(options) { }); this.on('afterCreateRuleOperators', function(e, rule) { - let node = rule.$el.find(Selectors.rule_operator); + var node = rule.$el.find(Selectors.rule_operator); if (node.css('display') !== 'none') { // avoid creating useless chosen widget rule.$el.find(Selectors.rule_operator).removeClass('form-control').chosen(options); } }); this.on('afterCreateRuleInput', function(e, rule) { - let select_selector = Selectors.value_container + ' select[name*=_value_]'; + var select_selector = Selectors.value_container + ' select[name*=_value_]'; rule.$el.find(select_selector).removeClass('form-control').chosen(options); }); From 5da2d67cf20be614dc1d8d4451f528ff6438d953 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Thu, 8 Nov 2018 15:34:48 +0100 Subject: [PATCH 4/4] fix: [plugin:chosen] Applied code review --- src/plugins/chosen-selectpicker/plugin.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/plugins/chosen-selectpicker/plugin.js b/src/plugins/chosen-selectpicker/plugin.js index 9a7de52d..e18c8573 100644 --- a/src/plugins/chosen-selectpicker/plugin.js +++ b/src/plugins/chosen-selectpicker/plugin.js @@ -23,17 +23,11 @@ QueryBuilder.define('chosen-selectpicker', function(options) { }); this.on('afterCreateRuleOperators', function(e, rule) { - var node = rule.$el.find(Selectors.rule_operator); - if (node.css('display') !== 'none') { // avoid creating useless chosen widget + if (e.builder.getOperators(rule.filter).length > 1) { rule.$el.find(Selectors.rule_operator).removeClass('form-control').chosen(options); } }); - this.on('afterCreateRuleInput', function(e, rule) { - var select_selector = Selectors.value_container + ' select[name*=_value_]'; - rule.$el.find(select_selector).removeClass('form-control').chosen(options); - }); - // update selectpicker on change this.on('afterUpdateRuleFilter', function(e, rule) { rule.$el.find(Selectors.rule_filter).trigger('chosen:updated');