@knockout-js/layout 0.1.1-beta.1 → 0.1.1-beta.3
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/es2017/components/dictionary/index.d.ts +6 -0
- package/es2017/components/dictionary/index.js +64 -0
- package/es2017/components/dictionary/index.js.map +1 -0
- package/es2017/components/dictionary/index.module.css +4 -0
- package/es2017/components/dictionary/select.d.ts +19 -0
- package/es2017/components/dictionary/select.js +51 -0
- package/es2017/components/dictionary/select.js.map +1 -0
- package/es2017/components/dictionary/text.d.ts +23 -0
- package/es2017/components/dictionary/text.js +28 -0
- package/es2017/components/dictionary/text.js.map +1 -0
- package/es2017/components/icons/index.d.ts +2 -0
- package/es2017/components/icons/index.js +20 -0
- package/es2017/components/icons/index.js.map +1 -1
- package/es2017/components/index.d.ts +2 -0
- package/es2017/components/index.js +2 -0
- package/es2017/components/index.js.map +1 -1
- package/es2017/components/layout/index.js +6 -3
- package/es2017/components/layout/index.js.map +1 -1
- package/es2017/components/msg-dropdown/index.js +45 -48
- package/es2017/components/msg-dropdown/index.js.map +1 -1
- package/es2017/components/theme-switch/index.d.ts +0 -5
- package/es2017/components/theme-switch/index.js +16 -14
- package/es2017/components/theme-switch/index.js.map +1 -1
- package/es2017/components/theme-switch/index.module.css +14 -0
- package/esm/components/dictionary/index.d.ts +6 -0
- package/esm/components/dictionary/index.js +86 -0
- package/esm/components/dictionary/index.js.map +1 -0
- package/esm/components/dictionary/index.module.css +4 -0
- package/esm/components/dictionary/select.d.ts +19 -0
- package/esm/components/dictionary/select.js +71 -0
- package/esm/components/dictionary/select.js.map +1 -0
- package/esm/components/dictionary/text.d.ts +23 -0
- package/esm/components/dictionary/text.js +31 -0
- package/esm/components/dictionary/text.js.map +1 -0
- package/esm/components/icons/index.d.ts +2 -0
- package/esm/components/icons/index.js +24 -0
- package/esm/components/icons/index.js.map +1 -1
- package/esm/components/index.d.ts +2 -0
- package/esm/components/index.js +2 -0
- package/esm/components/index.js.map +1 -1
- package/esm/components/layout/index.js +8 -3
- package/esm/components/layout/index.js.map +1 -1
- package/esm/components/msg-dropdown/index.js +76 -101
- package/esm/components/msg-dropdown/index.js.map +1 -1
- package/esm/components/theme-switch/index.d.ts +0 -5
- package/esm/components/theme-switch/index.js +16 -14
- package/esm/components/theme-switch/index.js.map +1 -1
- package/esm/components/theme-switch/index.module.css +14 -0
- package/package.json +4 -4
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
import _object_spread from "@swc/helpers/src/_object_spread.mjs";
|
|
2
|
-
import _object_spread_props from "@swc/helpers/src/_object_spread_props.mjs";
|
|
3
1
|
import { jsx as _jsx } from "@ice/jsx-runtime/jsx-runtime";
|
|
4
2
|
import React from "react";
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
3
|
+
import { Moon, Sun } from "../icons/index";
|
|
4
|
+
import styles from "./index.module.css";
|
|
7
5
|
const ThemeSwitch = (props)=>{
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
return /*#__PURE__*/ _jsx("span", {
|
|
7
|
+
className: styles.action,
|
|
8
|
+
children: /*#__PURE__*/ _jsx("span", {
|
|
9
|
+
children: props.value ? /*#__PURE__*/ _jsx(Moon, {
|
|
10
|
+
onClick: ()=>{
|
|
11
|
+
props.onChange(false);
|
|
12
|
+
}
|
|
13
|
+
}) : /*#__PURE__*/ _jsx(Sun, {
|
|
14
|
+
onClick: ()=>{
|
|
15
|
+
props.onChange(true);
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
})
|
|
19
|
+
});
|
|
18
20
|
};
|
|
19
21
|
export default ThemeSwitch;
|
|
20
22
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\theme-switch\\index.tsx"],"sourcesContent":["import React from 'react';\r\nimport {
|
|
1
|
+
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\theme-switch\\index.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Moon, Sun } from '../icons';\r\nimport styles from './index.module.css';\r\n\r\nexport interface ThemeSwitchLocale {\r\n bright: string;\r\n dark: string;\r\n}\r\n\r\nexport interface ThemeSwitchProps {\r\n /**\r\n * 值\r\n */\r\n value: boolean;\r\n /**\r\n * 值变更事件 (value: boolean) => void;\r\n */\r\n onChange: (value: boolean) => void;\r\n}\r\n\r\nconst ThemeSwitch: React.FC<ThemeSwitchProps> = (props: ThemeSwitchProps) => {\r\n return <span className={styles.action}>\r\n <span>{\r\n props.value ? <Moon onClick={() => {\r\n props.onChange(false)\r\n\r\n }} /> : <Sun onClick={() => {\r\n props.onChange(true)\r\n\r\n }} />}\r\n </span>\r\n </span>\r\n};\r\n\r\nexport default ThemeSwitch;\r\n"],"names":["React","Moon","Sun","styles","ThemeSwitch","props","span","className","action","value","onClick","onChange"],"mappings":";AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,IAAI,EAAEC,GAAG,QAAQ,iBAAW;AACrC,OAAOC,YAAY,qBAAqB;AAkBxC,MAAMC,cAA0C,CAACC,QAA4B;IAC3E,qBAAO,KAACC;QAAKC,WAAWJ,OAAOK,MAAM;kBACnC,cAAA,KAACF;sBACCD,MAAMI,KAAK,iBAAG,KAACR;gBAAKS,SAAS,IAAM;oBACjCL,MAAMM,QAAQ,CAAC,KAAK;gBAEtB;+BAAQ,KAACT;gBAAIQ,SAAS,IAAM;oBAC1BL,MAAMM,QAAQ,CAAC,IAAI;gBAErB;cAAK;;;AAGX;AAEA,eAAeP,YAAY"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import _async_to_generator from "@swc/helpers/src/_async_to_generator.mjs";
|
|
2
|
+
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
|
|
3
|
+
import _to_consumable_array from "@swc/helpers/src/_to_consumable_array.mjs";
|
|
4
|
+
import _ts_generator from "@swc/helpers/src/_ts_generator.mjs";
|
|
5
|
+
import { getDictItems } from "@knockout-js/api";
|
|
6
|
+
import { useEffect, useState } from "react";
|
|
7
|
+
var distItemList = [], timeoutFn = undefined;
|
|
8
|
+
var collectCode = [];
|
|
9
|
+
/**
|
|
10
|
+
* 用来处理缓存字典项列表
|
|
11
|
+
* @returns
|
|
12
|
+
*/ export var useDistItems = function(dictCode, dataSource) {
|
|
13
|
+
var _useState = _sliced_to_array(useState([]), 2), items = _useState[0], setItems = _useState[1];
|
|
14
|
+
/**
|
|
15
|
+
* 通过列表设置存储
|
|
16
|
+
* @param list
|
|
17
|
+
*/ var setDistItems = function(list) {
|
|
18
|
+
var _newDistItems;
|
|
19
|
+
var dictCodes = _to_consumable_array(new Set(list.map(function(item) {
|
|
20
|
+
var _item_dict;
|
|
21
|
+
return (_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code;
|
|
22
|
+
})));
|
|
23
|
+
// 清理掉旧数据
|
|
24
|
+
var newDistItems = distItemList.filter(function(item) {
|
|
25
|
+
var _item_dict;
|
|
26
|
+
return !dictCodes.includes((_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code);
|
|
27
|
+
});
|
|
28
|
+
(_newDistItems = newDistItems).push.apply(_newDistItems, _to_consumable_array(list));
|
|
29
|
+
distItemList = newDistItems;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* 刷新列表接口
|
|
33
|
+
*/ var reloadDistItems = function() {
|
|
34
|
+
var _ref = _async_to_generator(function() {
|
|
35
|
+
var result;
|
|
36
|
+
return _ts_generator(this, function(_state) {
|
|
37
|
+
switch(_state.label){
|
|
38
|
+
case 0:
|
|
39
|
+
return [
|
|
40
|
+
4,
|
|
41
|
+
getDictItems(dictCode, true)
|
|
42
|
+
];
|
|
43
|
+
case 1:
|
|
44
|
+
result = _state.sent();
|
|
45
|
+
if (result.length) setDistItems(result);
|
|
46
|
+
return [
|
|
47
|
+
2
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
return function reloadDistItems() {
|
|
53
|
+
return _ref.apply(this, arguments);
|
|
54
|
+
};
|
|
55
|
+
}();
|
|
56
|
+
useEffect(function() {
|
|
57
|
+
if (dataSource === null || dataSource === void 0 ? void 0 : dataSource.length) setDistItems(dataSource);
|
|
58
|
+
else {
|
|
59
|
+
if (!collectCode.includes(dictCode)) collectCode.push(dictCode);
|
|
60
|
+
clearTimeout(timeoutFn);
|
|
61
|
+
// 设置收集时间毫秒内收集需要请求的数据
|
|
62
|
+
timeoutFn = setTimeout(function() {
|
|
63
|
+
getDictItems(collectCode).then(function(result) {
|
|
64
|
+
if (result.length) setDistItems(result);
|
|
65
|
+
});
|
|
66
|
+
}, 100);
|
|
67
|
+
}
|
|
68
|
+
}, [
|
|
69
|
+
dictCode,
|
|
70
|
+
dataSource
|
|
71
|
+
]);
|
|
72
|
+
useEffect(function() {
|
|
73
|
+
setItems(distItemList.filter(function(item) {
|
|
74
|
+
var _item_dict;
|
|
75
|
+
return ((_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code) === dictCode;
|
|
76
|
+
}));
|
|
77
|
+
}, [
|
|
78
|
+
distItemList
|
|
79
|
+
]);
|
|
80
|
+
return [
|
|
81
|
+
items,
|
|
82
|
+
reloadDistItems
|
|
83
|
+
];
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=D:\codeing\git\github\knockout-js\packages\layout\esm\components\dictionary\index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\index.ts"],"sourcesContent":["import { getDictItems } from \"@knockout-js/api\";\r\nimport { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nlet distItemList: AppDictItem[] = [],\r\n timeoutFn: NodeJS.Timeout | undefined = undefined;\r\nconst collectCode: string[] = [];\r\n\r\n/**\r\n * 用来处理缓存字典项列表\r\n * @returns\r\n */\r\nexport const useDistItems = (dictCode: string, dataSource?: AppDictItem[]): [AppDictItem[], () => Promise<void>] => {\r\n\r\n const [items, setItems] = useState<AppDictItem[]>([]);\r\n\r\n /**\r\n * 通过列表设置存储\r\n * @param list\r\n */\r\n const setDistItems = (list: AppDictItem[]) => {\r\n const dictCodes = [...new Set(list.map(item => item.dict?.code))];\r\n // 清理掉旧数据\r\n const newDistItems = distItemList.filter(item => !dictCodes.includes(item.dict?.code));\r\n newDistItems.push(...list);\r\n distItemList = newDistItems;\r\n }\r\n\r\n /**\r\n * 刷新列表接口\r\n */\r\n const reloadDistItems = async () => {\r\n const result = await getDictItems(dictCode, true);\r\n if (result.length) {\r\n setDistItems(result);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (dataSource?.length) {\r\n setDistItems(dataSource);\r\n } else {\r\n if (!collectCode.includes(dictCode)) {\r\n collectCode.push(dictCode);\r\n }\r\n clearTimeout(timeoutFn)\r\n // 设置收集时间毫秒内收集需要请求的数据\r\n timeoutFn = setTimeout(() => {\r\n getDictItems(collectCode).then(result => {\r\n if (result.length) {\r\n setDistItems(result);\r\n }\r\n });\r\n }, 100);\r\n }\r\n }, [dictCode, dataSource]);\r\n\r\n useEffect(() => {\r\n setItems(distItemList.filter(item => item.dict?.code === dictCode))\r\n }, [distItemList])\r\n\r\n\r\n return [items, reloadDistItems];\r\n}\r\n"],"names":["getDictItems","useEffect","useState","distItemList","timeoutFn","undefined","collectCode","useDistItems","dictCode","dataSource","items","setItems","setDistItems","list","newDistItems","dictCodes","Set","map","item","dict","code","filter","includes","push","reloadDistItems","result","length","clearTimeout","setTimeout","then"],"mappings":";;;;AAAA,SAASA,YAAY,QAAQ,mBAAmB;AAEhD,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAE5C,IAAIC,eAA8B,EAAE,EAClCC,YAAwCC;AAC1C,IAAMC,cAAwB,EAAE;AAEhC;;;CAGC,GACD,OAAO,IAAMC,eAAe,SAACC,UAAkBC,YAAqE;IAElH,IAA0BP,6BAAAA,SAAwB,EAAE,OAA7CQ,QAAmBR,cAAZS,WAAYT;IAE1B;;;GAGC,GACD,IAAMU,eAAe,SAACC,MAAwB;YAI5CC;QAHA,IAAMC,YAAa,qBAAG,IAAIC,IAAIH,KAAKI,GAAG,CAACC,SAAAA;gBAAQA;YAAAA,OAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI;;QAC9D,SAAS;QACT,IAAMN,eAAeX,aAAakB,MAAM,CAACH,SAAAA;gBAA4BA;YAApB,OAAA,CAACH,UAAUO,QAAQ,CAACJ,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI;;QACpFN,CAAAA,gBAAAA,cAAaS,IAAI,CAAjBT,MAAAA,eAAkB,qBAAGD;QACrBV,eAAeW;IACjB;IAEA;;GAEC,GACD,IAAMU;mBAAkB,oBAAA,WAAY;gBAC5BC;;;;wBAAS;;4BAAMzB,aAAaQ,UAAU,IAAI;;;wBAA1CiB,SAAS;wBACf,IAAIA,OAAOC,MAAM,EACfd,aAAaa;;;;;;QAEjB;wBALMD;;;;IAONvB,UAAU,WAAM;QACd,IAAIQ,uBAAAA,wBAAAA,KAAAA,IAAAA,WAAYiB,MAAM,EACpBd,aAAaH;aACR;YACL,IAAI,CAACH,YAAYgB,QAAQ,CAACd,WACxBF,YAAYiB,IAAI,CAACf;YAEnBmB,aAAavB;YACb,qBAAqB;YACrBA,YAAYwB,WAAW,WAAM;gBAC3B5B,aAAaM,aAAauB,IAAI,CAACJ,SAAAA,QAAU;oBACvC,IAAIA,OAAOC,MAAM,EACfd,aAAaa;gBAEjB;YACF,GAAG;QACL,CAAC;IACH,GAAG;QAACjB;QAAUC;KAAW;IAEzBR,UAAU,WAAM;QACdU,SAASR,aAAakB,MAAM,CAACH,SAAAA;gBAAQA;YAAAA,OAAAA,CAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI,AAAD,MAAMZ;;IAC3D,GAAG;QAACL;KAAa;IAGjB,OAAO;QAACO;QAAOc;KAAgB;AACjC,EAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { AppDictItem } from "@knockout-js/api/ucenter";
|
|
3
|
+
import { SelectProps } from "antd";
|
|
4
|
+
export interface DictionarySelectProps extends SelectProps {
|
|
5
|
+
/**
|
|
6
|
+
* 字典code
|
|
7
|
+
*/
|
|
8
|
+
dictCode: string;
|
|
9
|
+
/**
|
|
10
|
+
* 外部提供数据源
|
|
11
|
+
*/
|
|
12
|
+
dataSource?: AppDictItem[];
|
|
13
|
+
/**
|
|
14
|
+
* changeValue=id: onChange的第一个参数值就为code
|
|
15
|
+
*/
|
|
16
|
+
changeValue?: "id" | "code";
|
|
17
|
+
}
|
|
18
|
+
declare const _default: (props: DictionarySelectProps) => JSX.Element;
|
|
19
|
+
export default _default;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import _async_to_generator from "@swc/helpers/src/_async_to_generator.mjs";
|
|
2
|
+
import _object_spread from "@swc/helpers/src/_object_spread.mjs";
|
|
3
|
+
import _object_spread_props from "@swc/helpers/src/_object_spread_props.mjs";
|
|
4
|
+
import _object_without_properties from "@swc/helpers/src/_object_without_properties.mjs";
|
|
5
|
+
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
|
|
6
|
+
import _ts_generator from "@swc/helpers/src/_ts_generator.mjs";
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@ice/jsx-runtime/jsx-runtime";
|
|
8
|
+
import { ReloadOutlined } from "@ant-design/icons";
|
|
9
|
+
import { Select } from "antd";
|
|
10
|
+
import { useEffect, useState } from "react";
|
|
11
|
+
import styles from "./index.module.css";
|
|
12
|
+
import { useDistItems } from "./index";
|
|
13
|
+
export default function(props) {
|
|
14
|
+
var dictCode = props.dictCode, dataSource = props.dataSource, changeValue = props.changeValue, restProps = _object_without_properties(props, [
|
|
15
|
+
"dictCode",
|
|
16
|
+
"dataSource",
|
|
17
|
+
"changeValue"
|
|
18
|
+
]), _useDistItems = _sliced_to_array(useDistItems(dictCode, dataSource), 2), items = _useDistItems[0], itemsReload = _useDistItems[1], _useState = _sliced_to_array(useState(false), 2), loading = _useState[0], setLoading = _useState[1], _useState1 = _sliced_to_array(useState([]), 2), options = _useState1[0], setOptions = _useState1[1];
|
|
19
|
+
useEffect(function() {
|
|
20
|
+
setOptions(items.map(function(item) {
|
|
21
|
+
return {
|
|
22
|
+
label: item.name,
|
|
23
|
+
value: item[changeValue !== null && changeValue !== void 0 ? changeValue : "code"],
|
|
24
|
+
data: item
|
|
25
|
+
};
|
|
26
|
+
}));
|
|
27
|
+
}, [
|
|
28
|
+
items
|
|
29
|
+
]);
|
|
30
|
+
return /*#__PURE__*/ _jsx(Select, _object_spread_props(_object_spread({
|
|
31
|
+
style: {
|
|
32
|
+
width: "100%"
|
|
33
|
+
}
|
|
34
|
+
}, restProps), {
|
|
35
|
+
loading: loading,
|
|
36
|
+
options: options,
|
|
37
|
+
dropdownRender: function(menu) {
|
|
38
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
39
|
+
children: [
|
|
40
|
+
menu,
|
|
41
|
+
/*#__PURE__*/ _jsx("div", {
|
|
42
|
+
className: styles.selectActions,
|
|
43
|
+
children: /*#__PURE__*/ _jsx(ReloadOutlined, {
|
|
44
|
+
rev: undefined,
|
|
45
|
+
onClick: /*#__PURE__*/ _async_to_generator(function() {
|
|
46
|
+
return _ts_generator(this, function(_state) {
|
|
47
|
+
switch(_state.label){
|
|
48
|
+
case 0:
|
|
49
|
+
setLoading(true);
|
|
50
|
+
return [
|
|
51
|
+
4,
|
|
52
|
+
itemsReload()
|
|
53
|
+
];
|
|
54
|
+
case 1:
|
|
55
|
+
_state.sent();
|
|
56
|
+
setLoading(false);
|
|
57
|
+
return [
|
|
58
|
+
2
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
})
|
|
63
|
+
})
|
|
64
|
+
})
|
|
65
|
+
]
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}));
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=D:\codeing\git\github\knockout-js\packages\layout\esm\components\dictionary\select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\select.tsx"],"sourcesContent":["import { ReloadOutlined } from \"@ant-design/icons\";\r\nimport { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { Select, SelectProps } from \"antd\";\r\nimport { useEffect, useState } from \"react\";\r\nimport styles from \"./index.module.css\";\r\nimport { useDistItems } from \".\";\r\n\r\nexport interface DictionarySelectProps extends SelectProps {\r\n /**\r\n * 字典code\r\n */\r\n dictCode: string;\r\n /**\r\n * 外部提供数据源\r\n */\r\n dataSource?: AppDictItem[];\r\n /**\r\n * changeValue=id: onChange的第一个参数值就为code\r\n */\r\n changeValue?: \"id\" | \"code\";\r\n}\r\n\r\ntype DictionarySelectOption = {\r\n label: string;\r\n value: string;\r\n data: AppDictItem;\r\n}\r\n\r\nexport default (props: DictionarySelectProps) => {\r\n const { dictCode, dataSource, changeValue, ...restProps } = props,\r\n [items, itemsReload] = useDistItems(dictCode, dataSource),\r\n [loading, setLoading] = useState(false),\r\n [options, setOptions] = useState<DictionarySelectOption[]>([]);\r\n\r\n useEffect(() => {\r\n setOptions(items\r\n .map(item => ({\r\n label: item.name,\r\n value: item[changeValue ?? 'code'],\r\n data: item,\r\n }))\r\n );\r\n }, [items])\r\n\r\n return <Select\r\n style={{ width: '100%' }}\r\n {...restProps}\r\n loading={loading}\r\n options={options}\r\n dropdownRender={(menu) => <>\r\n {menu}\r\n <div className={styles.selectActions}>\r\n <ReloadOutlined rev={undefined} onClick={async () => {\r\n setLoading(true);\r\n await itemsReload();\r\n setLoading(false);\r\n }} />\r\n </div>\r\n </>\r\n }\r\n />\r\n}\r\n"],"names":["ReloadOutlined","Select","useEffect","useState","styles","useDistItems","props","dictCode","dataSource","changeValue","restProps","items","itemsReload","loading","setLoading","options","setOptions","map","item","label","name","value","data","style","width","dropdownRender","menu","div","className","selectActions","rev","undefined","onClick"],"mappings":";;;;;;;AAAA,SAASA,cAAc,QAAQ,oBAAoB;AAEnD,SAASC,MAAM,QAAqB,OAAO;AAC3C,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAC5C,OAAOC,YAAY,qBAAqB;AACxC,SAASC,YAAY,QAAQ,UAAI;AAuBjC,eAAe,SAACC,OAAiC;IAC/C,IAAQC,WAAoDD,MAApDC,UAAUC,aAA0CF,MAA1CE,YAAYC,cAA8BH,MAA9BG,aAAgBC,uCAAcJ;QAApDC;QAAUC;QAAYC;QACLJ,iCAAAA,aAAaE,UAAUC,iBAA7CG,QAAsBN,kBAAfO,cAAeP,kBACCF,6BAAAA,SAAS,KAAK,OAArCU,UAAuBV,cAAdW,aAAcX,cACAA,8BAAAA,SAAmC,EAAE,OAA5DY,UAAuBZ,eAAda,aAAcb;IAE1BD,UAAU,WAAM;QACdc,WAAWL,MACRM,GAAG,CAACC,SAAAA;mBAAS;gBACZC,OAAOD,KAAKE,IAAI;gBAChBC,OAAOH,IAAI,CAACT,wBAAAA,yBAAAA,cAAe,MAAM,CAAC;gBAClCa,MAAMJ;YACR;;IAEJ,GAAG;QAACP;KAAM;IAEV,qBAAO,KAACV;QACNsB,OAAO;YAAEC,OAAO;QAAO;OACnBd;QACJG,SAASA;QACTE,SAASA;QACTU,gBAAgB,SAACC;iCAAS;;oBACvBA;kCACD,KAACC;wBAAIC,WAAWxB,OAAOyB,aAAa;kCAClC,cAAA,KAAC7B;4BAAe8B,KAAKC;4BAAWC,uBAAS,oBAAA,WAAY;;;;4CACnDlB,WAAW,IAAI;4CACf;;gDAAMF;;;4CAAN;4CACAE,WAAW,KAAK;;;;;;4BAClB;;;;;;;AAKR,EAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { AppDictItem } from "@knockout-js/api/ucenter";
|
|
3
|
+
import { TextProps } from "antd/es/typography/Text";
|
|
4
|
+
export interface DictionaryTextProps extends TextProps {
|
|
5
|
+
/**
|
|
6
|
+
* 值
|
|
7
|
+
*/
|
|
8
|
+
value?: string;
|
|
9
|
+
/**
|
|
10
|
+
* 字典code
|
|
11
|
+
*/
|
|
12
|
+
dictCode: string;
|
|
13
|
+
/**
|
|
14
|
+
* 外部提供数据源
|
|
15
|
+
*/
|
|
16
|
+
dataSource?: AppDictItem[];
|
|
17
|
+
/**
|
|
18
|
+
* 默认使用code来匹配value
|
|
19
|
+
*/
|
|
20
|
+
valueKey?: "id" | "code";
|
|
21
|
+
}
|
|
22
|
+
declare const _default: (props: DictionaryTextProps) => JSX.Element;
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import _object_spread from "@swc/helpers/src/_object_spread.mjs";
|
|
2
|
+
import _object_spread_props from "@swc/helpers/src/_object_spread_props.mjs";
|
|
3
|
+
import _object_without_properties from "@swc/helpers/src/_object_without_properties.mjs";
|
|
4
|
+
import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
|
|
5
|
+
import { jsx as _jsx } from "@ice/jsx-runtime/jsx-runtime";
|
|
6
|
+
import { Typography } from "antd";
|
|
7
|
+
import { useEffect, useState } from "react";
|
|
8
|
+
import { useDistItems } from "./index";
|
|
9
|
+
export default function(props) {
|
|
10
|
+
var value = props.value, dataSource = props.dataSource, dictCode = props.dictCode, valueKey = props.valueKey, restProps = _object_without_properties(props, [
|
|
11
|
+
"value",
|
|
12
|
+
"dataSource",
|
|
13
|
+
"dictCode",
|
|
14
|
+
"valueKey"
|
|
15
|
+
]), _useDistItems = _sliced_to_array(useDistItems(dictCode, dataSource), 1), items = _useDistItems[0], _useState = _sliced_to_array(useState(), 2), dictItem = _useState[0], setDictItem = _useState[1];
|
|
16
|
+
useEffect(function() {
|
|
17
|
+
setDictItem(items.find(function(item) {
|
|
18
|
+
return item[valueKey !== null && valueKey !== void 0 ? valueKey : "code"] === value;
|
|
19
|
+
}));
|
|
20
|
+
}, [
|
|
21
|
+
value,
|
|
22
|
+
valueKey,
|
|
23
|
+
items
|
|
24
|
+
]);
|
|
25
|
+
var _dictItem_name, _ref;
|
|
26
|
+
return /*#__PURE__*/ _jsx(Typography.Text, _object_spread_props(_object_spread({}, restProps), {
|
|
27
|
+
children: (_ref = (_dictItem_name = dictItem === null || dictItem === void 0 ? void 0 : dictItem.name) !== null && _dictItem_name !== void 0 ? _dictItem_name : props.value) !== null && _ref !== void 0 ? _ref : ""
|
|
28
|
+
}));
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=D:\codeing\git\github\knockout-js\packages\layout\esm\components\dictionary\text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\text.tsx"],"sourcesContent":["import { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { Typography } from \"antd\"\r\nimport { TextProps } from \"antd/es/typography/Text\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useDistItems } from \".\";\r\n\r\nexport interface DictionaryTextProps extends TextProps {\r\n /**\r\n * 值\r\n */\r\n value?: string;\r\n /**\r\n * 字典code\r\n */\r\n dictCode: string;\r\n /**\r\n * 外部提供数据源\r\n */\r\n dataSource?: AppDictItem[];\r\n /**\r\n * 默认使用code来匹配value\r\n */\r\n valueKey?: \"id\" | \"code\";\r\n}\r\n\r\n\r\nexport default (props: DictionaryTextProps) => {\r\n const { value, dataSource, dictCode, valueKey, ...restProps } = props,\r\n [items] = useDistItems(dictCode, dataSource),\r\n [dictItem, setDictItem] = useState<AppDictItem>();\r\n\r\n\r\n useEffect(() => {\r\n setDictItem(items.find(item => item[valueKey ?? 'code'] === value));\r\n }, [value, valueKey, items]);\r\n\r\n return <Typography.Text {...restProps}>\r\n {dictItem?.name ?? props.value ?? ''}\r\n </Typography.Text>\r\n}\r\n"],"names":["Typography","useEffect","useState","useDistItems","props","value","dataSource","dictCode","valueKey","restProps","items","dictItem","setDictItem","find","item","Text","name"],"mappings":";;;;;AACA,SAASA,UAAU,QAAQ,OAAM;AAEjC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAC5C,SAASC,YAAY,QAAQ,UAAI;AAsBjC,eAAe,SAACC,OAA+B;IAC7C,IAAQC,QAAwDD,MAAxDC,OAAOC,aAAiDF,MAAjDE,YAAYC,WAAqCH,MAArCG,UAAUC,WAA2BJ,MAA3BI,UAAaC,uCAAcL;QAAxDC;QAAOC;QAAYC;QAAUC;QACzBL,iCAAAA,aAAaI,UAAUD,iBAAhCI,QAASP,kBACgBD,6BAAAA,gBAAzBS,WAAyBT,cAAfU,cAAeV;IAG5BD,UAAU,WAAM;QACdW,YAAYF,MAAMG,IAAI,CAACC,SAAAA;mBAAQA,IAAI,CAACN,qBAAAA,sBAAAA,WAAY,MAAM,CAAC,KAAKH;;IAC9D,GAAG;QAACA;QAAOG;QAAUE;KAAM;QAGxBC,gBAAAA;IADH,qBAAO,KAACX,WAAWe,IAAI,0CAAKN;kBACzBE,CAAAA,OAAAA,CAAAA,iBAAAA,qBAAAA,sBAAAA,KAAAA,IAAAA,SAAUK,IAAI,cAAdL,4BAAAA,iBAAkBP,MAAMC,KAAK,cAA7BM,kBAAAA,OAAiC,EAAE;;AAExC,EAAC"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { SVGProps } from "react";
|
|
2
2
|
export declare const OpenWin: (props: JSX.IntrinsicAttributes & SVGProps<SVGSVGElement>) => JSX.Element;
|
|
3
|
+
export declare const Sun: (props: JSX.IntrinsicAttributes & SVGProps<SVGSVGElement>) => JSX.Element;
|
|
4
|
+
export declare const Moon: (props: JSX.IntrinsicAttributes & SVGProps<SVGSVGElement>) => JSX.Element;
|
|
@@ -15,5 +15,29 @@ export var OpenWin = function(props) {
|
|
|
15
15
|
})
|
|
16
16
|
}));
|
|
17
17
|
};
|
|
18
|
+
export var Sun = function(props) {
|
|
19
|
+
return /*#__PURE__*/ _jsx("svg", _object_spread_props(_object_spread({
|
|
20
|
+
fill: "currentColor",
|
|
21
|
+
viewBox: "0 0 24 24",
|
|
22
|
+
width: "24",
|
|
23
|
+
height: "24"
|
|
24
|
+
}, props), {
|
|
25
|
+
children: /*#__PURE__*/ _jsx("path", {
|
|
26
|
+
d: "M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"
|
|
27
|
+
})
|
|
28
|
+
}));
|
|
29
|
+
};
|
|
30
|
+
export var Moon = function(props) {
|
|
31
|
+
return /*#__PURE__*/ _jsx("svg", _object_spread_props(_object_spread({
|
|
32
|
+
viewBox: "0 0 24 24",
|
|
33
|
+
width: "28",
|
|
34
|
+
height: "28",
|
|
35
|
+
fill: "currentColor"
|
|
36
|
+
}, props), {
|
|
37
|
+
children: /*#__PURE__*/ _jsx("path", {
|
|
38
|
+
d: "M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"
|
|
39
|
+
})
|
|
40
|
+
}));
|
|
41
|
+
};
|
|
18
42
|
|
|
19
43
|
//# sourceMappingURL=D:\codeing\git\github\knockout-js\packages\layout\esm\components\icons\index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\icons\\index.tsx"],"sourcesContent":["import { SVGProps } from \"react\"\r\n\r\nexport const OpenWin = (props: JSX.IntrinsicAttributes & SVGProps<SVGSVGElement>) => {\r\n return <svg\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 1024 1024\"\r\n p-id=\"19410\"\r\n width=\"12\"\r\n height=\"12\"\r\n {...props}\r\n >\r\n <path d=\"M398.506667 960H160q-39.765333 0-67.882667-28.117333-28.117333-28.117333-28.117333-67.882667V160q0-39.765333 28.117333-67.882667Q120.234667 64 160 64h704q39.765333 0 67.882667 28.117333 28.117333 28.117333 28.117333 67.882667v149.333333a32 32 0 0 1-32 32H128v522.666667q0 13.226667 9.386667 22.613333 9.386667 9.386667 22.613333 9.386667h238.506667a32 32 0 0 1 0 64zM128 160V277.333333h768V160q0-13.226667-9.386667-22.613333-9.386667-9.386667-22.613333-9.386667H160q-13.226667 0-22.613333 9.386667-9.386667 9.386667-9.386667 22.613333z m800.512 341.333333H672a32 32 0 0 0 0 64h178.773333l-340.053333 340.053334a32 32 0 0 0 45.226667 45.226666L896 610.602667v178.773333a32 32 0 0 0 64 0v-255.573333a31.914667 31.914667 0 0 0-31.488-32.426667z\" p-id=\"19411\"></path>\r\n </svg>\r\n}\r\n"],"names":["OpenWin","props","svg","fill","viewBox","p-id","width","height","path","d"],"mappings":";;;AAEA,OAAO,IAAMA,UAAU,SAACC,OAA6D;IACnF,qBAAO,KAACC;QACNC,MAAK;QACLC,SAAQ;QACRC,QAAK;QACLC,OAAM;QACNC,QAAO;OACHN;kBAEJ,cAAA,KAACO;YAAKC,GAAE;YAAwuBJ,QAAK;;;AAEzvB,EAAC"}
|
|
1
|
+
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\icons\\index.tsx"],"sourcesContent":["import { SVGProps } from \"react\"\r\n\r\nexport const OpenWin = (props: JSX.IntrinsicAttributes & SVGProps<SVGSVGElement>) => {\r\n return <svg\r\n fill=\"currentColor\"\r\n viewBox=\"0 0 1024 1024\"\r\n p-id=\"19410\"\r\n width=\"12\"\r\n height=\"12\"\r\n {...props}\r\n >\r\n <path d=\"M398.506667 960H160q-39.765333 0-67.882667-28.117333-28.117333-28.117333-28.117333-67.882667V160q0-39.765333 28.117333-67.882667Q120.234667 64 160 64h704q39.765333 0 67.882667 28.117333 28.117333 28.117333 28.117333 67.882667v149.333333a32 32 0 0 1-32 32H128v522.666667q0 13.226667 9.386667 22.613333 9.386667 9.386667 22.613333 9.386667h238.506667a32 32 0 0 1 0 64zM128 160V277.333333h768V160q0-13.226667-9.386667-22.613333-9.386667-9.386667-22.613333-9.386667H160q-13.226667 0-22.613333 9.386667-9.386667 9.386667-9.386667 22.613333z m800.512 341.333333H672a32 32 0 0 0 0 64h178.773333l-340.053333 340.053334a32 32 0 0 0 45.226667 45.226666L896 610.602667v178.773333a32 32 0 0 0 64 0v-255.573333a31.914667 31.914667 0 0 0-31.488-32.426667z\" p-id=\"19411\"></path>\r\n </svg>\r\n}\r\n\r\nexport const Sun = (props: JSX.IntrinsicAttributes & SVGProps<SVGSVGElement>) => <svg fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" {...props}>\r\n <path d=\"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z\"></path>\r\n</svg>\r\n\r\nexport const Moon = (props: JSX.IntrinsicAttributes & SVGProps<SVGSVGElement>) => <svg viewBox=\"0 0 24 24\" width=\"28\" height=\"28\" fill=\"currentColor\" {...props}>\r\n <path d=\"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z\"></path>\r\n</svg>\r\n"],"names":["OpenWin","props","svg","fill","viewBox","p-id","width","height","path","d","Sun","Moon"],"mappings":";;;AAEA,OAAO,IAAMA,UAAU,SAACC,OAA6D;IACnF,qBAAO,KAACC;QACNC,MAAK;QACLC,SAAQ;QACRC,QAAK;QACLC,OAAM;QACNC,QAAO;OACHN;kBAEJ,cAAA,KAACO;YAAKC,GAAE;YAAwuBJ,QAAK;;;AAEzvB,EAAC;AAED,OAAO,IAAMK,MAAM,SAACT;yBAA6D,KAACC;QAAIC,MAAK;QAAeC,SAAQ;QAAYE,OAAM;QAAKC,QAAO;OAAUN;kBACxJ,cAAA,KAACO;YAAKC,GAAE;;;EACJ;AAEN,OAAO,IAAME,OAAO,SAACV;yBAA6D,KAACC;QAAIE,SAAQ;QAAYE,OAAM;QAAKC,QAAO;QAAKJ,MAAK;OAAmBF;kBACxJ,cAAA,KAACO;YAAKC,GAAE;;;EACJ"}
|
|
@@ -2,6 +2,8 @@ export { default as Provider, Context, type ProviderProps, } from './provider';
|
|
|
2
2
|
export { default as ThemeSwitch } from './theme-switch';
|
|
3
3
|
export { default as AvatarDropdown } from './avatar-dropdown';
|
|
4
4
|
export { default as KeepAlive } from './keep-alive';
|
|
5
|
+
export { default as DictText } from './dictionary/text';
|
|
6
|
+
export { default as DictSelect } from './dictionary/select';
|
|
5
7
|
export { default as TenantDropdown } from './tenant-dropdown';
|
|
6
8
|
export { default as MsgDropdown } from './msg-dropdown';
|
|
7
9
|
export { default as LeavePrompt, useLeavePrompt } from './leave-prompt';
|
package/esm/components/index.js
CHANGED
|
@@ -2,6 +2,8 @@ export { default as Provider, Context } from "./provider/index";
|
|
|
2
2
|
export { default as ThemeSwitch } from "./theme-switch/index";
|
|
3
3
|
export { default as AvatarDropdown } from "./avatar-dropdown/index";
|
|
4
4
|
export { default as KeepAlive } from "./keep-alive/index";
|
|
5
|
+
export { default as DictText } from "./dictionary/text";
|
|
6
|
+
export { default as DictSelect } from "./dictionary/select";
|
|
5
7
|
export { default as TenantDropdown } from "./tenant-dropdown/index";
|
|
6
8
|
export { default as MsgDropdown } from "./msg-dropdown/index";
|
|
7
9
|
export { default as LeavePrompt, useLeavePrompt } from "./leave-prompt/index";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\index.ts"],"sourcesContent":["export { default as Provider, Context, type ProviderProps, } from './provider';\r\nexport { default as ThemeSwitch } from './theme-switch';\r\nexport { default as AvatarDropdown } from './avatar-dropdown';\r\nexport { default as KeepAlive } from './keep-alive';\r\nexport { default as TenantDropdown } from './tenant-dropdown';\r\nexport { default as MsgDropdown } from './msg-dropdown';\r\nexport { default as LeavePrompt, useLeavePrompt } from './leave-prompt';\r\nexport { default as I18nDropdown } from './i18n-dropdown';\r\nexport { default as CollectProviders } from './collect-providers';\r\nexport { LocaleType } from './provider';\r\nexport { default as Layout } from './layout';\r\nexport { default as Modal, type ModalProps } from './modal';\r\nexport { default as AggregateMenu, type AggregateMenuDataSource } from './aggregate-menu';\r\nexport { default as UploadAvatar } from './upload-file/uploadAvatar';\r\nexport { default as UploadMultiple } from './upload-file/uploadMultiple';\r\nexport { default as UploadTemp } from './upload-file/uploadTemp';\r\n\r\nexport * as util from './_util';\r\n"],"names":["default","Provider","Context","ThemeSwitch","AvatarDropdown","KeepAlive","TenantDropdown","MsgDropdown","LeavePrompt","useLeavePrompt","I18nDropdown","CollectProviders","LocaleType","Layout","Modal","AggregateMenu","UploadAvatar","UploadMultiple","UploadTemp","util"],"mappings":"AAAA,SAASA,WAAWC,QAAQ,EAAEC,OAAO,QAA6B,mBAAa;AAC/E,SAASF,WAAWG,WAAW,QAAQ,uBAAiB;AACxD,SAASH,WAAWI,cAAc,QAAQ,0BAAoB;AAC9D,SAASJ,WAAWK,SAAS,QAAQ,qBAAe;AACpD,SAASL,WAAWM,cAAc,QAAQ,0BAAoB;AAC9D,
|
|
1
|
+
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\index.ts"],"sourcesContent":["export { default as Provider, Context, type ProviderProps, } from './provider';\r\nexport { default as ThemeSwitch } from './theme-switch';\r\nexport { default as AvatarDropdown } from './avatar-dropdown';\r\nexport { default as KeepAlive } from './keep-alive';\r\nexport { default as DictText } from './dictionary/text';\r\nexport { default as DictSelect } from './dictionary/select';\r\nexport { default as TenantDropdown } from './tenant-dropdown';\r\nexport { default as MsgDropdown } from './msg-dropdown';\r\nexport { default as LeavePrompt, useLeavePrompt } from './leave-prompt';\r\nexport { default as I18nDropdown } from './i18n-dropdown';\r\nexport { default as CollectProviders } from './collect-providers';\r\nexport { LocaleType } from './provider';\r\nexport { default as Layout } from './layout';\r\nexport { default as Modal, type ModalProps } from './modal';\r\nexport { default as AggregateMenu, type AggregateMenuDataSource } from './aggregate-menu';\r\nexport { default as UploadAvatar } from './upload-file/uploadAvatar';\r\nexport { default as UploadMultiple } from './upload-file/uploadMultiple';\r\nexport { default as UploadTemp } from './upload-file/uploadTemp';\r\n\r\nexport * as util from './_util';\r\n"],"names":["default","Provider","Context","ThemeSwitch","AvatarDropdown","KeepAlive","DictText","DictSelect","TenantDropdown","MsgDropdown","LeavePrompt","useLeavePrompt","I18nDropdown","CollectProviders","LocaleType","Layout","Modal","AggregateMenu","UploadAvatar","UploadMultiple","UploadTemp","util"],"mappings":"AAAA,SAASA,WAAWC,QAAQ,EAAEC,OAAO,QAA6B,mBAAa;AAC/E,SAASF,WAAWG,WAAW,QAAQ,uBAAiB;AACxD,SAASH,WAAWI,cAAc,QAAQ,0BAAoB;AAC9D,SAASJ,WAAWK,SAAS,QAAQ,qBAAe;AACpD,SAASL,WAAWM,QAAQ,QAAQ,oBAAoB;AACxD,SAASN,WAAWO,UAAU,QAAQ,sBAAsB;AAC5D,SAASP,WAAWQ,cAAc,QAAQ,0BAAoB;AAC9D,SAASR,WAAWS,WAAW,QAAQ,uBAAiB;AACxD,SAAST,WAAWU,WAAW,EAAEC,cAAc,QAAQ,uBAAiB;AACxE,SAASX,WAAWY,YAAY,QAAQ,wBAAkB;AAC1D,SAASZ,WAAWa,gBAAgB,QAAQ,4BAAsB;AAClE,SAASC,UAAU,QAAQ,mBAAa;AACxC,SAASd,WAAWe,MAAM,QAAQ,iBAAW;AAC7C,SAASf,WAAWgB,KAAK,QAAyB,gBAAU;AAC5D,SAAShB,WAAWiB,aAAa,QAAsC,yBAAmB;AAC1F,SAASjB,WAAWkB,YAAY,QAAQ,6BAA6B;AACrE,SAASlB,WAAWmB,cAAc,QAAQ,+BAA+B;AACzE,SAASnB,WAAWoB,UAAU,QAAQ,2BAA2B;AAEjE,uBAAsB,gBAAU;AAAhC,SAAO,SAAKC,IAAI,GAAgB"}
|
|
@@ -10,6 +10,7 @@ import AvatarDropdown from "../avatar-dropdown/index";
|
|
|
10
10
|
import MsgDropdown from "../msg-dropdown/index";
|
|
11
11
|
import ThemeSwitch from "../theme-switch/index";
|
|
12
12
|
import styles from "./layout.module.css";
|
|
13
|
+
import { useRef, useImperativeHandle } from "react";
|
|
13
14
|
import { CollectProviders, LocaleType } from "../index";
|
|
14
15
|
import { gql, query } from "@knockout-js/ice-urql/request";
|
|
15
16
|
import { OpenWin } from "../icons/index";
|
|
@@ -21,6 +22,10 @@ import { instanceName } from "@knockout-js/api";
|
|
|
21
22
|
var userMenuListQuery = gql("query userMenuList($appCode:String!){\n userMenus(appCode: $appCode){\n id,parentID,kind,name,comments,displaySort,icon,route\n }\n}");
|
|
22
23
|
var Layout = function(props) {
|
|
23
24
|
var _props_themeSwitchProps;
|
|
25
|
+
var msgRef = useRef(null);
|
|
26
|
+
useImperativeHandle(props.msgRef, function() {
|
|
27
|
+
return msgRef.current;
|
|
28
|
+
});
|
|
24
29
|
var _props_locale, _props_themeSwitchProps_value;
|
|
25
30
|
return /*#__PURE__*/ _jsxs(CollectProviders, {
|
|
26
31
|
locale: (_props_locale = props.locale) !== null && _props_locale !== void 0 ? _props_locale : LocaleType.zhCN,
|
|
@@ -112,9 +117,9 @@ var Layout = function(props) {
|
|
|
112
117
|
actionsRender: function() {
|
|
113
118
|
var actions = [];
|
|
114
119
|
if (props.i18nProps) actions.push(/*#__PURE__*/ _jsx(I18nDropdown, _object_spread({}, props.i18nProps)));
|
|
115
|
-
if (props.msgProps) actions.push(/*#__PURE__*/ _jsx(MsgDropdown, _object_spread({
|
|
116
|
-
ref:
|
|
117
|
-
}
|
|
120
|
+
if (props.msgProps) actions.push(/*#__PURE__*/ _jsx(MsgDropdown, _object_spread_props(_object_spread({}, props.msgProps), {
|
|
121
|
+
ref: msgRef
|
|
122
|
+
})));
|
|
118
123
|
actions.push(/*#__PURE__*/ _jsx(TenantDropdown, _object_spread({}, props.tenantProps)));
|
|
119
124
|
actions.push(/*#__PURE__*/ _jsx(AvatarDropdown, _object_spread({}, props.avatarProps)));
|
|
120
125
|
if (props.themeSwitchProps) actions.push(/*#__PURE__*/ _jsx(ThemeSwitch, _object_spread({}, props.themeSwitchProps)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\layout\\index.tsx"],"sourcesContent":["import { MenuDataItem, ProLayout, ProLayoutProps } from '@ant-design/pro-layout';\r\nimport I18nDropdown, { I18nDropdownProps } from '../i18n-dropdown';\r\nimport TenantDropdown, { TenantDropdownProps } from '../tenant-dropdown';\r\nimport AvatarDropdown, { AvatarDropdownProps } from '../avatar-dropdown';\r\nimport MsgDropdown, { MsgDropdownProps, MsgDropdownRef } from '../msg-dropdown';\r\nimport ThemeSwitch, { ThemeSwitchProps } from '../theme-switch';\r\nimport styles from './layout.module.css';\r\nimport { ReactNode, FC, Ref } from 'react';\r\nimport { UserMenuListQuery, UserMenuListQueryVariables } from '@knockout-js/api/ucenter';\r\nimport { CollectProviders, LocaleType } from '..';\r\nimport { gql, query } from '@knockout-js/ice-urql/request';\r\nimport { OpenWin } from '../icons';\r\nimport { IconFontProps } from '@ant-design/icons/lib/components/IconFont';\r\nimport { logoBase64 } from './logo';\r\nimport AggregateMenu, { AggregateMenuProps } from '../aggregate-menu';\r\nimport { BarsOutlined } from '@ant-design/icons';\r\nimport { listFormatTreeData } from '../_util';\r\nimport { instanceName } from '@knockout-js/api';\r\n\r\nexport interface LayoutProps {\r\n /**\r\n * 应用code\r\n */\r\n appCode: string;\r\n /**\r\n * 语言\r\n * 默认 LocaleType.zhCN\r\n */\r\n locale?: LocaleType;\r\n /**\r\n * 传递动态的 location.pathname\r\n */\r\n pathname: string;\r\n /**\r\n * 菜单启用iconfont\r\n */\r\n IconFont?: FC<IconFontProps<string>>;\r\n /**\r\n * 聚合菜单\r\n */\r\n aggregateMenuProps?: AggregateMenuProps;\r\n /**\r\n * I18nDropdown组件对应的参数\r\n */\r\n i18nProps?: I18nDropdownProps;\r\n /**\r\n * TenantDropdown组件对应的参数\r\n */\r\n tenantProps: TenantDropdownProps;\r\n /**\r\n * AvatarDropdown组件对应的参数\r\n */\r\n avatarProps: AvatarDropdownProps;\r\n /**\r\n * MsgDropdown组件的高级方法\r\n */\r\n msgRef?: Ref<MsgDropdownRef>\r\n /**\r\n * MsgDropdown组件对应的参数\r\n */\r\n msgProps?: MsgDropdownProps;\r\n /**\r\n * ThemeSwitch组件对应的参数\r\n */\r\n themeSwitchProps?: ThemeSwitchProps;\r\n /**\r\n * ProLayout组件对应的参数\r\n */\r\n proLayoutProps?: ProLayoutProps;\r\n /**\r\n * 菜单点击返回 (item: MenuDataItem,isOpen?: boolean) => void;\r\n */\r\n onClickMenuItem?: (\r\n item: MenuDataItem & {\r\n isUrl: boolean;\r\n onClick: () => void;\r\n },\r\n isOpen?: boolean\r\n ) => void;\r\n /**\r\n * 默认插槽\r\n */\r\n children?: ReactNode;\r\n\r\n}\r\n\r\nconst userMenuListQuery = gql(/* GraphQL */`query userMenuList($appCode:String!){\r\n userMenus(appCode: $appCode){\r\n id,parentID,kind,name,comments,displaySort,icon,route\r\n }\r\n}`);\r\n\r\n\r\nconst Layout = (props: LayoutProps) => {\r\n\r\n return (\r\n <CollectProviders\r\n locale={props.locale ?? LocaleType.zhCN}\r\n appCode={props.appCode}\r\n tenantId={props.tenantProps.value}\r\n dark={props.themeSwitchProps?.value ?? false}\r\n pathname={props.pathname}\r\n >\r\n <ProLayout\r\n className={styles.layout}\r\n headerTitleRender={(logo, title) => {\r\n return <>\r\n {typeof props.aggregateMenuProps?.open === 'boolean' ? <BarsOutlined\r\n rev={undefined}\r\n style={{ fontSize: 20, marginRight: 10 }}\r\n onClick={() => {\r\n props.aggregateMenuProps?.onChangeOpen?.(true);\r\n }}\r\n /> : <></>}\r\n {logo}\r\n {title}\r\n </>\r\n }}\r\n title='adminx'\r\n logo={<img src={logoBase64} alt=\"logo\" />}\r\n layout=\"mix\"\r\n fixSiderbar\r\n suppressSiderWhenMenuEmpty\r\n menu={{\r\n locale: true,\r\n request: async () => {\r\n const result = await query<UserMenuListQuery, UserMenuListQueryVariables>(userMenuListQuery, {\r\n appCode: props.appCode\r\n }, { instanceName: instanceName.UCENTER });\r\n if (result.data?.userMenus.length) {\r\n const meunList = result.data.userMenus.sort((d1, d2) => {\r\n const d1Sort = d1.displaySort || 0, d2Sort = d2.displaySort || 0;\r\n return d1.parentID < d2.parentID ? -1 : d1.parentID > d2.parentID ? 1 : d1Sort < d2Sort ? -1 : d1Sort > d2Sort ? 1 : 0;\r\n }).map(item => {\r\n return {\r\n key: item.id,\r\n name: item.name,\r\n icon: item.icon ? props.IconFont ? <props.IconFont type={item.icon} /> : <i className={item.icon} /> : undefined,\r\n parentId: item.parentID,\r\n path: item.route,\r\n } as MenuDataItem\r\n })\r\n\r\n return listFormatTreeData(meunList);\r\n }\r\n return [];\r\n },\r\n }}\r\n location={{\r\n pathname: props.pathname\r\n }}\r\n actionsRender={() => {\r\n const actions: ReactNode[] = [];\r\n if (props.i18nProps) {\r\n actions.push(<I18nDropdown {...props.i18nProps} />)\r\n }\r\n if (props.msgProps) {\r\n actions.push(<MsgDropdown ref={props.msgRef} {...props.msgProps} />)\r\n }\r\n actions.push(<TenantDropdown {...props.tenantProps} />)\r\n actions.push(<AvatarDropdown {...props.avatarProps} />)\r\n if (props.themeSwitchProps) {\r\n actions.push(<ThemeSwitch {...props.themeSwitchProps} />)\r\n }\r\n return actions;\r\n }}\r\n menuItemRender={(item, defaultDom) => (item.path ? <>\r\n <a\r\n onClick={() => {\r\n props.onClickMenuItem?.(item, false)\r\n }}\r\n >{defaultDom}</a>\r\n <OpenWin\r\n className={styles.menuIconPopup}\r\n onClick={() => {\r\n props.onClickMenuItem?.(item, true)\r\n }}\r\n />\r\n </>\r\n : defaultDom)}\r\n {...props.proLayoutProps}\r\n >\r\n {props.children}\r\n </ProLayout>\r\n {\r\n props.aggregateMenuProps ? <AggregateMenu\r\n {...props.aggregateMenuProps}\r\n /> : <></>\r\n }\r\n </CollectProviders>\r\n )\r\n}\r\n\r\nexport default Layout\r\n"],"names":["ProLayout","I18nDropdown","TenantDropdown","AvatarDropdown","MsgDropdown","ThemeSwitch","styles","CollectProviders","LocaleType","gql","query","OpenWin","logoBase64","AggregateMenu","BarsOutlined","listFormatTreeData","instanceName","userMenuListQuery","Layout","props","locale","zhCN","appCode","tenantId","tenantProps","value","dark","themeSwitchProps","pathname","className","layout","headerTitleRender","logo","title","aggregateMenuProps","open","rev","undefined","style","fontSize","marginRight","onClick","onChangeOpen","img","src","alt","fixSiderbar","suppressSiderWhenMenuEmpty","menu","request","result","meunList","UCENTER","data","userMenus","length","sort","d1","d2","d1Sort","displaySort","d2Sort","parentID","map","item","key","id","name","icon","IconFont","type","i","parentId","path","route","location","actionsRender","actions","i18nProps","push","msgProps","ref","msgRef","avatarProps","menuItemRender","defaultDom","a","onClickMenuItem","menuIconPopup","proLayoutProps","children"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\layout\\index.tsx"],"sourcesContent":["import { MenuDataItem, ProLayout, ProLayoutProps } from '@ant-design/pro-layout';\r\nimport I18nDropdown, { I18nDropdownProps } from '../i18n-dropdown';\r\nimport TenantDropdown, { TenantDropdownProps } from '../tenant-dropdown';\r\nimport AvatarDropdown, { AvatarDropdownProps } from '../avatar-dropdown';\r\nimport MsgDropdown, { MsgDropdownProps, MsgDropdownRef } from '../msg-dropdown';\r\nimport ThemeSwitch, { ThemeSwitchProps } from '../theme-switch';\r\nimport styles from './layout.module.css';\r\nimport { ReactNode, FC, Ref, useRef, useImperativeHandle } from 'react';\r\nimport { UserMenuListQuery, UserMenuListQueryVariables } from '@knockout-js/api/ucenter';\r\nimport { CollectProviders, LocaleType } from '..';\r\nimport { gql, query } from '@knockout-js/ice-urql/request';\r\nimport { OpenWin } from '../icons';\r\nimport { IconFontProps } from '@ant-design/icons/lib/components/IconFont';\r\nimport { logoBase64 } from './logo';\r\nimport AggregateMenu, { AggregateMenuProps } from '../aggregate-menu';\r\nimport { BarsOutlined } from '@ant-design/icons';\r\nimport { listFormatTreeData } from '../_util';\r\nimport { instanceName } from '@knockout-js/api';\r\n\r\nexport interface LayoutProps {\r\n /**\r\n * 应用code\r\n */\r\n appCode: string;\r\n /**\r\n * 语言\r\n * 默认 LocaleType.zhCN\r\n */\r\n locale?: LocaleType;\r\n /**\r\n * 传递动态的 location.pathname\r\n */\r\n pathname: string;\r\n /**\r\n * 菜单启用iconfont\r\n */\r\n IconFont?: FC<IconFontProps<string>>;\r\n /**\r\n * 聚合菜单\r\n */\r\n aggregateMenuProps?: AggregateMenuProps;\r\n /**\r\n * I18nDropdown组件对应的参数\r\n */\r\n i18nProps?: I18nDropdownProps;\r\n /**\r\n * TenantDropdown组件对应的参数\r\n */\r\n tenantProps: TenantDropdownProps;\r\n /**\r\n * AvatarDropdown组件对应的参数\r\n */\r\n avatarProps: AvatarDropdownProps;\r\n /**\r\n * MsgDropdown组件的高级方法\r\n */\r\n msgRef?: Ref<MsgDropdownRef>\r\n /**\r\n * MsgDropdown组件对应的参数\r\n */\r\n msgProps?: MsgDropdownProps;\r\n /**\r\n * ThemeSwitch组件对应的参数\r\n */\r\n themeSwitchProps?: ThemeSwitchProps;\r\n /**\r\n * ProLayout组件对应的参数\r\n */\r\n proLayoutProps?: ProLayoutProps;\r\n /**\r\n * 菜单点击返回 (item: MenuDataItem,isOpen?: boolean) => void;\r\n */\r\n onClickMenuItem?: (\r\n item: MenuDataItem & {\r\n isUrl: boolean;\r\n onClick: () => void;\r\n },\r\n isOpen?: boolean\r\n ) => void;\r\n /**\r\n * 默认插槽\r\n */\r\n children?: ReactNode;\r\n\r\n}\r\n\r\nconst userMenuListQuery = gql(/* GraphQL */`query userMenuList($appCode:String!){\r\n userMenus(appCode: $appCode){\r\n id,parentID,kind,name,comments,displaySort,icon,route\r\n }\r\n}`);\r\n\r\n\r\nconst Layout = (props: LayoutProps) => {\r\n\r\n const msgRef = useRef<MsgDropdownRef>(null);\r\n\r\n useImperativeHandle(props.msgRef, () => msgRef.current as MsgDropdownRef);\r\n\r\n return (\r\n <CollectProviders\r\n locale={props.locale ?? LocaleType.zhCN}\r\n appCode={props.appCode}\r\n tenantId={props.tenantProps.value}\r\n dark={props.themeSwitchProps?.value ?? false}\r\n pathname={props.pathname}\r\n >\r\n <ProLayout\r\n className={styles.layout}\r\n headerTitleRender={(logo, title) => {\r\n return <>\r\n {typeof props.aggregateMenuProps?.open === 'boolean' ? <BarsOutlined\r\n rev={undefined}\r\n style={{ fontSize: 20, marginRight: 10 }}\r\n onClick={() => {\r\n props.aggregateMenuProps?.onChangeOpen?.(true);\r\n }}\r\n /> : <></>}\r\n {logo}\r\n {title}\r\n </>\r\n }}\r\n title='adminx'\r\n logo={<img src={logoBase64} alt=\"logo\" />}\r\n layout=\"mix\"\r\n fixSiderbar\r\n suppressSiderWhenMenuEmpty\r\n menu={{\r\n locale: true,\r\n request: async () => {\r\n const result = await query<UserMenuListQuery, UserMenuListQueryVariables>(userMenuListQuery, {\r\n appCode: props.appCode\r\n }, { instanceName: instanceName.UCENTER });\r\n if (result.data?.userMenus.length) {\r\n const meunList = result.data.userMenus.sort((d1, d2) => {\r\n const d1Sort = d1.displaySort || 0, d2Sort = d2.displaySort || 0;\r\n return d1.parentID < d2.parentID ? -1 : d1.parentID > d2.parentID ? 1 : d1Sort < d2Sort ? -1 : d1Sort > d2Sort ? 1 : 0;\r\n }).map(item => {\r\n return {\r\n key: item.id,\r\n name: item.name,\r\n icon: item.icon ? props.IconFont ? <props.IconFont type={item.icon} /> : <i className={item.icon} /> : undefined,\r\n parentId: item.parentID,\r\n path: item.route,\r\n } as MenuDataItem\r\n })\r\n\r\n return listFormatTreeData(meunList);\r\n }\r\n return [];\r\n },\r\n }}\r\n location={{\r\n pathname: props.pathname\r\n }}\r\n actionsRender={() => {\r\n const actions: ReactNode[] = [];\r\n if (props.i18nProps) {\r\n actions.push(<I18nDropdown {...props.i18nProps} />)\r\n }\r\n if (props.msgProps) {\r\n actions.push(<MsgDropdown {...props.msgProps} ref={msgRef} />)\r\n }\r\n actions.push(<TenantDropdown {...props.tenantProps} />)\r\n actions.push(<AvatarDropdown {...props.avatarProps} />)\r\n if (props.themeSwitchProps) {\r\n actions.push(<ThemeSwitch {...props.themeSwitchProps} />)\r\n }\r\n return actions;\r\n }}\r\n menuItemRender={(item, defaultDom) => (item.path ? <>\r\n <a\r\n onClick={() => {\r\n props.onClickMenuItem?.(item, false)\r\n }}\r\n >{defaultDom}</a>\r\n <OpenWin\r\n className={styles.menuIconPopup}\r\n onClick={() => {\r\n props.onClickMenuItem?.(item, true)\r\n }}\r\n />\r\n </>\r\n : defaultDom)}\r\n {...props.proLayoutProps}\r\n >\r\n {props.children}\r\n </ProLayout>\r\n {\r\n props.aggregateMenuProps ? <AggregateMenu\r\n {...props.aggregateMenuProps}\r\n /> : <></>\r\n }\r\n </CollectProviders>\r\n )\r\n}\r\n\r\nexport default Layout\r\n"],"names":["ProLayout","I18nDropdown","TenantDropdown","AvatarDropdown","MsgDropdown","ThemeSwitch","styles","useRef","useImperativeHandle","CollectProviders","LocaleType","gql","query","OpenWin","logoBase64","AggregateMenu","BarsOutlined","listFormatTreeData","instanceName","userMenuListQuery","Layout","props","msgRef","current","locale","zhCN","appCode","tenantId","tenantProps","value","dark","themeSwitchProps","pathname","className","layout","headerTitleRender","logo","title","aggregateMenuProps","open","rev","undefined","style","fontSize","marginRight","onClick","onChangeOpen","img","src","alt","fixSiderbar","suppressSiderWhenMenuEmpty","menu","request","result","meunList","UCENTER","data","userMenus","length","sort","d1","d2","d1Sort","displaySort","d2Sort","parentID","map","item","key","id","name","icon","IconFont","type","i","parentId","path","route","location","actionsRender","actions","i18nProps","push","msgProps","ref","avatarProps","menuItemRender","defaultDom","a","onClickMenuItem","menuIconPopup","proLayoutProps","children"],"mappings":"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"}
|