UNPKG

@react-form-fields/native-base

Version:

Native Base Form Fields

40 lines 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var useConfigContext_1 = require("@react-form-fields/core/hooks/useConfigContext"); var native_base_1 = require("native-base"); var React = require("react"); var react_native_1 = require("react-native"); var ErrorMessage_1 = require("./ErrorMessage"); var ThemeProvider_1 = require("./ThemeProvider"); var Wrapper = React.memo(function (props) { var config = useConfigContext_1.default(); var loadingStyle = React.useMemo(function () { return [styles.spinner, config.loadingStyle]; }, [config.loadingStyle]); var children = props._onPress ? (React.createElement(react_native_1.TouchableOpacity, { style: styles.touchable, onPress: props._onPress }, React.createElement(react_native_1.View, { pointerEvents: 'none' }, props.children))) : (props.children); return (React.createElement(react_native_1.View, { style: props.marginBottom ? styles.margin : null }, React.createElement(ThemeProvider_1.default, null, React.createElement(native_base_1.Item, tslib_1.__assign({ disabled: props._disabled }, (config.itemProps || {}), (props.ItemProps || {}), { error: props.showError && !props.isValid }), !!props.leftIcon && (React.createElement(native_base_1.Icon, tslib_1.__assign({}, (config.iconProps || {}), { name: props.leftIcon, onPress: props.leftIconAction }))), !!props.label && (React.createElement(native_base_1.Label, tslib_1.__assign({}, (config.labelProps || {}), (props.LabelProps || {}), { onPress: props._onLabelPress }), props.label)), children, !!props.rightIcon && !props.loading && (React.createElement(native_base_1.Icon, tslib_1.__assign({}, (config.iconProps || {}), { name: props.rightIcon, onPress: props.rightIconAction }))), !!props.loading && React.createElement(native_base_1.Spinner, tslib_1.__assign({ size: 'small', style: loadingStyle }, (config.loadingProps || {})))), React.createElement(ErrorMessage_1.default, { isValid: props.isValid, showError: props.hideErrorMessage ? false : props.showError, helperText: props.helperText, errorMessage: props.hideErrorMessage ? null : props.errorMessage })))); }); var styles = react_native_1.StyleSheet.create({ margin: { marginBottom: 20 }, spinner: { height: 23, width: 23 }, touchable: { flex: 1 } }); exports.default = Wrapper; //# sourceMappingURL=Wrapper.js.map