@workday/canvas-kit-preview-react
Version:
Canvas Kit Preview is made up of components that have the full design and a11y review, are part of the DS ecosystem and are approved for use in product. The API's could be subject to change, but not without strong communication and migration strategies.
54 lines (53 loc) • 3.41 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Avatar = exports.avatarStencil = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = __importDefault(require("react"));
const common_1 = require("@workday/canvas-kit-react/common");
const canvas_kit_styling_1 = require("@workday/canvas-kit-styling");
const canvas_tokens_web_1 = require("@workday/canvas-tokens-web");
const BaseAvatar_1 = require("./BaseAvatar");
exports.avatarStencil = (0, canvas_kit_styling_1.createStencil)({
extends: BaseAvatar_1.baseAvatarStencil,
parts: {
avatarImage: 'avatar-image',
avatarName: 'avatar-name',
},
base: { name: "zwvcq", styles: "box-sizing:border-box;" },
modifiers: {
imageLoaded: {
false: { name: "fs8ef", styles: "[data-part=\"avatar-image\"]{display:none;}" },
true: { name: "1cdrtt", styles: "background-color:var(--cnvs-sys-color-bg-default);" }
},
objectFit: {
contain: { name: "49scuu", styles: "[data-part=\"avatar-image\"]{object-fit:contain;}" },
cover: { name: "3t34jg", styles: "[data-part=\"avatar-image\"]{object-fit:cover;}" },
fill: { name: "1ptxhe", styles: "[data-part=\"avatar-image\"]{object-fit:fill;}" },
none: { name: "2kdnzq", styles: "[data-part=\"avatar-image\"]{object-fit:none;}" },
['scale-down']: { name: "21cuom", styles: "[data-part=\"avatar-image\"]{object-fit:scale-down;}" },
initial: { name: "12spbj", styles: "[data-part=\"avatar-image\"]{object-fit:initial;}" },
inherit: { name: "1c2wtn", styles: "[data-part=\"avatar-image\"]{object-fit:inherit;}" },
unset: { name: "xoj6b", styles: "[data-part=\"avatar-image\"]{object-fit:unset;}" },
['-moz-initial']: { name: "4e6mnh", styles: "[data-part=\"avatar-image\"]{object-fit:-moz-initial;}" },
['revert']: { name: "2ewkty", styles: "[data-part=\"avatar-image\"]{object-fit:revert;}" }
}
}
}, "avatar-e93ffc");
/**
* JSDoc for Avatar. Will be part of the Component API docs
*/
exports.Avatar = (0, common_1.createComponent)('div')({
displayName: 'Avatar',
Component: ({ url, name, variant, objectFit = 'contain', preferredInitials, isDecorative, size, ...elemProps }, ref, Element) => {
const [imageLoaded, setImageLoaded] = react_1.default.useState(false);
const handleImageLoad = () => {
if (!imageLoaded) {
setImageLoaded(true);
}
};
return ((0, jsx_runtime_1.jsxs)(BaseAvatar_1.BaseAvatar, { as: Element, ref: ref, ...(0, canvas_kit_styling_1.handleCsProp)(elemProps, (0, exports.avatarStencil)({ variant, size, imageLoaded, objectFit })), children: [url && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(BaseAvatar_1.BaseAvatar.Image, { onLoad: handleImageLoad, src: url, alt: isDecorative ? undefined : name, "aria-hidden": isDecorative, ...exports.avatarStencil.parts.avatarImage }) })), name && (!url || !imageLoaded) && ((0, jsx_runtime_1.jsx)(BaseAvatar_1.BaseAvatar.Name, { name: name, preferredInitials: preferredInitials, ...exports.avatarStencil.parts.avatarName }))] }));
},
});