antd-mobile
Version:
基于 React 的移动设计规范实现
184 lines (147 loc) • 6.14 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
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 React = _interopRequireWildcard(_react);
var _rcSwipeout = require('rc-swipeout');
var _rcSwipeout2 = _interopRequireDefault(_rcSwipeout);
var _reactHammerjs = require('react-hammerjs');
var _reactHammerjs2 = _interopRequireDefault(_reactHammerjs);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _modal = require('../modal');
var _modal2 = _interopRequireDefault(_modal);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var SwipeAction = function (_React$Component) {
(0, _inherits3["default"])(SwipeAction, _React$Component);
function SwipeAction(props) {
(0, _classCallCheck3["default"])(this, SwipeAction);
var _this = (0, _possibleConstructorReturn3["default"])(this, _React$Component.call(this, props));
_this.onLongTap = function () {
var _this$props = _this.props;
var disabled = _this$props.disabled;
var onOpen = _this$props.onOpen;
if (disabled) {
return;
}
onOpen();
_this.setState({
showModal: true
});
};
_this.state = {
showModal: false
};
return _this;
}
SwipeAction.prototype.onClose = function onClose() {
this.props.onClose();
this.setState({
showModal: false
});
};
SwipeAction.prototype.renderAndroid = function renderAndroid() {
var _this2 = this;
var _props = this.props;
var children = _props.children;
var title = _props.title;
var autoClose = _props.autoClose;
var left = _props.left;
var right = _props.right;
var pressOption = {
recognizers: {
press: {
time: 500,
threshold: 50
}
}
};
var actions = [].concat((0, _toConsumableArray3["default"])(left), (0, _toConsumableArray3["default"])(right)).map(function (button) {
var orginPress = button.onPress || function () {};
return {
text: button.text,
style: button.style,
onPress: function onPress() {
orginPress();
if (autoClose) {
_this2.onClose();
}
}
};
});
return React.createElement(
'div',
null,
React.createElement(
_reactHammerjs2["default"],
{ onPress: this.onLongTap, options: pressOption },
children
),
this.state.showModal ? React.createElement(_modal2["default"], { animated: false, title: title, transparent: true, closable: false, maskClosable: true, footer: actions, visible: true }) : null
);
};
SwipeAction.prototype.render = function render() {
var _classNames;
var _props2 = this.props;
var className = _props2.className;
var prefixCls = _props2.prefixCls;
var left = _props2.left;
var right = _props2.right;
var autoClose = _props2.autoClose;
var disabled = _props2.disabled;
var onOpen = _props2.onOpen;
var onClose = _props2.onClose;
var children = _props2.children;
var isAndroid = !!navigator.userAgent.match(/Android/i);
var wrapClass = (0, _classnames2["default"])((_classNames = {}, (0, _defineProperty3["default"])(_classNames, '' + prefixCls, 1), (0, _defineProperty3["default"])(_classNames, className, !!className), _classNames));
return left.length || right.length ? React.createElement(
'div',
{ className: wrapClass },
isAndroid ? this.renderAndroid() : React.createElement(
_rcSwipeout2["default"],
{ prefixCls: prefixCls, left: left, right: right, autoClose: autoClose, disabled: disabled, onOpen: onOpen, onClose: onClose },
children
)
) : React.createElement(
'div',
{ className: wrapClass },
children
);
};
return SwipeAction;
}(React.Component);
SwipeAction.propTypes = {
prefixCls: _react.PropTypes.string,
autoClose: _react.PropTypes.bool,
disabled: _react.PropTypes.bool,
title: _react.PropTypes.string,
left: _react.PropTypes.arrayOf(_react.PropTypes.object),
right: _react.PropTypes.arrayOf(_react.PropTypes.object),
onOpen: _react.PropTypes.func,
onClose: _react.PropTypes.func,
children: _react.PropTypes.any
};
SwipeAction.defaultProps = {
prefixCls: 'am-swipe',
title: '请确认操作',
autoClose: false,
disabled: false,
left: [],
right: [],
onOpen: function onOpen() {},
onClose: function onClose() {}
};
exports["default"] = SwipeAction;
module.exports = exports['default'];