antd-mobile
Version:
基于 React 的移动设计规范实现
216 lines (184 loc) • 8.08 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
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 _reactNative = require('react-native');
var _index = require('./style/index');
var _index2 = _interopRequireDefault(_index);
var _rnTopview = require('rn-topview');
var _rnTopview2 = _interopRequireDefault(_rnTopview);
var _Modal = require('rc-dialog/lib/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 }; }
function noop(a) {}
var ActionSheet = void 0;
var ActionSheetAndroid = function (_React$Component) {
(0, _inherits3["default"])(ActionSheetAndroid, _React$Component);
function ActionSheetAndroid(props) {
(0, _classCallCheck3["default"])(this, ActionSheetAndroid);
var _this = (0, _possibleConstructorReturn3["default"])(this, _React$Component.call(this, props));
_this.onClose = function () {
_this.setState({
visible: false
});
};
_this.state = {
visible: true
};
ActionSheet.instances[props.name] = _this;
return _this;
}
ActionSheetAndroid.prototype.componentWillMount = function componentWillMount() {
var _this2 = this;
_reactNative.DeviceEventEmitter.addListener('antActionSheetHide', function () {
_this2.setState({
visible: false
});
});
};
ActionSheetAndroid.prototype.componentWillUnmount = function componentWillUnmount() {
_reactNative.DeviceEventEmitter.removeAllListeners('antActionSheetHide');
};
ActionSheetAndroid.prototype.onAnimationEnd = function onAnimationEnd(visible) {
if (!visible) {
_rnTopview2["default"].remove();
}
};
ActionSheetAndroid.prototype.render = function render() {
return React.createElement(
_Modal2["default"],
{ animationDuration: 200, animateAppear: true, onClose: this.onClose, visible: this.state.visible, onAnimationEnd: this.onAnimationEnd, style: _index2["default"].content },
this.props.children
);
};
return ActionSheetAndroid;
}(React.Component);
ActionSheetAndroid.defaultProps = {
maskClosable: true
};
if (_reactNative.Platform.OS === 'ios') {
ActionSheet = _reactNative.ActionSheetIOS;
} else {
ActionSheet = {
instances: {},
showActionSheetWithOptions: function showActionSheetWithOptions(config) {
var callback = arguments.length <= 1 || arguments[1] === undefined ? noop : arguments[1];
var title = config.title;
var message = config.message;
var options = config.options;
var destructiveButtonIndex = config.destructiveButtonIndex;
var cancelButtonIndex = config.cancelButtonIndex;
var titleMsg = [title ? React.createElement(
_reactNative.View,
{ style: _index2["default"].title, key: '0' },
React.createElement(
_reactNative.Text,
{ style: _index2["default"].titleText },
title
)
) : null, message ? React.createElement(
_reactNative.View,
{ style: _index2["default"].message, key: '1' },
React.createElement(
_reactNative.Text,
null,
message
)
) : null];
var cb = function cb(index) {
_reactNative.DeviceEventEmitter.emit('antActionSheetHide');
callback(index);
};
var children = React.createElement(
_reactNative.View,
null,
titleMsg,
React.createElement(
_reactNative.View,
null,
options.map(function (item, index) {
return React.createElement(
_reactNative.View,
{ key: index, style: [cancelButtonIndex === index ? _index2["default"].cancelBtn : null] },
React.createElement(
_reactNative.TouchableHighlight,
{ style: [_index2["default"].btn], underlayColor: _index.vars.fill_tap, onPress: function onPress() {
return cb(index);
} },
React.createElement(
_reactNative.Text,
{ style: [destructiveButtonIndex === index ? _index2["default"].destructiveBtn : null] },
item
)
),
cancelButtonIndex === index ? React.createElement(_reactNative.View, { style: _index2["default"].cancelBtnMask }) : null
);
})
)
);
_rnTopview2["default"].set(React.createElement(
ActionSheetAndroid,
{ name: config.androidActionSheetName || 'defaultActionSheet' },
children
));
},
showShareActionSheetWithOptions: function showShareActionSheetWithOptions(config) {
var url = config.url;
var message = config.message;
var excludedActivityTypes = config.excludedActivityTypes;
var titleMsg = [url ? React.createElement(
_reactNative.View,
{ style: _index2["default"].title, key: '0' },
React.createElement(
_reactNative.Text,
null,
url
)
) : null, message ? React.createElement(
_reactNative.View,
{ style: _index2["default"].message, key: '1' },
React.createElement(
_reactNative.Text,
null,
message
)
) : null];
var children = React.createElement(
_reactNative.View,
null,
titleMsg,
React.createElement(
_reactNative.View,
null,
excludedActivityTypes.map(function (item, index) {
return React.createElement(
_reactNative.View,
{ key: index },
item
);
})
)
);
_rnTopview2["default"].set(React.createElement(
ActionSheetAndroid,
{ name: config.androidActionSheetName || 'defaultShareActionSheet' },
children
));
},
close: function close(androidActionSheetName) {
// ActionSheet.instances will cause memory leak?
ActionSheet.instances[androidActionSheetName].animatedHide();
}
};
}
exports["default"] = ActionSheet;
module.exports = exports['default'];
;