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 {
|
try {
|
||||||
const response = await dataServices.getOne(dataId);
|
const response = await dataServices.getOne(dataId);
|
||||||
if (response && response.data) {
|
if (response && response.data) {
|
||||||
const data = response.data;
|
const data = response.data?.data;
|
||||||
setDetailData(data as E);
|
setDetailData(data as E);
|
||||||
if (onDetailLoaded) onDetailLoaded(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 isTransaction = moduleType === 'TRANSACTION';
|
||||||
const isMasterData = moduleType === 'MASTER_DATA';
|
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
|
// 1. Declare action with Privilege & Module Type conditions directly
|
||||||
const rawActions = [
|
const rawActions = [
|
||||||
ALLOW_DELETE && {
|
ALLOW_DELETE && {
|
||||||
@@ -424,6 +427,29 @@ export function EnterpriseDetailPageProvider<E extends BaseEntity = BaseEntity>(
|
|||||||
variant: 'subtle',
|
variant: 'subtle',
|
||||||
onClick: (key: ModuleActionType) => handleActionClick(key),
|
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 && {
|
ALLOW_CREATE && {
|
||||||
key: ModuleAction.DUPLICATE,
|
key: ModuleAction.DUPLICATE,
|
||||||
label: t('common:actions.duplicate'),
|
label: t('common:actions.duplicate'),
|
||||||
@@ -481,27 +507,6 @@ export function EnterpriseDetailPageProvider<E extends BaseEntity = BaseEntity>(
|
|||||||
onClick: (key: ModuleActionType) => handleActionClick(key),
|
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' },
|
{ key: 'DIVIDER_2', type: 'divider' },
|
||||||
|
|
||||||
ALLOW_CREATE && {
|
ALLOW_CREATE && {
|
||||||
@@ -539,7 +544,7 @@ export function EnterpriseDetailPageProvider<E extends BaseEntity = BaseEntity>(
|
|||||||
|
|
||||||
// 3. Inject custom actions
|
// 3. Inject custom actions
|
||||||
return customPageActions && detailData ? customPageActions(detailData, cleanedActions) : cleanedActions;
|
return customPageActions && detailData ? customPageActions(detailData, cleanedActions) : cleanedActions;
|
||||||
}, [t, customPageActions, handleActionClick, privileges, moduleType, detailData]);
|
}, [t, customPageActions, handleActionClick, privileges, moduleType, detailData, statusKey]);
|
||||||
|
|
||||||
const contextValue = useMemo(
|
const contextValue = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
|
|||||||
Reference in New Issue
Block a user