@fruits-chain/react-native-xiaoshu
Version:
React Native UI library
60 lines (54 loc) • 2.27 kB
JavaScript
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import React, { memo } from 'react';
import BottomBar from '../bottom-bar';
import Button from '../button';
import ActionSheet from '../action-sheet';
import { useTheme, widthStyle } from '../theme';
import { isArray, noop } from '../helpers';
import { createStyles } from './style';
const ButtonBar = _ref => {
let {
alone = false,
buttons,
count = 4,
moreText = '更多',
children,
...restProps
} = _ref;
const THEME_VAR = useTheme();
const STYLES = widthStyle(THEME_VAR, createStyles);
const realButtons = (buttons || []).filter(item => !item.hidden);
const isConfig = isArray(buttons);
const showMore = realButtons.length > count;
const bottomButtons = showMore ? realButtons.slice(0, count - 1) : realButtons;
const onPressMore = () => {
const restButtons = realButtons.slice(count - 1);
ActionSheet({
actions: restButtons.map(item => item.text),
cancelText: '取消'
}).then(_ref2 => {
var _restButtons$index$on, _restButtons$index;
let {
index
} = _ref2;
(_restButtons$index$on = (_restButtons$index = restButtons[index]).onPress) === null || _restButtons$index$on === void 0 ? void 0 : _restButtons$index$on.call(_restButtons$index);
}).catch(noop);
};
return /*#__PURE__*/React.createElement(BottomBar, _extends({}, restProps, {
style: [STYLES.button_bar, alone ? STYLES.button_bar_alone : null]
}), isConfig ? /*#__PURE__*/React.createElement(React.Fragment, null, showMore ? /*#__PURE__*/React.createElement(Button, {
type: "link",
text: moreText,
size: "normal",
onPress: onPressMore
}) : null, bottomButtons.reverse().map((b, index) => {
return /*#__PURE__*/React.createElement(Button, _extends({
key: index
}, b, {
size: b.size || 'normal',
style: b.style || STYLES.btn
}));
})) : children);
};
export default /*#__PURE__*/memo(ButtonBar);
//# sourceMappingURL=index.js.map