hotwire_combobox 0.1.4 → 0.1.5
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99cf62ece0c5bf6182ab759cbab18c4f561c22215babfdf00eed7329f5797eb9
|
4
|
+
data.tar.gz: dcca7ddceca4e3b7f840716bf789b641d62ffaea589b9bf86da39e4445c6a9cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb5f896deae2dde8b36d91d7eaee8ec27abfd00b07a94d64c094d8da865e4cd2723c6349a9fe49296f8e20cde933ed698f2f64b1e65909ed1fca889517213773
|
7
|
+
data.tar.gz: 31ce6c44d91feb634fd16349ed0f89ab58975a3a6744f36c6f05f6ea207d6caa1317267b1892ae602b48daf5f4182a3908681c7746e05bd19ae9b489bcf9696b
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Controller } from "@hotwired/stimulus"
|
2
2
|
|
3
3
|
export default class extends Controller {
|
4
|
-
static classes = [ "selected" ]
|
4
|
+
static classes = [ "selected", "invalid" ]
|
5
5
|
static targets = [ "combobox", "listbox", "valueField" ]
|
6
6
|
static values = { expanded: Boolean, filterableAttribute: String, autocompletableAttribute: String }
|
7
7
|
|
@@ -16,12 +16,13 @@ export default class extends Controller {
|
|
16
16
|
}
|
17
17
|
|
18
18
|
close() {
|
19
|
+
this.commitSelection()
|
19
20
|
this.expandedValue = false
|
20
21
|
}
|
21
22
|
|
22
23
|
selectOption(event) {
|
23
24
|
this.select(event.currentTarget)
|
24
|
-
this.
|
25
|
+
this.close()
|
25
26
|
}
|
26
27
|
|
27
28
|
filter(event) {
|
@@ -76,14 +77,13 @@ export default class extends Controller {
|
|
76
77
|
cancel(event)
|
77
78
|
},
|
78
79
|
Enter(event) {
|
79
|
-
this.
|
80
|
+
this.close()
|
80
81
|
cancel(event)
|
81
82
|
}
|
82
83
|
}
|
83
84
|
|
84
85
|
commitSelection() {
|
85
86
|
this.select(this.selectedOptionElement, { force: true })
|
86
|
-
this.close()
|
87
87
|
}
|
88
88
|
|
89
89
|
expandedValueChanged() {
|
@@ -109,8 +109,17 @@ export default class extends Controller {
|
|
109
109
|
|
110
110
|
if (option) {
|
111
111
|
if (this.hasSelectedClass) option.classList.add(this.selectedClass)
|
112
|
+
if (this.hasInvalidClass) this.comboboxTarget.classList.remove(this.invalidClass)
|
113
|
+
|
112
114
|
this.maybeAutocompleteWith(option, { force })
|
113
115
|
this.executeSelect(option, { selected: true })
|
116
|
+
} else {
|
117
|
+
if (this.valueIsInvalid) {
|
118
|
+
if (this.hasInvalidClass) this.comboboxTarget.classList.add(this.invalidClass)
|
119
|
+
|
120
|
+
this.comboboxTarget.setAttribute("aria-invalid", true)
|
121
|
+
this.comboboxTarget.setAttribute("aria-errormessage", `Please select a valid option for ${this.comboboxTarget.name}`)
|
122
|
+
}
|
114
123
|
}
|
115
124
|
}
|
116
125
|
|
@@ -176,6 +185,11 @@ export default class extends Controller {
|
|
176
185
|
get isOpen() {
|
177
186
|
return this.expandedValue
|
178
187
|
}
|
188
|
+
|
189
|
+
get valueIsInvalid() {
|
190
|
+
const isRequiredAndEmpty = this.comboboxTarget.required && !this.valueFieldTarget.value
|
191
|
+
return isRequiredAndEmpty
|
192
|
+
}
|
179
193
|
}
|
180
194
|
|
181
195
|
function applyFilter(query, { matching }) {
|
data/lib/combobox/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hotwire_combobox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jose Farias
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.2'
|
55
|
-
description: A combobox implementation for Ruby on Rails.
|
55
|
+
description: A combobox implementation for Ruby on Rails apps running on Hotwire.
|
56
56
|
email:
|
57
57
|
- jose@farias.mx
|
58
58
|
executables: []
|
@@ -62,7 +62,7 @@ files:
|
|
62
62
|
- MIT-LICENSE
|
63
63
|
- README.md
|
64
64
|
- Rakefile
|
65
|
-
- app/assets/javascripts/
|
65
|
+
- app/assets/javascripts/combobox_application.js
|
66
66
|
- app/assets/javascripts/controllers/application.js
|
67
67
|
- app/assets/javascripts/controllers/combobox_controller.js
|
68
68
|
- app/assets/javascripts/controllers/index.js
|
@@ -97,5 +97,5 @@ requirements: []
|
|
97
97
|
rubygems_version: 3.4.18
|
98
98
|
signing_key:
|
99
99
|
specification_version: 4
|
100
|
-
summary: A combobox implementation for Ruby on Rails
|
100
|
+
summary: A combobox implementation for Ruby on Rails apps running on Hotwire
|
101
101
|
test_files: []
|
File without changes
|