From 6fdf3078a77d07df24d1226ff66f6a53a0d29ad7 Mon Sep 17 00:00:00 2001 From: Pavlo Kulyk Date: Mon, 10 Aug 2026 11:09:53 +0300 Subject: [PATCH] fix: update SensitiveBlurCell to handle JSON values --- .../spa/src/renderers/SensitiveBlurCell.vue | 45 +++++++++++++++---- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/adminforth/spa/src/renderers/SensitiveBlurCell.vue b/adminforth/spa/src/renderers/SensitiveBlurCell.vue index 726300106..5355ae30c 100644 --- a/adminforth/spa/src/renderers/SensitiveBlurCell.vue +++ b/adminforth/spa/src/renderers/SensitiveBlurCell.vue @@ -2,16 +2,22 @@
@@ -23,16 +29,22 @@
@@ -83,16 +95,25 @@ const { alert } = useAdminforth(); const show = ref(false); -const rawValue = computed(() => props.record[props.column.name]); +const rawValue = computed(() => { + const value = props.record[props.column.name]; + if (value === null || value === undefined) { + return ''; + } + return typeof value === 'object' ? JSON.stringify(value) : String(value); +}); const compact = computed(() => props.meta?.compact); const showCopy = computed(() => props.meta?.copy); -const eyeButton = computed(() => props.meta?.eyeButton); + +const isMultiline = computed( + () => props.column.type === 'json' && !props.column.isArray?.enabled && !compact.value +); +const eyeButton = computed(() => props.meta?.eyeButton ?? isMultiline.value); const visualValue = computed(() => { const val = rawValue.value; - if (val && String(val).length > 8) { - const s = String(val); - return `${s.slice(0, 4)}...${s.slice(-4)}`; + if (val.length > 8) { + return `${val.slice(0, 4)}...${val.slice(-4)}`; } return val; }); @@ -112,6 +133,12 @@ function toggle(event: MouseEvent) { event.stopPropagation(); } +function onValueClick(event: MouseEvent) { + if (isMultiline.value && show.value && eyeButton.value) { + event.stopPropagation(); + } +} + function copyToCB() { navigator.clipboard.writeText(rawValue.value); alert({