import { useIntl } from '@umijs/max';
import { Checkbox, Input, Tabs } from 'antd';
import { useMemo, useState } from 'react';
import { TabContent } from './components/TabContent';
import { usePermTree } from './hooks/usePermTree';
export interface PermTreeProps {
mode: 'view' | 'edit';
allPerms: API.PermItem[];
checkedPermIds?: number[];
onChange?: (ids: number[]) => void;
}
const TAB_KEYS = ['api', 'data'] as const;
export const PermTree = ({ mode, allPerms, checkedPermIds = [], onChange }: PermTreeProps) => {
const intl = useIntl();
const {
keyword,
setKeyword,
checkedIds,
grouped: allGroups,
filteredGroups,
toggle,
selectAll,
invert,
isAllSelected,
isIndeterminate,
} = usePermTree({ allPerms, initialCheckedIds: checkedPermIds, onChange });
const [activeTab, setActiveTab] = useState<'api' | 'data'>('api');
const tabItems = useMemo(
() =>
TAB_KEYS.map((key) => ({
key,
label: intl.formatMessage({ id: `admin.permTree.${key}Tab` }),
children: (