feat: implement bulk action confirmation modal and related functionality
- Updated request methods for batch operations in constants.ts to use PUT instead of POST. - Added new translation keys for bulk actions in English and Indonesian language files. - Created BulkActionConfirmationModal component to handle bulk lifecycle actions with progress tracking and summary display. - Introduced SummaryPanel component to show aggregated results of bulk actions. - Enhanced BulkActionMenu to support custom bulk actions and improved action handling based on selected rows. - Integrated bulk action handling in EnterpriseDataTable, allowing for batch processing of selected entities. - Added new types for bulk action modal state and results in entity.ts. - Exported BulkActionConfirmationModal from the module index for accessibility.
This commit is contained in:
@@ -279,10 +279,10 @@ export abstract class BaseRemoteDataServices<E extends BaseEntity = BaseEntity,
|
||||
});
|
||||
}
|
||||
|
||||
/** Delete multiple entities by IDs. */
|
||||
batchDelete(ids: EntityId[], config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
/** Delete multiple entities by IDs. Optionally sends form data as `meta` in the request body. */
|
||||
batchDelete(ids: EntityId[], meta?: Record<string, unknown>, config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
return this.execute<void>(DESCRIPTORS.batchDelete, {
|
||||
config: { ...config, data: { ids } },
|
||||
config: { ...config, data: { ids, ...(meta ? { meta } : {}) } },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -296,10 +296,10 @@ export abstract class BaseRemoteDataServices<E extends BaseEntity = BaseEntity,
|
||||
});
|
||||
}
|
||||
|
||||
/** Activate multiple entities. */
|
||||
batchActivate(ids: EntityId[], config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
/** Activate multiple entities. Optionally sends form data as `meta` in the request body. */
|
||||
batchActivate(ids: EntityId[], meta?: Record<string, unknown>, config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
return this.execute<void>(DESCRIPTORS.batchActivate, {
|
||||
config: { ...config, data: { ids } },
|
||||
config: { ...config, data: { ids, ...(meta ? { meta } : {}) } },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -311,10 +311,10 @@ export abstract class BaseRemoteDataServices<E extends BaseEntity = BaseEntity,
|
||||
});
|
||||
}
|
||||
|
||||
/** Deactivate multiple entities. */
|
||||
batchDeactivate(ids: EntityId[], config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
/** Deactivate multiple entities. Optionally sends form data as `meta` in the request body. */
|
||||
batchDeactivate(ids: EntityId[], meta?: Record<string, unknown>, config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
return this.execute<void>(DESCRIPTORS.batchDeactivate, {
|
||||
config: { ...config, data: { ids } },
|
||||
config: { ...config, data: { ids, ...(meta ? { meta } : {}) } },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -328,10 +328,10 @@ export abstract class BaseRemoteDataServices<E extends BaseEntity = BaseEntity,
|
||||
});
|
||||
}
|
||||
|
||||
/** Confirm processing of multiple data records. */
|
||||
batchConfirmData(ids: EntityId[], config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
/** Confirm processing of multiple data records. Optionally sends form data as `meta` in the request body. */
|
||||
batchConfirmData(ids: EntityId[], meta?: Record<string, unknown>, config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
return this.execute<void>(DESCRIPTORS.batchConfirmData, {
|
||||
config: { ...config, data: { ids } },
|
||||
config: { ...config, data: { ids, ...(meta ? { meta } : {}) } },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -343,10 +343,10 @@ export abstract class BaseRemoteDataServices<E extends BaseEntity = BaseEntity,
|
||||
});
|
||||
}
|
||||
|
||||
/** Cancel processing of multiple data records. */
|
||||
batchCancelData(ids: EntityId[], config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
/** Cancel processing of multiple data records. Optionally sends form data as `meta` in the request body. */
|
||||
batchCancelData(ids: EntityId[], meta?: Record<string, unknown>, config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
return this.execute<void>(DESCRIPTORS.batchCancelData, {
|
||||
config: { ...config, data: { ids } },
|
||||
config: { ...config, data: { ids, ...(meta ? { meta } : {}) } },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -360,10 +360,10 @@ export abstract class BaseRemoteDataServices<E extends BaseEntity = BaseEntity,
|
||||
});
|
||||
}
|
||||
|
||||
/** Rollback multiple transactions. */
|
||||
batchRollbackData(ids: EntityId[], config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
/** Rollback multiple transactions. Optionally sends form data as `meta` in the request body. */
|
||||
batchRollbackData(ids: EntityId[], meta?: Record<string, unknown>, config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
return this.execute<void>(DESCRIPTORS.batchRollbackData, {
|
||||
config: { ...config, data: { ids } },
|
||||
config: { ...config, data: { ids, ...(meta ? { meta } : {}) } },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -375,10 +375,10 @@ export abstract class BaseRemoteDataServices<E extends BaseEntity = BaseEntity,
|
||||
});
|
||||
}
|
||||
|
||||
/** Hold multiple transactions. */
|
||||
batchHoldData(ids: EntityId[], config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
/** Hold multiple transactions. Optionally sends form data as `meta` in the request body. */
|
||||
batchHoldData(ids: EntityId[], meta?: Record<string, unknown>, config?: AxiosRequestConfig): Promise<ApiResponse<void>> {
|
||||
return this.execute<void>(DESCRIPTORS.batchHoldData, {
|
||||
config: { ...config, data: { ids } },
|
||||
config: { ...config, data: { ids, ...(meta ? { meta } : {}) } },
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,22 +33,22 @@ export const DEFAULT_METHODS: RequestMethodMap = {
|
||||
createMethod: 'POST',
|
||||
editMethod: 'PUT',
|
||||
deleteMethod: 'DELETE',
|
||||
batchDeleteMethod: 'POST',
|
||||
batchDeleteMethod: 'PUT',
|
||||
|
||||
activateMethod: 'PATCH',
|
||||
batchActivateMethod: 'POST',
|
||||
batchActivateMethod: 'PUT',
|
||||
deactivateMethod: 'PATCH',
|
||||
batchDeactivateMethod: 'POST',
|
||||
batchDeactivateMethod: 'PUT',
|
||||
|
||||
confirmDataMethod: 'PATCH',
|
||||
batchConfirmDataMethod: 'POST',
|
||||
batchConfirmDataMethod: 'PUT',
|
||||
cancelDataMethod: 'PATCH',
|
||||
batchCancelDataMethod: 'POST',
|
||||
batchCancelDataMethod: 'PUT',
|
||||
|
||||
rollbackDataMethod: 'PATCH',
|
||||
batchRollbackDataMethod: 'POST',
|
||||
batchRollbackDataMethod: 'PUT',
|
||||
holdDataMethod: 'PATCH',
|
||||
batchHoldDataMethod: 'POST',
|
||||
batchHoldDataMethod: 'PUT',
|
||||
};
|
||||
|
||||
// ─── Operation Descriptors ──────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user