active_frontend 14.0.79 → 14.0.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
'">' +
|