fix: update data extraction in EnterpriseDetailPageProvider and enhance action handling for master data states

This commit is contained in:
Firman Ramdhani
2026-07-16 11:21:53 +07:00
parent ed6e8f31ee
commit efc8cb44a5
@@ -75,7 +75,7 @@ export function EnterpriseDetailPageProvider<E extends BaseEntity = BaseEntity>(
try {
const response = await dataServices.getOne(dataId);
if (response && response.data) {
const data = response.data;
const data = response.data?.data;
setDetailData(data as E);
if (onDetailLoaded) onDetailLoaded(data as E);
}
@@ -414,6 +414,9 @@ export function EnterpriseDetailPageProvider<E extends BaseEntity = BaseEntity>(
const isTransaction = moduleType === 'TRANSACTION';
const isMasterData = moduleType === 'MASTER_DATA';
const isDataActive = detailData && ['active'].includes(detailData[statusKey]?.toLowerCase());
const isDataInActive = detailData && ['inactive', 'draft'].includes(detailData[statusKey]?.toLowerCase());
// 1. Declare action with Privilege & Module Type conditions directly
const rawActions = [
ALLOW_DELETE && {
@@ -424,6 +427,29 @@ export function EnterpriseDetailPageProvider<E extends BaseEntity = BaseEntity>(
variant: 'subtle',
onClick: (key: ModuleActionType) => handleActionClick(key),
},
// Master Data Group
isMasterData &&
ALLOW_DEACTIVATE &&
isDataActive && {
key: ModuleAction.DEACTIVATE,
label: t('common:actions.deactivate'),
icon: <XCircle size={16} />,
intent: 'default',
variant: 'subtle',
onClick: (key: ModuleActionType) => handleActionClick(key),
},
isMasterData &&
ALLOW_ACTIVATE &&
isDataInActive && {
key: ModuleAction.ACTIVATE,
label: t('common:actions.activate'),
tooltipLabel: t('common:actions.activate'),
icon: <CheckCircle size={16} />,
intent: 'default',
variant: 'subtle',
onClick: (key: ModuleActionType) => handleActionClick(key),
},
ALLOW_CREATE && {
key: ModuleAction.DUPLICATE,
label: t('common:actions.duplicate'),
@@ -481,27 +507,6 @@ export function EnterpriseDetailPageProvider<E extends BaseEntity = BaseEntity>(
onClick: (key: ModuleActionType) => handleActionClick(key),
},
// Master Data Group
isMasterData &&
ALLOW_DEACTIVATE && {
key: ModuleAction.DEACTIVATE,
label: t('common:actions.deactivate'),
icon: <XCircle size={16} />,
intent: 'default',
variant: 'subtle',
onClick: (key: ModuleActionType) => handleActionClick(key),
},
isMasterData &&
ALLOW_ACTIVATE && {
key: ModuleAction.ACTIVATE,
label: t('common:actions.activate'),
tooltipLabel: t('common:actions.activate'),
icon: <CheckCircle size={16} />,
intent: 'default',
variant: 'subtle',
onClick: (key: ModuleActionType) => handleActionClick(key),
},
{ key: 'DIVIDER_2', type: 'divider' },
ALLOW_CREATE && {
@@ -539,7 +544,7 @@ export function EnterpriseDetailPageProvider<E extends BaseEntity = BaseEntity>(
// 3. Inject custom actions
return customPageActions && detailData ? customPageActions(detailData, cleanedActions) : cleanedActions;
}, [t, customPageActions, handleActionClick, privileges, moduleType, detailData]);
}, [t, customPageActions, handleActionClick, privileges, moduleType, detailData, statusKey]);
const contextValue = useMemo(
() => ({