UNPKG

@td-design/react-native

Version:

react-native UI组件库

47 lines 1.66 kB
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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, { useEffect } from 'react'; import { Keyboard } from 'react-native'; import { useMemoizedFn, useSafeState } from '@td-design/rn-hooks'; import Box from '../box'; import Flex from '../flex'; import ButtonItem from './Item'; const ButtonGroup = _ref => { let { disabledItems = [], containerStyle, options = [], activeIndex, itemStyle, size, activeOpacity = 0.6 } = _ref; const [active, setActive] = useSafeState(activeIndex); useEffect(() => { setActive(activeIndex); }, [activeIndex]); if (options.length === 0) return null; const handlePress = useMemoizedFn(index => { Keyboard.dismiss(); setActive(index); }); return /*#__PURE__*/React.createElement(Box, { style: containerStyle }, /*#__PURE__*/React.createElement(Flex, { flexWrap: "nowrap" }, options.map((item, index, array) => /*#__PURE__*/React.createElement(ButtonItem, _extends({ key: index }, item, { activeOpacity, index: index, size: size, disabled: disabledItems.includes(index), onItemPress: handlePress, itemStyle: itemStyle, isCurrent: active === index, isFirst: index === 0, isLast: index === array.length - 1 }))))); }; ButtonGroup.displayName = 'ButtonGroup'; export default ButtonGroup; //# sourceMappingURL=index.js.map