@react-form-fields/native-base
Version:
Native Base Form Fields
49 lines • 3.19 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 React = require("react");
var react_native_modal_datetime_picker_1 = require("react-native-modal-datetime-picker");
var dateFormat_1 = require("./helpers/dateFormat");
var useFieldFlow_1 = require("./hooks/useFieldFlow");
var Text_1 = require("./Text");
var nullCallback = function () { };
var FieldDatepicker = React.memo(function (props) {
var value = props.value, onChange = props.onChange, mode = props.mode, format = props.format, otherProps = tslib_1.__rest(props, ["value", "onChange", "mode", "format"]);
var _a = React.useState(false), showPicker = _a[0], setShowPicker = _a[1];
var fieldTextRef = React.useRef();
var datePickerProps = useMemoOtherProps_1.default(props, 'value', 'onChange');
var config = useConfigContext_1.default();
config.date = config.date || {};
var onFocusFlow = React.useCallback(function () { }, []);
useFieldFlow_1.default(props, onFocusFlow);
var handlePress = React.useCallback(function () {
if (props.editable === false) {
return;
}
setShowPicker(true);
}, [props.editable]);
var handleClear = React.useCallback(function () { return onChange(null); }, [onChange]);
var handleConfirm = React.useCallback(function (value) {
setShowPicker(false);
config.validationOn === 'onChange' && fieldTextRef.current.setDirty(true);
onChange(value);
}, [onChange, setShowPicker, fieldTextRef, config.validationOn]);
var onCancelHandler = React.useCallback(function () { return setShowPicker(false); }, [setShowPicker]);
var rightIcon = React.useMemo(function () {
if (props.rightIcon) {
return props.rightIcon;
}
if (props.notClearable) {
return null;
}
return config.date.clearIcon || 'md-close';
}, [config.date.clearIcon, props.notClearable, props.rightIcon]);
return (React.createElement(React.Fragment, null,
React.createElement(Text_1.default, tslib_1.__assign({}, otherProps, { ref: fieldTextRef, value: value ? value.toISOString() : null, displayValue: dateFormat_1.dateFormat(value, mode || 'date', config, format), tabIndex: null, flowIndex: null, onChange: nullCallback, editable: false, rightIcon: value ? rightIcon : null, rightIconAction: props.rightIconAction || handleClear, _onLabelPress: handlePress, _onPress: handlePress, _disabled: props.editable === false })),
React.createElement(react_native_modal_datetime_picker_1.default, tslib_1.__assign({ headerTextIOS: props.label, confirmTextIOS: config.date.labels.ok, cancelTextIOS: config.date.labels.cancel, locale: config.date.pickerLocale }, datePickerProps, { mode: mode, date: value || new Date(), isVisible: showPicker, onConfirm: handleConfirm, onCancel: onCancelHandler }))));
});
FieldDatepicker.displayName = 'FieldDatepicker';
exports.default = FieldDatepicker;
//# sourceMappingURL=Datepicker.js.map