mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-02 20:01:51 +02:00
order detail on click in a modal
This commit is contained in:
parent
040872d66d
commit
daea05835a
4 changed files with 104 additions and 3 deletions
|
@ -116,7 +116,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<th>Total pour la commande groupée</th>
|
<th>Total</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th>{{ grouped_order.total_price }} €</th>
|
<th>{{ grouped_order.total_price }} €</th>
|
||||||
|
@ -136,6 +136,7 @@
|
||||||
<th>Participant·e</th>
|
<th>Participant·e</th>
|
||||||
<th>Montant</th>
|
<th>Montant</th>
|
||||||
<th>Contact</th>
|
<th>Contact</th>
|
||||||
|
<th>Voir</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -144,13 +145,41 @@
|
||||||
<td>{{ order.author }}</td>
|
<td>{{ order.author }}</td>
|
||||||
<td>{{ order.price }} €</td>
|
<td>{{ order.price }} €</td>
|
||||||
<td><a href="mailto:{{ order.author.email }}">{{ order.author.email }}</a></td>
|
<td><a href="mailto:{{ order.author.email }}">{{ order.author.email }}</a></td>
|
||||||
|
<td><button class="button is-info is-small js-modal-trigger" data-target="order-detail-{{ order.id }}">
|
||||||
|
Voir
|
||||||
|
</button></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<!-- Order detail modal -->
|
||||||
|
<div id="order-detail-{{ order.id }}" class="modal">
|
||||||
|
<div class="modal-background"></div>
|
||||||
|
<div class="modal-card ">
|
||||||
|
<header class="modal-card-head has-background-info">
|
||||||
|
<div class="modal-card-title-container">
|
||||||
|
<p class="modal-card-title">Commande de {{ order.author }} : n°{{ order.id }}</p>
|
||||||
|
</div>
|
||||||
|
<button class="delete" aria-label="close"></button>
|
||||||
|
</header>
|
||||||
|
<section class="modal-card-body">
|
||||||
|
{% for item in order.ordered_items.all %}
|
||||||
|
{{ item.nb }} {{ item.item.name }}
|
||||||
|
<hr class="mb-0 mt-1">
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</section>
|
||||||
|
<footer class="modal-card-foot">
|
||||||
|
<p class="mini-title">Total à payer</p>
|
||||||
|
<p>{{ order.price }} €</p>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<th>Total pour la commande groupée</th>
|
<th>Total</th>
|
||||||
<th>{{ grouped_order.total_price }} €</th>
|
<th>{{ grouped_order.total_price }} €</th>
|
||||||
<th></th>
|
<th></th>
|
||||||
|
<th></th>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
</table>
|
</table>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -198,5 +227,52 @@
|
||||||
|
|
||||||
// Open by default the "resume" tab at first
|
// Open by default the "resume" tab at first
|
||||||
openTab("resume");
|
openTab("resume");
|
||||||
|
|
||||||
|
// Modal
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
// Functions to open and close a modal
|
||||||
|
function openModal($el) {
|
||||||
|
$el.classList.add('is-active');
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeModal($el) {
|
||||||
|
$el.classList.remove('is-active');
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeAllModals() {
|
||||||
|
(document.querySelectorAll('.modal') || []).forEach(($modal) => {
|
||||||
|
closeModal($modal);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add a click event on buttons to open a specific modal
|
||||||
|
(document.querySelectorAll('.js-modal-trigger') || []).forEach(($trigger) => {
|
||||||
|
const modal = $trigger.dataset.target;
|
||||||
|
const $target = document.getElementById(modal);
|
||||||
|
|
||||||
|
$trigger.addEventListener('click', () => {
|
||||||
|
openModal($target);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add a click event on various child elements to close the parent modal
|
||||||
|
(document.querySelectorAll('.modal-background, .modal-close, .modal-card-head .delete, .modal-card-foot .button') || []).forEach(($close) => {
|
||||||
|
const $target = $close.closest('.modal');
|
||||||
|
|
||||||
|
$close.addEventListener('click', () => {
|
||||||
|
closeModal($target);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add a keyboard event to close all modals
|
||||||
|
document.addEventListener('keydown', (event) => {
|
||||||
|
const e = event || window.event;
|
||||||
|
|
||||||
|
if (e.keyCode === 27) { // Escape key
|
||||||
|
closeAllModals();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</script>
|
</script>
|
|
@ -10303,6 +10303,20 @@ a {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.modal-card-foot {
|
||||||
|
display: block;
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-card {
|
||||||
|
max-width: 90vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-card-head {
|
||||||
|
padding: 1rem;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
@media screen and (min-width: 1024px) {
|
@media screen and (min-width: 1024px) {
|
||||||
.navbar.side-nav {
|
.navbar.side-nav {
|
||||||
right: inherit;
|
right: inherit;
|
||||||
|
|
|
@ -14,3 +14,13 @@ a
|
||||||
font-size: 0.7rem
|
font-size: 0.7rem
|
||||||
.content
|
.content
|
||||||
padding: 0
|
padding: 0
|
||||||
|
.modal-card-foot
|
||||||
|
display: block
|
||||||
|
padding: 1rem
|
||||||
|
|
||||||
|
.modal-card
|
||||||
|
max-width: 90vw
|
||||||
|
|
||||||
|
.modal-card-head
|
||||||
|
padding: 1rem
|
||||||
|
justify-content: space-between
|
||||||
|
|
|
@ -7,6 +7,7 @@ $grey-text: #7a7a7a
|
||||||
$primary: $betterave
|
$primary: $betterave
|
||||||
$info: $beige
|
$info: $beige
|
||||||
$text: $bright-black
|
$text: $bright-black
|
||||||
|
$grey-text: #7a7a7a
|
||||||
|
|
||||||
// Navbar
|
// Navbar
|
||||||
$side-nav-width: 220px
|
$side-nav-width: 220px
|
||||||
|
|
Loading…
Reference in a new issue