Special cakes UI: overlay drawer, basket integration, catalogue tag filter, form parsing, JS save/edit/remove. HTMX navigation: MainContent component, nav links with hx-get, handlers return partial on HX-Request. Dashboard: metrics grid, CakeBreakdown, OrderRow with status select, CakeCounts/OrderCounts, torty filter, tort badge, results-pane. Collapsible sidebar: toggle button, localStorage, CSS transitions. Location field: dropdown replaced with pill toggle. Inline style cleanup: moved to CSS classes (tag-grid, grow, icon.sm, header-actions, toggle-group, success-icon, etc.). Dead CSS removal: pagination, status-chip, badge-pill, login-page. Helpers: exported CakeTitle/OrderTitle, added tagNames, tagIDsComma, orderItemsDesc, specialCakeDetail, removed unused helpers.
79 lines
2.6 KiB
Text
79 lines
2.6 KiB
Text
package templates
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"git.bronku.xyz/bronku/cake-order-tracker/models"
|
|
)
|
|
|
|
templ SpecialCakeOverlay(allTags []models.Tag) {
|
|
<div id="sc-overlay" class="overlay">
|
|
<div class="overlay-backdrop" onclick="closeSpecialCakeOverlay()"></div>
|
|
<div class="overlay-panel">
|
|
<div class="overlay-header">
|
|
<h2>
|
|
<span class="material-symbols-outlined">cake_add</span>
|
|
<span id="sc-overlay-title">Dodaj tort specjalny</span>
|
|
</h2>
|
|
<button type="button" class="close-btn" onclick="closeSpecialCakeOverlay()">
|
|
<span class="material-symbols-outlined">close</span>
|
|
</button>
|
|
</div>
|
|
<div class="overlay-body">
|
|
<div class="overlay-form">
|
|
<div class="form-group">
|
|
<label>Nazwa *</label>
|
|
<input class="form-input" type="text" id="sc-name" placeholder="Nazwa tortu"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Cena *</label>
|
|
<input class="form-input" type="number" id="sc-price" min="0" step="0.01" placeholder="0.00"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Wielkość</label>
|
|
<input class="form-input" type="text" id="sc-size" placeholder="np. 20cm, 30x40"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Kształt</label>
|
|
<select class="form-input" id="sc-shape">
|
|
<option value="">—</option>
|
|
<option value="round">Okrągły</option>
|
|
<option value="square">Kwadrat</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Smak</label>
|
|
<input class="form-input" type="text" id="sc-flavour" placeholder="np. czekoladowy"/>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Notatki</label>
|
|
<input class="form-input" type="text" id="sc-notes" placeholder="Dodatkowe informacje"/>
|
|
</div>
|
|
if len(allTags) > 0 {
|
|
<div class="form-group">
|
|
<label>Tagi</label>
|
|
<div class="tag-grid" id="sc-overlay-tags">
|
|
for _, t := range allTags {
|
|
<label class="tag-chip">
|
|
<input type="checkbox" class="sc-tag-cb" value={ strconv.Itoa(t.ID) } style="display:none"/>
|
|
{ t.Name }
|
|
</label>
|
|
}
|
|
</div>
|
|
<div class="horizontal-group" style="margin-top:0.375rem">
|
|
<input class="form-input grow" type="text" id="sc-new-tag" placeholder="Nowy tag..."/>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
<div class="overlay-footer">
|
|
<button type="button" class="btn outline" onclick="closeSpecialCakeOverlay()">Anuluj</button>
|
|
<button type="button" class="btn primary" onclick="saveSpecialCake()">
|
|
<span class="material-symbols-outlined">check</span>
|
|
Zapisz
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|