aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPortableProgrammer <[email protected]>2025-01-10 22:58:57 +0000
committerPortableProgrammer <[email protected]>2025-01-10 22:58:57 +0000
commit569b3281377e12578b8dcc742e7925b2e2e6950d (patch)
tree744c0af0af576863b0044523760fd13f5d97c618
parent83ab88264880b13e2d0826ee0af8a6f17b18c33e (diff)
Split `post-container` class
Fixes `flex-*` issues in consolidated views.
-rw-r--r--src/mixins/post.pug142
-rw-r--r--src/public/styles.css20
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 | &nbsp;·&nbsp;
20 span.gilded
21 | #{p.gilded} ☆
22 span.post-author
23 | &nbsp;·&nbsp;
24 | u/#{p.author}
18 | &nbsp;·&nbsp; 25 | &nbsp;·&nbsp;
19 span.gilded 26 | #{timeDifference(Date.now(), p.created * 1000)}
20 | #{p.gilded} ☆
21 span.post-author
22 | &nbsp;·&nbsp; 27 | &nbsp;·&nbsp;
23 | u/#{p.author} 28 a(href=`/r/${p.subreddit}?sort=${sortQuery}&view=${viewQuery}`) r/#{p.subreddit}
24 | &nbsp;·&nbsp; 29 | &nbsp;·&nbsp;
25 | #{timeDifference(Date.now(), p.created * 1000)} 30 a(href=`/comments/${p.id}?from=${from}&sort=${sortQuery}&view=${viewQuery}`) #{fmtnum (p.num_comments)} ↩
26 | &nbsp;·&nbsp; 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 | &nbsp;·&nbsp; 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
616details.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}