This commit is contained in:
j 2023-07-16 11:26:14 +05:30
commit 4b157ed1d1
15 changed files with 305 additions and 133 deletions

View file

@ -1,43 +0,0 @@
.comments h3 {
font-weight: bold;
padding: 4px;
padding-left: 0;
margin: 0;
//display: none;
}
.comments.active h3 {
display: block;
}
.comments .icon svg {
width: 12px;
height: 12px;
}
.add-comment {
width: 100%;
height: 30vh;
text-align: center;
}
.add-comment input {
width: 100px;
}
.add-comment textarea {
width: 80%;
display: block;
background: black;
color: white;
margin: auto;
padding: 0;
border: 0;
}
.add-comment button {
background: red;
border: 0;
}
.comment .text {
white-space: pre-line;
}

View file

@ -0,0 +1,90 @@
.comments h3 {
font-weight: bold;
padding: 4px;
padding-left: 0;
margin: 0;
//display: none;
}
.comments.active h3 {
display: block;
}
.comments .icon svg {
width: 12px;
height: 12px;
}
.add-comment {
box-sizing: border-box;
width: 100%;
height: 30vh;
padding-top: 8px;
padding-left: 4px;
}
@media(max-width:768px) {
.add-comment {
padding-left: 4px;
}
}
.add-comment textarea,
.add-comment input {
padding: 4px;
margin-left: 0;
margin-top: 4px;
margin-bottom: 4px;
margin-right: 4px;
background: none;
color: white;
border: 1px solid green;
}
.add-comment input {
width: calc(50% - 8px);
}
.add-comment textarea {
width: calc(100% - 8px);
height: 100px;
display: block;
}
.add-comment button {
background: black;
color: white;
border: solid 1px green;
padding: 8px;
}
.add-comment button:hover {
border: solid 1px lightgreen;
cursor: pointer;
}
.add-comment {
.buttons {
&.login {
input {
width: calc(25% - 8px);
}
}
}
}
.comment {
padding: 4px;
border-bottom: 1px solid blueviolet;
}
.comment .text {
white-space: pre-line;
}
.comments h3 {
cursor: pointer;
}
.comments.collapsed .block {
display: none;
}
.comments .meta {
color: gray;
}

52
app/static/css/site.scss Normal file
View file

@ -0,0 +1,52 @@
header, footer {
max-width: 1000px;
padding-top: 16px;
margin: auto;
}
header {
a {
color: yellow;
text-decoration: none;
}
}
.index {
padding-top: 16px;
.item {
border-bottom: 1px solid blueviolet;
padding-bottom: 4px;
margin-bottom: 8px;
a {
text-decoration: none;
color: white;
h1 {
text-decoration: underline;
}
}
h1 {
margin: 0;
padding: 0;
}
h1, .info, .comments {
}
.image {
padding-top: 4px;
width: 100%;
img {
width: 100%;
aspect-ratio: 16/9;
object-fit: cover;
}
}
.content {
max-width: 1000px;
margin: auto;
}
}
.archive {
text-align: center;
}
}

View file

@ -9,6 +9,16 @@ body {
line-height: normal;
}
*, *::after, *::before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*:focus {
outline: none;
}
a {
color: rgb(128, 128, 255)
}

View file

@ -1,26 +1,41 @@
function renderComments(data) {
var cdiv = div.querySelector('.comments')
function renderComments(cdiv, data) {
cdiv.innerHTML = `
<h3>
<span class="icon">${icon.down}</span>
Comments
</h3>
<div class="block">
<div class="comments-content">
</div>
</div>
`
const content = cdiv.querySelector('.comments-content')
comments.forEach(comment => {
var c = document.createElement('div')
c.className = 'comment'
c.innerHTML = `
<div class="comment">
<div class="name">${comment.name}</div>
<div class="date">${comment.date}</div>
<div class="text">${comment.text}</div>
<div class="text">${comment.text}</div>
<div class="meta">
by <span class="name">${comment.name}</span>
on
<span class="date">${comment.date}</span>
</div>
`
cdiv.append(c)
content.append(c)
})
var add = document.querySelector('.add-comment')
add.style.display = 'block'
cdiv.append(add)
cdiv.querySelector('.block').append(add)
cdiv.querySelector('h3').addEventListener("click", event => {
var img = cdiv.querySelector('h3 .icon')
if (cdiv.classList.contains("collapsed")) {
cdiv.classList.remove("collapsed")
img.innerHTML = icon.down
} else {
cdiv.classList.add("collapsed")
img.innerHTML = icon.right
}
})
}
document.querySelector('button#add-comment').addEventListener('click', event => {
@ -46,21 +61,20 @@ document.querySelector('button#add-comment').addEventListener('click', event =>
}).then(response => {
return response.json()
}).then(response => {
var comment= document.createElement('div')
var comment = document.createElement('div')
comment.classList.add('comment')
var name = document.createElement('div')
name.classList.add('name')
name.innerText = response.name
comment.append(name)
var date = document.createElement('div')
date.classList.add('date')
date.innerText = response.date
comment.append(date)
var text = document.createElement('div')
text.classList.add('name')
text.innerText = response.text
comment.append(text)
document.querySelector('.comments').append(comment)
comment.innerHTML = `
<div class="text"></div>
<div class="meta">
by <span class="name"></span>
on
<span class="date"></span>
</div>
`
comment.querySelector('.name').innerText = response.name
comment.querySelector('.date').innerText = response.date
comment.querySelector('.text').innerText = response.text
document.querySelector('.comments .comments-content').append(comment)
document.querySelector('.add-comment textarea').value = ''
})
})

View file

@ -30,16 +30,17 @@ function renderItem(data) {
<div class="player">
<div class="video"></div>
</div>
<div class="value">${data.value}</div>
<div class="comments"></div>
<div class="value">
${data.value}
<div class="comments"></div>
</div>
<div class="more">
<a href="${data.link}">Open on ${data.site}</a>
</div>
`
var comments = div.querySelector('.comments')
if (window.renderComments) {
renderComments(comments, data)
renderComments(div.querySelector('.comments'), data)
} else {
comments.remove()
}