From addfaff6920cd9965e30bdcfd49c8f1476c8ccc0 Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Tue, 23 Dec 2025 12:10:07 +0700 Subject: [PATCH] feat(FE-331): implement permission guard in master data --- .../pages/master-data/area/AreasTable.tsx | 95 +++++++++------- .../pages/master-data/area/form/AreaForm.tsx | 45 ++++---- .../pages/master-data/bank/BanksTable.tsx | 93 ++++++++------- .../pages/master-data/bank/form/BankForm.tsx | 45 ++++---- .../master-data/customer/CustomersTable.tsx | 89 ++++++++------- .../customer/form/CustomerForm.tsx | 45 ++++---- .../pages/master-data/fcr/FcrsTable.tsx | 93 ++++++++------- .../pages/master-data/fcr/form/FcrForm.tsx | 45 ++++---- .../pages/master-data/flock/FlocksTable.tsx | 107 ++++++++++-------- .../master-data/flock/form/FlockForm.tsx | 43 +++---- .../master-data/kandang/KandangsTable.tsx | 95 +++++++++------- .../master-data/kandang/form/KandangForm.tsx | 45 ++++---- .../master-data/location/LocationsTable.tsx | 95 +++++++++------- .../location/form/LocationForm.tsx | 45 ++++---- .../master-data/nonstock/NonstocksTable.tsx | 93 ++++++++------- .../nonstock/form/NonstockForm.tsx | 45 ++++---- .../product-category/ProductCategoryTable.tsx | 91 ++++++++------- .../form/ProductCategoryForm.tsx | 45 ++++---- .../master-data/product/ProductTable.tsx | 89 ++++++++------- .../master-data/product/form/ProductForm.tsx | 43 +++---- .../master-data/supplier/SupplierTable.tsx | 107 ++++++++++-------- .../supplier/form/SupplierForm.tsx | 45 ++++---- .../pages/master-data/uom/UomsTable.tsx | 93 ++++++++------- .../pages/master-data/uom/form/UomForm.tsx | 45 ++++---- .../master-data/warehouse/WarehousesTable.tsx | 93 ++++++++------- .../warehouse/form/WarehouseForm.tsx | 45 ++++---- 26 files changed, 1002 insertions(+), 812 deletions(-) diff --git a/src/components/pages/master-data/area/AreasTable.tsx b/src/components/pages/master-data/area/AreasTable.tsx index 207fb8a6..45c4fdff 100644 --- a/src/components/pages/master-data/area/AreasTable.tsx +++ b/src/components/pages/master-data/area/AreasTable.tsx @@ -15,6 +15,7 @@ import SelectInput, { OptionType } from '@/components/input/SelectInput'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { Area } from '@/types/api/master-data/area'; import { AreaApi } from '@/services/api/master-data'; @@ -34,40 +35,46 @@ const RowOptionsMenu = ({ }) => { return ( - - - - - + > + + Detail + + + + + + + + + + ); }; @@ -192,15 +199,19 @@ const AreasTable = () => {
- +
+ + + +
{
{type !== 'add' && (
- - - {type !== 'edit' && ( + + + + {type !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/bank/BanksTable.tsx b/src/components/pages/master-data/bank/BanksTable.tsx index 58b09ef8..f28f4bd0 100644 --- a/src/components/pages/master-data/bank/BanksTable.tsx +++ b/src/components/pages/master-data/bank/BanksTable.tsx @@ -15,6 +15,7 @@ import SelectInput, { OptionType } from '@/components/input/SelectInput'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { Bank } from '@/types/api/master-data/bank'; import { BankApi } from '@/services/api/master-data'; @@ -34,40 +35,46 @@ const RowOptionsMenu = ({ }) => { return ( - - - - - + > + + Detail + + + + + + + + + + ); }; @@ -205,15 +212,17 @@ const BanksTable = () => {
- + + +
{
{type !== 'add' && (
- - - {type !== 'edit' && ( + + + + {type !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/customer/CustomersTable.tsx b/src/components/pages/master-data/customer/CustomersTable.tsx index 89401638..3e442620 100644 --- a/src/components/pages/master-data/customer/CustomersTable.tsx +++ b/src/components/pages/master-data/customer/CustomersTable.tsx @@ -9,6 +9,7 @@ import Table from '@/components/Table'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { ROWS_OPTIONS } from '@/config/constant'; import { isResponseSuccess } from '@/lib/api-helper'; import { cn } from '@/lib/helper'; @@ -32,38 +33,44 @@ const RowOptionsMenu = ({ }) => { return ( - - - + > + + Detail + + + + + + + + ); }; @@ -200,15 +207,17 @@ const CustomersTable = () => {
- + + +
{formType !== 'add' && (
- - - {formType !== 'edit' && ( + + + + {formType !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/fcr/FcrsTable.tsx b/src/components/pages/master-data/fcr/FcrsTable.tsx index b582222e..2d65a406 100644 --- a/src/components/pages/master-data/fcr/FcrsTable.tsx +++ b/src/components/pages/master-data/fcr/FcrsTable.tsx @@ -15,6 +15,7 @@ import SelectInput, { OptionType } from '@/components/input/SelectInput'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { Fcr } from '@/types/api/master-data/fcr'; import { FcrApi } from '@/services/api/master-data'; @@ -34,40 +35,46 @@ const RowOptionsMenu = ({ }) => { return ( - - - - - + > + + Detail + + + + + + + + + + ); }; @@ -192,15 +199,17 @@ const FcrsTable = () => {
- + + +
{
{type !== 'add' && (
- - - {type !== 'edit' && ( + + + + {type !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/flock/FlocksTable.tsx b/src/components/pages/master-data/flock/FlocksTable.tsx index 5350c518..ce8f701a 100644 --- a/src/components/pages/master-data/flock/FlocksTable.tsx +++ b/src/components/pages/master-data/flock/FlocksTable.tsx @@ -13,6 +13,7 @@ import { useModal } from '@/components/Modal'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import toast from 'react-hot-toast'; import DebouncedTextInput from '@/components/input/DebouncedTextInput'; import SelectInput, { OptionType } from '@/components/input/SelectInput'; @@ -32,48 +33,54 @@ const RowsOptions = ({ }) => { return ( - - + + + - + > + + Detail + + + + + ); }; @@ -196,15 +203,17 @@ const FlockTable = () => {
- + + +
{
{formType !== 'add' && (
- - {formType !== 'edit' && ( + + + {formType !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/kandang/KandangsTable.tsx b/src/components/pages/master-data/kandang/KandangsTable.tsx index eebc490a..1bd7badb 100644 --- a/src/components/pages/master-data/kandang/KandangsTable.tsx +++ b/src/components/pages/master-data/kandang/KandangsTable.tsx @@ -20,6 +20,7 @@ import SelectInput, { OptionType } from '@/components/input/SelectInput'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { Kandang } from '@/types/api/master-data/kandang'; import { KandangApi } from '@/services/api/master-data'; @@ -39,40 +40,46 @@ const RowOptionsMenu = ({ }) => { return ( - - - - - + > + + Detail + + + + + + + + + + ); }; @@ -243,15 +250,19 @@ const KandangsTable = () => {
- +
+ + + +
{
{type !== 'add' && (
- - - {type !== 'edit' && ( + + + + {type !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/location/LocationsTable.tsx b/src/components/pages/master-data/location/LocationsTable.tsx index 19f11298..10fe46c9 100644 --- a/src/components/pages/master-data/location/LocationsTable.tsx +++ b/src/components/pages/master-data/location/LocationsTable.tsx @@ -20,6 +20,7 @@ import SelectInput, { OptionType } from '@/components/input/SelectInput'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { Location } from '@/types/api/master-data/location'; import { LocationApi } from '@/services/api/master-data'; @@ -39,40 +40,46 @@ const RowOptionsMenu = ({ }) => { return ( - - - - - + > + + Detail + + + + + + + + + + ); }; @@ -230,15 +237,19 @@ const LocationsTable = () => {
- +
+ + + +
{
{type !== 'add' && (
- - - {type !== 'edit' && ( + + + + {type !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/nonstock/NonstocksTable.tsx b/src/components/pages/master-data/nonstock/NonstocksTable.tsx index ae38c573..7066c19a 100644 --- a/src/components/pages/master-data/nonstock/NonstocksTable.tsx +++ b/src/components/pages/master-data/nonstock/NonstocksTable.tsx @@ -20,6 +20,7 @@ import SelectInput, { OptionType } from '@/components/input/SelectInput'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { Nonstock } from '@/types/api/master-data/nonstock'; import { NonstockApi } from '@/services/api/master-data'; @@ -39,40 +40,46 @@ const RowOptionsMenu = ({ }) => { return ( - - - - - + > + + Detail + + + + + + + + + + ); }; @@ -242,15 +249,17 @@ const NonstocksTable = () => {
- + + +
{
{type !== 'add' && (
- - - {type !== 'edit' && ( + + + + {type !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/product-category/ProductCategoryTable.tsx b/src/components/pages/master-data/product-category/ProductCategoryTable.tsx index 1a6e641c..a9b98bcb 100644 --- a/src/components/pages/master-data/product-category/ProductCategoryTable.tsx +++ b/src/components/pages/master-data/product-category/ProductCategoryTable.tsx @@ -15,6 +15,7 @@ import SelectInput, { OptionType } from '@/components/input/SelectInput'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { ProductCategory } from '@/types/api/master-data/product-category'; import { ProductCategoryApi } from '@/services/api/master-data'; @@ -34,38 +35,46 @@ const RowOptionsMenu = ({ }) => { return ( - - - + > + + Detail + + + + + + + + + + ); }; @@ -193,15 +202,17 @@ const ProductCategoryTable = () => {
- + + +
{type !== 'add' && (
- - - {type !== 'edit' && ( + + + + {type !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/product/ProductTable.tsx b/src/components/pages/master-data/product/ProductTable.tsx index 2a94656c..957d0551 100644 --- a/src/components/pages/master-data/product/ProductTable.tsx +++ b/src/components/pages/master-data/product/ProductTable.tsx @@ -20,6 +20,7 @@ import SelectInput, { OptionType } from '@/components/input/SelectInput'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { Product } from '@/types/api/master-data/product'; import { ProductApi } from '@/services/api/master-data'; @@ -38,38 +39,44 @@ const RowOptionsMenu = ({ deleteClickHandler: () => void; }) => ( - - - + > + + Detail + + + + + + + + ); @@ -273,15 +280,17 @@ const ProductsTable = () => {
- + + +
{
{type !== 'add' && (
- - {type !== 'edit' && ( + + + {type !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/supplier/SupplierTable.tsx b/src/components/pages/master-data/supplier/SupplierTable.tsx index da84afc0..3e10c9c8 100644 --- a/src/components/pages/master-data/supplier/SupplierTable.tsx +++ b/src/components/pages/master-data/supplier/SupplierTable.tsx @@ -9,6 +9,7 @@ import Table from '@/components/Table'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { ROWS_OPTIONS } from '@/config/constant'; import { isResponseSuccess } from '@/lib/api-helper'; import { cn } from '@/lib/helper'; @@ -32,48 +33,54 @@ const RowOptions = ({ }) => { return ( - - + + + - + > + + Edit + + + + + ); }; @@ -219,15 +226,17 @@ const SuppliersTable = () => {
- + + +
{formType !== 'add' && (
- - - {formType !== 'edit' && ( + + + + {formType !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/uom/UomsTable.tsx b/src/components/pages/master-data/uom/UomsTable.tsx index edf67f34..851647b9 100644 --- a/src/components/pages/master-data/uom/UomsTable.tsx +++ b/src/components/pages/master-data/uom/UomsTable.tsx @@ -15,6 +15,7 @@ import SelectInput, { OptionType } from '@/components/input/SelectInput'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { Uom } from '@/types/api/master-data/uom'; import { UomApi } from '@/services/api/master-data'; @@ -34,40 +35,46 @@ const RowOptionsMenu = ({ }) => { return ( - - - - - + > + + Detail + + + + + + + + + + ); }; @@ -192,15 +199,17 @@ const UomsTable = () => {
- + + +
{
{type !== 'add' && (
- - - {type !== 'edit' && ( + + + + {type !== 'edit' && ( + + + )}
)} diff --git a/src/components/pages/master-data/warehouse/WarehousesTable.tsx b/src/components/pages/master-data/warehouse/WarehousesTable.tsx index a61f6f5b..fe694322 100644 --- a/src/components/pages/master-data/warehouse/WarehousesTable.tsx +++ b/src/components/pages/master-data/warehouse/WarehousesTable.tsx @@ -20,6 +20,7 @@ import SelectInput, { OptionType } from '@/components/input/SelectInput'; import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowCollapseOptions from '@/components/table/RowCollapseOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; +import RequirePermission from '@/components/helper/RequirePermission'; import { Warehouse } from '@/types/api/master-data/warehouse'; import { WarehouseApi } from '@/services/api/master-data'; @@ -39,40 +40,46 @@ const RowOptionsMenu = ({ }) => { return ( - - - - - + > + + Detail + + + + + + + + + + ); }; @@ -270,15 +277,17 @@ const WarehousesTable = () => {
- + + +
{
{type !== 'add' && (
- - - {type !== 'edit' && ( + + + + {type !== 'edit' && ( + + + )}
)}