|
@@ -7,6 +7,8 @@ import {
|
|
|
Modal, ModalHeader, ModalBody, ModalFooter,
|
|
Modal, ModalHeader, ModalBody, ModalFooter,
|
|
|
} from 'reactstrap';
|
|
} from 'reactstrap';
|
|
|
|
|
|
|
|
|
|
+import { PageActionOnGroupDelete } from '~/interfaces/user-group';
|
|
|
|
|
+
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Delete User Group Select component
|
|
* Delete User Group Select component
|
|
@@ -18,26 +20,19 @@ import {
|
|
|
type Props = {
|
|
type Props = {
|
|
|
userGroups: IUserGroupHasId[],
|
|
userGroups: IUserGroupHasId[],
|
|
|
deleteUserGroup?: IUserGroupHasId,
|
|
deleteUserGroup?: IUserGroupHasId,
|
|
|
- onDelete?: (deleteGroupId: string, actionName: string, transferToUserGroupId: string) => Promise<void> | void,
|
|
|
|
|
|
|
+ onDelete?: (deleteGroupId: string, actionName: PageActionOnGroupDelete, transferToUserGroupId: string) => Promise<void> | void,
|
|
|
isShow: boolean,
|
|
isShow: boolean,
|
|
|
onHide?: () => Promise<void> | void,
|
|
onHide?: () => Promise<void> | void,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
type AvailableOption = {
|
|
type AvailableOption = {
|
|
|
id: number,
|
|
id: number,
|
|
|
- actionForPages: string,
|
|
|
|
|
|
|
+ actionForPages: PageActionOnGroupDelete,
|
|
|
iconClass: string,
|
|
iconClass: string,
|
|
|
styleClass: string,
|
|
styleClass: string,
|
|
|
label: string,
|
|
label: string,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-// actionName master constants
|
|
|
|
|
-const actionForPages = {
|
|
|
|
|
- public: 'public',
|
|
|
|
|
- delete: 'delete',
|
|
|
|
|
- transfer: 'transfer',
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
export const UserGroupDeleteModal: FC<Props> = (props: Props) => {
|
|
export const UserGroupDeleteModal: FC<Props> = (props: Props) => {
|
|
|
|
|
|
|
|
const { t } = useTranslation();
|
|
const { t } = useTranslation();
|
|
@@ -50,21 +45,21 @@ export const UserGroupDeleteModal: FC<Props> = (props: Props) => {
|
|
|
return [
|
|
return [
|
|
|
{
|
|
{
|
|
|
id: 1,
|
|
id: 1,
|
|
|
- actionForPages: actionForPages.public,
|
|
|
|
|
|
|
+ actionForPages: PageActionOnGroupDelete.publicize,
|
|
|
iconClass: 'icon-people',
|
|
iconClass: 'icon-people',
|
|
|
styleClass: '',
|
|
styleClass: '',
|
|
|
label: t('admin:user_group_management.delete_modal.publish_pages'),
|
|
label: t('admin:user_group_management.delete_modal.publish_pages'),
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
id: 2,
|
|
id: 2,
|
|
|
- actionForPages: actionForPages.delete,
|
|
|
|
|
|
|
+ actionForPages: PageActionOnGroupDelete.delete,
|
|
|
iconClass: 'icon-trash',
|
|
iconClass: 'icon-trash',
|
|
|
styleClass: 'text-danger',
|
|
styleClass: 'text-danger',
|
|
|
label: t('admin:user_group_management.delete_modal.delete_pages'),
|
|
label: t('admin:user_group_management.delete_modal.delete_pages'),
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
id: 3,
|
|
id: 3,
|
|
|
- actionForPages: actionForPages.transfer,
|
|
|
|
|
|
|
+ actionForPages: PageActionOnGroupDelete.transfer,
|
|
|
iconClass: 'icon-options',
|
|
iconClass: 'icon-options',
|
|
|
styleClass: '',
|
|
styleClass: '',
|
|
|
label: t('admin:user_group_management.delete_modal.transfer_pages'),
|
|
label: t('admin:user_group_management.delete_modal.transfer_pages'),
|
|
@@ -75,14 +70,14 @@ export const UserGroupDeleteModal: FC<Props> = (props: Props) => {
|
|
|
/*
|
|
/*
|
|
|
* State
|
|
* State
|
|
|
*/
|
|
*/
|
|
|
- const [actionName, setActionName] = useState<string>('');
|
|
|
|
|
|
|
+ const [actionName, setActionName] = useState<PageActionOnGroupDelete | null>(null);
|
|
|
const [transferToUserGroupId, setTransferToUserGroupId] = useState<string>('');
|
|
const [transferToUserGroupId, setTransferToUserGroupId] = useState<string>('');
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
|
* Function
|
|
* Function
|
|
|
*/
|
|
*/
|
|
|
const resetStates = useCallback(() => {
|
|
const resetStates = useCallback(() => {
|
|
|
- setActionName('');
|
|
|
|
|
|
|
+ setActionName(null);
|
|
|
setTransferToUserGroupId('');
|
|
setTransferToUserGroupId('');
|
|
|
}, []);
|
|
}, []);
|
|
|
|
|
|
|
@@ -106,7 +101,7 @@ export const UserGroupDeleteModal: FC<Props> = (props: Props) => {
|
|
|
}, []);
|
|
}, []);
|
|
|
|
|
|
|
|
const handleSubmit = useCallback((e) => {
|
|
const handleSubmit = useCallback((e) => {
|
|
|
- if (onDelete == null || deleteUserGroup == null) {
|
|
|
|
|
|
|
+ if (onDelete == null || deleteUserGroup == null || actionName == null) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -129,7 +124,7 @@ export const UserGroupDeleteModal: FC<Props> = (props: Props) => {
|
|
|
name="actionName"
|
|
name="actionName"
|
|
|
className="form-control"
|
|
className="form-control"
|
|
|
placeholder="select"
|
|
placeholder="select"
|
|
|
- value={actionName}
|
|
|
|
|
|
|
+ value={actionName?.toString() ?? ''}
|
|
|
onChange={handleActionChange}
|
|
onChange={handleActionChange}
|
|
|
>
|
|
>
|
|
|
<option value="" disabled>{t('admin:user_group_management.delete_modal.dropdown_desc')}</option>
|
|
<option value="" disabled>{t('admin:user_group_management.delete_modal.dropdown_desc')}</option>
|
|
@@ -157,7 +152,7 @@ export const UserGroupDeleteModal: FC<Props> = (props: Props) => {
|
|
|
return (
|
|
return (
|
|
|
<select
|
|
<select
|
|
|
name="transferToUserGroupId"
|
|
name="transferToUserGroupId"
|
|
|
- className={`form-control ${actionName === actionForPages.transfer ? '' : 'd-none'}`}
|
|
|
|
|
|
|
+ className={`form-control ${actionName === PageActionOnGroupDelete.transfer ? '' : 'd-none'}`}
|
|
|
value={transferToUserGroupId}
|
|
value={transferToUserGroupId}
|
|
|
onChange={handleGroupChange}
|
|
onChange={handleGroupChange}
|
|
|
>
|
|
>
|
|
@@ -170,10 +165,10 @@ export const UserGroupDeleteModal: FC<Props> = (props: Props) => {
|
|
|
const validateForm = useCallback(() => {
|
|
const validateForm = useCallback(() => {
|
|
|
let isValid = true;
|
|
let isValid = true;
|
|
|
|
|
|
|
|
- if (actionName === '') {
|
|
|
|
|
|
|
+ if (actionName === null) {
|
|
|
isValid = false;
|
|
isValid = false;
|
|
|
}
|
|
}
|
|
|
- else if (actionName === actionForPages.transfer) {
|
|
|
|
|
|
|
+ else if (actionName === PageActionOnGroupDelete.transfer) {
|
|
|
isValid = transferToUserGroupId !== '';
|
|
isValid = transferToUserGroupId !== '';
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -195,7 +190,7 @@ export const UserGroupDeleteModal: FC<Props> = (props: Props) => {
|
|
|
</ModalBody>
|
|
</ModalBody>
|
|
|
<ModalFooter>
|
|
<ModalFooter>
|
|
|
<form className="d-flex justify-content-between w-100" onSubmit={handleSubmit}>
|
|
<form className="d-flex justify-content-between w-100" onSubmit={handleSubmit}>
|
|
|
- <div className="d-flex mb-0 me-3 ">
|
|
|
|
|
|
|
+ <div className="d-flex mb-0 me-3">
|
|
|
{renderPageActionSelector()}
|
|
{renderPageActionSelector()}
|
|
|
{renderGroupSelector()}
|
|
{renderGroupSelector()}
|
|
|
</div>
|
|
</div>
|
|
@@ -203,7 +198,7 @@ export const UserGroupDeleteModal: FC<Props> = (props: Props) => {
|
|
|
<span className="material-symbols-outlined">delete_forever</span> {t('Delete')}
|
|
<span className="material-symbols-outlined">delete_forever</span> {t('Delete')}
|
|
|
</button>
|
|
</button>
|
|
|
</form>
|
|
</form>
|
|
|
- {actionName === 'public' && (
|
|
|
|
|
|
|
+ {actionName === PageActionOnGroupDelete.publicize && (
|
|
|
<div className="form-text text-muted">
|
|
<div className="form-text text-muted">
|
|
|
<small>{t('admin:user_group_management.delete_modal.option_explanation')}</small>
|
|
<small>{t('admin:user_group_management.delete_modal.option_explanation')}</small>
|
|
|
</div>
|
|
</div>
|