diff --git a/packages/invoice-dashboard/src/lib/view-requests.svelte b/packages/invoice-dashboard/src/lib/view-requests.svelte index 2d2fdd34..6424aaea 100644 --- a/packages/invoice-dashboard/src/lib/view-requests.svelte +++ b/packages/invoice-dashboard/src/lib/view-requests.svelte @@ -9,10 +9,10 @@ import Dropdown from "@requestnetwork/shared-components/dropdown.svelte"; import Input from "@requestnetwork/shared-components/input.svelte"; import PoweredBy from "@requestnetwork/shared-components/powered-by.svelte"; - import Skeleton from "@requestnetwork/shared-components/skeleton.svelte"; import Toaster from "@requestnetwork/shared-components/sonner.svelte"; import Tooltip from "@requestnetwork/shared-components/tooltip.svelte"; import TxType from "@requestnetwork/shared-components/tx-type.svelte"; + import DashboardSkeleton from "@requestnetwork/shared-components/dashboard-skeleton.svelte"; import { toast } from "svelte-sonner"; // Icons import ChevronDown from "@requestnetwork/shared-icons/chevron-down.svelte"; @@ -420,123 +420,47 @@ - {#if !loading} -
-
- -
- -
- - -
-
- - - - {#if columns.issuedAt} - - {/if} - {#if columns.dueDate} - - {/if} - - + {/each} + {:else} + {/if} - - - {#if paginatedRequests.length > 0} -
handleSort("contentData.creationDate")}> -
- Issued Date - {#if sortOrder === "asc" && sortColumn === "contentData.creationDate"} - - {:else} - - {/if} - -
-
handleSort("contentData.dueDate")}> -
- Due Date - {#if sortOrder === "asc" && sortColumn === "contentData.dueDate"} - - {:else} - - {/if} - -
-
handleSort("timestamp")}> -
- Created - {#if sortOrder === "asc" && sortColumn === "timestamp"} - - {:else} - - {/if} - -
handleSort("contentData.invoiceNumber")}> +
+
+ +
+ +
+ + +
+
+ + + + {#if columns.issuedAt} + - {#if currentTab === "All"} - - - {:else} - - {/if} - + {/if} + {#if columns.dueDate} + - + + {#if currentTab === "All"} + - - - - - - {#if processedRequests} - {#each processedRequests as request} - handleRequestSelect(e, request)} - > - {#if columns.issuedAt} - + {:else} + + {/if} + + + + + + + + + + + {#if !loading && processedRequests} + {#each processedRequests as request} + handleRequestSelect(e, request)}> + {#if columns.issuedAt} - - {#if currentTab === "All"} - - - {:else} - - {/if} + {/if} + {#if columns.dueDate} + + {/if} + + + {#if currentTab === "All"} + + + {:else} - + + + - - - - {/each} - {/if} - -
handleSort("contentData.creationDate")}>
- Invoice # - {#if sortOrder === "asc" && sortColumn === "contentData.invoiceNumber"} + Issued Date + {#if sortOrder === "asc" && sortColumn === "contentData.creationDate"} {:else} {/if} -
handleSort("payee.value")}> -
- Payee - {#if sortOrder === "asc" && sortColumn === "payee.value"} - - {:else} - - {/if} - -
-
handleSort("payer.value")}> -
- Payer - {#if sortOrder === "asc" && sortColumn === "payer.value"} - - {:else} - - {/if} - -
-
- handleSort( - currentTab === "Pay" ? "payee.value" : "payer.value" - )} - >{currentTab === "Pay" ? "Payee" : "Payer"} - {#if ((currentTab === "Pay" && sortColumn === "payee.value") || sortColumn === "payer.value") && sortOrder === "asc"} - - {:else} - - {/if} handleSort("expectedAmount")}> + + handleSort("contentData.dueDate")}>
- Expected Amount - {#if sortOrder === "asc" && sortColumn === "expectedAmount"} + Due Date + {#if sortOrder === "asc" && sortColumn === "contentData.dueDate"} {:else} @@ -544,19 +468,34 @@
{ - const sortBy = processedRequests?.some( - (req) => req.payer?.value === signer - ) - ? "payer.value" - : "payee.value"; - handleSort(sortBy); - }} - > + {/if} + handleSort("timestamp")}> +
+ Created + {#if sortOrder === "asc" && sortColumn === "timestamp"} + + {:else} + + {/if} + +
handleSort("contentData.invoiceNumber")}> +
+ Invoice # + {#if sortOrder === "asc" && sortColumn === "contentData.invoiceNumber"} + + {:else} + + {/if} + +
handleSort("payee.value")}>
- Type - {#if sortOrder === "asc" && (sortColumn === "payer.value" || sortColumn === "payee.value")} + Payee + {#if sortOrder === "asc" && sortColumn === "payee.value"} {:else} @@ -564,10 +503,10 @@
handleSort("state")}> + handleSort("payer.value")}>
- Status - {#if sortOrder === "asc" && sortColumn === "state"} + Payer + {#if sortOrder === "asc" && sortColumn === "payer.value"} {:else} @@ -575,174 +514,224 @@
{new Date( - request.contentData.creationDate - ).toLocaleDateString() || "-"} + handleSort( + currentTab === "Pay" ? "payee.value" : "payer.value" + )} + >{currentTab === "Pay" ? "Payee" : "Payer"} + {#if ((currentTab === "Pay" && sortColumn === "payee.value") || sortColumn === "payer.value") && sortOrder === "asc"} + + {:else} + + {/if} handleSort("expectedAmount")}> +
+ Expected Amount + {#if sortOrder === "asc" && sortColumn === "expectedAmount"} + + {:else} + + {/if} + +
+
{ + const sortBy = processedRequests?.some( + (req) => req.payer?.value === signer + ) + ? "payer.value" + : "payee.value"; + handleSort(sortBy); + }} + > +
+ Type + {#if sortOrder === "asc" && (sortColumn === "payer.value" || sortColumn === "payee.value")} + + {:else} + {/if} - {#if columns.dueDate} -
{request?.contentData?.paymentTerms?.dueDate - ? new Date( - request?.contentData?.paymentTerms?.dueDate - ).toLocaleDateString() - : "-"} handleSort("state")}> +
+ Status + {#if sortOrder === "asc" && sortColumn === "state"} + + {:else} + {/if} + +
+
{new Date( - request.timestamp * 1000 - ).toLocaleDateString()}{request.contentData.invoiceNumber || "-"}
- {formatAddress(request.payee?.value ?? "")} - -
- {formatAddress(request.payer?.value ?? "")} - -
-
- {formatAddress( - currentTab === "Pay" - ? (request.payee?.value ?? "") - : (request.payer?.value ?? "") - )} - -
-
{request?.contentData?.paymentTerms?.dueDate + ? new Date( + request?.contentData?.paymentTerms?.dueDate + ).toLocaleDateString() + : "-"} + {new Date(request.timestamp * 1000).toLocaleDateString()} + {request.contentData.invoiceNumber || "-"}
+ {formatAddress(request.payee?.value ?? "")} + +
+ {formatAddress(request.payer?.value ?? "")} + +
- {#if request.formattedAmount.includes(".") && request.formattedAmount.split(".")[1].length > 5} - - {Number(request.formattedAmount).toFixed(5)} - - {:else} - {request.formattedAmount} - {/if} - {request.currencySymbol} +
+ {formatAddress( + currentTab === "Pay" + ? (request.payee?.value ?? "") + : (request.payer?.value ?? "") + )} + +
- + {#if request.formattedAmount.includes(".") && request.formattedAmount.split(".")[1].length > 5} + + {Number(request.formattedAmount).toFixed(5)} + + {:else} + {request.formattedAmount} + {/if} + {request.currencySymbol} + + + {checkStatus(request)} + { + try { + await exportToPDF( + request, + getCurrencyFromManager( + request.currencyInfo, + currencyManager + ), + request.paymentCurrencies, + config.logo + ); + } catch (error) { + toast.error(`Failed to export PDF`, { + description: `An error occurred while generating the PDF.`, + action: { + label: "X", + onClick: () => console.info("Close"), + }, + }); + console.error("Failed to export PDF:", error); + } + }} /> - {checkStatus(request)} - { - try { - await exportToPDF( - request, - getCurrencyFromManager( - request.currencyInfo, - currencyManager - ), - request.paymentCurrencies, - config.logo - ); - } catch (error) { - toast.error(`Failed to export PDF`, { - description: `${error}`, - action: { - label: "X", - onClick: () => console.info("Close"), - }, - }); - console.error("Failed to export PDF:", error); - } - }} - /> -
- - {#if activeRequest !== undefined} - + +
+ + {#if activeRequest !== undefined} + + {/if} + +
+ {#if paginatedRequests.length > 0} + - {/if} -
- {:else} -
- -
- {/if} + {/each} + + + + {/if} + {#if !loading && paginatedRequests.length === 0}

No requests found

diff --git a/shared/components/dashboard-skeleton.svelte b/shared/components/dashboard-skeleton.svelte new file mode 100644 index 00000000..41840ff1 --- /dev/null +++ b/shared/components/dashboard-skeleton.svelte @@ -0,0 +1,30 @@ + + +{#each Array(columns) as _} + + {#each Array(rows) as _} + + {/each} + + +{/each} + + diff --git a/shared/components/skeleton.svelte b/shared/components/skeleton.svelte index b1ad4a0c..a565b270 100644 --- a/shared/components/skeleton.svelte +++ b/shared/components/skeleton.svelte @@ -39,12 +39,11 @@ flex-direction: column; gap: 0.4px; animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; - margin-top: 4px; } .skeleton-item { - height: 50px; - border-radius: 4px; + height: 20px; + border-radius: 20px; margin-bottom: 10px; background: var(--mainColor); background: linear-gradient(