Skip to content

Keybind Dialog ​

This component wraps the KeybindRecorder component, captures focus, and allows the user to cancel (and thus close) the dialog, and to confirm their input and continue the user experience.

Example ​

Code Snippet
tsx
import React from "react";
import ReactDOM from "react-dom";
import { FluentProvider, type Theme, webLightTheme, webDarkTheme } from "@fluentui/react-components";
import { KeySequence, KeybindDialog } from "react-fluent-keybinds";

const DarkMode: boolean = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
const theme: Theme = DarkMode ? webDarkTheme : webLightTheme;

const Title = "Example Dialog Component";
const Content = "This example dialog accepts a keybind, which is displayed below the triggering button once the keybind is saved."

const [ Sequence, SetSequence ] = useState([ ]);
const [ open, setOpen ] = useState(false);
const onSave = (NewSequence) =>
{
    SetSequence(NewSequence);
};

ReactDOM.render(
    <FluentProvider { ...{ theme } }>
        <Button onClick={ () => { setOpen(true) } }>
            Open Dialog
        </Button>
        <KeybindDialog { ...{
            Content,
            Sequence,
            Title,
            onSave,
            open,
            setOpen }
        }/>
    </FluentProvider>,
    document.getElementById("root"),
);

Table of contents ​

Type Aliases ​

Type Aliases ​

FKeybindDialogOpenData ​

Ƭ FKeybindDialogOpenData: DialogOpenChangeData & { Type: FKeybindOpenState }

Defined in ​

Component/KeybindDialog/KeybindDialog.Types.ts:15


FKeybindOpenState ​

Ƭ FKeybindOpenState: "Opened" | "Success" | "Canceled"

The trichotomy of the dialog's open/closed state.

Defined in ​

Component/KeybindDialog/KeybindDialog.Types.ts:23


PKeybindDialog ​

Ƭ PKeybindDialog: Pick<PKey, "BackgroundColor" | "CornerDirection" | "Color"> & PKeybindRecorder & { Content: string | ReactElement ; Title: string ; onCancel?: () => void ; onOpenChange?: (Event: DialogOpenChangeEvent, Data: FKeybindDialogOpenData) => void ; onSave?: (NewSequence: FDomKey[]) => void ; open: boolean ; setOpen?: (Old: boolean) => void }

Defined in ​

Component/KeybindDialog/KeybindDialog.Types.ts:31


SKeybindDialog ​

Ƭ SKeybindDialog: Omit<PKeybindDialog, "MaxLength" | "onOpenChange" | "setOpen"> & FFluentDialogOpenChangeEventHandler & { OnCancel: () => void ; OnSave: () => void ; SaveButtonRef: RefObject<HTMLButtonElement> } & FStyledState

Defined in ​

Component/KeybindDialog/KeybindDialog.Types.ts:68