uber_select_rails 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e37c667b8e66ed1dda23bb261ff4afd711edd8ada1158a6eee77a44aae2573e
4
- data.tar.gz: f51b530782b7e0ea3cd97934de9fe06f91c8fbe1fdb1cfee49ac75867770eb7f
3
+ metadata.gz: 0dad48d52dd5e14c133c8d6c01861f5ae3e9069110df7b8b5faa7840703342f7
4
+ data.tar.gz: 72be4762c753d35290e7f9d63d6b9575f0967d44d9a9b382d417accb6324fd6b
5
5
  SHA512:
6
- metadata.gz: ba59b1dee8c43c50a6a1df171cddc362ba5b4297f0cbaa58bd0e9d306ab19ae138f121171067be89187cf29d152115db114bfe870ebda34300f5ef73b9508d65
7
- data.tar.gz: 64924a5caf7106dc0005a2d93f7fa105f9b00e10a2629c0bced95e833a72554a553db0eb029c32ad1cba71aa78d82d272c21eb89619a80ccfe762f48aae1b80c
6
+ metadata.gz: a39831aaeb705925e5bf27053e4445232096eb8ba8f4e572ce2809a21b1cd4a9f42af62189614089fa7dba4fa9b5f046988fcfea92ce47ee872e76f24692b797
7
+ data.tar.gz: 98cdf58391fea57de5ac5ea903a72e2d6fb15b67956ec64d0ffcdf73aa3231349f38b1555a31f2422653b2ed6acb37b63882918cbf16856368cb54af42c1924f
@@ -1,3 +1,3 @@
1
1
  module UberSelectRails
2
- VERSION = "0.5.1"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -52,13 +52,28 @@ as a JSON string. All options on the are passed to the underlying UberSearch, se
52
52
 
53
53
  Default: `<select>` element attributes `<select placeholder="my placeholder" data-placeholder="my placeholder">`
54
54
 
55
- - ##### dataUrl
55
+ - ##### dataUrl <a name="dataUrl"></a>
56
56
 
57
57
  A url to pre-fetch select options from. JSON response should be of the form
58
58
  `[{text:'option with explicit value', value: 'some value'}, {text:'option with implicit value'}]`. For a custom JSON response, use in conjunction with optionFromDatum.
59
59
 
60
60
  Default: `null`
61
61
 
62
+ - ##### dataFormatter
63
+
64
+ A function that can modify the data from the dataUrl before it is used.
65
+
66
+ The function signature is as follows:
67
+
68
+ ```js
69
+ function(data) {
70
+ // Modify the data
71
+
72
+ return modifiedData
73
+ }
74
+ ```
75
+ See <a href="#dataUrl">dataUrl</a> for details about the expected format of `data`.
76
+
62
77
  - ##### optionFromDatum
63
78
 
64
79
  A function that is used to customize the options value and text built from a JSON response. `datum` is a single result returned from the JSON response.
@@ -156,6 +171,15 @@ Data is an array of objects. Each object may have the following properties:
156
171
 
157
172
  Sets the data. `data` should be an Array conforming to the specifications described in <a href="#data">Data</a>
158
173
 
174
+ - ##### getValue()
175
+
176
+ Returns the currently selected value.
177
+
178
+ - ##### getSelection()
179
+
180
+ Returns the currently selected element from the search results.
181
+
182
+
159
183
  #### Options <a name="UberSearch options"></a>
160
184
 
161
185
  Options can be specified by setting the `data-uber-options` attribute on the `<select>` element. Values should be passed
@@ -241,7 +265,7 @@ as a JSON string.
241
265
  Sets the text to show when the results list is empty and no search is in progress
242
266
 
243
267
  Default: `'No options'`
244
-
268
+
245
269
  - ##### searchInputAttributes
246
270
 
247
271
  An Object containing attributes to add to the search input element.
@@ -17,6 +17,7 @@
17
17
  disabled: $(select).is(':disabled'), // Whether the select is currently disabled
18
18
  placeholder: $(select).attr('placeholder') || $(select).attr('data-placeholder'), // Placeholder to show in the selected text area
19
19
  dataUrl: null, // A url to pre-fetch select options from, see optionsFromData for data format
20
+ dataFormatter: function(data) { return data }, // A function to manipulate data received from the dataUrl before it is used. The function should return an array of data with desired modifications.
20
21
  optionFromDatum: optionFromDatum, // A function to create select options
21
22
  value: $(select).val() // Initialize the UberSearch with this selected value
22
23
  }, opts, $(select).data('uber-options'))
@@ -61,6 +62,7 @@
61
62
  hideSelect()
62
63
  if (options.dataUrl) {
63
64
  $.getJSON(options.dataUrl).done(function(data){
65
+ data = options.dataFormatter(data)
64
66
  $(select).append(optionsFromData(data))
65
67
  updateSelectValue(options.value)
66
68
  uberSearch.setData(dataFromSelect(select))
@@ -134,7 +136,11 @@
134
136
 
135
137
  // Copies the value of the select into the search input
136
138
  function updateSearchValueFromSelect(){
137
- uberSearch.searchField.input.val($(select).find('option:selected').text())
139
+ var index = select.selectedIndex
140
+
141
+ if (index == undefined) { return }
142
+
143
+ uberSearch.searchField.input.val($(select).find('option').eq(index).text())
138
144
  uberSearch.searchField.refresh()
139
145
  }
140
146
 
@@ -39,7 +39,7 @@ var UberSearch = function(data, options){
39
39
  var pane = new Pane()
40
40
 
41
41
  if (options.ariaLabel) { view.attr("aria-label", options.ariaLabel) }
42
-
42
+
43
43
  var searchField = new SearchField({
44
44
  placeholder: options.searchPlaceholder,
45
45
  clearButton: options.clearSearchButton,
@@ -88,9 +88,9 @@ var UberSearch = function(data, options){
88
88
  // When the pane is opened
89
89
  $(pane).on('shown', function(){
90
90
  search.clear()
91
- markSelected()
91
+ markSelected()
92
92
  view.addClass('open')
93
-
93
+
94
94
  if (options.search) {
95
95
  $(searchField.input).focus()
96
96
  } else {
@@ -189,6 +189,11 @@ var UberSearch = function(data, options){
189
189
  markSelected()
190
190
  }
191
191
 
192
+ // Returns the selected value
193
+ function getValue(){
194
+ return selectedValue
195
+ }
196
+
192
197
  // Enables or disables UberSearch
193
198
  function setDisabled(boolean){
194
199
  outputContainer.setDisabled(boolean)
@@ -362,5 +367,5 @@ var UberSearch = function(data, options){
362
367
 
363
368
  // PUBLIC INTERFACE
364
369
 
365
- $.extend(this, {view:view, searchField:searchField, setValue:setValue, setData:setData, setDisabled:setDisabled, options:options})
370
+ $.extend(this, {view:view, searchField:searchField, setValue:setValue, getValue: getValue, setData:setData, setDisabled:setDisabled, getSelection:getSelection, options:options})
366
371
  }
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.5.1
4
+ version: 0.6.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: 2022-02-17 00:00:00.000000000 Z
11
+ date: 2022-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails