summaryrefslogtreecommitdiff
path: root/extension/react-app/src/components/InputAndButton.tsx
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-06-05 12:09:13 -0400
committerNate Sesti <sestinj@gmail.com>2023-06-05 12:09:13 -0400
commit4c9ed33c14df9e37d7d11faafb4182a3534141ca (patch)
treed313a6884d419fefadb78c120088fe84b54fa50f /extension/react-app/src/components/InputAndButton.tsx
parentd1ccdb83c546710f0438798bf67168be2cf65ca6 (diff)
downloadsncontinue-4c9ed33c14df9e37d7d11faafb4182a3534141ca.tar.gz
sncontinue-4c9ed33c14df9e37d7d11faafb4182a3534141ca.tar.bz2
sncontinue-4c9ed33c14df9e37d7d11faafb4182a3534141ca.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.tsx77
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;