UNPKG

@fruits-chain/react-native-xiaoshu

Version:
117 lines (110 loc) • 3.56 kB
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } import React, { useState, useRef, useEffect, memo } from 'react'; import { View } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { callInterceptor } from '../helpers'; import { usePersistFn } from '../hooks'; import { varCreator as varCreatorPicker } from '../picker/style'; import Popup from '../popup'; import Theme from '../theme'; import DatePickerRangeView from './date-picker-range-view'; const DatePickerRangeMethod = _ref => { let { title, onCancel, onPressOverlay, beforeClose, // DatePickerRangeView mode, defaultValue, confirmButtonText, resetButtonText, placeholder, onConfirm, max, min, renderLabel, ...restProps } = _ref; const TOKENS = Theme.useThemeTokens(); const CV_PICKER = Theme.createVar(TOKENS, varCreatorPicker); const insets = useSafeAreaInsets(); const [visible, setVisible] = useState(false); const [loading, setLoading] = useState(false); const Values = useRef(defaultValue && defaultValue.length === 2 ? defaultValue : [null, null]); useEffect(() => { setVisible(true); }, []); const onChangeRangeView = usePersistFn(d => { Values.current = d; }); const doAction = usePersistFn(action => { setLoading(true); callInterceptor(beforeClose, { args: [action, Values.current], done: () => { switch (action) { case 'cancel': onCancel === null || onCancel === void 0 ? void 0 : onCancel(Values.current); break; case 'confirm': onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(Values.current); break; case 'overlay': onPressOverlay === null || onPressOverlay === void 0 ? void 0 : onPressOverlay(Values.current); break; default: break; } setLoading(false); setVisible(false); }, canceled: () => { setLoading(false); } }); }); const onPressPopupOverlay = usePersistFn(() => { doAction('overlay'); }); const onPressClose = usePersistFn(() => { doAction('cancel'); }); const onPressConfirm = usePersistFn(() => { doAction('confirm'); }); const onRequestClose = usePersistFn(() => { doAction('overlay'); return true; }); const rangeProps = { mode, defaultValue: Values.current, confirmButtonText, resetButtonText, placeholder, onConfirm: onPressConfirm, max, min, renderLabel }; return /*#__PURE__*/React.createElement(Popup, _extends({}, restProps, { onRequestClose: onRequestClose, visible: visible, onPressOverlay: onPressPopupOverlay, position: "bottom", round: true }), /*#__PURE__*/React.createElement(Popup.Header, { title: title, onClose: onPressClose }), /*#__PURE__*/React.createElement(DatePickerRangeView, _extends({}, rangeProps, { onChange: onChangeRangeView, loading: loading })), /*#__PURE__*/React.createElement(View, { style: { height: insets.bottom + CV_PICKER.picker_bottom_gap } })); }; export default /*#__PURE__*/memo(DatePickerRangeMethod); //# sourceMappingURL=date-picker-range-method.js.map