93 lines
6.0 KiB
Plaintext
93 lines
6.0 KiB
Plaintext
<div class="page-header mb-4">
|
|
<a href="/lists" class="btn btn-outline-secondary mb-3">← Terug naar lijsten</a>
|
|
<div class="d-flex flex-wrap align-items-center justify-content-between gap-3">
|
|
<h1 class="mb-0"><%= list.name %></h1>
|
|
<div class="d-flex flex-wrap gap-2">
|
|
<form method="post" action="/lists/<%= list.id %>/favorites/add" onsubmit="return confirm('Alle favorieten toevoegen aan deze lijst?');"><button class="btn btn-outline-primary" type="submit">Alle favorieten toevoegen</button></form>
|
|
<form method="post" action="/lists/<%= list.id %>/items/reset" onsubmit="return confirm('Alle producten weer openzetten?');"><button class="btn btn-outline-primary" type="submit">Alles weer openzetten</button></form>
|
|
<form method="post" action="/lists/<%= list.id %>/items/clear" onsubmit="return confirm('Weet je zeker dat je alle producten uit deze lijst wilt verwijderen?');"><button class="btn btn-outline-danger" type="submit">Alles verwijderen</button></form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mb-4">
|
|
<div class="card-header"><h3 class="card-title">Product toevoegen</h3></div>
|
|
<div class="card-body">
|
|
<form method="post" action="/lists/<%= list.id %>/items" class="row g-3 align-items-end" data-product-filter>
|
|
<div class="col-md-5">
|
|
<label class="form-label" for="product-search">Zoek op naam</label>
|
|
<input id="product-search" class="form-control" type="search" placeholder="Bijv. melk" data-product-search>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label class="form-label" for="product-category-filter">Filter op categorie</label>
|
|
<select id="product-category-filter" class="form-select" data-product-category>
|
|
<option value="">Alle categorieën</option>
|
|
<% (categories || []).forEach(category => { %><option value="<%= category.id %>"><%= category.icon || "" %> <%= category.name %></option><% }); %>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label" for="product-id">Product</label>
|
|
<select id="product-id" class="form-select" name="product_id" required data-product-select>
|
|
<option value="">Kies een product</option>
|
|
<% (products || []).forEach(product => { %><option value="<%= product.id %>" data-product-option data-product-name="<%= product.name.toLowerCase() %>" data-product-category="<%= product.category_id || '' %>"><%= product.category_icon || "" %> <%= product.name %></option><% }); %>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label class="form-label" for="amount">Hoeveelheid</label>
|
|
<input id="amount" class="form-control" type="number" name="amount" value="1" min="0.5" step="0.5" required>
|
|
</div>
|
|
<div class="col-md-3"><button class="btn btn-primary w-100" type="submit">Toevoegen</button></div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<% if (items.length === 0) { %><p class="text-secondary">Nog geen producten op de lijst.</p><% } else { %>
|
|
<div class="list-group">
|
|
<% items.forEach(item => { %>
|
|
<div class="shopping-list-swipe">
|
|
<div class="swipe-action swipe-action-delete" aria-label="Product verwijderen"><span class="swipe-action-icon">🗑</span><span>Verwijder</span></div>
|
|
<div class="swipe-action swipe-action-check" aria-label="Product afvinken"><span class="swipe-action-icon">☑</span><span>Afvinken</span></div>
|
|
<div class="list-group-item d-flex align-items-center shopping-list-item"
|
|
data-item-id="<%= item.id %>"
|
|
data-product-name="<%= item.product_name %>"
|
|
data-item-amount="<%= item.amount %>"
|
|
data-toggle-url="/lists/<%= list.id %>/items/<%= item.id %>/toggle"
|
|
data-delete-url="/lists/<%= list.id %>/items/<%= item.id %>"
|
|
role="button" tabindex="0">
|
|
<div class="flex-grow-1">
|
|
<strong<% if (item.checked) { %> style="text-decoration: line-through"<% } %>><%= item.product_name %></strong>
|
|
<div class="small text-secondary"><%= item.category_icon || "" %> <%= item.category_name || "Geen categorie" %></div>
|
|
</div>
|
|
<span class="badge bg-info text-white list-item-amount"><%= item.amount %></span>
|
|
</div>
|
|
</div>
|
|
<% }); %>
|
|
</div>
|
|
<% } %>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="amount-modal" tabindex="-1" aria-labelledby="amount-modal-title" aria-hidden="true">
|
|
<div class="modal-dialog modal-dialog-centered">
|
|
<div class="modal-content">
|
|
<form id="amount-form" method="post">
|
|
<div class="modal-header">
|
|
<h2 class="modal-title fs-3" id="amount-modal-title">Hoeveelheid wijzigen</h2>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Sluiten"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p class="text-secondary mb-3" id="amount-product-name"></p>
|
|
<label class="form-label" for="modal-amount">Hoeveelheid</label>
|
|
<input id="modal-amount" class="form-control" type="number" name="amount" min="0.5" step="0.5" required>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Annuleren</button>
|
|
<button type="submit" class="btn btn-primary">Opslaan</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|