UNPKG

@fruits-chain/react-native-xiaoshu

Version:
74 lines (68 loc) 2.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 isArray from 'lodash/isArray'; import isUndefined from 'lodash/isUndefined'; import React, { memo } from 'react'; import { Keyboard } from 'react-native'; import { varCreator as varCreatorButton } from '../button/style'; import { usePersistFn } from '../hooks'; import Locale from '../locale'; import Selector from '../selector'; import TextInputClear from '../text-input/text-input-clear'; import Theme from '../theme'; import FieldText from './field-text'; /** * 输入框 选择输入 */ const FieldSelector = _ref => { let { value, options, multiple, onChange, optionsLoading = false, innerStyle, editable = true, clearable = false, selectorTitle, isLink = true, ...restProps } = _ref; const locale = Locale.useLocale().FieldSelector; const TOKENS = Theme.useThemeTokens(); const CV_BUTTON = Theme.createVar(TOKENS, varCreatorButton); const onPressCell = usePersistFn(() => { Keyboard.dismiss(); if (editable) { Selector({ title: selectorTitle || locale.selectorTitle, multiple, options, value, onChange }).catch(() => {}); } }); const hasValue = multiple ? isArray(value) && value.length > 0 : !isUndefined(value); const value2text = hasValue ? (multiple ? value : [value]).map(o => { const index = options.findIndex(ops => ops.value === o); if (index >= 0) { return options[index].label; } return null; }).filter(Boolean).join('、') : undefined; return /*#__PURE__*/React.createElement(FieldText, _extends({}, restProps, { innerStyle: optionsLoading ? [innerStyle, { opacity: CV_BUTTON.button_active_opacity }] : innerStyle, onPress: optionsLoading ? undefined : onPressCell, value: value2text, isLink: hasValue && clearable ? false : isLink, valueExtra: hasValue && clearable ? /*#__PURE__*/React.createElement(React.Fragment, null, restProps.valueExtra, /*#__PURE__*/React.createElement(TextInputClear, { onPress: () => { onChange(multiple ? [] : undefined, multiple ? [] : undefined); } })) : restProps.valueExtra })); }; export default /*#__PURE__*/memo(FieldSelector); //# sourceMappingURL=field-selector.js.map