@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.
- package/LICENSE +21 -0
- package/README.md +15 -0
- package/es2017/components/avatar-dropdown/index.d.ts +25 -0
- package/es2017/components/avatar-dropdown/index.js +47 -0
- package/es2017/components/avatar-dropdown/index.js.map +1 -0
- package/es2017/components/avatar-dropdown/index.module.css +23 -0
- package/es2017/components/avatar-dropdown/locale/en_US.d.ts +3 -0
- package/es2017/components/avatar-dropdown/locale/en_US.js +6 -0
- package/es2017/components/avatar-dropdown/locale/en_US.js.map +1 -0
- package/es2017/components/avatar-dropdown/locale/zh_CN.d.ts +3 -0
- package/es2017/components/avatar-dropdown/locale/zh_CN.js +6 -0
- package/es2017/components/avatar-dropdown/locale/zh_CN.js.map +1 -0
- package/es2017/components/collect-providers/index.d.ts +22 -0
- package/es2017/components/collect-providers/index.js +38 -0
- package/es2017/components/collect-providers/index.js.map +1 -0
- package/es2017/components/i18n-dropdown/index.d.ts +10 -0
- package/es2017/components/i18n-dropdown/index.js +44 -0
- package/es2017/components/i18n-dropdown/index.js.map +1 -0
- package/es2017/components/i18n-dropdown/index.module.css +13 -0
- package/es2017/components/icons/index.d.ts +2 -0
- package/es2017/components/icons/index.js +19 -0
- package/es2017/components/icons/index.js.map +1 -0
- package/es2017/components/index.d.ts +12 -0
- package/es2017/components/index.js +15 -0
- package/es2017/components/index.js.map +1 -0
- package/es2017/components/keep-alive/index.d.ts +17 -0
- package/es2017/components/keep-alive/index.js +29 -0
- package/es2017/components/keep-alive/index.js.map +1 -0
- package/es2017/components/layout/index.d.ts +54 -0
- package/es2017/components/layout/index.js +123 -0
- package/es2017/components/layout/index.js.map +1 -0
- package/es2017/components/layout/layout.module.css +46 -0
- package/es2017/components/layout/woocoo.png +0 -0
- package/es2017/components/leave-prompt/index.d.ts +21 -0
- package/es2017/components/leave-prompt/index.js +62 -0
- package/es2017/components/leave-prompt/index.js.map +1 -0
- package/es2017/components/leave-prompt/locale/en_US.d.ts +3 -0
- package/es2017/components/leave-prompt/locale/en_US.js +6 -0
- package/es2017/components/leave-prompt/locale/en_US.js.map +1 -0
- package/es2017/components/leave-prompt/locale/zh_CN.d.ts +3 -0
- package/es2017/components/leave-prompt/locale/zh_CN.js +6 -0
- package/es2017/components/leave-prompt/locale/zh_CN.js.map +1 -0
- package/es2017/components/locale/en_US.d.ts +3 -0
- package/es2017/components/locale/en_US.js +14 -0
- package/es2017/components/locale/en_US.js.map +1 -0
- package/es2017/components/locale/index.d.ts +33 -0
- package/es2017/components/locale/index.js +39 -0
- package/es2017/components/locale/index.js.map +1 -0
- package/es2017/components/locale/zh_CN.d.ts +3 -0
- package/es2017/components/locale/zh_CN.js +14 -0
- package/es2017/components/locale/zh_CN.js.map +1 -0
- package/es2017/components/tenant-dropdown/index.d.ts +18 -0
- package/es2017/components/tenant-dropdown/index.js +80 -0
- package/es2017/components/tenant-dropdown/index.js.map +1 -0
- package/es2017/components/tenant-dropdown/index.module.css +13 -0
- package/es2017/components/tenant-dropdown/locale/en_US.d.ts +3 -0
- package/es2017/components/tenant-dropdown/locale/en_US.js +8 -0
- package/es2017/components/tenant-dropdown/locale/en_US.js.map +1 -0
- package/es2017/components/tenant-dropdown/locale/zh_CN.d.ts +3 -0
- package/es2017/components/tenant-dropdown/locale/zh_CN.js +8 -0
- package/es2017/components/tenant-dropdown/locale/zh_CN.js.map +1 -0
- package/es2017/components/theme-switch/index.d.ts +22 -0
- package/es2017/components/theme-switch/index.js +21 -0
- package/es2017/components/theme-switch/index.js.map +1 -0
- package/es2017/components/theme-switch/locale/en_US.d.ts +3 -0
- package/es2017/components/theme-switch/locale/en_US.js +7 -0
- package/es2017/components/theme-switch/locale/en_US.js.map +1 -0
- package/es2017/components/theme-switch/locale/zh_CN.d.ts +3 -0
- package/es2017/components/theme-switch/locale/zh_CN.js +7 -0
- package/es2017/components/theme-switch/locale/zh_CN.js.map +1 -0
- package/es2017/index.d.ts +1 -0
- package/es2017/index.js +3 -0
- package/es2017/index.js.map +1 -0
- package/es2017/typings.d.ts +1 -0
- package/esm/components/avatar-dropdown/index.d.ts +25 -0
- package/esm/components/avatar-dropdown/index.js +47 -0
- package/esm/components/avatar-dropdown/index.js.map +1 -0
- package/esm/components/avatar-dropdown/index.module.css +23 -0
- package/esm/components/avatar-dropdown/locale/en_US.d.ts +3 -0
- package/esm/components/avatar-dropdown/locale/en_US.js +6 -0
- package/esm/components/avatar-dropdown/locale/en_US.js.map +1 -0
- package/esm/components/avatar-dropdown/locale/zh_CN.d.ts +3 -0
- package/esm/components/avatar-dropdown/locale/zh_CN.js +6 -0
- package/esm/components/avatar-dropdown/locale/zh_CN.js.map +1 -0
- package/esm/components/collect-providers/index.d.ts +22 -0
- package/esm/components/collect-providers/index.js +39 -0
- package/esm/components/collect-providers/index.js.map +1 -0
- package/esm/components/i18n-dropdown/index.d.ts +10 -0
- package/esm/components/i18n-dropdown/index.js +46 -0
- package/esm/components/i18n-dropdown/index.js.map +1 -0
- package/esm/components/i18n-dropdown/index.module.css +13 -0
- package/esm/components/icons/index.d.ts +2 -0
- package/esm/components/icons/index.js +19 -0
- package/esm/components/icons/index.js.map +1 -0
- package/esm/components/index.d.ts +12 -0
- package/esm/components/index.js +15 -0
- package/esm/components/index.js.map +1 -0
- package/esm/components/keep-alive/index.d.ts +17 -0
- package/esm/components/keep-alive/index.js +29 -0
- package/esm/components/keep-alive/index.js.map +1 -0
- package/esm/components/layout/index.d.ts +54 -0
- package/esm/components/layout/index.js +142 -0
- package/esm/components/layout/index.js.map +1 -0
- package/esm/components/layout/layout.module.css +46 -0
- package/esm/components/layout/woocoo.png +0 -0
- package/esm/components/leave-prompt/index.d.ts +21 -0
- package/esm/components/leave-prompt/index.js +62 -0
- package/esm/components/leave-prompt/index.js.map +1 -0
- package/esm/components/leave-prompt/locale/en_US.d.ts +3 -0
- package/esm/components/leave-prompt/locale/en_US.js +6 -0
- package/esm/components/leave-prompt/locale/en_US.js.map +1 -0
- package/esm/components/leave-prompt/locale/zh_CN.d.ts +3 -0
- package/esm/components/leave-prompt/locale/zh_CN.js +6 -0
- package/esm/components/leave-prompt/locale/zh_CN.js.map +1 -0
- package/esm/components/locale/en_US.d.ts +3 -0
- package/esm/components/locale/en_US.js +14 -0
- package/esm/components/locale/en_US.js.map +1 -0
- package/esm/components/locale/index.d.ts +33 -0
- package/esm/components/locale/index.js +39 -0
- package/esm/components/locale/index.js.map +1 -0
- package/esm/components/locale/zh_CN.d.ts +3 -0
- package/esm/components/locale/zh_CN.js +14 -0
- package/esm/components/locale/zh_CN.js.map +1 -0
- package/esm/components/tenant-dropdown/index.d.ts +18 -0
- package/esm/components/tenant-dropdown/index.js +100 -0
- package/esm/components/tenant-dropdown/index.js.map +1 -0
- package/esm/components/tenant-dropdown/index.module.css +13 -0
- package/esm/components/tenant-dropdown/locale/en_US.d.ts +3 -0
- package/esm/components/tenant-dropdown/locale/en_US.js +8 -0
- package/esm/components/tenant-dropdown/locale/en_US.js.map +1 -0
- package/esm/components/tenant-dropdown/locale/zh_CN.d.ts +3 -0
- package/esm/components/tenant-dropdown/locale/zh_CN.js +8 -0
- package/esm/components/tenant-dropdown/locale/zh_CN.js.map +1 -0
- package/esm/components/theme-switch/index.d.ts +22 -0
- package/esm/components/theme-switch/index.js +21 -0
- package/esm/components/theme-switch/index.js.map +1 -0
- package/esm/components/theme-switch/locale/en_US.d.ts +3 -0
- package/esm/components/theme-switch/locale/en_US.js +7 -0
- package/esm/components/theme-switch/locale/en_US.js.map +1 -0
- package/esm/components/theme-switch/locale/zh_CN.d.ts +3 -0
- package/esm/components/theme-switch/locale/zh_CN.js +7 -0
- package/esm/components/theme-switch/locale/zh_CN.js.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.js +3 -0
- package/esm/index.js.map +1 -0
- package/esm/typings.d.ts +1 -0
- package/package.json +71 -0
|
@@ -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","locale","setLocale","zhCN","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","appCode","instanceName","ucenter","data","userMenus","meunList","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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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
.layout {
|
|
2
|
+
:global(.ant-pro-sider-collapsed .ant-menu-item-active) {
|
|
3
|
+
.menuIconPopup {
|
|
4
|
+
display: none;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
:global(.ant-pro-sider-collapsed .ant-menu-submenu-title .anticon) {
|
|
9
|
+
line-height: normal;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
:global(.ant-pro-sider-collapsed .ant-menu-item .anticon) {
|
|
13
|
+
line-height: normal;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
:global(.ant-pro-global-header-header-actions-item .ant-switch) {
|
|
17
|
+
padding-block: 0;
|
|
18
|
+
border-radius: 100px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:global(.ant-layout-content) {
|
|
22
|
+
padding: 0;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:global(.ant-menu-item-active) {
|
|
27
|
+
.menuIconPopup {
|
|
28
|
+
display: block;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
:global(.ant-menu-submenu-popup .ant-pro-base-menu-inline-item-title) {
|
|
33
|
+
align-items: normal;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.menuIconPopup {
|
|
37
|
+
display: none;
|
|
38
|
+
position: absolute;
|
|
39
|
+
top: 50%;
|
|
40
|
+
right: 16px;
|
|
41
|
+
margin-top: -6px;
|
|
42
|
+
|
|
43
|
+
:global(&.anticon) {
|
|
44
|
+
display: none;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface LeavePromptLocale {
|
|
3
|
+
leavePromptTip: string;
|
|
4
|
+
}
|
|
5
|
+
export interface LeavePromptProps {
|
|
6
|
+
/**
|
|
7
|
+
* 站点路径
|
|
8
|
+
*/
|
|
9
|
+
pathname: string;
|
|
10
|
+
/**
|
|
11
|
+
* 插槽
|
|
12
|
+
*/
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 一般在layout引入,主要检测浏览器刷新
|
|
17
|
+
* TODO:浏览器的前进和回退无法拦截
|
|
18
|
+
*/
|
|
19
|
+
declare const _default: (props: LeavePromptProps) => JSX.Element;
|
|
20
|
+
export default _default;
|
|
21
|
+
export declare const useLeavePrompt: () => readonly [() => boolean, (when: boolean) => void];
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "@ice/jsx-runtime/jsx-runtime";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import { useLocale } from "../locale/index";
|
|
4
|
+
const eventName = 'updateLeavePromptContext';
|
|
5
|
+
let when = true;
|
|
6
|
+
/**
|
|
7
|
+
* 一般在layout引入,主要检测浏览器刷新
|
|
8
|
+
* TODO:浏览器的前进和回退无法拦截
|
|
9
|
+
*/ export default ((props)=>{
|
|
10
|
+
const leave = useLocale('LeavePrompt');
|
|
11
|
+
useEffect(()=>{
|
|
12
|
+
when = true;
|
|
13
|
+
}, [
|
|
14
|
+
props.pathname
|
|
15
|
+
]);
|
|
16
|
+
useEffect(()=>{
|
|
17
|
+
window.addEventListener('beforeunload', (event)=>{
|
|
18
|
+
if (when === true) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
event.preventDefault();
|
|
22
|
+
event.returnValue = leave.leavePromptTip;
|
|
23
|
+
return leave.leavePromptTip;
|
|
24
|
+
});
|
|
25
|
+
window.addEventListener(eventName, (event)=>{
|
|
26
|
+
when = event.detail || false;
|
|
27
|
+
});
|
|
28
|
+
}, []);
|
|
29
|
+
return /*#__PURE__*/ _jsx(_Fragment, {
|
|
30
|
+
children: props.children
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
export const useLeavePrompt = ()=>{
|
|
34
|
+
const locale = useLocale('LeavePrompt');
|
|
35
|
+
/**
|
|
36
|
+
* 拦截离开检查确认离开后回调
|
|
37
|
+
* @param callback 确认离开
|
|
38
|
+
*/ const checkLeave = ()=>{
|
|
39
|
+
if (when) {
|
|
40
|
+
return true;
|
|
41
|
+
} else {
|
|
42
|
+
if (confirm(locale.leavePromptTip)) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* 设置是否拦截离开
|
|
50
|
+
* @param when true:不拦截,false:拦截
|
|
51
|
+
*/ const setLeavePromptWhen = (when)=>{
|
|
52
|
+
window.dispatchEvent(new CustomEvent(eventName, {
|
|
53
|
+
detail: when
|
|
54
|
+
}));
|
|
55
|
+
};
|
|
56
|
+
return [
|
|
57
|
+
checkLeave,
|
|
58
|
+
setLeavePromptWhen
|
|
59
|
+
];
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\leave-prompt\\index.tsx"],"sourcesContent":["import { ReactNode, useEffect } from 'react';\r\nimport { useLocale } from '../locale';\r\n\r\nexport interface LeavePromptLocale {\r\n leavePromptTip: string;\r\n}\r\n\r\nexport interface LeavePromptProps {\r\n /**\r\n * 站点路径\r\n */\r\n pathname: string;\r\n /**\r\n * 插槽\r\n */\r\n children: ReactNode;\r\n}\r\n\r\n\r\nconst eventName = 'updateLeavePromptContext'\r\nlet when = true;\r\n\r\n\r\n/**\r\n * 一般在layout引入,主要检测浏览器刷新\r\n * TODO:浏览器的前进和回退无法拦截\r\n */\r\nexport default (props: LeavePromptProps) => {\r\n const leave = useLocale('LeavePrompt')\r\n\r\n useEffect(() => {\r\n when = true;\r\n }, [props.pathname]);\r\n\r\n useEffect(() => {\r\n window.addEventListener('beforeunload', (event: BeforeUnloadEvent) => {\r\n if (when === true) {\r\n return;\r\n }\r\n event.preventDefault();\r\n event.returnValue = leave.leavePromptTip;\r\n return leave.leavePromptTip;\r\n });\r\n\r\n window.addEventListener(eventName, (event: CustomEventInit<boolean>) => {\r\n when = event.detail || false;\r\n });\r\n }, []);\r\n\r\n return <>\r\n {props.children}\r\n </>;\r\n};\r\n\r\n\r\nexport const useLeavePrompt = () => {\r\n const locale = useLocale('LeavePrompt');\r\n\r\n /**\r\n * 拦截离开检查确认离开后回调\r\n * @param callback 确认离开\r\n */\r\n const checkLeave = () => {\r\n if (when) {\r\n return true;\r\n } else {\r\n if (confirm(locale.leavePromptTip)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n /**\r\n * 设置是否拦截离开\r\n * @param when true:不拦截,false:拦截\r\n */\r\n const setLeavePromptWhen = (when: boolean) => {\r\n window.dispatchEvent(new CustomEvent(eventName, {\r\n detail: when,\r\n }))\r\n };\r\n\r\n return [checkLeave, setLeavePromptWhen] as const\r\n}\r\n"],"names":["useEffect","useLocale","eventName","when","props","leave","pathname","window","addEventListener","event","preventDefault","returnValue","leavePromptTip","detail","children","useLeavePrompt","locale","checkLeave","confirm","setLeavePromptWhen","dispatchEvent","CustomEvent"],"mappings":";AAAA,SAAoBA,SAAS,QAAQ,QAAQ;AAC7C,SAASC,SAAS,QAAQ,kBAAY;AAkBtC,MAAMC,YAAY;AAClB,IAAIC,OAAO,IAAI;AAGf;;;CAGC,GACD,eAAe,CAAA,CAACC,QAA4B;IAC1C,MAAMC,QAAQJ,UAAU;IAExBD,UAAU,IAAM;QACdG,OAAO,IAAI;IACb,GAAG;QAACC,MAAME,QAAQ;KAAC;IAEnBN,UAAU,IAAM;QACdO,OAAOC,gBAAgB,CAAC,gBAAgB,CAACC,QAA6B;YACpE,IAAIN,SAAS,IAAI,EAAE;gBACjB;YACF,CAAC;YACDM,MAAMC,cAAc;YACpBD,MAAME,WAAW,GAAGN,MAAMO,cAAc;YACxC,OAAOP,MAAMO,cAAc;QAC7B;QAEAL,OAAOC,gBAAgB,CAACN,WAAW,CAACO,QAAoC;YACtEN,OAAOM,MAAMI,MAAM,IAAI,KAAK;QAC9B;IACF,GAAG,EAAE;IAEL,qBAAO;kBACJT,MAAMU,QAAQ;;AAEnB,CAAA,EAAE;AAGF,OAAO,MAAMC,iBAAiB,IAAM;IAClC,MAAMC,SAASf,UAAU;IAEzB;;;GAGC,GACD,MAAMgB,aAAa,IAAM;QACvB,IAAId,MAAM;YACR,OAAO,IAAI;QACb,OAAO;YACL,IAAIe,QAAQF,OAAOJ,cAAc,GAAG;gBAClC,OAAO,IAAI;YACb,CAAC;QACH,CAAC;QACD,OAAO,KAAK;IACd;IAEA;;;GAGC,GACD,MAAMO,qBAAqB,CAAChB,OAAkB;QAC5CI,OAAOa,aAAa,CAAC,IAAIC,YAAYnB,WAAW;YAC9CW,QAAQV;QACV;IACF;IAEA,OAAO;QAACc;QAAYE;KAAmB;AACzC,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\leave-prompt\\locale\\en_US.ts"],"sourcesContent":["import { LeavePromptLocale } from \"../index\";\r\n\r\nconst locale: LeavePromptLocale = {\r\n leavePromptTip: 'You still have content not saved, please leave'\r\n};\r\n\r\nexport default locale\r\n"],"names":["locale","leavePromptTip"],"mappings":"AAEA,MAAMA,SAA4B;IAChCC,gBAAgB;AAClB;AAEA,eAAeD,OAAM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\leave-prompt\\locale\\zh_CN.ts"],"sourcesContent":["import { LeavePromptLocale } from \"../index\";\r\n\r\nconst locale: LeavePromptLocale = {\r\n leavePromptTip: '您还有内容未保存,是否离开'\r\n};\r\n\r\nexport default locale\r\n"],"names":["locale","leavePromptTip"],"mappings":"AAEA,MAAMA,SAA4B;IAChCC,gBAAgB;AAClB;AAEA,eAAeD,OAAM"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import ThemeSwitch from "../theme-switch/locale/en_US";
|
|
2
|
+
import LeavePrompt from "../leave-prompt/locale/en_US";
|
|
3
|
+
import AvatarDropdown from "../avatar-dropdown/locale/en_US";
|
|
4
|
+
import TenantDropdown from "../tenant-dropdown/locale/en_US";
|
|
5
|
+
const localeValues = {
|
|
6
|
+
locale: 'en-us',
|
|
7
|
+
ThemeSwitch,
|
|
8
|
+
LeavePrompt,
|
|
9
|
+
AvatarDropdown,
|
|
10
|
+
TenantDropdown
|
|
11
|
+
};
|
|
12
|
+
export default localeValues;
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=en_US.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\locale\\en_US.ts"],"sourcesContent":["import { Locale } from \".\";\r\nimport ThemeSwitch from \"../theme-switch/locale/en_US\";\r\nimport LeavePrompt from \"../leave-prompt/locale/en_US\";\r\nimport AvatarDropdown from \"../avatar-dropdown/locale/en_US\";\r\nimport TenantDropdown from \"../tenant-dropdown/locale/en_US\";\r\n\r\nconst localeValues: Locale = {\r\n locale: 'en-us',\r\n ThemeSwitch,\r\n LeavePrompt,\r\n AvatarDropdown,\r\n TenantDropdown,\r\n}\r\n\r\nexport default localeValues\r\n"],"names":["ThemeSwitch","LeavePrompt","AvatarDropdown","TenantDropdown","localeValues","locale"],"mappings":"AACA,OAAOA,iBAAiB,+BAA+B;AACvD,OAAOC,iBAAiB,+BAA+B;AACvD,OAAOC,oBAAoB,kCAAkC;AAC7D,OAAOC,oBAAoB,kCAAkC;AAE7D,MAAMC,eAAuB;IAC3BC,QAAQ;IACRL;IACAC;IACAC;IACAC;AACF;AAEA,eAAeC,aAAY"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { TenantDropdownLocale } from '../tenant-dropdown';
|
|
3
|
+
import { ThemeSwitchLocale } from '../theme-switch';
|
|
4
|
+
import { LeavePromptLocale } from '../leave-prompt';
|
|
5
|
+
import { AvatarDropdownLocale } from '../avatar-dropdown';
|
|
6
|
+
export interface Locale {
|
|
7
|
+
locale: string;
|
|
8
|
+
ThemeSwitch: ThemeSwitchLocale;
|
|
9
|
+
LeavePrompt: LeavePromptLocale;
|
|
10
|
+
AvatarDropdown: AvatarDropdownLocale;
|
|
11
|
+
TenantDropdown: TenantDropdownLocale;
|
|
12
|
+
}
|
|
13
|
+
export declare enum LocaleType {
|
|
14
|
+
zhCN = "zh-CN",
|
|
15
|
+
enUS = "en-US"
|
|
16
|
+
}
|
|
17
|
+
export interface BasicProviderProps {
|
|
18
|
+
locale: LocaleType;
|
|
19
|
+
children?: React.ReactNode;
|
|
20
|
+
}
|
|
21
|
+
export declare const BasicContext: import("react").Context<BasicProviderProps>;
|
|
22
|
+
/**
|
|
23
|
+
* 组件上使用
|
|
24
|
+
*/
|
|
25
|
+
declare const _default: (props: BasicProviderProps) => JSX.Element;
|
|
26
|
+
export default _default;
|
|
27
|
+
export type LocaleComponentName = Exclude<keyof Locale, 'locale'>;
|
|
28
|
+
/**
|
|
29
|
+
* hook
|
|
30
|
+
* @param componentName
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
export declare const useLocale: <C extends LocaleComponentName>(componentName: C) => Locale[C];
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
2
|
+
import { jsx as _jsx } from "@ice/jsx-runtime/jsx-runtime";
|
|
3
|
+
import { createContext, useContext } from "react";
|
|
4
|
+
import zhCN from "./zh_CN";
|
|
5
|
+
import enUS from "./en_US";
|
|
6
|
+
export var LocaleType;
|
|
7
|
+
(function(LocaleType) {
|
|
8
|
+
LocaleType["zhCN"] = "zh-CN";
|
|
9
|
+
LocaleType["enUS"] = "en-US";
|
|
10
|
+
})(LocaleType || (LocaleType = {}));
|
|
11
|
+
// 定义语言上下文
|
|
12
|
+
export const BasicContext = /*#__PURE__*/ createContext({
|
|
13
|
+
locale: LocaleType.zhCN
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* 组件上使用
|
|
17
|
+
*/ export default ((props)=>{
|
|
18
|
+
const { locale , children } = props;
|
|
19
|
+
return /*#__PURE__*/ _jsx(BasicContext.Provider, {
|
|
20
|
+
value: {
|
|
21
|
+
locale: locale
|
|
22
|
+
},
|
|
23
|
+
children: children
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* hook
|
|
28
|
+
* @param componentName
|
|
29
|
+
* @returns
|
|
30
|
+
*/ export const useLocale = (componentName)=>{
|
|
31
|
+
const ctx = useContext(BasicContext);
|
|
32
|
+
if (ctx.locale === LocaleType.enUS) {
|
|
33
|
+
return _object_spread({}, enUS[componentName]);
|
|
34
|
+
}
|
|
35
|
+
// 默认zhCN
|
|
36
|
+
return _object_spread({}, zhCN[componentName]);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\locale\\index.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\r\nimport zhCN from \"./zh_CN\";\r\nimport enUS from \"./en_US\";\r\nimport { TenantDropdownLocale } from '../tenant-dropdown';\r\nimport { ThemeSwitchLocale } from '../theme-switch';\r\nimport { LeavePromptLocale } from '../leave-prompt';\r\nimport { AvatarDropdownLocale } from '../avatar-dropdown';\r\n\r\nexport interface Locale {\r\n locale: string;\r\n ThemeSwitch: ThemeSwitchLocale;\r\n LeavePrompt: LeavePromptLocale;\r\n AvatarDropdown: AvatarDropdownLocale;\r\n TenantDropdown: TenantDropdownLocale;\r\n}\r\n\r\nexport enum LocaleType {\r\n zhCN = \"zh-CN\",\r\n enUS = \"en-US\",\r\n}\r\n\r\nexport interface BasicProviderProps {\r\n locale: LocaleType;\r\n children?: React.ReactNode;\r\n}\r\n\r\n// 定义语言上下文\r\nexport const BasicContext = createContext<BasicProviderProps>({\r\n locale: LocaleType.zhCN\r\n});\r\n\r\n/**\r\n * 组件上使用\r\n */\r\nexport default (props: BasicProviderProps) => {\r\n const { locale, children } = props;\r\n return <BasicContext.Provider value={{ locale: locale }}>{children}</BasicContext.Provider>\r\n}\r\n\r\nexport type LocaleComponentName = Exclude<keyof Locale, 'locale'>;\r\n/**\r\n * hook\r\n * @param componentName\r\n * @returns\r\n */\r\nexport const useLocale = <C extends LocaleComponentName>(componentName: C) => {\r\n const ctx = useContext<BasicProviderProps>(BasicContext);\r\n if (ctx.locale === LocaleType.enUS) {\r\n return { ...enUS[componentName] }\r\n }\r\n // 默认zhCN\r\n return { ...zhCN[componentName] }\r\n}\r\n"],"names":["createContext","useContext","zhCN","enUS","LocaleType","BasicContext","locale","props","children","Provider","value","useLocale","componentName","ctx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,QAAQ;AAClD,OAAOC,UAAU,UAAU;AAC3B,OAAOC,UAAU,UAAU;WAcpB;UAAKC,UAAU;IAAVA,WACVF,UAAO;IADGE,WAEVD,UAAO;GAFGC,eAAAA;AAUZ,UAAU;AACV,OAAO,MAAMC,6BAAeL,cAAkC;IAC5DM,QAAQF,WAAWF,IAAI;AACzB,GAAG;AAEH;;CAEC,GACD,eAAe,CAAA,CAACK,QAA8B;IAC5C,MAAM,EAAED,OAAM,EAAEE,SAAQ,EAAE,GAAGD;IAC7B,qBAAO,KAACF,aAAaI,QAAQ;QAACC,OAAO;YAAEJ,QAAQA;QAAO;kBAAIE;;AAC5D,CAAA,EAAC;AAGD;;;;CAIC,GACD,OAAO,MAAMG,YAAY,CAAgCC,gBAAqB;IAC5E,MAAMC,MAAMZ,WAA+BI;IAC3C,IAAIQ,IAAIP,MAAM,KAAKF,WAAWD,IAAI,EAAE;QAClC,OAAO,mBAAKA,IAAI,CAACS,cAAc;IACjC,CAAC;IACD,SAAS;IACT,OAAO,mBAAKV,IAAI,CAACU,cAAc;AACjC,EAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import ThemeSwitch from "../theme-switch/locale/zh_CN";
|
|
2
|
+
import LeavePrompt from "../leave-prompt/locale/zh_CN";
|
|
3
|
+
import AvatarDropdown from "../avatar-dropdown/locale/zh_CN";
|
|
4
|
+
import TenantDropdown from "../tenant-dropdown/locale/zh_CN";
|
|
5
|
+
const localeValues = {
|
|
6
|
+
locale: 'zh-cn',
|
|
7
|
+
ThemeSwitch,
|
|
8
|
+
LeavePrompt,
|
|
9
|
+
AvatarDropdown,
|
|
10
|
+
TenantDropdown
|
|
11
|
+
};
|
|
12
|
+
export default localeValues;
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=zh_CN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\locale\\zh_CN.ts"],"sourcesContent":["import { Locale } from \".\";\r\nimport ThemeSwitch from \"../theme-switch/locale/zh_CN\";\r\nimport LeavePrompt from \"../leave-prompt/locale/zh_CN\";\r\nimport AvatarDropdown from \"../avatar-dropdown/locale/zh_CN\";\r\nimport TenantDropdown from \"../tenant-dropdown/locale/zh_CN\";\r\n\r\nconst localeValues: Locale = {\r\n locale: 'zh-cn',\r\n ThemeSwitch,\r\n LeavePrompt,\r\n AvatarDropdown,\r\n TenantDropdown,\r\n}\r\n\r\nexport default localeValues\r\n"],"names":["ThemeSwitch","LeavePrompt","AvatarDropdown","TenantDropdown","localeValues","locale"],"mappings":"AACA,OAAOA,iBAAiB,+BAA+B;AACvD,OAAOC,iBAAiB,+BAA+B;AACvD,OAAOC,oBAAoB,kCAAkC;AAC7D,OAAOC,oBAAoB,kCAAkC;AAE7D,MAAMC,eAAuB;IAC3BC,QAAQ;IACRL;IACAC;IACAC;IACAC;AACF;AAEA,eAAeC,aAAY"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface TenantDropdownLocale {
|
|
3
|
+
switchTipTitle: string;
|
|
4
|
+
confirmTitle: string;
|
|
5
|
+
confirmContent: string;
|
|
6
|
+
}
|
|
7
|
+
export interface TenantDropdownProps {
|
|
8
|
+
/**
|
|
9
|
+
* 当前 tenantId
|
|
10
|
+
*/
|
|
11
|
+
value: string;
|
|
12
|
+
/**
|
|
13
|
+
* value变更事件 (value: string) => void;
|
|
14
|
+
*/
|
|
15
|
+
onChange: (value: string) => void;
|
|
16
|
+
}
|
|
17
|
+
declare const _default: (props: TenantDropdownProps) => JSX.Element;
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "@ice/jsx-runtime/jsx-runtime";
|
|
2
|
+
import { Dropdown, Modal } from "antd";
|
|
3
|
+
import { useCallback, useEffect, useState } from "react";
|
|
4
|
+
import styles from "./index.module.css";
|
|
5
|
+
import { useLocale } from "../locale/index";
|
|
6
|
+
import { gql } from "urql";
|
|
7
|
+
import { query } from "@knockout-js/ice-urql/request";
|
|
8
|
+
import { iceUrqlInstance } from "../index";
|
|
9
|
+
const userRootOrgListQuery = gql(/* GraphQL */ `query userRootOrgs{
|
|
10
|
+
userRootOrgs{
|
|
11
|
+
id,parentID,kind,domain,code,name,status,path,displaySort,countryCode,timezone
|
|
12
|
+
}
|
|
13
|
+
}`);
|
|
14
|
+
export default ((props)=>{
|
|
15
|
+
var _menu_items;
|
|
16
|
+
const locale = useLocale('TenantDropdown'), [list, setList] = useState([]), [info, setInfo] = useState(undefined), [menu, setMenu] = useState(undefined);
|
|
17
|
+
const getRequest = async ()=>{
|
|
18
|
+
var _result_data;
|
|
19
|
+
const result = await query(userRootOrgListQuery, {}, {
|
|
20
|
+
instanceName: iceUrqlInstance.ucenter
|
|
21
|
+
});
|
|
22
|
+
if ((_result_data = result.data) === null || _result_data === void 0 ? void 0 : _result_data.userRootOrgs.length) {
|
|
23
|
+
const orgList = result.data.userRootOrgs;
|
|
24
|
+
setList(orgList);
|
|
25
|
+
}
|
|
26
|
+
}, setValue = ()=>{
|
|
27
|
+
setInfo(list.find((item)=>item.id == props.value));
|
|
28
|
+
setMenu({
|
|
29
|
+
items: list.filter((item)=>{
|
|
30
|
+
return (item === null || item === void 0 ? void 0 : item.id) != props.value;
|
|
31
|
+
}).map((item)=>{
|
|
32
|
+
return {
|
|
33
|
+
key: item.id,
|
|
34
|
+
label: item.name,
|
|
35
|
+
onClick: menuItemClick
|
|
36
|
+
};
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
}, menuItemClick = useCallback(({ key })=>{
|
|
40
|
+
Modal.confirm({
|
|
41
|
+
title: locale.confirmTitle,
|
|
42
|
+
content: locale.confirmContent,
|
|
43
|
+
onOk: ()=>{
|
|
44
|
+
props.onChange(key);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}, []);
|
|
48
|
+
useEffect(()=>{
|
|
49
|
+
if (document.hidden) {
|
|
50
|
+
const tipStr = locale.switchTipTitle;
|
|
51
|
+
document.title = tipStr;
|
|
52
|
+
document.body.innerHTML = `<div style="width:370px;margin:40px auto 0 auto;">${tipStr}</div>`;
|
|
53
|
+
window.close();
|
|
54
|
+
} else {
|
|
55
|
+
setValue();
|
|
56
|
+
}
|
|
57
|
+
}, [
|
|
58
|
+
props.value
|
|
59
|
+
]);
|
|
60
|
+
useEffect(()=>{
|
|
61
|
+
setValue();
|
|
62
|
+
}, [
|
|
63
|
+
list
|
|
64
|
+
]);
|
|
65
|
+
useEffect(()=>{
|
|
66
|
+
getRequest();
|
|
67
|
+
}, []);
|
|
68
|
+
return info ? /*#__PURE__*/ _jsx(Dropdown, {
|
|
69
|
+
menu: menu,
|
|
70
|
+
disabled: (menu === null || menu === void 0 ? void 0 : (_menu_items = menu.items) === null || _menu_items === void 0 ? void 0 : _menu_items.length) === 0,
|
|
71
|
+
children: /*#__PURE__*/ _jsx("span", {
|
|
72
|
+
className: styles.action,
|
|
73
|
+
children: /*#__PURE__*/ _jsx("span", {
|
|
74
|
+
children: info.name
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
}) : /*#__PURE__*/ _jsx(_Fragment, {});
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\tenant-dropdown\\index.tsx"],"sourcesContent":["import { Dropdown, MenuProps, Modal } from 'antd';\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport styles from './index.module.css';\r\nimport { useLocale } from '../locale';\r\nimport { gql } from 'urql'\r\nimport { Org, UserRootOrgsQuery, UserRootOrgsQueryVariables } from '@knockout-js/api';\r\nimport { query } from '@knockout-js/ice-urql/request';\r\nimport { iceUrqlInstance } from '..';\r\n\r\nexport interface TenantDropdownLocale {\r\n switchTipTitle: string;\r\n confirmTitle: string;\r\n confirmContent: string;\r\n}\r\n\r\nexport interface TenantDropdownProps {\r\n /**\r\n * 当前 tenantId\r\n */\r\n value: string;\r\n /**\r\n * value变更事件 (value: string) => void;\r\n */\r\n onChange: (value: string) => void;\r\n}\r\n\r\nconst userRootOrgListQuery = gql(/* GraphQL */`query userRootOrgs{\r\n userRootOrgs{\r\n id,parentID,kind,domain,code,name,status,path,displaySort,countryCode,timezone\r\n }\r\n}`);\r\n\r\nexport default (props: TenantDropdownProps) => {\r\n const locale = useLocale('TenantDropdown'),\r\n [list, setList] = useState<Array<Org>>([]),\r\n [info, setInfo] = useState<Org | undefined>(undefined),\r\n [menu, setMenu] = useState<MenuProps | undefined>(undefined);\r\n\r\n const\r\n getRequest = async () => {\r\n const result = await query<UserRootOrgsQuery, UserRootOrgsQueryVariables>(userRootOrgListQuery, {}, { instanceName: iceUrqlInstance.ucenter });\r\n if (result.data?.userRootOrgs.length) {\r\n const orgList = result.data.userRootOrgs as Org[]\r\n setList(orgList)\r\n }\r\n },\r\n setValue = () => {\r\n setInfo(list.find(item => item.id == props.value));\r\n setMenu({\r\n items: list.filter(item => item?.id != props.value).map(item => {\r\n return {\r\n key: item.id,\r\n label: item.name,\r\n onClick: menuItemClick\r\n };\r\n }),\r\n });\r\n },\r\n menuItemClick = useCallback(({ key }: { key: string }) => {\r\n Modal.confirm({\r\n title: locale.confirmTitle,\r\n content: locale.confirmContent,\r\n onOk: () => {\r\n props.onChange(key)\r\n },\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (document.hidden) {\r\n const tipStr = locale.switchTipTitle;\r\n document.title = tipStr;\r\n document.body.innerHTML = `<div style=\"width:370px;margin:40px auto 0 auto;\">${tipStr}</div>`;\r\n window.close();\r\n } else {\r\n setValue()\r\n }\r\n }, [props.value]);\r\n\r\n useEffect(() => {\r\n setValue()\r\n }, [list]);\r\n\r\n useEffect(() => {\r\n getRequest();\r\n }, []);\r\n\r\n return info ? <Dropdown menu={menu} disabled={menu?.items?.length === 0}>\r\n <span className={styles.action}>\r\n <span>{info.name}</span>\r\n </span>\r\n </Dropdown> : <></>;\r\n};\r\n"],"names":["Dropdown","Modal","useCallback","useEffect","useState","styles","useLocale","gql","query","iceUrqlInstance","userRootOrgListQuery","props","menu","locale","list","setList","info","setInfo","undefined","setMenu","getRequest","result","instanceName","ucenter","data","userRootOrgs","length","orgList","setValue","find","item","id","value","items","filter","map","key","label","name","onClick","menuItemClick","confirm","title","confirmTitle","content","confirmContent","onOk","onChange","document","hidden","tipStr","switchTipTitle","body","innerHTML","window","close","disabled","span","className","action"],"mappings":";AAAA,SAASA,QAAQ,EAAaC,KAAK,QAAQ,OAAO;AAClD,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AACzD,OAAOC,YAAY,qBAAqB;AACxC,SAASC,SAAS,QAAQ,kBAAY;AACtC,SAASC,GAAG,QAAQ,OAAM;AAE1B,SAASC,KAAK,QAAQ,gCAAgC;AACtD,SAASC,eAAe,QAAQ,WAAK;AAmBrC,MAAMC,uBAAuBH,IAAI,WAAW,GAAE,CAAC;;;;CAI9C,CAAC;AAEF,eAAe,CAAA,CAACI,QAA+B;QAuDCC;IAtD9C,MAAMC,SAASP,UAAU,mBACvB,CAACQ,MAAMC,QAAQ,GAAGX,SAAqB,EAAE,GACzC,CAACY,MAAMC,QAAQ,GAAGb,SAA0Bc,YAC5C,CAACN,MAAMO,QAAQ,GAAGf,SAAgCc;IAEpD,MACEE,aAAa,UAAY;YAEnBC;QADJ,MAAMA,SAAS,MAAMb,MAAqDE,sBAAsB,CAAC,GAAG;YAAEY,cAAcb,gBAAgBc,OAAO;QAAC;QAC5I,IAAIF,CAAAA,eAAAA,OAAOG,IAAI,cAAXH,0BAAAA,KAAAA,IAAAA,aAAaI,aAAaC,MAAM,EAAE;YACpC,MAAMC,UAAUN,OAAOG,IAAI,CAACC,YAAY;YACxCV,QAAQY;QACV,CAAC;IACH,GACAC,WAAW,IAAM;QACfX,QAAQH,KAAKe,IAAI,CAACC,CAAAA,OAAQA,KAAKC,EAAE,IAAIpB,MAAMqB,KAAK;QAChDb,QAAQ;YACNc,OAAOnB,KAAKoB,MAAM,CAACJ,CAAAA;gBAAQA,OAAAA,CAAAA,iBAAAA,kBAAAA,KAAAA,IAAAA,KAAMC,EAAE,AAAD,KAAKpB,MAAMqB,KAAK;eAAEG,GAAG,CAACL,CAAAA,OAAQ;gBAC9D,OAAO;oBACLM,KAAKN,KAAKC,EAAE;oBACZM,OAAOP,KAAKQ,IAAI;oBAChBC,SAASC;gBACX;YACF;QACF;IACF,GACAA,gBAAgBtC,YAAY,CAAC,EAAEkC,IAAG,EAAmB,GAAK;QACxDnC,MAAMwC,OAAO,CAAC;YACZC,OAAO7B,OAAO8B,YAAY;YAC1BC,SAAS/B,OAAOgC,cAAc;YAC9BC,MAAM,IAAM;gBACVnC,MAAMoC,QAAQ,CAACX;YACjB;QACF;IACF,GAAG,EAAE;IAEPjC,UAAU,IAAM;QACd,IAAI6C,SAASC,MAAM,EAAE;YACnB,MAAMC,SAASrC,OAAOsC,cAAc;YACpCH,SAASN,KAAK,GAAGQ;YACjBF,SAASI,IAAI,CAACC,SAAS,GAAG,CAAC,kDAAkD,EAAEH,OAAO,MAAM,CAAC;YAC7FI,OAAOC,KAAK;QACd,OAAO;YACL3B;QACF,CAAC;IACH,GAAG;QAACjB,MAAMqB,KAAK;KAAC;IAEhB7B,UAAU,IAAM;QACdyB;IACF,GAAG;QAACd;KAAK;IAETX,UAAU,IAAM;QACdiB;IACF,GAAG,EAAE;IAEL,OAAOJ,qBAAO,KAAChB;QAASY,MAAMA;QAAM4C,UAAU5C,CAAAA,iBAAAA,kBAAAA,KAAAA,IAAAA,CAAAA,cAAAA,KAAMqB,KAAK,cAAXrB,yBAAAA,KAAAA,IAAAA,YAAac,MAAF,AAAD,MAAc;kBACpE,cAAA,KAAC+B;YAAKC,WAAWrD,OAAOsD,MAAM;sBAC5B,cAAA,KAACF;0BAAMzC,KAAKsB,IAAI;;;uBAEN,mBAAK;AACrB,CAAA,EAAE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const locale = {
|
|
2
|
+
switchTipTitle: "Your organization has been switched, please manually close or refresh the current page",
|
|
3
|
+
confirmTitle: "Tenant switch reminder",
|
|
4
|
+
confirmContent: "Ensure that no edit content is not saved when you switch tenants. Otherwise, the operation will be forcibly prohibited or closed on other browsing pages"
|
|
5
|
+
};
|
|
6
|
+
export default locale;
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=en_US.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\tenant-dropdown\\locale\\en_US.ts"],"sourcesContent":["import { TenantDropdownLocale } from \"../index\";\r\n\r\nconst locale: TenantDropdownLocale = {\r\n switchTipTitle: \"Your organization has been switched, please manually close or refresh the current page\",\r\n confirmTitle: \"Tenant switch reminder\",\r\n confirmContent: \"Ensure that no edit content is not saved when you switch tenants. Otherwise, the operation will be forcibly prohibited or closed on other browsing pages\"\r\n};\r\n\r\nexport default locale\r\n"],"names":["locale","switchTipTitle","confirmTitle","confirmContent"],"mappings":"AAEA,MAAMA,SAA+B;IACnCC,gBAAgB;IAChBC,cAAc;IACdC,gBAAgB;AAClB;AAEA,eAAeH,OAAM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\tenant-dropdown\\locale\\zh_CN.ts"],"sourcesContent":["import { TenantDropdownLocale } from \"../index\";\r\n\r\nconst locale: TenantDropdownLocale = {\r\n switchTipTitle: \"您的组织已被切换,请手动关闭或者刷新当前页面\",\r\n confirmTitle: \"租户切换提醒\",\r\n confirmContent: \"切换租户时请确认已无编辑内容未保存,否则其他浏览页面将强制禁止操作或关闭\"\r\n};\r\n\r\nexport default locale\r\n"],"names":["locale","switchTipTitle","confirmTitle","confirmContent"],"mappings":"AAEA,MAAMA,SAA+B;IACnCC,gBAAgB;IAChBC,cAAc;IACdC,gBAAgB;AAClB;AAEA,eAAeH,OAAM"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SwitchProps } from 'antd';
|
|
3
|
+
export interface ThemeSwitchLocale {
|
|
4
|
+
bright: string;
|
|
5
|
+
dark: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ThemeSwitchProps {
|
|
8
|
+
/**
|
|
9
|
+
* 值
|
|
10
|
+
*/
|
|
11
|
+
value: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* switch的设置
|
|
14
|
+
*/
|
|
15
|
+
switchProps?: SwitchProps;
|
|
16
|
+
/**
|
|
17
|
+
* 值变更事件 (value: boolean) => void;
|
|
18
|
+
*/
|
|
19
|
+
onChange: (value: boolean) => void;
|
|
20
|
+
}
|
|
21
|
+
declare const ThemeSwitch: React.FC<ThemeSwitchProps>;
|
|
22
|
+
export default ThemeSwitch;
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
import React from "react";
|
|
5
|
+
import { Switch } from "antd";
|
|
6
|
+
import { useLocale } from "../locale/index";
|
|
7
|
+
const ThemeSwitch = (props)=>{
|
|
8
|
+
const locale = useLocale('ThemeSwitch');
|
|
9
|
+
return /*#__PURE__*/ _jsx(Switch, _object_spread_props(_object_spread({
|
|
10
|
+
checkedChildren: locale.bright,
|
|
11
|
+
unCheckedChildren: locale.dark
|
|
12
|
+
}, props.switchProps), {
|
|
13
|
+
checked: props.value,
|
|
14
|
+
onChange: (checked)=>{
|
|
15
|
+
props.onChange(checked);
|
|
16
|
+
}
|
|
17
|
+
}));
|
|
18
|
+
};
|
|
19
|
+
export default ThemeSwitch;
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\theme-switch\\index.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Switch, SwitchProps } from 'antd';\r\nimport { useLocale } from '../locale';\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 * switch的设置\r\n */\r\n switchProps?: SwitchProps;\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 const locale = useLocale('ThemeSwitch')\r\n return (\r\n <Switch\r\n checkedChildren={locale.bright}\r\n unCheckedChildren={locale.dark}\r\n {...props.switchProps}\r\n checked={props.value}\r\n onChange={(checked) => {\r\n props.onChange(checked)\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default ThemeSwitch;\r\n"],"names":["React","Switch","useLocale","ThemeSwitch","props","locale","checkedChildren","bright","unCheckedChildren","dark","switchProps","checked","value","onChange"],"mappings":";;;AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,MAAM,QAAqB,OAAO;AAC3C,SAASC,SAAS,QAAQ,kBAAY;AAsBtC,MAAMC,cAA0C,CAACC,QAA4B;IAC3E,MAAMC,SAASH,UAAU;IACzB,qBACE,KAACD;QACCK,iBAAiBD,OAAOE,MAAM;QAC9BC,mBAAmBH,OAAOI,IAAI;OAC1BL,MAAMM,WAAW;QACrBC,SAASP,MAAMQ,KAAK;QACpBC,UAAU,CAACF,UAAY;YACrBP,MAAMS,QAAQ,CAACF;QACjB;;AAGN;AAEA,eAAeR,YAAY"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\theme-switch\\locale\\en_US.ts"],"sourcesContent":["import { ThemeSwitchLocale } from \"../index\";\r\n\r\nconst locale: ThemeSwitchLocale = {\r\n bright: 'bright',\r\n dark: 'dark'\r\n};\r\n\r\nexport default locale\r\n"],"names":["locale","bright","dark"],"mappings":"AAEA,MAAMA,SAA4B;IAChCC,QAAQ;IACRC,MAAM;AACR;AAEA,eAAeF,OAAM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\components\\theme-switch\\locale\\zh_CN.ts"],"sourcesContent":["import { ThemeSwitchLocale } from \"../index\";\r\n\r\nconst locale: ThemeSwitchLocale = {\r\n bright: '亮',\r\n dark: '暗'\r\n};\r\n\r\nexport default locale\r\n"],"names":["locale","bright","dark"],"mappings":"AAEA,MAAMA,SAA4B;IAChCC,QAAQ;IACRC,MAAM;AACR;AAEA,eAAeF,OAAM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components';
|
package/es2017/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[".\\src\\index.tsx"],"sourcesContent":["export * from './components';\r\n"],"names":[],"mappings":"AAAA,cAAc,qBAAe"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/// <reference types="@ice/pkg/types" />
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { MenuProps } from 'antd';
|
|
3
|
+
export interface AvatarDropdownLocale {
|
|
4
|
+
logout: string;
|
|
5
|
+
}
|
|
6
|
+
export interface AvatarDropdownProps {
|
|
7
|
+
/**
|
|
8
|
+
* 用户名
|
|
9
|
+
*/
|
|
10
|
+
name?: string;
|
|
11
|
+
/**
|
|
12
|
+
* 头像
|
|
13
|
+
*/
|
|
14
|
+
avatar?: string;
|
|
15
|
+
/**
|
|
16
|
+
* ant的
|
|
17
|
+
*/
|
|
18
|
+
menuProps?: MenuProps;
|
|
19
|
+
/**
|
|
20
|
+
* 单击退出事件 () => void;
|
|
21
|
+
*/
|
|
22
|
+
onLogoutClick?: () => void;
|
|
23
|
+
}
|
|
24
|
+
declare const AvatarDropdown: (props: AvatarDropdownProps) => JSX.Element;
|
|
25
|
+
export default AvatarDropdown;
|