@hkyhy/marsun-components-core 0.1.138 → 0.1.140

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 (30) hide show
  1. package/README.md +1 -0
  2. package/dist/components/Iam/client.d.ts +3 -0
  3. package/dist/components/Iam/index.d.ts +1 -1
  4. package/dist/components/Iam/pages/IamUsersPage.d.ts +15 -1
  5. package/dist/components/Iam/pages/IamUsersPage.js +171 -162
  6. package/dist/components/Iam/pages/IamUsersPage.js.map +1 -1
  7. package/dist/components/Table/Table.d.ts +2 -2
  8. package/dist/components/Table/Table.js +75 -72
  9. package/dist/components/Table/Table.js.map +1 -1
  10. package/dist/components/Table/columnConfigUtils.d.ts +8 -0
  11. package/dist/components/Table/columnConfigUtils.js +130 -113
  12. package/dist/components/Table/columnConfigUtils.js.map +1 -1
  13. package/dist/components/Table/index.d.ts +1 -1
  14. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionForm.d.ts +2 -0
  15. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionForm.js +97 -83
  16. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionForm.js.map +1 -1
  17. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionModal.d.ts +2 -0
  18. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionModal.js +111 -106
  19. package/dist/components/Tools/ActionTracking/CreateAction/CreateActionModal.js.map +1 -1
  20. package/dist/components/Tools/ActionTracking/CreateAction/types.d.ts +4 -0
  21. package/dist/components/Tools/Inbox/InboxBell/InboxBell.js +168 -155
  22. package/dist/components/Tools/Inbox/InboxBell/InboxBell.js.map +1 -1
  23. package/dist/components/Tools/Inbox/InboxBell/inboxItemActions.js +60 -46
  24. package/dist/components/Tools/Inbox/InboxBell/inboxItemActions.js.map +1 -1
  25. package/dist/components/Tools/Inbox/InboxBell/style.module.scss.js +68 -60
  26. package/dist/components/Tools/Inbox/InboxBell/style.module.scss.js.map +1 -1
  27. package/dist/index.js +478 -477
  28. package/dist/marsun-components-core.css +1 -1
  29. package/dist/styles/global.css +1 -1
  30. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"IamUsersPage.js","sources":["../../../../src/components/Iam/pages/IamUsersPage.tsx"],"sourcesContent":["import { ModulePageShell } from '@/components/Layout';\nimport { Modal } from '@/components/Modal';\nimport {\n PermissionBindPanel,\n type PermissionBindCatalog,\n type PermissionBindItem,\n} from '@/components/PermissionBindPanel';\nimport Filter, {\n getFilterValue,\n InputFilterItem as ReactInputFilterItem,\n type FilterValue,\n} from '@/components/ReactFilter';\nimport { Table } from '@/components/Table';\nimport { SEMANTIC_COLORS, Tags } from '@/components/Tag';\nimport { CommonDescriptions, type DescriptionItem } from '@/components/Descriptions';\nimport { FormDataSync, FormInfo, FormModal, Select } from '@/components/Form';\nimport { Button, Space, Typography, message } from 'antd';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ComponentType,\n type ReactNode,\n} from 'react';\nimport type { IamClient } from '../client';\nimport type { IamRole, IamSharedGroup, IamUser } from '../types';\nimport { catalogToItems } from '../utils/catalogToItems';\nimport { buildDraftEffectivePermissions } from '../utils/draftEffectivePermissions';\nimport { MULTI_TAG_SHOW_LENGTH, multiTagSelectProps } from '../utils/multiTagSelect';\nimport { roleDisplayName, roleSelectOption } from '../utils/roleDisplay';\n\nconst ReactFilterBar = Filter as ComponentType<{\n value: FilterValue;\n onChange: (next: FilterValue) => void;\n list: unknown;\n}>;\n\nconst EP_PANEL_HEIGHT = 420;\n\nfunction buildViewItems(user: IamUser): DescriptionItem[] {\n const rolesValue: ReactNode = user.roles?.length ? (\n <Tags\n tags={user.roles.map((r) => roleDisplayName(r))}\n showLength={MULTI_TAG_SHOW_LENGTH}\n color={SEMANTIC_COLORS.INFO}\n empty=\"—\"\n />\n ) : (\n '—'\n );\n\n return [\n { label: '工号', value: user.employeeId || '—' },\n { label: '姓名', value: user.displayName || '—' },\n { label: '邮箱', value: user.email || '—' },\n {\n label: '组织',\n value:\n user.orgs\n ?.map((o) => o.name)\n .filter(Boolean)\n .join('、') || '—',\n span: 2,\n },\n { label: '角色', value: rolesValue, span: 2 },\n ];\n}\n\nexport type IamUsersPageProps = {\n client: IamClient;\n catalog: PermissionBindCatalog;\n systemEntryCodes: readonly string[];\n tableName?: string;\n title?: string;\n};\n\nexport default function IamUsersPage({\n client,\n catalog,\n systemEntryCodes,\n tableName = 'iam_users',\n title = '用户管理',\n}: IamUsersPageProps) {\n const [loading, setLoading] = useState(false);\n const [rows, setRows] = useState<IamUser[]>([]);\n const [total, setTotal] = useState(0);\n const [page, setPage] = useState(1);\n const [filterValue, setFilterValue] = useState<FilterValue>([]);\n const keyword = useMemo(() => {\n const flat = getFilterValue(filterValue) as Record<string, unknown>;\n return String(flat.keyword ?? '');\n }, [filterValue]);\n const [viewUser, setViewUser] = useState<IamUser | null>(null);\n const [viewLoading, setViewLoading] = useState(false);\n const [permUser, setPermUser] = useState<IamUser | null>(null);\n const [roles, setRoles] = useState<IamRole[]>([]);\n const [groups, setGroups] = useState<IamSharedGroup[]>([]);\n const [roleCodes, setRoleCodes] = useState<string[]>([]);\n const [groupIds, setGroupIds] = useState<string[]>([]);\n const [permFormEpoch, setPermFormEpoch] = useState(0);\n\n const catalogNameByCode = useMemo(() => {\n const m: Record<string, string> = {};\n for (const item of catalogToItems(catalog)) {\n m[item.code] = item.name;\n }\n return m;\n }, [catalog]);\n\n const draftEp = useMemo(\n () =>\n buildDraftEffectivePermissions({\n roleCodes,\n groupIds,\n roles,\n groups,\n nameByCode: catalogNameByCode,\n }),\n [roleCodes, groupIds, roles, groups, catalogNameByCode],\n );\n\n const panelPermissions = useMemo((): PermissionBindItem[] => {\n const epItems = draftEp\n .filter((p) => p.layer !== 'RESOURCE')\n .map((p) => ({\n id: p.code,\n code: p.code,\n name: p.name || p.code,\n layer: p.layer,\n }));\n const byCode = new Map(epItems.map((p) => [p.code, p]));\n const fromCatalog = catalogToItems(catalog).map((item) => {\n const hit = byCode.get(item.code);\n return hit ? { ...item, name: hit.name || item.name, layer: hit.layer || item.layer } : item;\n });\n const used = new Set(fromCatalog.map((p) => p.code));\n return [...fromCatalog, ...epItems.filter((p) => !used.has(p.code))];\n }, [draftEp, catalog]);\n\n const checkedEpIds = useMemo(\n () => draftEp.filter((p) => p.layer !== 'RESOURCE').map((p) => p.code),\n [draftEp],\n );\n\n const roleOptions = useMemo(() => roles.map((r) => roleSelectOption(r)), [roles]);\n const groupOptions = useMemo(\n () =>\n groups.map((g) => ({\n value: g.id,\n label: g.name || g.code,\n title: g.code ? `编码:${g.code}` : g.name,\n })),\n [groups],\n );\n\n const load = useCallback(async () => {\n setLoading(true);\n try {\n const data = await client.listUsers({ page, pageSize: 20, keyword: keyword || undefined });\n setRows(data.pageData);\n setTotal(data.total);\n } catch (e) {\n message.error(e instanceof Error ? e.message : '加载失败');\n } finally {\n setLoading(false);\n }\n }, [client, page, keyword]);\n\n useEffect(() => {\n void load();\n }, [load]);\n\n const openView = async (u: IamUser) => {\n setViewUser(u);\n setViewLoading(true);\n try {\n const detail = await client.getUser(u.id);\n setViewUser({\n ...u,\n ...detail,\n orgs: detail.orgs?.length ? detail.orgs : u.orgs,\n roles: detail.roles?.length ? detail.roles : u.roles,\n });\n } catch (e) {\n message.error(e instanceof Error ? e.message : '加载用户详情失败');\n } finally {\n setViewLoading(false);\n }\n };\n\n const openPerm = async (u: IamUser) => {\n setPermUser(u);\n try {\n const [r, g, mine, detail] = await Promise.all([\n client.listRoles(),\n client.listSharedGroups(),\n client.listUserSharedGroups(u.id),\n client.getUser(u.id),\n ]);\n setRoles(r);\n setGroups(g);\n setGroupIds(mine.map((x) => x.id));\n const appRoleCodes =\n detail.roles?.filter((x) => r.some((rr) => rr.code === x.code)).map((x) => x.code) || [];\n setRoleCodes(appRoleCodes);\n setPermFormEpoch((n) => n + 1);\n } catch (e) {\n message.error(e instanceof Error ? e.message : '加载权限失败');\n }\n };\n\n const onPermFormSync = useCallback((data: Record<string, unknown>) => {\n if (Array.isArray(data.groupIds)) setGroupIds(data.groupIds.map(String));\n if (Array.isArray(data.roleCodes)) setRoleCodes(data.roleCodes.map(String));\n }, []);\n\n const viewItems = useMemo(() => (viewUser ? buildViewItems(viewUser) : []), [viewUser]);\n\n return (\n <ModulePageShell title={title} fillHeight={false}>\n <div style={{ marginBottom: 12 }}>\n <ReactFilterBar\n value={filterValue}\n onChange={(next) => {\n setFilterValue(next);\n setPage(1);\n }}\n list={[\n [\n {\n type: ReactInputFilterItem,\n props: {\n name: 'keyword',\n label: '工号/姓名',\n placeholder: '工号/姓名',\n },\n },\n ],\n ]}\n />\n </div>\n <Table\n rowKey=\"id\"\n loading={loading}\n dataSource={rows}\n tableName={tableName}\n pagination={{\n current: page,\n total,\n pageSize: 20,\n onChange: setPage,\n }}\n columns={[\n { title: '工号', dataIndex: 'employeeId' },\n { title: '姓名', dataIndex: 'displayName' },\n { title: '邮箱', dataIndex: 'email', render: (v: string | null) => v || '—' },\n {\n title: '组织',\n key: 'org',\n render: (_: unknown, r: IamUser) =>\n r.orgs?.find((o) => o.isPrimary)?.name || r.orgs?.[0]?.name || '—',\n },\n {\n title: '操作',\n key: 'ops',\n render: (_: unknown, r: IamUser) => (\n <Space>\n <Button type=\"link\" size=\"small\" onClick={() => void openView(r)}>\n 查看\n </Button>\n <Button type=\"link\" size=\"small\" onClick={() => void openPerm(r)}>\n 权限管理\n </Button>\n </Space>\n ),\n },\n ]}\n />\n\n <Modal\n open={Boolean(viewUser)}\n title=\"查看用户\"\n onCancel={() => setViewUser(null)}\n footer={null}\n size=\"M\"\n scrollable\n >\n {viewUser ? (\n <CommonDescriptions\n content={viewItems}\n column={1}\n bordered\n size=\"small\"\n title={viewLoading ? '加载中…' : undefined}\n />\n ) : null}\n </Modal>\n\n <FormModal\n key={`iam-perm-${permUser?.id || 'x'}-${permFormEpoch}`}\n open={Boolean(permUser)}\n title={`权限管理 · ${permUser?.displayName || ''}`}\n width={920}\n onCancel={() => setPermUser(null)}\n okText=\"保存\"\n cancelText=\"取消\"\n formProps={{\n data: {\n dataScope: 'COMPANY',\n groupIds,\n roleCodes,\n },\n onSubmit: async (data: { groupIds?: string[]; roleCodes?: string[] }) => {\n if (!permUser) return;\n try {\n await client.setUserAppRoleCodes(permUser.id, data.roleCodes ?? roleCodes);\n await client.setUserSharedGroups(permUser.id, data.groupIds ?? groupIds);\n message.success('已保存');\n setPermUser(null);\n void load();\n } catch (e) {\n message.error(e instanceof Error ? e.message : '保存失败');\n throw e;\n }\n },\n }}\n >\n <Space direction=\"vertical\" style={{ width: '100%' }} size=\"middle\">\n <FormInfo\n column={2}\n gap={16}\n list={[\n <Select\n key=\"dataScope\"\n name=\"dataScope\"\n label=\"数据权限\"\n disabled\n options={[{ value: 'COMPANY', label: '全公司' }]}\n />,\n <Select\n key=\"groupIds\"\n name=\"groupIds\"\n label=\"共享组\"\n mode=\"multiple\"\n allowClear\n options={groupOptions}\n placeholder=\"请选择共享组(可选)\"\n {...multiTagSelectProps}\n />,\n <Select\n key=\"roleCodes\"\n name=\"roleCodes\"\n label=\"用户角色\"\n mode=\"multiple\"\n allowClear\n options={roleOptions}\n placeholder=\"请选择本应用角色(可选)\"\n {...multiTagSelectProps}\n />,\n ]}\n />\n <FormDataSync onChange={onPermFormSync} />\n <div>\n <Typography.Text strong>权限点(只读预览)</Typography.Text>\n {panelPermissions.length === 0 ? (\n <Typography.Text type=\"secondary\" style={{ display: 'block', marginTop: 8 }}>\n 暂无权限点\n </Typography.Text>\n ) : (\n <div style={{ marginTop: 8 }}>\n <PermissionBindPanel\n catalog={catalog}\n permissions={panelPermissions}\n value={checkedEpIds}\n onChange={() => undefined}\n systemEntryCodes={[...systemEntryCodes]}\n readOnly\n height={EP_PANEL_HEIGHT}\n />\n </div>\n )}\n </div>\n </Space>\n </FormModal>\n </ModulePageShell>\n );\n}\n"],"names":["ReactFilterBar","Filter","EP_PANEL_HEIGHT","buildViewItems","user","rolesValue","_a","jsx","Tags","r","roleDisplayName","MULTI_TAG_SHOW_LENGTH","SEMANTIC_COLORS","_b","o","IamUsersPage","client","catalog","systemEntryCodes","tableName","title","loading","setLoading","useState","rows","setRows","total","setTotal","page","setPage","filterValue","setFilterValue","keyword","useMemo","flat","getFilterValue","viewUser","setViewUser","viewLoading","setViewLoading","permUser","setPermUser","roles","setRoles","groups","setGroups","roleCodes","setRoleCodes","groupIds","setGroupIds","permFormEpoch","setPermFormEpoch","catalogNameByCode","m","item","catalogToItems","draftEp","buildDraftEffectivePermissions","panelPermissions","epItems","p","byCode","fromCatalog","hit","used","checkedEpIds","roleOptions","roleSelectOption","groupOptions","g","load","useCallback","data","message","useEffect","openView","u","detail","e","openPerm","mine","x","appRoleCodes","rr","n","onPermFormSync","viewItems","jsxs","ModulePageShell","next","ReactInputFilterItem","Table","v","_","_d","_c","Space","Button","Modal","CommonDescriptions","FormModal","FormInfo","Select","multiTagSelectProps","FormDataSync","Typography","PermissionBindPanel"],"mappings":"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"}
