tav-ui
Version:
111 lines (108 loc) • 4.46 kB
JavaScript
import { computed } from 'vue';
import '../../../../../locales/index2.mjs';
import '../../../../../utils/index2.mjs';
import '../../utils/index2.mjs';
import { tavI18n } from '../../../../../locales/transfer2.mjs';
import { isViewBtnVisible, isDeleteBtnVisible, isUpdateBtnVisible, isDownloadWatermarkBtnVisible, isDownloadBtnVisible, isLogBtnVisible, isVersionColVisible } from '../../utils/visibile2.mjs';
import { validateVersionCachesHasApiFile } from '../../utils/validate2.mjs';
import { isFunction } from '../../../../../utils/is2.mjs';
function defaultActionsBuilder(mode, enabledPreview, enabledUpdate, enabledOwner, enabledVersion, row, handleViewBtnClick, handleUpdateBtnClick, handleDownloadWatermarkBtnClick, handleDownloadBtnClick, handleDeleteBtnClick, handleLogBtnClick, globalConfigUserInfo, VersionCachesController) {
const DEFAULT_ACTIONS = [...enabledPreview ? [{
field: "view",
label: tavI18n("Tav.file.actions.1"),
enabled: isViewBtnVisible(row.hyperlink),
icon: "ant-design:eye-outlined",
onClick: () => {
handleViewBtnClick(row);
}
}] : [], {
field: "delete",
label: tavI18n("Tav.file.actions.6"),
enabled: isDeleteBtnVisible(mode, enabledOwner, globalConfigUserInfo.value, row.owner),
icon: "ant-design:delete-outlined",
popConfirm: {
title: tavI18n("Tav.file.message.9"),
confirm: async () => {
try {
await handleDeleteBtnClick(row);
return true;
} catch (error) {
console.warn("[tavui TaFileCard] delete has error: ", error);
return true;
}
}
}
}, ...isUpdateBtnVisible(enabledUpdate, mode, row.hyperlink, row.auto, enabledOwner, globalConfigUserInfo.value, row.owner) ? [{
field: "update",
label: tavI18n("Tav.file.actions.5"),
enabled: isUpdateBtnVisible(enabledUpdate, mode, row.hyperlink, row.auto, enabledOwner, globalConfigUserInfo.value, row.owner),
disabled: mode === "create" && !validateVersionCachesHasApiFile(VersionCachesController["caches"][row.actualId]),
icon: "ant-design:upload-outlined",
onClick: async () => {
await handleUpdateBtnClick(row);
}
}] : [], {
field: "downloadWatermark",
label: tavI18n("Tav.file.actions.4"),
enabled: isDownloadWatermarkBtnVisible(row.hyperlink, row.watermarkFileDownload),
icon: "ant-design:cloud-download-outlined",
onClick: async () => {
await handleDownloadWatermarkBtnClick(row);
}
}, {
field: "download",
label: tavI18n("Tav.file.actions.3"),
enabled: isDownloadBtnVisible(row.hyperlink, row.sourceFileDownload),
icon: "ant-design:download-outlined",
onClick: async () => {
await handleDownloadBtnClick(row);
}
}, {
field: "log",
label: tavI18n("Tav.file.actions.7"),
enabled: isLogBtnVisible(enabledOwner, globalConfigUserInfo.value, row.owner),
icon: "ant-design:file-text-outlined",
onClick: async () => {
await handleLogBtnClick(row);
}
}, {
field: "version",
label: tavI18n("Tav.file.columns.4"),
enabled: isVersionColVisible(enabledVersion, row.hyperlink, row.auto),
icon: "ant-design:interaction-outlined",
onClick: async () => {
await handleLogBtnClick(row);
}
}];
return DEFAULT_ACTIONS;
}
function useActions(options) {
const {
mergedProps,
handleViewBtnClick,
handleUpdateBtnClick,
handleDownloadWatermarkBtnClick,
handleDownloadBtnClick,
handleDeleteBtnClick,
handleLogBtnClick,
globalConfigUserInfo,
VersionCachesController
} = options;
return computed(() => (row) => {
const actions = mergedProps.value.actions;
const mode = mergedProps.value.mode;
const enabledPreview = mergedProps.value.enabledPreview;
const enabledUpdate = mergedProps.value.enabledUpdate;
const enabledOwner = mergedProps.value.enabledOwner;
const enabledVersion = mergedProps.value.enabledVersion;
let result = defaultActionsBuilder(mode, enabledPreview, enabledUpdate, enabledOwner, enabledVersion, row, handleViewBtnClick, handleUpdateBtnClick, handleDownloadWatermarkBtnClick, handleDownloadBtnClick, handleDeleteBtnClick, handleLogBtnClick, globalConfigUserInfo, VersionCachesController);
if (actions && isFunction(actions)) {
result = actions(result, {
row
});
}
return result;
});
}
export { defaultActionsBuilder, useActions };
//# sourceMappingURL=use-actions2.mjs.map