uber_select_rails 0.1.8 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/uber_select_rails/version.rb +1 -1
- data/vendor/assets/javascript/uber_select/README.md +5 -0
- data/vendor/assets/javascript/uber_select/javascript/jquery.uber-select.js +3 -0
- data/vendor/assets/javascript/uber_select/javascript/list.js +9 -5
- data/vendor/assets/javascript/uber_select/javascript/output_container.js +5 -1
- data/vendor/assets/javascript/uber_select/javascript/pane.js +4 -0
- data/vendor/assets/javascript/uber_select/javascript/uber_search.js +12 -3
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10c18743a0a4f7aa8ea982825a50907aeb75235437411bbafa9e1516ccaca952
|
4
|
+
data.tar.gz: 6886d3f7ea294125db58af7f8c810ab67dff4f4ec70f0507843c2b0580cf4308
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b10307638757804884a9eee2b749da3dd661388b7f32abae304817952810794214b5403edb7d8a502ec706a84df34c1a96c088162cfe59b87af70fd327d4059
|
7
|
+
data.tar.gz: fd2484075d5a73cff0e80e704c939ea06195fc4bb15a78a6281983425c073400928b7d2e4d40f7e648fac1680e2ceaf71fb224e14507584385b4d130c3d5d586
|
@@ -106,6 +106,11 @@ Data is an array of objects. Each object may have the following properties:
|
|
106
106
|
- ##### group
|
107
107
|
This is used to visually group options. All options with the same group will appear together. *optional*
|
108
108
|
|
109
|
+
#### Methods
|
110
|
+
|
111
|
+
- ##### setData(data)
|
112
|
+
Sets the data. `data` should be an Array conforming to the specifications described in <a href="#data">Data</a>
|
113
|
+
|
109
114
|
|
110
115
|
#### Options <a name="UberSearch options"></a>
|
111
116
|
Options can be specified by setting the `data-uber-options` attribute on the `<select>` element. Values should be passed
|
@@ -14,6 +14,7 @@
|
|
14
14
|
var options = $.extend({
|
15
15
|
prepopulateSearchOnOpen: false, // Should the search input start with the selected value in it when the pane is opened?
|
16
16
|
clearSearchClearsSelect: false, // Should the select value be cleared When the search is cleared?
|
17
|
+
disabled: $(select).is(':disabled'), // Whether the select is currently disabled
|
17
18
|
placeholder: $(select).attr('placeholder') || $(select).attr('data-placeholder'), // Placeholder to show in the selected text area
|
18
19
|
dataUrl: null, // A url to pre-fetch select options from, see optionsFromData for data format
|
19
20
|
optionFromDatum: optionFromDatum, // A function to create select options
|
@@ -79,6 +80,7 @@
|
|
79
80
|
datum = {
|
80
81
|
text: option.textContent,
|
81
82
|
value: getAttribute(option, 'value'),
|
83
|
+
disabled: getAttribute(option, 'disabled'),
|
82
84
|
matchValue: getAttribute(option, 'data-match-value'),
|
83
85
|
visibility: getAttribute(option, 'data-visibility'),
|
84
86
|
element: option
|
@@ -130,6 +132,7 @@
|
|
130
132
|
}
|
131
133
|
|
132
134
|
function refreshOptionsList(){
|
135
|
+
uberSearch.setDisabled($(select).is(':disabled'))
|
133
136
|
uberSearch.setData(dataFromSelect(select))
|
134
137
|
updateSelectedValue()
|
135
138
|
}
|
@@ -66,18 +66,18 @@ function List(options) {
|
|
66
66
|
}
|
67
67
|
}
|
68
68
|
|
69
|
-
function highlightResult(result, options){
|
69
|
+
function highlightResult(result, options) {
|
70
70
|
result = $(result)
|
71
71
|
options = $.extend({scroll: true}, options)
|
72
72
|
|
73
73
|
if (!result.length) { return }
|
74
74
|
|
75
|
-
var
|
76
|
-
if (
|
77
|
-
|
75
|
+
var enabledResult = enabledResults().filter(result)
|
76
|
+
if (enabledResult.length) {
|
77
|
+
enabledResult.addClass('highlighted')
|
78
78
|
|
79
79
|
if (options.scroll){
|
80
|
-
scrollResultIntoView(
|
80
|
+
scrollResultIntoView(enabledResult)
|
81
81
|
}
|
82
82
|
}
|
83
83
|
}
|
@@ -90,6 +90,10 @@ function List(options) {
|
|
90
90
|
return results().filter('.highlighted')
|
91
91
|
}
|
92
92
|
|
93
|
+
function enabledResults(){
|
94
|
+
return visibleResults().not('.disabled')
|
95
|
+
}
|
96
|
+
|
93
97
|
function visibleResults(){
|
94
98
|
return results().not('.hidden')
|
95
99
|
}
|
@@ -15,7 +15,11 @@ var OutputContainer = function(options){
|
|
15
15
|
view.toggleClass('empty', !value)
|
16
16
|
}
|
17
17
|
|
18
|
+
function setDisabled(boolean) {
|
19
|
+
view.toggleClass('disabled', boolean)
|
20
|
+
}
|
21
|
+
|
18
22
|
// PUBLIC INTERFACE
|
19
23
|
|
20
|
-
$.extend(this, {view: view, setValue: setValue})
|
24
|
+
$.extend(this, {view: view, setValue: setValue, setDisabled: setDisabled})
|
21
25
|
}
|
@@ -20,11 +20,15 @@ function Pane(options){
|
|
20
20
|
if (options.trigger){
|
21
21
|
// Show the pane when the select element is clicked
|
22
22
|
$(options.trigger).on('click', function(event){
|
23
|
+
if ($(options.trigger).hasClass('disabled')) { return }
|
24
|
+
|
23
25
|
context.show()
|
24
26
|
})
|
25
27
|
|
26
28
|
// Show the pane if the user was tabbed onto the trigger and pressed enter or space
|
27
29
|
$(options.trigger).on('keyup', function(event){
|
30
|
+
if ($(options.trigger).hasClass('disabled')) { return }
|
31
|
+
|
28
32
|
if (event.which == 13 || event.which == 32){
|
29
33
|
context.show()
|
30
34
|
return false
|
@@ -8,7 +8,8 @@ var UberSearch = function(data, options){
|
|
8
8
|
|
9
9
|
options = $.extend({
|
10
10
|
value: null, // Initialize with this selectedValue
|
11
|
-
|
11
|
+
disabled: false, // Initialize with this disabled value
|
12
|
+
search: true, // Show the search input
|
12
13
|
clearSearchButton:'✕', // Text content of clear search button
|
13
14
|
selectCaret: '⌄', // Text content of select caret
|
14
15
|
hideBlankOption: false, // Should blank options be hidden automatically?
|
@@ -87,7 +88,7 @@ var UberSearch = function(data, options){
|
|
87
88
|
})
|
88
89
|
|
89
90
|
// When a search result is chosen
|
90
|
-
resultsContainer.on('click', '.result', function(event){
|
91
|
+
resultsContainer.on('click', '.result:not(.disabled)', function(event){
|
91
92
|
var datum = $(this).data()
|
92
93
|
|
93
94
|
if (options.onSelect(datum, this, event) === false) {
|
@@ -113,6 +114,7 @@ var UberSearch = function(data, options){
|
|
113
114
|
|
114
115
|
// INITIALIZATION
|
115
116
|
|
117
|
+
setDisabled(options.disabled)
|
116
118
|
setData(data)
|
117
119
|
|
118
120
|
if (options.search){
|
@@ -150,6 +152,11 @@ var UberSearch = function(data, options){
|
|
150
152
|
markSelected()
|
151
153
|
}
|
152
154
|
|
155
|
+
// Enables or disables UberSearch
|
156
|
+
function setDisabled(boolean){
|
157
|
+
outputContainer.setDisabled(boolean)
|
158
|
+
}
|
159
|
+
|
153
160
|
// Updates the enhanced select with the text of the selected result
|
154
161
|
function setSelectedText(text){
|
155
162
|
if (text) {
|
@@ -236,6 +243,8 @@ var UberSearch = function(data, options){
|
|
236
243
|
.html((options.treatBlankOptionAsPlaceholder ? datum.text || options.placeholder : datum.text) || " ")
|
237
244
|
.data(datum) // Store the datum so we can get know what the value of the selected item is
|
238
245
|
|
246
|
+
if (datum.disabled) { result.addClass('disabled') }
|
247
|
+
|
239
248
|
options.resultPostprocessor(result, datum)
|
240
249
|
|
241
250
|
return result
|
@@ -311,5 +320,5 @@ var UberSearch = function(data, options){
|
|
311
320
|
|
312
321
|
// PUBLIC INTERFACE
|
313
322
|
|
314
|
-
$.extend(this, {view:view, searchField:searchField, setValue:setValue, setData:setData, options:options})
|
323
|
+
$.extend(this, {view:view, searchField:searchField, setValue:setValue, setData:setData, setDisabled:setDisabled, options:options})
|
315
324
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uber_select_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicholas Jakobsen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -99,8 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: '0'
|
101
101
|
requirements: []
|
102
|
-
|
103
|
-
rubygems_version: 2.7.9
|
102
|
+
rubygems_version: 3.0.3
|
104
103
|
signing_key:
|
105
104
|
specification_version: 4
|
106
105
|
summary: A Rails gem containing a javascript plugin that adds a layer of UI goodness
|