@hkyhy/marsun-components-core 0.1.68 → 0.1.72
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.
- package/dist/components/FlexBox/FlexBox.d.ts +7 -0
- package/dist/components/FlexBox/FlexBox.js +43 -0
- package/dist/components/FlexBox/FlexBox.js.map +1 -0
- package/dist/components/FlexBox/FlexBoxFetch.d.ts +3 -0
- package/dist/components/FlexBox/FlexBoxFetch.js +92 -0
- package/dist/components/FlexBox/FlexBoxFetch.js.map +1 -0
- package/dist/components/FlexBox/FlexBoxView.d.ts +18 -0
- package/dist/components/FlexBox/FlexBoxView.js +42 -0
- package/dist/components/FlexBox/FlexBoxView.js.map +1 -0
- package/dist/components/FlexBox/defaultColumns.d.ts +7 -0
- package/dist/components/FlexBox/defaultColumns.js +26 -0
- package/dist/components/FlexBox/defaultColumns.js.map +1 -0
- package/dist/components/FlexBox/index.d.ts +79 -0
- package/dist/components/FlexBox/useFlexBox.d.ts +5 -0
- package/dist/components/FlexBox/useFlexBox.js +19 -0
- package/dist/components/FlexBox/useFlexBox.js.map +1 -0
- package/dist/components/Form/FormDataSync.d.ts +3 -0
- package/dist/components/Form/FormDataSync.js +29 -15
- package/dist/components/Form/FormDataSync.js.map +1 -1
- package/dist/components/Form/InputRange.d.ts +19 -0
- package/dist/components/Form/InputRange.js +84 -0
- package/dist/components/Form/InputRange.js.map +1 -0
- package/dist/components/Form/InputRange.module.scss.js +9 -0
- package/dist/components/Form/InputRange.module.scss.js.map +1 -0
- package/dist/components/Form/index.d.ts +4 -0
- package/dist/components/Form/inputRangeRules.d.ts +15 -0
- package/dist/components/Form/inputRangeRules.js +23 -0
- package/dist/components/Form/inputRangeRules.js.map +1 -0
- package/dist/components/Form/kneFormInfo.js +9 -9
- package/dist/components/FormInfo/ErrorTip.d.ts +7 -0
- package/dist/components/FormInfo/ErrorTip.js +89 -0
- package/dist/components/FormInfo/ErrorTip.js.map +1 -0
- package/dist/components/FormInfo/Form.d.ts +7 -0
- package/dist/components/FormInfo/Form.js +23 -0
- package/dist/components/FormInfo/Form.js.map +1 -0
- package/dist/components/FormInfo/FormApiButton.d.ts +7 -0
- package/dist/components/FormInfo/FormApiButton.js +28 -0
- package/dist/components/FormInfo/FormApiButton.js.map +1 -0
- package/dist/components/FormInfo/FormDrawer.d.ts +9 -0
- package/dist/components/FormInfo/FormDrawer.js +42 -0
- package/dist/components/FormInfo/FormDrawer.js.map +1 -0
- package/dist/components/FormInfo/FormInfo.d.ts +4 -0
- package/dist/components/FormInfo/FormInfo.js +61 -0
- package/dist/components/FormInfo/FormInfo.js.map +1 -0
- package/dist/components/FormInfo/FormItem.d.ts +4 -0
- package/dist/components/FormInfo/FormItem.js +10 -0
- package/dist/components/FormInfo/FormItem.js.map +1 -0
- package/dist/components/FormInfo/FormModal.d.ts +11 -0
- package/dist/components/FormInfo/FormModal.js +43 -0
- package/dist/components/FormInfo/FormModal.js.map +1 -0
- package/dist/components/FormInfo/FormSteps.d.ts +9 -0
- package/dist/components/FormInfo/FormSteps.js +96 -0
- package/dist/components/FormInfo/FormSteps.js.map +1 -0
- package/dist/components/FormInfo/FormStepsModal.d.ts +14 -0
- package/dist/components/FormInfo/FormStepsModal.js +96 -0
- package/dist/components/FormInfo/FormStepsModal.js.map +1 -0
- package/dist/components/FormInfo/List.d.ts +6 -0
- package/dist/components/FormInfo/List.js +180 -0
- package/dist/components/FormInfo/List.js.map +1 -0
- package/dist/components/FormInfo/MultiField.d.ts +6 -0
- package/dist/components/FormInfo/MultiField.js +76 -0
- package/dist/components/FormInfo/MultiField.js.map +1 -0
- package/dist/components/FormInfo/Steps.d.ts +26 -0
- package/dist/components/FormInfo/Steps.js +178 -0
- package/dist/components/FormInfo/Steps.js.map +1 -0
- package/dist/components/FormInfo/TableList.d.ts +6 -0
- package/dist/components/FormInfo/TableList.js +216 -0
- package/dist/components/FormInfo/TableList.js.map +1 -0
- package/dist/components/FormInfo/buildFormOverlayProps.d.ts +27 -0
- package/dist/components/FormInfo/buildFormOverlayProps.js +55 -0
- package/dist/components/FormInfo/buildFormOverlayProps.js.map +1 -0
- package/dist/components/FormInfo/fields.d.ts +33 -0
- package/dist/components/FormInfo/fields.js +30 -0
- package/dist/components/FormInfo/fields.js.map +1 -0
- package/dist/components/FormInfo/index.d.ts +21 -0
- package/dist/components/FormInfo/locale/zh-CN.d.ts +16 -0
- package/dist/components/FormInfo/locale/zh-CN.js +17 -0
- package/dist/components/FormInfo/locale/zh-CN.js.map +1 -0
- package/dist/components/FormInfo/nestBlock.d.ts +15 -0
- package/dist/components/FormInfo/nestBlock.js +19 -0
- package/dist/components/FormInfo/nestBlock.js.map +1 -0
- package/dist/components/FormInfo/style.module.scss.js +57 -0
- package/dist/components/FormInfo/style.module.scss.js.map +1 -0
- package/dist/components/FormInfo/types.d.ts +213 -0
- package/dist/components/FormInfo/withLocale.d.ts +14 -0
- package/dist/components/FormInfo/withLocale.js +25 -0
- package/dist/components/FormInfo/withLocale.js.map +1 -0
- package/dist/components/Iam/client.d.ts +42 -0
- package/dist/components/Iam/index.d.ts +10 -0
- package/dist/components/Iam/pages/IamOrgPage.d.ts +8 -0
- package/dist/components/Iam/pages/IamOrgPage.js +45 -0
- package/dist/components/Iam/pages/IamOrgPage.js.map +1 -0
- package/dist/components/Iam/pages/IamRolesPage.d.ts +24 -0
- package/dist/components/Iam/pages/IamRolesPage.js +222 -0
- package/dist/components/Iam/pages/IamRolesPage.js.map +1 -0
- package/dist/components/Iam/pages/IamSharedGroupsPage.d.ts +6 -0
- package/dist/components/Iam/pages/IamSharedGroupsPage.js +207 -0
- package/dist/components/Iam/pages/IamSharedGroupsPage.js.map +1 -0
- package/dist/components/Iam/pages/IamUsersPage.d.ts +10 -0
- package/dist/components/Iam/pages/IamUsersPage.js +314 -0
- package/dist/components/Iam/pages/IamUsersPage.js.map +1 -0
- package/dist/components/Iam/types.d.ts +85 -0
- package/dist/components/Iam/utils/catalogToItems.d.ts +3 -0
- package/dist/components/Iam/utils/catalogToItems.js +17 -0
- package/dist/components/Iam/utils/catalogToItems.js.map +1 -0
- package/dist/components/Iam/utils/draftEffectivePermissions.d.ts +48 -0
- package/dist/components/Iam/utils/draftEffectivePermissions.js +42 -0
- package/dist/components/Iam/utils/draftEffectivePermissions.js.map +1 -0
- package/dist/components/Iam/utils/multiTagSelect.d.ts +15 -0
- package/dist/components/Iam/utils/multiTagSelect.js +21 -0
- package/dist/components/Iam/utils/multiTagSelect.js.map +1 -0
- package/dist/components/Iam/utils/roleDisplay.d.ts +13 -0
- package/dist/components/Iam/utils/roleDisplay.js +17 -0
- package/dist/components/Iam/utils/roleDisplay.js.map +1 -0
- package/dist/components/InfoPage/CentralContent/boxComputed.d.ts +2 -0
- package/dist/components/InfoPage/CentralContent/boxComputed.js +15 -0
- package/dist/components/InfoPage/CentralContent/boxComputed.js.map +1 -0
- package/dist/components/InfoPage/CentralContent/index.d.ts +3 -0
- package/dist/components/InfoPage/CentralContent/index.js +102 -0
- package/dist/components/InfoPage/CentralContent/index.js.map +1 -0
- package/dist/components/InfoPage/CentralContent/style.module.scss.js +15 -0
- package/dist/components/InfoPage/CentralContent/style.module.scss.js.map +1 -0
- package/dist/components/InfoPage/Content/index.d.ts +16 -0
- package/dist/components/InfoPage/Content/index.js +72 -0
- package/dist/components/InfoPage/Content/index.js.map +1 -0
- package/dist/components/InfoPage/Content/style.module.scss.js +14 -0
- package/dist/components/InfoPage/Content/style.module.scss.js.map +1 -0
- package/dist/components/InfoPage/Descriptions/index.d.ts +9 -0
- package/dist/components/InfoPage/Descriptions/index.js +48 -0
- package/dist/components/InfoPage/Descriptions/index.js.map +1 -0
- package/dist/components/InfoPage/Descriptions/style.module.scss.js +11 -0
- package/dist/components/InfoPage/Descriptions/style.module.scss.js.map +1 -0
- package/dist/components/InfoPage/Flow/index.d.ts +9 -0
- package/dist/components/InfoPage/Flow/index.js +165 -0
- package/dist/components/InfoPage/Flow/index.js.map +1 -0
- package/dist/components/InfoPage/Flow/style.module.scss.js +19 -0
- package/dist/components/InfoPage/Flow/style.module.scss.js.map +1 -0
- package/dist/components/InfoPage/InfoPage/Collapse.d.ts +10 -0
- package/dist/components/InfoPage/InfoPage/Collapse.js +11 -0
- package/dist/components/InfoPage/InfoPage/Collapse.js.map +1 -0
- package/dist/components/InfoPage/InfoPage/index.d.ts +21 -0
- package/dist/components/InfoPage/InfoPage/index.js +35 -0
- package/dist/components/InfoPage/InfoPage/index.js.map +1 -0
- package/dist/components/InfoPage/InfoPage/style.module.scss.js +15 -0
- package/dist/components/InfoPage/InfoPage/style.module.scss.js.map +1 -0
- package/dist/components/InfoPage/Report/List.d.ts +6 -0
- package/dist/components/InfoPage/Report/List.js +26 -0
- package/dist/components/InfoPage/Report/List.js.map +1 -0
- package/dist/components/InfoPage/Report/Part.d.ts +6 -0
- package/dist/components/InfoPage/Report/Part.js +42 -0
- package/dist/components/InfoPage/Report/Part.js.map +1 -0
- package/dist/components/InfoPage/Report/PrintPageBreak.d.ts +3 -0
- package/dist/components/InfoPage/Report/PrintPageBreak.js +8 -0
- package/dist/components/InfoPage/Report/PrintPageBreak.js.map +1 -0
- package/dist/components/InfoPage/Report/Result.d.ts +6 -0
- package/dist/components/InfoPage/Report/Result.js +26 -0
- package/dist/components/InfoPage/Report/Result.js.map +1 -0
- package/dist/components/InfoPage/Report/Table.d.ts +6 -0
- package/dist/components/InfoPage/Report/Table.js +125 -0
- package/dist/components/InfoPage/Report/Table.js.map +1 -0
- package/dist/components/InfoPage/Report/index.d.ts +26 -0
- package/dist/components/InfoPage/Report/index.js +61 -0
- package/dist/components/InfoPage/Report/index.js.map +1 -0
- package/dist/components/InfoPage/Report/style.module.scss.js +47 -0
- package/dist/components/InfoPage/Report/style.module.scss.js.map +1 -0
- package/dist/components/InfoPage/Score/index.d.ts +8 -0
- package/dist/components/InfoPage/Score/index.js +50 -0
- package/dist/components/InfoPage/Score/index.js.map +1 -0
- package/dist/components/InfoPage/Score/style.module.scss.js +10 -0
- package/dist/components/InfoPage/Score/style.module.scss.js.map +1 -0
- package/dist/components/InfoPage/SplitLine/index.d.ts +17 -0
- package/dist/components/InfoPage/SplitLine/index.js +67 -0
- package/dist/components/InfoPage/SplitLine/index.js.map +1 -0
- package/dist/components/InfoPage/SplitLine/style.module.scss.js +8 -0
- package/dist/components/InfoPage/SplitLine/style.module.scss.js.map +1 -0
- package/dist/components/InfoPage/computeColumnsValue.d.ts +28 -0
- package/dist/components/InfoPage/computeColumnsValue.js +60 -0
- package/dist/components/InfoPage/computeColumnsValue.js.map +1 -0
- package/dist/components/InfoPage/formatView.d.ts +23 -0
- package/dist/components/InfoPage/formatView.js +119 -0
- package/dist/components/InfoPage/formatView.js.map +1 -0
- package/dist/components/InfoPage/index.d.ts +262 -0
- package/dist/components/Layout/AgentAppShell/style.module.scss.js +20 -20
- package/dist/components/PermissionBindPanel/PermissionBindPanel.js +110 -98
- package/dist/components/PermissionBindPanel/PermissionBindPanel.js.map +1 -1
- package/dist/components/ReactModal/ColumnsLayout.d.ts +7 -0
- package/dist/components/ReactModal/ColumnsLayout.js +20 -0
- package/dist/components/ReactModal/ColumnsLayout.js.map +1 -0
- package/dist/components/ReactModal/Drawer.d.ts +73 -0
- package/dist/components/ReactModal/Drawer.js +292 -0
- package/dist/components/ReactModal/Drawer.js.map +1 -0
- package/dist/components/ReactModal/Footer.d.ts +12 -0
- package/dist/components/ReactModal/Footer.js +53 -0
- package/dist/components/ReactModal/Footer.js.map +1 -0
- package/dist/components/ReactModal/Modal.d.ts +14 -0
- package/dist/components/ReactModal/Modal.js +366 -0
- package/dist/components/ReactModal/Modal.js.map +1 -0
- package/dist/components/ReactModal/ScrollRegion.d.ts +7 -0
- package/dist/components/ReactModal/ScrollRegion.js +22 -0
- package/dist/components/ReactModal/ScrollRegion.js.map +1 -0
- package/dist/components/ReactModal/SimpleBar.d.ts +2 -0
- package/dist/components/ReactModal/SimpleBar.js +7 -0
- package/dist/components/ReactModal/SimpleBar.js.map +1 -0
- package/dist/components/ReactModal/TabsLayout.d.ts +6 -0
- package/dist/components/ReactModal/TabsLayout.js +16 -0
- package/dist/components/ReactModal/TabsLayout.js.map +1 -0
- package/dist/components/ReactModal/confirmModal.module.scss.js +30 -0
- package/dist/components/ReactModal/confirmModal.module.scss.js.map +1 -0
- package/dist/components/ReactModal/createDrawerRender.d.ts +2 -0
- package/dist/components/ReactModal/createDrawerRender.js +7 -0
- package/dist/components/ReactModal/createDrawerRender.js.map +1 -0
- package/dist/components/ReactModal/createModalRender.d.ts +2 -0
- package/dist/components/ReactModal/createModalRender.js +7 -0
- package/dist/components/ReactModal/createModalRender.js.map +1 -0
- package/dist/components/ReactModal/drawer.module.scss.js +36 -0
- package/dist/components/ReactModal/drawer.module.scss.js.map +1 -0
- package/dist/components/ReactModal/index.d.ts +57 -0
- package/dist/components/ReactModal/intlStub.d.ts +15 -0
- package/dist/components/ReactModal/intlStub.js +21 -0
- package/dist/components/ReactModal/intlStub.js.map +1 -0
- package/dist/components/ReactModal/layouts.module.scss.js +12 -0
- package/dist/components/ReactModal/layouts.module.scss.js.map +1 -0
- package/dist/components/ReactModal/locale/en-US.d.ts +5 -0
- package/dist/components/ReactModal/locale/zh-CN.d.ts +5 -0
- package/dist/components/ReactModal/locale/zh-CN.js +8 -0
- package/dist/components/ReactModal/locale/zh-CN.js.map +1 -0
- package/dist/components/ReactModal/lockParentScroll.d.ts +3 -0
- package/dist/components/ReactModal/modalClassNames.d.ts +5 -0
- package/dist/components/ReactModal/modalClassNames.js +8 -0
- package/dist/components/ReactModal/modalClassNames.js.map +1 -0
- package/dist/components/ReactModal/style.module.scss.js +38 -0
- package/dist/components/ReactModal/style.module.scss.js.map +1 -0
- package/dist/components/ReactModal/useConfirmModal.d.ts +4 -0
- package/dist/components/ReactModal/useConfirmModal.js +161 -0
- package/dist/components/ReactModal/useConfirmModal.js.map +1 -0
- package/dist/components/ReactModal/useDrawer.d.ts +5 -0
- package/dist/components/ReactModal/useDrawer.js +123 -0
- package/dist/components/ReactModal/useDrawer.js.map +1 -0
- package/dist/components/ReactModal/usePatchElement.d.ts +2 -0
- package/dist/components/ReactModal/usePatchElement.js +11 -0
- package/dist/components/ReactModal/usePatchElement.js.map +1 -0
- package/dist/components/ReactModal/withLocale.d.ts +5 -0
- package/dist/components/ReactModal/withLocale.js +6 -0
- package/dist/components/ReactModal/withLocale.js.map +1 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/form-info.d.ts +17 -0
- package/dist/form-info.js +68 -0
- package/dist/form-info.js.map +1 -0
- package/dist/iam.d.ts +14 -0
- package/dist/iam.js +23 -0
- package/dist/iam.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +700 -632
- package/dist/index.js.map +1 -1
- package/dist/marsun-components-core.css +1 -1
- package/dist/styles/global.css +1 -1
- package/dist/utils/date.d.ts +4 -1
- package/dist/utils/date.js +35 -27
- package/dist/utils/date.js.map +1 -1
- package/package.json +20 -2
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
const e = {
|
|
2
|
-
"agent-app-shell": "_agent-app-
|
|
3
|
-
"agent-app-frame": "_agent-app-
|
|
4
|
-
"agent-app-sider": "_agent-app-
|
|
5
|
-
"agent-sider-scroll": "_agent-sider-
|
|
6
|
-
"agent-sider-brand": "_agent-sider-
|
|
7
|
-
"agent-sider-brand--collapsed": "_agent-sider-brand--
|
|
8
|
-
"agent-sider-logo": "_agent-sider-
|
|
9
|
-
"agent-sider-title": "_agent-sider-
|
|
10
|
-
"agent-app-menu": "_agent-app-
|
|
11
|
-
"agent-app-main": "_agent-app-
|
|
12
|
-
"agent-page-topbar": "_agent-page-
|
|
13
|
-
"agent-page-topbar--scrolled": "_agent-page-topbar--
|
|
14
|
-
"agent-page-topbar--with-description": "_agent-page-topbar--with-
|
|
15
|
-
"agent-page-topbar-leading": "_agent-page-topbar-
|
|
16
|
-
"agent-page-topbar-meta": "_agent-page-topbar-
|
|
17
|
-
"agent-page-topbar-title": "_agent-page-topbar-
|
|
18
|
-
"agent-page-topbar-description": "_agent-page-topbar-
|
|
19
|
-
"agent-sider-toggle": "_agent-sider-
|
|
20
|
-
"agent-sider-toggle--collapsed": "_agent-sider-toggle--
|
|
21
|
-
"agent-page-topbar-actions": "_agent-page-topbar-
|
|
2
|
+
"agent-app-shell": "_agent-app-shell_1w1ro_1",
|
|
3
|
+
"agent-app-frame": "_agent-app-frame_1w1ro_8",
|
|
4
|
+
"agent-app-sider": "_agent-app-sider_1w1ro_17",
|
|
5
|
+
"agent-sider-scroll": "_agent-sider-scroll_1w1ro_32",
|
|
6
|
+
"agent-sider-brand": "_agent-sider-brand_1w1ro_37",
|
|
7
|
+
"agent-sider-brand--collapsed": "_agent-sider-brand--collapsed_1w1ro_44",
|
|
8
|
+
"agent-sider-logo": "_agent-sider-logo_1w1ro_50",
|
|
9
|
+
"agent-sider-title": "_agent-sider-title_1w1ro_64",
|
|
10
|
+
"agent-app-menu": "_agent-app-menu_1w1ro_75",
|
|
11
|
+
"agent-app-main": "_agent-app-main_1w1ro_121",
|
|
12
|
+
"agent-page-topbar": "_agent-page-topbar_1w1ro_134",
|
|
13
|
+
"agent-page-topbar--scrolled": "_agent-page-topbar--scrolled_1w1ro_149",
|
|
14
|
+
"agent-page-topbar--with-description": "_agent-page-topbar--with-description_1w1ro_154",
|
|
15
|
+
"agent-page-topbar-leading": "_agent-page-topbar-leading_1w1ro_158",
|
|
16
|
+
"agent-page-topbar-meta": "_agent-page-topbar-meta_1w1ro_166",
|
|
17
|
+
"agent-page-topbar-title": "_agent-page-topbar-title_1w1ro_170",
|
|
18
|
+
"agent-page-topbar-description": "_agent-page-topbar-description_1w1ro_179",
|
|
19
|
+
"agent-sider-toggle": "_agent-sider-toggle_1w1ro_186",
|
|
20
|
+
"agent-sider-toggle--collapsed": "_agent-sider-toggle--collapsed_1w1ro_218",
|
|
21
|
+
"agent-page-topbar-actions": "_agent-page-topbar-actions_1w1ro_222"
|
|
22
22
|
};
|
|
23
23
|
export {
|
|
24
24
|
e as default
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { jsx as h, jsxs as
|
|
2
|
-
import { Empty as W, Row as K, Col as R, Typography as T, Checkbox as
|
|
1
|
+
import { jsx as h, jsxs as g, Fragment as D } from "react/jsx-runtime";
|
|
2
|
+
import { Empty as W, Row as K, Col as R, Typography as T, Checkbox as z } from "antd";
|
|
3
3
|
import { useMemo as w, useCallback as E, useEffect as j, startTransition as A, useState as Y, memo as _ } from "react";
|
|
4
4
|
function J(c, a) {
|
|
5
5
|
const r = /* @__PURE__ */ new Set(), s = [], n = [];
|
|
6
6
|
for (const t of c.modules) {
|
|
7
|
-
const m = [], f = [],
|
|
7
|
+
const m = [], f = [], d = [];
|
|
8
8
|
for (const u of t.categories) {
|
|
9
|
-
const
|
|
10
|
-
for (const
|
|
11
|
-
r.add(
|
|
12
|
-
const p = a.get(
|
|
13
|
-
|
|
14
|
-
code:
|
|
15
|
-
label:
|
|
16
|
-
defaultGranted:
|
|
9
|
+
const k = [];
|
|
10
|
+
for (const l of u.leaves) {
|
|
11
|
+
r.add(l.code);
|
|
12
|
+
const p = a.get(l.code), y = !!l.defaultGranted;
|
|
13
|
+
k.push({
|
|
14
|
+
code: l.code,
|
|
15
|
+
label: l.label,
|
|
16
|
+
defaultGranted: y,
|
|
17
17
|
perm: p
|
|
18
|
-
}), p && (f.push(p),
|
|
18
|
+
}), p && (f.push(p), y && (s.push(p.id), d.push(p.id)));
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
k.length && m.push({ key: u.key, label: u.label, leaves: k });
|
|
21
21
|
}
|
|
22
22
|
m.length && n.push({
|
|
23
23
|
key: t.key,
|
|
@@ -25,7 +25,7 @@ function J(c, a) {
|
|
|
25
25
|
requiresSystemEntry: !!t.requiresSystemEntry,
|
|
26
26
|
categories: m,
|
|
27
27
|
perms: f,
|
|
28
|
-
lockedPermIds:
|
|
28
|
+
lockedPermIds: d
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
return { modules: n, usedCodes: r, lockedIds: s };
|
|
@@ -95,23 +95,23 @@ function O({
|
|
|
95
95
|
readOnly: t = !1,
|
|
96
96
|
className: m,
|
|
97
97
|
style: f,
|
|
98
|
-
height:
|
|
98
|
+
height: d = 420
|
|
99
99
|
}) {
|
|
100
|
-
const u = w(() => a.filter((e) => e.layer !== "RESOURCE"), [a]),
|
|
100
|
+
const u = w(() => a.filter((e) => e.layer !== "RESOURCE"), [a]), k = w(() => {
|
|
101
101
|
const e = /* @__PURE__ */ new Map();
|
|
102
102
|
for (const o of u) e.set(o.code, o);
|
|
103
103
|
return e;
|
|
104
|
-
}, [u]), { modules:
|
|
104
|
+
}, [u]), { modules: l, lockedIds: p } = w(() => {
|
|
105
105
|
var e;
|
|
106
106
|
if ((e = c == null ? void 0 : c.modules) != null && e.length) {
|
|
107
|
-
const o = J(c,
|
|
107
|
+
const o = J(c, k);
|
|
108
108
|
return {
|
|
109
109
|
modules: Q(o.modules, u, o.usedCodes),
|
|
110
110
|
lockedIds: o.lockedIds
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
return { modules: N(u), lockedIds: [] };
|
|
114
|
-
}, [c,
|
|
114
|
+
}, [c, k, u]), y = w(() => new Set(p), [p]), x = w(() => new Set(r), [r]), S = w(() => {
|
|
115
115
|
if (t || !n.length) return !0;
|
|
116
116
|
const e = u.filter((o) => n.includes(o.code)).map((o) => o.id);
|
|
117
117
|
return e.length ? e.some((o) => x.has(o)) : !0;
|
|
@@ -125,13 +125,13 @@ function O({
|
|
|
125
125
|
}, [p.join("|"), S, t]);
|
|
126
126
|
const [P, B] = Y("");
|
|
127
127
|
j(() => {
|
|
128
|
-
if (!
|
|
128
|
+
if (!l.length) {
|
|
129
129
|
B("");
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
132
|
-
|
|
133
|
-
}, [
|
|
134
|
-
const i =
|
|
132
|
+
l.some((e) => e.key === P) || B(l[0].key);
|
|
133
|
+
}, [l, P]);
|
|
134
|
+
const i = l.find((e) => e.key === P) || l[0], G = (e) => !!(e != null && e.requiresSystemEntry && !S), I = E(
|
|
135
135
|
(e) => {
|
|
136
136
|
if (t) return;
|
|
137
137
|
const o = M(e);
|
|
@@ -140,25 +140,25 @@ function O({
|
|
|
140
140
|
[t, M, s]
|
|
141
141
|
), F = E(
|
|
142
142
|
(e, o) => {
|
|
143
|
-
t || S &&
|
|
143
|
+
t || S && y.has(e) || I(o ? [...r, e] : r.filter((v) => v !== e));
|
|
144
144
|
},
|
|
145
|
-
[t, S,
|
|
145
|
+
[t, S, y, I, r]
|
|
146
146
|
), H = E(
|
|
147
147
|
(e, o) => {
|
|
148
148
|
if (t) return;
|
|
149
|
-
const
|
|
150
|
-
if (o)
|
|
149
|
+
const v = e.perms.filter((b) => !y.has(b.id)).map((b) => b.id);
|
|
150
|
+
if (o) I([...r, ...v]);
|
|
151
151
|
else {
|
|
152
|
-
const
|
|
153
|
-
|
|
152
|
+
const b = new Set(v);
|
|
153
|
+
I(r.filter((C) => !b.has(C)));
|
|
154
154
|
}
|
|
155
155
|
},
|
|
156
|
-
[t,
|
|
156
|
+
[t, y, I, r]
|
|
157
157
|
);
|
|
158
|
-
if (!
|
|
158
|
+
if (!l.length)
|
|
159
159
|
return /* @__PURE__ */ h(W, { description: "暂无权限点", className: m, style: f });
|
|
160
|
-
const q =
|
|
161
|
-
return /* @__PURE__ */
|
|
160
|
+
const q = G(i), L = !!i && i.perms.length > 0 && i.perms.every((e) => x.has(e.id)), U = !!i && i.perms.some((e) => x.has(e.id));
|
|
161
|
+
return /* @__PURE__ */ g(
|
|
162
162
|
K,
|
|
163
163
|
{
|
|
164
164
|
gutter: 0,
|
|
@@ -166,7 +166,7 @@ function O({
|
|
|
166
166
|
style: {
|
|
167
167
|
border: "1px solid var(--ant-color-border, #d9d9d9)",
|
|
168
168
|
borderRadius: 8,
|
|
169
|
-
minHeight:
|
|
169
|
+
minHeight: d,
|
|
170
170
|
overflow: "hidden",
|
|
171
171
|
...f
|
|
172
172
|
},
|
|
@@ -178,15 +178,15 @@ function O({
|
|
|
178
178
|
style: {
|
|
179
179
|
borderRight: "1px solid var(--ant-color-border, #d9d9d9)",
|
|
180
180
|
background: "var(--ant-color-fill-quaternary, #fafafa)",
|
|
181
|
-
maxHeight:
|
|
181
|
+
maxHeight: d,
|
|
182
182
|
overflow: "auto"
|
|
183
183
|
},
|
|
184
|
-
children:
|
|
184
|
+
children: l.map((e) => {
|
|
185
185
|
let o = 0;
|
|
186
186
|
for (const C of e.perms)
|
|
187
187
|
x.has(C.id) && (o += 1);
|
|
188
|
-
const
|
|
189
|
-
return /* @__PURE__ */
|
|
188
|
+
const v = e.perms.length, b = e.key === ((i == null ? void 0 : i.key) || "");
|
|
189
|
+
return /* @__PURE__ */ g(
|
|
190
190
|
"div",
|
|
191
191
|
{
|
|
192
192
|
role: "button",
|
|
@@ -198,17 +198,17 @@ function O({
|
|
|
198
198
|
style: {
|
|
199
199
|
padding: "10px 12px",
|
|
200
200
|
cursor: "pointer",
|
|
201
|
-
background:
|
|
202
|
-
fontWeight:
|
|
203
|
-
borderLeft:
|
|
204
|
-
opacity:
|
|
201
|
+
background: b ? "var(--ant-color-primary-bg, #e6f4ff)" : "transparent",
|
|
202
|
+
fontWeight: b ? 600 : 400,
|
|
203
|
+
borderLeft: b ? "3px solid var(--ant-color-primary, #1677ff)" : "3px solid transparent",
|
|
204
|
+
opacity: G(e) && o === 0 ? 0.75 : 1
|
|
205
205
|
},
|
|
206
206
|
children: [
|
|
207
207
|
/* @__PURE__ */ h("div", { children: e.label }),
|
|
208
|
-
/* @__PURE__ */
|
|
208
|
+
/* @__PURE__ */ g(T.Text, { type: "secondary", style: { fontSize: 12 }, children: [
|
|
209
209
|
o,
|
|
210
210
|
"/",
|
|
211
|
-
|
|
211
|
+
v
|
|
212
212
|
] })
|
|
213
213
|
]
|
|
214
214
|
},
|
|
@@ -217,45 +217,57 @@ function O({
|
|
|
217
217
|
})
|
|
218
218
|
}
|
|
219
219
|
),
|
|
220
|
-
/* @__PURE__ */ h(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
},
|
|
230
|
-
children: [
|
|
231
|
-
/* @__PURE__ */ h(T.Text, { strong: !0, children: i.label }),
|
|
232
|
-
t ? null : /* @__PURE__ */ h(
|
|
233
|
-
G,
|
|
234
|
-
{
|
|
235
|
-
disabled: q || i.perms.every((e) => g.has(e.id)),
|
|
236
|
-
checked: z,
|
|
237
|
-
indeterminate: U && !z,
|
|
238
|
-
onChange: (e) => H(i, e.target.checked),
|
|
239
|
-
children: "全选本模块"
|
|
240
|
-
}
|
|
241
|
-
)
|
|
242
|
-
]
|
|
243
|
-
}
|
|
244
|
-
),
|
|
245
|
-
i.categories.map((e) => /* @__PURE__ */ h(
|
|
246
|
-
V,
|
|
247
|
-
{
|
|
248
|
-
category: e,
|
|
249
|
-
selectedSet: x,
|
|
250
|
-
moduleDisabled: q,
|
|
251
|
-
lockedIdSet: g,
|
|
252
|
-
readOnly: t,
|
|
253
|
-
onToggle: F
|
|
220
|
+
/* @__PURE__ */ h(
|
|
221
|
+
R,
|
|
222
|
+
{
|
|
223
|
+
span: 17,
|
|
224
|
+
style: {
|
|
225
|
+
padding: "20px 24px",
|
|
226
|
+
maxHeight: d,
|
|
227
|
+
overflow: "auto",
|
|
228
|
+
boxSizing: "border-box"
|
|
254
229
|
},
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
230
|
+
children: i ? /* @__PURE__ */ g(D, { children: [
|
|
231
|
+
/* @__PURE__ */ g(
|
|
232
|
+
"div",
|
|
233
|
+
{
|
|
234
|
+
style: {
|
|
235
|
+
display: "flex",
|
|
236
|
+
justifyContent: "space-between",
|
|
237
|
+
marginBottom: 12,
|
|
238
|
+
alignItems: "center"
|
|
239
|
+
},
|
|
240
|
+
children: [
|
|
241
|
+
/* @__PURE__ */ h(T.Text, { strong: !0, children: i.label }),
|
|
242
|
+
t ? null : /* @__PURE__ */ h(
|
|
243
|
+
z,
|
|
244
|
+
{
|
|
245
|
+
disabled: q || i.perms.every((e) => y.has(e.id)),
|
|
246
|
+
checked: L,
|
|
247
|
+
indeterminate: U && !L,
|
|
248
|
+
onChange: (e) => H(i, e.target.checked),
|
|
249
|
+
children: "全选本模块"
|
|
250
|
+
}
|
|
251
|
+
)
|
|
252
|
+
]
|
|
253
|
+
}
|
|
254
|
+
),
|
|
255
|
+
i.categories.map((e) => /* @__PURE__ */ h(
|
|
256
|
+
V,
|
|
257
|
+
{
|
|
258
|
+
category: e,
|
|
259
|
+
selectedSet: x,
|
|
260
|
+
moduleDisabled: q,
|
|
261
|
+
lockedIdSet: y,
|
|
262
|
+
readOnly: t,
|
|
263
|
+
onToggle: F
|
|
264
|
+
},
|
|
265
|
+
e.key
|
|
266
|
+
)),
|
|
267
|
+
!t && q ? /* @__PURE__ */ h(T.Text, { type: "warning", style: { display: "block", marginTop: 12 }, children: "请先勾选 SYSTEM 入口权,再勾选业务权限。基线权限仍保持勾选。" }) : null
|
|
268
|
+
] }) : null
|
|
269
|
+
}
|
|
270
|
+
)
|
|
259
271
|
]
|
|
260
272
|
}
|
|
261
273
|
);
|
|
@@ -268,12 +280,12 @@ const V = _(function({
|
|
|
268
280
|
readOnly: t,
|
|
269
281
|
onToggle: m
|
|
270
282
|
}) {
|
|
271
|
-
return /* @__PURE__ */
|
|
283
|
+
return /* @__PURE__ */ g("div", { style: { marginBottom: 20, paddingInline: 4 }, children: [
|
|
272
284
|
/* @__PURE__ */ h(
|
|
273
285
|
T.Text,
|
|
274
286
|
{
|
|
275
287
|
type: "secondary",
|
|
276
|
-
style: { display: "block", marginBottom:
|
|
288
|
+
style: { display: "block", marginBottom: 10, fontWeight: 500 },
|
|
277
289
|
children: a.label
|
|
278
290
|
}
|
|
279
291
|
),
|
|
@@ -283,34 +295,34 @@ const V = _(function({
|
|
|
283
295
|
style: {
|
|
284
296
|
display: "grid",
|
|
285
297
|
gridTemplateColumns: "repeat(2, minmax(0, 1fr))",
|
|
286
|
-
gap: "
|
|
298
|
+
gap: "10px 20px"
|
|
287
299
|
},
|
|
288
300
|
children: a.leaves.map((f) => {
|
|
289
|
-
const
|
|
290
|
-
if (!
|
|
291
|
-
return /* @__PURE__ */
|
|
301
|
+
const d = f.perm;
|
|
302
|
+
if (!d)
|
|
303
|
+
return /* @__PURE__ */ g(z, { disabled: !0, children: [
|
|
292
304
|
f.label,
|
|
293
|
-
/* @__PURE__ */
|
|
305
|
+
/* @__PURE__ */ g(T.Text, { type: "secondary", style: { marginLeft: 6, fontSize: 12 }, children: [
|
|
294
306
|
f.code,
|
|
295
307
|
"(未注册)"
|
|
296
308
|
] })
|
|
297
309
|
] }, f.code);
|
|
298
|
-
const u = f.defaultGranted || n.has(
|
|
299
|
-
return /* @__PURE__ */
|
|
300
|
-
|
|
310
|
+
const u = f.defaultGranted || n.has(d.id);
|
|
311
|
+
return /* @__PURE__ */ g(
|
|
312
|
+
z,
|
|
301
313
|
{
|
|
302
314
|
disabled: t || u || s,
|
|
303
|
-
checked: r.has(
|
|
304
|
-
onChange: (
|
|
315
|
+
checked: r.has(d.id),
|
|
316
|
+
onChange: (k) => m(d.id, k.target.checked),
|
|
305
317
|
children: [
|
|
306
|
-
f.label ||
|
|
307
|
-
/* @__PURE__ */
|
|
308
|
-
|
|
318
|
+
f.label || d.name,
|
|
319
|
+
/* @__PURE__ */ g(T.Text, { type: "secondary", style: { marginLeft: 6, fontSize: 12 }, children: [
|
|
320
|
+
d.code,
|
|
309
321
|
f.defaultGranted ? " · 基线" : ""
|
|
310
322
|
] })
|
|
311
323
|
]
|
|
312
324
|
},
|
|
313
|
-
|
|
325
|
+
d.id
|
|
314
326
|
);
|
|
315
327
|
})
|
|
316
328
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionBindPanel.js","sources":["../../../src/components/PermissionBindPanel/PermissionBindPanel.tsx"],"sourcesContent":["import { Checkbox, Col, Empty, Row, Typography } from 'antd';\nimport {\n memo,\n startTransition,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type CSSProperties,\n} from 'react';\nimport type { PermissionBindCatalog, PermissionBindItem } from './types';\n\nexport type PermissionBindPanelProps = {\n /** 三栏目录;缺省时按 code 前缀扁平分组 */\n catalog?: PermissionBindCatalog | null;\n permissions: PermissionBindItem[];\n /** 已选 permissionId */\n value: string[];\n onChange: (nextIds: string[]) => void;\n /** SYSTEM 入口码;未勾时禁用 requiresSystemEntry 模块 */\n systemEntryCodes?: string[];\n /** 只读预览(如用户有效权限):勾选态展示、禁止改、左右栏仍受 height 约束 */\n readOnly?: boolean;\n className?: string;\n style?: CSSProperties;\n /** 左右栏最大高度(默认 420) */\n height?: number;\n};\n\ntype ResolvedLeaf = {\n code: string;\n label: string;\n defaultGranted: boolean;\n perm?: PermissionBindItem;\n};\n\ntype ResolvedCategory = {\n key: string;\n label: string;\n leaves: ResolvedLeaf[];\n};\n\ntype ResolvedModule = {\n key: string;\n label: string;\n requiresSystemEntry: boolean;\n categories: ResolvedCategory[];\n perms: PermissionBindItem[];\n lockedPermIds: string[];\n};\n\nfunction buildFromCatalog(\n catalog: PermissionBindCatalog,\n byCode: Map<string, PermissionBindItem>,\n): { modules: ResolvedModule[]; usedCodes: Set<string>; lockedIds: string[] } {\n const usedCodes = new Set<string>();\n const lockedIds: string[] = [];\n const modules: ResolvedModule[] = [];\n\n for (const mod of catalog.modules) {\n const categories: ResolvedCategory[] = [];\n const perms: PermissionBindItem[] = [];\n const modLocked: string[] = [];\n for (const cat of mod.categories) {\n const leaves: ResolvedLeaf[] = [];\n for (const leaf of cat.leaves) {\n usedCodes.add(leaf.code);\n const perm = byCode.get(leaf.code);\n const defaultGranted = Boolean(leaf.defaultGranted);\n leaves.push({\n code: leaf.code,\n label: leaf.label,\n defaultGranted,\n perm,\n });\n if (perm) {\n perms.push(perm);\n if (defaultGranted) {\n lockedIds.push(perm.id);\n modLocked.push(perm.id);\n }\n }\n }\n if (leaves.length) {\n categories.push({ key: cat.key, label: cat.label, leaves });\n }\n }\n if (categories.length) {\n modules.push({\n key: mod.key,\n label: mod.label,\n requiresSystemEntry: Boolean(mod.requiresSystemEntry),\n categories,\n perms,\n lockedPermIds: modLocked,\n });\n }\n }\n\n return { modules, usedCodes, lockedIds };\n}\n\nfunction buildPrefixFallback(permissions: PermissionBindItem[]): ResolvedModule[] {\n const byPrefix = new Map<string, PermissionBindItem[]>();\n for (const p of permissions) {\n const prefix = p.code.includes(':') ? p.code.split(':')[0]! : '_other';\n const arr = byPrefix.get(prefix) || [];\n arr.push(p);\n byPrefix.set(prefix, arr);\n }\n return [...byPrefix.entries()].map(([key, perms]) => {\n const sorted = [...perms].sort((a, b) => a.code.localeCompare(b.code));\n return {\n key,\n label: key,\n requiresSystemEntry: sorted.every((p) => p.layer === 'BUSINESS'),\n categories: [\n {\n key: 'all',\n label: '功能点',\n leaves: sorted.map((p) => ({\n code: p.code,\n label: p.name || p.code,\n defaultGranted: false,\n perm: p,\n })),\n },\n ],\n perms: sorted,\n lockedPermIds: [],\n };\n });\n}\n\nfunction appendUncategorized(\n modules: ResolvedModule[],\n permissions: PermissionBindItem[],\n usedCodes: Set<string>,\n): ResolvedModule[] {\n const orphans = permissions.filter((p) => !usedCodes.has(p.code));\n if (!orphans.length) return modules;\n const sorted = [...orphans].sort((a, b) => a.code.localeCompare(b.code));\n return [\n ...modules,\n {\n key: 'uncategorized',\n label: '未分类',\n requiresSystemEntry: true,\n categories: [\n {\n key: 'orphan',\n label: '未归入目录的权限点',\n leaves: sorted.map((p) => ({\n code: p.code,\n label: p.name || p.code,\n defaultGranted: false,\n perm: p,\n })),\n },\n ],\n perms: sorted,\n lockedPermIds: [],\n },\n ];\n}\n\n/**\n * 角色绑权三栏信息架构:左页面模块 · 主区按业务功能点分类分组勾选。\n * defaultGranted 叶子勾选且不可取消。\n */\nexport default function PermissionBindPanel({\n catalog,\n permissions,\n value,\n onChange,\n systemEntryCodes = [],\n readOnly = false,\n className,\n style,\n height = 420,\n}: PermissionBindPanelProps) {\n const bindable = useMemo(() => permissions.filter((p) => p.layer !== 'RESOURCE'), [permissions]);\n\n const byCode = useMemo(() => {\n const m = new Map<string, PermissionBindItem>();\n for (const p of bindable) m.set(p.code, p);\n return m;\n }, [bindable]);\n\n const { modules, lockedIds } = useMemo(() => {\n if (catalog?.modules?.length) {\n const built = buildFromCatalog(catalog, byCode);\n return {\n modules: appendUncategorized(built.modules, bindable, built.usedCodes),\n lockedIds: built.lockedIds,\n };\n }\n return { modules: buildPrefixFallback(bindable), lockedIds: [] as string[] };\n }, [catalog, byCode, bindable]);\n\n const lockedIdSet = useMemo(() => new Set(lockedIds), [lockedIds]);\n\n /** O(1) 勾选判定;避免左侧 N 模块 × includes 线性扫描 */\n const selectedSet = useMemo(() => new Set(value), [value]);\n\n const systemEntryOpen = useMemo(() => {\n if (readOnly) return true;\n if (!systemEntryCodes.length) return true;\n const entryIds = bindable.filter((p) => systemEntryCodes.includes(p.code)).map((p) => p.id);\n if (!entryIds.length) return true;\n return entryIds.some((id) => selectedSet.has(id));\n }, [readOnly, systemEntryCodes, bindable, selectedSet]);\n\n /** SYSTEM 入口打开时才强制基线;关掉入口时允许 strip 业务码 */\n const mergeLocked = useCallback(\n (ids: string[]) => (systemEntryOpen ? [...new Set([...ids, ...lockedIds])] : ids),\n [systemEntryOpen, lockedIds],\n );\n\n useEffect(() => {\n if (readOnly) return;\n if (!systemEntryOpen || !lockedIds.length) return;\n const missing = lockedIds.filter((id) => !selectedSet.has(id));\n if (missing.length) {\n startTransition(() => onChange(mergeLocked(value)));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [lockedIds.join('|'), systemEntryOpen, readOnly]);\n\n const [activeModule, setActiveModule] = useState('');\n\n useEffect(() => {\n if (!modules.length) {\n setActiveModule('');\n return;\n }\n if (!modules.some((m) => m.key === activeModule)) {\n setActiveModule(modules[0]!.key);\n }\n }, [modules, activeModule]);\n\n const active = modules.find((m) => m.key === activeModule) || modules[0];\n\n const moduleLocked = (mod: ResolvedModule | undefined) =>\n Boolean(mod?.requiresSystemEntry && !systemEntryOpen);\n\n const setIds = useCallback(\n (next: string[]) => {\n if (readOnly) return;\n const merged = mergeLocked(next);\n startTransition(() => onChange(merged));\n },\n [readOnly, mergeLocked, onChange],\n );\n\n const toggleId = useCallback(\n (id: string, on: boolean) => {\n if (readOnly) return;\n if (systemEntryOpen && lockedIdSet.has(id)) return;\n if (on) setIds([...value, id]);\n else setIds(value.filter((x) => x !== id));\n },\n [readOnly, systemEntryOpen, lockedIdSet, setIds, value],\n );\n\n const toggleAllInModule = useCallback(\n (mod: ResolvedModule, on: boolean) => {\n if (readOnly) return;\n const optionalIds = mod.perms.filter((p) => !lockedIdSet.has(p.id)).map((p) => p.id);\n if (on) setIds([...value, ...optionalIds]);\n else {\n const drop = new Set(optionalIds);\n setIds(value.filter((id) => !drop.has(id)));\n }\n },\n [readOnly, lockedIdSet, setIds, value],\n );\n\n if (!modules.length) {\n return <Empty description=\"暂无权限点\" className={className} style={style} />;\n }\n\n const locked = moduleLocked(active);\n const activeAllChecked =\n !!active && active.perms.length > 0 && active.perms.every((p) => selectedSet.has(p.id));\n const activeSomeChecked = !!active && active.perms.some((p) => selectedSet.has(p.id));\n\n return (\n <Row\n gutter={0}\n className={className}\n style={{\n border: '1px solid var(--ant-color-border, #d9d9d9)',\n borderRadius: 8,\n minHeight: height,\n overflow: 'hidden',\n ...style,\n }}\n >\n <Col\n span={7}\n style={{\n borderRight: '1px solid var(--ant-color-border, #d9d9d9)',\n background: 'var(--ant-color-fill-quaternary, #fafafa)',\n maxHeight: height,\n overflow: 'auto',\n }}\n >\n {modules.map((m) => {\n let selected = 0;\n for (const p of m.perms) {\n if (selectedSet.has(p.id)) selected += 1;\n }\n const total = m.perms.length;\n const isActive = m.key === (active?.key || '');\n return (\n <div\n key={m.key}\n role=\"button\"\n tabIndex={0}\n onClick={() => setActiveModule(m.key)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') setActiveModule(m.key);\n }}\n style={{\n padding: '10px 12px',\n cursor: 'pointer',\n background: isActive ? 'var(--ant-color-primary-bg, #e6f4ff)' : 'transparent',\n fontWeight: isActive ? 600 : 400,\n borderLeft: isActive\n ? '3px solid var(--ant-color-primary, #1677ff)'\n : '3px solid transparent',\n opacity: moduleLocked(m) && selected === 0 ? 0.75 : 1,\n }}\n >\n <div>{m.label}</div>\n <Typography.Text type=\"secondary\" style={{ fontSize: 12 }}>\n {selected}/{total}\n </Typography.Text>\n </div>\n );\n })}\n </Col>\n <Col span={17} style={{ padding: 16, maxHeight: height, overflow: 'auto' }}>\n {active ? (\n <>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n marginBottom: 12,\n alignItems: 'center',\n }}\n >\n <Typography.Text strong>{active.label}</Typography.Text>\n {readOnly ? null : (\n <Checkbox\n disabled={locked || active.perms.every((p) => lockedIdSet.has(p.id))}\n checked={activeAllChecked}\n indeterminate={activeSomeChecked && !activeAllChecked}\n onChange={(e) => toggleAllInModule(active, e.target.checked)}\n >\n 全选本模块\n </Checkbox>\n )}\n </div>\n\n {active.categories.map((cat) => (\n <CategoryBlock\n key={cat.key}\n category={cat}\n selectedSet={selectedSet}\n moduleDisabled={locked}\n lockedIdSet={lockedIdSet}\n readOnly={readOnly}\n onToggle={toggleId}\n />\n ))}\n\n {!readOnly && locked ? (\n <Typography.Text type=\"warning\" style={{ display: 'block', marginTop: 12 }}>\n 请先勾选 SYSTEM 入口权,再勾选业务权限。基线权限仍保持勾选。\n </Typography.Text>\n ) : null}\n </>\n ) : null}\n </Col>\n </Row>\n );\n}\n\nconst CategoryBlock = memo(function CategoryBlock({\n category,\n selectedSet,\n moduleDisabled,\n lockedIdSet,\n readOnly,\n onToggle,\n}: {\n category: ResolvedCategory;\n selectedSet: Set<string>;\n moduleDisabled: boolean;\n lockedIdSet: Set<string>;\n readOnly: boolean;\n onToggle: (id: string, on: boolean) => void;\n}) {\n return (\n <div style={{ marginBottom: 16 }}>\n <Typography.Text\n type=\"secondary\"\n style={{ display: 'block', marginBottom: 8, fontWeight: 500 }}\n >\n {category.label}\n </Typography.Text>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n gap: '8px 16px',\n }}\n >\n {category.leaves.map((leaf) => {\n const perm = leaf.perm;\n if (!perm) {\n return (\n <Checkbox key={leaf.code} disabled>\n {leaf.label}\n <Typography.Text type=\"secondary\" style={{ marginLeft: 6, fontSize: 12 }}>\n {leaf.code}(未注册)\n </Typography.Text>\n </Checkbox>\n );\n }\n const isBaseline = leaf.defaultGranted || lockedIdSet.has(perm.id);\n return (\n <Checkbox\n key={perm.id}\n disabled={readOnly || isBaseline || moduleDisabled}\n checked={selectedSet.has(perm.id)}\n onChange={(e) => onToggle(perm.id, e.target.checked)}\n >\n {leaf.label || perm.name}\n <Typography.Text type=\"secondary\" style={{ marginLeft: 6, fontSize: 12 }}>\n {perm.code}\n {leaf.defaultGranted ? ' · 基线' : ''}\n </Typography.Text>\n </Checkbox>\n );\n })}\n </div>\n </div>\n );\n});\n"],"names":["buildFromCatalog","catalog","byCode","usedCodes","lockedIds","modules","mod","categories","perms","modLocked","cat","leaves","leaf","perm","defaultGranted","buildPrefixFallback","permissions","byPrefix","p","prefix","arr","key","sorted","a","b","appendUncategorized","orphans","PermissionBindPanel","value","onChange","systemEntryCodes","readOnly","className","style","height","bindable","useMemo","m","_a","built","lockedIdSet","selectedSet","systemEntryOpen","entryIds","id","mergeLocked","useCallback","ids","useEffect","startTransition","activeModule","setActiveModule","useState","active","moduleLocked","setIds","next","merged","toggleId","on","x","toggleAllInModule","optionalIds","drop","jsx","Empty","locked","activeAllChecked","activeSomeChecked","jsxs","Row","Col","selected","total","isActive","e","Typography","Fragment","Checkbox","CategoryBlock","memo","category","moduleDisabled","onToggle","isBaseline"],"mappings":";;;AAmDA,SAASA,EACPC,GACAC,GAC4E;AAC5E,QAAMC,wBAAgB,IAAA,GAChBC,IAAsB,CAAA,GACtBC,IAA4B,CAAA;AAElC,aAAWC,KAAOL,EAAQ,SAAS;AACjC,UAAMM,IAAiC,CAAA,GACjCC,IAA8B,CAAA,GAC9BC,IAAsB,CAAA;AAC5B,eAAWC,KAAOJ,EAAI,YAAY;AAChC,YAAMK,IAAyB,CAAA;AAC/B,iBAAWC,KAAQF,EAAI,QAAQ;AAC7B,QAAAP,EAAU,IAAIS,EAAK,IAAI;AACvB,cAAMC,IAAOX,EAAO,IAAIU,EAAK,IAAI,GAC3BE,IAAiB,EAAQF,EAAK;AACpC,QAAAD,EAAO,KAAK;AAAA,UACV,MAAMC,EAAK;AAAA,UACX,OAAOA,EAAK;AAAA,UACZ,gBAAAE;AAAA,UACA,MAAAD;AAAA,QAAA,CACD,GACGA,MACFL,EAAM,KAAKK,CAAI,GACXC,MACFV,EAAU,KAAKS,EAAK,EAAE,GACtBJ,EAAU,KAAKI,EAAK,EAAE;AAAA,MAG5B;AACA,MAAIF,EAAO,UACTJ,EAAW,KAAK,EAAE,KAAKG,EAAI,KAAK,OAAOA,EAAI,OAAO,QAAAC,GAAQ;AAAA,IAE9D;AACA,IAAIJ,EAAW,UACbF,EAAQ,KAAK;AAAA,MACX,KAAKC,EAAI;AAAA,MACT,OAAOA,EAAI;AAAA,MACX,qBAAqB,EAAQA,EAAI;AAAA,MACjC,YAAAC;AAAA,MACA,OAAAC;AAAA,MACA,eAAeC;AAAA,IAAA,CAChB;AAAA,EAEL;AAEA,SAAO,EAAE,SAAAJ,GAAS,WAAAF,GAAW,WAAAC,EAAA;AAC/B;AAEA,SAASW,EAAoBC,GAAqD;AAChF,QAAMC,wBAAe,IAAA;AACrB,aAAWC,KAAKF,GAAa;AAC3B,UAAMG,IAASD,EAAE,KAAK,SAAS,GAAG,IAAIA,EAAE,KAAK,MAAM,GAAG,EAAE,CAAC,IAAK,UACxDE,IAAMH,EAAS,IAAIE,CAAM,KAAK,CAAA;AACpC,IAAAC,EAAI,KAAKF,CAAC,GACVD,EAAS,IAAIE,GAAQC,CAAG;AAAA,EAC1B;AACA,SAAO,CAAC,GAAGH,EAAS,QAAA,CAAS,EAAE,IAAI,CAAC,CAACI,GAAKb,CAAK,MAAM;AACnD,UAAMc,IAAS,CAAC,GAAGd,CAAK,EAAE,KAAK,CAACe,GAAGC,MAAMD,EAAE,KAAK,cAAcC,EAAE,IAAI,CAAC;AACrE,WAAO;AAAA,MACL,KAAAH;AAAA,MACA,OAAOA;AAAA,MACP,qBAAqBC,EAAO,MAAM,CAACJ,MAAMA,EAAE,UAAU,UAAU;AAAA,MAC/D,YAAY;AAAA,QACV;AAAA,UACE,KAAK;AAAA,UACL,OAAO;AAAA,UACP,QAAQI,EAAO,IAAI,CAACJ,OAAO;AAAA,YACzB,MAAMA,EAAE;AAAA,YACR,OAAOA,EAAE,QAAQA,EAAE;AAAA,YACnB,gBAAgB;AAAA,YAChB,MAAMA;AAAA,UAAA,EACN;AAAA,QAAA;AAAA,MACJ;AAAA,MAEF,OAAOI;AAAA,MACP,eAAe,CAAA;AAAA,IAAC;AAAA,EAEpB,CAAC;AACH;AAEA,SAASG,EACPpB,GACAW,GACAb,GACkB;AAClB,QAAMuB,IAAUV,EAAY,OAAO,CAACE,MAAM,CAACf,EAAU,IAAIe,EAAE,IAAI,CAAC;AAChE,MAAI,CAACQ,EAAQ,OAAQ,QAAOrB;AAC5B,QAAMiB,IAAS,CAAC,GAAGI,CAAO,EAAE,KAAK,CAACH,GAAGC,MAAMD,EAAE,KAAK,cAAcC,EAAE,IAAI,CAAC;AACvE,SAAO;AAAA,IACL,GAAGnB;AAAA,IACH;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,qBAAqB;AAAA,MACrB,YAAY;AAAA,QACV;AAAA,UACE,KAAK;AAAA,UACL,OAAO;AAAA,UACP,QAAQiB,EAAO,IAAI,CAACJ,OAAO;AAAA,YACzB,MAAMA,EAAE;AAAA,YACR,OAAOA,EAAE,QAAQA,EAAE;AAAA,YACnB,gBAAgB;AAAA,YAChB,MAAMA;AAAA,UAAA,EACN;AAAA,QAAA;AAAA,MACJ;AAAA,MAEF,OAAOI;AAAA,MACP,eAAe,CAAA;AAAA,IAAC;AAAA,EAClB;AAEJ;AAMA,SAAwBK,EAAoB;AAAA,EAC1C,SAAA1B;AAAA,EACA,aAAAe;AAAA,EACA,OAAAY;AAAA,EACA,UAAAC;AAAA,EACA,kBAAAC,IAAmB,CAAA;AAAA,EACnB,UAAAC,IAAW;AAAA,EACX,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC,IAAS;AACX,GAA6B;AAC3B,QAAMC,IAAWC,EAAQ,MAAMpB,EAAY,OAAO,CAACE,MAAMA,EAAE,UAAU,UAAU,GAAG,CAACF,CAAW,CAAC,GAEzFd,IAASkC,EAAQ,MAAM;AAC3B,UAAMC,wBAAQ,IAAA;AACd,eAAWnB,KAAKiB,EAAU,CAAAE,EAAE,IAAInB,EAAE,MAAMA,CAAC;AACzC,WAAOmB;AAAA,EACT,GAAG,CAACF,CAAQ,CAAC,GAEP,EAAE,SAAA9B,GAAS,WAAAD,EAAA,IAAcgC,EAAQ,MAAM;;AAC3C,SAAIE,IAAArC,KAAA,gBAAAA,EAAS,YAAT,QAAAqC,EAAkB,QAAQ;AAC5B,YAAMC,IAAQvC,EAAiBC,GAASC,CAAM;AAC9C,aAAO;AAAA,QACL,SAASuB,EAAoBc,EAAM,SAASJ,GAAUI,EAAM,SAAS;AAAA,QACrE,WAAWA,EAAM;AAAA,MAAA;AAAA,IAErB;AACA,WAAO,EAAE,SAASxB,EAAoBoB,CAAQ,GAAG,WAAW,CAAA,EAAC;AAAA,EAC/D,GAAG,CAAClC,GAASC,GAAQiC,CAAQ,CAAC,GAExBK,IAAcJ,EAAQ,MAAM,IAAI,IAAIhC,CAAS,GAAG,CAACA,CAAS,CAAC,GAG3DqC,IAAcL,EAAQ,MAAM,IAAI,IAAIR,CAAK,GAAG,CAACA,CAAK,CAAC,GAEnDc,IAAkBN,EAAQ,MAAM;AAEpC,QADIL,KACA,CAACD,EAAiB,OAAQ,QAAO;AACrC,UAAMa,IAAWR,EAAS,OAAO,CAACjB,MAAMY,EAAiB,SAASZ,EAAE,IAAI,CAAC,EAAE,IAAI,CAACA,MAAMA,EAAE,EAAE;AAC1F,WAAKyB,EAAS,SACPA,EAAS,KAAK,CAACC,MAAOH,EAAY,IAAIG,CAAE,CAAC,IADnB;AAAA,EAE/B,GAAG,CAACb,GAAUD,GAAkBK,GAAUM,CAAW,CAAC,GAGhDI,IAAcC;AAAA,IAClB,CAACC,MAAmBL,IAAkB,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAGK,GAAK,GAAG3C,CAAS,CAAC,CAAC,IAAI2C;AAAA,IAC7E,CAACL,GAAiBtC,CAAS;AAAA,EAAA;AAG7B,EAAA4C,EAAU,MAAM;AAEd,QADIjB,KACA,CAACW,KAAmB,CAACtC,EAAU,OAAQ;AAE3C,IADgBA,EAAU,OAAO,CAACwC,MAAO,CAACH,EAAY,IAAIG,CAAE,CAAC,EACjD,UACVK,EAAgB,MAAMpB,EAASgB,EAAYjB,CAAK,CAAC,CAAC;AAAA,EAGtD,GAAG,CAACxB,EAAU,KAAK,GAAG,GAAGsC,GAAiBX,CAAQ,CAAC;AAEnD,QAAM,CAACmB,GAAcC,CAAe,IAAIC,EAAS,EAAE;AAEnD,EAAAJ,EAAU,MAAM;AACd,QAAI,CAAC3C,EAAQ,QAAQ;AACnB,MAAA8C,EAAgB,EAAE;AAClB;AAAA,IACF;AACA,IAAK9C,EAAQ,KAAK,CAACgC,MAAMA,EAAE,QAAQa,CAAY,KAC7CC,EAAgB9C,EAAQ,CAAC,EAAG,GAAG;AAAA,EAEnC,GAAG,CAACA,GAAS6C,CAAY,CAAC;AAE1B,QAAMG,IAAShD,EAAQ,KAAK,CAACgC,MAAMA,EAAE,QAAQa,CAAY,KAAK7C,EAAQ,CAAC,GAEjEiD,IAAe,CAAChD,MACpB,GAAQA,KAAA,QAAAA,EAAK,uBAAuB,CAACoC,IAEjCa,IAAST;AAAA,IACb,CAACU,MAAmB;AAClB,UAAIzB,EAAU;AACd,YAAM0B,IAASZ,EAAYW,CAAI;AAC/B,MAAAP,EAAgB,MAAMpB,EAAS4B,CAAM,CAAC;AAAA,IACxC;AAAA,IACA,CAAC1B,GAAUc,GAAahB,CAAQ;AAAA,EAAA,GAG5B6B,IAAWZ;AAAA,IACf,CAACF,GAAYe,MAAgB;AAC3B,MAAI5B,KACAW,KAAmBF,EAAY,IAAII,CAAE,KACjCW,EAAJI,IAAW,CAAC,GAAG/B,GAAOgB,CAAE,IAChBhB,EAAM,OAAO,CAACgC,MAAMA,MAAMhB,CAAE,CADX;AAAA,IAE/B;AAAA,IACA,CAACb,GAAUW,GAAiBF,GAAae,GAAQ3B,CAAK;AAAA,EAAA,GAGlDiC,IAAoBf;AAAA,IACxB,CAACxC,GAAqBqD,MAAgB;AACpC,UAAI5B,EAAU;AACd,YAAM+B,IAAcxD,EAAI,MAAM,OAAO,CAACY,MAAM,CAACsB,EAAY,IAAItB,EAAE,EAAE,CAAC,EAAE,IAAI,CAACA,MAAMA,EAAE,EAAE;AACnF,UAAIyC,EAAI,CAAAJ,EAAO,CAAC,GAAG3B,GAAO,GAAGkC,CAAW,CAAC;AAAA,WACpC;AACH,cAAMC,IAAO,IAAI,IAAID,CAAW;AAChC,QAAAP,EAAO3B,EAAM,OAAO,CAACgB,MAAO,CAACmB,EAAK,IAAInB,CAAE,CAAC,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,CAACb,GAAUS,GAAae,GAAQ3B,CAAK;AAAA,EAAA;AAGvC,MAAI,CAACvB,EAAQ;AACX,WAAO,gBAAA2D,EAACC,GAAA,EAAM,aAAY,SAAQ,WAAAjC,GAAsB,OAAAC,GAAc;AAGxE,QAAMiC,IAASZ,EAAaD,CAAM,GAC5Bc,IACJ,CAAC,CAACd,KAAUA,EAAO,MAAM,SAAS,KAAKA,EAAO,MAAM,MAAM,CAACnC,MAAMuB,EAAY,IAAIvB,EAAE,EAAE,CAAC,GAClFkD,IAAoB,CAAC,CAACf,KAAUA,EAAO,MAAM,KAAK,CAACnC,MAAMuB,EAAY,IAAIvB,EAAE,EAAE,CAAC;AAEpF,SACE,gBAAAmD;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR,WAAAtC;AAAA,MACA,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,WAAWE;AAAA,QACX,UAAU;AAAA,QACV,GAAGD;AAAA,MAAA;AAAA,MAGL,UAAA;AAAA,QAAA,gBAAA+B;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,cACL,aAAa;AAAA,cACb,YAAY;AAAA,cACZ,WAAWrC;AAAA,cACX,UAAU;AAAA,YAAA;AAAA,YAGX,UAAA7B,EAAQ,IAAI,CAACgC,MAAM;AAClB,kBAAImC,IAAW;AACf,yBAAWtD,KAAKmB,EAAE;AAChB,gBAAII,EAAY,IAAIvB,EAAE,EAAE,MAAGsD,KAAY;AAEzC,oBAAMC,IAAQpC,EAAE,MAAM,QAChBqC,IAAWrC,EAAE,UAASgB,KAAA,gBAAAA,EAAQ,QAAO;AAC3C,qBACE,gBAAAgB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,MAAK;AAAA,kBACL,UAAU;AAAA,kBACV,SAAS,MAAMlB,EAAgBd,EAAE,GAAG;AAAA,kBACpC,WAAW,CAACsC,MAAM;AAChB,qBAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,QAAKxB,EAAgBd,EAAE,GAAG;AAAA,kBAC/D;AAAA,kBACA,OAAO;AAAA,oBACL,SAAS;AAAA,oBACT,QAAQ;AAAA,oBACR,YAAYqC,IAAW,yCAAyC;AAAA,oBAChE,YAAYA,IAAW,MAAM;AAAA,oBAC7B,YAAYA,IACR,gDACA;AAAA,oBACJ,SAASpB,EAAajB,CAAC,KAAKmC,MAAa,IAAI,OAAO;AAAA,kBAAA;AAAA,kBAGtD,UAAA;AAAA,oBAAA,gBAAAR,EAAC,OAAA,EAAK,YAAE,MAAA,CAAM;AAAA,oBACd,gBAAAK,EAACO,EAAW,MAAX,EAAgB,MAAK,aAAY,OAAO,EAAE,UAAU,GAAA,GAClD,UAAA;AAAA,sBAAAJ;AAAA,sBAAS;AAAA,sBAAEC;AAAA,oBAAA,EAAA,CACd;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBArBKpC,EAAE;AAAA,cAAA;AAAA,YAwBb,CAAC;AAAA,UAAA;AAAA,QAAA;AAAA,QAEH,gBAAA2B,EAACO,GAAA,EAAI,MAAM,IAAI,OAAO,EAAE,SAAS,IAAI,WAAWrC,GAAQ,UAAU,OAAA,GAC/D,cACC,gBAAAmC,EAAAQ,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAR;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,gBAAgB;AAAA,gBAChB,cAAc;AAAA,gBACd,YAAY;AAAA,cAAA;AAAA,cAGd,UAAA;AAAA,gBAAA,gBAAAL,EAACY,EAAW,MAAX,EAAgB,QAAM,IAAE,YAAO,OAAM;AAAA,gBACrC7C,IAAW,OACV,gBAAAiC;AAAA,kBAACc;AAAA,kBAAA;AAAA,oBACC,UAAUZ,KAAUb,EAAO,MAAM,MAAM,CAACnC,MAAMsB,EAAY,IAAItB,EAAE,EAAE,CAAC;AAAA,oBACnE,SAASiD;AAAA,oBACT,eAAeC,KAAqB,CAACD;AAAA,oBACrC,UAAU,CAAC,MAAMN,EAAkBR,GAAQ,EAAE,OAAO,OAAO;AAAA,oBAC5D,UAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAED;AAAA,YAAA;AAAA,UAAA;AAAA,UAIHA,EAAO,WAAW,IAAI,CAAC3C,MACtB,gBAAAsD;AAAA,YAACe;AAAA,YAAA;AAAA,cAEC,UAAUrE;AAAA,cACV,aAAA+B;AAAA,cACA,gBAAgByB;AAAA,cAChB,aAAA1B;AAAA,cACA,UAAAT;AAAA,cACA,UAAU2B;AAAA,YAAA;AAAA,YANLhD,EAAI;AAAA,UAAA,CAQZ;AAAA,UAEA,CAACqB,KAAYmC,IACZ,gBAAAF,EAACY,EAAW,MAAX,EAAgB,MAAK,WAAU,OAAO,EAAE,SAAS,SAAS,WAAW,GAAA,GAAM,gDAE5E,IACE;AAAA,QAAA,EAAA,CACN,IACE,KAAA,CACN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,MAAMG,IAAgBC,EAAK,SAAuB;AAAA,EAChD,UAAAC;AAAA,EACA,aAAAxC;AAAA,EACA,gBAAAyC;AAAA,EACA,aAAA1C;AAAA,EACA,UAAAT;AAAA,EACA,UAAAoD;AACF,GAOG;AACD,2BACG,OAAA,EAAI,OAAO,EAAE,cAAc,MAC1B,UAAA;AAAA,IAAA,gBAAAnB;AAAA,MAACY,EAAW;AAAA,MAAX;AAAA,QACC,MAAK;AAAA,QACL,OAAO,EAAE,SAAS,SAAS,cAAc,GAAG,YAAY,IAAA;AAAA,QAEvD,UAAAK,EAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAEZ,gBAAAjB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,SAAS;AAAA,UACT,qBAAqB;AAAA,UACrB,KAAK;AAAA,QAAA;AAAA,QAGN,UAAAiB,EAAS,OAAO,IAAI,CAACrE,MAAS;AAC7B,gBAAMC,IAAOD,EAAK;AAClB,cAAI,CAACC;AACH,mBACE,gBAAAwD,EAACS,GAAA,EAAyB,UAAQ,IAC/B,UAAA;AAAA,cAAAlE,EAAK;AAAA,cACN,gBAAAyD,EAACO,EAAW,MAAX,EAAgB,MAAK,aAAY,OAAO,EAAE,YAAY,GAAG,UAAU,GAAA,GACjE,UAAA;AAAA,gBAAAhE,EAAK;AAAA,gBAAK;AAAA,cAAA,EAAA,CACb;AAAA,YAAA,EAAA,GAJaA,EAAK,IAKpB;AAGJ,gBAAMwE,IAAaxE,EAAK,kBAAkB4B,EAAY,IAAI3B,EAAK,EAAE;AACjE,iBACE,gBAAAwD;AAAA,YAACS;AAAA,YAAA;AAAA,cAEC,UAAU/C,KAAYqD,KAAcF;AAAA,cACpC,SAASzC,EAAY,IAAI5B,EAAK,EAAE;AAAA,cAChC,UAAU,CAAC8D,MAAMQ,EAAStE,EAAK,IAAI8D,EAAE,OAAO,OAAO;AAAA,cAElD,UAAA;AAAA,gBAAA/D,EAAK,SAASC,EAAK;AAAA,gBACpB,gBAAAwD,EAACO,EAAW,MAAX,EAAgB,MAAK,aAAY,OAAO,EAAE,YAAY,GAAG,UAAU,GAAA,GACjE,UAAA;AAAA,kBAAA/D,EAAK;AAAA,kBACLD,EAAK,iBAAiB,UAAU;AAAA,gBAAA,EAAA,CACnC;AAAA,cAAA;AAAA,YAAA;AAAA,YATKC,EAAK;AAAA,UAAA;AAAA,QAYhB,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ,CAAC;"}
|
|
1
|
+
{"version":3,"file":"PermissionBindPanel.js","sources":["../../../src/components/PermissionBindPanel/PermissionBindPanel.tsx"],"sourcesContent":["import { Checkbox, Col, Empty, Row, Typography } from 'antd';\nimport {\n memo,\n startTransition,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type CSSProperties,\n} from 'react';\nimport type { PermissionBindCatalog, PermissionBindItem } from './types';\n\nexport type PermissionBindPanelProps = {\n /** 三栏目录;缺省时按 code 前缀扁平分组 */\n catalog?: PermissionBindCatalog | null;\n permissions: PermissionBindItem[];\n /** 已选 permissionId */\n value: string[];\n onChange: (nextIds: string[]) => void;\n /** SYSTEM 入口码;未勾时禁用 requiresSystemEntry 模块 */\n systemEntryCodes?: string[];\n /** 只读预览(如用户有效权限):勾选态展示、禁止改、左右栏仍受 height 约束 */\n readOnly?: boolean;\n className?: string;\n style?: CSSProperties;\n /** 左右栏最大高度(默认 420) */\n height?: number;\n};\n\ntype ResolvedLeaf = {\n code: string;\n label: string;\n defaultGranted: boolean;\n perm?: PermissionBindItem;\n};\n\ntype ResolvedCategory = {\n key: string;\n label: string;\n leaves: ResolvedLeaf[];\n};\n\ntype ResolvedModule = {\n key: string;\n label: string;\n requiresSystemEntry: boolean;\n categories: ResolvedCategory[];\n perms: PermissionBindItem[];\n lockedPermIds: string[];\n};\n\nfunction buildFromCatalog(\n catalog: PermissionBindCatalog,\n byCode: Map<string, PermissionBindItem>,\n): { modules: ResolvedModule[]; usedCodes: Set<string>; lockedIds: string[] } {\n const usedCodes = new Set<string>();\n const lockedIds: string[] = [];\n const modules: ResolvedModule[] = [];\n\n for (const mod of catalog.modules) {\n const categories: ResolvedCategory[] = [];\n const perms: PermissionBindItem[] = [];\n const modLocked: string[] = [];\n for (const cat of mod.categories) {\n const leaves: ResolvedLeaf[] = [];\n for (const leaf of cat.leaves) {\n usedCodes.add(leaf.code);\n const perm = byCode.get(leaf.code);\n const defaultGranted = Boolean(leaf.defaultGranted);\n leaves.push({\n code: leaf.code,\n label: leaf.label,\n defaultGranted,\n perm,\n });\n if (perm) {\n perms.push(perm);\n if (defaultGranted) {\n lockedIds.push(perm.id);\n modLocked.push(perm.id);\n }\n }\n }\n if (leaves.length) {\n categories.push({ key: cat.key, label: cat.label, leaves });\n }\n }\n if (categories.length) {\n modules.push({\n key: mod.key,\n label: mod.label,\n requiresSystemEntry: Boolean(mod.requiresSystemEntry),\n categories,\n perms,\n lockedPermIds: modLocked,\n });\n }\n }\n\n return { modules, usedCodes, lockedIds };\n}\n\nfunction buildPrefixFallback(permissions: PermissionBindItem[]): ResolvedModule[] {\n const byPrefix = new Map<string, PermissionBindItem[]>();\n for (const p of permissions) {\n const prefix = p.code.includes(':') ? p.code.split(':')[0]! : '_other';\n const arr = byPrefix.get(prefix) || [];\n arr.push(p);\n byPrefix.set(prefix, arr);\n }\n return [...byPrefix.entries()].map(([key, perms]) => {\n const sorted = [...perms].sort((a, b) => a.code.localeCompare(b.code));\n return {\n key,\n label: key,\n requiresSystemEntry: sorted.every((p) => p.layer === 'BUSINESS'),\n categories: [\n {\n key: 'all',\n label: '功能点',\n leaves: sorted.map((p) => ({\n code: p.code,\n label: p.name || p.code,\n defaultGranted: false,\n perm: p,\n })),\n },\n ],\n perms: sorted,\n lockedPermIds: [],\n };\n });\n}\n\nfunction appendUncategorized(\n modules: ResolvedModule[],\n permissions: PermissionBindItem[],\n usedCodes: Set<string>,\n): ResolvedModule[] {\n const orphans = permissions.filter((p) => !usedCodes.has(p.code));\n if (!orphans.length) return modules;\n const sorted = [...orphans].sort((a, b) => a.code.localeCompare(b.code));\n return [\n ...modules,\n {\n key: 'uncategorized',\n label: '未分类',\n requiresSystemEntry: true,\n categories: [\n {\n key: 'orphan',\n label: '未归入目录的权限点',\n leaves: sorted.map((p) => ({\n code: p.code,\n label: p.name || p.code,\n defaultGranted: false,\n perm: p,\n })),\n },\n ],\n perms: sorted,\n lockedPermIds: [],\n },\n ];\n}\n\n/**\n * 角色绑权三栏信息架构:左页面模块 · 主区按业务功能点分类分组勾选。\n * defaultGranted 叶子勾选且不可取消。\n */\nexport default function PermissionBindPanel({\n catalog,\n permissions,\n value,\n onChange,\n systemEntryCodes = [],\n readOnly = false,\n className,\n style,\n height = 420,\n}: PermissionBindPanelProps) {\n const bindable = useMemo(() => permissions.filter((p) => p.layer !== 'RESOURCE'), [permissions]);\n\n const byCode = useMemo(() => {\n const m = new Map<string, PermissionBindItem>();\n for (const p of bindable) m.set(p.code, p);\n return m;\n }, [bindable]);\n\n const { modules, lockedIds } = useMemo(() => {\n if (catalog?.modules?.length) {\n const built = buildFromCatalog(catalog, byCode);\n return {\n modules: appendUncategorized(built.modules, bindable, built.usedCodes),\n lockedIds: built.lockedIds,\n };\n }\n return { modules: buildPrefixFallback(bindable), lockedIds: [] as string[] };\n }, [catalog, byCode, bindable]);\n\n const lockedIdSet = useMemo(() => new Set(lockedIds), [lockedIds]);\n\n /** O(1) 勾选判定;避免左侧 N 模块 × includes 线性扫描 */\n const selectedSet = useMemo(() => new Set(value), [value]);\n\n const systemEntryOpen = useMemo(() => {\n if (readOnly) return true;\n if (!systemEntryCodes.length) return true;\n const entryIds = bindable.filter((p) => systemEntryCodes.includes(p.code)).map((p) => p.id);\n if (!entryIds.length) return true;\n return entryIds.some((id) => selectedSet.has(id));\n }, [readOnly, systemEntryCodes, bindable, selectedSet]);\n\n /** SYSTEM 入口打开时才强制基线;关掉入口时允许 strip 业务码 */\n const mergeLocked = useCallback(\n (ids: string[]) => (systemEntryOpen ? [...new Set([...ids, ...lockedIds])] : ids),\n [systemEntryOpen, lockedIds],\n );\n\n useEffect(() => {\n if (readOnly) return;\n if (!systemEntryOpen || !lockedIds.length) return;\n const missing = lockedIds.filter((id) => !selectedSet.has(id));\n if (missing.length) {\n startTransition(() => onChange(mergeLocked(value)));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [lockedIds.join('|'), systemEntryOpen, readOnly]);\n\n const [activeModule, setActiveModule] = useState('');\n\n useEffect(() => {\n if (!modules.length) {\n setActiveModule('');\n return;\n }\n if (!modules.some((m) => m.key === activeModule)) {\n setActiveModule(modules[0]!.key);\n }\n }, [modules, activeModule]);\n\n const active = modules.find((m) => m.key === activeModule) || modules[0];\n\n const moduleLocked = (mod: ResolvedModule | undefined) =>\n Boolean(mod?.requiresSystemEntry && !systemEntryOpen);\n\n const setIds = useCallback(\n (next: string[]) => {\n if (readOnly) return;\n const merged = mergeLocked(next);\n startTransition(() => onChange(merged));\n },\n [readOnly, mergeLocked, onChange],\n );\n\n const toggleId = useCallback(\n (id: string, on: boolean) => {\n if (readOnly) return;\n if (systemEntryOpen && lockedIdSet.has(id)) return;\n if (on) setIds([...value, id]);\n else setIds(value.filter((x) => x !== id));\n },\n [readOnly, systemEntryOpen, lockedIdSet, setIds, value],\n );\n\n const toggleAllInModule = useCallback(\n (mod: ResolvedModule, on: boolean) => {\n if (readOnly) return;\n const optionalIds = mod.perms.filter((p) => !lockedIdSet.has(p.id)).map((p) => p.id);\n if (on) setIds([...value, ...optionalIds]);\n else {\n const drop = new Set(optionalIds);\n setIds(value.filter((id) => !drop.has(id)));\n }\n },\n [readOnly, lockedIdSet, setIds, value],\n );\n\n if (!modules.length) {\n return <Empty description=\"暂无权限点\" className={className} style={style} />;\n }\n\n const locked = moduleLocked(active);\n const activeAllChecked =\n !!active && active.perms.length > 0 && active.perms.every((p) => selectedSet.has(p.id));\n const activeSomeChecked = !!active && active.perms.some((p) => selectedSet.has(p.id));\n\n return (\n <Row\n gutter={0}\n className={className}\n style={{\n border: '1px solid var(--ant-color-border, #d9d9d9)',\n borderRadius: 8,\n minHeight: height,\n overflow: 'hidden',\n ...style,\n }}\n >\n <Col\n span={7}\n style={{\n borderRight: '1px solid var(--ant-color-border, #d9d9d9)',\n background: 'var(--ant-color-fill-quaternary, #fafafa)',\n maxHeight: height,\n overflow: 'auto',\n }}\n >\n {modules.map((m) => {\n let selected = 0;\n for (const p of m.perms) {\n if (selectedSet.has(p.id)) selected += 1;\n }\n const total = m.perms.length;\n const isActive = m.key === (active?.key || '');\n return (\n <div\n key={m.key}\n role=\"button\"\n tabIndex={0}\n onClick={() => setActiveModule(m.key)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') setActiveModule(m.key);\n }}\n style={{\n padding: '10px 12px',\n cursor: 'pointer',\n background: isActive ? 'var(--ant-color-primary-bg, #e6f4ff)' : 'transparent',\n fontWeight: isActive ? 600 : 400,\n borderLeft: isActive\n ? '3px solid var(--ant-color-primary, #1677ff)'\n : '3px solid transparent',\n opacity: moduleLocked(m) && selected === 0 ? 0.75 : 1,\n }}\n >\n <div>{m.label}</div>\n <Typography.Text type=\"secondary\" style={{ fontSize: 12 }}>\n {selected}/{total}\n </Typography.Text>\n </div>\n );\n })}\n </Col>\n <Col\n span={17}\n style={{\n padding: '20px 24px',\n maxHeight: height,\n overflow: 'auto',\n boxSizing: 'border-box',\n }}\n >\n {active ? (\n <>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n marginBottom: 12,\n alignItems: 'center',\n }}\n >\n <Typography.Text strong>{active.label}</Typography.Text>\n {readOnly ? null : (\n <Checkbox\n disabled={locked || active.perms.every((p) => lockedIdSet.has(p.id))}\n checked={activeAllChecked}\n indeterminate={activeSomeChecked && !activeAllChecked}\n onChange={(e) => toggleAllInModule(active, e.target.checked)}\n >\n 全选本模块\n </Checkbox>\n )}\n </div>\n\n {active.categories.map((cat) => (\n <CategoryBlock\n key={cat.key}\n category={cat}\n selectedSet={selectedSet}\n moduleDisabled={locked}\n lockedIdSet={lockedIdSet}\n readOnly={readOnly}\n onToggle={toggleId}\n />\n ))}\n\n {!readOnly && locked ? (\n <Typography.Text type=\"warning\" style={{ display: 'block', marginTop: 12 }}>\n 请先勾选 SYSTEM 入口权,再勾选业务权限。基线权限仍保持勾选。\n </Typography.Text>\n ) : null}\n </>\n ) : null}\n </Col>\n </Row>\n );\n}\n\nconst CategoryBlock = memo(function CategoryBlock({\n category,\n selectedSet,\n moduleDisabled,\n lockedIdSet,\n readOnly,\n onToggle,\n}: {\n category: ResolvedCategory;\n selectedSet: Set<string>;\n moduleDisabled: boolean;\n lockedIdSet: Set<string>;\n readOnly: boolean;\n onToggle: (id: string, on: boolean) => void;\n}) {\n return (\n <div style={{ marginBottom: 20, paddingInline: 4 }}>\n <Typography.Text\n type=\"secondary\"\n style={{ display: 'block', marginBottom: 10, fontWeight: 500 }}\n >\n {category.label}\n </Typography.Text>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n gap: '10px 20px',\n }}\n >\n {category.leaves.map((leaf) => {\n const perm = leaf.perm;\n if (!perm) {\n return (\n <Checkbox key={leaf.code} disabled>\n {leaf.label}\n <Typography.Text type=\"secondary\" style={{ marginLeft: 6, fontSize: 12 }}>\n {leaf.code}(未注册)\n </Typography.Text>\n </Checkbox>\n );\n }\n const isBaseline = leaf.defaultGranted || lockedIdSet.has(perm.id);\n return (\n <Checkbox\n key={perm.id}\n disabled={readOnly || isBaseline || moduleDisabled}\n checked={selectedSet.has(perm.id)}\n onChange={(e) => onToggle(perm.id, e.target.checked)}\n >\n {leaf.label || perm.name}\n <Typography.Text type=\"secondary\" style={{ marginLeft: 6, fontSize: 12 }}>\n {perm.code}\n {leaf.defaultGranted ? ' · 基线' : ''}\n </Typography.Text>\n </Checkbox>\n );\n })}\n </div>\n </div>\n );\n});\n"],"names":["buildFromCatalog","catalog","byCode","usedCodes","lockedIds","modules","mod","categories","perms","modLocked","cat","leaves","leaf","perm","defaultGranted","buildPrefixFallback","permissions","byPrefix","p","prefix","arr","key","sorted","a","b","appendUncategorized","orphans","PermissionBindPanel","value","onChange","systemEntryCodes","readOnly","className","style","height","bindable","useMemo","m","_a","built","lockedIdSet","selectedSet","systemEntryOpen","entryIds","id","mergeLocked","useCallback","ids","useEffect","startTransition","activeModule","setActiveModule","useState","active","moduleLocked","setIds","next","merged","toggleId","on","x","toggleAllInModule","optionalIds","drop","jsx","Empty","locked","activeAllChecked","activeSomeChecked","jsxs","Row","Col","selected","total","isActive","e","Typography","Fragment","Checkbox","CategoryBlock","memo","category","moduleDisabled","onToggle","isBaseline"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { Children as c } from "react";
|
|
3
|
+
import i from "classnames";
|
|
4
|
+
import m from "./layouts.module.scss.js";
|
|
5
|
+
const u = (o) => o == null || o === "1fr" ? { flex: "1 1 0%", minWidth: 0 } : { flex: "none", width: o, minWidth: 0 }, v = ({ widths: o, className: s, children: e, ...t }) => {
|
|
6
|
+
const n = c.toArray(e);
|
|
7
|
+
return /* @__PURE__ */ r("div", { className: i(m["modal-columns-layout"], s), ...t, children: n.map((a, l) => /* @__PURE__ */ r(
|
|
8
|
+
"div",
|
|
9
|
+
{
|
|
10
|
+
className: m["modal-columns-layout__col"],
|
|
11
|
+
style: o ? u(o[l]) : void 0,
|
|
12
|
+
children: a
|
|
13
|
+
},
|
|
14
|
+
l
|
|
15
|
+
)) });
|
|
16
|
+
};
|
|
17
|
+
export {
|
|
18
|
+
v as default
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=ColumnsLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnsLayout.js","sources":["../../../src/components/ReactModal/ColumnsLayout.jsx"],"sourcesContent":["// @ts-nocheck\n// Ported from https://github.com/kne-union/react-modal/blob/master/src/ColumnsLayout.js\nimport { Children } from 'react';\nimport classnames from 'classnames';\nimport styles from './layouts.module.scss';\n\nconst resolveColStyle = (width) => {\n if (width == null || width === '1fr') {\n return { flex: '1 1 0%', minWidth: 0 };\n }\n return { flex: 'none', width, minWidth: 0 };\n};\n\nconst ColumnsLayout = ({ widths, className, children, ...props }) => {\n const cols = Children.toArray(children);\n\n return (\n <div className={classnames(styles['modal-columns-layout'], className)} {...props}>\n {cols.map((child, index) => (\n <div\n key={index}\n className={styles['modal-columns-layout__col']}\n style={widths ? resolveColStyle(widths[index]) : undefined}\n >\n {child}\n </div>\n ))}\n </div>\n );\n};\n\nexport default ColumnsLayout;\n"],"names":["resolveColStyle","width","ColumnsLayout","widths","className","children","props","cols","Children","jsx","classnames","styles","child","index"],"mappings":";;;;AAMA,MAAMA,IAAkB,CAACC,MACnBA,KAAS,QAAQA,MAAU,QACtB,EAAE,MAAM,UAAU,UAAU,EAAA,IAE9B,EAAE,MAAM,QAAQ,OAAAA,GAAO,UAAU,EAAA,GAGpCC,IAAgB,CAAC,EAAE,QAAAC,GAAQ,WAAAC,GAAW,UAAAC,GAAU,GAAGC,QAAY;AACnE,QAAMC,IAAOC,EAAS,QAAQH,CAAQ;AAEtC,SACE,gBAAAI,EAAC,OAAA,EAAI,WAAWC,EAAWC,EAAO,sBAAsB,GAAGP,CAAS,GAAI,GAAGE,GACxE,UAAAC,EAAK,IAAI,CAACK,GAAOC,MAChB,gBAAAJ;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,WAAWE,EAAO,2BAA2B;AAAA,MAC7C,OAAOR,IAASH,EAAgBG,EAAOU,CAAK,CAAC,IAAI;AAAA,MAEhD,UAAAD;AAAA,IAAA;AAAA,IAJIC;AAAA,EAAA,CAMR,GACH;AAEJ;"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export function resolveDrawerGetContainer({ customGetContainer, getPopupContainer, getHostNode, }: {
|
|
2
|
+
customGetContainer: any;
|
|
3
|
+
getPopupContainer: any;
|
|
4
|
+
getHostNode: any;
|
|
5
|
+
}): (triggerNode: any) => any;
|
|
6
|
+
export function lockParentScroll(getScrollElement: any): () => void;
|
|
7
|
+
export function computedDrawerProps({ children, footer, footerButtons, className, size, placement, title, onClose, onConfirm, confirmText, onCancel, cancelText, closable, noPadding, bodyScroll, isMobile, fixedModeClass, rootClassName, classNames: propsClassNames, styles: propsStyles, style: propsStyle, width: propsWidth, height: propsHeight, modalRender, drawerRender, ...props }: {
|
|
8
|
+
[x: string]: any;
|
|
9
|
+
children: any;
|
|
10
|
+
footer: any;
|
|
11
|
+
footerButtons: any;
|
|
12
|
+
className: any;
|
|
13
|
+
size?: string | undefined;
|
|
14
|
+
placement?: string | undefined;
|
|
15
|
+
title: any;
|
|
16
|
+
onClose: any;
|
|
17
|
+
onConfirm: any;
|
|
18
|
+
confirmText: any;
|
|
19
|
+
onCancel: any;
|
|
20
|
+
cancelText: any;
|
|
21
|
+
closable: any;
|
|
22
|
+
noPadding: any;
|
|
23
|
+
bodyScroll?: boolean | undefined;
|
|
24
|
+
isMobile: any;
|
|
25
|
+
fixedModeClass: any;
|
|
26
|
+
rootClassName: any;
|
|
27
|
+
classNames: any;
|
|
28
|
+
styles: any;
|
|
29
|
+
style: any;
|
|
30
|
+
width: any;
|
|
31
|
+
height: any;
|
|
32
|
+
modalRender: any;
|
|
33
|
+
drawerRender: any;
|
|
34
|
+
}): {
|
|
35
|
+
title: null;
|
|
36
|
+
maskClosable: any;
|
|
37
|
+
destroyOnHidden: boolean;
|
|
38
|
+
footer: null;
|
|
39
|
+
closable: boolean;
|
|
40
|
+
onClose: any;
|
|
41
|
+
rootClassName: string;
|
|
42
|
+
classNames: any;
|
|
43
|
+
className: string;
|
|
44
|
+
style: any;
|
|
45
|
+
styles: any;
|
|
46
|
+
children: import("react").JSX.Element;
|
|
47
|
+
height: any;
|
|
48
|
+
width?: undefined;
|
|
49
|
+
placement: string;
|
|
50
|
+
drawerRender?: any;
|
|
51
|
+
} | {
|
|
52
|
+
title: null;
|
|
53
|
+
maskClosable: any;
|
|
54
|
+
destroyOnHidden: boolean;
|
|
55
|
+
footer: null;
|
|
56
|
+
closable: boolean;
|
|
57
|
+
onClose: any;
|
|
58
|
+
rootClassName: string;
|
|
59
|
+
classNames: any;
|
|
60
|
+
className: string;
|
|
61
|
+
style: any;
|
|
62
|
+
styles: any;
|
|
63
|
+
children: import("react").JSX.Element;
|
|
64
|
+
width: any;
|
|
65
|
+
height?: undefined;
|
|
66
|
+
placement: string;
|
|
67
|
+
drawerRender?: any;
|
|
68
|
+
};
|
|
69
|
+
export default Drawer;
|
|
70
|
+
declare const Drawer: {
|
|
71
|
+
(props: any): import('react').CElement<any, import('react').Component<any, any, any>>;
|
|
72
|
+
displayName: string;
|
|
73
|
+
};
|