react-toolkits 2.22.33 → 2.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +6 -6
  3. package/lib/chunk-CHYXXPB2.js +3 -0
  4. package/lib/chunk-CHYXXPB2.js.map +1 -0
  5. package/lib/{chunk-WRFAON6X.js → chunk-ES2NIJ2P.js} +2 -2
  6. package/lib/{chunk-WRFAON6X.js.map → chunk-ES2NIJ2P.js.map} +1 -1
  7. package/lib/{chunk-SXIEAILV.js → chunk-LHVTM6A4.js} +2 -2
  8. package/lib/chunk-LHVTM6A4.js.map +1 -0
  9. package/lib/chunk-LO57CB37.js +2 -0
  10. package/lib/{chunk-LKZ6OMAY.js.map → chunk-LO57CB37.js.map} +1 -1
  11. package/lib/{chunk-HMG7OG2U.js → chunk-OLBTRSRZ.js} +2 -2
  12. package/lib/{chunk-HMG7OG2U.js.map → chunk-OLBTRSRZ.js.map} +1 -1
  13. package/lib/{chunk-A5SX7QOV.js → chunk-PFXWDVQN.js} +2 -2
  14. package/lib/chunk-PFXWDVQN.js.map +1 -0
  15. package/lib/{chunk-QKX27H5N.js → chunk-QHZU443H.js} +2 -2
  16. package/lib/chunk-QHZU443H.js.map +1 -0
  17. package/lib/{chunk-TPZ34WDV.js → chunk-V3ENO43B.js} +2 -2
  18. package/lib/{chunk-TPZ34WDV.js.map → chunk-V3ENO43B.js.map} +1 -1
  19. package/lib/{chunk-Z6CAC4PS.js → chunk-ZYMD6X3T.js} +2 -2
  20. package/lib/{chunk-Z6CAC4PS.js.map → chunk-ZYMD6X3T.js.map} +1 -1
  21. package/lib/{createMenuItem-P5XUONZT.js → createMenuItem-4FKIB6NW.js} +2 -2
  22. package/lib/{createMenuItem-P5XUONZT.js.map → createMenuItem-4FKIB6NW.js.map} +1 -1
  23. package/lib/index.d.ts +2 -2
  24. package/lib/index.js +2 -2
  25. package/lib/index.js.map +1 -1
  26. package/lib/{menuItemList-4NNDGF2U.js → menuItemList-PHV3QIF2.js} +2 -2
  27. package/lib/{menuItemList-4NNDGF2U.js.map → menuItemList-PHV3QIF2.js.map} +1 -1
  28. package/lib/{roleDetail-RHRRU4C4.js → roleDetail-4LSMW6IC.js} +2 -2
  29. package/lib/{roleDetail-RHRRU4C4.js.map → roleDetail-4LSMW6IC.js.map} +1 -1
  30. package/lib/{roleList-5KNJMTRI.js → roleList-ZTZ6ZF5M.js} +2 -2
  31. package/lib/roleList-ZTZ6ZF5M.js.map +1 -0
  32. package/lib/{updateMenuItem-T5OQVIBK.js → updateMenuItem-KF6Y4ZJZ.js} +2 -2
  33. package/lib/{updateMenuItem-T5OQVIBK.js.map → updateMenuItem-KF6Y4ZJZ.js.map} +1 -1
  34. package/lib/{userDetail-ANV6RZPM.js → userDetail-CLF5VWNA.js} +2 -2
  35. package/lib/userDetail-CLF5VWNA.js.map +1 -0
  36. package/lib/{userList-BGORGPAR.js → userList-ILOQI374.js} +2 -2
  37. package/lib/{userList-BGORGPAR.js.map → userList-ILOQI374.js.map} +1 -1
  38. package/package.json +1 -1
  39. package/lib/chunk-4HSBROEY.js +0 -3
  40. package/lib/chunk-4HSBROEY.js.map +0 -1
  41. package/lib/chunk-A5SX7QOV.js.map +0 -1
  42. package/lib/chunk-LKZ6OMAY.js +0 -2
  43. package/lib/chunk-QKX27H5N.js.map +0 -1
  44. package/lib/chunk-SXIEAILV.js.map +0 -1
  45. package/lib/roleList-5KNJMTRI.js.map +0 -1
  46. package/lib/userDetail-ANV6RZPM.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/services/index.ts"],"names":["usePermission","code","config","ky","useKy","permissionVersion","useToolkitsStore","permissionCodes","version","data","rest","useQuery","queryKeys","newData","acc","curr","useMenuList","loginPath","appId","APP_ID_HEADER","useGames","gameApiV2","requestConfig"],"mappings":"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","file":"chunk-QKX27H5N.js","sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport type { Options as KyOptions } from 'ky'\n\nimport type { Game } from '@/components/layout/types'\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { APP_ID_HEADER, PermissionVersion } from '@/constants'\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\nimport type { MenuListItem } from '@/types'\n\nexport function usePermission(code?: string | string[], config?: KyOptions) {\n const ky = useKy()\n const { permissionVersion } = useToolkitsStore()\n const permissionCodes: string[] = typeof code !== 'undefined' ? (typeof code === 'string' ? [code] : code) : []\n const version = permissionVersion !== PermissionVersion.V1 ? 'v2' : 'v1'\n\n const { data, ...rest } = useQuery({\n queryKey: queryKeys.permissions.check(permissionCodes, version),\n queryFn: () =>\n ky.post<Record<string, boolean> & { has_all?: boolean }>(\n permissionVersion !== PermissionVersion.V1 ? '/api/usystem/user/checkV2' : '/api/usystem/user/check',\n {\n permissions: permissionCodes,\n },\n config,\n ),\n enabled: permissionCodes.length > 0,\n retry: false,\n })\n\n let newData: boolean | Record<string, boolean> = true\n\n if (typeof code === 'string') {\n newData = data?.has_all ? true : (data?.[code] ?? false)\n } else if (Array.isArray(code) && code.length > 0) {\n newData = permissionCodes.reduce<Record<string, boolean>>((acc, curr) => {\n acc[curr] = data?.has_all ? true : (data?.[curr] ?? false)\n return acc\n }, {})\n }\n\n return {\n ...rest,\n data: newData,\n }\n}\n\nexport function useMenuList() {\n const { loginPath, appId } = useToolkitsStore()\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.menus.navbar(appId ? String(appId) : undefined),\n queryFn: () =>\n ky.get<MenuListItem[]>('/api/usystem/menu/navbar', {\n headers: { [APP_ID_HEADER]: appId ? encodeURIComponent(String(appId)) : 'global' },\n }),\n enabled: window.location.pathname !== loginPath,\n })\n}\n\nexport const useGames = () => {\n const { gameApiV2, permissionVersion } = useToolkitsStore()\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.games.all,\n queryFn: async () => {\n const requestConfig = {\n headers: {\n [APP_ID_HEADER]: 'global',\n },\n }\n\n if (gameApiV2) {\n const response = await ky.get<{ list: Game[] }>('/api/game/list', requestConfig)\n return response?.list ?? []\n }\n\n const response = await ky.get<Game[]>('/api/usystem/game/all', requestConfig)\n return response ?? []\n },\n enabled: permissionVersion !== PermissionVersion.V1,\n retry: false,\n })\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/authButton/AuthButton.tsx","../src/hooks/modal/stores.ts","../src/hooks/modal/modal.tsx","../src/hooks/modal/formModal.tsx"],"names":["AuthButton","props","children","code","showLoading","disabled","config","restProps","codes","data","isLoading","usePermission","t","useTranslation","hasPermission","isButtonDisabled","isButtonLoading","shouldShowTooltip","buttonNode","jsx","Button","Tooltip","AuthButton_default","useModalStore","createVisibilityStore","useModal","content","onConfirm","afterOpen","afterClose","modalProps","_id","useMemo","generateId","show","hide","isOpen","cleanup","useEffect","open","confirmLoading","setConfirmLoading","useState","isRenderFunction","_show","useCallback","_hide","onCancel","onOk","error","internalModal","Modal","useFormModal","form","formProps","onSuccess","internalExtraValues","setInternalExtraValues","internalForm","Form","id","modal","operation","values","showForm","options","initialValues","extraValues"],"mappings":"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","file":"chunk-SXIEAILV.js","sourcesContent":["import type { ButtonProps } from 'antd'\nimport { Button, Tooltip } from 'antd'\nimport type { Options as KyOptions } from 'ky'\nimport type { FC, PropsWithChildren } from 'react'\n\nimport { useTranslation } from '@/locale'\nimport { usePermission } from '@/services'\n\nexport interface AuthButtonProps extends ButtonProps {\n /** 权限码,支持单个或多个 */\n code?: string | string[]\n /** 加载时是否显示 loading 状态 */\n showLoading?: boolean\n /** 请求配置 */\n config?: KyOptions\n}\n\n/**\n * 授权按钮组件\n * 根据权限码自动控制按钮的启用/禁用状态\n * - 有权限:正常显示可点击按钮\n * - 无权限:显示禁用按钮并带有提示\n * - 加载中:显示加载状态\n */\nconst AuthButton: FC<PropsWithChildren<AuthButtonProps>> = props => {\n const { children, code, showLoading, disabled, config, ...restProps } = props\n const codes = code ? (Array.isArray(code) ? code : [code]) : []\n const { data, isLoading } = usePermission(codes, config)\n const { t } = useTranslation()\n\n // 判断是否有权限\n const hasPermission = data && (typeof data === 'boolean' || Object.values(data).some(Boolean))\n\n // 计算最终的禁用状态和加载状态\n const isButtonDisabled = disabled || !hasPermission || (isLoading && !showLoading)\n const isButtonLoading = isLoading && showLoading\n\n // 判断是否需要显示 tooltip(任何禁用状态都显示)\n const shouldShowTooltip = isButtonDisabled\n\n const buttonNode = (\n <Button disabled={isButtonDisabled} loading={isButtonLoading} {...restProps}>\n {children}\n </Button>\n )\n\n if (shouldShowTooltip) {\n return (\n <Tooltip defaultOpen={false} title={t('global.noEntitlement')}>\n {buttonNode}\n </Tooltip>\n )\n }\n\n return buttonNode\n}\n\nexport default AuthButton\n","import { createVisibilityStore } from '@/utils'\n\nexport const useModalStore = createVisibilityStore()\n","import type { ModalProps } from 'antd'\nimport { Modal } from 'antd'\nimport { type ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { generateId } from '@/utils'\n\nimport { useModalStore } from './stores'\n\nexport interface UseModalOperation {\n hide: () => void\n}\n\nexport interface UseModalProps extends Omit<ModalProps, 'open' | 'confirmLoading' | 'onOk' | 'onCancel'> {\n content?: ReactNode | ((operation: UseModalOperation) => ReactNode)\n onConfirm?: () => void | Promise<void>\n afterOpen?: () => void | Promise<void>\n afterClose?: () => void | Promise<void>\n}\n\nexport function useModal(props: UseModalProps) {\n const { content, onConfirm, afterOpen, afterClose, ...modalProps } = props\n\n const _id = useMemo(() => generateId(), [])\n const { show, hide, isOpen, cleanup } = useModalStore()\n\n // 组件销毁时清理 ID\n useEffect(() => {\n return () => {\n cleanup(_id)\n }\n }, [_id, cleanup])\n\n const open = isOpen(_id)\n const [confirmLoading, setConfirmLoading] = useState(false)\n const isRenderFunction = typeof content === 'function'\n\n const _show = useCallback(async () => {\n show(_id)\n await afterOpen?.()\n }, [_id, show, afterOpen])\n\n const _hide = useCallback(() => {\n hide(_id)\n }, [_id, hide])\n\n const onCancel: ModalProps['onCancel'] = useCallback(async () => {\n _hide()\n await afterClose?.()\n }, [_hide, afterClose])\n\n const onOk = useCallback(async () => {\n try {\n setConfirmLoading(true)\n await onConfirm?.()\n _hide()\n await afterClose?.()\n } catch (error) {\n console.error('Modal confirm error:', error)\n throw error\n } finally {\n setConfirmLoading(false)\n }\n }, [onConfirm, _hide, afterClose])\n\n const internalModal = (\n <Modal {...modalProps} open={open} confirmLoading={confirmLoading} onOk={onOk} onCancel={onCancel}>\n {isRenderFunction ? content({ hide: _hide }) : content}\n </Modal>\n )\n\n return {\n id: _id,\n show: _show,\n hide: _hide,\n modal: internalModal,\n }\n}\n","import type { FormInstance, FormProps } from 'antd'\nimport { Form } from 'antd'\nimport type { AnyObject } from 'antd/es/_util/type'\nimport type { ReactNode } from 'react'\nimport { useCallback, useState } from 'react'\n\nimport type { RecursivePartial } from '@/types'\n\nimport { useModal, type UseModalOperation, type UseModalProps } from './modal'\n\nexport interface ShowFormOptions<Values extends AnyObject, ExtraValues> {\n initialValues?: RecursivePartial<Values>\n extraValues?: ExtraValues\n}\n\nexport interface UseFormModalProps<Values extends AnyObject = AnyObject, ExtraValues = Record<string, unknown>>\n extends Omit<UseModalProps, 'onConfirm' | 'content' | 'onShow' | 'afterClose'> {\n formProps?: Omit<FormProps, 'form'>\n form?: FormInstance<Values>\n content?: ReactNode | ((extraValues: ExtraValues, operation: UseModalOperation) => ReactNode)\n onConfirm?: (values: Values, extraValues: ExtraValues) => void | Promise<void>\n onSuccess?: () => void\n afterClose?: (form: FormInstance<Values>) => void\n}\n\nexport interface UseFormModalReturn<Values extends AnyObject, ExtraValues> {\n id: number\n show: (options?: ShowFormOptions<Values, ExtraValues>) => void\n hide: () => void\n modal: ReactNode\n}\n\nexport function useFormModal<Values extends AnyObject = AnyObject, ExtraValues = Record<string, unknown>>(\n props: UseFormModalProps<Values, ExtraValues>,\n): UseFormModalReturn<Values, ExtraValues> {\n const { content, form, formProps, onConfirm, onSuccess, afterClose, ...modalProps } = props\n const [internalExtraValues, setInternalExtraValues] = useState<ExtraValues>({} as ExtraValues)\n const [internalForm] = Form.useForm<Values>(form)\n\n const isRenderFunction = typeof content === 'function'\n\n const { id, show, hide, modal } = useModal({\n ...modalProps,\n content: operation => (\n <Form {...formProps} form={internalForm}>\n {isRenderFunction ? content(internalExtraValues, operation) : content}\n </Form>\n ),\n onConfirm: async () => {\n try {\n const values = await internalForm.validateFields()\n await onConfirm?.(values, internalExtraValues)\n onSuccess?.()\n hide()\n } catch (error) {\n console.error('Form validation or submission error:', error)\n throw error\n }\n },\n afterClose: () => {\n setInternalExtraValues({} as ExtraValues)\n afterClose?.(internalForm)\n },\n })\n\n const showForm = useCallback(\n (options?: ShowFormOptions<Values, ExtraValues>) => {\n const { initialValues, extraValues } = options || {}\n\n if (extraValues !== undefined) {\n setInternalExtraValues(extraValues)\n }\n\n if (initialValues) {\n internalForm.setFieldsValue(initialValues)\n }\n\n show()\n },\n [internalForm, show],\n )\n\n return {\n id,\n show: showForm,\n hide,\n modal,\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/modules/permission/pages/roleList/index.tsx"],"names":["RoleList","modal","message","App","viewable","usePermission","useTranslation","permissionVersion","useToolkitsStore","s","refetch","useQueryListStore","ky","useKy","showCreateModal","createModal","useRoleModal","showUpdateModal","updateModal","remove","useRemoveRole","handleUpdateBtnClick","record","data","columns","value","jsx","Link","Fragment","_","jsxs","Space","AuthButton_default","Highlight_default","Card","UsergroupAddOutlined","QueryList_default","roleList_default","withContext"],"mappings":"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","file":"roleList-5KNJMTRI.js","sourcesContent":["import { UsergroupAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Space } from 'antd'\nimport { Link } from 'react-router-dom'\n\nimport { AuthButton, Highlight, QueryList, useQueryListStore, useToolkitsStore, withContext } from '@/components'\nimport { PermissionVersion } from '@/constants'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { usePermission } from '@/services'\n\nimport { useRoleModal } from '../../hooks'\nimport { useRemoveRole } from '../../services'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../../types'\n\nconst RoleList = () => {\n const { modal, message } = App.useApp()\n const { data: viewable } = usePermission('200005')\n const { t } = useTranslation()\n const { permissionVersion } = useToolkitsStore(s => s)\n const { refetch } = useQueryListStore()\n const ky = useKy()\n\n const { show: showCreateModal, modal: createModal } = useRoleModal({\n mode: 'create',\n onSuccess() {\n refetch('role-list', { page: 1 })\n },\n })\n const { show: showUpdateModal, modal: updateModal } = useRoleModal({\n mode: 'update',\n onSuccess() {\n refetch('role-list')\n },\n })\n\n const remove = useRemoveRole()\n\n const handleUpdateBtnClick = async (record: RoleListItem) => {\n const data = await ky.get<RoleV1 | RoleV2>(\n `/api/usystem/role/info${permissionVersion === PermissionVersion.V2 ? 'V2' : ''}?name=${record.name}`,\n )\n\n showUpdateModal({\n initialValues: {\n permissions: data.permissions,\n name: data.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: data?.id,\n },\n })\n }\n\n const columns: TableColumnsType<RoleListItem> = [\n {\n title: t('global.name'),\n key: 'name',\n render(value: RoleListItem) {\n if (viewable) {\n return (\n <Link to={`${value.name}`} relative=\"path\">\n {value.name}\n </Link>\n )\n } else {\n return <>{value.name}</>\n }\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (_, record) => {\n return (\n <Space size=\"small\">\n <AuthButton\n code=\"200003\"\n size=\"small\"\n type=\"link\"\n onClick={async () => {\n handleUpdateBtnClick(record)\n }}\n >\n {t('global.update')}\n </AuthButton>\n <AuthButton\n danger\n code=\"200004\"\n size=\"small\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('Role.deleteTitle'),\n content: (\n <Highlight texts={[record.name]}>{t('Role.deleteContent', { role: record.name })}</Highlight>\n ),\n async onOk() {\n await remove.mutate({\n id: record.id,\n name: record.name,\n })\n\n refetch('role-list')\n\n message.success(t('Role.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </AuthButton>\n </Space>\n )\n },\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.role')}\n extra={\n <AuthButton\n type=\"primary\"\n code=\"200002\"\n icon={<UsergroupAddOutlined />}\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('Role.createTitle')}\n </AuthButton>\n }\n >\n <QueryList<RoleListItem, undefined, { List: RoleListItem[]; Total: number }>\n identifier=\"role-list\"\n rowKey=\"name\"\n columns={columns}\n code=\"200001\"\n request={{\n url: '/api/usystem/role/list',\n method: 'GET',\n }}\n dataAdapter={data => ({\n total: data?.Total,\n items: data?.List,\n })}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default withContext(RoleList, {\n isGlobal: true,\n})\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/modules/permission/pages/userDetail/index.tsx"],"names":["UserDetail","params","useParams","t","useTranslation","gameApiV2","permissionVersion","useToolkitsStore","isV3","ky","useKy","data","isLoading","refetch","useQuery","queryKeys","games","useGames","roleViewable","usePermission","show","modal","useUserModalV2","columns","value","item","jsx","Tag","WILDCARD","matchedGame","game","Link","jsxs","Fragment","Breadcrumb","Card","AuthButton_default","Descriptions","Table","userDetail_default"],"mappings":"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","file":"userDetail-ANV6RZPM.js","sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport type { TableColumnsType } from 'antd'\nimport { Breadcrumb, Card, Descriptions, Table, Tag } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\n\nimport { AuthButton, useToolkitsStore } from '@/components'\nimport { PermissionVersion, WILDCARD } from '@/constants'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { queryKeys } from '@/queryKeys'\nimport { useGames, usePermission } from '@/services'\n\nimport { useUserModalV2 } from '../../hooks'\nimport type { UserListItem } from '../../types'\n\nconst UserDetail = () => {\n const params = useParams<'id'>()\n const { t } = useTranslation()\n const { gameApiV2, permissionVersion } = useToolkitsStore()\n const isV3 = permissionVersion === PermissionVersion.V3\n const ky = useKy()\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: queryKeys.users.detail(params.id || ''),\n queryFn: () => ky.get<UserListItem>(`/api/usystem/user/info?id=${params.id}`),\n enabled: !!params.id,\n })\n const { data: games } = useGames()\n const { data: roleViewable } = usePermission('200005')\n\n const { show, modal } = useUserModalV2({\n mode: 'update',\n onSuccess() {\n refetch()\n },\n })\n\n const columns = [\n isV3 && {\n key: 'group',\n title: t('global.projectGroup'),\n dataIndex: 'game_group',\n render(value: string[]) {\n return value.map(item => {\n return <Tag key={item}>{item === WILDCARD ? '通用' : item}</Tag>\n })\n },\n },\n {\n key: 'game',\n title: t('global.game'),\n dataIndex: 'game_ids',\n render(value: string[]) {\n return value.map(item => {\n const matchedGame = games?.find(game => String(gameApiV2 ? game.game_id : game.id) === item)\n return <Tag key={item}>{matchedGame?.name ?? (item === WILDCARD ? '通用' : item)}</Tag>\n })\n },\n },\n {\n key: 'role',\n title: t('global.role'),\n dataIndex: 'role',\n render(value: string) {\n return roleViewable ? (\n <Link to={`../../role/${value}`} relative=\"path\">\n {value}\n </Link>\n ) : (\n value\n )\n },\n },\n ].filter(Boolean) as TableColumnsType\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: '1.5rem' }}\n items={[\n {\n key: '1',\n title: (\n <Link to=\"..\" relative=\"path\">\n {t('global.user')}\n </Link>\n ),\n },\n {\n key: '2',\n title: '用户详情',\n },\n ]}\n />\n <Card\n title=\"用户详情\"\n loading={isLoading}\n extra={\n <AuthButton\n code=\"100003\"\n onClick={() => {\n show({\n initialValues: {\n name: data?.name,\n permissions: data?.permissions,\n },\n extraValues: {\n id: data!.id,\n },\n })\n }}\n >\n {t('global.update')}\n </AuthButton>\n }\n >\n <Descriptions bordered column={1}>\n <Descriptions.Item label={t('global.name')}>{data?.name}</Descriptions.Item>\n <Descriptions.Item label=\"ID\">{data?.id}</Descriptions.Item>\n <Descriptions.Item label={t('global.role')}>\n <Table rowKey=\"role\" columns={columns} dataSource={data?.permissions} pagination={false} />\n </Descriptions.Item>\n </Descriptions>\n </Card>\n {modal}\n </>\n )\n}\n\nexport default UserDetail\n"]}