@react-form-fields/native-base
Version:
Native Base Form Fields
40 lines • 2.55 kB
JavaScript
"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