diff --git a/src/components/pages/production/project-flock/ProjectFlockTable.tsx b/src/components/pages/production/project-flock/ProjectFlockTable.tsx index 3b134133..14378852 100644 --- a/src/components/pages/production/project-flock/ProjectFlockTable.tsx +++ b/src/components/pages/production/project-flock/ProjectFlockTable.tsx @@ -32,6 +32,7 @@ import StatusBadge from '@/components/helper/StatusBadge'; import PopoverButton from '@/components/popover/PopoverButton'; import PopoverContent from '@/components/popover/PopoverContent'; import ProjectFlockConfirmationModal from './ProjectFlockConfirmationModal'; +import ProjectFlockTableSkeleton from '@/components/pages/production/project-flock/skeleton/ProjectFlockTableSkeleton'; import { useProjectFlockStore } from '@/stores/production/project-flock/project-flock.store'; import { ProjectFlockFormValues } from './form/ProjectFlockForm.schema'; import { useChickinStore } from '@/stores/production/chickin/chickin.store'; @@ -997,46 +998,69 @@ const ProjectFlockTable = ({ refresh }: { refresh?: () => void }) => { - - data={isResponseSuccess(projectFlocks) ? projectFlocks?.data : []} - columns={columns} - pageSize={tableFilterState.pageSize} - page={ - isResponseSuccess(projectFlocks) ? projectFlocks?.meta?.page : 0 - } - totalItems={ - isResponseSuccess(projectFlocks) - ? projectFlocks?.meta?.total_results - : 0 - } - onPageChange={(page) => { - setPage(page); - }} - onPageSizeChange={(pageSize) => { - setPageSize(pageSize); - }} - isLoading={isLoading} - sorting={sorting} - setSorting={setSorting} - rowSelection={rowSelection} - setRowSelection={setRowSelection} - enableRowSelection={(row) => { - const projectFlock = row.original; - return ( - projectFlock.approval?.step_number === 1 && - projectFlock.approval?.action !== 'REJECTED' - ); - }} - withCheckbox - className={{ - containerClassName: cn('p-3', { - 'w-full mb-20': - isResponseSuccess(projectFlocks) && - projectFlocks?.data?.length === 0, - }), - headerColumnClassName: 'text-nowrap', - }} - /> +
+ {isLoading ? ( +
+ +
+ ) : !isResponseSuccess(projectFlocks) || + projectFlocks.data?.length === 0 ? ( +
+ + } + /> +
+ ) : ( + + data={ + isResponseSuccess(projectFlocks) ? projectFlocks?.data : [] + } + columns={columns} + pageSize={tableFilterState.pageSize} + page={ + isResponseSuccess(projectFlocks) + ? projectFlocks?.meta?.page + : 0 + } + totalItems={ + isResponseSuccess(projectFlocks) + ? projectFlocks?.meta?.total_results + : 0 + } + onPageChange={(page) => { + setPage(page); + }} + onPageSizeChange={(pageSize) => { + setPageSize(pageSize); + }} + isLoading={isLoading} + sorting={sorting} + setSorting={setSorting} + rowSelection={rowSelection} + setRowSelection={setRowSelection} + enableRowSelection={(row) => { + const projectFlock = row.original; + return ( + projectFlock.approval?.step_number === 1 && + projectFlock.approval?.action !== 'REJECTED' + ); + }} + withCheckbox + className={{ + containerClassName: cn('p-3 mb-0'), + headerColumnClassName: 'text-nowrap', + }} + /> + )} +
diff --git a/src/components/pages/production/project-flock/skeleton/ProjectFlockTableSkeleton.tsx b/src/components/pages/production/project-flock/skeleton/ProjectFlockTableSkeleton.tsx new file mode 100644 index 00000000..9fe74cb8 --- /dev/null +++ b/src/components/pages/production/project-flock/skeleton/ProjectFlockTableSkeleton.tsx @@ -0,0 +1,37 @@ +import DataStateSkeleton from '@/components/helper/skeleton/DataStateSkeleton'; +import Table from '@/components/Table'; +import { ProjectFlock } from '@/types/api/production/project-flock'; +import { ColumnDef } from '@tanstack/react-table'; + +const ProjectFlockTableSkeleton = ({ + columns, + icon, + title = 'No Data Available', + subtitle = 'There is no project flock data displayed. Enter project flock data to get started.', +}: { + columns: ColumnDef[]; + icon: React.ReactNode; + title?: string; + subtitle?: string; +}) => { + return ( +
+ +
+ +
+ + ); +}; + +export default ProjectFlockTableSkeleton; diff --git a/src/components/pages/production/transfer-to-laying/TransferToLayingsTable.tsx b/src/components/pages/production/transfer-to-laying/TransferToLayingsTable.tsx index 06852fe1..0b8a299f 100644 --- a/src/components/pages/production/transfer-to-laying/TransferToLayingsTable.tsx +++ b/src/components/pages/production/transfer-to-laying/TransferToLayingsTable.tsx @@ -22,6 +22,7 @@ import Dropdown from '@/components/Dropdown'; import StatusBadge from '@/components/helper/StatusBadge'; import TransferToLayingFilterModal from '@/components/pages/production/transfer-to-laying/TransferToLayingFilterModal'; import TransferToLayingConfirmationModal from '@/components/pages/production/transfer-to-laying/TransferToLayingConfirmationModal'; +import TransferToLayingTableSkeleton from '@/components/pages/production/transfer-to-laying/skeleton/TransferToLayingTableSkeleton'; import { TransferToLaying, @@ -596,40 +597,61 @@ const TransferToLayingsTable = () => { - - data={ - isResponseSuccess(transferToLayings) ? transferToLayings?.data : [] - } - columns={transferToLayingsColumns} - pageSize={tableFilterState.pageSize} - page={ - isResponseSuccess(transferToLayings) - ? transferToLayings?.meta?.page - : 0 - } - totalItems={ - isResponseSuccess(transferToLayings) - ? transferToLayings?.meta?.total_results - : 0 - } - onPageChange={setPage} - onPageSizeChange={setPageSize} - isLoading={isLoading} - sorting={sorting} - setSorting={setSorting} - rowSelection={rowSelection} - setRowSelection={setRowSelection} - enableRowSelection={tableEnableRowSelectionHandler} - withCheckbox - className={{ - containerClassName: cn('p-3', { - 'w-full mb-20': - isResponseSuccess(transferToLayings) && - transferToLayings?.data?.length === 0, - }), - headerColumnClassName: 'text-nowrap', - }} - /> +
+ {isLoading ? ( +
+ +
+ ) : !isResponseSuccess(transferToLayings) || + transferToLayings.data?.length === 0 ? ( +
+ + } + /> +
+ ) : ( + + data={ + isResponseSuccess(transferToLayings) + ? transferToLayings?.data + : [] + } + columns={transferToLayingsColumns} + pageSize={tableFilterState.pageSize} + page={ + isResponseSuccess(transferToLayings) + ? transferToLayings?.meta?.page + : 0 + } + totalItems={ + isResponseSuccess(transferToLayings) + ? transferToLayings?.meta?.total_results + : 0 + } + onPageChange={setPage} + onPageSizeChange={setPageSize} + isLoading={isLoading} + sorting={sorting} + setSorting={setSorting} + rowSelection={rowSelection} + setRowSelection={setRowSelection} + enableRowSelection={tableEnableRowSelectionHandler} + withCheckbox + className={{ + containerClassName: cn('p-3 mb-0'), + headerColumnClassName: 'text-nowrap', + }} + /> + )} +
[]; + icon: React.ReactNode; + title?: string; + subtitle?: string; +}) => { + return ( +
+
+
+ +
+ + ); +}; + +export default TransferToLayingTableSkeleton;