diff options
author | PortableProgrammer <[email protected]> | 2025-01-10 22:58:57 +0000 |
---|---|---|
committer | PortableProgrammer <[email protected]> | 2025-01-10 22:58:57 +0000 |
commit | 569b3281377e12578b8dcc742e7925b2e2e6950d (patch) | |
tree | 744c0af0af576863b0044523760fd13f5d97c618 | |
parent | 83ab88264880b13e2d0826ee0af8a6f17b18c33e (diff) |
Split `post-container` class
Fixes `flex-*` issues in consolidated views.
-rw-r--r-- | src/mixins/post.pug | 142 | ||||
-rw-r--r-- | src/public/styles.css | 20 |
2 files changed, 84 insertions, 78 deletions
diff --git a/src/mixins/post.pug b/src/mixins/post.pug index 30310a8..4ec7614 100644 --- a/src/mixins/post.pug +++ b/src/mixins/post.pug | |||
@@ -6,80 +6,84 @@ mixin post(p, currentUrl) | |||
6 | - var sortQuery = query && query.sort ? query.sort + (query.t ? '&t=' + query.t : '') : 'hot' | 6 | - var sortQuery = query && query.sort ? query.sort + (query.t ? '&t=' + query.t : '') : 'hot' |
7 | article(class=`post`) | 7 | article(class=`post`) |
8 | div.post-container(class=`${query.view} ${p.stickied?"sticky":""}`) | 8 | div.post-container(class=`${query.view} ${p.stickied?"sticky":""}`) |
9 | div.post-text(class=`${query.view}`) | 9 | div.post-info |
10 | div.title-container(class=`${query.view}`) | 10 | div.post-text(class=`${query.view}`) |
11 | a(class=`${query.view}`, href=`/comments/${p.id}?from=${from}&sort=${sortQuery}&view=${viewQuery}`) | 11 | div.title-container(class=`${query.view}`) |
12 | != p.title | 12 | a(class=`${query.view}`, href=`/comments/${p.id}?from=${from}&sort=${sortQuery}&view=${viewQuery}`) |
13 | span.domain (#{p.domain}) | 13 | != p.title |
14 | div.info-container | 14 | span.domain (#{p.domain}) |
15 | p | 15 | div.info-container |
16 | | #{fmtnum(p.ups)} ↑ | 16 | p |
17 | if p.gilded > 0 | 17 | | #{fmtnum(p.ups)} ↑ |
18 | if p.gilded > 0 | ||
19 | | · | ||
20 | span.gilded | ||
21 | | #{p.gilded} ☆ | ||
22 | span.post-author | ||
23 | | · | ||
24 | | u/#{p.author} | ||
18 | | · | 25 | | · |
19 | span.gilded | 26 | | #{timeDifference(Date.now(), p.created * 1000)} |
20 | | #{p.gilded} ☆ | ||
21 | span.post-author | ||
22 | | · | 27 | | · |
23 | | u/#{p.author} | 28 | a(href=`/r/${p.subreddit}?sort=${sortQuery}&view=${viewQuery}`) r/#{p.subreddit} |
24 | | · | 29 | | · |
25 | | #{timeDifference(Date.now(), p.created * 1000)} | 30 | a(href=`/comments/${p.id}?from=${from}&sort=${sortQuery}&view=${viewQuery}`) #{fmtnum (p.num_comments)} ↩ |
26 | | · | 31 | if (query.view == "card" && !isPostGallery(p) && !isPostImage(p) && !isPostVideo(p) && p.selftext_html) |
27 | a(href=`/r/${p.subreddit}?sort=${sortQuery}&view=${viewQuery}`) r/#{p.subreddit} | 32 | div.self-text-overflow.card |
28 | | · | 33 | if p.spoiler || p.over_18 |
29 | a(href=`/comments/${p.id}?from=${from}&sort=${sortQuery}&view=${viewQuery}`) #{fmtnum (p.num_comments)} ↩ | 34 | div.spoiler(id=`spoiler_${p.id}`, onclick=`javascript:document.getElementById('spoiler_${p.id}').style.display = 'none';`) |
30 | if (query.view == "card" && !isPostGallery(p) && !isPostImage(p) && !isPostVideo(p) && p.selftext_html) | 35 | h2 |
31 | div.self-text-overflow.card | 36 | != p.over_18 ? 'nsfw' : 'spoiler' |
32 | if p.spoiler || p.over_18 | 37 | div.self-text.card |
33 | div.spoiler(id=`spoiler_${p.id}`, onclick=`javascript:document.getElementById('spoiler_${p.id}').style.display = 'none';`) | 38 | != convertInlineImageLinks(p.selftext_html) |
34 | h2 | 39 | if query.view != "card" |
35 | != p.over_18 ? 'nsfw' : 'spoiler' | 40 | div.media-preview |
36 | div.self-text.card | 41 | - var onclick = `toggleDetails('${p.id}')` |
37 | != convertInlineImageLinks(p.selftext_html) | 42 | if isPostGallery(p) |
38 | if query.view != "card" | 43 | - var item = (p.over_18 ? `/nsfw.svg` : p.spoiler ? `/spoiler.svg` : postGalleryItems(p)[0].url) |
39 | div.media-preview | 44 | img(src=item onclick=onclick) |
40 | - var onclick = `toggleDetails('${p.id}')` | 45 | else if isPostImage(p) |
46 | - var url = postThumbnail(p) | ||
47 | img(src=url onclick=onclick) | ||
48 | else if isPostVideo(p) | ||
49 | - var decodedVideos = decodePostVideoUrls(p) | ||
50 | video(autoplay="" muted="" data-dashjs-player="" onclick=`toggleDetails('${p.id}')` poster=decodedVideos[4] width="100px" height="100px") | ||
51 | // Scrubber | ||
52 | source(src=decodedVideos[3]) | ||
53 | else if isPostLink(p) | ||
54 | a(href=p.url) | ||
55 | | ↗ | ||
56 | |||
57 | details(id=`${p.id}` open=(query.view == "card") class=`${query.view}`) | ||
58 | summary.expand-post expand media | ||
59 | div.image-viewer | ||
60 | if query.view == "card" && (p.spoiler || p.over_18) && (isPostGallery(p) || isPostImage(p) || isPostVideo(p)) | ||
61 | div.spoiler(id=`spoiler_${p.id}`, onclick=`javascript:document.getElementById('spoiler_${p.id}').style.display = 'none';`) | ||
62 | h2 | ||
63 | != p.over_18 ? 'nsfw' : 'spoiler' | ||
41 | if isPostGallery(p) | 64 | if isPostGallery(p) |
42 | - var item = (p.over_18 ? `/nsfw.svg` : p.spoiler ? `/spoiler.svg` : postGalleryItems(p)[0].url) | 65 | div.gallery |
43 | img(src=item onclick=onclick) | 66 | each item in postGalleryItems(p) |
67 | div.gallery-item | ||
68 | a(href=`/media/${item.url}`) | ||
69 | img(src=item.url loading="lazy") | ||
70 | div.gallery-item-idx | ||
71 | | #{`${item.idx}/${item.total}`} | ||
44 | else if isPostImage(p) | 72 | else if isPostImage(p) |
45 | - var url = postThumbnail(p) | 73 | a(href=`/media/${p.url}`) |
46 | img(src=url onclick=onclick) | 74 | img(src=p.url loading="lazy") |
47 | else if isPostVideo(p) | 75 | else if isPostVideo(p) |
48 | - var decodedVideos = decodePostVideoUrls(p) | 76 | - var decodedVideos = decodePostVideoUrls(p) |
49 | video(autoplay="" muted="" data-dashjs-player="" onclick=`toggleDetails('${p.id}')` poster=decodedVideos[4] width="100px" height="100px") | 77 | video(controls="" muted="" data-dashjs-player="" preload="metadata" playsinline="" poster=decodedVideos[4] objectfit="contain" loading="lazy") |
50 | // Scrubber | 78 | // HLS |
51 | source(src=decodedVideos[3]) | 79 | source(src=decodedVideos[0]) |
80 | // Dash | ||
81 | source(src=decodedVideos[1]) | ||
82 | // Fallback | ||
83 | source(src=decodedVideos[2]) | ||
52 | else if isPostLink(p) | 84 | else if isPostLink(p) |
53 | a(href=p.url) | 85 | a(href=p.url) |
54 | | ↗ | 86 | | #{p.domain} ↗ |
55 | 87 | if (query.view == "compact") | |
56 | details(id=`${p.id}` open=(query.view == "card" && (isPostGallery(p) || isPostImage(p) || isPostVideo(p)))) | 88 | button(onclick=`toggleDetails('${p.id}')`) |
57 | summary.expand-post expand media | 89 | | close |
58 | div.image-viewer | ||
59 | if query.view == "card" && (p.spoiler || p.over_18) && (isPostGallery(p) || isPostImage(p) || isPostVideo(p)) | ||
60 | div.spoiler(id=`spoiler_${p.id}`, onclick=`javascript:document.getElementById('spoiler_${p.id}').style.display = 'none';`) | ||
61 | h2 | ||
62 | != p.over_18 ? 'nsfw' : 'spoiler' | ||
63 | if isPostGallery(p) | ||
64 | div.gallery | ||
65 | each item in postGalleryItems(p) | ||
66 | div.gallery-item | ||
67 | a(href=`/media/${item.url}`) | ||
68 | img(src=item.url loading="lazy") | ||
69 | div.gallery-item-idx | ||
70 | | #{`${item.idx}/${item.total}`} | ||
71 | else if isPostImage(p) | ||
72 | a(href=`/media/${p.url}`) | ||
73 | img(src=p.url loading="lazy") | ||
74 | else if isPostVideo(p) | ||
75 | - var decodedVideos = decodePostVideoUrls(p) | ||
76 | video(controls="" muted="" data-dashjs-player="" preload="metadata" playsinline="" poster=decodedVideos[4] objectfit="contain" loading="lazy") | ||
77 | // HLS | ||
78 | source(src=decodedVideos[0]) | ||
79 | // Dash | ||
80 | source(src=decodedVideos[1]) | ||
81 | // Fallback | ||
82 | source(src=decodedVideos[2]) | ||
83 | if (query.view == "compact") | ||
84 | button(onclick=`toggleDetails('${p.id}')`) | ||
85 | | close | ||
diff --git a/src/public/styles.css b/src/public/styles.css index 8bfdc72..bc0e1ec 100644 --- a/src/public/styles.css +++ b/src/public/styles.css | |||
@@ -302,19 +302,14 @@ summary::before { | |||
302 | object-fit: fill; | 302 | object-fit: fill; |
303 | } | 303 | } |
304 | 304 | ||
305 | .image-viewer a { | ||
306 | font-size: 1.5rem; | ||
307 | padding: unset; | ||
308 | padding-left: 1rem; | ||
309 | } | ||
310 | |||
311 | .image-viewer a:has(img) { | 305 | .image-viewer a:has(img) { |
312 | font-size: 0rem; | 306 | font-size: 0rem; |
313 | padding: unset; | 307 | padding: unset; |
314 | } | 308 | } |
315 | 309 | ||
316 | .media-preview a { | 310 | .media-preview a, |
317 | font-size: 2rem; | 311 | .image-viewer a { |
312 | font-size: 1.5rem; | ||
318 | text-decoration: none; | 313 | text-decoration: none; |
319 | padding: 1rem; | 314 | padding: 1rem; |
320 | } | 315 | } |
@@ -479,7 +474,7 @@ form { | |||
479 | margin-top: 10px; | 474 | margin-top: 10px; |
480 | } | 475 | } |
481 | 476 | ||
482 | .post-container { | 477 | .post-info { |
483 | display: flex; | 478 | display: flex; |
484 | flex-direction: row; | 479 | flex-direction: row; |
485 | align-items: center; | 480 | align-items: center; |
@@ -618,6 +613,13 @@ details:not([open]) summary::before { | |||
618 | padding-right: 10px; | 613 | padding-right: 10px; |
619 | } | 614 | } |
620 | 615 | ||
616 | details.compact { | ||
617 | /* | ||
618 | display: flex; | ||
619 | flex-basis: 100%; | ||
620 | */ | ||
621 | } | ||
622 | |||
621 | .footer { | 623 | .footer { |
622 | padding-bottom: 40px; | 624 | padding-bottom: 40px; |
623 | } | 625 | } |