@react-form-fields/native-base
Version:
Native Base Form Fields
49 lines • 2.57 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 useMemoOtherProps_1 = require("@react-form-fields/core/hooks/useMemoOtherProps");
var useValidation_1 = require("@react-form-fields/core/hooks/useValidation");
var native_base_1 = require("native-base");
var React = require("react");
var react_native_1 = require("react-native");
var useFieldFlow_1 = require("./hooks/useFieldFlow");
var ErrorMessage_1 = require("./shared/ErrorMessage");
var ThemeProvider_1 = require("./shared/ThemeProvider");
var FieldSwitch = React.memo(function (props) {
var onChange = props.onChange, helperText = props.helperText, label = props.label, marginBottom = props.marginBottom, value = props.value;
var config = useConfigContext_1.default();
var _a = useValidation_1.default(props), setDirty = _a.setDirty, showError = _a.showError, errorMessage = _a.errorMessage, isValid = _a.isValid;
var otherProps = useMemoOtherProps_1.default(props, 'checked', 'onChange', 'label', 'styleError', 'marginBottom');
useFieldFlow_1.default(props, React.useCallback(function () { }, []));
var onChangeHandler = React.useCallback(function (value) {
config.validationOn === 'onChange' && setDirty(true);
onChange(value);
}, [onChange, setDirty, config.validationOn]);
return (React.createElement(ThemeProvider_1.default, null,
React.createElement(react_native_1.View, { style: marginBottom ? styles.margin : null },
React.createElement(react_native_1.View, { style: styles.row },
React.createElement(react_native_1.View, null, typeof label === 'string' ? React.createElement(react_native_1.Text, { style: styles.text }, label) : label),
React.createElement(native_base_1.Switch, tslib_1.__assign({}, otherProps, { value: value, onValueChange: onChangeHandler }))),
React.createElement(ErrorMessage_1.default, { isValid: isValid, showError: showError, helperText: helperText, errorMessage: errorMessage }))));
});
var styles = react_native_1.StyleSheet.create({
margin: {
marginBottom: 20
},
row: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'space-between',
paddingVertical: 8
},
text: {
fontSize: 16
},
textContainer: {
flex: 1
}
});
FieldSwitch.displayName = 'FieldSwitch';
exports.default = FieldSwitch;
//# sourceMappingURL=Switch.js.map