Skip to content

Commit 1092ea4

Browse files
pierry01cirdes
andauthored
disabled + aria-disabled examples for Combobox (#228)
* disabled + aria-disabled examples for Combobox * disabled + aria-disabled examples for Combobox --------- Co-authored-by: Cirdes <[email protected]>
1 parent 1e75692 commit 1092ea4

File tree

7 files changed

+54
-14
lines changed

7 files changed

+54
-14
lines changed

app/components/ruby_ui/combobox/combobox_checkbox.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ def default_attrs
1313
class: [
1414
"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background accent-primary",
1515
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
16-
"disabled:cursor-not-allowed disabled:opacity-50"
16+
"disabled:cursor-not-allowed disabled:opacity-50",
17+
"aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none"
1718
],
1819
data: {
1920
ruby_ui__combobox_target: "input",

app/components/ruby_ui/combobox/combobox_radio.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ def view_template
1010

1111
def default_attrs
1212
{
13-
class: "aspect-square h-4 w-4 rounded-full border border-primary accent-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
13+
class: [
14+
"aspect-square h-4 w-4 rounded-full border border-primary accent-primary text-primary shadow",
15+
"focus:outline-none",
16+
"focus-visible:ring-1 focus-visible:ring-ring",
17+
"disabled:cursor-not-allowed disabled:opacity-50",
18+
"aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none"
19+
],
1420
data: {
1521
ruby_ui__combobox_target: "input",
1622
ruby_ui__form_field_target: "input",

app/components/ruby_ui/combobox/combobox_search_input.rb

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,22 @@ def view_template
1919
def default_attrs
2020
{
2121
type: "search",
22-
class: "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none border-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
2322
role: "searchbox",
23+
autocorrect: "off",
24+
autocomplete: "off",
25+
spellcheck: "false",
2426
placeholder: @placeholder,
27+
class: [
28+
"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none border-none",
29+
"focus:ring-0",
30+
"placeholder:text-muted-foreground",
31+
"disabled:cursor-not-allowed disabled:opacity-50",
32+
"aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none"
33+
],
2534
data: {
2635
ruby_ui__combobox_target: "searchInput",
2736
action: "keyup->ruby-ui--combobox#filterItems search->ruby-ui--combobox#filterItems"
28-
},
29-
autocomplete: "off",
30-
autocorrect: "off",
31-
spellcheck: "false"
37+
}
3238
}
3339
end
3440

app/components/ruby_ui/combobox/combobox_toggle_all_checkbox.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ def default_attrs
1313
class: [
1414
"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background accent-primary",
1515
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
16-
"disabled:cursor-not-allowed disabled:opacity-50"
16+
"disabled:cursor-not-allowed disabled:opacity-50",
17+
"aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none"
1718
],
1819
data: {
1920
ruby_ui__combobox_target: "toggleAll",

app/components/ruby_ui/combobox/combobox_trigger.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@ def view_template
2121
def default_attrs
2222
{
2323
type: "button",
24-
class: "flex h-full w-full items-center whitespace-nowrap rounded-md text-sm ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2 justify-between",
24+
class: [
25+
"flex h-full w-full items-center whitespace-nowrap rounded-md text-sm ring-offset-background transition-colors border border-input bg-background h-10 px-4 py-2 justify-between",
26+
"hover:bg-accent hover:text-accent-foreground",
27+
"disabled:pointer-events-none disabled:opacity-50",
28+
"aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-disabled:cursor-not-allowed",
29+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
30+
],
2531
data: {
2632
placeholder: @placeholder,
2733
ruby_ui__combobox_target: "trigger",

app/javascript/controllers/ruby_ui/combobox_controller.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export default class extends Controller {
2525
}
2626

2727
disconnect() {
28-
this.cleanup();
28+
if (this.cleanup) { this.cleanup() }
2929
}
3030

3131
inputChanged(e) {
@@ -41,7 +41,7 @@ export default class extends Controller {
4141
}
4242

4343
inputContent(input) {
44-
return input.dataset.text || input.parentElement.innerText
44+
return input.dataset.text || input.parentElement.textContent
4545
}
4646

4747
toggleAllItems() {

app/views/docs/combobox.rb

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def view_template
2222
ComboboxList do
2323
ComboboxEmptyState { "No result" }
2424
25-
ComboboxListGroup label: "Fruits" do
25+
ComboboxListGroup(label: "Fruits") do
2626
ComboboxItem do
2727
ComboboxRadio(name: "food", value: "apple")
2828
span { "Apple" }
@@ -34,7 +34,7 @@ def view_template
3434
end
3535
end
3636
37-
ComboboxListGroup label: "Vegetable" do
37+
ComboboxListGroup(label: "Vegetable") do
3838
ComboboxItem do
3939
ComboboxRadio(name: "food", value: "brocoli")
4040
span { "Broccoli" }
@@ -46,7 +46,7 @@ def view_template
4646
end
4747
end
4848
49-
ComboboxListGroup label: "Others" do
49+
ComboboxListGroup(label: "Others") do
5050
ComboboxItem do
5151
ComboboxRadio(name: "food", value: "chocolate")
5252
span { "Chocolate" }
@@ -123,6 +123,26 @@ def view_template
123123
RUBY
124124
end
125125

126+
render Docs::VisualCodeExample.new(title: "Disabled", context: self) do
127+
<<~RUBY
128+
div(class: "w-96") do
129+
Combobox do
130+
ComboboxTrigger(disabled: true, placeholder: "Pick value")
131+
end
132+
end
133+
RUBY
134+
end
135+
136+
render Docs::VisualCodeExample.new(title: "Aria Disabled", context: self) do
137+
<<~RUBY
138+
div(class: "w-96") do
139+
Combobox do
140+
ComboboxTrigger(aria: {disabled: "true"}, placeholder: "Pick value")
141+
end
142+
end
143+
RUBY
144+
end
145+
126146
render Components::ComponentSetup::Tabs.new(component_name: "Combobox")
127147

128148
render Docs::ComponentsTable.new(component_files("Combobox"))

0 commit comments

Comments
 (0)