|
@@ -1,6 +1,7 @@
|
|
|
import React, {
|
|
import React, {
|
|
|
FC, useState, useCallback, useEffect,
|
|
FC, useState, useCallback, useEffect,
|
|
|
} from 'react';
|
|
} from 'react';
|
|
|
|
|
+
|
|
|
import { useTranslation } from 'react-i18next';
|
|
import { useTranslation } from 'react-i18next';
|
|
|
import { TFunctionResult } from 'i18next';
|
|
import { TFunctionResult } from 'i18next';
|
|
|
import dateFnsFormat from 'date-fns/format';
|
|
import dateFnsFormat from 'date-fns/format';
|
|
@@ -16,6 +17,7 @@ type Props = {
|
|
|
childUserGroups: IUserGroupHasId[],
|
|
childUserGroups: IUserGroupHasId[],
|
|
|
isAclEnabled: boolean,
|
|
isAclEnabled: boolean,
|
|
|
onEdit?: (userGroup: IUserGroupHasId) => void | Promise<void>,
|
|
onEdit?: (userGroup: IUserGroupHasId) => void | Promise<void>,
|
|
|
|
|
+ onRemove?: (userGroup: IUserGroupHasId) => void | Promise<void>,
|
|
|
onDelete?: (userGroup: IUserGroupHasId) => void | Promise<void>,
|
|
onDelete?: (userGroup: IUserGroupHasId) => void | Promise<void>,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -73,7 +75,7 @@ const UserGroupTable: FC<Props> = (props: Props) => {
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- const onClickEdit = (e) => {
|
|
|
|
|
|
|
+ const onClickEdit = async(e) => {
|
|
|
if (props.onEdit == null) {
|
|
if (props.onEdit == null) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
@@ -86,6 +88,25 @@ const UserGroupTable: FC<Props> = (props: Props) => {
|
|
|
props.onEdit(userGroup);
|
|
props.onEdit(userGroup);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ const onClickRemove = async(e) => {
|
|
|
|
|
+ if (props.onRemove == null) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const userGroup = findUserGroup(e);
|
|
|
|
|
+ if (userGroup == null) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ await props.onRemove(userGroup);
|
|
|
|
|
+ userGroup.parent = null;
|
|
|
|
|
+ }
|
|
|
|
|
+ catch {
|
|
|
|
|
+ //
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
const onClickDelete = (e) => { // no preventDefault
|
|
const onClickDelete = (e) => { // no preventDefault
|
|
|
if (props.onDelete == null) {
|
|
if (props.onDelete == null) {
|
|
|
return;
|
|
return;
|
|
@@ -179,6 +200,9 @@ const UserGroupTable: FC<Props> = (props: Props) => {
|
|
|
<button className="dropdown-item" type="button" role="button" onClick={onClickEdit} data-user-group-id={group._id}>
|
|
<button className="dropdown-item" type="button" role="button" onClick={onClickEdit} data-user-group-id={group._id}>
|
|
|
<i className="icon-fw icon-note"></i> {t('Edit')}
|
|
<i className="icon-fw icon-note"></i> {t('Edit')}
|
|
|
</button>
|
|
</button>
|
|
|
|
|
+ <button className="dropdown-item" type="button" role="button" onClick={onClickRemove} data-user-group-id={group._id}>
|
|
|
|
|
+ <i className="icon-fw fa fa-chain-broken"></i> {t('admin:user_group_management.remove_child_group')}
|
|
|
|
|
+ </button>
|
|
|
<button className="dropdown-item" type="button" role="button" onClick={onClickDelete} data-user-group-id={group._id}>
|
|
<button className="dropdown-item" type="button" role="button" onClick={onClickDelete} data-user-group-id={group._id}>
|
|
|
<i className="icon-fw icon-fire text-danger"></i> {t('Delete')}
|
|
<i className="icon-fw icon-fire text-danger"></i> {t('Delete')}
|
|
|
</button>
|
|
</button>
|