static: add basic file tree view
This commit is contained in:
parent
c8b26f74f6
commit
c16568f689
|
@ -3,6 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Sanic - Flexbox layout</title>
|
<title>Sanic - Flexbox layout</title>
|
||||||
|
<link rel="stylesheet" href="treeview.css">
|
||||||
<link rel="stylesheet" href="sanic.css">
|
<link rel="stylesheet" href="sanic.css">
|
||||||
<script src="sanic.js"></script>
|
<script src="sanic.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
@ -140,7 +141,54 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="controls_bottom">
|
<div id="controls_bottom">
|
||||||
<div id="playlist_controls">
|
<div id="playlist_controls">
|
||||||
playlist controls
|
<ul class="tree">
|
||||||
|
<li>
|
||||||
|
<details open>
|
||||||
|
<summary>/</summary>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<details>
|
||||||
|
<summary>00_music</summary>
|
||||||
|
<ul>
|
||||||
|
<li>autosort</li>
|
||||||
|
<li>reimport</li>
|
||||||
|
<li>unsortable</li>
|
||||||
|
<li>youtube</li>
|
||||||
|
</ul>
|
||||||
|
</details>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<details>
|
||||||
|
<summary>01_incoming</summary>
|
||||||
|
<ul>
|
||||||
|
<li>coon</li>
|
||||||
|
<li>cascha</li>
|
||||||
|
<li>Xen</li>
|
||||||
|
</ul>
|
||||||
|
</details>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<details>
|
||||||
|
<summary>02_megablast</summary>
|
||||||
|
<ul>
|
||||||
|
<li>dnb</li>
|
||||||
|
<li>mix</li>
|
||||||
|
</ul>
|
||||||
|
</details>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<details>
|
||||||
|
<summary>03_mfs</summary>
|
||||||
|
<ul>
|
||||||
|
<li>ambient</li>
|
||||||
|
<li>electronic</li>
|
||||||
|
</ul>
|
||||||
|
</details>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</details>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div id="playlist_tracklist">
|
<div id="playlist_tracklist">
|
||||||
<table>
|
<table>
|
||||||
|
|
91
static/flexbox/treeview.css
Normal file
91
static/flexbox/treeview.css
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
/* https://iamkate.com/code/tree-views/ */
|
||||||
|
|
||||||
|
/* Custom properties */
|
||||||
|
|
||||||
|
.tree {
|
||||||
|
--spacing : 1.0rem;
|
||||||
|
--radius : 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Padding */
|
||||||
|
|
||||||
|
.tree li {
|
||||||
|
display : block;
|
||||||
|
position : relative;
|
||||||
|
padding-left : calc(2 * var(--spacing) - var(--radius) - 2px + 10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tree ul {
|
||||||
|
margin-left : calc(var(--radius) - var(--spacing));
|
||||||
|
padding-left : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Vertical lines */
|
||||||
|
|
||||||
|
.tree ul li {
|
||||||
|
border-left : 2px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tree ul li:last-child {
|
||||||
|
border-color : transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Horizontal lines */
|
||||||
|
|
||||||
|
.tree ul li::before {
|
||||||
|
content : '';
|
||||||
|
display : block;
|
||||||
|
position : absolute;
|
||||||
|
top : calc(var(--spacing) / -2);
|
||||||
|
left : -2px;
|
||||||
|
width : calc(var(--spacing) + 2px);
|
||||||
|
height : calc(var(--spacing) + 1px);
|
||||||
|
border : solid #ddd;
|
||||||
|
border-width : 0 0 2px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Summaries */
|
||||||
|
|
||||||
|
.tree summary {
|
||||||
|
display : block;
|
||||||
|
cursor : pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tree summary::marker,
|
||||||
|
.tree summary::-webkit-details-marker {
|
||||||
|
display : none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tree summary:focus {
|
||||||
|
outline : none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tree summary:focus-visible {
|
||||||
|
outline : 1px dotted #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Markers */
|
||||||
|
|
||||||
|
.tree li::after,
|
||||||
|
.tree summary::before {
|
||||||
|
content : '';
|
||||||
|
display : block;
|
||||||
|
position : absolute;
|
||||||
|
top : calc(var(--spacing) / 2 - var(--radius));
|
||||||
|
left : calc(var(--spacing) - var(--radius) - 1px);
|
||||||
|
width : calc(2 * var(--radius));
|
||||||
|
height : calc(2 * var(--radius));
|
||||||
|
border-radius : 50%;
|
||||||
|
background : #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Expand and collapse buttons */
|
||||||
|
|
||||||
|
.tree summary::before {
|
||||||
|
z-index : 1;
|
||||||
|
background : #696 url('../img/expand-collapse.svg') 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tree details[open] > summary::before {
|
||||||
|
background-position : calc(-2 * var(--radius)) 0;
|
||||||
|
}
|
7
static/img/expand-collapse.svg
Normal file
7
static/img/expand-collapse.svg
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="20">
|
||||||
|
<g fill="#fff">
|
||||||
|
<path d="m5 9h4v-4h2v4h4v2h-4v4h-2v-4h-4z"/>
|
||||||
|
<path d="m25 9h10v2h-10z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 199 B |
Loading…
Reference in a new issue