antd-mobile
Version:
基于 React 的移动设计规范实现
200 lines (172 loc) • 7.58 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = undefined;
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
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 _default = require('../style/themes/default');
var _default2 = _interopRequireDefault(_default);
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 Button = function (_React$Component) {
(0, _inherits3["default"])(Button, _React$Component);
function Button(props) {
(0, _classCallCheck3["default"])(this, Button);
var _this = (0, _possibleConstructorReturn3["default"])(this, _React$Component.call(this, props));
_this.onPressIn = function () {
_this.setState({ pressIn: true });
};
_this.onPressOut = function () {
_this.setState({ pressIn: false });
};
_this.state = {
pressIn: false
};
return _this;
}
Button.prototype.pressTextColor = function pressTextColor() {
if (this.state.pressIn) {
return { color: this.mTextHighlightColor };
}
return { color: this.mTextColor };
};
Button.prototype.pressBorderColor = function pressBorderColor() {
if (this.state.pressIn && this.mBorderHighlightColor) {
return { borderColor: this.mBorderHighlightColor };
}
return { borderColor: this.mBorderColor };
};
Button.prototype.render = function render() {
var _this2 = this;
var _props = this.props;
var size = _props.size;
var type = _props.type;
var disabled = _props.disabled;
var height = void 0;
var fontSize = void 0;
var paddingLeft = void 0;
var paddingRight = void 0;
var backgroundColor = void 0;
var textColor = void 0;
var borderColor = void 0;
var highlightBackgroundColor = void 0;
var highlightTextColor = void 0;
var highlightBorderColor = void 0;
switch (size) {
case 'large':
height = _default2["default"].button_height;
fontSize = _default2["default"].button_font_size;
paddingLeft = paddingRight = _default2["default"].h_spacing_sm;
break;
case 'small':
height = _default2["default"].button_height_sm;
fontSize = _default2["default"].button_font_size_sm;
paddingLeft = paddingRight = _default2["default"].h_spacing_sm;
break;
default:
break;
}
if (type === 'primary') {
textColor = _default2["default"].color_text_base_inverse;
backgroundColor = _default2["default"].brand_primary;
borderColor = _default2["default"].brand_primary;
highlightTextColor = _default2["default"].color_text_base_inverse;
highlightBackgroundColor = _default2["default"].brand_primary;
highlightBorderColor = _default2["default"].brand_primary;
} else if (type === 'ghost') {
backgroundColor = 'transparent';
textColor = _default2["default"].color_link;
borderColor = _default2["default"].tabs_color;
highlightTextColor = _default2["default"].color_text_base_inverse;
highlightBackgroundColor = _default2["default"].brand_primary_tap;
highlightBorderColor = _default2["default"].brand_primary;
} else if (type === 'warning') {
textColor = _default2["default"].brand_warning;
backgroundColor = _default2["default"].fill_base;
borderColor = _default2["default"].brand_warning;
highlightBackgroundColor = _default2["default"].fill_base;
} else {
textColor = _default2["default"].color_text_base;
backgroundColor = _default2["default"].fill_base;
borderColor = _default2["default"].border_color_base;
highlightBackgroundColor = _default2["default"].fill_tap;
highlightTextColor = textColor;
}
if (disabled) {
textColor = _default2["default"].color_text_disabled;
backgroundColor = _default2["default"].fill_disabled;
borderColor = _default2["default"].fill_disabled;
}
var touchableProps = {};
if (!disabled) {
touchableProps.onPressIn = this.onPressIn;
touchableProps.onPressOut = this.onPressOut;
}
var style = {
alignItems: 'center',
height: height,
paddingLeft: paddingLeft,
paddingRight: paddingRight,
backgroundColor: backgroundColor,
borderRadius: _default2["default"].radius_md,
borderWidth: 1,
borderColor: borderColor,
justifyContent: 'center'
};
this.mTextColor = textColor;
this.mBorderColor = borderColor;
this.mTextHighlightColor = highlightTextColor;
if (highlightBorderColor) {
this.mBorderHighlightColor = highlightBorderColor;
}
if (disabled) {
return React.createElement(
_reactNative.View,
(0, _extends3["default"])({}, this.props, { style: [style, this.pressBorderColor(), this.props.style] }),
React.createElement(
_reactNative.Text,
{ style: [{ fontSize: fontSize }, this.pressTextColor()] },
this.props.children
)
);
}
return React.createElement(
_reactNative.TouchableHighlight,
(0, _extends3["default"])({ activeOpacity: 1, onPress: function onPress() {
return _this2.props.onClick(_this2);
}, delayPressOut: 1 }, this.props, touchableProps, { style: [style, this.pressBorderColor(), this.props.style], underlayColor: highlightBackgroundColor }),
React.createElement(
_reactNative.Text,
{ style: [{ fontSize: fontSize }, this.pressTextColor()] },
this.props.children
)
);
};
return Button;
}(React.Component);
exports["default"] = Button;
Button.propTypes = {
pressIn: _react.PropTypes.bool,
onPressIn: _react.PropTypes.func,
onPressOut: _react.PropTypes.func,
size: _react.PropTypes.oneOf(['large', 'small'])
};
Button.defaultProps = {
pressIn: false,
size: 'large',
disabled: false,
inline: false,
loading: false,
onClick: function onClick(x) {}
};
module.exports = exports['default'];