tdesign-react
Version:
TDesign Component for React
198 lines (190 loc) • 11.2 kB
JavaScript
/**
* tdesign v1.15.1
* (c) 2025 tdesign
* @license MIT
*/
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var defineProperty = require('../../_chunks/dep-0006fcfa.js');
var toConsumableArray = require('../../_chunks/dep-e4e1901e.js');
var React = require('react');
var tdesignIconsReact = require('tdesign-icons-react');
var classNames = require('classnames');
var utils = require('../../_chunks/dep-f4d844cc.js');
var _util_parseTNode = require('../../_util/parseTNode.js');
var loading_index = require('../../loading/index.js');
var link_index = require('../../link/index.js');
var hooks_useGlobalIcon = require('../../hooks/useGlobalIcon.js');
require('../../_chunks/dep-667ac7af.js');
require('../../_chunks/dep-00b49251.js');
require('../../_chunks/dep-59671c87.js');
require('../../_chunks/dep-ec8d2dca.js');
require('../../_chunks/dep-25585736.js');
require('../../_chunks/dep-fc596d16.js');
require('../../loading/Loading.js');
require('../../_chunks/dep-8e4d656d.js');
require('../../_chunks/dep-381fa848.js');
require('../../_chunks/dep-4ed9eda4.js');
require('../../_chunks/dep-64577888.js');
require('../../_chunks/dep-62e73936.js');
require('../../hooks/useConfig.js');
require('../../config-provider/ConfigContext.js');
require('../../_chunks/dep-1df1dad8.js');
require('../../_chunks/dep-5b5ab11b.js');
require('dayjs');
require('../../_chunks/dep-f32c03f1.js');
require('../../_chunks/dep-31c4bc3d.js');
require('../../_chunks/dep-eea2872a.js');
require('../../_chunks/dep-71455db7.js');
require('../../_chunks/dep-9e5a468d.js');
require('../../_chunks/dep-f26edb7b.js');
require('../../_chunks/dep-f33c1939.js');
require('../../_chunks/dep-21ece627.js');
require('../../_chunks/dep-25e4aa84.js');
require('../../_chunks/dep-e1fbe1c3.js');
require('../../_chunks/dep-df2b541f.js');
require('../../_chunks/dep-edd366db.js');
require('../../_chunks/dep-a56c4939.js');
require('../../_chunks/dep-6c297e20.js');
require('../../_chunks/dep-b7ad4d54.js');
require('../../_chunks/dep-a2cb9299.js');
require('../../_chunks/dep-f981815b.js');
require('../../common/Portal.js');
require('react-dom');
require('../../hooks/useLayoutEffect.js');
require('../../loading/gradient.js');
require('../../_chunks/dep-dc4ce063.js');
require('../../_chunks/dep-002fcc1e.js');
require('../../_chunks/dep-2ffa3ff1.js');
require('../../hooks/useDomRefCallback.js');
require('../../loading/defaultProps.js');
require('../../hooks/useDefaultProps.js');
require('../../loading/plugin.js');
require('../../_util/react-render.js');
require('../../_chunks/dep-65ef8e09.js');
require('../../common/PluginContainer.js');
require('../../config-provider/ConfigProvider.js');
require('../../_chunks/dep-ab2f63ec.js');
require('../../_chunks/dep-a48c7e8b.js');
require('../../_chunks/dep-3d4656ee.js');
require('../../_chunks/dep-0ffc9d96.js');
require('../../_chunks/dep-efe6d243.js');
require('../../_chunks/dep-4b18243f.js');
require('../../_chunks/dep-bff2c990.js');
require('../../link/Link.js');
require('../../_chunks/dep-8fa3a4c2.js');
require('../../link/defaultProps.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
function NormalFile(props) {
var _displayFiles$, _displayFiles$0$respo;
var theme = props.theme,
disabled = props.disabled,
classPrefix = props.classPrefix,
locale = props.locale;
var _useGlobalIcon = hooks_useGlobalIcon["default"]({
CloseIcon: tdesignIconsReact.CloseIcon,
TimeFilledIcon: tdesignIconsReact.TimeFilledIcon,
CheckCircleFilledIcon: tdesignIconsReact.CheckCircleFilledIcon,
ErrorCircleFilledIcon: tdesignIconsReact.ErrorCircleFilledIcon,
CloseCircleFilledIcon: tdesignIconsReact.CloseCircleFilledIcon
}),
CloseIcon = _useGlobalIcon.CloseIcon,
TimeFilledIcon = _useGlobalIcon.TimeFilledIcon,
CheckCircleFilledIcon = _useGlobalIcon.CheckCircleFilledIcon,
ErrorCircleFilledIcon = _useGlobalIcon.ErrorCircleFilledIcon,
CloseCircleFilledIcon = _useGlobalIcon.CloseCircleFilledIcon;
var uploadPrefix = "".concat(classPrefix, "-upload");
var renderProgress = function renderProgress(percent) {
return /* @__PURE__ */React__default["default"].createElement("div", {
className: "".concat(uploadPrefix, "__single-progress")
}, /* @__PURE__ */React__default["default"].createElement(loading_index.Loading, null), /* @__PURE__ */React__default["default"].createElement("span", {
className: "".concat(uploadPrefix, "__single-percent")
}, percent || 0, "%"));
};
var renderFilePreviewAsText = function renderFilePreviewAsText(files) {
var _files$;
if (theme !== "file") return null;
if (!props.multiple && ((_files$ = files[0]) === null || _files$ === void 0 ? void 0 : _files$.status) === "fail" && props.autoUpload) {
return null;
}
return files.map(function (file, index) {
var fileName = props.abridgeName && file.name ? utils.abridgeName.apply(void 0, [file.name].concat(toConsumableArray._toConsumableArray(props.abridgeName))) : file.name;
return /* @__PURE__ */React__default["default"].createElement("div", {
className: "".concat(uploadPrefix, "__single-display-text ").concat(uploadPrefix, "__display-text--margin"),
key: file.name + index + file.percent + file.status
}, file.url ? /* @__PURE__ */React__default["default"].createElement(link_index.Link, {
href: file.url,
target: "_blank",
hover: "color",
size: "small",
className: "".concat(uploadPrefix, "__single-name")
}, fileName) : /* @__PURE__ */React__default["default"].createElement("span", {
className: "".concat(uploadPrefix, "__single-name")
}, fileName), file.status === "fail" && /* @__PURE__ */React__default["default"].createElement("div", {
className: "".concat(uploadPrefix, "__flow-status ").concat(uploadPrefix, "__file-fail")
}, /* @__PURE__ */React__default["default"].createElement(ErrorCircleFilledIcon, null)), file.status === "waiting" && /* @__PURE__ */React__default["default"].createElement("div", {
className: "".concat(uploadPrefix, "__flow-status ").concat(uploadPrefix, "__file-waiting")
}, /* @__PURE__ */React__default["default"].createElement(TimeFilledIcon, null)), file.status === "progress" && renderProgress(file.percent), !disabled && file.status !== "progress" && /* @__PURE__ */React__default["default"].createElement(CloseIcon, {
className: "".concat(uploadPrefix, "__icon-delete"),
onClick: function onClick(e) {
return props.onRemove({
e: e,
file: file,
index: index
});
}
}));
});
};
var renderFilePreviewAsInput = function renderFilePreviewAsInput() {
var _props$abridgeName;
var file = props.displayFiles[0];
var inputTextClass = ["".concat(classPrefix, "-input__inner"), defineProperty._defineProperty({}, "".concat(uploadPrefix, "__placeholder"), !props.displayFiles[0])];
var disabledClass = disabled ? "".concat(classPrefix, "-is-disabled") : "";
var fileName = (_props$abridgeName = props.abridgeName) !== null && _props$abridgeName !== void 0 && _props$abridgeName.length && file !== null && file !== void 0 && file.name ? utils.abridgeName.apply(void 0, [file.name].concat(toConsumableArray._toConsumableArray(props.abridgeName))) : file === null || file === void 0 ? void 0 : file.name;
return /* @__PURE__ */React__default["default"].createElement("div", {
className: "".concat(uploadPrefix, "__single-input-preview ").concat(classPrefix, "-input ").concat(disabledClass)
}, /* @__PURE__ */React__default["default"].createElement("div", {
className: classNames__default["default"](inputTextClass)
}, /* @__PURE__ */React__default["default"].createElement("span", {
className: classNames__default["default"]("".concat(uploadPrefix, "__single-input-text"), defineProperty._defineProperty({}, props.placeholderClass, props.placeholder && !(file !== null && file !== void 0 && file.name)))
}, file !== null && file !== void 0 && file.name ? fileName : props.placeholder), (file === null || file === void 0 ? void 0 : file.status) === "progress" && renderProgress(file.percent), (file === null || file === void 0 ? void 0 : file.status) === "waiting" && /* @__PURE__ */React__default["default"].createElement(TimeFilledIcon, {
className: "".concat(uploadPrefix, "__status-icon ").concat(uploadPrefix, "__file-waiting")
}), (file === null || file === void 0 ? void 0 : file.name) && file.status === "success" && /* @__PURE__ */React__default["default"].createElement(CheckCircleFilledIcon, {
className: "".concat(uploadPrefix, "__status-icon")
}), (file === null || file === void 0 ? void 0 : file.name) && file.status === "fail" && /* @__PURE__ */React__default["default"].createElement(ErrorCircleFilledIcon, {
className: "".concat(uploadPrefix, "__status-icon ").concat(uploadPrefix, "__file-fail")
}), Boolean(!disabled && (file === null || file === void 0 ? void 0 : file.name)) && /* @__PURE__ */React__default["default"].createElement(CloseCircleFilledIcon, {
className: "".concat(uploadPrefix, "__single-input-clear"),
onClick: function onClick(e) {
return props.onRemove({
e: e,
file: file,
index: 0
});
}
})));
};
var displayFiles = props.displayFiles,
fileListDisplay = props.fileListDisplay;
var fileListDisplayNode = _util_parseTNode["default"](fileListDisplay, {
onRemove: props.onRemove,
toUploadFiles: props.toUploadFiles,
sizeOverLimitMessage: props.sizeOverLimitMessage,
locale: props.locale,
files: displayFiles
});
var classes = ["".concat(uploadPrefix, "__single"), "".concat(uploadPrefix, "__single-").concat(theme)];
return /* @__PURE__ */React__default["default"].createElement("div", {
className: classNames__default["default"](classes)
}, theme === "file-input" && renderFilePreviewAsInput(), props.children, theme === "file" && props.placeholder && !displayFiles[0] && /* @__PURE__ */React__default["default"].createElement("small", {
className: classNames__default["default"]([props.tipsClasses, props.placeholderClass])
}, props.placeholder), fileListDisplayNode === null ? null : fileListDisplayNode || renderFilePreviewAsText(displayFiles), !props.multiple && ((_displayFiles$ = displayFiles[0]) === null || _displayFiles$ === void 0 ? void 0 : _displayFiles$.status) === "fail" && theme === "file" ? /* @__PURE__ */React__default["default"].createElement("small", {
className: classNames__default["default"](props.errorClasses)
}, ((_displayFiles$0$respo = displayFiles[0].response) === null || _displayFiles$0$respo === void 0 ? void 0 : _displayFiles$0$respo.error) || locale.progress.failText) : null);
}
NormalFile.displayName = "NormalFile";
exports["default"] = NormalFile;
//# sourceMappingURL=NormalFile.js.map