@td-design/react-native
Version:
react-native UI组件库
64 lines • 2.03 kB
JavaScript
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, { memo, useMemo } from 'react';
import Box from '../box';
import Flex from '../flex';
import helpers from '../helpers';
import ListItem from '../list-item';
import Text from '../text';
const {
ONE_PIXEL
} = helpers;
const List = _ref => {
let {
header,
extra,
itemBackgroundColor,
itemStyle,
items = []
} = _ref;
const Header = useMemo(() => {
if (!header) return null;
if (typeof header === 'string') {
return /*#__PURE__*/React.createElement(ListHeader, {
text: header,
extra: extra
});
}
return header;
}, [header, extra]);
return /*#__PURE__*/React.createElement(Box, null, Header, items.map((props, index) => {
return /*#__PURE__*/React.createElement(ListItem, _extends({
key: index
}, props, {
backgroundColor: itemBackgroundColor,
style: [itemStyle, props.style]
}));
}));
};
List.displayName = 'List';
const ListHeader = /*#__PURE__*/memo(_ref2 => {
let {
text,
extra,
textStyle,
headerStyle
} = _ref2;
if (text === '') return null;
return /*#__PURE__*/React.createElement(Flex, {
justifyContent: "space-between",
alignItems: "center",
paddingHorizontal: "x2",
paddingVertical: 'x2',
backgroundColor: "white",
borderBottomWidth: ONE_PIXEL,
borderColor: 'border',
style: headerStyle
}, /*#__PURE__*/React.createElement(Box, null, /*#__PURE__*/React.createElement(Text, {
variant: "p1",
color: "text",
style: textStyle
}, text)), /*#__PURE__*/React.createElement(Box, null, extra));
});
ListHeader.displayName = 'ListHeader';
export { List, ListHeader };
//# sourceMappingURL=index.js.map