UNPKG

@fruits-chain/react-native-xiaoshu

Version:
60 lines (57 loc) • 2.54 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 omit from 'lodash/omit'; import pick from 'lodash/pick'; import React, { memo } from 'react'; import { Text, View } from 'react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import Locale from '../locale'; import PickerView from '../picker-view'; import Popup from '../popup'; import Theme from '../theme'; import { varCreator, styleCreator } from './style'; const PICKER_VIEW_PROPS_KEYS = ['value', 'defaultValue', 'columns', 'loading', 'itemHeight', 'visibleItemCount', 'onChange']; const Picker = _ref => { let { visible, title, confirmButtonText, cancelButtonText, toolbarPosition = 'top', showToolbar = true, onCancel, onConfirm, ...restProps } = _ref; const locale = Locale.useLocale().Picker; const TOKENS = Theme.useThemeTokens(); const CV = Theme.createVar(TOKENS, varCreator); const STYLES = Theme.createStyle(CV, styleCreator); const insets = useSafeAreaInsets(); const headerTitleJSX = /*#__PURE__*/React.createElement(Popup.Header, { showClose: false, title: title, leftExtra: /*#__PURE__*/React.createElement(Text, { suppressHighlighting: true, style: STYLES.cancel_text, onPress: restProps.loading ? undefined : onCancel }, cancelButtonText || locale.cancelButtonText), rightExtra: /*#__PURE__*/React.createElement(Text, { suppressHighlighting: true, style: STYLES.confirm_text, onPress: restProps.loading ? undefined : onConfirm }, confirmButtonText || locale.confirmButtonText) }); const pickerViewProps = pick(restProps, PICKER_VIEW_PROPS_KEYS); const popupProps = omit(restProps, PICKER_VIEW_PROPS_KEYS); return /*#__PURE__*/React.createElement(Popup, _extends({}, popupProps, { visible: visible, position: "bottom", round: true }), showToolbar && toolbarPosition === 'top' ? headerTitleJSX : null, /*#__PURE__*/React.createElement(PickerView, pickerViewProps), showToolbar && toolbarPosition === 'bottom' ? headerTitleJSX : null, /*#__PURE__*/React.createElement(View, { style: { height: insets.bottom + CV.picker_bottom_gap } })); }; export default /*#__PURE__*/memo(Picker); //# sourceMappingURL=picker.js.map