Skip to content

Commit ce55df1

Browse files
authored
fix(toggleswitch): disable + checked state and deprecated html event replacement (#987)
* docs: add disabled+active toggleswitch example * fix(toggleswitch): fix state and replace onkeypress with onkeyup This commit fixes the state for disable + enabled ToggleSwitch and also replaces the deprecated onKeyPress with onKeyDown fix #986 * fix(toggleswitch): remove unused event * refactor(toggleswitch): remove dead code
1 parent 2a6c2e5 commit ce55df1

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

app/docs/components/forms/forms.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,7 @@ Use the `<ToggleSwitch>` component to ask users to enable or disable an option s
456456
<ToggleSwitch checked={props.switch1} label="Toggle me" onChange={props.setSwitch1} />
457457
<ToggleSwitch checked={props.switch2} label="Toggle me (checked)" onChange={props.setSwitch2} />
458458
<ToggleSwitch checked={false} disabled label="Toggle me (disabled)" onChange={() => undefined} />
459+
<ToggleSwitch checked={true} disabled label="Toggle me (disabled)" onChange={() => undefined} />
459460
<ToggleSwitch checked={props.switch3} onChange={props.setSwitch3} />
460461
</div>
461462
</CodePreview>

src/components/ToggleSwitch/ToggleSwitch.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ComponentProps, FC, KeyboardEvent, MouseEvent } from 'react';
1+
import type { ComponentProps, FC, KeyboardEvent } from 'react';
22
import { useId } from 'react';
33
import { twMerge } from 'tailwind-merge';
44
import type { DeepPartial, FlowbiteBoolean, FlowbiteColors } from '../../';
@@ -47,13 +47,14 @@ export const ToggleSwitch: FC<ToggleSwitchProps> = ({
4747

4848
const toggle = (): void => onChange(!checked);
4949

50-
const handleClick = (event: MouseEvent<HTMLButtonElement>): void => {
51-
event.preventDefault();
50+
const handleClick = (): void => {
5251
toggle();
5352
};
5453

55-
const handleKeyPress = (event: KeyboardEvent<HTMLButtonElement>): void => {
56-
event.preventDefault();
54+
const handleOnKeyDown = (event: KeyboardEvent<HTMLButtonElement>): void => {
55+
if (event.code == 'Enter') {
56+
event.preventDefault();
57+
}
5758
};
5859

5960
return (
@@ -67,7 +68,7 @@ export const ToggleSwitch: FC<ToggleSwitchProps> = ({
6768
disabled={disabled}
6869
id={`${id}-flowbite-toggleswitch`}
6970
onClick={handleClick}
70-
onKeyPress={handleKeyPress}
71+
onKeyDown={handleOnKeyDown}
7172
role="switch"
7273
tabIndex={0}
7374
type="button"
@@ -79,7 +80,7 @@ export const ToggleSwitch: FC<ToggleSwitchProps> = ({
7980
className={twMerge(
8081
theme.toggle.base,
8182
theme.toggle.checked[checked ? 'on' : 'off'],
82-
!disabled && checked && theme.toggle.checked.color[color],
83+
checked && theme.toggle.checked.color[color],
8384
)}
8485
/>
8586
{label?.length ? (

0 commit comments

Comments
 (0)