UNPKG

antd-mobile

Version:

基于 React 的移动设计规范实现

239 lines (210 loc) 9.42 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _react = require('react'); var React = _interopRequireWildcard(_react); var _reactDom = require('react-dom'); var ReactDOM = _interopRequireWildcard(_reactDom); var _rcDialog = require('rc-dialog'); var _rcDialog2 = _interopRequireDefault(_rcDialog); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _index = require('../icon/index.web'); var _index2 = _interopRequireDefault(_index); var _objectAssign = require('object-assign'); var _objectAssign2 = _interopRequireDefault(_objectAssign); 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 NORMAL = 'NORMAL'; var SHARE = 'SHARE'; function noop() {} function getDataAttr(props) { var dataAttrs = {}; Object.keys(props).forEach(function (i) { if (i.indexOf('data-') === 0) { dataAttrs[i] = props[i]; } }); return dataAttrs; } var queue = []; function createActionSheet(flag, config, callback) { var _classNames; var props = (0, _objectAssign2["default"])({}, { prefixCls: 'am-action-sheet', cancelButtonText: '取消' }, config); var prefixCls = props.prefixCls; var className = props.className; var transitionName = props.transitionName; var maskTransitionName = props.maskTransitionName; var _props$maskClosable = props.maskClosable; var maskClosable = _props$maskClosable === undefined ? true : _props$maskClosable; var div = document.createElement('div'); document.body.appendChild(div); queue.push(close); function close() { if (div) { ReactDOM.unmountComponentAtNode(div); div.parentNode.removeChild(div); div = null; var index = queue.indexOf(close); if (index !== -1) { queue.splice(index, 1); } } } function cb(index) { var rowIndex = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1]; var res = callback(index, rowIndex); if (res && res.then) { res.then(function () { close(); }); } else { close(); } } var title = props.title; var message = props.message; var options = props.options; var destructiveButtonIndex = props.destructiveButtonIndex; var cancelButtonIndex = props.cancelButtonIndex; var cancelButtonText = props.cancelButtonText; var titleMsg = [title ? React.createElement( 'h3', { key: '0', className: prefixCls + '-title' }, title ) : null, message ? React.createElement( 'div', { key: '1', className: prefixCls + '-message' }, message ) : null]; var children = null; var mode = 'normal'; (function () { switch (flag) { case NORMAL: mode = 'normal'; children = React.createElement( 'div', getDataAttr(props), titleMsg, React.createElement( 'ul', { className: prefixCls + '-button-list' }, options.map(function (item, index) { var _cls; var extraProp = { onClick: function onClick() { return cb(index); } }; var li = React.createElement( 'li', (0, _extends3["default"])({ className: [prefixCls + '-button-list-item'], key: index }, extraProp), item ); var cls = (_cls = {}, (0, _defineProperty3["default"])(_cls, prefixCls + '-destructive-button', destructiveButtonIndex === index), (0, _defineProperty3["default"])(_cls, prefixCls + '-cancel-button', cancelButtonIndex === index), _cls); if (cancelButtonIndex === index || destructiveButtonIndex === index) { li = React.createElement( 'li', (0, _extends3["default"])({ key: index, className: (0, _classnames2["default"])(cls) }, extraProp), item, cancelButtonIndex === index ? React.createElement('span', { className: prefixCls + '-cancel-button-mask' }) : null ); } return li; }) ) ); break; case SHARE: mode = 'share'; var multipleLine = options.length && Array.isArray(options[0]) || false; var createList = function createList(item, index) { var rowIndex = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2]; return React.createElement( 'div', { className: prefixCls + '-share-list-item', key: index, onClick: function onClick() { return cb(index, rowIndex); } }, React.createElement( 'div', { className: prefixCls + '-share-list-item-icon' }, item.iconName ? React.createElement(_index2["default"], { type: item.iconName }) : item.icon ), React.createElement( 'div', { className: prefixCls + '-share-list-item-title' }, item.title ) ); }; children = React.createElement( 'div', getDataAttr(props), titleMsg, React.createElement( 'div', { className: prefixCls + '-share' }, multipleLine ? options.map(function (item, index) { return React.createElement( 'div', { key: index, className: prefixCls + '-share-list' }, item.map(function (ii, ind) { return createList(ii, ind, index); }) ); }) : React.createElement( 'div', { className: prefixCls + '-share-list' }, options.map(function (item, index) { return createList(item, index); }) ), React.createElement( 'div', { className: prefixCls + '-share-cancel-button', onClick: function onClick() { return cb(-1); } }, cancelButtonText ) ) ); break; default: break; } })(); var rootCls = (0, _classnames2["default"])((_classNames = {}, (0, _defineProperty3["default"])(_classNames, className, !!className), (0, _defineProperty3["default"])(_classNames, prefixCls + '-' + mode, true), _classNames)); ReactDOM.render(React.createElement( _rcDialog2["default"], { visible: true, title: '', footer: '', prefixCls: prefixCls, className: rootCls, transitionName: transitionName || 'am-slide-up', maskTransitionName: maskTransitionName || 'am-fade', onClose: close, maskClosable: maskClosable }, children ), div); return { close: close }; } exports["default"] = { showActionSheetWithOptions: function showActionSheetWithOptions(config) { var callback = arguments.length <= 1 || arguments[1] === undefined ? noop : arguments[1]; createActionSheet(NORMAL, config, callback); }, showShareActionSheetWithOptions: function showShareActionSheetWithOptions(config) { var callback = arguments.length <= 1 || arguments[1] === undefined ? noop : arguments[1]; createActionSheet(SHARE, config, callback); }, close: function close() { queue.forEach(function (q) { return q(); }); } }; module.exports = exports['default'];