Skip to content

Commit 5379d13

Browse files
committed
feat: JSON columns show real JSON in the design system: one line in the list with the whole value in a popover, on the show page laid out like Prettier with folding in the gutter and copy on hover; AFCL JsonViewer is our own component with a new inline prop, vue3-json-viewer with its double triangles is gone AdminForth/2005
1 parent e3d24fb commit 5379d13

14 files changed

Lines changed: 410 additions & 250 deletions

File tree

‎adminforth/design/system.html‎

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2501,29 +2501,35 @@ <h3 class="t-h3">Storage adapter</h3>
25012501
</section>
25022502

25032503
<section class="sec">
2504-
<div class="sec-head"><span class="sec-name">&lt;JsonViewer&gt;</span><span class="t-sm t-muted">collapsible tree, mono 12px, one accent for strings</span></div>
2504+
<div class="sec-head"><span class="sec-name">&lt;JsonViewer&gt;</span><span class="t-sm t-muted">laid out like Prettier, folds in the gutter, mono 12px, one accent for strings, copy on hover</span></div>
25052505
<div class="grid5">
25062506
<div class="tile">
25072507
<div class="tile-stage top">
25082508
<div class="js">
2509-
<div><span class="tw"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></span><span class="p">{</span></div>
2510-
<div style="padding-left: 16px"><span class="k">"trim"</span><span class="p">: </span><span class="s">"Base"</span><span class="p">,</span></div>
2511-
<div style="padding-left: 16px"><span class="k">"segment"</span><span class="p">: </span><span class="s">"c"</span><span class="p">,</span></div>
2512-
<div style="padding-left: 16px"><span class="k">"doors"</span><span class="p">: </span><span class="n">4</span><span class="p">,</span></div>
2513-
<div style="padding-left: 16px"><span class="k">"certified"</span><span class="p">: </span><span class="b">true</span></div>
2514-
<div><span class="p">}</span></div>
2509+
<div style="display: flex"><span class="tw"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></span><span style="padding-left: 0ch"><span class="p">{</span></span></div>
2510+
<div style="display: flex"><span class="tw"></span><span style="padding-left: 2ch"><span class="k">"trim"</span><span class="p">: </span><span class="s">"Base"</span><span class="p">,</span></span></div>
2511+
<div style="display: flex"><span class="tw"></span><span style="padding-left: 2ch"><span class="k">"photos"</span><span class="p">: </span><span class="p">[</span><span class="s">"front.jpg"</span><span class="p">, </span><span class="s">"side.jpg"</span><span class="p">],</span></span></div>
2512+
<div style="display: flex"><span class="tw"></span><span style="padding-left: 2ch"><span class="k">"doors"</span><span class="p">: </span><span class="n">4</span><span class="p">,</span></span></div>
2513+
<div style="display: flex"><span class="tw"></span><span style="padding-left: 2ch"><span class="k">"certified"</span><span class="p">: </span><span class="b">true</span></span></div>
2514+
<div style="display: flex"><span class="tw"></span><span style="padding-left: 0ch"><span class="p">}</span></span></div>
25152515
</div>
25162516
</div>
2517-
<div class="tile-cap"><b>Expanded</b><code>:expandDepth="1"</code></div>
2517+
<div class="tile-cap"><b>Expanded</b><code>a node within 60 chars stays on one line</code></div>
25182518
</div>
25192519
<div class="tile">
25202520
<div class="tile-stage top">
2521-
<div class="js">
2522-
<div><span class="tw"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></span><span class="k">specifications</span><span class="p">: {…}</span> <span class="badge badge-muted" style="height: 18px; font-size: 11px; font-family: Geist">7 keys</span></div>
2523-
<div><span class="tw"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></span><span class="k">photos</span><span class="p">: […]</span> <span class="badge badge-muted" style="height: 18px; font-size: 11px; font-family: Geist">2 items</span></div>
2521+
<div class="js" style="width: 100%">
2522+
<div style="display: flex; align-items: center"><span class="tw"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></span><span style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0"><span class="k">"specifications"</span><span class="p">: </span><span class="p">{</span><span class="k">"engine"</span><span class="p">: </span><span class="s">"2.0 TDI"</span><span class="p">, </span><span class="k">"power"</span><span class="p">: </span><span class="n">150</span><span class="p">, …}</span></span>&nbsp;<span class="badge badge-muted" style="height: 18px; font-size: 11px; font-family: Geist">7 keys</span></div>
2523+
<div style="display: flex; align-items: center"><span class="tw"><svg class="i" viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></span><span style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0"><span class="k">"photos"</span><span class="p">: </span><span class="p">[</span><span class="s">"front.jpg"</span><span class="p">, </span><span class="s">"side.jpg"</span><span class="p">, …]</span></span>&nbsp;<span class="badge badge-muted" style="height: 18px; font-size: 11px; font-family: Geist">5 items</span></div>
25242524
</div>
25252525
</div>
2526-
<div class="tile-cap"><b>Collapsed</b><code>summary chips</code></div>
2526+
<div class="tile-cap"><b>Folded</b><code>the value in one line + its size</code></div>
2527+
</div>
2528+
<div class="tile">
2529+
<div class="tile-stage">
2530+
<div class="js" style="display: flex; align-items: center; gap: 6px; max-width: 100%"><span style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0"><span class="p">{</span><span class="k">"campaign"</span><span class="p">: </span><span class="s">"cs2026"</span><span class="p">, </span><span class="k">"channel"</span><span class="p">: </span><span class="s">"linkedin"</span><span class="p">, …}</span></span><span class="badge badge-muted" style="height: 18px; font-size: 11px; font-family: Geist">4 keys</span></div>
2531+
</div>
2532+
<div class="tile-cap"><b>Inline</b><code>inline · a click opens it in a popover</code></div>
25272533
</div>
25282534
</div>
25292535
</section>

‎adminforth/pnpm-lock.yaml‎

Lines changed: 0 additions & 44 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎adminforth/spa/package-lock.json‎

Lines changed: 1 addition & 52 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎adminforth/spa/package.json‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@
3737
"vue": "^3.5.44",
3838
"vue-diff": "^1.2.4",
3939
"vue-i18n": "^11.4.14",
40-
"vue-router": "^5.4.0",
41-
"vue3-json-viewer": "^2.2.2"
40+
"vue-router": "^5.4.0"
4241
},
4342
"devDependencies": {
4443
"@rushstack/eslint-patch": "^1.8.0",

0 commit comments

Comments
 (0)