Enhances customer list and detail views
Improves customer page UI with interactive elements: - Adds quick view sidebar button for each customer row - Implements row-level navigation to customer details - Corrects Danish spelling and typography - Refactors data table layout for better usability Modernizes customer interaction by enabling direct page navigation and quick information access
This commit is contained in:
parent
6b0a84a07e
commit
cd7acaf490
5 changed files with 291 additions and 178 deletions
|
|
@ -51,6 +51,7 @@
|
|||
<swp-card class="customers-list">
|
||||
<swp-data-table>
|
||||
<swp-data-table-header>
|
||||
<swp-data-table-cell></swp-data-table-cell>
|
||||
<swp-data-table-cell localize="customers.column.name">Navn</swp-data-table-cell>
|
||||
<swp-data-table-cell localize="customers.column.phone">Telefon</swp-data-table-cell>
|
||||
<swp-data-table-cell localize="customers.column.email">Email</swp-data-table-cell>
|
||||
|
|
@ -61,7 +62,12 @@
|
|||
<swp-data-table-cell localize="customers.column.tags">Tags</swp-data-table-cell>
|
||||
</swp-data-table-header>
|
||||
|
||||
<swp-data-table-row data-name="Anna Jensen" data-visits="6" data-created="2024-09" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Anna Jensen" data-visits="6" data-created="2024-09" data-href="/kunder/anna-jensen">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar>AJ</swp-avatar>
|
||||
<span>Anna Jensen</span>
|
||||
|
|
@ -75,7 +81,12 @@
|
|||
<swp-data-table-cell></swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Camilla Holm" data-visits="25" data-created="2022-12" data-tags="vip" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Camilla Holm" data-visits="25" data-created="2022-12" data-tags="vip" data-href="/kunder/camilla-holm">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar>CH</swp-avatar>
|
||||
<span>Camilla Holm</span>
|
||||
|
|
@ -91,7 +102,12 @@
|
|||
</swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Emma Larsen" data-visits="8" data-created="2024-06" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Emma Larsen" data-visits="8" data-created="2024-06" data-href="/kunder/emma-larsen">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar>EL</swp-avatar>
|
||||
<span>Emma Larsen</span>
|
||||
|
|
@ -105,7 +121,12 @@
|
|||
<swp-data-table-cell></swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Freja Christensen" data-visits="31" data-created="2022-08" data-tags="vip,allergi" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Freja Christensen" data-visits="31" data-created="2022-08" data-tags="vip,allergi" data-href="/kunder/freja-christensen">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar>FC</swp-avatar>
|
||||
<span>Freja Christensen</span>
|
||||
|
|
@ -122,7 +143,12 @@
|
|||
</swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Ida Andersen" data-visits="3" data-created="2025-10" data-tags="ny" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Ida Andersen" data-visits="3" data-created="2025-10" data-tags="ny" data-href="/kunder/ida-andersen">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar>IA</swp-avatar>
|
||||
<span>Ida Andersen</span>
|
||||
|
|
@ -138,7 +164,12 @@
|
|||
</swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Katrine Berg" data-visits="12" data-created="2024-04" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Katrine Berg" data-visits="12" data-created="2024-04" data-href="/kunder/katrine-berg">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar>KB</swp-avatar>
|
||||
<span>Katrine Berg</span>
|
||||
|
|
@ -152,7 +183,12 @@
|
|||
<swp-data-table-cell></swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Line Frost" data-visits="9" data-created="2024-05" data-tags="sensitiv" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Line Frost" data-visits="9" data-created="2024-05" data-tags="sensitiv" data-href="/kunder/line-frost">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar>LF</swp-avatar>
|
||||
<span>Line Frost</span>
|
||||
|
|
@ -168,7 +204,12 @@
|
|||
</swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Louise Hansen" data-visits="18" data-created="2023-02" data-tags="stamkunde" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Louise Hansen" data-visits="18" data-created="2023-02" data-tags="stamkunde" data-href="/kunder/louise-hansen">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar class="purple">LH</swp-avatar>
|
||||
<span>Louise Hansen</span>
|
||||
|
|
@ -184,7 +225,12 @@
|
|||
</swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Maja Petersen" data-visits="22" data-created="2023-01" data-tags="stamkunde" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Maja Petersen" data-visits="22" data-created="2023-01" data-tags="stamkunde" data-href="/kunder/maja-petersen">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar class="blue">MP</swp-avatar>
|
||||
<span>Maja Petersen</span>
|
||||
|
|
@ -200,7 +246,12 @@
|
|||
</swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Maria Olsen" data-visits="2" data-created="2025-11" data-tags="ny" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Maria Olsen" data-visits="2" data-created="2025-11" data-tags="ny" data-href="/kunder/maria-olsen">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar class="amber">MO</swp-avatar>
|
||||
<span>Maria Olsen</span>
|
||||
|
|
@ -216,7 +267,12 @@
|
|||
</swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Rikke Skov" data-visits="4" data-created="2025-08" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Rikke Skov" data-visits="4" data-created="2025-08" data-href="/kunder/rikke-skov">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar>RS</swp-avatar>
|
||||
<span>Rikke Skov</span>
|
||||
|
|
@ -230,7 +286,12 @@
|
|||
<swp-data-table-cell></swp-data-table-cell>
|
||||
</swp-data-table-row>
|
||||
|
||||
<swp-data-table-row data-name="Sofie Nielsen" data-visits="14" data-created="2024-03" data-tags="vip" data-drawer-trigger="customer-drawer">
|
||||
<swp-data-table-row data-name="Sofie Nielsen" data-visits="14" data-created="2024-03" data-tags="vip" data-href="/kunder/sofie-nielsen">
|
||||
<swp-data-table-cell class="quick-view">
|
||||
<swp-quick-view-btn data-drawer-trigger="customer-drawer">
|
||||
<i class="ph ph-sidebar"></i>
|
||||
</swp-quick-view-btn>
|
||||
</swp-data-table-cell>
|
||||
<swp-data-table-cell>
|
||||
<swp-avatar>SN</swp-avatar>
|
||||
<span>Sofie Nielsen</span>
|
||||
|
|
@ -419,13 +480,30 @@
|
|||
|
||||
@section Scripts {
|
||||
<script>
|
||||
// Update detail link when drawer opens
|
||||
document.querySelectorAll('[data-drawer-trigger="customer-drawer"]').forEach(row => {
|
||||
row.addEventListener('click', () => {
|
||||
// Row click - navigate to detail page
|
||||
document.querySelectorAll('swp-data-table-row[data-href]').forEach(row => {
|
||||
row.addEventListener('click', (e) => {
|
||||
// Don't navigate if clicking the quick-view button
|
||||
if (e.target.closest('swp-quick-view-btn')) {
|
||||
return;
|
||||
}
|
||||
const href = row.dataset.href;
|
||||
if (href) {
|
||||
window.location.href = href;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Quick-view button click - update drawer data before it opens
|
||||
// Note: The drawer opening is handled by the global drawer system via data-drawer-trigger
|
||||
document.querySelectorAll('swp-quick-view-btn[data-drawer-trigger="customer-drawer"]').forEach(btn => {
|
||||
btn.addEventListener('click', (e) => {
|
||||
// Don't stop propagation - let the event bubble up to the drawer system
|
||||
const row = btn.closest('swp-data-table-row');
|
||||
const drawer = document.getElementById('customer-drawer');
|
||||
const detailLink = document.getElementById('openFullDetailLink');
|
||||
|
||||
// Generate a customer ID from the row data (in real app, use actual ID)
|
||||
// Get customer data from row
|
||||
const customerName = row.dataset.name || 'unknown';
|
||||
const customerId = customerName.toLowerCase().replace(/\s+/g, '-');
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue