diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2024-01-23 11:30:55 +0100 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2024-01-23 11:30:55 +0100 |
commit | 84a94933b35d7c0969d332fe5c18f3f5f3c6de16 (patch) | |
tree | 76396b5764915b09d74c4a87a1f4412f7ed94407 | |
parent | 5e0e9f8a42d3b68e744abcd95f10d6a52f866463 (diff) | |
download | gallery-84a94933b35d7c0969d332fe5c18f3f5f3c6de16.tar.gz gallery-84a94933b35d7c0969d332fe5c18f3f5f3c6de16.tar.xz gallery-84a94933b35d7c0969d332fe5c18f3f5f3c6de16.zip |
gallery: make it possible to collapse tag spaces
-rw-r--r-- | public/gallery.js | 23 | ||||
-rw-r--r-- | public/style.css | 6 |
2 files changed, 17 insertions, 12 deletions
diff --git a/public/gallery.js b/public/gallery.js index 01439f7..decb197 100644 --- a/public/gallery.js +++ b/public/gallery.js @@ -472,13 +472,15 @@ let ViewBar = { m('ul', ViewModel.paths.map(path => m('li', m(ViewBarPath, {path})))), m('h2', "Tags"), - Object.entries(ViewModel.tags).map(([space, tags]) => [ - m("h3", m(m.route.Link, {href: `/tags/${space}`}, space)), - m("ul.tags", Object.entries(tags) - .sort(([t1, w1], [t2, w2]) => (w2 - w1)) - .map(([tag, score]) => - m(ScoredTag, {space, tagname: tag, score}))), - ]), + Object.entries(ViewModel.tags).map(([space, tags]) => + m('details[open]', [ + m('summary', m("h3", + m(m.route.Link, {href: `/tags/${space}`}, space))), + m("ul.tags", Object.entries(tags) + .sort(([t1, w1], [t2, w2]) => (w2 - w1)) + .map(([tag, score]) => + m(ScoredTag, {space, tagname: tag, score}))), + ])), ]) }, } @@ -609,13 +611,14 @@ let SearchRelated = { view(vnode) { return Object.entries(SearchModel.related) .sort((a, b) => a[0].localeCompare(b[0])) - .map(([space, tags]) => [ - m('h2', space), + .map(([space, tags]) => m('details[open]', [ + m('summary', m('h2', + m(m.route.Link, {href: `/tags/${space}`}, space))), m('ul.tags', tags .sort((a, b) => (b.score - a.score)) .map(({tag, score}) => m(ScoredTag, {space, tagname: tag, score}))), - ]) + ])) }, } diff --git a/public/style.css b/public/style.css index 7fd0079..9acf10b 100644 --- a/public/style.css +++ b/public/style.css @@ -24,13 +24,15 @@ a { color: inherit; } .header .activity { padding: .25rem .5rem; align-self: center; color: #fff; } .header .activity.error { color: #f00; } +summary h2, summary h3 { display: inline-block; } + .sidebar { padding: .25rem .5rem; background: var(--shade-color); border-right: 1px solid #ccc; overflow: auto; min-width: 10rem; max-width: 20rem; flex-shrink: 0; } .sidebar input { width: 100%; box-sizing: border-box; margin: .5rem 0; font-size: inherit; } .sidebar h2 { margin: 0.5em 0 0.25em 0; padding: 0; font-size: 1.2rem; } -.sidebar ul { margin: .5rem 0; padding: 0; } +.sidebar ul { margin: 0; padding: 0; } .sidebar .path { margin: .5rem -.5rem; } .sidebar .path li { margin: 0; padding: 0; } @@ -81,7 +83,7 @@ img.thumbnail, .thumbnail.missing { box-shadow: 0 0 3px rgba(0, 0, 0, 0.75); .viewbar { padding: .25rem .5rem; background: #eee; border-left: 1px solid #ccc; min-width: 20rem; overflow: auto; } .viewbar h2 { margin: 0.5em 0 0.25em 0; padding: 0; font-size: 1.2rem; } -.viewbar h3 { margin: 0.25em 0; padding: 0; font-size: 1.1rem; } +.viewbar h3 { margin: 0.5em 0 0.25em 0; padding: 0; font-size: 1.1rem; } .viewbar ul { margin: 0; padding: 0 0 0 1.25em; list-style-type: "- "; } .viewbar ul.tags { padding: 0; list-style-type: none; } .viewbar li { margin: 0; padding: 0; } |