UNPKG

antd-mobile

Version:

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

146 lines (108 loc) 5.89 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 _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); 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 _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _index = require('../icon/index.web'); var _index2 = _interopRequireDefault(_index); var _splitObject3 = require('../_util/splitObject'); var _splitObject4 = _interopRequireDefault(_splitObject3); var _touchableFeedback = require('../_util/touchableFeedback'); var _touchableFeedback2 = _interopRequireDefault(_touchableFeedback); 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 rxTwoCNChar = /^[\u4e00-\u9fa5]{2}$/; var isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar); function isString(str) { return typeof str === 'string'; } // Insert one space between two chinese characters automatically. function insertSpace(child) { if (isString(child.type) && isTwoCNChar(child.props.children)) { return React.cloneElement(child, {}, child.props.children.split('').join(' ')); } if (isString(child)) { if (isTwoCNChar(child)) { child = child.split('').join(' '); } return React.createElement( 'span', null, child ); } return child; } var Button = function (_React$Component) { (0, _inherits3["default"])(Button, _React$Component); function Button() { (0, _classCallCheck3["default"])(this, Button); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var _this = (0, _possibleConstructorReturn3["default"])(this, _React$Component.call.apply(_React$Component, [this].concat(args))); _this.onClick = function () { _this.props.onClick(_this); }; return _this; } Button.prototype.render = function render() { var _classNames; var _splitObject = (0, _splitObject4["default"])(this.props, ['children', 'className', 'prefixCls', 'type', 'size', 'inline', 'disabled', 'htmlType', 'icon', 'loading', 'touchFeedback']); var _splitObject2 = (0, _slicedToArray3["default"])(_splitObject, 2); var _splitObject2$ = _splitObject2[0]; var children = _splitObject2$.children; var className = _splitObject2$.className; var prefixCls = _splitObject2$.prefixCls; var type = _splitObject2$.type; var size = _splitObject2$.size; var inline = _splitObject2$.inline; var disabled = _splitObject2$.disabled; var htmlType = _splitObject2$.htmlType; var icon = _splitObject2$.icon; var loading = _splitObject2$.loading; var touchFeedback = _splitObject2$.touchFeedback; var restProps = _splitObject2[1]; var wrapCls = (0, _classnames2["default"])((_classNames = {}, (0, _defineProperty3["default"])(_classNames, className, className), (0, _defineProperty3["default"])(_classNames, prefixCls, true), (0, _defineProperty3["default"])(_classNames, prefixCls + '-primary', type === 'primary'), (0, _defineProperty3["default"])(_classNames, prefixCls + '-ghost', type === 'ghost'), (0, _defineProperty3["default"])(_classNames, prefixCls + '-warning', type === 'warning'), (0, _defineProperty3["default"])(_classNames, prefixCls + '-small', size === 'small'), (0, _defineProperty3["default"])(_classNames, prefixCls + '-loading', loading), (0, _defineProperty3["default"])(_classNames, prefixCls + '-inline', inline), (0, _defineProperty3["default"])(_classNames, prefixCls + '-disabled', disabled), (0, _defineProperty3["default"])(_classNames, prefixCls + '-touchFeedback', touchFeedback), _classNames)); var iconType = loading ? 'loading' : icon; var kids = React.Children.map(children, insertSpace); return React.createElement( 'button', (0, _extends3["default"])({}, restProps, { type: htmlType || 'button', className: wrapCls, disabled: disabled, onClick: this.onClick }), iconType ? React.createElement(_index2["default"], { type: iconType }) : null, kids ); }; return Button; }(React.Component); Button.propTypes = { prefixCls: _react.PropTypes.string, size: _react.PropTypes.oneOf(['large', 'small']), htmlType: _react.PropTypes.oneOf(['submit', 'button', 'reset']), icon: _react.PropTypes.bool }; Button.defaultProps = { prefixCls: 'am-button', size: 'large', inline: false, disabled: false, loading: false, onClick: function onClick() {} }; exports["default"] = (0, _touchableFeedback2["default"])(Button); module.exports = exports['default'];