From 749b7d6f1a9359624c235be3419a6c6140da0e94 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Mon, 2 Mar 2026 11:34:27 +0700 Subject: [PATCH] refactor(FE): Refactor UniformityTable to improve loading and empty states --- .../production/uniformity/UniformityTable.tsx | 78 ++++++++++++------- .../skeleton/UniformityTableSkeleton.tsx | 53 +++++++------ 2 files changed, 78 insertions(+), 53 deletions(-) diff --git a/src/components/pages/production/uniformity/UniformityTable.tsx b/src/components/pages/production/uniformity/UniformityTable.tsx index c420ec6c..71bd3901 100644 --- a/src/components/pages/production/uniformity/UniformityTable.tsx +++ b/src/components/pages/production/uniformity/UniformityTable.tsx @@ -1010,35 +1010,55 @@ const UniformityTable = () => { - - data={isResponseSuccess(uniformities) ? uniformities?.data : []} - columns={uniformityColumns} - pageSize={tableFilterState.pageSize} - page={isResponseSuccess(uniformities) ? uniformities?.meta?.page : 0} - totalItems={ - isResponseSuccess(uniformities) - ? uniformities?.meta?.total_results - : 0 - } - onPageChange={setPage} - isLoading={isLoading} - sorting={sorting} - setSorting={setSorting} - rowSelection={rowSelection} - setRowSelection={setRowSelection} - className={{ - containerClassName: cn('p-3 pt-0', { - 'mb-20': - isResponseSuccess(uniformities) && - uniformities?.data?.length === 0, - }), - headerColumnClassName: - 'first:pl-3 first:pr-0 xl:first:pl-3 py-3 text-nowrap', - bodyColumnClassName: - 'first:pl-3 first:pr-0 xl:first:pl-3 py-3 text-nowrap', - }} - emptyContent={} - /> +
+ {isLoading ? ( +
+ +
+ ) : !isResponseSuccess(uniformities) || + uniformities.data?.length === 0 ? ( +
+ + } + /> +
+ ) : ( + + data={isResponseSuccess(uniformities) ? uniformities?.data : []} + columns={uniformityColumns} + pageSize={tableFilterState.pageSize} + page={ + isResponseSuccess(uniformities) ? uniformities?.meta?.page : 0 + } + totalItems={ + isResponseSuccess(uniformities) + ? uniformities?.meta?.total_results + : 0 + } + onPageChange={setPage} + isLoading={isLoading} + sorting={sorting} + setSorting={setSorting} + rowSelection={rowSelection} + setRowSelection={setRowSelection} + className={{ + containerClassName: cn('p-3 pt-0 mb-0'), + headerColumnClassName: + 'first:pl-3 first:pr-0 xl:first:pl-3 py-3 text-nowrap', + bodyColumnClassName: + 'first:pl-3 first:pr-0 xl:first:pl-3 py-3 text-nowrap', + }} + /> + )} +
{ +const UniformityTableSkeleton = ({ + columns, + icon, + title = 'No Data Available', + subtitle = 'There is no uniformity data displayed. Enter uniformity check data to get started.', +}: { + columns: ColumnDef[]; + icon: React.ReactNode; + title?: string; + subtitle?: string; +}) => { return ( -
- {/* Document icon */} -
-
-
- -
-
+
+ +
+
- - {/* Empty state text */} -

- No Data Available -

-

- There is no uniformity data displayed. Enter uniformity check data to - get started. -

); };