@gravity-ui/uikit
Version:
Gravity UI base styling and components
34 lines (33 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileDropZoneIcon = void 0;
const tslib_1 = require("tslib");
const jsx_runtime_1 = require("react/jsx-runtime");
const React = tslib_1.__importStar(require("react"));
const icons_1 = require("@gravity-ui/icons");
const __1 = require("../../../index.js");
const FileDropZone_Provider_1 = require("../FileDropZone.Provider.js");
const FileDropZone_classname_1 = require("../FileDropZone.classname.js");
const constants_1 = require("../constants.js");
const FileDropZoneIcon = ({ className }) => {
const { errorMessage, validationState, icon, errorIcon } = (0, FileDropZone_Provider_1.useFileZoneContext)();
const isError = Boolean(errorMessage) || validationState === 'invalid';
const DisplayIcon = React.useMemo(() => {
if (isError) {
if (errorIcon === null) {
return null;
}
return errorIcon || icons_1.CircleExclamation;
}
if (icon === null) {
return null;
}
return icon || icons_1.CloudArrowUpIn;
}, [errorIcon, icon, isError]);
if (DisplayIcon === null) {
return null;
}
return ((0, jsx_runtime_1.jsx)(__1.Icon, { className: (0, FileDropZone_classname_1.cnFileDropZone)('icon', { error: isError }, className), data: DisplayIcon, qa: constants_1.FileDropZoneQa.ICON }));
};
exports.FileDropZoneIcon = FileDropZoneIcon;
//# sourceMappingURL=FileDropZone.Icon.js.map