Skip to content

Commit 800e3fe

Browse files
authored
Merge pull request #713 from devforth/feature/Tracklify/3045/update-blur-to-work-with-json-
fix: update SensitiveBlurCell to handle JSON values
2 parents c5078e4 + 6fdf307 commit 800e3fe

1 file changed

Lines changed: 36 additions & 9 deletions

File tree

adminforth/spa/src/renderers/SensitiveBlurCell.vue

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,22 @@
22
<div class="inline-flex items-center gap-1">
33
<Tooltip v-if="tooltipText">
44
<div
5-
class="overflow-hidden max-h-[20px] rounded-default"
6-
:class="{ 'shrink-0 w-[90px]': compact }"
5+
class="rounded-default me-2"
6+
:class="{
7+
'overflow-hidden max-h-[20px]': !isMultiline,
8+
'shrink-0 w-[90px]': compact,
9+
}"
710
@click="toggle"
811
>
912
<span
1013
class="cursor-pointer select-none transition-all duration-200 text-lightListTableText dark:text-darkListTableText"
1114
:class="{
1215
'block truncate': compact,
16+
'block': isMultiline,
1317
'blur-[7px] hover:blur-[5px] brightness-50 dark:brightness-150': !show,
18+
'pointer-events-none': isMultiline && !show,
1419
}"
20+
@click="onValueClick"
1521
>
1622
<template v-if="compact">{{ visualValue }}</template>
1723
<ValueRenderer v-else :column="column" :record="record" />
@@ -23,16 +29,22 @@
2329
</Tooltip>
2430
<div
2531
v-else
26-
class="overflow-hidden max-h-[20px] rounded-default"
27-
:class="{ 'shrink-0 w-[90px]': compact }"
32+
class="rounded-default me-2"
33+
:class="{
34+
'overflow-hidden max-h-[20px]': !isMultiline,
35+
'shrink-0 w-[90px]': compact,
36+
}"
2837
@click="toggle"
2938
>
3039
<span
3140
class="cursor-pointer select-none transition-all duration-200 text-lightListTableText dark:text-darkListTableText"
3241
:class="{
3342
'block truncate': compact,
43+
'block': isMultiline,
3444
'blur-[7px] hover:blur-[5px] brightness-50 dark:brightness-150': !show,
45+
'pointer-events-none': isMultiline && !show,
3546
}"
47+
@click="onValueClick"
3648
>
3749
<template v-if="compact">{{ visualValue }}</template>
3850
<ValueRenderer v-else :column="column" :record="record" />
@@ -83,16 +95,25 @@ const { alert } = useAdminforth();
8395
8496
const show = ref(false);
8597
86-
const rawValue = computed(() => props.record[props.column.name]);
98+
const rawValue = computed(() => {
99+
const value = props.record[props.column.name];
100+
if (value === null || value === undefined) {
101+
return '';
102+
}
103+
return typeof value === 'object' ? JSON.stringify(value) : String(value);
104+
});
87105
88106
const compact = computed(() => props.meta?.compact);
89107
const showCopy = computed(() => props.meta?.copy);
90-
const eyeButton = computed(() => props.meta?.eyeButton);
108+
109+
const isMultiline = computed(
110+
() => props.column.type === 'json' && !props.column.isArray?.enabled && !compact.value
111+
);
112+
const eyeButton = computed(() => props.meta?.eyeButton ?? isMultiline.value);
91113
const visualValue = computed(() => {
92114
const val = rawValue.value;
93-
if (val && String(val).length > 8) {
94-
const s = String(val);
95-
return `${s.slice(0, 4)}...${s.slice(-4)}`;
115+
if (val.length > 8) {
116+
return `${val.slice(0, 4)}...${val.slice(-4)}`;
96117
}
97118
return val;
98119
});
@@ -112,6 +133,12 @@ function toggle(event: MouseEvent) {
112133
event.stopPropagation();
113134
}
114135
136+
function onValueClick(event: MouseEvent) {
137+
if (isMultiline.value && show.value && eyeButton.value) {
138+
event.stopPropagation();
139+
}
140+
}
141+
115142
function copyToCB() {
116143
navigator.clipboard.writeText(rawValue.value);
117144
alert({

0 commit comments

Comments
 (0)