@mc20230601/keep-up 1.0.17 → 1.0.23

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 (106) hide show
  1. package/es/components/codeEditor/index.d.ts +163 -0
  2. package/es/components/codeEditor/index.mjs +74 -0
  3. package/es/components/codeEditor/index.mjs.map +1 -0
  4. package/es/components/commonDrawer/index.d.ts +24 -0
  5. package/es/components/commonDrawer/index.mjs +61 -0
  6. package/es/components/commonDrawer/index.mjs.map +1 -0
  7. package/es/components/commonDrawer/index.module.mjs +4 -0
  8. package/es/components/commonDrawer/interfaces.d.ts +7 -0
  9. package/es/components/commonDrawer/interfaces.mjs +2 -0
  10. package/es/components/commonDrawer/interfaces.mjs.map +1 -0
  11. package/es/components/commonLocations/constants.d.ts +28 -0
  12. package/es/components/commonLocations/constants.mjs +18 -0
  13. package/es/components/commonLocations/constants.mjs.map +1 -0
  14. package/es/components/commonLocations/index.d.ts +40 -0
  15. package/es/components/commonLocations/index.mjs +94 -0
  16. package/es/components/commonLocations/index.mjs.map +1 -0
  17. package/es/components/commonLocations/index.module.mjs +4 -0
  18. package/es/components/commonLocations/index.module.mjs.map +1 -0
  19. package/es/components/commonLocations/interfaces.d.ts +100 -0
  20. package/es/components/commonLocations/interfaces.mjs +2 -0
  21. package/es/components/commonLocations/interfaces.mjs.map +1 -0
  22. package/es/components/commonLocations/useLocations.d.ts +2 -0
  23. package/es/components/commonLocations/useLocations.mjs +151 -0
  24. package/es/components/commonLocations/useLocations.mjs.map +1 -0
  25. package/es/components/commonLocations/utils.d.ts +14 -0
  26. package/es/components/commonLocations/utils.mjs +73 -0
  27. package/es/components/commonLocations/utils.mjs.map +1 -0
  28. package/es/components/formilyCmps/formTab/index.d.ts +83 -0
  29. package/es/components/formilyCmps/formTab/index.mjs +146 -0
  30. package/es/components/formilyCmps/formTab/index.mjs.map +1 -0
  31. package/es/components/formilyCmps/formilyForm/constants.d.ts +39 -0
  32. package/es/components/formilyCmps/formilyForm/constants.mjs +41 -0
  33. package/es/components/formilyCmps/formilyForm/constants.mjs.map +1 -0
  34. package/es/components/formilyCmps/formilyForm/index.d.ts +131 -0
  35. package/es/components/formilyCmps/formilyForm/index.mjs +148 -0
  36. package/es/components/formilyCmps/formilyForm/index.mjs.map +1 -0
  37. package/es/components/formilyCmps/formilyForm/index.module.mjs +4 -0
  38. package/es/components/formilyCmps/formilyForm/index.module.mjs.map +1 -0
  39. package/es/components/formilyCmps/formilyForm/interfaces.d.ts +28 -0
  40. package/es/components/formilyCmps/formilyForm/interfaces.mjs +2 -0
  41. package/es/components/formilyCmps/formilyForm/interfaces.mjs.map +1 -0
  42. package/es/components/formilyCmps/formilyForm/utils.d.ts +3 -0
  43. package/es/components/formilyCmps/formilyForm/utils.mjs +14 -0
  44. package/es/components/formilyCmps/formilyForm/utils.mjs.map +1 -0
  45. package/es/components/formilyCmps/index.d.ts +3 -0
  46. package/es/components/formilyCmps/index.mjs +3 -0
  47. package/es/components/formilyCmps/index.mjs.map +1 -0
  48. package/es/components/formilyCmps/sectionTitle/index.d.ts +28 -0
  49. package/es/components/formilyCmps/sectionTitle/index.mjs +30 -0
  50. package/es/components/formilyCmps/sectionTitle/index.mjs.map +1 -0
  51. package/es/components/formilyCmps/sectionTitle/index.module.mjs +4 -0
  52. package/es/components/formilyCmps/sectionTitle/index.module.mjs.map +1 -0
  53. package/es/components/index.d.ts +5 -1
  54. package/es/components/index.mjs +5 -1
  55. package/es/components/index.mjs.map +1 -1
  56. package/es/components/radioGroup/constants.d.ts +371 -0
  57. package/es/components/radioGroup/constants.mjs +11 -0
  58. package/es/components/radioGroup/constants.mjs.map +1 -0
  59. package/es/components/radioGroup/index.d.ts +203 -0
  60. package/es/components/radioGroup/index.mjs +60 -0
  61. package/es/components/radioGroup/index.mjs.map +1 -0
  62. package/es/components/radioGroup/interfaces.d.ts +7 -0
  63. package/es/components/radioGroup/interfaces.mjs +2 -0
  64. package/es/components/radioGroup/interfaces.mjs.map +1 -0
  65. package/es/components/space/index.d.ts +60 -1
  66. package/es/components/space/index.mjs +51 -6
  67. package/es/components/space/index.mjs.map +1 -1
  68. package/es/constants/common.d.ts +4 -0
  69. package/es/constants/common.mjs +26 -0
  70. package/es/constants/common.mjs.map +1 -0
  71. package/es/index.d.ts +5 -1
  72. package/es/index.mjs +5 -1
  73. package/es/index.mjs.map +1 -1
  74. package/es/interfaces/common.d.ts +46 -0
  75. package/es/interfaces/common.mjs +2 -0
  76. package/es/interfaces/common.mjs.map +1 -0
  77. package/es/interfaces/commonPage.d.ts +88 -0
  78. package/es/interfaces/commonPage.mjs +2 -0
  79. package/es/interfaces/commonPage.mjs.map +1 -0
  80. package/es/interfaces/index.d.ts +2 -0
  81. package/es/styles/index.css +53 -4
  82. package/es/utils/common.d.ts +18 -0
  83. package/es/utils/common.mjs +14 -0
  84. package/es/utils/common.mjs.map +1 -0
  85. package/es/utils/emitter.d.ts +2 -0
  86. package/es/utils/emitter.mjs +6 -0
  87. package/es/utils/emitter.mjs.map +1 -0
  88. package/es/utils/index.d.ts +4 -0
  89. package/es/utils/index.mjs +5 -0
  90. package/es/utils/index.mjs.map +1 -0
  91. package/es/utils/shared.d.ts +2 -0
  92. package/es/utils/shared.mjs +6 -0
  93. package/es/utils/shared.mjs.map +1 -0
  94. package/es/utils/storage.d.ts +8 -0
  95. package/es/utils/storage.mjs +23 -0
  96. package/es/utils/storage.mjs.map +1 -0
  97. package/package.json +1 -5
  98. package/es/components/button/index.d.ts +0 -2
  99. package/es/components/button/index.mjs +0 -11
  100. package/es/components/button/index.mjs.map +0 -1
  101. package/es/components/space/index.module.mjs +0 -4
  102. package/es/directives/index.d.ts +0 -0
  103. package/es/keepUp/index.d.ts +0 -1
  104. /package/es/components/{space → commonDrawer}/index.module.mjs.map +0 -0
  105. /package/es/{directives → interfaces}/index.mjs +0 -0
  106. /package/es/{directives → interfaces}/index.mjs.map +0 -0
