UNPKG

shineout

Version:

Shein 前端组件库

73 lines (60 loc) 2.11 kB
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose"; import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _objectSpread from "@babel/runtime/helpers/objectSpread"; import React, { isValidElement, cloneElement } from 'react'; import { defaultProps } from '../utils/defaultProps'; var DefaultProps = _objectSpread({}, defaultProps, { data: {}, renderItem: 'content' }); var Item = /*#__PURE__*/ function (_React$PureComponent) { _inheritsLoose(Item, _React$PureComponent); function Item(props) { var _this; _this = _React$PureComponent.call(this, props) || this; _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_assertThisInitialized(_this))); return _this; } var _proto = Item.prototype; _proto.handleClick = function handleClick() { if (!this.props.onClick) return; this.props.onClick(this.props.data); }; _proto.render = function render() { var _this$props = this.props, data = _this$props.data, itemClassName = _this$props.itemClassName, renderItem = _this$props.renderItem, width = _this$props.width, columns = _this$props.columns; var aWidth = width && columns ? (width - 2) / columns : undefined; var props = { disabled: data.disabled, onClick: this.handleClick, className: itemClassName, target: data.target, style: aWidth ? { display: 'inline-block', width: aWidth } : null }; if (data.url) props.href = data.url; var content; if (isValidElement(data)) { content = data; } else { // @ts-ignore content = typeof renderItem === 'string' ? data[renderItem] : renderItem(data); } if (isValidElement(content)) { return cloneElement(content, Object.assign(props, content.props)); } return React.createElement("a", props, content); }; return Item; }(React.PureComponent); _defineProperty(Item, "defaultProps", DefaultProps); export default Item;