From 730064dc0a88999cabbe9b390fb036cefe765542 Mon Sep 17 00:00:00 2001
From: premithk Output
+
@@ -140,6 +145,7 @@ Output
+
@@ -172,7 +178,7 @@ Output
'bt-tooltip-errors': { delay: 100 },
'sortable': null,
'filter-description': { mode: 'bootbox' },
- 'bt-selectpicker': null,
+ 'chosen-selectpicker': null,
'unique-filter': null,
'bt-checkbox': { color: 'primary' },
'invert': null,
diff --git a/src/plugins/bt-selectpicker/plugin.js b/src/plugins/bt-selectpicker/plugin.js
index d9ef2812..2ff72b6b 100644
--- a/src/plugins/bt-selectpicker/plugin.js
+++ b/src/plugins/bt-selectpicker/plugin.js
@@ -15,9 +15,11 @@ QueryBuilder.define('bt-selectpicker', function(options) {
}
var Selectors = QueryBuilder.selectors;
-
+
+ console.log(options)
// init selectpicker
this.on('afterCreateRuleFilters', function(e, rule) {
+ options.liveSearch = true;
rule.$el.find(Selectors.rule_filter).removeClass('form-control').selectpicker(options);
});
diff --git a/src/plugins/chosen-selectpicker/plugin.js b/src/plugins/chosen-selectpicker/plugin.js
new file mode 100644
index 00000000..7235b2ce
--- /dev/null
+++ b/src/plugins/chosen-selectpicker/plugin.js
@@ -0,0 +1,49 @@
+/**
+ * @class BtSelectpicker
+ * @memberof module:plugins
+ * @descriptioon Applies Bootstrap Select on filters and operators combo-boxes.
+ * @param {object} [options]
+ * @param {string} [options.container='body']
+ * @param {string} [options.style='btn-inverse btn-xs']
+ * @param {int|string} [options.width='auto']
+ * @param {boolean} [options.showIcon=false]
+ * @throws MissingLibraryError
+ */
+QueryBuilder.define('chosen-selectpicker', function(options) {
+ if (!$.fn.chosen) {
+ Utils.error('MissingLibrary', ' chosen is required to use "chosen-selectpicker" plugin. Get it here: https://github.com/harvesthq/chosen');
+ }
+
+ var Selectors = QueryBuilder.selectors;
+
+ console.log(options)
+ // init selectpicker
+ this.on('afterCreateRuleFilters', function(e, rule) {
+ options.liveSearch = true;
+ rule.$el.find(Selectors.rule_filter).removeClass('form-control').chosen();
+ });
+
+ this.on('afterCreateRuleOperators', function(e, rule) {
+ rule.$el.find(Selectors.rule_operator).removeClass('form-control').chosen();
+ });
+
+ // update selectpicker on change
+ this.on('afterUpdateRuleFilter', function(e, rule) {
+ rule.$el.find(Selectors.rule_filter).trigger("chosen:updated");
+ });
+
+ this.on('afterUpdateRuleOperator', function(e, rule) {
+ rule.$el.find(Selectors.rule_operator).trigger("chosen:updated");
+
+ });
+
+ this.on('beforeDeleteRule', function(e, rule) {
+ rule.$el.find(Selectors.rule_filter).chosen('destroy');
+ rule.$el.find(Selectors.rule_operator).chosen('destroy');
+ });
+}, {
+ container: 'body',
+ style: 'btn-inverse btn-xs',
+ width: 'auto',
+ showIcon: false
+});
From 249a2de255277f64b3466fe3885f23cb7c64a327 Mon Sep 17 00:00:00 2001
From: premithk Output
'bt-tooltip-errors': { delay: 100 },
'sortable': null,
'filter-description': { mode: 'bootbox' },
- 'chosen-selectpicker': null,
+ 'bt-selectpicker': null,
+ //'chosen-selectpicker': null,
'unique-filter': null,
'bt-checkbox': { color: 'primary' },
'invert': null,
diff --git a/src/plugins/chosen-selectpicker/plugin.js b/src/plugins/chosen-selectpicker/plugin.js
index c31f971a..69419b4b 100644
--- a/src/plugins/chosen-selectpicker/plugin.js
+++ b/src/plugins/chosen-selectpicker/plugin.js
@@ -7,42 +7,42 @@
*/
QueryBuilder.define('chosen-selectpicker', function(options) {
- //Checking if bootstrap select is already chosen as a plugin
- if($.fn.selectpicker){
- console.warn('Plugin Conflict', 'Bootstrap select is already selected as a plugin. chosen-selectpicker plugin is exiting');
- return;
- }
-
if (!$.fn.chosen) {
Utils.error('MissingLibrary', ' chosen is required to use "chosen-selectpicker" plugin. Get it here: https://github.com/harvesthq/chosen');
}
- var Selectors = QueryBuilder.selectors;
- console.log('Selectors->', QueryBuilder.selectors);
- console.log('Selectors->', QueryBuilder.plugins);
// init selectpicker
this.on('afterCreateRuleFilters', function(e, rule) {
+ if($(".form-control").length === 0 || $(".form-control").prop('nodeName') !== 'SELECT')
+ Utils.error('MissingLibrary', ' chosen is required to use "chosen-selectpicker" plugin. Get it here: https://github.com/harvesthq/chosen');
rule.$el.find(Selectors.rule_filter).removeClass('form-control').chosen();
- console.log(rule.$el.find(Selectors.rule_filter).children());
- console.log(rule.$el);
});
this.on('afterCreateRuleOperators', function(e, rule) {
+ console.log("Length Insidec", $(".form-control").length);
+ if($(".form-control").length !== 0 && $(".form-control").prop('nodeName') === 'SELECT')
rule.$el.find(Selectors.rule_operator).removeClass('form-control').chosen();
});
// update selectpicker on change
this.on('afterUpdateRuleFilter', function(e, rule) {
+ console.log("Length Insideuf", $(".form-control").length);
+ if($(".form-control").length !== 0 && $(".form-control").prop('nodeName') === 'SELECT')
rule.$el.find(Selectors.rule_filter).trigger("chosen:updated");
});
this.on('afterUpdateRuleOperator', function(e, rule) {
+ console.log("Length Insideu",$(".form-control").length);
+ if($(".form-control").length !== 0 && $(".form-control").prop('nodeName') === 'SELECT')
rule.$el.find(Selectors.rule_operator).trigger("chosen:updated");
});
this.on('beforeDeleteRule', function(e, rule) {
- rule.$el.find(Selectors.rule_filter).chosen('destroy');
- rule.$el.find(Selectors.rule_operator).chosen('destroy');
+ console.log("Length Insidea", $(".form-control").length);
+ if($(".form-control").length !== 0 && $(".form-control").prop('nodeName') === 'SELECT') {
+ rule.$el.find(Selectors.rule_filter).chosen('destroy');
+ rule.$el.find(Selectors.rule_operator).chosen('destroy');
+ }
});
});
From 0f261784ccc5c4b87c922b95c4db03f9b5eba1b6 Mon Sep 17 00:00:00 2001
From: premithk Output
'bt-tooltip-errors': { delay: 100 },
'sortable': null,
'filter-description': { mode: 'bootbox' },
- 'bt-selectpicker': null,
- //'chosen-selectpicker': null,
+ //'bt-selectpicker': null,
+ 'chosen-selectpicker': null,
'unique-filter': null,
'bt-checkbox': { color: 'primary' },
'invert': null,
diff --git a/src/plugins/chosen-selectpicker/plugin.js b/src/plugins/chosen-selectpicker/plugin.js
index 69419b4b..f3a01d9b 100644
--- a/src/plugins/chosen-selectpicker/plugin.js
+++ b/src/plugins/chosen-selectpicker/plugin.js
@@ -10,36 +10,32 @@ QueryBuilder.define('chosen-selectpicker', function(options) {
if (!$.fn.chosen) {
Utils.error('MissingLibrary', ' chosen is required to use "chosen-selectpicker" plugin. Get it here: https://github.com/harvesthq/chosen');
}
+
+ if (this.settings.plugins['bt-selectpicker']) {
+ Utils.error('Conflict', 'chosen-selectpicker have a conflict with bt-selectpicker. Please chose only one of the plugins');
+ }
+
+ var Selectors = QueryBuilder.selectors;
// init selectpicker
this.on('afterCreateRuleFilters', function(e, rule) {
- if($(".form-control").length === 0 || $(".form-control").prop('nodeName') !== 'SELECT')
- Utils.error('MissingLibrary', ' chosen is required to use "chosen-selectpicker" plugin. Get it here: https://github.com/harvesthq/chosen');
rule.$el.find(Selectors.rule_filter).removeClass('form-control').chosen();
});
this.on('afterCreateRuleOperators', function(e, rule) {
- console.log("Length Insidec", $(".form-control").length);
- if($(".form-control").length !== 0 && $(".form-control").prop('nodeName') === 'SELECT')
rule.$el.find(Selectors.rule_operator).removeClass('form-control').chosen();
});
// update selectpicker on change
this.on('afterUpdateRuleFilter', function(e, rule) {
- console.log("Length Insideuf", $(".form-control").length);
- if($(".form-control").length !== 0 && $(".form-control").prop('nodeName') === 'SELECT')
rule.$el.find(Selectors.rule_filter).trigger("chosen:updated");
});
this.on('afterUpdateRuleOperator', function(e, rule) {
- console.log("Length Insideu",$(".form-control").length);
- if($(".form-control").length !== 0 && $(".form-control").prop('nodeName') === 'SELECT')
rule.$el.find(Selectors.rule_operator).trigger("chosen:updated");
-
});
this.on('beforeDeleteRule', function(e, rule) {
- console.log("Length Insidea", $(".form-control").length);
if($(".form-control").length !== 0 && $(".form-control").prop('nodeName') === 'SELECT') {
rule.$el.find(Selectors.rule_filter).chosen('destroy');
rule.$el.find(Selectors.rule_operator).chosen('destroy');
From c94cc7d436f603d88ceac4861cf2b26805e3139d Mon Sep 17 00:00:00 2001
From: premithk Output
-
+
@@ -175,7 +175,7 @@ Output
'bt-tooltip-errors': { delay: 100 },
'sortable': null,
'filter-description': { mode: 'bootbox' },
- //'bt-selectpicker': null,
+ // 'bt-selectpicker': null,
'chosen-selectpicker': null,
'unique-filter': null,
'bt-checkbox': { color: 'primary' },
diff --git a/src/plugins/chosen-selectpicker/plugin.js b/src/plugins/chosen-selectpicker/plugin.js
index b86f476b..8a866bed 100644
--- a/src/plugins/chosen-selectpicker/plugin.js
+++ b/src/plugins/chosen-selectpicker/plugin.js
@@ -10,7 +10,7 @@ QueryBuilder.define('chosen-selectpicker', function(options) {
if (!$.fn.chosen) {
Utils.error('MissingLibrary', 'chosen is required to use "chosen-selectpicker" plugin. Get it here: https://github.com/harvesthq/chosen');
}
-
+
if (this.settings.plugins['bt-selectpicker']) {
Utils.error('Conflict', 'bt-selectpicker is already selected as the dropdown plugin. Please remove chosen-selectpicker from the plugin list');
}
@@ -28,15 +28,15 @@ QueryBuilder.define('chosen-selectpicker', function(options) {
// update selectpicker on change
this.on('afterUpdateRuleFilter', function(e, rule) {
- rule.$el.find(Selectors.rule_filter).trigger("chosen:updated");
+ rule.$el.find(Selectors.rule_filter).trigger('chosen:updated');
});
this.on('afterUpdateRuleOperator', function(e, rule) {
- rule.$el.find(Selectors.rule_operator).trigger("chosen:updated");
+ rule.$el.find(Selectors.rule_operator).trigger('chosen:updated');
});
this.on('beforeDeleteRule', function(e, rule) {
- if($(".form-control").length !== 0 && $(".form-control").prop('nodeName') === 'SELECT') {
+ if ($('.form-control').length !== 0 && $('.form-control').prop('nodeName') === 'SELECT') {
rule.$el.find(Selectors.rule_filter).chosen('destroy');
rule.$el.find(Selectors.rule_operator).chosen('destroy');
}
diff --git a/tests/index.html b/tests/index.html
index 43b6b05f..ad4e8766 100644
--- a/tests/index.html
+++ b/tests/index.html
@@ -8,6 +8,7 @@
+
#qunit-modulefilter-container { float:none; }
@@ -22,6 +23,7 @@
+
@@ -46,6 +48,7 @@
+
diff --git a/tests/plugins-gui.module.js b/tests/plugins-gui.module.js
index 85f9a7bd..00a131a1 100644
--- a/tests/plugins-gui.module.js
+++ b/tests/plugins-gui.module.js
@@ -94,6 +94,23 @@ $(function(){
);
});
+ /**
+ * Test chosen-selectpicker
+ */
+ QUnit.test('chosen-selectpicker', function(assert) {
+ $b.queryBuilder({
+ plugins: ['chosen-selectpicker'],
+ filters: basic_filters,
+ rules: basic_rules
+ });
+
+ assert.ok(
+ $b.find('.chosen-single').length == 8,
+ 'Should have initialized chosen on all filters and operators selectors'
+ );
+ });
+
+
/**
* Test bt-tooltip-errors
*/
From 54781d3f02d5c48b8c566a9df23517eb803473e3 Mon Sep 17 00:00:00 2001
From: premithk