@@ -0,0 +1,100 @@
1
+ import type { Ref, ComputedRef } from 'vue';
2
+ import type { Type } from './constants';
3
+ /** 位置(接口数据) */
4
+ export interface ILocationItem {
5
+ /** 节点id */
6
+ nodeId: string;
7
+ /** 所属地区id */
8
+ regionId: string;
9
+ /** 所属地区名称 */
10
+ regionName: string;
11
+ /** 所属省份 */
12
+ subdivision: string;
13
+ /** 所属城市 */
14
+ city: string;
15
+ /** 运营商唯一标识 */
16
+ asn: string;
17
+ /** 运营商 */
18
+ ispName: string;
19
+ /** 用于前端友好展示的区域名称,比如:浙江杭州电信 */
20
+ friendlyArea: string;
21
+ }
22
+ /** props */
23
+ export interface IProps {
24
+ /** value */
25
+ value: string[];
26
+ /** options,主要用于触发渲染时机 */
27
+ options: ILocationItem[];
28
+ }
29
+ /** useLocations出参 */
30
+ export interface IUseLocationsRes {
31
+ /** 格式化后的位置数据 */
32
+ locations: Ref<ILocations>;
33
+ /** 所有选中的和可选的leaf节点 */
34
+ allLocations: ComputedRef<ISelectedData>;
35
+ }
36
+ /** 转换后数据 */
37
+ /** 叶子节点 */
38
+ export interface ILeafNode extends Partial<ILocationItem> {
39
+ /** 标题 */
40
+ label: string;
41
+ /** 是否选中(废弃) */
42
+ selected: boolean;
43
+ /** 节点类型 */
44
+ type: Type.IS_LEAF;
45
+ /** 子节点 */
46
+ children: [];
47
+ /** 选中的子节点 */
48
+ selectedChildren: [];
49
+ /** 选中状态改变 */
50
+ onChange: () => void;
51
+ }
52
+ /** 根节点 */
53
+ interface IBasicGroupNode extends Partial<Omit<ILocationItem, 'nodeId' | 'regionName' | 'subdivision' | 'city' | 'ispName' | 'friendlyArea'>> {
54
+ /** 标题 */
55
+ label: string;
56
+ /** 选中部分 */
57
+ isHalfChecked: boolean;
58
+ /** 全选 */
59
+ isAllChecked: boolean;
60
+ /** 节点类型 */
61
+ type: Type;
62
+ /** 子节点 */
63
+ children: ILeafNode[];
64
+ /** 选中的子节点 */
65
+ selectedChildren: string[];
66
+ /** 根据子节点选中状态,检查更新自身的选中状态 */
67
+ onCheck: () => void;
68
+ /** 选中状态手动改变 */
69
+ onChange: (p?: any) => void;
70
+ }
71
+ /** 叶子节点的父节点(唯一) */
72
+ export interface IGroupNode extends IBasicGroupNode {
73
+ /** 节点类型 */
74
+ type: Type.IS_GROUP;
75
+ }
76
+ /** 运营商节点 */
77
+ export interface IIspNode extends IBasicGroupNode {
78
+ type: Type.IS_ISP;
79
+ }
80
+ /** 全选节点 */
81
+ export interface IAllNode extends Omit<IBasicGroupNode, 'children'> {
82
+ type: Type.IS_ALL;
83
+ /** 子节点 */
84
+ children: IIspNode[];
85
+ }
86
+ /** 用于渲染的数据结构 */
87
+ export type ILocations = {
88
+ all?: IAllNode;
89
+ } & {
90
+ [K in Exclude<string, 'all'>]: IGroupNode;
91
+ };
92
+ /** 转换后数据 */
93
+ /** 不同维度归类的数据Map */
94
+ export interface ISelectedData {
95
+ /** 所有可选的叶子结点 */
96
+ children: ILeafNode[];
97
+ /** 所有选中的叶子结点 */
98
+ selectedChildren: string[];
99
+ }
100
+ export {};
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=interfaces.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import type { IProps, IUseLocationsRes } from './interfaces';
2
+ export declare const useLocations: (props: IProps) => IUseLocationsRes;
@@ -0,0 +1,151 @@
1
+ import { ref, computed, watch } from 'vue';
2
+ import { isEqual, isEmpty } from 'lodash';
3
+ import { getUtils } from './utils.mjs';
4
+ import { valueKey, TypeKey, Type } from './constants.mjs';
5
+
6
+ const useLocations = (props) => {
7
+ const locations = ref({});
8
+ const allLocations = computed(() => {
9
+ return Object.entries(locations.value).filter(([k]) => k !== "all").reduce(
10
+ (iniVal, [_, v]) => ({
11
+ selectedChildren: [
12
+ ...iniVal.selectedChildren,
13
+ ...v.selectedChildren || []
14
+ ],
15
+ children: [...iniVal.children, ...v.children || []]
16
+ }),
17
+ { children: [], selectedChildren: [] }
18
+ );
19
+ });
20
+ const { ispNodeOnCheck, groupNodeOnCheck, allNodeOnCheck, dispatchAllNodesOnCheck } = getUtils(
21
+ locations,
22
+ allLocations
23
+ );
24
+ const formatLocations = (curLocations = []) => {
25
+ const getLeafNode = (curItem) => ({
26
+ ...curItem,
27
+ label: curItem.friendlyArea,
28
+ selected: false,
29
+ type: Type.IS_LEAF,
30
+ children: [],
31
+ selectedChildren: [],
32
+ onChange: () => {
33
+ console.log(
34
+ `\u3010\u{1F527} \u70B9\u51FB\u3011\u8282\u70B9\u7C7B\u578B\uFF1A\u53F6\u5B50\u8282\u70B9\u3002\u52A8\u4F5C: \u624B\u52A8\u5207\u6362\u3010${curItem.friendlyArea}\u3011\u5730\u533A\u7684\u9009\u4E2D\u72B6\u6001\u3002`
35
+ );
36
+ dispatchAllNodesOnCheck();
37
+ }
38
+ });
39
+ return curLocations.reduce((initVal, curItem) => {
40
+ var _a, _b, _c, _d, _e;
41
+ if (curItem[TypeKey[Type.IS_LEAF]] in initVal) {
42
+ (_b = (_a = initVal[curItem[TypeKey[Type.IS_LEAF]]].children) == null ? void 0 : _a.push) == null ? void 0 : _b.call(_a, getLeafNode(curItem));
43
+ } else {
44
+ initVal[curItem[TypeKey[Type.IS_GROUP]]] = {
45
+ label: curItem.regionName,
46
+ [TypeKey[Type.IS_GROUP]]: curItem[TypeKey[Type.IS_GROUP]],
47
+ isHalfChecked: false,
48
+ isAllChecked: false,
49
+ type: Type.IS_GROUP,
50
+ children: [getLeafNode(curItem)],
51
+ selectedChildren: [],
52
+ onCheck: () => {
53
+ console.log(
54
+ `\u3010\u{1F527} \u68C0\u67E5\u3011\u8282\u70B9\u7C7B\u578B\uFF1A\u7EC4\u8282\u70B9\u3002\u52A8\u4F5C: \u68C0\u67E5\u66F4\u65B0\u3010${curItem.regionName}\u3011\u5730\u533A\u7684\u9009\u4E2D\u72B6\u6001`
55
+ );
56
+ groupNodeOnCheck(curItem, Type.IS_GROUP);
57
+ },
58
+ onChange: (val) => {
59
+ console.log(
60
+ `\u3010\u{1F527} \u70B9\u51FB\u3011\u8282\u70B9\u7C7B\u578B\uFF1A\u7EC4\u8282\u70B9\u3002\u52A8\u4F5C: \u624B\u52A8\u5207\u6362\u3010${curItem.regionName}\u3011\u5730\u533A\u7684\u9009\u4E2D\u72B6\u6001`
61
+ );
62
+ locations.value[curItem[TypeKey[Type.IS_GROUP]]].selectedChildren = val ? locations.value[curItem[TypeKey[Type.IS_GROUP]]].children.map((v) => v[valueKey]) : [];
63
+ dispatchAllNodesOnCheck();
64
+ }
65
+ };
66
+ }
67
+ if (!("all" in initVal)) {
68
+ initVal["all"] = {
69
+ label: "\u5168\u9009",
70
+ isHalfChecked: false,
71
+ isAllChecked: false,
72
+ type: Type.IS_ALL,
73
+ children: [],
74
+ selectedChildren: [],
75
+ onCheck: () => {
76
+ console.log(`\u3010\u{1F527} \u68C0\u67E5\u3011\u8282\u70B9\u7C7B\u578B\uFF1A\u5168\u9009\u8282\u70B9\u3002\u52A8\u4F5C: \u68C0\u67E5\u66F4\u65B0\u5168\u9009\u8282\u70B9\u7684\u9009\u4E2D\u72B6\u6001`);
77
+ allNodeOnCheck();
78
+ },
79
+ onChange: (val) => {
80
+ console.log(`\u3010\u{1F527} \u70B9\u51FB\u3011\u8282\u70B9\u7C7B\u578B\uFF1A\u5168\u9009\u8282\u70B9\u3002\u52A8\u4F5C: \u624B\u52A8\u5207\u6362\u6240\u6709\u53F6\u5B50\u8282\u70B9\u7684\u9009\u4E2D\u72B6\u6001`);
81
+ Object.entries(locations.value).filter(([k, v]) => k !== "all").forEach(([k, v]) => {
82
+ v.selectedChildren = val ? v.children.map((v1) => v1[valueKey]) : [];
83
+ });
84
+ dispatchAllNodesOnCheck();
85
+ }
86
+ };
87
+ }
88
+ if (!(((_c = initVal["all"]) == null ? void 0 : _c.children) || []).find(
89
+ (v) => v[TypeKey[Type.IS_ISP]] === curItem[TypeKey[Type.IS_ISP]]
90
+ )) {
91
+ (_e = (_d = initVal["all"]) == null ? void 0 : _d.children) == null ? void 0 : _e.push({
92
+ label: curItem.ispName,
93
+ [TypeKey[Type.IS_ISP]]: curItem[TypeKey[Type.IS_ISP]],
94
+ /** 因为运营商的唯一值是asn,其余的叶子节点唯一值是regionId,所以在这里如果要把运营商模拟为叶子结点的话,需要把asn填进regionId */
95
+ [valueKey]: curItem[TypeKey[Type.IS_ISP]],
96
+ // 用唯一的asn,因为ui中将运营商节点放入leaf节点的位置,所以有了这个key
97
+ isHalfChecked: false,
98
+ isAllChecked: false,
99
+ type: Type.IS_ISP,
100
+ children: [],
101
+ selectedChildren: [],
102
+ onCheck: () => {
103
+ console.log(
104
+ `\u3010\u{1F527} \u68C0\u67E5\u3011\u8282\u70B9\u7C7B\u578B\uFF1A\u8FD0\u8425\u5546\u8282\u70B9\u3002\u52A8\u4F5C: \u68C0\u67E5\u66F4\u65B0\u3010${curItem.ispName}\u3011\u8FD0\u8425\u5546\u8282\u70B9\u7684\u9009\u4E2D\u72B6\u6001`
105
+ );
106
+ ispNodeOnCheck(curItem, Type.IS_ISP);
107
+ },
108
+ onChange: (val) => {
109
+ console.log(
110
+ `\u3010\u{1F527} \u70B9\u51FB\u3011\u8282\u70B9\u7C7B\u578B\uFF1A\u5168\u9009\u8282\u70B9\u3002\u52A8\u4F5C: \u624B\u52A8\u5207\u6362\u3010${curItem.ispName}\u3011\u8FD0\u8425\u5546\u8282\u70B9\u7684\u9009\u4E2D\u72B6\u6001`
111
+ );
112
+ Object.entries(locations.value).filter(([k, v]) => k !== "all").forEach(([k, v]) => {
113
+ v.selectedChildren = val ? v.children.filter((v1) => v1[TypeKey[Type.IS_ISP]] === curItem[TypeKey[Type.IS_ISP]]).map((v2) => v2[valueKey]) : [];
114
+ });
115
+ dispatchAllNodesOnCheck();
116
+ }
117
+ });
118
+ }
119
+ return initVal;
120
+ }, {});
121
+ };
122
+ const init = () => {
123
+ locations.value = formatLocations(props.options);
124
+ if (isEmpty(locations.value)) {
125
+ return;
126
+ }
127
+ Object.entries(locations.value).filter(([k]) => k !== "all").map(([_, v]) => {
128
+ const same = v.children.filter((v2) => props.value.includes(v2[valueKey])).map((v2) => v2[valueKey]);
129
+ if (same.length) {
130
+ v.selectedChildren = [...v.selectedChildren, ...same];
131
+ }
132
+ });
133
+ dispatchAllNodesOnCheck();
134
+ };
135
+ watch(
136
+ () => [props.options, props.value],
137
+ (newVal, oldVal) => {
138
+ if (!isEqual(newVal == null ? void 0 : newVal[0], oldVal == null ? void 0 : oldVal[0]) || !isEqual(newVal == null ? void 0 : newVal[1], oldVal == null ? void 0 : oldVal[1])) {
139
+ init();
140
+ }
141
+ },
142
+ { immediate: true }
143
+ );
144
+ return {
145
+ locations,
146
+ allLocations
147
+ };
148
+ };
149
+
150
+ export { useLocations };
151
+ //# sourceMappingURL=useLocations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocations.mjs","sources":["../../../../../packages/components/commonLocations/useLocations.ts"],"sourcesContent":["import { ref, computed, watch } from 'vue'\nimport { isEmpty, isEqual } from 'lodash'\nimport { getUtils } from './utils'\nimport { Type, TypeKey, valueKey } from './constants'\n\nimport type {\n IProps,\n IUseLocationsRes,\n ILocationItem,\n IAllNode,\n IIspNode,\n IGroupNode,\n ILeafNode,\n ILocations,\n ISelectedData,\n} from './interfaces'\n\nexport const useLocations = (props: IProps): IUseLocationsRes => {\n const locations = ref<ILocations>({})\n /** 获取所有选中的和可选的leaf节点 */\n const allLocations = computed<ISelectedData>(() => {\n return Object.entries(locations.value)\n .filter(([k]) => k !== 'all')\n .reduce(\n (iniVal, [_, v]) => ({\n selectedChildren: [\n ...iniVal.selectedChildren,\n ...((v as unknown as ILeafNode).selectedChildren || []),\n ],\n children: [...iniVal.children, ...((v as unknown as ILeafNode).children || [])],\n }),\n { children: [], selectedChildren: [] } as ISelectedData,\n )\n })\n const { ispNodeOnCheck, groupNodeOnCheck, allNodeOnCheck, dispatchAllNodesOnCheck } = getUtils(\n locations,\n allLocations,\n )\n /** 格式化locations */\n const formatLocations = (curLocations: ILocationItem[] = []): ILocations => {\n const getLeafNode = (curItem: ILeafNode): ILeafNode => ({\n ...curItem,\n label: curItem.friendlyArea,\n selected: false,\n type: Type.IS_LEAF,\n children: [],\n selectedChildren: [],\n onChange: () => {\n console.log(\n `【🔧 点击】节点类型:叶子节点。动作: 手动切换【${curItem.friendlyArea}】地区的选中状态。`,\n )\n dispatchAllNodesOnCheck()\n },\n })\n return curLocations.reduce((initVal, curItem) => {\n // 按regionName分组\n if (curItem[TypeKey[Type.IS_LEAF]] in initVal) {\n initVal[curItem[TypeKey[Type.IS_LEAF]]].children?.push?.(getLeafNode(curItem as ILeafNode))\n } else {\n initVal[curItem[TypeKey[Type.IS_GROUP]]] = {\n label: curItem.regionName,\n [TypeKey[Type.IS_GROUP]]: curItem[TypeKey[Type.IS_GROUP]],\n isHalfChecked: false,\n isAllChecked: false,\n type: Type.IS_GROUP,\n children: [getLeafNode(curItem as ILeafNode)],\n selectedChildren: [],\n onCheck: () => {\n console.log(\n `【🔧 检查】节点类型:组节点。动作: 检查更新【${curItem.regionName}】地区的选中状态`,\n )\n groupNodeOnCheck(curItem, Type.IS_GROUP)\n },\n onChange: (val: boolean) => {\n console.log(\n `【🔧 点击】节点类型:组节点。动作: 手动切换【${curItem.regionName}】地区的选中状态`,\n )\n locations.value[curItem[TypeKey[Type.IS_GROUP]]].selectedChildren = val\n ? locations.value[curItem[TypeKey[Type.IS_GROUP]]].children.map((v) => v[valueKey])\n : []\n /** 调用所有IGroupNode和IIspNode的onCheck */\n dispatchAllNodesOnCheck()\n },\n } as IGroupNode\n }\n // 全选\n if (!('all' in initVal)) {\n initVal['all'] = {\n label: '全选',\n isHalfChecked: false,\n isAllChecked: false,\n type: Type.IS_ALL,\n children: [],\n selectedChildren: [],\n onCheck: () => {\n console.log(`【🔧 检查】节点类型:全选节点。动作: 检查更新全选节点的选中状态`)\n allNodeOnCheck()\n },\n onChange: (val: boolean) => {\n console.log(`【🔧 点击】节点类型:全选节点。动作: 手动切换所有叶子节点的选中状态`)\n Object.entries(locations.value)\n .filter(([k, v]) => k !== 'all')\n .forEach(([k, v]) => {\n v.selectedChildren = val ? (v as IGroupNode).children.map((v1) => v1[valueKey]) : []\n })\n /** 调用所有IGroupNode和IIspNode的onCheck */\n dispatchAllNodesOnCheck()\n },\n } as IAllNode\n }\n // 运营商全选节点【布局方便,所以放进all的children中】\n if (\n !(initVal['all']?.children || []).find(\n (v) => v[TypeKey[Type.IS_ISP]] === curItem[TypeKey[Type.IS_ISP]],\n )\n ) {\n initVal['all']?.children?.push({\n label: curItem.ispName,\n [TypeKey[Type.IS_ISP]]: curItem[TypeKey[Type.IS_ISP]],\n /** 因为运营商的唯一值是asn,其余的叶子节点唯一值是regionId,所以在这里如果要把运营商模拟为叶子结点的话,需要把asn填进regionId */\n [valueKey]: curItem[TypeKey[Type.IS_ISP]], // 用唯一的asn,因为ui中将运营商节点放入leaf节点的位置,所以有了这个key\n isHalfChecked: false,\n isAllChecked: false,\n type: Type.IS_ISP,\n children: [],\n selectedChildren: [],\n onCheck: () => {\n console.log(\n `【🔧 检查】节点类型:运营商节点。动作: 检查更新【${curItem.ispName}】运营商节点的选中状态`,\n )\n ispNodeOnCheck(curItem, Type.IS_ISP)\n },\n onChange: (val: boolean) => {\n console.log(\n `【🔧 点击】节点类型:全选节点。动作: 手动切换【${curItem.ispName}】运营商节点的选中状态`,\n )\n Object.entries(locations.value)\n .filter(([k, v]) => k !== 'all')\n .forEach(([k, v]) => {\n v.selectedChildren = val\n ? (v as IGroupNode).children\n .filter((v1) => v1[TypeKey[Type.IS_ISP]] === curItem[TypeKey[Type.IS_ISP]])\n .map((v) => v[valueKey])\n : []\n })\n dispatchAllNodesOnCheck()\n },\n } as IIspNode)\n }\n return initVal\n }, {} as ILocations)\n }\n const init = () => {\n locations.value = formatLocations(props.options as ILocationItem[])\n if (isEmpty(locations.value)) {\n return\n }\n Object.entries(locations.value)\n .filter(([k]) => k !== 'all')\n .map(([_, v]) => {\n const same = v.children\n .filter((v) => props.value.includes(v[valueKey]))\n .map((v) => v[valueKey])\n if (same.length) {\n v.selectedChildren = [...v.selectedChildren, ...same]\n }\n })\n dispatchAllNodesOnCheck()\n }\n /** 配合formily的value/change模式 */\n watch(\n () => [props.options, props.value],\n (newVal, oldVal) => {\n if (!isEqual(newVal?.[0], oldVal?.[0]) || !isEqual(newVal?.[1], oldVal?.[1])) {\n init()\n }\n },\n { immediate: true },\n )\n return {\n locations,\n allLocations,\n }\n}\n"],"names":["v"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Type } from './constants';
2
+ import type { Ref, ComputedRef } from 'vue';
3
+ import type { ILocations, ILocationItem, ISelectedData } from './interfaces';
4
+ /** 获取状态检查函数 */
5
+ export declare const getUtils: (locations: Ref<ILocations>, allLocations: ComputedRef<ISelectedData>) => {
6
+ /** 运营商选中状态检查【运营商节点和all节点】 */
7
+ ispNodeOnCheck(curItem: ILocationItem, type: Type): void;
8
+ /** 组节点选中状态检查 */
9
+ groupNodeOnCheck(curItem: ILocationItem, type: Type): void;
10
+ /** 全选节点选中状态检查 */
11
+ allNodeOnCheck(): void;
12
+ /** 调用组节点/运营商节点/全选节点的onCheck */
13
+ dispatchAllNodesOnCheck(): void;
14
+ };
@@ -0,0 +1,73 @@
1
+ import { TypeKey, valueKey } from './constants.mjs';
2
+
3
+ const getUtils = (locations, allLocations) => {
4
+ return {
5
+ /** 运营商选中状态检查【运营商节点和all节点】 */
6
+ ispNodeOnCheck(curItem, type) {
7
+ var _a, _b, _c, _d, _e, _f, _g, _h;
8
+ const key = TypeKey[type];
9
+ const target = (_a = locations.value.all) == null ? void 0 : _a.children.find((v) => v[key] === curItem[key]);
10
+ const index = (_b = locations.value.all) == null ? void 0 : _b.selectedChildren.findIndex((v) => v === target[valueKey]);
11
+ const sameAsnLeafs = allLocations.value.children.filter((v) => v[key] === target[key]);
12
+ const selectedLeafs = sameAsnLeafs.filter((v) => allLocations.value.selectedChildren.includes(v[valueKey]));
13
+ if (!(selectedLeafs == null ? void 0 : selectedLeafs.length)) {
14
+ target.isAllChecked = false;
15
+ target.isHalfChecked = false;
16
+ if ((_c = locations.value.all) == null ? void 0 : _c.selectedChildren.includes(target[valueKey])) {
17
+ (_d = locations.value.all) == null ? void 0 : _d.selectedChildren.splice(index, 1);
18
+ }
19
+ } else if (selectedLeafs.length > 0 && (selectedLeafs == null ? void 0 : selectedLeafs.length) < sameAsnLeafs.length) {
20
+ target.isAllChecked = false;
21
+ target.isHalfChecked = true;
22
+ if ((_e = locations.value.all) == null ? void 0 : _e.selectedChildren.includes(target[valueKey])) {
23
+ (_f = locations.value.all) == null ? void 0 : _f.selectedChildren.splice(index, 1);
24
+ }
25
+ } else if (selectedLeafs.length === sameAsnLeafs.length) {
26
+ target.isAllChecked = true;
27
+ target.isHalfChecked = false;
28
+ if (!((_g = locations.value.all) == null ? void 0 : _g.selectedChildren.includes(target[valueKey]))) {
29
+ (_h = locations.value.all) == null ? void 0 : _h.selectedChildren.push(target[valueKey]);
30
+ }
31
+ }
32
+ },
33
+ /** 组节点选中状态检查 */
34
+ groupNodeOnCheck(curItem, type) {
35
+ var _a, _b, _c, _d, _e, _f;
36
+ const key = TypeKey[type];
37
+ const target = locations.value[curItem[key]];
38
+ if (!((_a = target.selectedChildren) == null ? void 0 : _a.length)) {
39
+ target.isAllChecked = false;
40
+ target.isHalfChecked = false;
41
+ } else if (((_b = target.selectedChildren) == null ? void 0 : _b.length) > 0 && ((_c = target.selectedChildren) == null ? void 0 : _c.length) < ((_d = target.children) == null ? void 0 : _d.length)) {
42
+ target.isAllChecked = false;
43
+ target.isHalfChecked = true;
44
+ } else if (((_e = target.selectedChildren) == null ? void 0 : _e.length) === ((_f = target.children) == null ? void 0 : _f.length)) {
45
+ target.isAllChecked = true;
46
+ target.isHalfChecked = false;
47
+ }
48
+ },
49
+ /** 全选节点选中状态检查 */
50
+ allNodeOnCheck() {
51
+ var _a, _b;
52
+ if (!allLocations.value.selectedChildren.length) {
53
+ locations.value.all.isAllChecked = false;
54
+ locations.value.all.isHalfChecked = false;
55
+ } else if (allLocations.value.selectedChildren.length > 0 && allLocations.value.selectedChildren.length < ((_a = allLocations.value.children) == null ? void 0 : _a.length)) {
56
+ locations.value.all.isAllChecked = false;
57
+ locations.value.all.isHalfChecked = true;
58
+ } else if (allLocations.value.selectedChildren.length === ((_b = allLocations.value.children) == null ? void 0 : _b.length)) {
59
+ locations.value.all.isAllChecked = true;
60
+ locations.value.all.isHalfChecked = false;
61
+ }
62
+ },
63
+ /** 调用组节点/运营商节点/全选节点的onCheck */
64
+ dispatchAllNodesOnCheck() {
65
+ var _a;
66
+ (((_a = locations.value.all) == null ? void 0 : _a.children) || []).forEach((v) => v.onCheck());
67
+ Object.entries(locations.value).forEach(([k, v]) => v.onCheck());
68
+ }
69
+ };
70
+ };
71
+
72
+ export { getUtils };
73
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","sources":["../../../../../packages/components/commonLocations/utils.ts"],"sourcesContent":["import { Type, TypeKey, valueKey } from './constants'\n\nimport type { Ref, ComputedRef } from 'vue'\nimport type { \n ILocations,\n ILocationItem, \n ISelectedData,\n} from './interfaces'\n\n/** 获取状态检查函数 */\nexport const getUtils = (locations: Ref<ILocations>, allLocations: ComputedRef<ISelectedData>) => {\n return {\n /** 运营商选中状态检查【运营商节点和all节点】 */\n ispNodeOnCheck(curItem: ILocationItem, type: Type) {\n /** 因为运营商的唯一值是asn,其余的叶子节点唯一值是regionId,所以在这里如果要把运营商模拟为叶子结点的话,需要把asn填进regionId */\n const key = TypeKey[type]\n const target = locations.value.all?.children.find(v => v[key] === curItem[key]) // 当前节点\n const index = locations.value.all?.selectedChildren.findIndex(v => v === target[valueKey]) // 当前节点在selectedChildren中的下标\n const sameAsnLeafs = allLocations.value.children.filter(v => v[key] === target[key]) // 所有本运营商的leaf节点\n const selectedLeafs = sameAsnLeafs.filter(v => allLocations.value.selectedChildren.includes(v[valueKey])) // 本运营商中被选中的leaf节点\n if (!selectedLeafs?.length) {\n target.isAllChecked = false\n target.isHalfChecked = false\n if (locations.value.all?.selectedChildren.includes(target[valueKey])) {\n locations.value.all?.selectedChildren.splice(index, 1)\n }\n } else if (selectedLeafs.length > 0 && selectedLeafs?.length < sameAsnLeafs.length) {\n target.isAllChecked = false\n target.isHalfChecked = true\n if (locations.value.all?.selectedChildren.includes(target[valueKey])) {\n locations.value.all?.selectedChildren.splice(index, 1)\n }\n } else if (selectedLeafs.length === sameAsnLeafs.length) {\n target.isAllChecked = true\n target.isHalfChecked = false\n if (!locations.value.all?.selectedChildren.includes(target[valueKey])) {\n locations.value.all?.selectedChildren.push(target[valueKey])\n }\n }\n },\n /** 组节点选中状态检查 */\n groupNodeOnCheck (curItem: ILocationItem, type: Type) {\n const key = TypeKey[type]\n const target = locations.value[curItem[key]]\n if (!target.selectedChildren?.length) {\n target.isAllChecked = false\n target.isHalfChecked = false\n } else if (target.selectedChildren?.length > 0 && target.selectedChildren?.length < target.children?.length) {\n target.isAllChecked = false\n target.isHalfChecked = true\n } else if (target.selectedChildren?.length === target.children?.length) {\n target.isAllChecked = true\n target.isHalfChecked = false\n }\n },\n /** 全选节点选中状态检查 */\n allNodeOnCheck () {\n if (!allLocations.value.selectedChildren.length) {\n locations.value.all.isAllChecked = false\n locations.value.all.isHalfChecked = false\n } else if (allLocations.value.selectedChildren.length > 0 && allLocations.value.selectedChildren.length < allLocations.value.children?.length) {\n locations.value.all.isAllChecked = false\n locations.value.all.isHalfChecked = true\n } else if (allLocations.value.selectedChildren.length === allLocations.value.children?.length) {\n locations.value.all.isAllChecked = true\n locations.value.all.isHalfChecked = false\n }\n },\n /** 调用组节点/运营商节点/全选节点的onCheck */\n dispatchAllNodesOnCheck () {\n ;(locations.value.all?.children || []).forEach(v => v.onCheck())\n Object.entries(locations.value).forEach(([k, v]) => v.onCheck())\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import type { PropType } from 'vue';
2
+ export interface IFormTab {
3
+ activeKey: string;
4
+ setActiveKey(key: string): void;
5
+ }
6
+ export interface IFormTabProps {
7
+ formTab?: IFormTab;
8
+ }
9
+ export interface IFormTabPaneProps {
10
+ key: string | number;
11
+ }
12
+ export declare const composeFormTab: {
13
+ new (...args: any[]): import("vue").CreateComponentPublicInstanceWithMixins<Readonly<import("vue").ExtractPropTypes<{
14
+ formTab: {
15
+ type: PropType<IFormTab>;
16
+ };
17
+ value: {
18
+ type: StringConstructor;
19
+ };
20
+ customValue: {
21
+ type: StringConstructor;
22
+ };
23
+ disabled: {
24
+ type: BooleanConstructor;
25
+ };
26
+ }>> & Readonly<{
27
+ onInput?: (...args: any[]) => any;
28
+ }>, () => any, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "input"[], import("vue").PublicProps, {
29
+ disabled: boolean;
30
+ }, true, {}, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, {}, any, import("vue").ComponentProvideOptions, {
31
+ P: {};
32
+ B: {};
33
+ D: {};
34
+ C: {};
35
+ M: {};
36
+ Defaults: {};
37
+ }, Readonly<import("vue").ExtractPropTypes<{
38
+ formTab: {
39
+ type: PropType<IFormTab>;
40
+ };
41
+ value: {
42
+ type: StringConstructor;
43
+ };
44
+ customValue: {
45
+ type: StringConstructor;
46
+ };
47
+ disabled: {
48
+ type: BooleanConstructor;
49
+ };
50
+ }>> & Readonly<{
51
+ onInput?: (...args: any[]) => any;
52
+ }>, () => any, {}, {}, {}, {
53
+ disabled: boolean;
54
+ }>;
55
+ __isFragment?: never;
56
+ __isTeleport?: never;
57
+ __isSuspense?: never;
58
+ } & import("vue").ComponentOptionsBase<Readonly<import("vue").ExtractPropTypes<{
59
+ formTab: {
60
+ type: PropType<IFormTab>;
61
+ };
62
+ value: {
63
+ type: StringConstructor;
64
+ };
65
+ customValue: {
66
+ type: StringConstructor;
67
+ };
68
+ disabled: {
69
+ type: BooleanConstructor;
70
+ };
71
+ }>> & Readonly<{
72
+ onInput?: (...args: any[]) => any;
73
+ }>, () => any, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "input"[], "input", {
74
+ disabled: boolean;
75
+ }, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & {
76
+ TabPane: import("vue").DefineComponent<IFormTabPaneProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<IFormTabPaneProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
77
+ createFormTab: (defaultActiveKey?: string) => {
78
+ activeKey: string;
79
+ setActiveKey(key: string): void;
80
+ };
81
+ };
82
+ export { composeFormTab as FormTab };
83
+ export default composeFormTab;
@@ -0,0 +1,146 @@
1
+ import { defineComponent, computed, reactive } from 'vue';
2
+ import { observer } from '@formily/reactive-vue';
3
+ import { model } from '@formily/reactive';
4
+ import { useField, h, RecursionField, Fragment, useFieldSchema } from '@formily/vue';
5
+ import { ElTabs, ElTabPane, ElBadge } from 'element-plus';
6
+
7
+ const stylePrefix = "formily-element-plus";
8
+ function composeExport(s0, s1) {
9
+ return Object.assign(s0, s1);
10
+ }
11
+ const useTabs = () => {
12
+ const tabsField = useField();
13
+ const schema = useFieldSchema();
14
+ const tabs = reactive([]);
15
+ schema.value.mapProperties((schema2, name) => {
16
+ var _a, _b;
17
+ const field = tabsField.value.query(tabsField.value.address.concat(name)).take();
18
+ if ((field == null ? void 0 : field.display) === "none" || (field == null ? void 0 : field.display) === "hidden") return;
19
+ if (((_a = schema2["x-component"]) == null ? void 0 : _a.indexOf("TabPane")) > -1) {
20
+ tabs.push({
21
+ name,
22
+ props: {
23
+ name: ((_b = schema2 == null ? void 0 : schema2["x-component-props"]) == null ? void 0 : _b.name) || name,
24
+ ...schema2 == null ? void 0 : schema2["x-component-props"]
25
+ },
26
+ schema: schema2
27
+ });
28
+ }
29
+ });
30
+ return tabs;
31
+ };
32
+ const createFormTab = (defaultActiveKey) => {
33
+ const formTab = model({
34
+ activeKey: defaultActiveKey,
35
+ setActiveKey(key) {
36
+ formTab.activeKey = key;
37
+ }
38
+ });
39
+ return formTab;
40
+ };
41
+ const FormTab = observer(
42
+ defineComponent({
43
+ inheritAttrs: false,
44
+ props: {
45
+ formTab: { type: Object },
46
+ value: {
47
+ type: String
48
+ },
49
+ customValue: {
50
+ type: String
51
+ },
52
+ disabled: {
53
+ type: Boolean
54
+ }
55
+ },
56
+ emits: ["input"],
57
+ setup(props, { attrs, emit }) {
58
+ const field = useField();
59
+ const prefixCls = `${stylePrefix}-form-tab`;
60
+ const formTabRef = computed(() => {
61
+ var _a;
62
+ return (_a = props.formTab) != null ? _a : createFormTab();
63
+ });
64
+ const takeActiveKey = (tabs) => {
65
+ var _a, _b;
66
+ return (props == null ? void 0 : props.value) || (props == null ? void 0 : props.customValue) || ((_a = formTabRef.value) == null ? void 0 : _a.activeKey) || ((_b = tabs == null ? void 0 : tabs[0]) == null ? void 0 : _b.name);
67
+ };
68
+ const badgedHeader = (key, props2) => {
69
+ const errors = field.value.form.queryFeedbacks({
70
+ type: "error",
71
+ address: `${field.value.address.concat(key)}.*`
72
+ });
73
+ if (errors == null ? void 0 : errors.length) {
74
+ return h(
75
+ ElBadge,
76
+ {
77
+ class: [`${prefixCls}-errors-badge`],
78
+ value: errors == null ? void 0 : errors.length
79
+ },
80
+ { default: () => props2.label }
81
+ );
82
+ }
83
+ return props2.label;
84
+ };
85
+ const innerDisabled = props.disabled;
86
+ return () => {
87
+ const tabs = useTabs();
88
+ const activeKey = takeActiveKey(tabs);
89
+ field.value.setData({
90
+ setActiveKey: (activeKey2) => {
91
+ var _a, _b;
92
+ (_b = (_a = formTabRef.value).setActiveKey) == null ? void 0 : _b.call(_a, activeKey2);
93
+ }
94
+ });
95
+ return h(
96
+ ElTabs,
97
+ {
98
+ ...attrs,
99
+ class: [prefixCls],
100
+ modelValue: activeKey,
101
+ onTabChange: (key) => {
102
+ var _a, _b;
103
+ if (typeof key !== "string") return;
104
+ emit("input", key);
105
+ (_b = (_a = formTabRef.value).setActiveKey) == null ? void 0 : _b.call(_a, key);
106
+ }
107
+ },
108
+ {
109
+ default: () => tabs.map(({ props: props2, schema, name }, key) => {
110
+ return h(
111
+ ElTabPane,
112
+ {
113
+ key,
114
+ ...props2,
115
+ disabled: innerDisabled
116
+ },
117
+ {
118
+ default: () => h(RecursionField, { schema, name }, {}),
119
+ label: () => h(
120
+ "div",
121
+ {},
122
+ { default: () => [badgedHeader(name, props2)] }
123
+ )
124
+ }
125
+ );
126
+ })
127
+ }
128
+ );
129
+ };
130
+ }
131
+ })
132
+ );
133
+ const FormTabPane = defineComponent({
134
+ name: "FFormTabPane",
135
+ inheritAttrs: false,
136
+ setup(_props, { slots }) {
137
+ return () => h(Fragment, {}, slots);
138
+ }
139
+ });
140
+ const composeFormTab = composeExport(FormTab, {
141
+ TabPane: FormTabPane,
142
+ createFormTab
143
+ });
144
+
145
+ export { composeFormTab as FormTab, composeFormTab, composeFormTab as default };
146
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/formilyCmps/formTab/index.ts"],"sourcesContent":["import { defineComponent, reactive, computed } from 'vue'\nimport { observer } from '@formily/reactive-vue'\nimport { model } from '@formily/reactive'\nimport {\n h,\n useField,\n useFieldSchema,\n RecursionField,\n Fragment,\n} from '@formily/vue'\nimport { Schema } from '@formily/json-schema'\nimport { ElTabs, ElTabPane, ElBadge } from 'element-plus'\n\nimport type { PropType } from 'vue'\nimport type { SchemaKey } from '@formily/json-schema'\n\nconst stylePrefix = 'formily-element-plus'\nfunction composeExport<T0 extends {}, T1 extends {}>(\n s0: T0,\n s1: T1\n): T0 & T1 {\n return Object.assign(s0, s1)\n}\n\nexport interface IFormTab {\n activeKey: string\n setActiveKey(key: string): void\n}\n\nexport interface IFormTabProps {\n formTab?: IFormTab\n}\n\nexport interface IFormTabPaneProps {\n key: string | number\n}\n\ntype Tabs = { name: SchemaKey; props: any; schema: Schema }[]\n\nconst useTabs = () => {\n const tabsField = useField()\n const schema = useFieldSchema()\n const tabs: Tabs = reactive([])\n schema.value.mapProperties((schema, name) => {\n const field = tabsField.value\n .query(tabsField.value.address.concat(name))\n .take()\n if (field?.display === 'none' || field?.display === 'hidden') return\n\n if (schema['x-component']?.indexOf('TabPane') > -1) {\n tabs.push({\n name,\n props: {\n name: schema?.['x-component-props']?.name || name,\n ...schema?.['x-component-props'],\n },\n schema,\n })\n }\n })\n return tabs\n}\n\nconst createFormTab = (defaultActiveKey?: string) => {\n const formTab = model({\n activeKey: defaultActiveKey,\n setActiveKey(key: string) {\n formTab.activeKey = key\n },\n })\n return formTab\n}\n\nconst FormTab = observer(\n defineComponent({\n inheritAttrs: false,\n props: {\n formTab: { type: Object as PropType<IFormTab> },\n value: {\n type: String,\n },\n customValue: {\n type: String,\n },\n disabled: {\n type: Boolean,\n },\n },\n emits: ['input'],\n setup(props, { attrs, emit }: any) {\n const field = useField()\n const prefixCls = `${stylePrefix}-form-tab`\n const formTabRef = computed(() => props.formTab ?? createFormTab())\n const takeActiveKey = (tabs: Tabs) => {\n return props?.value || props?.customValue || formTabRef.value?.activeKey || tabs?.[0]?.name\n }\n const badgedHeader = (key: SchemaKey, props: any) => {\n const errors = field.value.form.queryFeedbacks({\n type: 'error',\n address: `${field.value.address.concat(key)}.*`,\n })\n if (errors?.length) {\n return h(\n ElBadge,\n {\n class: [`${prefixCls}-errors-badge`],\n value: errors?.length,\n },\n { default: () => props.label }\n )\n }\n return props.label\n }\n const innerDisabled = props.disabled\n return () => {\n const tabs = useTabs()\n const activeKey = takeActiveKey(tabs)\n field.value.setData({\n setActiveKey: (activeKey: string) => {\n formTabRef.value.setActiveKey?.(activeKey)\n },\n })\n return h(\n ElTabs,\n {\n ...attrs,\n class: [prefixCls],\n modelValue: activeKey,\n onTabChange: (key: string) => {\n if (typeof key !== 'string') return\n\n emit('input', key)\n formTabRef.value.setActiveKey?.(key)\n },\n },\n {\n default: () =>\n tabs.map(({ props, schema, name }, key) => {\n return h(\n ElTabPane,\n {\n key,\n ...props,\n disabled: innerDisabled,\n },\n {\n default: () => h(RecursionField, { schema, name }, {}),\n label: () =>\n h(\n 'div',\n {},\n { default: () => [badgedHeader(name, props)] }\n ),\n }\n )\n }),\n }\n )\n }\n },\n })\n)\n\nconst FormTabPane = defineComponent<IFormTabPaneProps>({\n name: 'FFormTabPane',\n inheritAttrs: false,\n setup(_props, { slots }) {\n return () => h(Fragment, {}, slots)\n },\n})\n\nexport const composeFormTab = composeExport(FormTab, {\n TabPane: FormTabPane,\n createFormTab,\n})\n\nexport { composeFormTab as FormTab }\nexport default composeFormTab"],"names":["schema","props","activeKey"],"mappings":"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"}