@knockout-js/layout 0.0.2

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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/es2017/components/avatar-dropdown/index.d.ts +25 -0
  4. package/es2017/components/avatar-dropdown/index.js +47 -0
  5. package/es2017/components/avatar-dropdown/index.js.map +1 -0
  6. package/es2017/components/avatar-dropdown/index.module.css +23 -0
  7. package/es2017/components/avatar-dropdown/locale/en_US.d.ts +3 -0
  8. package/es2017/components/avatar-dropdown/locale/en_US.js +6 -0
  9. package/es2017/components/avatar-dropdown/locale/en_US.js.map +1 -0
  10. package/es2017/components/avatar-dropdown/locale/zh_CN.d.ts +3 -0
  11. package/es2017/components/avatar-dropdown/locale/zh_CN.js +6 -0
  12. package/es2017/components/avatar-dropdown/locale/zh_CN.js.map +1 -0
  13. package/es2017/components/collect-providers/index.d.ts +22 -0
  14. package/es2017/components/collect-providers/index.js +38 -0
  15. package/es2017/components/collect-providers/index.js.map +1 -0
  16. package/es2017/components/i18n-dropdown/index.d.ts +10 -0
  17. package/es2017/components/i18n-dropdown/index.js +44 -0
  18. package/es2017/components/i18n-dropdown/index.js.map +1 -0
  19. package/es2017/components/i18n-dropdown/index.module.css +13 -0
  20. package/es2017/components/icons/index.d.ts +2 -0
  21. package/es2017/components/icons/index.js +19 -0
  22. package/es2017/components/icons/index.js.map +1 -0
  23. package/es2017/components/index.d.ts +12 -0
  24. package/es2017/components/index.js +15 -0
  25. package/es2017/components/index.js.map +1 -0
  26. package/es2017/components/keep-alive/index.d.ts +17 -0
  27. package/es2017/components/keep-alive/index.js +29 -0
  28. package/es2017/components/keep-alive/index.js.map +1 -0
  29. package/es2017/components/layout/index.d.ts +54 -0
  30. package/es2017/components/layout/index.js +123 -0
  31. package/es2017/components/layout/index.js.map +1 -0
  32. package/es2017/components/layout/layout.module.css +46 -0
  33. package/es2017/components/layout/woocoo.png +0 -0
  34. package/es2017/components/leave-prompt/index.d.ts +21 -0
  35. package/es2017/components/leave-prompt/index.js +62 -0
  36. package/es2017/components/leave-prompt/index.js.map +1 -0
  37. package/es2017/components/leave-prompt/locale/en_US.d.ts +3 -0
  38. package/es2017/components/leave-prompt/locale/en_US.js +6 -0
  39. package/es2017/components/leave-prompt/locale/en_US.js.map +1 -0
  40. package/es2017/components/leave-prompt/locale/zh_CN.d.ts +3 -0
  41. package/es2017/components/leave-prompt/locale/zh_CN.js +6 -0
  42. package/es2017/components/leave-prompt/locale/zh_CN.js.map +1 -0
  43. package/es2017/components/locale/en_US.d.ts +3 -0
  44. package/es2017/components/locale/en_US.js +14 -0
  45. package/es2017/components/locale/en_US.js.map +1 -0
  46. package/es2017/components/locale/index.d.ts +33 -0
  47. package/es2017/components/locale/index.js +39 -0
  48. package/es2017/components/locale/index.js.map +1 -0
  49. package/es2017/components/locale/zh_CN.d.ts +3 -0
  50. package/es2017/components/locale/zh_CN.js +14 -0
  51. package/es2017/components/locale/zh_CN.js.map +1 -0
  52. package/es2017/components/tenant-dropdown/index.d.ts +18 -0
  53. package/es2017/components/tenant-dropdown/index.js +80 -0
  54. package/es2017/components/tenant-dropdown/index.js.map +1 -0
  55. package/es2017/components/tenant-dropdown/index.module.css +13 -0
  56. package/es2017/components/tenant-dropdown/locale/en_US.d.ts +3 -0
  57. package/es2017/components/tenant-dropdown/locale/en_US.js +8 -0
  58. package/es2017/components/tenant-dropdown/locale/en_US.js.map +1 -0
  59. package/es2017/components/tenant-dropdown/locale/zh_CN.d.ts +3 -0
  60. package/es2017/components/tenant-dropdown/locale/zh_CN.js +8 -0
  61. package/es2017/components/tenant-dropdown/locale/zh_CN.js.map +1 -0
  62. package/es2017/components/theme-switch/index.d.ts +22 -0
  63. package/es2017/components/theme-switch/index.js +21 -0
  64. package/es2017/components/theme-switch/index.js.map +1 -0
  65. package/es2017/components/theme-switch/locale/en_US.d.ts +3 -0
  66. package/es2017/components/theme-switch/locale/en_US.js +7 -0
  67. package/es2017/components/theme-switch/locale/en_US.js.map +1 -0
  68. package/es2017/components/theme-switch/locale/zh_CN.d.ts +3 -0
  69. package/es2017/components/theme-switch/locale/zh_CN.js +7 -0
  70. package/es2017/components/theme-switch/locale/zh_CN.js.map +1 -0
  71. package/es2017/index.d.ts +1 -0
  72. package/es2017/index.js +3 -0
  73. package/es2017/index.js.map +1 -0
  74. package/es2017/typings.d.ts +1 -0
  75. package/esm/components/avatar-dropdown/index.d.ts +25 -0
  76. package/esm/components/avatar-dropdown/index.js +47 -0
  77. package/esm/components/avatar-dropdown/index.js.map +1 -0
  78. package/esm/components/avatar-dropdown/index.module.css +23 -0
  79. package/esm/components/avatar-dropdown/locale/en_US.d.ts +3 -0
  80. package/esm/components/avatar-dropdown/locale/en_US.js +6 -0
  81. package/esm/components/avatar-dropdown/locale/en_US.js.map +1 -0
  82. package/esm/components/avatar-dropdown/locale/zh_CN.d.ts +3 -0
  83. package/esm/components/avatar-dropdown/locale/zh_CN.js +6 -0
  84. package/esm/components/avatar-dropdown/locale/zh_CN.js.map +1 -0
  85. package/esm/components/collect-providers/index.d.ts +22 -0
  86. package/esm/components/collect-providers/index.js +39 -0
  87. package/esm/components/collect-providers/index.js.map +1 -0
  88. package/esm/components/i18n-dropdown/index.d.ts +10 -0
  89. package/esm/components/i18n-dropdown/index.js +46 -0
  90. package/esm/components/i18n-dropdown/index.js.map +1 -0
  91. package/esm/components/i18n-dropdown/index.module.css +13 -0
  92. package/esm/components/icons/index.d.ts +2 -0
  93. package/esm/components/icons/index.js +19 -0
  94. package/esm/components/icons/index.js.map +1 -0
  95. package/esm/components/index.d.ts +12 -0
  96. package/esm/components/index.js +15 -0
  97. package/esm/components/index.js.map +1 -0
  98. package/esm/components/keep-alive/index.d.ts +17 -0
  99. package/esm/components/keep-alive/index.js +29 -0
  100. package/esm/components/keep-alive/index.js.map +1 -0
  101. package/esm/components/layout/index.d.ts +54 -0
  102. package/esm/components/layout/index.js +142 -0
  103. package/esm/components/layout/index.js.map +1 -0
  104. package/esm/components/layout/layout.module.css +46 -0
  105. package/esm/components/layout/woocoo.png +0 -0
  106. package/esm/components/leave-prompt/index.d.ts +21 -0
  107. package/esm/components/leave-prompt/index.js +62 -0
  108. package/esm/components/leave-prompt/index.js.map +1 -0
  109. package/esm/components/leave-prompt/locale/en_US.d.ts +3 -0
  110. package/esm/components/leave-prompt/locale/en_US.js +6 -0
  111. package/esm/components/leave-prompt/locale/en_US.js.map +1 -0
  112. package/esm/components/leave-prompt/locale/zh_CN.d.ts +3 -0
  113. package/esm/components/leave-prompt/locale/zh_CN.js +6 -0
  114. package/esm/components/leave-prompt/locale/zh_CN.js.map +1 -0
  115. package/esm/components/locale/en_US.d.ts +3 -0
  116. package/esm/components/locale/en_US.js +14 -0
  117. package/esm/components/locale/en_US.js.map +1 -0
  118. package/esm/components/locale/index.d.ts +33 -0
  119. package/esm/components/locale/index.js +39 -0
  120. package/esm/components/locale/index.js.map +1 -0
  121. package/esm/components/locale/zh_CN.d.ts +3 -0
  122. package/esm/components/locale/zh_CN.js +14 -0
  123. package/esm/components/locale/zh_CN.js.map +1 -0
  124. package/esm/components/tenant-dropdown/index.d.ts +18 -0
  125. package/esm/components/tenant-dropdown/index.js +100 -0
  126. package/esm/components/tenant-dropdown/index.js.map +1 -0
  127. package/esm/components/tenant-dropdown/index.module.css +13 -0
  128. package/esm/components/tenant-dropdown/locale/en_US.d.ts +3 -0
  129. package/esm/components/tenant-dropdown/locale/en_US.js +8 -0
  130. package/esm/components/tenant-dropdown/locale/en_US.js.map +1 -0
  131. package/esm/components/tenant-dropdown/locale/zh_CN.d.ts +3 -0
  132. package/esm/components/tenant-dropdown/locale/zh_CN.js +8 -0
  133. package/esm/components/tenant-dropdown/locale/zh_CN.js.map +1 -0
  134. package/esm/components/theme-switch/index.d.ts +22 -0
  135. package/esm/components/theme-switch/index.js +21 -0
  136. package/esm/components/theme-switch/index.js.map +1 -0
  137. package/esm/components/theme-switch/locale/en_US.d.ts +3 -0
  138. package/esm/components/theme-switch/locale/en_US.js +7 -0
  139. package/esm/components/theme-switch/locale/en_US.js.map +1 -0
  140. package/esm/components/theme-switch/locale/zh_CN.d.ts +3 -0
  141. package/esm/components/theme-switch/locale/zh_CN.js +7 -0
  142. package/esm/components/theme-switch/locale/zh_CN.js.map +1 -0
  143. package/esm/index.d.ts +1 -0
  144. package/esm/index.js +3 -0
  145. package/esm/index.js.map +1 -0
  146. package/esm/typings.d.ts +1 -0
  147. package/package.json +71 -0
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@ice/jsx-runtime/jsx-runtime";
2
+ import React, { useCallback } from "react";
3
+ import { LogoutOutlined, UserOutlined } from "@ant-design/icons";
4
+ import { Dropdown, Avatar } from "antd";
5
+ import styles from "./index.module.css";
6
+ import { useLocale } from "../locale/index";
7
+ var AvatarDropdown = function(props) {
8
+ var locale = useLocale("AvatarDropdown"), menu = {
9
+ items: [
10
+ {
11
+ key: "logout",
12
+ label: locale.logout,
13
+ icon: /*#__PURE__*/ _jsx(LogoutOutlined, {
14
+ rev: undefined
15
+ }),
16
+ onClick: useCallback(function() {
17
+ var _props_onLogoutClick;
18
+ (_props_onLogoutClick = props.onLogoutClick) === null || _props_onLogoutClick === void 0 ? void 0 : _props_onLogoutClick.call(props);
19
+ }, []),
20
+ className: styles.menu
21
+ }
22
+ ]
23
+ };
24
+ return /*#__PURE__*/ _jsx(Dropdown, {
25
+ menu: props.menuProps || menu,
26
+ children: /*#__PURE__*/ _jsxs("span", {
27
+ className: "".concat(styles.action, " ").concat(styles.account),
28
+ children: [
29
+ /*#__PURE__*/ _jsx(Avatar, {
30
+ size: "small",
31
+ className: styles.avatar,
32
+ icon: /*#__PURE__*/ _jsx(UserOutlined, {
33
+ rev: undefined
34
+ }),
35
+ src: props.avatar,
36
+ alt: "avatar"
37
+ }),
38
+ /*#__PURE__*/ _jsx("span", {
39
+ children: props.name
40
+ })
41
+ ]
42
+ })
43
+ });
44
+ };
45
+ export default AvatarDropdown;
46
+
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[".\\src\\components\\avatar-dropdown\\index.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\r\nimport { LogoutOutlined, UserOutlined } from '@ant-design/icons';\r\nimport { Dropdown, Avatar, MenuProps } from 'antd';\r\nimport styles from './index.module.css';\r\nimport { useLocale } from '../locale';\r\n\r\nexport interface AvatarDropdownLocale {\r\n logout: string;\r\n}\r\n\r\nexport interface AvatarDropdownProps {\r\n /**\r\n * 用户名\r\n */\r\n name?: string;\r\n /**\r\n * 头像\r\n */\r\n avatar?: string;\r\n /**\r\n * ant的\r\n */\r\n menuProps?: MenuProps;\r\n /**\r\n * 单击退出事件 () => void;\r\n */\r\n onLogoutClick?: () => void;\r\n}\r\n\r\nconst AvatarDropdown = (props: AvatarDropdownProps) => {\r\n const locale = useLocale('AvatarDropdown'),\r\n menu = {\r\n items: [\r\n {\r\n key: 'logout',\r\n label: locale.logout,\r\n icon: <LogoutOutlined rev={undefined} />,\r\n onClick: useCallback(() => {\r\n props.onLogoutClick?.()\r\n }, []),\r\n className: styles.menu,\r\n },\r\n ],\r\n };\r\n\r\n return (\r\n <Dropdown menu={props.menuProps || menu}>\r\n <span className={`${styles.action} ${styles.account}`}>\r\n <Avatar\r\n size=\"small\"\r\n className={styles.avatar}\r\n icon={<UserOutlined rev={undefined} />}\r\n src={props.avatar}\r\n alt=\"avatar\"\r\n />\r\n <span>{props.name}</span>\r\n </span>\r\n </Dropdown>\r\n );\r\n};\r\n\r\nexport default AvatarDropdown;\r\n"],"names":["React","useCallback","LogoutOutlined","UserOutlined","Dropdown","Avatar","styles","useLocale","AvatarDropdown","props","locale","menu","items","key","label","logout","icon","rev","undefined","onClick","onLogoutClick","className","menuProps","span","action","account","size","avatar","src","alt","name"],"mappings":";AAAA,OAAOA,SAASC,WAAW,QAAQ,QAAQ;AAC3C,SAASC,cAAc,EAAEC,YAAY,QAAQ,oBAAoB;AACjE,SAASC,QAAQ,EAAEC,MAAM,QAAmB,OAAO;AACnD,OAAOC,YAAY,qBAAqB;AACxC,SAASC,SAAS,QAAQ,kBAAY;AAyBtC,IAAMC,iBAAiB,SAACC,OAA+B;IACrD,IAAMC,SAASH,UAAU,mBACvBI,OAAO;QACLC,OAAO;YACL;gBACEC,KAAK;gBACLC,OAAOJ,OAAOK,MAAM;gBACpBC,oBAAM,KAACd;oBAAee,KAAKC;;gBAC3BC,SAASlB,YAAY,WAAM;wBACzBQ;oBAAAA,CAAAA,uBAAAA,MAAMW,aAAa,cAAnBX,kCAAAA,KAAAA,IAAAA,qBAAAA,KAAAA;gBACF,GAAG,EAAE;gBACLY,WAAWf,OAAOK,IAAI;YACxB;SACD;IACH;IAEF,qBACE,KAACP;QAASO,MAAMF,MAAMa,SAAS,IAAIX;kBACjC,cAAA,MAACY;YAAKF,WAAW,AAAC,GAAmBf,OAAjBA,OAAOkB,MAAM,EAAC,KAAkB,OAAflB,OAAOmB,OAAO;;8BACjD,KAACpB;oBACCqB,MAAK;oBACLL,WAAWf,OAAOqB,MAAM;oBACxBX,oBAAM,KAACb;wBAAac,KAAKC;;oBACzBU,KAAKnB,MAAMkB,MAAM;oBACjBE,KAAI;;8BAEN,KAACN;8BAAMd,MAAMqB,IAAI;;;;;AAIzB;AAEA,eAAetB,eAAe"}
@@ -0,0 +1,23 @@
1
+ .action {
2
+ display: flex;
3
+ align-items: center;
4
+ height: 48px;
5
+ padding: 0 12px;
6
+ cursor: pointer;
7
+ transition: all 0.3s;
8
+ }
9
+
10
+ .action>span {
11
+ vertical-align: middle;
12
+ font-size: 14px;
13
+ }
14
+
15
+ .account>.avatar {
16
+ margin-right: 8px;
17
+ vertical-align: top;
18
+ background: rgba(255, 255, 255, 0.85);
19
+ }
20
+
21
+ .menu {
22
+ min-width: 160px;
23
+ }
@@ -0,0 +1,3 @@
1
+ import { AvatarDropdownLocale } from "../index";
2
+ declare const locale: AvatarDropdownLocale;
3
+ export default locale;
@@ -0,0 +1,6 @@
1
+ var locale = {
2
+ logout: "logout"
3
+ };
4
+ export default locale;
5
+
6
+ //# sourceMappingURL=en_US.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[".\\src\\components\\avatar-dropdown\\locale\\en_US.ts"],"sourcesContent":["import { AvatarDropdownLocale } from \"../index\";\r\n\r\nconst locale: AvatarDropdownLocale = {\r\n logout: 'logout'\r\n};\r\n\r\nexport default locale\r\n"],"names":["locale","logout"],"mappings":"AAEA,IAAMA,SAA+B;IACnCC,QAAQ;AACV;AAEA,eAAeD,OAAM"}
@@ -0,0 +1,3 @@
1
+ import { AvatarDropdownLocale } from "../index";
2
+ declare const locale: AvatarDropdownLocale;
3
+ export default locale;
@@ -0,0 +1,6 @@
1
+ var locale = {
2
+ logout: "退出"
3
+ };
4
+ export default locale;
5
+
6
+ //# sourceMappingURL=zh_CN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[".\\src\\components\\avatar-dropdown\\locale\\zh_CN.ts"],"sourcesContent":["import { AvatarDropdownLocale } from \"../index\";\r\n\r\nconst locale: AvatarDropdownLocale = {\r\n logout: '退出'\r\n};\r\n\r\nexport default locale\r\n"],"names":["locale","logout"],"mappings":"AAEA,IAAMA,SAA+B;IACnCC,QAAQ;AACV;AAEA,eAAeD,OAAM"}
@@ -0,0 +1,22 @@
1
+ import { LocaleType } from "../locale";
2
+ import { ReactNode } from "react";
3
+ export interface CollectProviderProps {
4
+ /**
5
+ * @knockout-js 的多语言 locale
6
+ */
7
+ locale: LocaleType;
8
+ /**
9
+ * ProConfig dark主题
10
+ */
11
+ dark: boolean;
12
+ /**
13
+ * 传递动态的 location.pathname
14
+ */
15
+ pathname: string;
16
+ /**
17
+ * 默认插槽
18
+ */
19
+ children: ReactNode;
20
+ }
21
+ declare const _default: (props: CollectProviderProps) => JSX.Element;
22
+ export default _default;
@@ -0,0 +1,39 @@
1
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
2
+ import { jsx as _jsx } from "@ice/jsx-runtime/jsx-runtime";
3
+ import { LocaleType } from "../locale/index";
4
+ import { useEffect, useState } from "react";
5
+ import { ProConfigProvider } from "@ant-design/pro-provider";
6
+ import { BasicProvider, LeavePrompt } from "../index";
7
+ import { ConfigProvider } from "antd";
8
+ import { AliveScope } from "react-activation";
9
+ import zhCN from "antd/locale/zh_CN";
10
+ import enUS from "antd/locale/en_US";
11
+ export default function(props) {
12
+ var _useState = _sliced_to_array(useState(zhCN), 2), antLocale = _useState[0], setAntLocale = _useState[1];
13
+ useEffect(function() {
14
+ if (props.locale === LocaleType.zhCN) {
15
+ setAntLocale(zhCN);
16
+ } else if (props.locale === LocaleType.enUS) {
17
+ setAntLocale(enUS);
18
+ }
19
+ }, [
20
+ props.locale
21
+ ]);
22
+ return /*#__PURE__*/ _jsx(ProConfigProvider, {
23
+ dark: props.dark,
24
+ children: /*#__PURE__*/ _jsx(BasicProvider, {
25
+ locale: props.locale,
26
+ children: /*#__PURE__*/ _jsx(ConfigProvider, {
27
+ locale: antLocale,
28
+ children: /*#__PURE__*/ _jsx(LeavePrompt, {
29
+ pathname: props.pathname,
30
+ children: /*#__PURE__*/ _jsx(AliveScope, {
31
+ children: props.children
32
+ })
33
+ })
34
+ })
35
+ })
36
+ });
37
+ };
38
+
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[".\\src\\components\\collect-providers\\index.tsx"],"sourcesContent":["import { Locale } from \"antd/es/locale\";\r\nimport { LocaleType } from \"../locale\"\r\nimport { ReactNode, useEffect, useState } from \"react\";\r\nimport { ProConfigProvider } from \"@ant-design/pro-provider\";\r\nimport { BasicProvider, LeavePrompt } from \"..\";\r\nimport { ConfigProvider } from \"antd\";\r\nimport { AliveScope } from \"react-activation\";\r\nimport zhCN from 'antd/locale/zh_CN';\r\nimport enUS from 'antd/locale/en_US';\r\nexport interface CollectProviderProps {\r\n /**\r\n * @knockout-js 的多语言 locale\r\n */\r\n locale: LocaleType;\r\n /**\r\n * ProConfig dark主题\r\n */\r\n dark: boolean;\r\n /**\r\n * 传递动态的 location.pathname\r\n */\r\n pathname: string;\r\n /**\r\n * 默认插槽\r\n */\r\n children: ReactNode;\r\n}\r\n\r\nexport default (props: CollectProviderProps) => {\r\n\r\n const [antLocale, setAntLocale] = useState<Locale>(zhCN);\r\n\r\n useEffect(() => {\r\n if (props.locale === LocaleType.zhCN) {\r\n setAntLocale(zhCN)\r\n } else if (props.locale === LocaleType.enUS) {\r\n setAntLocale(enUS)\r\n }\r\n }, [props.locale]);\r\n\r\n return (\r\n <ProConfigProvider dark={props.dark}>\r\n <BasicProvider locale={props.locale}>\r\n <ConfigProvider locale={antLocale}>\r\n <LeavePrompt pathname={props.pathname}>\r\n <AliveScope>\r\n {props.children}\r\n </AliveScope>\r\n </LeavePrompt>\r\n </ConfigProvider>\r\n </BasicProvider>\r\n </ProConfigProvider >\r\n )\r\n}\r\n"],"names":["LocaleType","useEffect","useState","ProConfigProvider","BasicProvider","LeavePrompt","ConfigProvider","AliveScope","zhCN","enUS","props","antLocale","setAntLocale","locale","dark","pathname","children"],"mappings":";;AACA,SAASA,UAAU,QAAQ,kBAAW;AACtC,SAAoBC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AACvD,SAASC,iBAAiB,QAAQ,2BAA2B;AAC7D,SAASC,aAAa,EAAEC,WAAW,QAAQ,WAAK;AAChD,SAASC,cAAc,QAAQ,OAAO;AACtC,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,OAAOC,UAAU,oBAAoB;AACrC,OAAOC,UAAU,oBAAoB;AAoBrC,eAAe,SAACC,OAAgC;IAE9C,IAAkCR,6BAAAA,SAAiBM,WAA5CG,YAA2BT,cAAhBU,eAAgBV;IAElCD,UAAU,WAAM;QACd,IAAIS,MAAMG,MAAM,KAAKb,WAAWQ,IAAI,EAAE;YACpCI,aAAaJ;QACf,OAAO,IAAIE,MAAMG,MAAM,KAAKb,WAAWS,IAAI,EAAE;YAC3CG,aAAaH;QACf,CAAC;IACH,GAAG;QAACC,MAAMG,MAAM;KAAC;IAEjB,qBACE,KAACV;QAAkBW,MAAMJ,MAAMI,IAAI;kBACjC,cAAA,KAACV;YAAcS,QAAQH,MAAMG,MAAM;sBACjC,cAAA,KAACP;gBAAeO,QAAQF;0BACtB,cAAA,KAACN;oBAAYU,UAAUL,MAAMK,QAAQ;8BACnC,cAAA,KAACR;kCACEG,MAAMM,QAAQ;;;;;;AAO7B,EAAC"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { LocaleType } from '../locale';
3
+ export interface I18nDropdownProps {
4
+ /**
5
+ * 值变更事件 (value: LocaleType) => void;
6
+ */
7
+ onChange?: (value: LocaleType) => void;
8
+ }
9
+ declare function I18nDropdown(props: I18nDropdownProps): JSX.Element;
10
+ export default I18nDropdown;
@@ -0,0 +1,46 @@
1
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
2
+ import { jsx as _jsx } from "@ice/jsx-runtime/jsx-runtime";
3
+ import { useState, useEffect, useCallback, useContext } from "react";
4
+ import { Dropdown } from "antd";
5
+ import styles from "./index.module.css";
6
+ import { BasicContext, LocaleType } from "../locale/index";
7
+ function I18nDropdown(props) {
8
+ var ctx = useContext(BasicContext), _useState = _sliced_to_array(useState(""), 2), localeName = _useState[0], setLocaleName = _useState[1], menuItemOnClick = useCallback(function(param) {
9
+ var key = param.key;
10
+ var _props_onChange;
11
+ (_props_onChange = props.onChange) === null || _props_onChange === void 0 ? void 0 : _props_onChange.call(props, key);
12
+ }, []), menuItems = [
13
+ {
14
+ key: LocaleType.zhCN,
15
+ label: "简体",
16
+ onClick: menuItemOnClick
17
+ },
18
+ {
19
+ key: LocaleType.enUS,
20
+ label: "En",
21
+ onClick: menuItemOnClick
22
+ }
23
+ ];
24
+ useEffect(function() {
25
+ var item = menuItems === null || menuItems === void 0 ? void 0 : menuItems.find(function(item) {
26
+ return (item === null || item === void 0 ? void 0 : item.key) == ctx.locale;
27
+ });
28
+ setLocaleName((item === null || item === void 0 ? void 0 : item.label) || "");
29
+ }, [
30
+ ctx.locale
31
+ ]);
32
+ return /*#__PURE__*/ _jsx(Dropdown, {
33
+ menu: {
34
+ items: menuItems
35
+ },
36
+ children: /*#__PURE__*/ _jsx("span", {
37
+ className: styles.action,
38
+ children: /*#__PURE__*/ _jsx("span", {
39
+ children: localeName
40
+ })
41
+ })
42
+ });
43
+ }
44
+ export default I18nDropdown;
45
+
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[".\\src\\components\\i18n-dropdown\\index.tsx"],"sourcesContent":["import { useState, useEffect, useCallback, useContext } from 'react';\r\nimport { Dropdown, MenuProps } from 'antd';\r\nimport styles from './index.module.css';\r\nimport { BasicContext, BasicProviderProps, LocaleType } from '../locale';\r\n\r\nexport interface I18nDropdownProps {\r\n /**\r\n * 值变更事件 (value: LocaleType) => void;\r\n */\r\n onChange?: (value: LocaleType) => void;\r\n}\r\n\r\nfunction I18nDropdown(props: I18nDropdownProps) {\r\n const ctx = useContext<BasicProviderProps>(BasicContext),\r\n [localeName, setLocaleName] = useState(''),\r\n menuItemOnClick = useCallback(({ key }: { key: React.Key }) => {\r\n props.onChange?.(key as LocaleType)\r\n }, []),\r\n menuItems = [\r\n {\r\n key: LocaleType.zhCN,\r\n label: '简体',\r\n onClick: menuItemOnClick,\r\n },\r\n {\r\n key: LocaleType.enUS,\r\n label: 'En',\r\n onClick: menuItemOnClick,\r\n }\r\n ];\r\n\r\n useEffect(() => {\r\n const item = menuItems?.find(item => item?.key == ctx.locale);\r\n setLocaleName(item?.label || '')\r\n }, [ctx.locale]);\r\n\r\n return (\r\n <Dropdown menu={{\r\n items: menuItems,\r\n }}>\r\n <span className={styles.action}>\r\n <span>{localeName}</span>\r\n </span>\r\n </Dropdown>\r\n );\r\n};\r\n\r\nexport default I18nDropdown;\r\n"],"names":["useState","useEffect","useCallback","useContext","Dropdown","styles","BasicContext","LocaleType","I18nDropdown","props","ctx","localeName","setLocaleName","menuItemOnClick","key","onChange","menuItems","zhCN","label","onClick","enUS","item","find","locale","menu","items","span","className","action"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,WAAW,EAAEC,UAAU,QAAQ,QAAQ;AACrE,SAASC,QAAQ,QAAmB,OAAO;AAC3C,OAAOC,YAAY,qBAAqB;AACxC,SAASC,YAAY,EAAsBC,UAAU,QAAQ,kBAAY;AASzE,SAASC,aAAaC,KAAwB,EAAE;IAC9C,IAAMC,MAAMP,WAA+BG,eACXN,6BAAAA,SAAS,SAAtCW,aAA6BX,cAAjBY,gBAAiBZ,cAC9Ba,kBAAkBX,YAAY,gBAAiC;YAA9BY,YAAAA;YAC/BL;QAAAA,CAAAA,kBAAAA,MAAMM,QAAQ,cAAdN,6BAAAA,KAAAA,IAAAA,gBAAAA,KAAAA,OAAiBK;IACnB,GAAG,EAAE,GACLE,YAAY;QACV;YACEF,KAAKP,WAAWU,IAAI;YACpBC,OAAO;YACPC,SAASN;QACX;QACA;YACEC,KAAKP,WAAWa,IAAI;YACpBF,OAAO;YACPC,SAASN;QACX;KACD;IAEHZ,UAAU,WAAM;QACd,IAAMoB,OAAOL,sBAAAA,uBAAAA,KAAAA,IAAAA,UAAWM,IAAI,CAACD,SAAAA;YAAQA,OAAAA,CAAAA,iBAAAA,kBAAAA,KAAAA,IAAAA,KAAMP,GAAG,AAAD,KAAKJ,IAAIa,MAAM;;QAC5DX,cAAcS,CAAAA,iBAAAA,kBAAAA,KAAAA,IAAAA,KAAMH,KAAK,AAAD,KAAK;IAC/B,GAAG;QAACR,IAAIa,MAAM;KAAC;IAEf,qBACE,KAACnB;QAASoB,MAAM;YACdC,OAAOT;QACT;kBACE,cAAA,KAACU;YAAKC,WAAWtB,OAAOuB,MAAM;sBAC5B,cAAA,KAACF;0BAAMf;;;;AAIf;AAEA,eAAeH,aAAa"}
@@ -0,0 +1,13 @@
1
+ .action {
2
+ display: flex;
3
+ align-items: center;
4
+ height: 48px;
5
+ padding: 0 12px;
6
+ cursor: pointer;
7
+ transition: all 0.3s;
8
+ }
9
+
10
+ .action > span {
11
+ vertical-align: middle;
12
+ font-size: 14px;
13
+ }
@@ -0,0 +1,2 @@
1
+ import { SVGProps } from "react";
2
+ export declare const OpenWin: (props: JSX.IntrinsicAttributes & SVGProps<SVGSVGElement>) => JSX.Element;
@@ -0,0 +1,19 @@
1
+ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
+ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
+ import { jsx as _jsx } from "@ice/jsx-runtime/jsx-runtime";
4
+ export var OpenWin = function(props) {
5
+ return /*#__PURE__*/ _jsx("svg", _object_spread_props(_object_spread({
6
+ fill: "currentColor",
7
+ viewBox: "0 0 1024 1024",
8
+ "p-id": "19410",
9
+ width: "12",
10
+ height: "12"
11
+ }, props), {
12
+ children: /*#__PURE__*/ _jsx("path", {
13
+ 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",
14
+ "p-id": "19411"
15
+ })
16
+ }));
17
+ };
18
+
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[".\\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"}
@@ -0,0 +1,12 @@
1
+ export { default as BasicProvider, BasicContext, type BasicProviderProps, LocaleType } from './locale';
2
+ export { default as ThemeSwitch } from './theme-switch';
3
+ export { default as AvatarDropdown } from './avatar-dropdown';
4
+ export { default as KeepAlive } from './keep-alive';
5
+ export { default as TenantDropdown } from './tenant-dropdown';
6
+ export { default as LeavePrompt, useLeavePrompt } from './leave-prompt';
7
+ export { default as I18nDropdown } from './i18n-dropdown';
8
+ export { default as CollectProviders } from './collect-providers';
9
+ export { default as Layout } from './layout';
10
+ export declare enum iceUrqlInstance {
11
+ ucenter = "ucenter"
12
+ }
@@ -0,0 +1,15 @@
1
+ export { default as BasicProvider, BasicContext, LocaleType } from "./locale/index";
2
+ export { default as ThemeSwitch } from "./theme-switch/index";
3
+ export { default as AvatarDropdown } from "./avatar-dropdown/index";
4
+ export { default as KeepAlive } from "./keep-alive/index";
5
+ export { default as TenantDropdown } from "./tenant-dropdown/index";
6
+ export { default as LeavePrompt, useLeavePrompt } from "./leave-prompt/index";
7
+ export { default as I18nDropdown } from "./i18n-dropdown/index";
8
+ export { default as CollectProviders } from "./collect-providers/index";
9
+ export { default as Layout } from "./layout/index";
10
+ export var iceUrqlInstance;
11
+ (function(iceUrqlInstance) {
12
+ iceUrqlInstance["ucenter"] = "ucenter";
13
+ })(iceUrqlInstance || (iceUrqlInstance = {}));
14
+
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[".\\src\\components\\index.ts"],"sourcesContent":["export { default as BasicProvider, BasicContext, type BasicProviderProps, LocaleType } from './locale';\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 LeavePrompt, useLeavePrompt } from './leave-prompt';\r\nexport { default as I18nDropdown } from './i18n-dropdown';\r\nexport { default as CollectProviders } from './collect-providers';\r\nexport { default as Layout } from './layout';\r\nexport enum iceUrqlInstance {\r\n ucenter = \"ucenter\"\r\n}\r\n"],"names":["default","BasicProvider","BasicContext","LocaleType","ThemeSwitch","AvatarDropdown","KeepAlive","TenantDropdown","LeavePrompt","useLeavePrompt","I18nDropdown","CollectProviders","Layout","iceUrqlInstance","ucenter"],"mappings":"AAAA,SAASA,WAAWC,aAAa,EAAEC,YAAY,EAA2BC,UAAU,QAAQ,iBAAW;AACvG,SAASH,WAAWI,WAAW,QAAQ,uBAAiB;AACxD,SAASJ,WAAWK,cAAc,QAAQ,0BAAoB;AAC9D,SAASL,WAAWM,SAAS,QAAQ,qBAAe;AACpD,SAASN,WAAWO,cAAc,QAAQ,0BAAoB;AAC9D,SAASP,WAAWQ,WAAW,EAAEC,cAAc,QAAQ,uBAAiB;AACxE,SAAST,WAAWU,YAAY,QAAQ,wBAAkB;AAC1D,SAASV,WAAWW,gBAAgB,QAAQ,4BAAsB;AAClE,SAASX,WAAWY,MAAM,QAAQ,iBAAW;WACtC;UAAKC,eAAe;IAAfA,gBACVC,aAAAA;GADUD,oBAAAA"}
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from 'react';
2
+ export interface KeepAliveProps {
3
+ /**
4
+ * 在相同 location.pathname 通过传入id去区分
5
+ */
6
+ id?: string;
7
+ /**
8
+ * 是否需要清空其他keepalive缓存
9
+ */
10
+ clearAlive?: boolean;
11
+ /**
12
+ * 默认插槽
13
+ */
14
+ children: ReactNode;
15
+ }
16
+ declare const KA: React.FunctionComponent<React.PropsWithChildren<KeepAliveProps>>;
17
+ export default KA;
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx } from "@ice/jsx-runtime/jsx-runtime";
2
+ import { useEffect } from "react";
3
+ import KeepAlive, { useAliveController } from "react-activation";
4
+ var KA = function(props) {
5
+ var cacheKey = btoa(location.pathname), _useAliveController = useAliveController(), dropScope = _useAliveController.dropScope, getCachingNodes = _useAliveController.getCachingNodes;
6
+ useEffect(function() {
7
+ if (props.clearAlive) {
8
+ getCachingNodes().forEach(function(item) {
9
+ if (item.name && cacheKey != item.name) {
10
+ dropScope(item.name);
11
+ }
12
+ });
13
+ }
14
+ }, [
15
+ props.clearAlive
16
+ ]);
17
+ return /*#__PURE__*/ _jsx(KeepAlive, {
18
+ when: true,
19
+ autoFreeze: false,
20
+ cacheKey: cacheKey,
21
+ name: cacheKey,
22
+ id: props.id,
23
+ children: props.children
24
+ });
25
+ };
26
+ KA.defaultProps = {};
27
+ export default KA;
28
+
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[".\\src\\components\\keep-alive\\index.tsx"],"sourcesContent":["import { ReactNode, useEffect } from 'react';\r\nimport KeepAlive, { useAliveController } from 'react-activation';\r\n\r\nexport interface KeepAliveProps {\r\n /**\r\n * 在相同 location.pathname 通过传入id去区分\r\n */\r\n id?: string;\r\n /**\r\n * 是否需要清空其他keepalive缓存\r\n */\r\n clearAlive?: boolean;\r\n /**\r\n * 默认插槽\r\n */\r\n children: ReactNode;\r\n}\r\n\r\nconst KA: React.FunctionComponent<React.PropsWithChildren<KeepAliveProps>> = (props: KeepAliveProps) => {\r\n const cacheKey = btoa(location.pathname),\r\n { dropScope, getCachingNodes } = useAliveController();\r\n\r\n useEffect(() => {\r\n if (props.clearAlive) {\r\n getCachingNodes().forEach(item => {\r\n if (item.name && cacheKey != item.name) {\r\n dropScope(item.name);\r\n }\r\n });\r\n }\r\n }, [props.clearAlive]);\r\n\r\n return (<KeepAlive when autoFreeze={false} cacheKey={cacheKey} name={cacheKey} id={props.id}>\r\n {props.children}\r\n </KeepAlive>);\r\n}\r\n\r\nKA.defaultProps = {}\r\n\r\nexport default KA;\r\n"],"names":["useEffect","KeepAlive","useAliveController","KA","props","cacheKey","btoa","location","pathname","dropScope","getCachingNodes","clearAlive","forEach","item","name","when","autoFreeze","id","children","defaultProps"],"mappings":";AAAA,SAAoBA,SAAS,QAAQ,QAAQ;AAC7C,OAAOC,aAAaC,kBAAkB,QAAQ,mBAAmB;AAiBjE,IAAMC,KAAuE,SAACC,OAA0B;IACtG,IAAMC,WAAWC,KAAKC,SAASC,QAAQ,GACJN,sBAAAA,sBAA/BO,YAA+BP,oBAA/BO,WAAWC,kBAAoBR,oBAApBQ;IAEfV,UAAU,WAAM;QACd,IAAII,MAAMO,UAAU,EAAE;YACpBD,kBAAkBE,OAAO,CAACC,SAAAA,MAAQ;gBAChC,IAAIA,KAAKC,IAAI,IAAIT,YAAYQ,KAAKC,IAAI,EAAE;oBACtCL,UAAUI,KAAKC,IAAI;gBACrB,CAAC;YACH;QACF,CAAC;IACH,GAAG;QAACV,MAAMO,UAAU;KAAC;IAErB,qBAAQ,KAACV;QAAUc,IAAI;QAACC,YAAY,KAAK;QAAEX,UAAUA;QAAUS,MAAMT;QAAUY,IAAIb,MAAMa,EAAE;kBACxFb,MAAMc,QAAQ;;AAEnB;AAEAf,GAAGgB,YAAY,GAAG,CAAC;AAEnB,eAAehB,GAAG"}
@@ -0,0 +1,54 @@
1
+ import { MenuDataItem, ProLayoutProps } from '@ant-design/pro-layout';
2
+ import { I18nDropdownProps } from '../i18n-dropdown';
3
+ import { TenantDropdownProps } from '../tenant-dropdown';
4
+ import { AvatarDropdownProps } from '../avatar-dropdown';
5
+ import { ThemeSwitchProps } from '../theme-switch';
6
+ import { ReactNode } from 'react';
7
+ import { IconFontProps } from '@ant-design/icons/lib/components/IconFont';
8
+ export interface LayoutProps {
9
+ /**
10
+ * 应用code
11
+ */
12
+ appCode: string;
13
+ /**
14
+ * 传递动态的 location.pathname
15
+ */
16
+ pathname: string;
17
+ /**
18
+ * 菜单启用iconfont
19
+ */
20
+ IconFont?: React.FC<IconFontProps<string>>;
21
+ /**
22
+ * I18nDropdown组件对应的参数
23
+ */
24
+ i18nProps?: I18nDropdownProps;
25
+ /**
26
+ * TenantDropdown组件对应的参数
27
+ */
28
+ tenantProps: TenantDropdownProps;
29
+ /**
30
+ * AvatarDropdown组件对应的参数
31
+ */
32
+ avatarProps: AvatarDropdownProps;
33
+ /**
34
+ * ThemeSwitch组件对应的参数
35
+ */
36
+ themeSwitchProps: ThemeSwitchProps;
37
+ /**
38
+ * ProLayout组件对应的参数
39
+ */
40
+ proLayoutProps?: ProLayoutProps;
41
+ /**
42
+ * 菜单点击返回 (item: MenuDataItem,isOpen?: boolean) => void;
43
+ */
44
+ onClickMenuItem?: (item: MenuDataItem & {
45
+ isUrl: boolean;
46
+ onClick: () => void;
47
+ }, isOpen?: boolean) => void;
48
+ /**
49
+ * 默认插槽
50
+ */
51
+ children?: ReactNode;
52
+ }
53
+ declare const Layout: (props: LayoutProps) => JSX.Element;
54
+ export default Layout;
@@ -0,0 +1,142 @@
1
+ import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
+ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
+ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
4
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
5
+ import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
6
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@ice/jsx-runtime/jsx-runtime";
7
+ import { ProLayout } from "@ant-design/pro-layout";
8
+ import I18nDropdown from "../i18n-dropdown/index";
9
+ import TenantDropdown from "../tenant-dropdown/index";
10
+ import AvatarDropdown from "../avatar-dropdown/index";
11
+ import ThemeSwitch from "../theme-switch/index";
12
+ import styles from "./layout.module.css";
13
+ import { useCallback, useState } from "react";
14
+ import { gql } from "urql";
15
+ import { LocaleType } from "../locale/index";
16
+ import { CollectProviders } from "../index";
17
+ import { query } from "@knockout-js/ice-urql/request";
18
+ import { iceUrqlInstance } from "../index";
19
+ import logo from "./woocoo.png";
20
+ import { OpenWin } from "../icons/index";
21
+ var userMenuListQuery = gql("query userMenuList($appCode:String!){\n userMenus(appCode: $appCode){\n id,parentID,kind,name,comments,displaySort,icon,route\n }\n}");
22
+ var Layout = function(props) {
23
+ var _useState = _sliced_to_array(useState(LocaleType.zhCN), 2), locale = _useState[0], setLocale = _useState[1];
24
+ // 根据列表格式化成菜单树结构
25
+ var listFormatTree = useCallback(function(list, parentList) {
26
+ if (!parentList) {
27
+ parentList = list.filter(function(item) {
28
+ return item.parentId == "0";
29
+ });
30
+ }
31
+ parentList.forEach(function(pItem) {
32
+ var children = list.filter(function(allItem) {
33
+ return allItem.parentId == pItem.key;
34
+ });
35
+ if (children && children.length) {
36
+ pItem.children = listFormatTree(list, children);
37
+ }
38
+ });
39
+ return parentList;
40
+ }, []);
41
+ return /*#__PURE__*/ _jsx(CollectProviders, {
42
+ locale: locale,
43
+ dark: props.themeSwitchProps.value,
44
+ pathname: props.pathname,
45
+ children: /*#__PURE__*/ _jsx(ProLayout, _object_spread_props(_object_spread({
46
+ className: styles.layout,
47
+ title: "adminx",
48
+ logo: /*#__PURE__*/ _jsx("img", {
49
+ src: logo,
50
+ alt: "logo"
51
+ }),
52
+ layout: "mix",
53
+ fixSiderbar: true,
54
+ menu: {
55
+ locale: true,
56
+ request: /*#__PURE__*/ _async_to_generator(function() {
57
+ var _result_data, result, meunList;
58
+ return _ts_generator(this, function(_state) {
59
+ switch(_state.label){
60
+ case 0:
61
+ return [
62
+ 4,
63
+ query(userMenuListQuery, {
64
+ appCode: props.appCode
65
+ }, {
66
+ instanceName: iceUrqlInstance.ucenter
67
+ })
68
+ ];
69
+ case 1:
70
+ result = _state.sent();
71
+ if ((_result_data = result.data) === null || _result_data === void 0 ? void 0 : _result_data.userMenus.length) {
72
+ meunList = result.data.userMenus.map(function(item) {
73
+ return {
74
+ key: item.id,
75
+ name: item.name,
76
+ icon: item.icon ? props.IconFont ? /*#__PURE__*/ _jsx(props.IconFont, {
77
+ type: item.icon
78
+ }) : /*#__PURE__*/ _jsx("i", {
79
+ className: item.icon
80
+ }) : undefined,
81
+ parentId: item.parentID,
82
+ path: item.route
83
+ };
84
+ });
85
+ return [
86
+ 2,
87
+ listFormatTree(meunList)
88
+ ];
89
+ }
90
+ return [
91
+ 2,
92
+ []
93
+ ];
94
+ }
95
+ });
96
+ })
97
+ },
98
+ location: {
99
+ pathname: props.pathname
100
+ },
101
+ actionsRender: function() {
102
+ return [
103
+ /*#__PURE__*/ _jsx(I18nDropdown, {
104
+ onChange: function(value) {
105
+ var _props_i18nProps, _props_i18nProps_onChange;
106
+ setLocale(value);
107
+ (_props_i18nProps = props.i18nProps) === null || _props_i18nProps === void 0 ? void 0 : (_props_i18nProps_onChange = _props_i18nProps.onChange) === null || _props_i18nProps_onChange === void 0 ? void 0 : _props_i18nProps_onChange.call(_props_i18nProps, value);
108
+ }
109
+ }),
110
+ /*#__PURE__*/ _jsx(TenantDropdown, _object_spread({}, props.tenantProps)),
111
+ /*#__PURE__*/ _jsx(AvatarDropdown, _object_spread({}, props.avatarProps)),
112
+ /*#__PURE__*/ _jsx(ThemeSwitch, _object_spread({}, props.themeSwitchProps))
113
+ ];
114
+ },
115
+ menuItemRender: function(item, defaultDom) {
116
+ return item.path ? /*#__PURE__*/ _jsxs(_Fragment, {
117
+ children: [
118
+ /*#__PURE__*/ _jsx("a", {
119
+ onClick: function() {
120
+ var _props_onClickMenuItem;
121
+ (_props_onClickMenuItem = props.onClickMenuItem) === null || _props_onClickMenuItem === void 0 ? void 0 : _props_onClickMenuItem.call(props, item, false);
122
+ },
123
+ children: defaultDom
124
+ }),
125
+ /*#__PURE__*/ _jsx(OpenWin, {
126
+ className: styles.menuIconPopup,
127
+ onClick: function() {
128
+ var _props_onClickMenuItem;
129
+ (_props_onClickMenuItem = props.onClickMenuItem) === null || _props_onClickMenuItem === void 0 ? void 0 : _props_onClickMenuItem.call(props, item, true);
130
+ }
131
+ })
132
+ ]
133
+ }) : defaultDom;
134
+ }
135
+ }, props.proLayoutProps), {
136
+ children: props.children
137
+ }))
138
+ });
139
+ };
140
+ export default Layout;
141
+
142
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[".\\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 ThemeSwitch, { ThemeSwitchProps } from '../theme-switch';\r\nimport styles from './layout.module.css';\r\nimport { ReactNode, useCallback, useState } from 'react';\r\nimport { gql } from 'urql';\r\nimport { UserMenuListQuery, UserMenuListQueryVariables } from '@knockout-js/api';\r\nimport { LocaleType } from '../locale';\r\nimport { CollectProviders } from '..';\r\nimport { query } from '@knockout-js/ice-urql/request';\r\nimport { iceUrqlInstance } from '..';\r\nimport logo from './woocoo.png';\r\nimport { OpenWin } from '../icons';\r\nimport { IconFontProps } from '@ant-design/icons/lib/components/IconFont';\r\n\r\nexport interface LayoutProps {\r\n /**\r\n * 应用code\r\n */\r\n appCode: string;\r\n /**\r\n * 传递动态的 location.pathname\r\n */\r\n pathname: string;\r\n /**\r\n * 菜单启用iconfont\r\n */\r\n IconFont?: React.FC<IconFontProps<string>>;\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 * 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?: (item: MenuDataItem & {\r\n isUrl: boolean;\r\n onClick: () => void;\r\n },\r\n isOpen?: boolean) => 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\nconst Layout = (props: LayoutProps) => {\r\n\r\n const [locale, setLocale] = useState(LocaleType.zhCN);\r\n\r\n // 根据列表格式化成菜单树结构\r\n const listFormatTree = useCallback((list: MenuDataItem[], parentList?: MenuDataItem[]) => {\r\n if (!parentList) {\r\n parentList = list.filter(item => item.parentId == '0');\r\n }\r\n parentList.forEach((pItem) => {\r\n let children = list.filter(\r\n (allItem) => allItem.parentId == pItem.key,\r\n );\r\n if (children && children.length) {\r\n pItem.children = listFormatTree(list, children);\r\n }\r\n });\r\n return parentList;\r\n }, [])\r\n\r\n return (\r\n <CollectProviders\r\n locale={locale}\r\n dark={props.themeSwitchProps.value}\r\n pathname={props.pathname}\r\n >\r\n <ProLayout\r\n className={styles.layout}\r\n title='adminx'\r\n logo={<img src={logo} alt=\"logo\" />}\r\n layout=\"mix\"\r\n fixSiderbar\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: iceUrqlInstance.ucenter });\r\n if (result.data?.userMenus.length) {\r\n const meunList = result.data.userMenus.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 listFormatTree(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 <I18nDropdown onChange={(value) => {\r\n setLocale(value);\r\n props.i18nProps?.onChange?.(value)\r\n }} />,\r\n <TenantDropdown {...props.tenantProps} />,\r\n <AvatarDropdown {...props.avatarProps} />,\r\n <ThemeSwitch {...props.themeSwitchProps} />,\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 </CollectProviders>\r\n )\r\n}\r\n\r\nexport default Layout\r\n"],"names":["ProLayout","I18nDropdown","TenantDropdown","AvatarDropdown","ThemeSwitch","styles","useCallback","useState","gql","LocaleType","CollectProviders","query","iceUrqlInstance","logo","OpenWin","userMenuListQuery","Layout","props","zhCN","locale","setLocale","listFormatTree","list","parentList","filter","item","parentId","forEach","pItem","children","allItem","key","length","dark","themeSwitchProps","value","pathname","className","layout","title","img","src","alt","fixSiderbar","menu","request","result","meunList","appCode","instanceName","ucenter","data","userMenus","map","id","name","icon","IconFont","type","i","undefined","parentID","path","route","location","actionsRender","onChange","i18nProps","tenantProps","avatarProps","menuItemRender","defaultDom","a","onClick","onClickMenuItem","menuIconPopup","proLayoutProps"],"mappings":"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"}