UNPKG

@ant-design/react-native

Version:

基于蚂蚁金服移动设计规范的 React Native 组件库

180 lines (148 loc) 6.99 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.PopoverItem = undefined; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactNative = require('react-native'); var _reactNativeModalPopover = require('react-native-modal-popover'); var _style = require('../style'); var _style2 = require('./style'); var _style3 = _interopRequireDefault(_style2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var PopoverItem = exports.PopoverItem = function (_React$PureComponent) { (0, _inherits3['default'])(PopoverItem, _React$PureComponent); function PopoverItem() { (0, _classCallCheck3['default'])(this, PopoverItem); return (0, _possibleConstructorReturn3['default'])(this, (PopoverItem.__proto__ || Object.getPrototypeOf(PopoverItem)).apply(this, arguments)); } (0, _createClass3['default'])(PopoverItem, [{ key: 'render', value: function render() { var _props = this.props, value = _props.value, disabled = _props.disabled, children = _props.children, onSelect = _props.onSelect, style = _props.style; return _react2['default'].createElement( _style.WithTheme, null, function (_, theme) { return _react2['default'].createElement( _reactNative.TouchableOpacity, { activeOpacity: 0.75, disabled: disabled, onPress: function onPress() { if (typeof onSelect === 'function') { onSelect(value); } }, style: [{ padding: theme.v_spacing_md }, style] }, children ); } ); } }]); return PopoverItem; }(_react2['default'].PureComponent); var Popover = function (_React$PureComponent2) { (0, _inherits3['default'])(Popover, _React$PureComponent2); function Popover() { (0, _classCallCheck3['default'])(this, Popover); var _this2 = (0, _possibleConstructorReturn3['default'])(this, (Popover.__proto__ || Object.getPrototypeOf(Popover)).apply(this, arguments)); _this2.onSelect = function (value, closePopover) { var onSelect = _this2.props.onSelect; if (onSelect) { onSelect(value); } closePopover(); }; _this2.renderOverlay = function (closePopover) { var _this2$props = _this2.props, overlay = _this2$props.overlay, renderOverlayComponent = _this2$props.renderOverlayComponent; var items = _react2['default'].Children.map(overlay, function (child) { if (!(0, _react.isValidElement)(child)) { return child; } return _react2['default'].cloneElement(child, { onSelect: function onSelect(v) { return _this2.onSelect(v, closePopover); } }); }); if (typeof renderOverlayComponent === 'function') { return renderOverlayComponent(items); } return _react2['default'].createElement( _reactNative.ScrollView, null, items ); }; return _this2; } (0, _createClass3['default'])(Popover, [{ key: 'render', value: function render() { var _this3 = this; var _props2 = this.props, children = _props2.children, disabled = _props2.disabled, triggerStyle = _props2.triggerStyle, styles = _props2.styles, placement = _props2.placement, duration = _props2.duration, easing = _props2.easing, useNativeDriver = _props2.useNativeDriver, onDismiss = _props2.onDismiss; return _react2['default'].createElement( _style.WithTheme, { themeStyles: _style3['default'], styles: styles }, function (s) { return _react2['default'].createElement( _reactNativeModalPopover.PopoverController, null, function (_ref) { var openPopover = _ref.openPopover, closePopover = _ref.closePopover, popoverVisible = _ref.popoverVisible, setPopoverAnchor = _ref.setPopoverAnchor, popoverAnchorRect = _ref.popoverAnchorRect; return _react2['default'].createElement( _reactNative.View, null, _react2['default'].createElement( _reactNative.TouchableOpacity, { ref: setPopoverAnchor, onPress: openPopover, style: triggerStyle, disabled: disabled, activeOpacity: 0.75 }, children ), _react2['default'].createElement( _reactNativeModalPopover.Popover, { contentStyle: s.content, arrowStyle: s.arrow, backgroundStyle: s.background, visible: popoverVisible, onClose: closePopover, fromRect: popoverAnchorRect, supportedOrientations: ['portrait', 'landscape'], placement: placement, duration: duration, easing: easing, useNativeDriver: useNativeDriver, onDismiss: onDismiss }, _this3.renderOverlay(closePopover) ) ); } ); } ); } }]); return Popover; }(_react2['default'].PureComponent); exports['default'] = Popover; Popover.defaultProps = { onSelect: function onSelect() {} }; Popover.Item = PopoverItem;