Skip to content

Commit bdd19ec

Browse files
authored
Disabled + Aria Disabled Button (#227)
* Disabled + Aria Disabled Buttn * UPDATE RUBY_UI
1 parent 3b606b0 commit bdd19ec

File tree

3 files changed

+45
-18
lines changed

3 files changed

+45
-18
lines changed

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ GIT
1414

1515
GIT
1616
remote: https://github.com/ruby-ui/ruby_ui.git
17-
revision: eea116e5fa397a1b544fb8574a8014e132193e90
17+
revision: 6e6b50ef39f08ec25db2db58a80d5b461e44837f
1818
branch: main
1919
specs:
20-
ruby_ui (1.0.0.rc1)
20+
ruby_ui (1.0.1)
2121

2222
GEM
2323
remote: https://rubygems.org/

app/components/ruby_ui/button/button.rb

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
module RubyUI
44
class Button < Base
5+
BASE_CLASSES = [
6+
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors",
7+
"disabled:pointer-events-none disabled:opacity-50",
8+
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
9+
"aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-disabled:cursor-not-allowed"
10+
].freeze
11+
512
def initialize(type: :button, variant: :primary, size: :md, icon: false, **attrs)
613
@type = type
714
@variant = variant.to_sym
@@ -36,43 +43,54 @@ def size_classes
3643

3744
def primary_classes
3845
[
39-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground shadow hover:bg-primary/90",
40-
size_classes
46+
BASE_CLASSES,
47+
size_classes,
48+
"bg-primary text-primary-foreground shadow",
49+
"hover:bg-primary/90"
4150
]
4251
end
4352

4453
def link_classes
4554
[
46-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 text-primary underline-offset-4 hover:underline",
47-
size_classes
55+
BASE_CLASSES,
56+
size_classes,
57+
"text-primary underline-offset-4",
58+
"hover:underline"
4859
]
4960
end
5061

5162
def secondary_classes
5263
[
53-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground hover:bg-opacity-80",
54-
size_classes
64+
BASE_CLASSES,
65+
size_classes,
66+
"bg-secondary text-secondary-foreground",
67+
"hover:bg-opacity-80"
5568
]
5669
end
5770

5871
def destructive_classes
5972
[
60-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
61-
size_classes
73+
BASE_CLASSES,
74+
size_classes,
75+
"bg-destructive text-destructive-foreground shadow-sm",
76+
"hover:bg-destructive/90"
6277
]
6378
end
6479

6580
def outline_classes
6681
[
67-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
68-
size_classes
82+
BASE_CLASSES,
83+
size_classes,
84+
"border border-input bg-background shadow-sm",
85+
"hover:bg-accent hover:text-accent-foreground"
6986
]
7087
end
7188

7289
def ghost_classes
7390
[
74-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground",
75-
size_classes
91+
BASE_CLASSES,
92+
size_classes,
93+
"hover:bg-accent hover:text-accent-foreground"
7694
]
7795
end
7896

@@ -88,10 +106,7 @@ def default_classes
88106
end
89107

90108
def default_attrs
91-
{
92-
type: @type,
93-
class: default_classes
94-
}
109+
{type: @type, class: default_classes}
95110
end
96111
end
97112
end

app/views/docs/button.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,18 @@ def view_template
5151
RUBY
5252
end
5353

54+
render Docs::VisualCodeExample.new(title: "Disabled", context: self) do
55+
<<~RUBY
56+
Button(disabled: true) { "Disabled" }
57+
RUBY
58+
end
59+
60+
render Docs::VisualCodeExample.new(title: "Aria Disabled", context: self) do
61+
<<~RUBY
62+
Button(aria: {disabled: "true"}) { "Aria Disabled" }
63+
RUBY
64+
end
65+
5466
render Docs::VisualCodeExample.new(title: "Icon", context: self) do
5567
<<~RUBY
5668
Button(variant: :outline, icon: true) do

0 commit comments

Comments
 (0)