import * as React from 'react'; import { useState, useRef } from 'react'; import { connect } from "react-redux"; import { FormControl, Stack, Input, Icon } from 'native-base'; import Theme from '../../components/theme.style'; const styles = { activeText: {fontFamily: 'Arial', fontSize: 12, color: Theme.colors.accent}, default: {fontFamily: 'Arial', paddingBottom: 0, fontSize: 14, color: Theme.colors.gray}, input: {fontFamily: 'Arial', fontSize: 15}, placeholder: {fontFamily: 'Arial', fontSize: 14, color: Theme.colors.lightGray} } CustomForm = (props) => { let labelRefs = [useRef()] const [focus, setfocus] = useState(false) const [activeIndex, setactiveindex] = useState(0) const renderItem = (prop, index) => { return ( <> labelRefs[index - 1] = r} style={activeIndex == index && focus ? styles.activeText : styles.default}> {prop.name} { setactiveindex(index); setfocus(true) prop.onFocus ? prop.onFocus() : null }} maxLength={prop.maxLength || 255} disabled={prop.disabled} onTouchStart={() => prop.onClick ? prop.onClick() : null} onChangeText={(val) => prop.onChangeText ? prop.onChangeText(val) : null} onBlur={(e) => { setactiveindex(0); setfocus(false); prop.onBlur ? prop.onBlur() : null }} style={[styles.input, { color: props.app_theme?.theme.colors.text }]} /> {prop.icon ? : null} ) } const renderItems = () => { return props.items.map((item, i) => { return renderItem(item, i) }) } return ( {renderItems()} ) } const mapStateToProps = (state) => { return { app_theme: state.appThemeReducer.theme } } export default connect(mapStateToProps, null)(CustomForm);