UNPKG

@pmwcs/avatar

Version:

PMWCS avatar component

156 lines (131 loc) 6.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AvatarCount = exports.Avatar = exports.AvatarGroup = void 0; var _preact = require("preact"); var _icon = require("@pmwcs/icon"); var _ripple = require("@pmwcs/ripple"); var _base = require("@pmwcs/base"); var _excluded = ["isCount", "overflow", "smallerText", "square", "interactive", "hasImage"], _excluded2 = ["dense"], _excluded3 = ["src", "size", "name", "interactive", "contain"], _excluded4 = ["value", "overflow", "size", "interactive"]; function _extends() { _extends = Object.assign || 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); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var getInitialsForName = function getInitialsForName(name) { if (name) { var parts = name.split(' '); /* istanbul ignore next */ var letters = (parts[0] || '')[0]; if (parts.length > 1) { var part = parts.pop(); /* istanbul ignore next */ if (part) { letters += part[0]; } } return letters; } return ''; }; var AvatarRoot = (0, _ripple.withRipple)({})((0, _base.createMemoComponent)(function AvatarRoot(props, ref) { var _ref; var isCount = props.isCount, overflow = props.overflow, smallerText = props.smallerText, square = props.square, interactive = props.interactive, hasImage = props.hasImage, rest = _objectWithoutProperties(props, _excluded); var className = (0, _base.useClassNames)(props, ['pmwc-avatar', (_ref = {}, _defineProperty(_ref, "pmwc-avatar--".concat(props.size), rest.size), _defineProperty(_ref, 'pmwc-avatar--count', isCount), _defineProperty(_ref, 'pmwc-avatar--interactive', interactive), _defineProperty(_ref, 'pmwc-avatar--count-overflow', overflow), _defineProperty(_ref, 'pmwc-avatar--smaller-text', smallerText), _defineProperty(_ref, 'pmwc-avatar--square', square), _defineProperty(_ref, 'pmwc-avatar--has-image', hasImage), _ref)]); return (0, _preact.h)(_icon.Icon, _extends({}, rest, { basename: "", className: className, ref: ref })); })); AvatarRoot.displayName = 'AvatarRoot'; /** A container for groups of Avatars */ var AvatarGroup = (0, _base.createComponent)(function AvatarGroup(props, ref) { var dense = props.dense, rest = _objectWithoutProperties(props, _excluded2); var className = (0, _base.useClassNames)(props, ['pmwc-avatar-group', { 'pmwc-avatar-group--dense': dense }]); return (0, _preact.h)(_base.Tag, _extends({}, rest, { ref: ref, className: className })); }); /** An Avatar component for displaying users in a system. */ exports.AvatarGroup = AvatarGroup; var Avatar = (0, _base.createComponent)(function Avatar(_ref2, ref) { var src = _ref2.src, size = _ref2.size, _ref2$name = _ref2.name, name = _ref2$name === void 0 ? '' : _ref2$name, _ref2$interactive = _ref2.interactive, interactive = _ref2$interactive === void 0 ? false : _ref2$interactive, _ref2$contain = _ref2.contain, contain = _ref2$contain === void 0 ? false : _ref2$contain, rest = _objectWithoutProperties(_ref2, _excluded3); var initials = getInitialsForName(name); var avatarStyle = src ? { backgroundImage: "url(".concat(src, ")"), backgroundSize: contain ? 'contain' : 'cover' } : {}; return (0, _preact.h)(AvatarRoot, _extends({ ref: ref, ripple: interactive, interactive: interactive, hasImage: !!src, size: size, title: name, tag: "span" }, rest, { icon: { icon: (0, _preact.h)(_preact.Fragment, null, (0, _preact.h)("div", { className: "pmwc-avatar__icon", style: avatarStyle }), (0, _preact.h)("div", { className: "pmwc-avatar__text" }, (0, _preact.h)("div", { className: "pmwc-avatar__text-inner" }, initials))) } })); }); exports.Avatar = Avatar; Avatar.displayName = 'Avatar'; /** An Avatar count for displaying list overflow. */ var AvatarCount = (0, _base.createMemoComponent)(function AvatarCount(_ref3, ref) { var value = _ref3.value, overflow = _ref3.overflow, size = _ref3.size, _ref3$interactive = _ref3.interactive, interactive = _ref3$interactive === void 0 ? false : _ref3$interactive, rest = _objectWithoutProperties(_ref3, _excluded4); var smallerText = String(value).length > 2; return (0, _preact.h)(AvatarRoot, _extends({ ref: ref, ripple: interactive, interactive: interactive, isCount: true, size: size, overflow: overflow, smallerText: smallerText, tag: "span" }, rest, { icon: { icon: (0, _preact.h)("div", { className: "pmwc-avatar__text" }, (0, _preact.h)("div", { className: "pmwc-avatar__text-inner" }, value)) } })); }); exports.AvatarCount = AvatarCount;