comments
This commit is contained in:
parent
100fe79b1d
commit
4b157ed1d1
15 changed files with 305 additions and 133 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
90
app/static/css/comments.scss
Normal file
90
app/static/css/comments.scss
Normal 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
52
app/static/css/site.scss
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 = ''
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue