@i-novus/ui-core
Version:
Базовые UI компоненты
36 lines (35 loc) • 1.52 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { useCallback } from 'react';
import classNames from 'classnames';
import { useConfigProvider } from '../../core';
import { UploadError } from './components/UploadError';
import { UploadInProgress } from './components/UploadInProgress';
import { UploadSuccess } from './components/UploadSuccess';
import { isUploadError, isUploadInProgress, isUploadSuccess } from './utils';
export const FileItem = ({ file, onCancelLoad, onRemove, visible = true, className, children, prefix, style, readOnly }) => {
const { getPrefix } = useConfigProvider();
const prefixCls = getPrefix(prefix);
const onCancelLoadFile = useCallback(() => {
if (onCancelLoad) {
onCancelLoad(file);
}
}, [onCancelLoad, file]);
const onRemoveFile = useCallback(() => {
if (onRemove) {
onRemove(file);
}
}, [onRemove, file]);
if (!visible) {
return null;
}
if (isUploadError(file)) {
return _jsx(UploadError, { prefix: prefix, file: file, onRemove: onRemoveFile });
}
if (isUploadInProgress(file)) {
return _jsx(UploadInProgress, { prefix: prefix, file: file, onCancel: onCancelLoadFile });
}
if (isUploadSuccess(file) || readOnly) {
return _jsx(UploadSuccess, { file: file, onRemove: onRemoveFile, readOnly: readOnly });
}
return (_jsx("div", { className: classNames(`${prefixCls}-file-list-item`, className), style: style, children: children }));
};