active_frontend 14.0.79 → 14.0.80
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_frontend/version.rb +1 -1
- data/vendor/assets/javascripts/base/_selectpicker.js +46 -9
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26f7d6c60198c236566908ce470752f07eafc567
|
4
|
+
data.tar.gz: 88ffb6f56d5f9cf115a007cbae049f983a670f74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89129309ff6370cd03149c63ee8c613544a6299369be28fe8f778867a4f5fa88b128af7bd13e2d556b4233eecee9361b1046b1c9c5d4a4f7945e3610e64392ab
|
7
|
+
data.tar.gz: 8749fc2fe027b08be732d735c84029be1fe2cf2bada74d39ff0e6143f294e9b6b89f8fb30586f498a0b9f6605e92d9adbeffe96e8f16220a184ce9938201d39c
|
@@ -9,7 +9,8 @@
|
|
9
9
|
this.settings = {
|
10
10
|
fuzzySearch: this.$element.data('fuzzySearch'),
|
11
11
|
includePrompt: this.$element.data('includePrompt'),
|
12
|
-
|
12
|
+
optionHoverClass: this.$element.data('optionHoverClass'),
|
13
|
+
optionSelectedClass: this.$element.data('optionSelectedClass'),
|
13
14
|
text: {
|
14
15
|
selectless: this.$element.data('text-selectless') || Selectpicker.DEFAULTS.text.selectless,
|
15
16
|
placeholder: this.$element.data('text-placeholder') || Selectpicker.DEFAULTS.text.placeholder,
|
@@ -18,6 +19,8 @@
|
|
18
19
|
};
|
19
20
|
this.options = $.extend({}, Selectpicker.DEFAULTS, this.settings, options);
|
20
21
|
|
22
|
+
this.$options = this.getOptions();
|
23
|
+
this.$selected = this.getSelectedOptionVal();
|
21
24
|
this.$fuzzyId = 'bsSelectpicker-fuzzy-' + this.randomNumber();
|
22
25
|
this.$widget = $(this.initWidget()).on('click', $.proxy(this.clickWidget, this));
|
23
26
|
|
@@ -33,8 +36,10 @@
|
|
33
36
|
includePrompt: true,
|
34
37
|
item: '<li></li>',
|
35
38
|
menu: '<ul class="selectpicker dropmenu caret"><span></span></ul>',
|
36
|
-
|
37
|
-
|
39
|
+
onChangeCallback: function (old_value, new_value) {},
|
40
|
+
onSetValCallback: function (value) {},
|
41
|
+
optionHoverClass: 'text-color-hover-blue',
|
42
|
+
optionSelectedClass: 'text-color-blue',
|
38
43
|
text: {
|
39
44
|
selectless: 'No options available',
|
40
45
|
placeholder: 'Filter options...',
|
@@ -66,7 +71,10 @@
|
|
66
71
|
|
67
72
|
var value = $(e.target).data('val');
|
68
73
|
|
74
|
+
if (value === undefined) return;
|
75
|
+
|
69
76
|
this.setVal(value);
|
77
|
+
this.hideWidget();
|
70
78
|
};
|
71
79
|
|
72
80
|
Selectpicker.prototype.initWidget = function () {
|
@@ -80,7 +88,7 @@
|
|
80
88
|
.append(this.fuzzyTemplate());
|
81
89
|
}
|
82
90
|
|
83
|
-
$.each(this.
|
91
|
+
$.each(this.parseOptionsToHash(), function (index, hash) {
|
84
92
|
var item = $(_self.options.item);
|
85
93
|
|
86
94
|
item.append(_self.optionTemplate(hash));
|
@@ -110,6 +118,7 @@
|
|
110
118
|
};
|
111
119
|
|
112
120
|
Selectpicker.prototype.showWidget = function (e) {
|
121
|
+
this.$selected = this.getSelectedOptionVal();
|
113
122
|
this.$container.addClass('open');
|
114
123
|
|
115
124
|
var _self = this;
|
@@ -131,24 +140,35 @@
|
|
131
140
|
|
132
141
|
this.$element.val(value);
|
133
142
|
this.options.onSetValCallback(value);
|
143
|
+
|
144
|
+
if (this.$selected !== value.toString()) {
|
145
|
+
this.$container
|
146
|
+
.find('.' + this.options.optionSelectedClass)
|
147
|
+
.removeClass(this.options.optionSelectedClass);
|
148
|
+
this.$container
|
149
|
+
.find("a[data-val='" + value + "']")
|
150
|
+
.addClass(this.options.optionSelectedClass);
|
151
|
+
this.options.onChangeCallback(this.$selected, value);
|
152
|
+
}
|
134
153
|
};
|
135
154
|
|
136
155
|
Selectpicker.prototype.randomNumber = function () {
|
137
156
|
return Math.floor((Math.random() * 100000) + 1);
|
138
157
|
};
|
139
158
|
|
140
|
-
Selectpicker.prototype.
|
159
|
+
Selectpicker.prototype.parseOptionsToHash = function () {
|
141
160
|
var _self = this;
|
142
161
|
var array = [];
|
143
162
|
|
144
|
-
this.$
|
163
|
+
this.$options.each(function() {
|
145
164
|
var option = $(this);
|
146
165
|
|
147
166
|
if (!_self.options.includePrompt && option.val() === '') return;
|
148
167
|
|
149
168
|
var hash = {
|
150
169
|
text: option.text(),
|
151
|
-
value: option.val()
|
170
|
+
value: option.val(),
|
171
|
+
selected: (option.val() === _self.$selected)
|
152
172
|
};
|
153
173
|
|
154
174
|
if (option.val() === '') {
|
@@ -161,8 +181,20 @@
|
|
161
181
|
return array;
|
162
182
|
};
|
163
183
|
|
184
|
+
Selectpicker.prototype.getOptions = function () {
|
185
|
+
return this.$element.find('option');
|
186
|
+
};
|
187
|
+
|
188
|
+
Selectpicker.prototype.getSelectedOption = function () {
|
189
|
+
return this.$element.find('option:selected');
|
190
|
+
};
|
191
|
+
|
192
|
+
Selectpicker.prototype.getSelectedOptionVal = function () {
|
193
|
+
return this.getSelectedOption().val();
|
194
|
+
};
|
195
|
+
|
164
196
|
Selectpicker.prototype.optionCount = function () {
|
165
|
-
return this.
|
197
|
+
return this.parseOptionsToHash().length;
|
166
198
|
};
|
167
199
|
|
168
200
|
Selectpicker.prototype.hasSelects = function () {
|
@@ -186,9 +218,14 @@
|
|
186
218
|
return item;
|
187
219
|
};
|
188
220
|
|
221
|
+
Selectpicker.prototype.optionClass = function (hash) {
|
222
|
+
return this.options.optionHoverClass +
|
223
|
+
(hash.selected ? (' ' + this.options.optionSelectedClass) : '');
|
224
|
+
};
|
225
|
+
|
189
226
|
Selectpicker.prototype.optionTemplate = function (hash) {
|
190
227
|
return '<a href="#" class="' +
|
191
|
-
this.
|
228
|
+
this.optionClass(hash) +
|
192
229
|
'" data-val="' +
|
193
230
|
hash.value +
|
194
231
|
'">' +
|