midi-player-demo / src /components /PromptDialog.tsx
Yann
test
f23825d
raw
history blame
1.33 kB
import { FC, useContext, useState } from "react"
import { PromptContext, PromptProps } from "../main/hooks/usePrompt"
import { Button } from "./Button"
import { Dialog, DialogActions, DialogContent, DialogTitle } from "./Dialog"
import { TextField } from "./TextField"
export const PromptDialog: FC<PromptProps> = (props) => {
const [input, setInput] = useState(props.initialText)
const { setPrompt } = useContext(PromptContext)
const close = () => {
setPrompt(null)
}
const onCancel = () => {
props.callback(null)
close()
}
const onClickOK = () => {
props.callback(input ?? null)
close()
}
return (
<Dialog open={true} onOpenChange={onCancel} style={{ width: "20rem" }}>
<DialogTitle>{props.title}</DialogTitle>
<DialogContent>
<TextField
type="text"
value={input}
onChange={(e) => setInput(e.target.value)}
autoFocus={true}
onKeyPress={(e) => {
if (e.key === "Enter") {
onClickOK()
}
}}
style={{ width: "100%" }}
/>
</DialogContent>
<DialogActions>
<Button onClick={onClickOK}>{props.okText ?? "OK"}</Button>
<Button onClick={onCancel}>{props.cancelText ?? "Cancel"}</Button>
</DialogActions>
</Dialog>
)
}