about summary refs log tree commit diff
path: root/src/view/com/composer/text-input/TextInput.web.tsx
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-01-27 00:16:07 -0600
committerPaul Frazee <pfrazee@gmail.com>2023-01-27 00:16:07 -0600
commit99360f7bd90480b0c382014fa7d889aef8c433a4 (patch)
tree0e6d5f734097fcbc3a2c88e3ce43eed1f26eed69 /src/view/com/composer/text-input/TextInput.web.tsx
parent5961c268005eda9c37b26d48fe9f5ae2def9106e (diff)
downloadvoidsky-99360f7bd90480b0c382014fa7d889aef8c433a4.tar.zst
Implement basic web composer
Diffstat (limited to 'src/view/com/composer/text-input/TextInput.web.tsx')
-rw-r--r--src/view/com/composer/text-input/TextInput.web.tsx51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/view/com/composer/text-input/TextInput.web.tsx b/src/view/com/composer/text-input/TextInput.web.tsx
new file mode 100644
index 000000000..6960bf7ab
--- /dev/null
+++ b/src/view/com/composer/text-input/TextInput.web.tsx
@@ -0,0 +1,51 @@
+import React from 'react'
+import {
+  StyleProp,
+  StyleSheet,
+  TextInput as RNTextInput,
+  TextStyle,
+} from 'react-native'
+import {usePalette} from '../../lib/hooks/usePalette'
+import {addStyle} from '../../lib/addStyle'
+
+export type TextInputRef = RNTextInput
+
+interface TextInputProps {
+  testID: string
+  innerRef: React.Ref<TextInputRef>
+  placeholder: string
+  style: StyleProp<TextStyle>
+  onChangeText: (str: string) => void
+  onPaste: (err: string | undefined, uris: string[]) => void
+}
+
+export function TextInput({
+  testID,
+  innerRef,
+  placeholder,
+  style,
+  onChangeText,
+  children,
+}: React.PropsWithChildren<TextInputProps>) {
+  const pal = usePalette('default')
+  style = addStyle(style, styles.input)
+  return (
+    <RNTextInput
+      testID={testID}
+      ref={innerRef}
+      multiline
+      scrollEnabled
+      onChangeText={(str: string) => onChangeText(str)}
+      placeholder={placeholder}
+      placeholderTextColor={pal.colors.textLight}
+      style={style}>
+      {children}
+    </RNTextInput>
+  )
+}
+
+const styles = StyleSheet.create({
+  input: {
+    minHeight: 140,
+  },
+})