UNPKG

@nutui/nutui-react-taro

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

120 lines (119 loc) 7.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Avatar", { enumerable: true, get: function() { return Avatar; } }); var _interop_require_default = require("@swc/helpers/_/_interop_require_default"); var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard"); var _define_property = require("@swc/helpers/_/_define_property"); var _object_spread = require("@swc/helpers/_/_object_spread"); var _object_spread_props = require("@swc/helpers/_/_object_spread_props"); var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array"); var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react")); var _components = require("@tarojs/components"); var _classnames = /*#__PURE__*/ _interop_require_default._(require("classnames")); var _iconsreacttaro = require("@nutui/icons-react-taro"); var _context = require("../avatargroup/context"); var _typings = require("../../utils/typings"); var _platform = require("../../utils/taro/platform"); var _index = /*#__PURE__*/ _interop_require_default._(require("../avatargroup/index")); var _pxtransform = require("../../utils/taro/px-transform"); var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), { size: (0, _platform.harmony)() || (0, _platform.td)() ? '40' : '', shape: 'round', icon: '', background: '#eee', color: '#666', fit: 'cover', src: '', alt: '', avatarIndex: 0 }); var classPrefix = "nut-avatar"; var Avatar = function Avatar(props) { var _$_object_spread = (0, _object_spread._)({}, defaultProps, props), children = _$_object_spread.children, size = _$_object_spread.size, shape = _$_object_spread.shape, background = _$_object_spread.background, color = _$_object_spread.color, src = _$_object_spread.src, icon = _$_object_spread.icon, fit = _$_object_spread.fit, avatarIndex = _$_object_spread.avatarIndex, className = _$_object_spread.className, style = _$_object_spread.style, onClick = _$_object_spread.onClick, onError = _$_object_spread.onError; var _useState // 是否显示的最大头像个数 = (0, _sliced_to_array._)((0, _react.useState)(false), 2), showMax = _useState[0], setShowMax = _useState[1]; var avatarRef = (0, _react.useRef)(null); var parent = (0, _react.useContext)(_context.AvatarContext); var sizeValue = [ 'large', 'normal', 'small' ]; var propAvatarGroup = parent.propAvatarGroup; var groupSize = propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.size; var groupShape = propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.shape; var groupCount = propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.avatarCount; var groupMax = propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.max; var _obj; var classes = (0, _classnames.default)((_obj = {}, (0, _define_property._)(_obj, "nut-avatar-".concat(groupSize || size || 'normal'), true), (0, _define_property._)(_obj, "nut-avatar-".concat(groupShape || shape), true), (0, _define_property._)(_obj, "nut-avatar-".concat(groupSize || size || 'normal', "-round"), shape === 'round' && true), _obj)); var nativeClasses = (0, _classnames.default)((0, _define_property._)({}, "nut-avatar-first-child", avatarIndex === 1)); var cls = (0, _classnames.default)(classPrefix, classes, className, nativeClasses); var _obj1; var styles = (0, _object_spread._)((_obj1 = { width: sizeValue.indexOf(size) > -1 ? '' : (0, _pxtransform.pxTransform)(parseInt(size)), height: sizeValue.indexOf(size) > -1 ? '' : (0, _pxtransform.pxTransform)(parseInt(size)), backgroundColor: "".concat(background), color: color }, (0, _define_property._)(_obj1, (0, _platform.harmony)() ? 'marginRight' : 'marginLeft', avatarIndex !== 1 && (propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.gap) ? "".concat(propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.gap, "px") : ''), (0, _define_property._)(_obj1, "zIndex", (propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.level) === 'right' ? Math.abs(groupCount - avatarIndex) : ''), _obj1), style); var maxStyles = { backgroundColor: "".concat(propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.maxBackground), color: "".concat(propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.maxColor) }; (0, _react.useEffect)(function() { var maxCount = groupMax || groupCount; if (avatarIndex === groupCount && avatarIndex !== maxCount && groupCount > maxCount) { setShowMax(true); } }, [ avatarIndex, groupCount ]); var errorEvent = function errorEvent() { onError && onError(); }; var clickAvatar = function clickAvatar(e) { onClick && onClick(e); }; return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, (showMax || !groupMax || avatarIndex <= groupMax) && /*#__PURE__*/ _react.default.createElement(_components.View, { className: cls, style: !showMax ? styles : maxStyles, onClick: clickAvatar, ref: avatarRef }, (!groupMax || avatarIndex <= groupMax) && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, src && /*#__PURE__*/ _react.default.createElement(_components.Image, { className: "nut-avatar-img nut-avatar-".concat(groupSize || size || 'normal', "-img"), src: src, style: { objectFit: fit }, onError: errorEvent }), /*#__PURE__*/ _react.default.isValidElement(icon) ? /*#__PURE__*/ _react.default.createElement(_components.View, { className: "nut-avatar-text" }, /*#__PURE__*/ _react.default.cloneElement(icon, (0, _object_spread_props._)((0, _object_spread._)({}, icon.props), { color: color, className: "".concat(icon.props.className || '', " nut-avatar-icon nut-avatar-").concat(groupSize || size || 'normal', "-icon") }))) : null, children && /*#__PURE__*/ _react.default.createElement(_components.View, { style: { color: color }, className: "nut-avatar-text nut-avatar-".concat(groupSize || size || 'normal', "-text") }, children), !src && !icon && !children && /*#__PURE__*/ _react.default.createElement(_components.View, { className: "nut-avatar-text" }, /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.User, { style: { color: color }, className: "nut-avatar-icon nut-avatar-".concat(groupSize || size || 'normal', "-icon") }))), showMax && /*#__PURE__*/ _react.default.createElement(_components.View, { className: "nut-avatar-text nut-avatar-".concat(groupSize || 'normal', "-text"), style: (0, _object_spread._)({}, maxStyles) }, (propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.maxContent) ? propAvatarGroup === null || propAvatarGroup === void 0 ? void 0 : propAvatarGroup.maxContent : "+ ".concat(avatarIndex - Number(groupMax || 0))))); }; Avatar.displayName = 'NutAvatar'; Avatar.Group = _index.default;