UNPKG

@td-design/react-native

Version:

react-native UI组件库

74 lines 2.01 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 from 'react'; import { ScrollView } from 'react-native'; import helpers from '../helpers'; import MenuGroup from './MenuGroup'; import MenuItem from './MenuItem'; import useMenu from './useMenu'; const { deviceWidth } = helpers; const Menu = props => { const { data, multiple = false, selectedKey, defaultSelectedKey, width = deviceWidth, onSelect, activeOpacity = 0.6, style, itemStyle, activeColor, activeTextColor } = props; const { currentKey, openKeys, setOpenKeys, handleSelect } = useMenu({ selectedKey, defaultSelectedKey, onSelect, data, multiple }); const renderItem = (item, level) => { if (item.items && Array.isArray(item.items) && item.items.length > 0) { return /*#__PURE__*/React.createElement(MenuGroup, _extends({ key: item.id }, item, { itemStyle, activeOpacity, onSelect: handleSelect, currentKey, openKeys, setOpenKeys, level }), item.items.map(item => renderItem(item, level + 1))); } return /*#__PURE__*/React.createElement(MenuItem, _extends({ key: item.id }, item, { level, itemStyle, activeOpacity, onSelect: handleSelect, currentKey, activeColor, activeTextColor })); }; return /*#__PURE__*/React.createElement(ScrollView, { bounces: false, horizontal: false, showsVerticalScrollIndicator: false, style: [{ width }, style] }, data.map(item => renderItem(item, 1))); }; Menu.displayName = 'Menu'; export default Menu; //# sourceMappingURL=index.js.map