1
+ {"version":3,"file":"IamUsersPage.js","sources":["../../../../src/components/Iam/pages/IamUsersPage.tsx"],"sourcesContent":["import { ModulePageShell } from '@/components/Layout';\nimport { Modal } from '@/components/Modal';\nimport {\n PermissionBindPanel,\n type PermissionBindCatalog,\n type PermissionBindItem,\n} from '@/components/PermissionBindPanel';\nimport Filter, {\n getFilterValue,\n InputFilterItem as ReactInputFilterItem,\n type FilterValue,\n} from '@/components/ReactFilter';\nimport { Table } from '@/components/Table';\nimport { SEMANTIC_COLORS, Tags } from '@/components/Tag';\nimport { CommonDescriptions, type DescriptionItem } from '@/components/Descriptions';\nimport { FormDataSync, FormInfo, FormModal, Select } from '@/components/Form';\nimport { Alert, Button, Space, Typography, message } from 'antd';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ComponentType,\n type ReactNode,\n} from 'react';\nimport type { IamClient } from '../client';\nimport type { IamRole, IamSharedGroup, IamUser } from '../types';\nimport { catalogToItems } from '../utils/catalogToItems';\nimport { buildDraftEffectivePermissions } from '../utils/draftEffectivePermissions';\nimport { MULTI_TAG_SHOW_LENGTH, multiTagSelectProps } from '../utils/multiTagSelect';\nimport { roleDisplayName, roleSelectOption } from '../utils/roleDisplay';\n\nconst ReactFilterBar = Filter as ComponentType<{\n value: FilterValue;\n onChange: (next: FilterValue) => void;\n list: unknown;\n}>;\n\nconst EP_PANEL_HEIGHT = 420;\n\nfunction buildViewItems(user: IamUser): DescriptionItem[] {\n const rolesValue: ReactNode = user.roles?.length ? (\n <Tags\n tags={user.roles.map((r) => roleDisplayName(r))}\n showLength={MULTI_TAG_SHOW_LENGTH}\n color={SEMANTIC_COLORS.INFO}\n empty=\"—\"\n />\n ) : (\n '—'\n );\n\n return [\n { label: '工号', value: user.employeeId || '—' },\n { label: '姓名', value: user.displayName || '—' },\n { label: '邮箱', value: user.email || '—' },\n {\n label: '组织',\n value:\n user.orgs\n ?.map((o) => o.name)\n .filter(Boolean)\n .join('、') || '—',\n span: 2,\n },\n { label: '角色', value: rolesValue, span: 2 },\n ];\n}\n\nexport type IamPersonalDataScopeConfig = {\n /** value 用 '' 表示未设置(提交转 null) */\n options: { value: string; label: string }[];\n /** 选未设置时展示 */\n unsetHint?: string;\n};\n\nexport type IamUsersPageProps = {\n client: IamClient;\n catalog: PermissionBindCatalog;\n systemEntryCodes: readonly string[];\n tableName?: string;\n title?: string;\n /**\n * 个人数据范围(S3):传入后启用可编辑 Select,并调用 client.get/setUserAppDataScope。\n * Assets 不传则保持只读「全公司」占位。\n */\n personalDataScope?: IamPersonalDataScopeConfig;\n};\n\nexport default function IamUsersPage({\n client,\n catalog,\n systemEntryCodes,\n tableName = 'iam_users',\n title = '用户管理',\n personalDataScope,\n}: IamUsersPageProps) {\n const [loading, setLoading] = useState(false);\n const [rows, setRows] = useState<IamUser[]>([]);\n const [total, setTotal] = useState(0);\n const [page, setPage] = useState(1);\n const [filterValue, setFilterValue] = useState<FilterValue>([]);\n const keyword = useMemo(() => {\n const flat = getFilterValue(filterValue) as Record<string, unknown>;\n return String(flat.keyword ?? '');\n }, [filterValue]);\n const [viewUser, setViewUser] = useState<IamUser | null>(null);\n const [viewLoading, setViewLoading] = useState(false);\n const [permUser, setPermUser] = useState<IamUser | null>(null);\n const [roles, setRoles] = useState<IamRole[]>([]);\n const [groups, setGroups] = useState<IamSharedGroup[]>([]);\n const [roleCodes, setRoleCodes] = useState<string[]>([]);\n const [groupIds, setGroupIds] = useState<string[]>([]);\n const [dataScope, setDataScope] = useState<string>('');\n const [permFormEpoch, setPermFormEpoch] = useState(0);\n const scopeEditable = Boolean(\n personalDataScope?.options?.length && client.getUserAppDataScope && client.setUserAppDataScope,\n );\n\n const catalogNameByCode = useMemo(() => {\n const m: Record<string, string> = {};\n for (const item of catalogToItems(catalog)) {\n m[item.code] = item.name;\n }\n return m;\n }, [catalog]);\n\n const draftEp = useMemo(\n () =>\n buildDraftEffectivePermissions({\n roleCodes,\n groupIds,\n roles,\n groups,\n nameByCode: catalogNameByCode,\n }),\n [roleCodes, groupIds, roles, groups, catalogNameByCode],\n );\n\n const panelPermissions = useMemo((): PermissionBindItem[] => {\n const epItems = draftEp\n .filter((p) => p.layer !== 'RESOURCE')\n .map((p) => ({\n id: p.code,\n code: p.code,\n name: p.name || p.code,\n layer: p.layer,\n }));\n const byCode = new Map(epItems.map((p) => [p.code, p]));\n const fromCatalog = catalogToItems(catalog).map((item) => {\n const hit = byCode.get(item.code);\n return hit ? { ...item, name: hit.name || item.name, layer: hit.layer || item.layer } : item;\n });\n const used = new Set(fromCatalog.map((p) => p.code));\n return [...fromCatalog, ...epItems.filter((p) => !used.has(p.code))];\n }, [draftEp, catalog]);\n\n const checkedEpIds = useMemo(\n () => draftEp.filter((p) => p.layer !== 'RESOURCE').map((p) => p.code),\n [draftEp],\n );\n\n const roleOptions = useMemo(() => roles.map((r) => roleSelectOption(r)), [roles]);\n const groupOptions = useMemo(\n () =>\n groups.map((g) => ({\n value: g.id,\n label: g.name || g.code,\n title: g.code ? `编码:${g.code}` : g.name,\n })),\n [groups],\n );\n\n const load = useCallback(async () => {\n setLoading(true);\n try {\n const data = await client.listUsers({ page, pageSize: 20, keyword: keyword || undefined });\n setRows(data.pageData);\n setTotal(data.total);\n } catch (e) {\n message.error(e instanceof Error ? e.message : '加载失败');\n } finally {\n setLoading(false);\n }\n }, [client, page, keyword]);\n\n useEffect(() => {\n void load();\n }, [load]);\n\n const openView = async (u: IamUser) => {\n setViewUser(u);\n setViewLoading(true);\n try {\n const detail = await client.getUser(u.id);\n setViewUser({\n ...u,\n ...detail,\n orgs: detail.orgs?.length ? detail.orgs : u.orgs,\n roles: detail.roles?.length ? detail.roles : u.roles,\n });\n } catch (e) {\n message.error(e instanceof Error ? e.message : '加载用户详情失败');\n } finally {\n setViewLoading(false);\n }\n };\n\n const openPerm = async (u: IamUser) => {\n setPermUser(u);\n try {\n const [r, g, mine, detail, scope] = await Promise.all([\n client.listRoles(),\n client.listSharedGroups(),\n client.listUserSharedGroups(u.id),\n client.getUser(u.id),\n scopeEditable && client.getUserAppDataScope\n ? client.getUserAppDataScope(u.id)\n : Promise.resolve(null),\n ]);\n setRoles(r);\n setGroups(g);\n setGroupIds(mine.map((x) => x.id));\n const appRoleCodes =\n detail.roles?.filter((x) => r.some((rr) => rr.code === x.code)).map((x) => x.code) || [];\n setRoleCodes(appRoleCodes);\n setDataScope(scope || '');\n setPermFormEpoch((n) => n + 1);\n } catch (e) {\n message.error(e instanceof Error ? e.message : '加载权限失败');\n }\n };\n\n const onPermFormSync = useCallback((data: Record<string, unknown>) => {\n if (Array.isArray(data.groupIds)) setGroupIds(data.groupIds.map(String));\n if (Array.isArray(data.roleCodes)) setRoleCodes(data.roleCodes.map(String));\n if (typeof data.dataScope === 'string') setDataScope(data.dataScope);\n }, []);\n\n const viewItems = useMemo(() => (viewUser ? buildViewItems(viewUser) : []), [viewUser]);\n\n return (\n <ModulePageShell title={title} fillHeight={false}>\n <div style={{ marginBottom: 12 }}>\n <ReactFilterBar\n value={filterValue}\n onChange={(next) => {\n setFilterValue(next);\n setPage(1);\n }}\n list={[\n [\n {\n type: ReactInputFilterItem,\n props: {\n name: 'keyword',\n label: '工号/姓名',\n placeholder: '工号/姓名',\n },\n },\n ],\n ]}\n />\n </div>\n <Table\n rowKey=\"id\"\n loading={loading}\n dataSource={rows}\n tableName={tableName}\n pagination={{\n current: page,\n total,\n pageSize: 20,\n onChange: setPage,\n }}\n columns={[\n { title: '工号', dataIndex: 'employeeId' },\n { title: '姓名', dataIndex: 'displayName' },\n { title: '邮箱', dataIndex: 'email', render: (v: string | null) => v || '—' },\n {\n title: '组织',\n key: 'org',\n render: (_: unknown, r: IamUser) =>\n r.orgs?.find((o) => o.isPrimary)?.name || r.orgs?.[0]?.name || '—',\n },\n {\n title: '操作',\n key: 'ops',\n render: (_: unknown, r: IamUser) => (\n <Space>\n <Button type=\"link\" size=\"small\" onClick={() => void openView(r)}>\n 查看\n </Button>\n <Button type=\"link\" size=\"small\" onClick={() => void openPerm(r)}>\n 权限管理\n </Button>\n </Space>\n ),\n },\n ]}\n />\n\n <Modal\n open={Boolean(viewUser)}\n title=\"查看用户\"\n onCancel={() => setViewUser(null)}\n footer={null}\n size=\"M\"\n scrollable\n >\n {viewUser ? (\n <CommonDescriptions\n content={viewItems}\n column={1}\n bordered\n size=\"small\"\n title={viewLoading ? '加载中…' : undefined}\n />\n ) : null}\n </Modal>\n\n <FormModal\n key={`iam-perm-${permUser?.id || 'x'}-${permFormEpoch}`}\n open={Boolean(permUser)}\n title={`权限管理 · ${permUser?.displayName || ''}`}\n width={920}\n onCancel={() => setPermUser(null)}\n okText=\"保存\"\n cancelText=\"取消\"\n formProps={{\n data: {\n dataScope: scopeEditable ? dataScope : 'COMPANY',\n groupIds,\n roleCodes,\n },\n onSubmit: async (data: {\n groupIds?: string[];\n roleCodes?: string[];\n dataScope?: string;\n }) => {\n if (!permUser) return;\n try {\n if (scopeEditable && client.setUserAppDataScope) {\n const raw = String(data.dataScope ?? dataScope ?? '').trim();\n await client.setUserAppDataScope(permUser.id, raw || null);\n }\n await client.setUserAppRoleCodes(permUser.id, data.roleCodes ?? roleCodes);\n await client.setUserSharedGroups(permUser.id, data.groupIds ?? groupIds);\n message.success('已保存');\n setPermUser(null);\n void load();\n } catch (e) {\n message.error(e instanceof Error ? e.message : '保存失败');\n throw e;\n }\n },\n }}\n >\n <Space direction=\"vertical\" style={{ width: '100%' }} size=\"middle\">\n {scopeEditable && !dataScope && personalDataScope?.unsetHint ? (\n <Alert type=\"warning\" showIcon message={personalDataScope.unsetHint} />\n ) : null}\n <FormInfo\n column={2}\n gap={16}\n list={[\n <Select\n key=\"dataScope\"\n name=\"dataScope\"\n label=\"数据范围\"\n disabled={!scopeEditable}\n options={\n scopeEditable\n ? personalDataScope!.options\n : [{ value: 'COMPANY', label: '全公司' }]\n }\n placeholder=\"请选择个人数据范围\"\n />,\n <Select\n key=\"groupIds\"\n name=\"groupIds\"\n label=\"共享组\"\n mode=\"multiple\"\n allowClear\n options={groupOptions}\n placeholder=\"请选择共享组(可选)\"\n {...multiTagSelectProps}\n />,\n <Select\n key=\"roleCodes\"\n name=\"roleCodes\"\n label=\"用户角色\"\n mode=\"multiple\"\n allowClear\n options={roleOptions}\n placeholder=\"请选择本应用角色(可选)\"\n {...multiTagSelectProps}\n />,\n ]}\n />\n <FormDataSync onChange={onPermFormSync} />\n <div>\n <Typography.Text strong>权限点(只读预览)</Typography.Text>\n {panelPermissions.length === 0 ? (\n <Typography.Text type=\"secondary\" style={{ display: 'block', marginTop: 8 }}>\n 暂无权限点\n </Typography.Text>\n ) : (\n <div style={{ marginTop: 8 }}>\n <PermissionBindPanel\n catalog={catalog}\n permissions={panelPermissions}\n value={checkedEpIds}\n onChange={() => undefined}\n systemEntryCodes={[...systemEntryCodes]}\n readOnly\n height={EP_PANEL_HEIGHT}\n />\n </div>\n )}\n </div>\n </Space>\n </FormModal>\n </ModulePageShell>\n );\n}\n"],"names":["ReactFilterBar","Filter","EP_PANEL_HEIGHT","buildViewItems","user","rolesValue","_a","jsx","Tags","r","roleDisplayName","MULTI_TAG_SHOW_LENGTH","SEMANTIC_COLORS","_b","o","IamUsersPage","client","catalog","systemEntryCodes","tableName","title","personalDataScope","loading","setLoading","useState","rows","setRows","total","setTotal","page","setPage","filterValue","setFilterValue","keyword","useMemo","flat","getFilterValue","viewUser","setViewUser","viewLoading","setViewLoading","permUser","setPermUser","roles","setRoles","groups","setGroups","roleCodes","setRoleCodes","groupIds","setGroupIds","dataScope","setDataScope","permFormEpoch","setPermFormEpoch","scopeEditable","catalogNameByCode","m","item","catalogToItems","draftEp","buildDraftEffectivePermissions","panelPermissions","epItems","p","byCode","fromCatalog","hit","used","checkedEpIds","roleOptions","roleSelectOption","groupOptions","g","load","useCallback","data","message","useEffect","openView","u","detail","e","openPerm","mine","scope","x","appRoleCodes","rr","n","onPermFormSync","viewItems","jsxs","ModulePageShell","next","ReactInputFilterItem","Table","v","_","_d","_c","Space","Button","Modal","CommonDescriptions","FormModal","raw","Alert","FormInfo","Select","multiTagSelectProps","FormDataSync","Typography","PermissionBindPanel"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { TableProps as AntTableProps } from 'antd';
2
2
  import { Key, ReactElement, ReactNode, Ref } from 'react';
3
3
  import { TableColumnConfigFetcher, TableColumnConfigItem, TableColumnConfigSaver } from './columnConfigTypes';
4
- import { applyColumnConfig, applyLeafWidthOverrides, clearColumnWidthAtPath, clampColumnWidth, columnsLeafPathSignature, COLUMN_CONFIG_COL_KEY, COLUMN_RESIZE_MAX_WIDTH, COLUMN_RESIZE_MIN_WIDTH, columnsToConfig, configHasLeafWidths, copyColumnWidths, FLEX_SPACER_COL_KEY, hideColumnAtPath, insertBeforeFixedRight, isFixedColumn, isInternalColumnKey, setColumnWidthAtPath } from './columnConfigUtils';
4
+ import { applyColumnConfig, applyLeafWidthOverrides, clearColumnWidthAtPath, clampColumnWidth, columnsLeafPathSignature, COLUMN_CONFIG_COL_KEY, COLUMN_RESIZE_MAX_WIDTH, COLUMN_RESIZE_MIN_WIDTH, columnsToConfig, configHasLeafWidths, copyColumnWidths, FLEX_SPACER_COL_KEY, hideColumnAtPath, insertBeforeFixedRight, isFixedColumn, isInternalColumnKey, normalizeFixedColumnOrder, setColumnWidthAtPath } from './columnConfigUtils';
5
5
  import { TablePrefs, TablePrefsFetcher, TablePrefsSaver } from './tablePrefsTypes';
6
6
  import { TableFetchHandle, TableFetchMapped, TableFetchQuery } from './useTableFetch';
7
7
  export type { TableColumnConfigFetcher, TableColumnConfigItem, TableColumnConfigSaver, TableFetchHandle, TableFetchMapped, TableFetchQuery, TablePrefs, TablePrefsFetcher, TablePrefsSaver, };
@@ -61,4 +61,4 @@ declare const Table: <RecordType extends object = Record<string, unknown>>(props
61
61
  export default Table;
62
62
  export { emptyTablePrefs } from './tablePrefsTypes';
63
63
  export { applyHiddenRows, mergeTablePrefs, normalizeHiddenRowKeys, parseTablePrefs, serializeTablePrefs, } from './tablePrefsUtils';
64
- export { applyColumnConfig, applyLeafWidthOverrides, clearColumnWidthAtPath, clampColumnWidth, columnsLeafPathSignature, COLUMN_CONFIG_COL_KEY, COLUMN_RESIZE_MAX_WIDTH, COLUMN_RESIZE_MIN_WIDTH, columnsToConfig, configHasLeafWidths, copyColumnWidths, FLEX_SPACER_COL_KEY, hideColumnAtPath, insertBeforeFixedRight, isFixedColumn, isInternalColumnKey, setColumnWidthAtPath, };
64
+ export { applyColumnConfig, applyLeafWidthOverrides, clearColumnWidthAtPath, clampColumnWidth, columnsLeafPathSignature, COLUMN_CONFIG_COL_KEY, COLUMN_RESIZE_MAX_WIDTH, COLUMN_RESIZE_MIN_WIDTH, columnsToConfig, configHasLeafWidths, copyColumnWidths, FLEX_SPACER_COL_KEY, hideColumnAtPath, insertBeforeFixedRight, isFixedColumn, isInternalColumnKey, normalizeFixedColumnOrder, setColumnWidthAtPath, };
@@ -5,19 +5,19 @@ import { forwardRef as Pe, useImperativeHandle as Ie, useMemo as x, useRef as yt
5
5
  import { flushSync as Ee } from "react-dom";
6
6
  import kt from "./columnConfig.module.scss.js";
7
7
  import { ColumnConfigTrigger as Te } from "./ColumnConfigPanel.js";
8
- import { COLUMN_RESIZE_MAX_WIDTH as Ae, COLUMN_RESIZE_MIN_WIDTH as Ne, columnsLeafPathSignature as Fe, applyColumnConfig as je, applyLeafWidthOverrides as Mt, columnsToPanelItems as ke, copyColumnWidths as Me, columnsToConfig as Bt, clampColumnWidth as St, setColumnWidthAtPath as Be, clearColumnWidthAtPath as De, hideColumnAtPath as Ue, configHasLeafWidths as $e, insertBeforeFixedRight as Ge, FLEX_SPACER_COL_KEY as qe, COLUMN_CONFIG_COL_KEY as Xe, isInternalColumnKey as Wt, shortChildId as $t } from "./columnConfigUtils.js";
9
- import { isFixedColumn as On } from "./columnConfigUtils.js";
10
- import Ze from "./ResizableHeaderCell.js";
8
+ import { COLUMN_RESIZE_MAX_WIDTH as Ae, COLUMN_RESIZE_MIN_WIDTH as Ne, columnsLeafPathSignature as Fe, applyColumnConfig as je, applyLeafWidthOverrides as Mt, columnsToPanelItems as ke, copyColumnWidths as Me, columnsToConfig as Bt, clampColumnWidth as St, setColumnWidthAtPath as Be, clearColumnWidthAtPath as De, hideColumnAtPath as Ue, normalizeFixedColumnOrder as $e, configHasLeafWidths as Ge, insertBeforeFixedRight as qe, FLEX_SPACER_COL_KEY as Xe, COLUMN_CONFIG_COL_KEY as Ze, isInternalColumnKey as Wt, shortChildId as $t } from "./columnConfigUtils.js";
9
+ import { isFixedColumn as Rn } from "./columnConfigUtils.js";
10
+ import Ye from "./ResizableHeaderCell.js";
11
11
  import p from "./style.module.scss.js";
12
- import { emptyTablePrefs as Ye } from "./tablePrefsTypes.js";
13
- import { normalizeHiddenRowKeys as Ct, mergeTablePrefs as lt, applyHiddenRows as Je } from "./tablePrefsUtils.js";
14
- import { parseTablePrefs as bn, serializeTablePrefs as Ln } from "./tablePrefsUtils.js";
15
- import { useTableFetch as Qe } from "./useTableFetch.js";
16
- import { useMarsunFetch as Ve } from "../../provider/context.js";
12
+ import { emptyTablePrefs as Je } from "./tablePrefsTypes.js";
13
+ import { normalizeHiddenRowKeys as Ct, mergeTablePrefs as lt, applyHiddenRows as Qe } from "./tablePrefsUtils.js";
14
+ import { parseTablePrefs as Ln, serializeTablePrefs as vn } from "./tablePrefsUtils.js";
15
+ import { useTableFetch as Ve } from "./useTableFetch.js";
16
+ import { useMarsunFetch as we } from "../../provider/context.js";
17
17
  import Dt from "../Empty/Empty.js";
18
18
  import { Eye as Gt } from "../Icons/Eye.js";
19
- const we = { x: "max-content" }, G = 40, Ke = 64;
20
- function tn(i) {
19
+ const Ke = { x: "max-content" }, G = 40, tn = 64;
20
+ function en(i) {
21
21
  return `共 ${i} 项`;
22
22
  }
23
23
  function qt(i) {
@@ -32,14 +32,14 @@ function qt(i) {
32
32
  continue;
33
33
  }
34
34
  const c = o.width;
35
- typeof c == "number" && Number.isFinite(c) && c > 0 ? l += c : l += Ke;
35
+ typeof c == "number" && Number.isFinite(c) && c > 0 ? l += c : l += tn;
36
36
  }
37
37
  return l;
38
38
  }
39
39
  function Xt(i, l) {
40
40
  return i.key != null && String(i.key) !== "" ? String(i.key) : i.dataIndex != null ? Array.isArray(i.dataIndex) ? i.dataIndex.join(".") : String(i.dataIndex) : `__col_${l}`;
41
41
  }
42
- function en(i, l, f) {
42
+ function nn(i, l, f) {
43
43
  if (typeof f == "function") return String(f(i, l));
44
44
  if (typeof f == "string" && f) {
45
45
  const o = i[f];
@@ -52,7 +52,7 @@ function Zt(i, l, f, o = []) {
52
52
  var R;
53
53
  const _ = Xt(a, c);
54
54
  if (Wt(_)) return a;
55
- const d = f ? $t(f, _) : _, O = [...o, d], u = a.onHeaderCell;
55
+ const u = f ? $t(f, _) : _, O = [...o, u], d = a.onHeaderCell;
56
56
  if ((R = a.children) != null && R.length)
57
57
  return {
58
58
  ...a,
@@ -67,7 +67,7 @@ function Zt(i, l, f, o = []) {
67
67
  return {
68
68
  ...a,
69
69
  onHeaderCell: (W) => ({
70
- ...typeof u == "function" ? u(W) : u || {},
70
+ ...typeof d == "function" ? d(W) : d || {},
71
71
  "data-marsun-col-path": q,
72
72
  width: P,
73
73
  minWidth: l.minWidth,
@@ -80,18 +80,18 @@ function Zt(i, l, f, o = []) {
80
80
  };
81
81
  });
82
82
  }
83
- const nn = 6;
83
+ const rn = 6;
84
84
  function Yt(i, l, f, o = [], a = 0, c) {
85
85
  let _ = 0;
86
- return i.map((d, O) => {
86
+ return i.map((u, O) => {
87
87
  var g, N;
88
- const u = Xt(d, O);
89
- if (Wt(u)) return d;
90
- const q = f ? $t(f, u) : u, P = [...o, q], R = d.onHeaderCell;
88
+ const d = Xt(u, O);
89
+ if (Wt(d)) return u;
90
+ const q = f ? $t(f, d) : d, P = [...o, q], R = u.onHeaderCell;
91
91
  let W = c;
92
- a === 0 && (W = (g = d.children) != null && g.length ? _++ : void 0);
93
- const D = W == null ? void 0 : a === 0 ? p.headerDepth0 : a === 1 ? p.headerDepth1 : p.headerDepth2, I = W == null ? void 0 : p[`headerGroup${W % nn}`], U = /* @__PURE__ */ et("span", { className: p.headerTitleWithEye, children: [
94
- /* @__PURE__ */ y("span", { className: p.headerTitleText, children: d.title }),
92
+ a === 0 && (W = (g = u.children) != null && g.length ? _++ : void 0);
93
+ const D = W == null ? void 0 : a === 0 ? p.headerDepth0 : a === 1 ? p.headerDepth1 : p.headerDepth2, I = W == null ? void 0 : p[`headerGroup${W % rn}`], U = /* @__PURE__ */ et("span", { className: p.headerTitleWithEye, children: [
94
+ /* @__PURE__ */ y("span", { className: p.headerTitleText, children: u.title }),
95
95
  /* @__PURE__ */ y(Ut, { title: "隐藏此列", children: /* @__PURE__ */ y(
96
96
  "button",
97
97
  {
@@ -111,26 +111,26 @@ function Yt(i, l, f, o = [], a = 0, c) {
111
111
  className: at(X.className, I, D)
112
112
  };
113
113
  };
114
- return (N = d.children) != null && N.length ? {
115
- ...d,
114
+ return (N = u.children) != null && N.length ? {
115
+ ...u,
116
116
  title: U,
117
117
  onHeaderCell: b,
118
118
  children: Yt(
119
- d.children,
119
+ u.children,
120
120
  l,
121
- u,
121
+ d,
122
122
  P,
123
123
  a + 1,
124
124
  W
125
125
  )
126
126
  } : {
127
- ...d,
127
+ ...u,
128
128
  title: U,
129
129
  onHeaderCell: b
130
130
  };
131
131
  });
132
132
  }
133
- function rn({
133
+ function sn({
134
134
  className: i,
135
135
  style: l,
136
136
  scroll: f,
@@ -138,9 +138,9 @@ function rn({
138
138
  locale: a,
139
139
  columns: c,
140
140
  dataSource: _,
141
- rowKey: d,
141
+ rowKey: u,
142
142
  loading: O,
143
- tableName: u,
143
+ tableName: d,
144
144
  columnConfigEnabled: q,
145
145
  fetchColumnConfig: P,
146
146
  saveColumnConfig: R,
@@ -170,17 +170,17 @@ function rn({
170
170
  ...le
171
171
  }, ae) {
172
172
  var Ft;
173
- const ot = Ve(), {
173
+ const ot = we(), {
174
174
  fetchMode: ct,
175
175
  rows: oe,
176
176
  total: ce,
177
- loading: ue,
177
+ loading: de,
178
178
  error: xt,
179
- currentPage: de,
179
+ currentPage: ue,
180
180
  pageSize: he,
181
181
  setPage: fe,
182
182
  reload: zt
183
- } = Qe({
183
+ } = Ve({
184
184
  dataSource: _,
185
185
  fetchData: wt,
186
186
  fetchUrl: Kt,
@@ -195,10 +195,10 @@ function rn({
195
195
  onFetched: ie
196
196
  });
197
197
  Ie(ae, () => ({ reload: zt }), [zt]);
198
- const ut = ct ? oe : _, me = !!O || ct && ue, j = q ?? !!u, v = Jt ?? !!u, E = Qt, T = Vt, Y = x(
198
+ const dt = ct ? oe : _, me = !!O || ct && de, j = q ?? !!d, v = Jt ?? !!d, E = Qt, T = Vt, Y = x(
199
199
  () => ({ minWidth: E, maxWidth: T }),
200
200
  [E, T]
201
- ), rt = yt(c), dt = yt(null), [s, st] = tt(null), [Ht, pe] = tt(!1), [ht, ft] = tt(!j), [Ot, ye] = tt([]), [k, Q] = tt({}), $ = yt(k);
201
+ ), rt = yt(c), ut = yt(null), [s, st] = tt(null), [Ht, pe] = tt(!1), [ht, ft] = tt(!j), [Ot, ye] = tt([]), [k, Q] = tt({}), $ = yt(k);
202
202
  $.current = k, gt(() => {
203
203
  rt.current = c;
204
204
  }, [c]);
@@ -209,7 +209,7 @@ function rn({
209
209
  gt(() => {
210
210
  Q({}), $.current = {};
211
211
  }, [ge]), gt(() => {
212
- if (!j && !v || !u || !(D || P)) {
212
+ if (!j && !v || !d || !(D || P)) {
213
213
  ft(!0);
214
214
  return;
215
215
  }
@@ -218,11 +218,11 @@ function rn({
218
218
  var n;
219
219
  try {
220
220
  if (D) {
221
- const r = await D(u);
221
+ const r = await D(d);
222
222
  t || st((n = r == null ? void 0 : r.columns) != null && n.length ? r : null);
223
223
  } else if (P) {
224
- const r = await P(u);
225
- t || st(r != null && r.length ? Ye(r) : null);
224
+ const r = await P(d);
225
+ t || st(r != null && r.length ? Je(r) : null);
226
226
  }
227
227
  } catch {
228
228
  t || st(null);
@@ -232,7 +232,7 @@ function rn({
232
232
  })(), () => {
233
233
  t = !0;
234
234
  };
235
- }, [j, v, u, D, P]);
235
+ }, [j, v, d, D, P]);
236
236
  const A = (Ft = s == null ? void 0 : s.columns) != null && Ft.length ? s.columns : null, M = x(() => N !== void 0 ? Ct(N, g) : Ct(Ot, g), [N, Ot, g]), J = z(
237
237
  (t) => {
238
238
  const e = Ct(t, g);
@@ -241,13 +241,13 @@ function rn({
241
241
  [N, g, F]
242
242
  ), B = z(
243
243
  async (t) => {
244
- if (st(t), U == null || U(t), W == null || W(t.columns), u && I) {
245
- await I(u, t);
244
+ if (st(t), U == null || U(t), W == null || W(t.columns), d && I) {
245
+ await I(d, t);
246
246
  return;
247
247
  }
248
- u && R && await R(u, t.columns);
248
+ d && R && await R(d, t.columns);
249
249
  },
250
- [u, I, R, U, W]
250
+ [d, I, R, U, W]
251
251
  ), Rt = x(() => {
252
252
  const t = c || [];
253
253
  let e;
@@ -290,7 +290,7 @@ function rn({
290
290
  });
291
291
  }, []), _t = z(
292
292
  (t) => {
293
- const e = dt.current;
293
+ const e = ut.current;
294
294
  if (!e) return;
295
295
  const n = e.querySelectorAll("[data-marsun-col-path]");
296
296
  n.length && Ee(() => {
@@ -308,7 +308,7 @@ function rn({
308
308
  [E, T]
309
309
  ), Pt = z(
310
310
  async (t, e) => {
311
- const n = t.join("/"), r = St(e, E, T), h = dt.current, S = { ...$.current, [n]: r };
311
+ const n = t.join("/"), r = St(e, E, T), h = ut.current, S = { ...$.current, [n]: r };
312
312
  h && h.querySelectorAll("[data-marsun-col-path]").forEach((m) => {
313
313
  const C = m.getAttribute("data-marsun-col-path");
314
314
  if (!C || C === n || S[C] != null) return;
@@ -355,7 +355,9 @@ function rn({
355
355
  },
356
356
  [g, M, J]
357
357
  ), mt = x(() => {
358
- let t = Rt;
358
+ let t = $e(
359
+ Rt
360
+ );
359
361
  if (j && ht && (t = Yt(t, (n) => {
360
362
  Et(n);
361
363
  })), v && (t = Zt(t, {
@@ -370,23 +372,23 @@ function rn({
370
372
  onResetPath: (n) => {
371
373
  It(n);
372
374
  }
373
- })), v && (Object.keys(k).length > 0 || $e(A))) {
375
+ })), v && (Object.keys(k).length > 0 || Ge(A))) {
374
376
  const n = {
375
- key: qe,
377
+ key: Xe,
376
378
  title: "",
377
379
  className: p.flexSpacerCol,
378
380
  onHeaderCell: () => ({ className: p.flexSpacerCol }),
379
381
  onCell: () => ({ className: p.flexSpacerCol }),
380
382
  render: () => null
381
383
  };
382
- t = Ge(
384
+ t = qe(
383
385
  t,
384
386
  n
385
387
  );
386
388
  }
387
389
  if (j && ht) {
388
390
  const n = {
389
- key: Xe,
391
+ key: Ze,
390
392
  width: G,
391
393
  fixed: "right",
392
394
  align: "center",
@@ -438,12 +440,12 @@ function rn({
438
440
  E,
439
441
  T,
440
442
  k
441
- ]), We = x(() => b ? Je(ut, M, typeof d == "function" || typeof d == "string" ? d : void 0, g) : ut, [b, ut, M, d, g]), xe = o === !1 ? !1 : {
443
+ ]), We = x(() => b ? Qe(dt, M, typeof u == "function" || typeof u == "string" ? u : void 0, g) : dt, [b, dt, M, u, g]), xe = o === !1 ? !1 : {
442
444
  showSizeChanger: !0,
443
- showTotal: tn,
445
+ showTotal: en,
444
446
  ...o && typeof o == "object" ? o : {},
445
447
  ...ct ? {
446
- current: de,
448
+ current: ue,
447
449
  pageSize: he,
448
450
  total: ce,
449
451
  onChange: (t, e) => {
@@ -477,7 +479,7 @@ function rn({
477
479
  columnWidth: t + 20,
478
480
  renderCell: (e, n, r, h) => {
479
481
  var K;
480
- const H = ((K = L.renderCell) == null ? void 0 : K.call(L, e, n, r, h)) ?? h, m = en(n, r, d), C = pt.has(m);
482
+ const H = ((K = L.renderCell) == null ? void 0 : K.call(L, e, n, r, h)) ?? h, m = nn(n, r, u), C = pt.has(m);
481
483
  return /* @__PURE__ */ et("span", { className: p.rowSelectWithEye, children: [
482
484
  H,
483
485
  /* @__PURE__ */ y(Ut, { title: C ? "主对标不可隐藏" : "隐藏此行", children: /* @__PURE__ */ y(
@@ -496,13 +498,13 @@ function rn({
496
498
  ] });
497
499
  }
498
500
  };
499
- }, [L, b, d, pt, Tt]), w = x(() => {
501
+ }, [L, b, u, pt, Tt]), w = x(() => {
500
502
  const t = qt(mt);
501
503
  if (!t) return 0;
502
504
  const e = V ? typeof V.columnWidth == "number" ? V.columnWidth : 48 : 0;
503
505
  return t + e;
504
506
  }, [mt, V]), Re = x(() => {
505
- const t = f === void 0 ? { ...we } : { ...f };
507
+ const t = f === void 0 ? { ...Ke } : { ...f };
506
508
  return w > 0 ? { ...t, x: w } : t;
507
509
  }, [f, w]), be = x(() => {
508
510
  const t = Z == null ? void 0 : Z.header, e = t && "cell" in t ? t.cell : void 0;
@@ -510,11 +512,11 @@ function rn({
510
512
  ...Z,
511
513
  header: {
512
514
  ...t,
513
- cell: (r) => !(typeof r.onResize == "function") && e ? /* @__PURE__ */ y(e, { ...r }) : /* @__PURE__ */ y(Ze, { ...r })
515
+ cell: (r) => !(typeof r.onResize == "function") && e ? /* @__PURE__ */ y(e, { ...r }) : /* @__PURE__ */ y(Ye, { ...r })
514
516
  }
515
517
  } : Z;
516
518
  }, [Z, v]);
517
- return /* @__PURE__ */ et("div", { ref: dt, className: at("marsun-table-shell", p["marsun-table-shell"]), children: [
519
+ return /* @__PURE__ */ et("div", { ref: ut, className: at("marsun-table-shell", p["marsun-table-shell"]), children: [
518
520
  Nt ? /* @__PURE__ */ y("div", { className: p["marsun-table-toolbar"], children: Nt }) : null,
519
521
  /* @__PURE__ */ y(
520
522
  _e,
@@ -529,7 +531,7 @@ function rn({
529
531
  locale: ze,
530
532
  columns: mt,
531
533
  dataSource: We,
532
- rowKey: d,
534
+ rowKey: u,
533
535
  loading: me,
534
536
  rowSelection: V,
535
537
  components: be,
@@ -538,31 +540,32 @@ function rn({
538
540
  )
539
541
  ] });
540
542
  }
541
- const xn = Pe(rn);
543
+ const zn = Pe(sn);
542
544
  export {
543
- Xe as COLUMN_CONFIG_COL_KEY,
545
+ Ze as COLUMN_CONFIG_COL_KEY,
544
546
  Ae as COLUMN_RESIZE_MAX_WIDTH,
545
547
  Ne as COLUMN_RESIZE_MIN_WIDTH,
546
- qe as FLEX_SPACER_COL_KEY,
548
+ Xe as FLEX_SPACER_COL_KEY,
547
549
  je as applyColumnConfig,
548
- Je as applyHiddenRows,
550
+ Qe as applyHiddenRows,
549
551
  Mt as applyLeafWidthOverrides,
550
552
  St as clampColumnWidth,
551
553
  De as clearColumnWidthAtPath,
552
554
  Fe as columnsLeafPathSignature,
553
555
  Bt as columnsToConfig,
554
- $e as configHasLeafWidths,
556
+ Ge as configHasLeafWidths,
555
557
  Me as copyColumnWidths,
556
- xn as default,
557
- Ye as emptyTablePrefs,
558
+ zn as default,
559
+ Je as emptyTablePrefs,
558
560
  Ue as hideColumnAtPath,
559
- Ge as insertBeforeFixedRight,
560
- On as isFixedColumn,
561
+ qe as insertBeforeFixedRight,
562
+ Rn as isFixedColumn,
561
563
  Wt as isInternalColumnKey,
562
564
  lt as mergeTablePrefs,
565
+ $e as normalizeFixedColumnOrder,
563
566
  Ct as normalizeHiddenRowKeys,
564
- bn as parseTablePrefs,
565
- Ln as serializeTablePrefs,
567
+ Ln as parseTablePrefs,
568
+ vn as serializeTablePrefs,
566
569
  Be as setColumnWidthAtPath
567
570
  };
568
571
  //# sourceMappingURL=Table.js.map