fix: update data extraction in EnterpriseDetailPageProvider and enhance action handling for master data states
This commit is contained in:
@@ -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(
|
||||
() => ({
|
||||
|
||||
Reference in New Issue
Block a user