@uiw/react-native
Version:
UIW for React Native
185 lines (153 loc) • 16.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactNative = require("react-native");
var _utils = require("../utils");
var _Div = _interopRequireDefault(require("../Typography/Div"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class ButtonView extends _react.default.Component {
render() {
const {
children,
style,
textStyle: childStyle,
rounded,
bordered,
color: buttonColor,
type,
size,
disabled,
loading,
...restProps
} = this.props;
let backgroundColor, textColor, borderColor, borderWidth, borderRadius;
switch (type) {
case 'warning':
backgroundColor = _utils.colors.yellow;
break;
case 'primary':
backgroundColor = _utils.colors.blue;
break;
case 'success':
backgroundColor = _utils.colors.green;
break;
case 'danger':
backgroundColor = _utils.colors.red;
break;
case 'light':
backgroundColor = _utils.colors.white;
break;
case 'dark':
backgroundColor = _utils.colors.black;
break;
default:
break;
}
if (backgroundColor) {
backgroundColor = (0, _utils.color)(backgroundColor).rgb().string();
}
if (type) {
textColor = (0, _utils.color)(backgroundColor).isLight() ? (0, _utils.color)(_utils.colors.black).rgb().string() : (0, _utils.color)(_utils.colors.white).rgb().string();
}
if (!type) {
borderColor = (0, _utils.color)(_utils.colors.black).alpha(0.32).rgb().string();
borderWidth = 1;
}
if (disabled) {
textColor = (0, _utils.color)(textColor).alpha(0.3).rgb().string();
}
if (buttonColor) {
backgroundColor = (0, _utils.color)(buttonColor).rgb().string();
textColor = (0, _utils.color)(buttonColor).isLight() ? (0, _utils.color)(buttonColor).darken(0.9).string() : (0, _utils.color)(buttonColor).lighten(0.9).string();
}
if (rounded && typeof rounded === 'number') {
borderRadius = rounded;
}
if (backgroundColor) {
borderColor = (0, _utils.color)(backgroundColor).darken(0.2).string();
borderWidth = 1;
}
if (!bordered) {
borderWidth = 0;
}
const buttonStyle = {
backgroundColor,
borderColor,
borderWidth,
borderRadius
};
const textStyle = {
color: textColor
};
let sizeStyle = {};
if (size && styles[size]) {
sizeStyle = styles[size];
}
let boxStyle = {};
const stylKey = `${size}Box`;
if (size && styles[stylKey]) {
boxStyle = styles[stylKey];
}
if (!children) {
return null;
}
return <_reactNative.TouchableOpacity style={[styles.button, styles.content, buttonStyle, boxStyle, style]} disabled={disabled} {...restProps}>
{loading && <_reactNative.ActivityIndicator size={16} color={textColor} style={styles.icon} />}
{_react.default.Children.toArray(children).map((child, idx) => {
return <_Div.default key={idx} style={[sizeStyle, styles.label, textStyle, childStyle]}>
{child}
</_Div.default>;
})}
</_reactNative.TouchableOpacity>;
}
}
exports.default = ButtonView;
ButtonView.defaultProps = {
activeOpacity: 0.5,
rounded: 5,
bordered: true,
size: 'default'
};
const styles = _reactNative.StyleSheet.create({
button: {
borderStyle: 'solid',
display: 'flex'
},
content: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center'
},
icon: {
width: 16,
marginRight: 4
},
label: {// textAlign: 'center',
},
smallBox: {
paddingHorizontal: 3
},
defaultBox: {
paddingHorizontal: 8
},
largeBox: {
paddingHorizontal: 10
},
small: {
marginVertical: 4,
fontSize: 14
},
default: {
marginVertical: 8,
fontSize: 16
},
large: {
marginVertical: 10,
fontSize: 18
}
});
module.exports = exports.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9CdXR0b24vaW5kZXgudHN4Il0sIm5hbWVzIjpbIkJ1dHRvblZpZXciLCJSZWFjdCIsIkNvbXBvbmVudCIsInJlbmRlciIsImNoaWxkcmVuIiwic3R5bGUiLCJ0ZXh0U3R5bGUiLCJjaGlsZFN0eWxlIiwicm91bmRlZCIsImJvcmRlcmVkIiwiY29sb3IiLCJidXR0b25Db2xvciIsInR5cGUiLCJzaXplIiwiZGlzYWJsZWQiLCJsb2FkaW5nIiwicmVzdFByb3BzIiwicHJvcHMiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ0ZXh0Q29sb3IiLCJib3JkZXJDb2xvciIsImJvcmRlcldpZHRoIiwiYm9yZGVyUmFkaXVzIiwiY29sb3JzIiwieWVsbG93IiwiYmx1ZSIsImdyZWVuIiwicmVkIiwid2hpdGUiLCJibGFjayIsInJnYiIsInN0cmluZyIsImlzTGlnaHQiLCJhbHBoYSIsImRhcmtlbiIsImxpZ2h0ZW4iLCJidXR0b25TdHlsZSIsInNpemVTdHlsZSIsInN0eWxlcyIsImJveFN0eWxlIiwic3R5bEtleSIsImJ1dHRvbiIsImNvbnRlbnQiLCJpY29uIiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwibWFwIiwiY2hpbGQiLCJpZHgiLCJsYWJlbCIsImRlZmF1bHRQcm9wcyIsImFjdGl2ZU9wYWNpdHkiLCJTdHlsZVNoZWV0IiwiY3JlYXRlIiwiYm9yZGVyU3R5bGUiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsIndpZHRoIiwibWFyZ2luUmlnaHQiLCJzbWFsbEJveCIsInBhZGRpbmdIb3Jpem9udGFsIiwiZGVmYXVsdEJveCIsImxhcmdlQm94Iiwic21hbGwiLCJtYXJnaW5WZXJ0aWNhbCIsImZvbnRTaXplIiwiZGVmYXVsdCIsImxhcmdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFrQ2UsTUFBTUEsVUFBTixTQUE0QkMsZUFBTUMsU0FBbEMsQ0FBeUQ7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QTBCL0JHLEVBQUFBLEtBQUssRUFBRTtBQUNMQyxJQUFBQSxjQUFjLEVBQUUsQ0FEWDtBQUVMQyxJQUFBQSxRQUFRLEVBQUU7QUFGTCxHQTFCd0I7QUE4Qi9CQyxFQUFBQSxPQUFPLEVBQUU7QUFDUEYsSUFBQUEsY0FBYyxFQUFFLENBRFQ7QUFFUEMsSUFBQUEsUUFBUSxFQUFFO0FBRkgsR0E5QnNCO0FBa0MvQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0xILElBQUFBLGNBQWMsRUFBRSxFQURYO0FBRUxDLElBQUFBLFFBQVEsRUFBRTtBQUZMO0FBbEN3QixDQUFsQixDQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFN0eWxlU2hlZXQsIFRleHRQcm9wcywgVG91Y2hhYmxlT3BhY2l0eSwgQWN0aXZpdHlJbmRpY2F0b3IsIFRvdWNoYWJsZU9wYWNpdHlQcm9wcyB9IGZyb20gJ3JlYWN0LW5hdGl2ZSc7XG5pbXBvcnQgeyBjb2xvciwgY29sb3JzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IERpdiBmcm9tICcuLi9UeXBvZ3JhcGh5L0Rpdic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uUHJvcHMgZXh0ZW5kcyBUb3VjaGFibGVPcGFjaXR5UHJvcHMge1xuICBjb2xvcj86IHN0cmluZztcbiAgLyoqXG4gICAqIOWmguaenOWtkOiKgueCueaYr+aWh+acrO+8jOS/ruaUueaWh+acrOagt+W8j1xuICAgKi9cbiAgdGV4dFN0eWxlPzogVGV4dFByb3BzWydzdHlsZSddO1xuICAvKipcbiAgICog6K6+572u56aB55SoXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiDliqDovb3nirbmgIFcbiAgICovXG4gIGxvYWRpbmc/OiBib29sZWFuO1xuICAvKipcbiAgICog5oyJ6ZKu57G75Z6L77yM5Y+v6YCJ5YC85Li6XG4gICAqL1xuICB0eXBlPzogJ3ByaW1hcnknIHwgJ3N1Y2Nlc3MnIHwgJ3dhcm5pbmcnIHwgJ2RhbmdlcicgfCAnbGlnaHQnIHwgJ2RhcmsnO1xuICAvKipcbiAgICog5oyJ6ZKu5bC65a+4XG4gICAqL1xuICBzaXplPzogJ3NtYWxsJyB8ICdkZWZhdWx0JyB8ICdsYXJnZSc7XG4gIC8qKlxuICAgKiDorr7nva7mjInpkq7lnIbop5JcbiAgICovXG4gIHJvdW5kZWQ/OiBib29sZWFuIHwgbnVtYmVyO1xuICAvKipcbiAgICog6K6+572u5piv5ZCm5pi+56S66L655qGGXG4gICAqL1xuICBib3JkZXJlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1dHRvblZpZXc8VD4gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8QnV0dG9uUHJvcHM+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wczogQnV0dG9uUHJvcHMgPSB7XG4gICAgYWN0aXZlT3BhY2l0eTogMC41LFxuICAgIHJvdW5kZWQ6IDUsXG4gICAgYm9yZGVyZWQ6IHRydWUsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICB9O1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBzdHlsZSxcbiAgICAgIHRleHRTdHlsZTogY2hpbGRTdHlsZSxcbiAgICAgIHJvdW5kZWQsXG4gICAgICBib3JkZXJlZCxcbiAgICAgIGNvbG9yOiBidXR0b25Db2xvcixcbiAgICAgIHR5cGUsXG4gICAgICBzaXplLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBsb2FkaW5nLFxuICAgICAgLi4ucmVzdFByb3BzXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgbGV0IGJhY2tncm91bmRDb2xvciwgdGV4dENvbG9yLCBib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIGJvcmRlclJhZGl1cztcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9IGNvbG9ycy55ZWxsb3c7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncHJpbWFyeSc6XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9IGNvbG9ycy5ibHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcnMuZ3JlZW47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGFuZ2VyJzpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY29sb3JzLnJlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsaWdodCc6XG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9IGNvbG9ycy53aGl0ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXJrJzpcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gY29sb3JzLmJsYWNrO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoYmFja2dyb3VuZENvbG9yKSB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcihiYWNrZ3JvdW5kQ29sb3IpLnJnYigpLnN0cmluZygpO1xuICAgIH1cbiAgICBpZiAodHlwZSkge1xuICAgICAgdGV4dENvbG9yID0gY29sb3IoYmFja2dyb3VuZENvbG9yKS5pc0xpZ2h0KClcbiAgICAgICAgPyBjb2xvcihjb2xvcnMuYmxhY2spLnJnYigpLnN0cmluZygpXG4gICAgICAgIDogY29sb3IoY29sb3JzLndoaXRlKS5yZ2IoKS5zdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICBib3JkZXJDb2xvciA9IGNvbG9yKGNvbG9ycy5ibGFjaykuYWxwaGEoMC4zMikucmdiKCkuc3RyaW5nKCk7XG4gICAgICBib3JkZXJXaWR0aCA9IDE7XG4gICAgfVxuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgdGV4dENvbG9yID0gY29sb3IodGV4dENvbG9yKS5hbHBoYSgwLjMpLnJnYigpLnN0cmluZygpO1xuICAgIH1cbiAgICBpZiAoYnV0dG9uQ29sb3IpIHtcbiAgICAgIGJhY2tncm91bmRDb2xvciA9IGNvbG9yKGJ1dHRvbkNvbG9yKS5yZ2IoKS5zdHJpbmcoKTtcbiAgICAgIHRleHRDb2xvciA9IGNvbG9yKGJ1dHRvbkNvbG9yKS5pc0xpZ2h0KClcbiAgICAgICAgPyBjb2xvcihidXR0b25Db2xvcikuZGFya2VuKDAuOSkuc3RyaW5nKClcbiAgICAgICAgOiBjb2xvcihidXR0b25Db2xvcikubGlnaHRlbigwLjkpLnN0cmluZygpO1xuICAgIH1cbiAgICBpZiAocm91bmRlZCAmJiB0eXBlb2Ygcm91bmRlZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGJvcmRlclJhZGl1cyA9IHJvdW5kZWQ7XG4gICAgfVxuICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICAgIGJvcmRlckNvbG9yID0gY29sb3IoYmFja2dyb3VuZENvbG9yKS5kYXJrZW4oMC4yKS5zdHJpbmcoKTtcbiAgICAgIGJvcmRlcldpZHRoID0gMTtcbiAgICB9XG4gICAgaWYgKCFib3JkZXJlZCkge1xuICAgICAgYm9yZGVyV2lkdGggPSAwO1xuICAgIH1cbiAgICBjb25zdCBidXR0b25TdHlsZSA9IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgIGJvcmRlckNvbG9yLFxuICAgICAgYm9yZGVyV2lkdGgsXG4gICAgICBib3JkZXJSYWRpdXMsXG4gICAgfTtcbiAgICBjb25zdCB0ZXh0U3R5bGUgPSB7IGNvbG9yOiB0ZXh0Q29sb3IgfTtcbiAgICBsZXQgc2l6ZVN0eWxlID0ge307XG4gICAgaWYgKHNpemUgJiYgc3R5bGVzW3NpemVdKSB7XG4gICAgICBzaXplU3R5bGUgPSBzdHlsZXNbc2l6ZV07XG4gICAgfVxuICAgIGxldCBib3hTdHlsZSA9IHt9O1xuICAgIGNvbnN0IHN0eWxLZXkgPSBgJHtzaXplfUJveGAgYXMga2V5b2YgdHlwZW9mIHN0eWxlcztcbiAgICBpZiAoc2l6ZSAmJiBzdHlsZXNbc3R5bEtleV0pIHtcbiAgICAgIGJveFN0eWxlID0gc3R5bGVzW3N0eWxLZXldO1xuICAgIH1cbiAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxUb3VjaGFibGVPcGFjaXR5XG4gICAgICAgIHN0eWxlPXtbc3R5bGVzLmJ1dHRvbiwgc3R5bGVzLmNvbnRlbnQsIGJ1dHRvblN0eWxlLCBib3hTdHlsZSwgc3R5bGVdfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtsb2FkaW5nICYmIDxBY3Rpdml0eUluZGljYXRvciBzaXplPXsxNn0gY29sb3I9e3RleHRDb2xvcn0gc3R5bGU9e3N0eWxlcy5pY29ufSAvPn1cbiAgICAgICAge1JlYWN0LkNoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pLm1hcCgoY2hpbGQ6IGFueSwgaWR4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxEaXYga2V5PXtpZHh9IHN0eWxlPXtbc2l6ZVN0eWxlLCBzdHlsZXMubGFiZWwsIHRleHRTdHlsZSwgY2hpbGRTdHlsZV19PlxuICAgICAgICAgICAgICB7Y2hpbGR9XG4gICAgICAgICAgICA8L0Rpdj5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvVG91Y2hhYmxlT3BhY2l0eT5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IHN0eWxlcyA9IFN0eWxlU2hlZXQuY3JlYXRlKHtcbiAgYnV0dG9uOiB7XG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICB9LFxuICBjb250ZW50OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICB9LFxuICBpY29uOiB7XG4gICAgd2lkdGg6IDE2LFxuICAgIG1hcmdpblJpZ2h0OiA0LFxuICB9LFxuICBsYWJlbDoge1xuICAgIC8vIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIH0sXG4gIHNtYWxsQm94OiB7XG4gICAgcGFkZGluZ0hvcml6b250YWw6IDMsXG4gIH0sXG4gIGRlZmF1bHRCb3g6IHtcbiAgICBwYWRkaW5nSG9yaXpvbnRhbDogOCxcbiAgfSxcbiAgbGFyZ2VCb3g6IHtcbiAgICBwYWRkaW5nSG9yaXpvbnRhbDogMTAsXG4gIH0sXG4gIHNtYWxsOiB7XG4gICAgbWFyZ2luVmVydGljYWw6IDQsXG4gICAgZm9udFNpemU6IDE0LFxuICB9LFxuICBkZWZhdWx0OiB7XG4gICAgbWFyZ2luVmVydGljYWw6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICB9LFxuICBsYXJnZToge1xuICAgIG1hcmdpblZlcnRpY2FsOiAxMCxcbiAgICBmb250U2l6ZTogMTgsXG4gIH0sXG59KTtcbiJdfQ==