design-react-kit
Version:
Componenti React per Bootstrap 5
37 lines • 1.96 kB
JavaScript
import classNames from 'classnames';
import React from 'react';
import { Icon } from '../Icon/Icon';
export const Upload = ({ id, className, icon = 'it-upload', iconSize, label = 'Upload', tag = 'input', isAvatar, avatarImg, avatarSmall, testId, ...attributes }) => {
const Tag = tag, classes = classNames(className, {
upload: isAvatar ? false : true
}, { 'upload-avatar': isAvatar }), classesAvatarWrapper = classNames({
'avatar-upload-wrapper': true,
'size-sm': avatarSmall
}), extraAttributes = {
id,
type: 'file'
};
// associate the input field with the help text
const infoId = id ? `${id}Description` : undefined;
if (id) {
extraAttributes['aria-describedby'] = infoId;
}
if (isAvatar) {
return (React.createElement("div", { className: classesAvatarWrapper },
React.createElement("div", { className: 'avatar size-xxl avatar-upload' },
avatarImg,
React.createElement("div", { className: 'upload-avatar-container' },
React.createElement(Tag, { ...attributes, ...extraAttributes, className: classes, "data-testid": testId }),
React.createElement("label", { htmlFor: id },
React.createElement(Icon, { icon: icon, size: iconSize }),
React.createElement("span", null, label)))),
React.createElement("div", { className: 'avatar-upload-icon' },
React.createElement(Icon, { icon: 'it-camera', size: 'sm' }))));
}
return (React.createElement(React.Fragment, null,
React.createElement(Tag, { ...attributes, ...extraAttributes, className: classes, "data-testid": testId }),
React.createElement("label", { htmlFor: id },
React.createElement(Icon, { icon: icon, size: iconSize }),
React.createElement("span", null, label))));
};
//# sourceMappingURL=Upload.js.map