@@ -966,11 +982,11 @@
v-for="action in detailPolicyActionOptions"
:key="action.action"
type="button"
- class="flex min-h-16 items-start gap-2 rounded-lg border px-3 py-2 text-left transition-colors disabled:cursor-not-allowed disabled:opacity-60"
- :class="detailPolicyActionClass"
+ class="theme-2026-card-hover flex min-h-16 items-start gap-2 rounded-[30px] border px-3 py-2 text-left shadow-md transition-all duration-200 hover:-translate-y-0.5 hover:shadow-lg disabled:cursor-not-allowed disabled:opacity-60 disabled:hover:translate-y-0 disabled:hover:shadow-md"
+ :class="[detailPolicyActionClass, cardHoverClass]"
:disabled="isDetailPolicyActionRunning || isDetailLoading || action.disabled"
:title="action.description"
- @click="applyDetailPolicyAction(action.action)"
+ @click="applyDetailPolicyActionAndRefreshHistory(action.action)"
>
{{ t('common.cancel') }}
-
+
@@ -1330,7 +1346,7 @@
{{ t('common.cancel') }}
-
+
@@ -1525,25 +1541,25 @@ const {
copyDetailRetrieveLink,
copyText,
clearSelection,
- deleteFile,
- deleteSelectedFiles,
+ deleteFile: deleteFileRaw,
+ deleteSelectedFiles: deleteSelectedFilesRaw,
deleteSelectedViewPreset,
downloadFile,
exportPreviewText,
handlePageChange,
handlePageSizeChange,
handleSearch,
- applyDetailPolicyAction,
- applySelectedPolicyAction,
- handleBatchUpdate,
- handleUpdate,
+ applyDetailPolicyAction: applyDetailPolicyActionRaw,
+ applySelectedPolicyAction: applySelectedPolicyActionRaw,
+ handleBatchUpdate: handleBatchUpdateRaw,
+ handleUpdate: handleUpdateRaw,
loadViewPresets,
loadFiles,
openBatchEditModal,
openEditModal,
openFileDetail,
openTextPreview,
- refreshFiles,
+ refreshFiles: refreshFileList,
resetFilters,
saveCurrentViewPreset,
setHealthFilter,
@@ -1575,6 +1591,21 @@ const loadHistoryFiles = async () => {
isHistoryLoading.value = false
}
}
+const runFileMutationAndRefreshHistory = async (operation: () => Promise) => {
+ await operation()
+ await loadHistoryFiles()
+}
+const handleUpdateAndRefreshHistory = () => runFileMutationAndRefreshHistory(handleUpdateRaw)
+const handleBatchUpdateAndRefreshHistory = () =>
+ runFileMutationAndRefreshHistory(handleBatchUpdateRaw)
+const deleteFileAndRefreshHistory = (id: number) =>
+ runFileMutationAndRefreshHistory(() => deleteFileRaw(id))
+const deleteSelectedFilesAndRefreshHistory = () =>
+ runFileMutationAndRefreshHistory(deleteSelectedFilesRaw)
+const applySelectedPolicyActionAndRefreshHistory = (action: AdminFilePolicyAction) =>
+ runFileMutationAndRefreshHistory(() => applySelectedPolicyActionRaw(action))
+const applyDetailPolicyActionAndRefreshHistory = (action: AdminFilePolicyAction) =>
+ runFileMutationAndRefreshHistory(() => applyDetailPolicyActionRaw(action))
const handleHistoryPageSizeChange = (size: number) => {
historyPageSize.value = size
historyPage.value = 1
@@ -1992,6 +2023,16 @@ const getInsightBadgeClass = (severity: AdminFileInsightSeverity) => {
return isDarkMode.value ? darkClasses[severity] : lightClasses[severity]
}
+const getInsightActionBadgeClass = (action: string) => {
+ if (action === 'extend_or_delete' || action === 'extend_expiration') {
+ return isDarkMode.value ? 'bg-amber-900/40 text-amber-200' : 'bg-amber-100 text-amber-700'
+ }
+ if (action === 'inspect_storage') {
+ return isDarkMode.value ? 'bg-red-900/40 text-red-200' : 'bg-red-100 text-red-700'
+ }
+ return isDarkMode.value ? 'bg-gray-700 text-gray-300' : 'bg-gray-100 text-gray-700'
+}
+
const getTimelineDotClass = (severity: AdminFileInsightSeverity) => {
const classes: Record = {
success: 'bg-emerald-500',