Skip to content

Commit f10d6c4

Browse files
committed
[Bug Fix] Honor close_button:true Region prop (was inert)
Region wrapper now carries data-close-button=hover|always plus a group/toaster anchor. Toast::Close opacity rule extended: group-data-[close-button=always]/toaster:opacity-100 — when consumer sets close_button: true on the Region, the X is always visible (better a11y for touch + cognitive accessibility). Default stays close_button: false (hover/focus reveal) to match shadcn sonner. Keyboard a11y unchanged: tab focuses item, focus shows button, Escape dismisses.
1 parent 12a5b9e commit f10d6c4

2 files changed

Lines changed: 3 additions & 2 deletions

File tree

gem/lib/ruby_ui/toast/toast_close.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def default_attrs
3333
slot: "close",
3434
action: "click->ruby-ui--toast#dismiss"
3535
},
36-
class: "absolute right-1 top-1 rounded-md p-1 text-foreground/60 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 focus:ring-ring group-hover/toast:opacity-100"
36+
class: "absolute right-1 top-1 rounded-md p-1 text-foreground/60 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 focus:ring-ring group-hover/toast:opacity-100 group-data-[close-button=always]/toaster:opacity-100"
3737
}
3838
end
3939
end

gem/lib/ruby_ui/toast/toast_region.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ def default_attrs
8282
aria_live: "polite",
8383
data: {
8484
controller: "ruby-ui--toaster",
85+
close_button: @close_button ? "always" : "hover",
8586
position: @position.to_s.tr("_", "-"),
8687
ruby_ui__toaster_position_value: @position.to_s.tr("_", "-"),
8788
ruby_ui__toaster_expand_value: @expand.to_s,
@@ -101,7 +102,7 @@ def default_attrs
101102

102103
def region_classes
103104
<<~CLASSES.tr("\n", " ").squeeze(" ").strip
104-
pointer-events-none fixed z-[100] p-4 sm:p-6
105+
group/toaster pointer-events-none fixed z-[100] p-4 sm:p-6
105106
data-[position=top-left]:top-0 data-[position=top-left]:left-0
106107
data-[position=top-center]:top-0 data-[position=top-center]:left-1/2 data-[position=top-center]:-translate-x-1/2
107108
data-[position=top-right]:top-0 data-[position=top-right]:right-0

0 commit comments

Comments
 (0)