diff options
author | Nate Sesti <sestinj@gmail.com> | 2023-06-05 12:09:13 -0400 |
---|---|---|
committer | Nate Sesti <sestinj@gmail.com> | 2023-06-05 12:09:13 -0400 |
commit | 9613750fd1ff48343e8d80ce5154733a4dbc55d7 (patch) | |
tree | 3bf81bdabf4a5232d99266a1e1a06ffbfc60a4d6 /extension/react-app/src/components/InputAndButton.tsx | |
parent | 99d0cf12dcd1481e719e78483fc7df080dc95954 (diff) | |
download | sncontinue-9613750fd1ff48343e8d80ce5154733a4dbc55d7.tar.gz sncontinue-9613750fd1ff48343e8d80ce5154733a4dbc55d7.tar.bz2 sncontinue-9613750fd1ff48343e8d80ce5154733a4dbc55d7.zip |
Enter button on user input
Diffstat (limited to 'extension/react-app/src/components/InputAndButton.tsx')
-rw-r--r-- | extension/react-app/src/components/InputAndButton.tsx | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/extension/react-app/src/components/InputAndButton.tsx b/extension/react-app/src/components/InputAndButton.tsx new file mode 100644 index 00000000..0a8592f2 --- /dev/null +++ b/extension/react-app/src/components/InputAndButton.tsx @@ -0,0 +1,77 @@ +import React, { useRef } from "react"; +import styled from "styled-components"; +import { vscBackground } from "."; + +interface InputAndButtonProps { + onUserInput: (input: string) => void; +} + +const TopDiv = styled.div` + display: grid; + grid-template-columns: 3fr 1fr; + grid-gap: 0; +`; + +const Input = styled.input` + padding: 0.5rem; + border: 1px solid white; + background-color: ${vscBackground}; + color: white; + border-radius: 4px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + outline: none; +`; + +const Button = styled.button` + padding: 0.5rem; + border: 1px solid white; + background-color: ${vscBackground}; + color: white; + border-radius: 4px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-left: 0; + cursor: pointer; + + &:hover { + background-color: white; + color: black; + } +`; + +function InputAndButton(props: InputAndButtonProps) { + const userInputRef = useRef<HTMLInputElement>(null); + + return ( + <TopDiv className="grid grid-cols-2 space-x-0"> + <Input + ref={userInputRef} + onKeyDown={(e) => { + if (e.key === "Enter") { + props.onUserInput(e.currentTarget.value); + } + }} + type="text" + onSubmit={(ev) => { + props.onUserInput(ev.currentTarget.value); + }} + onClick={(e) => { + e.stopPropagation(); + }} + /> + <Button + onClick={(e) => { + if (userInputRef.current) { + props.onUserInput(userInputRef.current.value); + } + e.stopPropagation(); + }} + > + Enter + </Button> + </TopDiv> + ); +} + +export default InputAndButton; |