From 163444c91f95bea048e90eff190a6a7204525712 Mon Sep 17 00:00:00 2001 From: ncoronel Date: Mon, 27 Jul 2026 16:29:22 -0300 Subject: [PATCH] feat: enhance loading skeleton for tickets list with improved styling and structure --- .../pages/tickets-page/tickets-page.html | 25 +++- .../pages/tickets-page/tickets-page.scss | 112 +++++++++++++++++- 2 files changed, 130 insertions(+), 7 deletions(-) diff --git a/src/app/features/store/pages/account-page/pages/tickets-page/tickets-page.html b/src/app/features/store/pages/account-page/pages/tickets-page/tickets-page.html index e3f3d10..8f3885e 100644 --- a/src/app/features/store/pages/account-page/pages/tickets-page/tickets-page.html +++ b/src/app/features/store/pages/account-page/pages/tickets-page/tickets-page.html @@ -27,8 +27,31 @@ } @if (isLoading()) { + + @for (item of [1, 2, 3, 4]; track item) { - + } } @else if (tickets().length) { @for (ticket of activeTickets(); track ticket.id) { diff --git a/src/app/features/store/pages/account-page/pages/tickets-page/tickets-page.scss b/src/app/features/store/pages/account-page/pages/tickets-page/tickets-page.scss index 40ad53e..d67e9c4 100644 --- a/src/app/features/store/pages/account-page/pages/tickets-page/tickets-page.scss +++ b/src/app/features/store/pages/account-page/pages/tickets-page/tickets-page.scss @@ -75,15 +75,96 @@ text-align: center; } -.tickets-list__skeleton { - height: 77px; +.tickets-list__skeleton-header { + display: flex; + min-height: 58px; + align-items: center; + justify-content: space-between; + padding-bottom: 12px; border-bottom: 1px solid #dddddd; - background: linear-gradient(90deg, transparent, #f3f3f3, transparent); - background-size: 200% 100%; - animation: loading 1.4s infinite; } -@keyframes loading { +.tickets-list__skeleton-selection, +.tickets-list__skeleton-bulk-actions, +.tickets-list__skeleton-actions { + display: flex; + align-items: center; +} + +.tickets-list__skeleton-selection { + gap: 16px; +} + +.tickets-list__skeleton-bulk-actions, +.tickets-list__skeleton-actions { + gap: 8px; +} + +.tickets-list__skeleton { + display: grid; + grid-template-columns: auto minmax(0, 1fr) 78px auto; + min-height: 76px; + align-items: center; + gap: 16px; + padding: 16px 0; + border-bottom: 1px solid #dddddd; +} + +.tickets-list__skeleton-check, +.tickets-list__skeleton-line, +.tickets-list__skeleton-icon, +.tickets-list__skeleton-button { + display: block; + border-radius: 4px; + background: linear-gradient(90deg, #eeeeee 20%, #f7f7f7 50%, #eeeeee 80%); + background-size: 200% 100%; + animation: tickets-loading 1.4s ease-in-out infinite; +} + +.tickets-list__skeleton-check { + width: 21px; + height: 21px; + border-radius: 2px; +} + +.tickets-list__skeleton-details { + display: grid; + gap: 8px; +} + +.tickets-list__skeleton-line--section { + width: 120px; + height: 14px; +} + +.tickets-list__skeleton-line--title { + width: min(240px, 75%); + height: 13px; +} + +.tickets-list__skeleton-line--id { + width: 86px; + height: 11px; +} + +.tickets-list__skeleton-line--date { + width: 64px; + height: 11px; + justify-self: center; +} + +.tickets-list__skeleton-button { + width: 115px; + height: 36px; +} + +.tickets-list__skeleton-icon { + width: 28px; + height: 28px; + border-radius: 50%; +} + +@keyframes tickets-loading { to { background-position: -200% 0; } @@ -93,4 +174,23 @@ .tickets-page__title { margin-top: 24px; } + + .tickets-list__skeleton { + grid-template-columns: auto minmax(0, 1fr) auto; + gap: 10px; + } + + .tickets-list__skeleton-line--date { + grid-column: 2; + justify-self: start; + } + + .tickets-list__skeleton-actions { + grid-column: 3; + grid-row: 1 / span 2; + } + + .tickets-list__skeleton-actions .tickets-list__skeleton-icon { + display: none; + } }