Merge pull request #20 from Sagittal-ai/feature/FLAS-32-Collapse-expand-post-in-list
FLAS-32: Implement Collapse/Expand Functionality for Blog Posts
This commit is contained in:
commit
aabef73488
3 changed files with 35 additions and 4 deletions
24
flaskr/static/collapse.js
Normal file
24
flaskr/static/collapse.js
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
const toggleAllButton = document.getElementById("toggle-all");
|
||||||
|
const postHeaders = document.querySelectorAll(".post-header");
|
||||||
|
const posts = document.querySelectorAll(".post");
|
||||||
|
|
||||||
|
toggleAllButton.addEventListener("click", function() {
|
||||||
|
posts.forEach(post => {
|
||||||
|
post.classList.toggle("collapsed");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
postHeaders.forEach(header => {
|
||||||
|
header.addEventListener("click", function(event) {
|
||||||
|
const postId = event.currentTarget.getAttribute("onclick").match(/\d+/)[0];
|
||||||
|
togglePostBody(postId);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function togglePostBody(postId) {
|
||||||
|
const postBody = document.getElementById(`post-body-${postId}`);
|
||||||
|
const post = postBody.closest(".post");
|
||||||
|
post.classList.toggle("collapsed");
|
||||||
|
}
|
||||||
|
|
@ -88,6 +88,7 @@ nav ul li a, nav ul li span, header .action {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-end;
|
align-items: flex-end;
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post > header > div:first-of-type {
|
.post > header > div:first-of-type {
|
||||||
|
|
@ -106,6 +107,7 @@ nav ul li a, nav ul li span, header .action {
|
||||||
|
|
||||||
.post .body {
|
.post .body {
|
||||||
white-space: pre-line;
|
white-space: pre-line;
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content:last-child {
|
.content:last-child {
|
||||||
|
|
@ -228,3 +230,7 @@ body.dark-mode .content textarea {
|
||||||
color: #e0e0e0;
|
color: #e0e0e0;
|
||||||
border: 1px solid #555;
|
border: 1px solid #555;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.post.collapsed .body {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
{% block header %}
|
{% block header %}
|
||||||
<h1>{% block title %}Posts{% endblock %}</h1>
|
<h1 id="toggle-all">Posts</h1>
|
||||||
{% if g.user %}
|
{% if g.user %}
|
||||||
<a class="action" href="{{ url_for('blog.create') }}">New</a>
|
<a class="action" href="{{ url_for('blog.create') }}">New</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
@ -10,19 +10,20 @@
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% for post in posts %}
|
{% for post in posts %}
|
||||||
<article class="post">
|
<article class="post">
|
||||||
<header>
|
<header class="post-header">
|
||||||
<div>
|
<div>
|
||||||
<h1>{{ post['title'] }}</h1>
|
<h1 onclick="togglePostBody({{ post['id'] }})">{{ post['title'] }}</h1>
|
||||||
<div class="about">by {{ post['username'] }} on {{ post['created'].strftime('%Y-%m-%d') }}</div>
|
<div class="about">by {{ post['username'] }} on {{ post['created'].strftime('%Y-%m-%d') }}</div>
|
||||||
</div>
|
</div>
|
||||||
{% if g.user['id'] == post['author_id'] %}
|
{% if g.user['id'] == post['author_id'] %}
|
||||||
<a class="action" href="{{ url_for('blog.update', id=post['id']) }}">Edit</a>
|
<a class="action" href="{{ url_for('blog.update', id=post['id']) }}">Edit</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</header>
|
</header>
|
||||||
<p class="body">{{ post['body'] }}</p>
|
<p class="body" id="post-body-{{ post['id'] }}">{{ post['body'] }}</p>
|
||||||
</article>
|
</article>
|
||||||
{% if not loop.last %}
|
{% if not loop.last %}
|
||||||
<hr>
|
<hr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
<script src="{{ url_for('static', filename='collapse.js') }}"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue