From 171707b3cee620e6ae21ad33f65bbeee9a82be11 Mon Sep 17 00:00:00 2001
From: Kashargul <144968721+Kashargul@users.noreply.github.com>
Date: Mon, 23 Sep 2024 01:14:03 +0200
Subject: [PATCH 1/2] buttons no longer steal focus
---
tgui/packages/tgui/components/Button.tsx | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/tgui/packages/tgui/components/Button.tsx b/tgui/packages/tgui/components/Button.tsx
index 72650063125..7c26e5e068a 100644
--- a/tgui/packages/tgui/components/Button.tsx
+++ b/tgui/packages/tgui/components/Button.tsx
@@ -91,8 +91,20 @@ export const Button = (props: Props) => {
const toDisplay: ReactNode = content || children;
+ const ref = useRef(null);
+
+ function handleButtonClick(event) {
+ if (!disabled && onClick) {
+ onClick(event);
+ if (ref?.current) {
+ (ref.current as HTMLElement).blur();
+ }
+ }
+ }
+
let buttonContent = (
{
])}
tabIndex={!disabled ? 0 : undefined}
onClick={(event) => {
- if (!disabled && onClick) {
- onClick(event);
- }
+ handleButtonClick(event);
}}
onKeyDown={(event) => {
if (!captureKeys) {
@@ -126,9 +136,7 @@ export const Button = (props: Props) => {
// Simulate a click when pressing space or enter.
if (event.key === KEY.Space || event.key === KEY.Enter) {
event.preventDefault();
- if (!disabled && onClick) {
- onClick(event);
- }
+ handleButtonClick(event);
return;
}
From a8266252f878654e12456f3ef827699e88953114 Mon Sep 17 00:00:00 2001
From: Kashargul <144968721+Kashargul@users.noreply.github.com>
Date: Mon, 23 Sep 2024 08:02:14 +0200
Subject: [PATCH 2/2] maybe better keep for keyboard use
---
tgui/packages/tgui/components/Button.tsx | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/tgui/packages/tgui/components/Button.tsx b/tgui/packages/tgui/components/Button.tsx
index 7c26e5e068a..cb7f3b0af38 100644
--- a/tgui/packages/tgui/components/Button.tsx
+++ b/tgui/packages/tgui/components/Button.tsx
@@ -136,7 +136,9 @@ export const Button = (props: Props) => {
// Simulate a click when pressing space or enter.
if (event.key === KEY.Space || event.key === KEY.Enter) {
event.preventDefault();
- handleButtonClick(event);
+ if (!disabled && onClick) {
+ onClick(event);
+ }
return;
}