adminforth 3.13.13 → 3.13.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,16 +2,22 @@
2
2
  <div class="inline-flex items-center gap-1">
3
3
  <Tooltip v-if="tooltipText">
4
4
  <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
+ }"
7
10
  @click="toggle"
8
11
  >
9
12
  <span
10
13
  class="cursor-pointer select-none transition-all duration-200 text-lightListTableText dark:text-darkListTableText"
11
14
  :class="{
12
15
  'block truncate': compact,
16
+ 'block': isMultiline,
13
17
  'blur-[7px] hover:blur-[5px] brightness-50 dark:brightness-150': !show,
18
+ 'pointer-events-none': isMultiline && !show,
14
19
  }"
20
+ @click="onValueClick"
15
21
  >
16
22
  <template v-if="compact">{{ visualValue }}</template>
17
23
  <ValueRenderer v-else :column="column" :record="record" />
@@ -23,16 +29,22 @@
23
29
  </Tooltip>
24
30
  <div
25
31
  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
+ }"
28
37
  @click="toggle"
29
38
  >
30
39
  <span
31
40
  class="cursor-pointer select-none transition-all duration-200 text-lightListTableText dark:text-darkListTableText"
32
41
  :class="{
33
42
  'block truncate': compact,
43
+ 'block': isMultiline,
34
44
  'blur-[7px] hover:blur-[5px] brightness-50 dark:brightness-150': !show,
45
+ 'pointer-events-none': isMultiline && !show,
35
46
  }"
47
+ @click="onValueClick"
36
48
  >
37
49
  <template v-if="compact">{{ visualValue }}</template>
38
50
  <ValueRenderer v-else :column="column" :record="record" />
@@ -83,16 +95,25 @@ const { alert } = useAdminforth();
83
95
 
84
96
  const show = ref(false);
85
97
 
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
+ });
87
105
 
88
106
  const compact = computed(() => props.meta?.compact);
89
107
  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);
91
113
  const visualValue = computed(() => {
92
114
  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)}`;
96
117
  }
97
118
  return val;
98
119
  });
@@ -112,6 +133,12 @@ function toggle(event: MouseEvent) {
112
133
  event.stopPropagation();
113
134
  }
114
135
 
136
+ function onValueClick(event: MouseEvent) {
137
+ if (isMultiline.value && show.value && eyeButton.value) {
138
+ event.stopPropagation();
139
+ }
140
+ }
141
+
115
142
  function copyToCB() {
116
143
  navigator.clipboard.writeText(rawValue.value);
117
144
  alert({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adminforth",
3
- "version": "3.13.13",
3
+ "version": "3.13.14",
4
4
  "description": "OpenSource Agent-Native forth-generation admin panel",
5
5
  "keywords": [
6
6
  "adminforth",