From 6f17149016400d8a298aef396c0dbc1289f9ef4c Mon Sep 17 00:00:00 2001 From: Artur Bien Date: Mon, 28 Dec 2020 21:35:23 +0100 Subject: [PATCH] feat(textinput): add flat variant --- example/src/examples/TextInputExample.tsx | 124 ++++++++++++++++------ src/TextInput/TextInput.tsx | 18 +++- 2 files changed, 105 insertions(+), 37 deletions(-) diff --git a/example/src/examples/TextInputExample.tsx b/example/src/examples/TextInputExample.tsx index f857ee9..0e00bdf 100644 --- a/example/src/examples/TextInputExample.tsx +++ b/example/src/examples/TextInputExample.tsx @@ -1,42 +1,100 @@ import React from 'react'; -import { StyleSheet } from 'react-native'; -import { TextInput, Panel, Fieldset } from 'react95-native'; +import { View, StyleSheet } from 'react-native'; +import { TextInput, Panel, Fieldset, Cutout, ScrollView } from 'react95-native'; const loremIpsum = 'But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself'; const TextInputExample = () => { return ( -
- - -
-
- - -
-
- - -
+ + + +
+ + +
+
+ + +
+
+ + +
+ + +
+ + +
+
+ + +
+
+ + +
+
+
+
+
); }; @@ -44,7 +102,7 @@ const TextInputExample = () => { const styles = StyleSheet.create({ container: { flex: 1, - padding: 16, + padding: 8, }, fieldset: { padding: 20, diff --git a/src/TextInput/TextInput.tsx b/src/TextInput/TextInput.tsx index 8eb88f0..31f9c23 100644 --- a/src/TextInput/TextInput.tsx +++ b/src/TextInput/TextInput.tsx @@ -16,6 +16,7 @@ type Props = React.ComponentPropsWithRef & { defaultValue?: string; style?: StyleProp; disabled?: boolean; + variant?: 'default' | 'flat'; }; // TODO: implement scrollbars in TextInput @@ -23,6 +24,7 @@ type Props = React.ComponentPropsWithRef & { const TextInput = ({ disabled, value, + variant = 'default', defaultValue, style = {}, ...rest @@ -30,14 +32,23 @@ const TextInput = ({ const theme = useContext(ThemeContext); const hasValue = !!(value || defaultValue); + const isFlat = variant === 'flat'; + + const getBackgroundColor = () => { + if (isFlat) { + return disabled ? theme.flatLight : 'transparent'; + } + return disabled ? theme.material : theme.canvas; + }; + return ( - - + +