@knockout-js/layout 0.0.4-beta.1 → 0.1.1-beta.0
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/_util/index.d.ts +55 -0
- package/es2017/components/_util/index.js +96 -0
- package/es2017/components/_util/index.js.map +1 -0
- package/es2017/components/aggregate-menu/index.d.ts +7 -2
- package/es2017/components/aggregate-menu/index.js +160 -73
- package/es2017/components/aggregate-menu/index.js.map +1 -1
- package/es2017/components/aggregate-menu/index.module.css +69 -57
- package/es2017/components/avatar-dropdown/index.js +1 -1
- package/es2017/components/avatar-dropdown/index.js.map +1 -1
- package/es2017/components/i18n-dropdown/index.js.map +1 -1
- package/es2017/components/index.d.ts +2 -3
- package/es2017/components/index.js +3 -4
- package/es2017/components/index.js.map +1 -1
- package/es2017/components/layout/index.d.ts +17 -2
- package/es2017/components/layout/index.js +19 -29
- package/es2017/components/layout/index.js.map +1 -1
- package/es2017/components/layout/layout.module.css +20 -26
- package/es2017/components/locale/en_US.js +3 -1
- package/es2017/components/locale/en_US.js.map +1 -1
- package/es2017/components/locale/index.d.ts +2 -0
- package/es2017/components/locale/index.js.map +1 -1
- package/es2017/components/locale/zh_CN.js +3 -1
- package/es2017/components/locale/zh_CN.js.map +1 -1
- package/es2017/components/modal/index.module.css +4 -4
- package/es2017/components/msg-dropdown/index.d.ts +28 -0
- package/es2017/components/msg-dropdown/index.js +129 -0
- package/es2017/components/msg-dropdown/index.js.map +1 -0
- package/es2017/components/msg-dropdown/index.module.css +33 -0
- package/es2017/components/msg-dropdown/locale/en_US.d.ts +3 -0
- package/es2017/components/msg-dropdown/locale/en_US.js +7 -0
- package/es2017/components/msg-dropdown/locale/en_US.js.map +1 -0
- package/es2017/components/msg-dropdown/locale/zh_CN.d.ts +3 -0
- package/es2017/components/msg-dropdown/locale/zh_CN.js +7 -0
- package/es2017/components/msg-dropdown/locale/zh_CN.js.map +1 -0
- package/es2017/components/tenant-dropdown/index.d.ts +1 -1
- package/es2017/components/tenant-dropdown/index.js +2 -2
- package/es2017/components/tenant-dropdown/index.js.map +1 -1
- package/es2017/components/upload-file/index.d.ts +0 -2
- package/es2017/components/upload-file/index.js +1 -13
- package/es2017/components/upload-file/index.js.map +1 -1
- package/es2017/components/upload-file/index.module.css +3 -3
- package/es2017/components/upload-file/uploadAvatar.js +4 -4
- package/es2017/components/upload-file/uploadAvatar.js.map +1 -1
- package/es2017/components/upload-file/uploadMultiple.js +5 -5
- package/es2017/components/upload-file/uploadMultiple.js.map +1 -1
- package/es2017/components/upload-file/uploadTemp.js +6 -6
- package/es2017/components/upload-file/uploadTemp.js.map +1 -1
- package/esm/components/_util/index.d.ts +55 -0
- package/esm/components/_util/index.js +103 -0
- package/esm/components/_util/index.js.map +1 -0
- package/esm/components/aggregate-menu/index.d.ts +7 -2
- package/esm/components/aggregate-menu/index.js +262 -74
- package/esm/components/aggregate-menu/index.js.map +1 -1
- package/esm/components/aggregate-menu/index.module.css +69 -57
- package/esm/components/avatar-dropdown/index.js +1 -1
- package/esm/components/avatar-dropdown/index.js.map +1 -1
- package/esm/components/i18n-dropdown/index.js.map +1 -1
- package/esm/components/index.d.ts +2 -3
- package/esm/components/index.js +3 -4
- package/esm/components/index.js.map +1 -1
- package/esm/components/layout/index.d.ts +17 -2
- package/esm/components/layout/index.js +19 -34
- package/esm/components/layout/index.js.map +1 -1
- package/esm/components/layout/layout.module.css +20 -26
- package/esm/components/locale/en_US.js +3 -1
- package/esm/components/locale/en_US.js.map +1 -1
- package/esm/components/locale/index.d.ts +2 -0
- package/esm/components/locale/index.js.map +1 -1
- package/esm/components/locale/zh_CN.js +3 -1
- package/esm/components/locale/zh_CN.js.map +1 -1
- package/esm/components/modal/index.module.css +4 -4
- package/esm/components/msg-dropdown/index.d.ts +28 -0
- package/esm/components/msg-dropdown/index.js +155 -0
- package/esm/components/msg-dropdown/index.js.map +1 -0
- package/esm/components/msg-dropdown/index.module.css +33 -0
- package/esm/components/msg-dropdown/locale/en_US.d.ts +3 -0
- package/esm/components/msg-dropdown/locale/en_US.js +7 -0
- package/esm/components/msg-dropdown/locale/en_US.js.map +1 -0
- package/esm/components/msg-dropdown/locale/zh_CN.d.ts +3 -0
- package/esm/components/msg-dropdown/locale/zh_CN.js +7 -0
- package/esm/components/msg-dropdown/locale/zh_CN.js.map +1 -0
- package/esm/components/tenant-dropdown/index.d.ts +1 -1
- package/esm/components/tenant-dropdown/index.js +2 -2
- package/esm/components/tenant-dropdown/index.js.map +1 -1
- package/esm/components/upload-file/index.d.ts +0 -2
- package/esm/components/upload-file/index.js +1 -13
- package/esm/components/upload-file/index.js.map +1 -1
- package/esm/components/upload-file/index.module.css +3 -3
- package/esm/components/upload-file/uploadAvatar.js +4 -4
- package/esm/components/upload-file/uploadAvatar.js.map +1 -1
- package/esm/components/upload-file/uploadMultiple.js +5 -5
- package/esm/components/upload-file/uploadMultiple.js.map +1 -1
- package/esm/components/upload-file/uploadTemp.js +6 -6
- package/esm/components/upload-file/uploadTemp.js.map +1 -1
- package/package.json +8 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\aggregate-menu\\index.tsx"],"sourcesContent":["import { CloseOutlined, DragOutlined, SearchOutlined, StarOutlined } from \"@ant-design/icons\"\r\nimport { useCallback, useEffect, useState } from \"react\"\r\nimport styles from \"./index.module.css\"\r\nimport { Drawer, Empty, Input, Space } from \"antd\";\r\nimport { gql, paging, query } from \"@knockout-js/ice-urql/request\";\r\nimport { App, AppMenu, AppMenuKind, LayoutPkgUserRootOrgsQuery, LayoutPkgUserRootOrgsQueryVariables, UserMenuListQuery, UserMenuListQueryVariables } from \"@knockout-js/api\";\r\nimport { iceUrqlInstance } from \"..\";\r\nimport { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors, } from \"@dnd-kit/core\";\r\nimport { arrayMove, SortableContext, useSortable, sortableKeyboardCoordinates, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\r\nimport { CSS } from '@dnd-kit/utilities';\r\nimport { useLocale } from \"../locale\";\r\nimport { useDark, useTenantId } from \"../provider\";\r\n\r\nconst userMenuListQuery = gql(/* GraphQL */`query userMenuList($appCode:String!){\r\n userMenus(appCode: $appCode){\r\n id,name,route,appID,parentID,displaySort,kind\r\n }\r\n}`);\r\n\r\nconst userOrgAppsQuery = gql(/* GraphQL */`query layoutPkgUserRootOrgs($first:Int){\r\n userRootOrgs{\r\n id,\r\n apps(first: $first){\r\n totalCount,\r\n edges{ node{ id,name,code } }\r\n }\r\n }\r\n}`);\r\n\r\nexport type AggregateMenuLocale = {\r\n title: string;\r\n latelyTitle: string;\r\n notText: string;\r\n searchPlaceholder: string;\r\n}\r\n\r\nexport type AggregateMenuDataSource = {\r\n app: App;\r\n menu: AppMenu[];\r\n}[]\r\n\r\nexport interface AggregateMenuProps {\r\n /**\r\n * 弹出开关\r\n */\r\n open?: boolean;\r\n /**\r\n * 数据源\r\n */\r\n dataSource?: AggregateMenuDataSource;\r\n /**\r\n * 弹出开关变更\r\n */\r\n onChangeOpen?: (open: boolean) => void;\r\n /**\r\n * 选中菜单\r\n */\r\n onClick?: (menuItem: AppMenu, app: App) => void;\r\n}\r\n\r\n/**\r\n * 排序拖拽使用的控件\r\n * https://docs.dndkit.com/\r\n * @param props\r\n * @returns\r\n */\r\nconst DargItem = (props: {\r\n value: AppMenu;\r\n onDel: () => void;\r\n onClick: () => void;\r\n}) => {\r\n const id = `${props.value.id}-${props.value.appID}`;\r\n const { setNodeRef, listeners, attributes, transform, transition } = useSortable({ id });\r\n const style = {\r\n transform: CSS.Transform.toString(transform),\r\n transition,\r\n };\r\n\r\n return <div\r\n ref={setNodeRef}\r\n style={style}\r\n {...attributes}\r\n className={styles.aggregateMenuDrawerMenuItem}\r\n onClick={() => {\r\n props.onClick();\r\n }}\r\n >\r\n <div className={styles.aggregateMenuDrawerMenuItemName}>{props.value.name}</div>\r\n <div className={styles.aggregateMenuDrawerMenuItemIcons}>\r\n <Space>\r\n <CloseOutlined rev={undefined} onClick={() => {\r\n props.onDel();\r\n }} />\r\n <DragOutlined rev={undefined} {...listeners} className=\"dragIcon\" />\r\n </Space>\r\n </div>\r\n </div>\r\n}\r\n\r\nexport default (props: AggregateMenuProps) => {\r\n const [all, setAll] = useState<AggregateMenuDataSource>([]),\r\n [filterList, setFilterList] = useState<AggregateMenuDataSource>([]),\r\n [collects, setCollects] = useState<AppMenu[]>([]),\r\n [latelys, setLately] = useState<AppMenu[]>([]),\r\n locale = useLocale('AggregateMenu'),\r\n isDark = useDark(),\r\n tenantId = useTenantId(),\r\n sensors = useSensors(\r\n useSensor(PointerSensor),\r\n useSensor(KeyboardSensor, {\r\n coordinateGetter: sortableKeyboardCoordinates,\r\n })\r\n );\r\n\r\n const\r\n request = useCallback(async () => {\r\n const appsResult = await paging<LayoutPkgUserRootOrgsQuery, LayoutPkgUserRootOrgsQueryVariables>(userOrgAppsQuery, {\r\n first: 30,\r\n }, 1, { instanceName: iceUrqlInstance.ucenter }), apps: App[] = [];\r\n if (appsResult.data?.userRootOrgs) {\r\n appsResult.data.userRootOrgs.forEach(org => {\r\n if (tenantId === org.id) {\r\n org.apps.edges?.forEach(oApp => {\r\n if (oApp?.node && !apps.find(app => app.id === oApp.node?.id)) {\r\n apps.push(oApp.node as App);\r\n }\r\n })\r\n }\r\n })\r\n }\r\n const newAll: AggregateMenuDataSource = [];\r\n for (let i in apps) {\r\n const menuResult = await query<UserMenuListQuery, UserMenuListQueryVariables>(userMenuListQuery, {\r\n appCode: apps[i].code,\r\n }, { instanceName: iceUrqlInstance.ucenter });\r\n if (menuResult.data?.userMenus) {\r\n const menu = menuResult.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 }) as AppMenu[];\r\n newAll.push({\r\n app: apps[i],\r\n menu,\r\n })\r\n }\r\n }\r\n setAll(newAll);\r\n setFilterList(newAll);\r\n }, []),\r\n checkCollect = useCallback((menuItem: AppMenu) => {\r\n return !!collects.find(item => item.id === menuItem.id && item.appID === menuItem.appID);\r\n }, [collects]),\r\n menuItemRender = (menuItem: AppMenu) => {\r\n return <div\r\n key={`${menuItem.id}-${menuItem.appID}`}\r\n className={styles.aggregateMenuDrawerAllMenuItem}\r\n onClick={() => {\r\n const allApp = all.find(allItem => allItem.app.id == menuItem.appID);\r\n if (allApp) {\r\n props.onClick?.(menuItem, allApp.app);\r\n }\r\n }}\r\n >\r\n <div className={styles.aggregateMenuDrawerAllMenuItemName}> {menuItem.name}</div>\r\n <div>\r\n <StarOutlined rev={undefined} className={checkCollect(menuItem) ? 'collect' : ''} onClick={(event) => {\r\n event.stopPropagation();\r\n if (checkCollect(menuItem)) {\r\n setCollects(collects.filter(c => !(c.id === menuItem.id && c.appID === menuItem.appID)));\r\n } else {\r\n setCollects([...collects, menuItem]);\r\n }\r\n }} />\r\n </div>\r\n </div>\r\n }\r\n\r\n useEffect(() => {\r\n if (props.dataSource) {\r\n setAll(props.dataSource);\r\n setFilterList(props.dataSource);\r\n } else {\r\n request();\r\n }\r\n }, [props.dataSource]);\r\n\r\n return <>\r\n <Drawer\r\n className={`${styles.aggregateMenuDrawer} ${isDark ? styles.aggregateMenuDark : ''}`}\r\n title={locale.title}\r\n placement=\"left\"\r\n open={props.open}\r\n width={1060}\r\n onClose={() => {\r\n props.onChangeOpen?.(false);\r\n }}\r\n >\r\n <div className={styles.aggregateMenuDrawerRow}>\r\n <div style={{ width: 240 }} className={styles.aggregateMenuDrawerMenu}>\r\n {collects.length ?\r\n <DndContext sensors={sensors}\r\n collisionDetection={closestCenter}\r\n onDragEnd={(event) => {\r\n const { active, over } = event;\r\n if (over && active.id !== over.id) {\r\n setCollects((items) => {\r\n const oldIndex = items.findIndex(oItem => `${oItem.id}-${oItem.appID}` == active.id);\r\n const newIndex = items.findIndex(nItem => `${nItem.id}-${nItem.appID}` == over.id);\r\n return arrayMove(items, oldIndex, newIndex);\r\n });\r\n }\r\n }}\r\n >\r\n <SortableContext items={collects.map(item => `${item.id}-${item.appID}`)} strategy={verticalListSortingStrategy}>\r\n {\r\n collects.map(item => (<DargItem\r\n key={`c${item.id}-${item.appID}`}\r\n value={item}\r\n onDel={() => {\r\n setCollects(collects.filter(c => !(c.id === item.id && c.appID === item.appID)));\r\n }}\r\n onClick={() => {\r\n const allApp = all.find(allItem => allItem.app.id == item.appID);\r\n if (allApp) {\r\n props.onClick?.(item, allApp.app);\r\n }\r\n }}\r\n />))\r\n }\r\n </SortableContext>\r\n </DndContext>\r\n : <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={locale.notText} />\r\n }\r\n </div>\r\n <div style={{ width: 820 }}>\r\n <div className={styles.aggregateMenuDrawerAllInput}>\r\n <Input\r\n bordered={false}\r\n prefix={<SearchOutlined rev={undefined} />}\r\n placeholder={locale.searchPlaceholder}\r\n onChange={(event) => {\r\n const keyword = event.target.value;\r\n if (keyword) {\r\n const fList = all.map(f => {\r\n return {\r\n app: f.app,\r\n menu: f.menu.filter(fMenuItem => fMenuItem.name.indexOf(keyword) > -1),\r\n };\r\n }).filter(f => f.menu.length);\r\n setFilterList(fList);\r\n } else {\r\n setFilterList([...all]);\r\n }\r\n }}\r\n />\r\n </div>\r\n {latelys.length ?\r\n <div className={styles.aggregateMenuLatelys}>\r\n <div className={styles.aggregateMenuDrawerAllMenuItemDir}>{locale.latelyTitle}</div>\r\n <div className={styles.aggregateMenuLatelysColumn}>\r\n {latelys.map(menuItem => (\r\n menuItemRender(menuItem)\r\n ))}\r\n </div>\r\n </div> : <></>\r\n }\r\n <div className={styles.aggregateMenuDrawerAllMenu} style={{ height: latelys.length ? \"calc(100% - 164px)\" : \"calc(100% - 52px)\" }}>\r\n {filterList.map(item => (\r\n <div key={item.app.code} className={styles.aggregateMenuDrawerAllMenuColumn}>\r\n <div className={styles.aggregateMenuDrawerAllAppTitle}>{item.app.name}</div>\r\n {item.menu.map(menuItem => (menuItem.kind === AppMenuKind.Menu ?\r\n menuItemRender(menuItem)\r\n : <div\r\n key={`${menuItem.appID}-${menuItem.id}`}\r\n className={styles.aggregateMenuDrawerAllMenuItemDir}\r\n >\r\n {menuItem.name}\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </Drawer>\r\n </>\r\n}\r\n"],"names":["CloseOutlined","DragOutlined","SearchOutlined","StarOutlined","useCallback","useEffect","useState","styles","Drawer","Empty","Input","Space","gql","paging","query","AppMenuKind","iceUrqlInstance","DndContext","closestCenter","KeyboardSensor","PointerSensor","useSensor","useSensors","arrayMove","SortableContext","useSortable","sortableKeyboardCoordinates","verticalListSortingStrategy","CSS","useLocale","useDark","useTenantId","userMenuListQuery","userOrgAppsQuery","DargItem","props","id","value","appID","setNodeRef","listeners","attributes","transform","transition","style","Transform","toString","div","ref","className","aggregateMenuDrawerMenuItem","onClick","aggregateMenuDrawerMenuItemName","name","aggregateMenuDrawerMenuItemIcons","rev","undefined","onDel","all","setAll","filterList","setFilterList","collects","setCollects","latelys","setLately","locale","isDark","tenantId","sensors","coordinateGetter","request","appsResult","first","instanceName","ucenter","apps","data","userRootOrgs","forEach","org","edges","oApp","node","find","app","push","newAll","i","menuResult","appCode","code","userMenus","menu","sort","d1","d2","d1Sort","displaySort","d2Sort","parentID","checkCollect","menuItem","item","menuItemRender","aggregateMenuDrawerAllMenuItem","allApp","allItem","aggregateMenuDrawerAllMenuItemName","event","stopPropagation","filter","c","dataSource","aggregateMenuDrawer","aggregateMenuDark","title","placement","open","width","onClose","onChangeOpen","aggregateMenuDrawerRow","aggregateMenuDrawerMenu","length","collisionDetection","onDragEnd","active","over","items","oldIndex","findIndex","oItem","newIndex","nItem","map","strategy","image","PRESENTED_IMAGE_SIMPLE","description","notText","aggregateMenuDrawerAllInput","bordered","prefix","placeholder","searchPlaceholder","onChange","keyword","target","fList","f","fMenuItem","indexOf","aggregateMenuLatelys","aggregateMenuDrawerAllMenuItemDir","latelyTitle","aggregateMenuLatelysColumn","aggregateMenuDrawerAllMenu","height","aggregateMenuDrawerAllMenuColumn","aggregateMenuDrawerAllAppTitle","kind","Menu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\aggregate-menu\\index.tsx"],"sourcesContent":["import { CloseOutlined, DragOutlined, SearchOutlined, StarOutlined } from \"@ant-design/icons\"\r\nimport { useCallback, useEffect, useState } from \"react\"\r\nimport styles from \"./index.module.css\"\r\nimport { Drawer, DrawerProps, Empty, Input, Space } from \"antd\";\r\nimport { gql, mutation, paging, query } from \"@knockout-js/ice-urql/request\";\r\nimport { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors, } from \"@dnd-kit/core\";\r\nimport { arrayMove, SortableContext, useSortable, sortableKeyboardCoordinates, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\r\nimport { CSS } from '@dnd-kit/utilities';\r\nimport { useLocale } from \"../locale\";\r\nimport { useDark } from \"../provider\";\r\nimport { listFormatTreeData, treeFormatList } from \"../_util\";\r\nimport { OpenWin } from \"../icons\";\r\nimport { App, AppMenu, AppMenuKind, LayoutPkgSaveUserPreferenceMutation, LayoutPkgSaveUserPreferenceMutationVariables, LayoutPkgUserAppListQuery, LayoutPkgUserAppListQueryVariables, LayoutPkgUserMenuListQuery, LayoutPkgUserMenuListQueryVariables, LayoutPkgUserPreferenceQuery, LayoutPkgUserPreferenceQueryVariables } from \"@knockout-js/api/esm/gql/ucenter/graphql\";\r\nimport { instanceName } from \"@knockout-js/api\";\r\n\r\nconst userMenuListQuery = gql(/* GraphQL */`query layoutPkgUserMenuList($appCode:String!){\r\n userMenus(appCode: $appCode){\r\n id,name,route,appID,parentID,displaySort,kind\r\n }\r\n}`);\r\n\r\nconst userAppsQuery = gql(/* GraphQL */`query layoutPkgUserAppList{\r\n userApps{\r\n id,name,code\r\n }\r\n}`);\r\n\r\nconst userPreferenceQuery = gql(/* GraphQL */`query layoutPkgUserPreference{\r\n orgUserPreference{\r\n id,menuFavorite,menuRecent,\r\n }\r\n}`);\r\n\r\nconst userPreferenceMut = gql(/* GraphQL */`mutation layoutPkgSaveUserPreference($input:OrgUserPreferenceInput!){\r\n saveOrgUserPreference(input: $input){ id }\r\n}`);\r\n\r\nexport type AggregateMenuLocale = {\r\n title: string;\r\n latelyTitle: string;\r\n notText: string;\r\n searchPlaceholder: string;\r\n}\r\n\r\nexport type AggregateMenuDataSource = {\r\n app: App;\r\n menu: AppMenu[];\r\n}[]\r\n\r\nexport interface AggregateMenuProps {\r\n /**\r\n * 弹出开关\r\n */\r\n open?: boolean;\r\n /**\r\n * 数据源\r\n */\r\n dataSource?: AggregateMenuDataSource;\r\n /**\r\n * 弹框设置\r\n */\r\n drawerProps?: DrawerProps;\r\n /**\r\n * 弹出开关变更\r\n */\r\n onChangeOpen?: (open: boolean) => void;\r\n /**\r\n * 选中菜单\r\n */\r\n onClick?: (menuItem: AppMenu, app: App, isOpen?: boolean) => void;\r\n}\r\n\r\n/**\r\n * 排序拖拽使用的控件\r\n * https://docs.dndkit.com/\r\n * @param props\r\n * @returns\r\n */\r\nconst DargItem = (props: {\r\n value: AppMenu;\r\n onDel: () => void;\r\n onClick: (isOpen?: boolean) => void;\r\n}) => {\r\n const id = `${props.value.id}-${props.value.appID}`;\r\n const { setNodeRef, listeners, attributes, transform, transition } = useSortable({ id });\r\n const style = {\r\n transform: CSS.Transform.toString(transform),\r\n transition,\r\n };\r\n\r\n return <div\r\n ref={setNodeRef}\r\n style={style}\r\n {...attributes}\r\n className={styles.aggregateMenuDrawerMenuItem}\r\n onClick={() => {\r\n props.onClick();\r\n }}\r\n >\r\n <div className={styles.aggregateMenuDrawerMenuItemName}>{props.value.name}</div>\r\n <div className={styles.aggregateMenuDrawerMenuItemIcons}>\r\n <Space>\r\n <OpenWin className=\"anticon\" onClick={(event) => {\r\n event.stopPropagation();\r\n props.onClick(true);\r\n }} />\r\n <CloseOutlined rev={undefined} onClick={(event) => {\r\n event.stopPropagation();\r\n props.onDel();\r\n }} />\r\n <DragOutlined rev={undefined} {...listeners} className=\"dragIcon\" />\r\n </Space>\r\n </div>\r\n </div>\r\n}\r\n\r\nexport default (props: AggregateMenuProps) => {\r\n const [all, setAll] = useState<AggregateMenuDataSource>([]),\r\n [filterList, setFilterList] = useState<AggregateMenuDataSource>([]),\r\n [collects, setCollects] = useState<AppMenu[]>([]),\r\n [latelys, setLately] = useState<AppMenu[]>([]),\r\n locale = useLocale('AggregateMenu'),\r\n isDark = useDark(),\r\n sensors = useSensors(\r\n useSensor(PointerSensor),\r\n useSensor(KeyboardSensor, {\r\n coordinateGetter: sortableKeyboardCoordinates,\r\n })\r\n );\r\n\r\n const\r\n request = useCallback(async () => {\r\n const appsResult = await paging<LayoutPkgUserAppListQuery, LayoutPkgUserAppListQueryVariables>(userAppsQuery, {}, 1, {\r\n instanceName: instanceName.UCENTER,\r\n }), apps: App[] = [];\r\n if (appsResult.data?.userApps) {\r\n appsResult.data.userApps.forEach(app => {\r\n apps.push(app as App)\r\n })\r\n }\r\n const newAll: AggregateMenuDataSource = [];\r\n for (let i in apps) {\r\n const menuResult = await query<LayoutPkgUserMenuListQuery, LayoutPkgUserMenuListQueryVariables>(userMenuListQuery, {\r\n appCode: apps[i].code,\r\n }, { instanceName: instanceName.UCENTER });\r\n if (menuResult.data?.userMenus) {\r\n const menu = menuResult.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 }) as AppMenu[];\r\n newAll.push({\r\n app: apps[i],\r\n menu: treeFormatList(listFormatTreeData(menu, undefined, { key: 'id', parentId: 'parentID' })),\r\n })\r\n }\r\n }\r\n setAll(newAll);\r\n setFilterList(newAll);\r\n // 初始化收藏和初始化最近数据\r\n const preferenceResult = await query<LayoutPkgUserPreferenceQuery, LayoutPkgUserPreferenceQueryVariables>(userPreferenceQuery, {}, {\r\n instanceName: instanceName.UCENTER\r\n });\r\n if (preferenceResult.data?.orgUserPreference?.id) {\r\n const menuFavorite = preferenceResult.data.orgUserPreference.menuFavorite,\r\n menuRecent = preferenceResult.data.orgUserPreference.menuRecent,\r\n collectsList: AppMenu[] = [],\r\n latelyList: AppMenu[] = [];\r\n if (menuFavorite) {\r\n menuFavorite.forEach(id => {\r\n for (let i in newAll) {\r\n const menuItem = newAll[i].menu.find(item => item.id == id);\r\n if (menuItem) {\r\n collectsList.push(menuItem);\r\n break;\r\n }\r\n }\r\n\r\n })\r\n }\r\n if (menuRecent) {\r\n menuRecent.forEach(id => {\r\n for (let i in newAll) {\r\n const menuItem = newAll[i].menu.find(item => item.id == id);\r\n if (menuItem) {\r\n latelyList.push(menuItem);\r\n break;\r\n }\r\n }\r\n\r\n })\r\n }\r\n setCollects(collectsList);\r\n setLately(latelyList);\r\n }\r\n }, []),\r\n requestFavorite = async (list: AppMenu[]) => {\r\n // 异步存储收藏\r\n await mutation<LayoutPkgSaveUserPreferenceMutation, LayoutPkgSaveUserPreferenceMutationVariables>(userPreferenceMut, {\r\n input: {\r\n menuFavorite: list.map(item => item.id),\r\n }\r\n }, {\r\n instanceName: instanceName.UCENTER,\r\n });\r\n },\r\n requestRecent = async (ids: string[]) => {\r\n // 异步存储访问菜单记录\r\n await mutation<LayoutPkgSaveUserPreferenceMutation, LayoutPkgSaveUserPreferenceMutationVariables>(userPreferenceMut, {\r\n input: {\r\n menuRecent: ids,\r\n }\r\n }, {\r\n instanceName: instanceName.UCENTER,\r\n });\r\n },\r\n checkCollect = useCallback((menuItem: AppMenu) => {\r\n return !!collects.find(item => item.id === menuItem.id && item.appID === menuItem.appID);\r\n }, [collects]),\r\n onClickItem = async (menuItem: AppMenu, isOpen?: boolean) => {\r\n const allApp = all.find(allItem => allItem.app.id == menuItem.appID);\r\n if (allApp) {\r\n const latelyList = [...latelys];\r\n const oldIdx = latelyList.findIndex(lately => lately.id == menuItem.id);\r\n if (oldIdx > -1) {\r\n latelyList.splice(oldIdx, 1);\r\n }\r\n latelyList.unshift(menuItem);\r\n latelyList.splice(6);\r\n await requestRecent(latelyList.map(item => item.id));\r\n setLately(latelyList);\r\n props.onClick?.(menuItem, allApp.app, isOpen);\r\n }\r\n },\r\n menuItemRender = (menuItem: AppMenu) => {\r\n return <div\r\n key={`${menuItem.id}-${menuItem.appID}`}\r\n className={styles.aggregateMenuDrawerAllMenuItem}\r\n onClick={() => {\r\n onClickItem(menuItem)\r\n }}\r\n >\r\n <div className={styles.aggregateMenuDrawerAllMenuItemName}> {menuItem.name}</div>\r\n <div className={styles.aggregateMenuDrawerAllMenuItemIcons}>\r\n <Space>\r\n <OpenWin className=\"anticon\" onClick={(event) => {\r\n event.stopPropagation();\r\n onClickItem(menuItem, true)\r\n }} />\r\n <StarOutlined rev={undefined} className={checkCollect(menuItem) ? 'collect' : ''} onClick={async (event) => {\r\n event.stopPropagation();\r\n let collectList: AppMenu[] = [];\r\n if (checkCollect(menuItem)) {\r\n collectList = collects.filter(c => !(c.id === menuItem.id && c.appID === menuItem.appID))\r\n } else {\r\n collectList = [...collects, menuItem]\r\n }\r\n await requestFavorite(collectList)\r\n setCollects(collectList);\r\n }} />\r\n </Space>\r\n </div>\r\n </div>\r\n }\r\n\r\n useEffect(() => {\r\n if (props.dataSource) {\r\n setAll(props.dataSource);\r\n setFilterList(props.dataSource);\r\n } else {\r\n request();\r\n }\r\n }, [props.dataSource]);\r\n\r\n return <>\r\n <Drawer\r\n title={locale.title}\r\n maskClosable={false}\r\n placement=\"left\"\r\n width={1060}\r\n {...props.drawerProps}\r\n className={`${styles.aggregateMenuDrawer} ${isDark ? styles.aggregateMenuDark : ''}`}\r\n open={props.open}\r\n onClose={() => {\r\n props.onChangeOpen?.(false);\r\n }}\r\n >\r\n <div className={styles.aggregateMenuDrawerRow}>\r\n <div style={{ width: 240 }} className={styles.aggregateMenuDrawerMenu}>\r\n {/* 收藏 */}\r\n {collects.length ?\r\n <DndContext sensors={sensors}\r\n collisionDetection={closestCenter}\r\n onDragEnd={(event) => {\r\n const { active, over } = event;\r\n if (over && active.id !== over.id) {\r\n setCollects((items) => {\r\n const oldIndex = items.findIndex(oItem => `${oItem.id}-${oItem.appID}` == active.id);\r\n const newIndex = items.findIndex(nItem => `${nItem.id}-${nItem.appID}` == over.id);\r\n const collectList = arrayMove(items, oldIndex, newIndex);\r\n requestFavorite(collectList);\r\n return collectList;\r\n });\r\n }\r\n }}\r\n >\r\n <SortableContext items={collects.map(item => `${item.id}-${item.appID}`)} strategy={verticalListSortingStrategy}>\r\n {\r\n collects.map(item => (<DargItem\r\n key={`c${item.id}-${item.appID}`}\r\n value={item}\r\n onDel={async () => {\r\n const collectList = collects.filter(c => !(c.id === item.id && c.appID === item.appID))\r\n await requestFavorite(collectList);\r\n setCollects(collectList);\r\n }}\r\n onClick={(isOpen) => {\r\n onClickItem(item, isOpen)\r\n }}\r\n />))\r\n }\r\n </SortableContext>\r\n </DndContext>\r\n : <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description={locale.notText} />\r\n }\r\n </div>\r\n <div style={{ width: 820 }}>\r\n {/* 过滤 */}\r\n <div className={styles.aggregateMenuDrawerAllInput}>\r\n <Input\r\n bordered={false}\r\n prefix={<SearchOutlined rev={undefined} />}\r\n placeholder={locale.searchPlaceholder}\r\n onChange={(event) => {\r\n const keyword = event.target.value;\r\n if (keyword) {\r\n const fList = all.map(f => {\r\n return {\r\n app: f.app,\r\n menu: f.menu.filter(fMenuItem => fMenuItem.name.indexOf(keyword) > -1),\r\n };\r\n }).filter(f => f.menu.length);\r\n setFilterList(fList);\r\n } else {\r\n setFilterList([...all]);\r\n }\r\n }}\r\n />\r\n </div>\r\n {/* 最近访问 */}\r\n {latelys.length ?\r\n <div className={styles.aggregateMenuLatelys}>\r\n <div className={styles.aggregateMenuDrawerAllMenuItemDir}>{locale.latelyTitle}</div>\r\n <div className={styles.aggregateMenuLatelysColumn}>\r\n {latelys.map(menuItem => (\r\n menuItemRender(menuItem)\r\n ))}\r\n </div>\r\n </div> : <></>\r\n }\r\n {/* all应用菜单 */}\r\n <div className={styles.aggregateMenuDrawerAllMenu} style={{ height: latelys.length ? \"calc(100% - 164px)\" : \"calc(100% - 52px)\" }}>\r\n <div className={styles.aggregateMenuDrawerAllMenuColumn}>\r\n {filterList.map(item => (\r\n <div key={item.app.code} className={styles.aggregateMenuDrawerAllMenuColumnItem}>\r\n <div className={styles.aggregateMenuDrawerAllAppTitle}>{item.app.name}</div>\r\n {item.menu.map(menuItem => (menuItem.kind === AppMenuKind.Menu ?\r\n menuItemRender(menuItem)\r\n : <div\r\n key={`${menuItem.appID}-${menuItem.id}`}\r\n className={styles.aggregateMenuDrawerAllMenuItemDir}\r\n >\r\n {menuItem.name}\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </Drawer>\r\n </>\r\n}\r\n"],"names":["CloseOutlined","DragOutlined","SearchOutlined","StarOutlined","useCallback","useEffect","useState","styles","Drawer","Empty","Input","Space","gql","mutation","paging","query","DndContext","closestCenter","KeyboardSensor","PointerSensor","useSensor","useSensors","arrayMove","SortableContext","useSortable","sortableKeyboardCoordinates","verticalListSortingStrategy","CSS","useLocale","useDark","listFormatTreeData","treeFormatList","OpenWin","AppMenuKind","instanceName","userMenuListQuery","userAppsQuery","userPreferenceQuery","userPreferenceMut","DargItem","props","id","value","appID","setNodeRef","listeners","attributes","transform","transition","style","Transform","toString","div","ref","className","aggregateMenuDrawerMenuItem","onClick","aggregateMenuDrawerMenuItemName","name","aggregateMenuDrawerMenuItemIcons","event","stopPropagation","rev","undefined","onDel","all","setAll","filterList","setFilterList","collects","setCollects","latelys","setLately","locale","isDark","sensors","coordinateGetter","request","appsResult","preferenceResult","UCENTER","apps","data","userApps","forEach","app","push","newAll","i","menuResult","appCode","code","userMenus","menu","sort","d1","d2","d1Sort","displaySort","d2Sort","parentID","key","parentId","orgUserPreference","menuFavorite","menuRecent","collectsList","latelyList","menuItem","find","item","requestFavorite","list","input","map","requestRecent","ids","checkCollect","onClickItem","isOpen","allApp","allItem","oldIdx","findIndex","lately","splice","unshift","menuItemRender","aggregateMenuDrawerAllMenuItem","aggregateMenuDrawerAllMenuItemName","aggregateMenuDrawerAllMenuItemIcons","collectList","filter","c","dataSource","title","maskClosable","placement","width","drawerProps","aggregateMenuDrawer","aggregateMenuDark","open","onClose","onChangeOpen","aggregateMenuDrawerRow","aggregateMenuDrawerMenu","length","collisionDetection","onDragEnd","active","over","items","oldIndex","oItem","newIndex","nItem","strategy","image","PRESENTED_IMAGE_SIMPLE","description","notText","aggregateMenuDrawerAllInput","bordered","prefix","placeholder","searchPlaceholder","onChange","keyword","target","fList","f","fMenuItem","indexOf","aggregateMenuLatelys","aggregateMenuDrawerAllMenuItemDir","latelyTitle","aggregateMenuLatelysColumn","aggregateMenuDrawerAllMenu","height","aggregateMenuDrawerAllMenuColumn","aggregateMenuDrawerAllMenuColumnItem","aggregateMenuDrawerAllAppTitle","kind","Menu"],"mappings":"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"}
|
|
@@ -3,16 +3,12 @@
|
|
|
3
3
|
cursor: pointer;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
.aggregateMenuDrawer {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
flex-direction: row-reverse;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
:global(.ant-drawer-body) {
|
|
13
|
-
padding: 0;
|
|
14
|
-
}
|
|
6
|
+
.aggregateMenuDrawer :global(.ant-drawer-header-title) {
|
|
7
|
+
flex-direction: row-reverse;
|
|
8
|
+
}
|
|
15
9
|
|
|
10
|
+
.aggregateMenuDrawer :global(.ant-drawer-body) {
|
|
11
|
+
padding: 0;
|
|
16
12
|
}
|
|
17
13
|
|
|
18
14
|
.aggregateMenuDrawerRow {
|
|
@@ -20,20 +16,20 @@
|
|
|
20
16
|
display: flex;
|
|
21
17
|
}
|
|
22
18
|
|
|
23
|
-
.aggregateMenuDrawerMenu {
|
|
24
|
-
height: 100%;
|
|
25
|
-
border-right: 1px solid rgba(5, 5, 5, 0.06);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
19
|
.aggregateMenuDrawerAllMenu {
|
|
29
20
|
height: calc(100% - 52px);
|
|
30
21
|
padding: 16px;
|
|
31
22
|
overflow-y: auto;
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.aggregateMenuDrawerAllMenuColumn {
|
|
27
|
+
/* column瀑布流 */
|
|
32
28
|
column-count: 3;
|
|
33
29
|
column-gap: 10px;
|
|
34
30
|
}
|
|
35
31
|
|
|
36
|
-
.
|
|
32
|
+
.aggregateMenuDrawerAllMenuColumnItem {
|
|
37
33
|
/* 瀑布流关键写法 */
|
|
38
34
|
break-inside: avoid;
|
|
39
35
|
margin-bottom: 16px;
|
|
@@ -58,25 +54,21 @@
|
|
|
58
54
|
height: 32px;
|
|
59
55
|
line-height: 32px;
|
|
60
56
|
cursor: pointer;
|
|
61
|
-
padding: 0 16px;
|
|
57
|
+
padding: 0 6px 0 16px;
|
|
62
58
|
display: flex;
|
|
59
|
+
}
|
|
63
60
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
display: inline;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
61
|
+
.aggregateMenuDrawerAllMenuItem :global(.anticon-star.collect) {
|
|
62
|
+
color: rgb(255, 106, 0);
|
|
63
|
+
display: inline-flex;
|
|
64
|
+
}
|
|
71
65
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
66
|
+
.aggregateMenuDrawerAllMenuItem:hover {
|
|
67
|
+
background-color: #f1f1f1;
|
|
68
|
+
}
|
|
76
69
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
70
|
+
.aggregateMenuDrawerAllMenuItem:hover :global(.anticon) {
|
|
71
|
+
display: inline;
|
|
80
72
|
}
|
|
81
73
|
|
|
82
74
|
.aggregateMenuDrawerAllMenuItemDir {
|
|
@@ -94,38 +86,61 @@
|
|
|
94
86
|
font-weight: lighter;
|
|
95
87
|
}
|
|
96
88
|
|
|
89
|
+
.aggregateMenuDrawerAllMenuItemIcons :global(.ant-space) {
|
|
90
|
+
align-items: unset;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.aggregateMenuDrawerAllMenuItemIcons :global(.anticon) {
|
|
94
|
+
display: none;
|
|
95
|
+
color: #c1c1c1;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.aggregateMenuDrawerAllMenuItemIcons :global(.anticon):hover {
|
|
99
|
+
color: #8c8c8c;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.aggregateMenuDrawerAllMenuItemIcons :global(.anticon):hover :global(.anticon-star.collect) {
|
|
103
|
+
color: rgb(255, 106, 0);
|
|
104
|
+
display: inline-flex;
|
|
105
|
+
}
|
|
106
|
+
|
|
97
107
|
.aggregateMenuDrawerAllInput {
|
|
98
108
|
padding: 10px 0;
|
|
99
109
|
margin: 0 16px;
|
|
100
110
|
border-bottom: 1px solid rgba(5, 5, 5, 0.06);
|
|
101
111
|
}
|
|
102
112
|
|
|
113
|
+
.aggregateMenuDrawerMenu {
|
|
114
|
+
height: 100%;
|
|
115
|
+
border-right: 1px solid rgba(5, 5, 5, 0.06);
|
|
116
|
+
}
|
|
117
|
+
|
|
103
118
|
.aggregateMenuDrawerMenuItem {
|
|
104
119
|
height: 40px;
|
|
105
120
|
line-height: 40px;
|
|
106
121
|
cursor: pointer;
|
|
107
|
-
padding: 0 16px;
|
|
122
|
+
padding: 0 10px 0 16px;
|
|
108
123
|
display: flex;
|
|
124
|
+
}
|
|
109
125
|
|
|
110
|
-
|
|
111
|
-
|
|
126
|
+
.aggregateMenuDrawerMenuItem:hover {
|
|
127
|
+
background-color: #f1f1f1;
|
|
128
|
+
}
|
|
112
129
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
}
|
|
130
|
+
.aggregateMenuDrawerMenuItem:hover .aggregateMenuDrawerMenuItemIcons {
|
|
131
|
+
display: block;
|
|
117
132
|
}
|
|
118
133
|
|
|
119
134
|
.aggregateMenuDrawerMenuItemIcons {
|
|
120
135
|
display: none;
|
|
136
|
+
}
|
|
121
137
|
|
|
122
|
-
|
|
123
|
-
|
|
138
|
+
.aggregateMenuDrawerMenuItemIcons :global(.anticon) {
|
|
139
|
+
color: #c1c1c1;
|
|
140
|
+
}
|
|
124
141
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
}
|
|
142
|
+
.aggregateMenuDrawerMenuItemIcons :global(.anticon):hover {
|
|
143
|
+
color: #8c8c8c;
|
|
129
144
|
}
|
|
130
145
|
|
|
131
146
|
.aggregateMenuDrawerMenuItemName {
|
|
@@ -137,7 +152,8 @@
|
|
|
137
152
|
|
|
138
153
|
.aggregateMenuLatelys {
|
|
139
154
|
padding: 16px 16px 0 16px;
|
|
140
|
-
|
|
155
|
+
height: 112px;
|
|
156
|
+
box-sizing: border-box;
|
|
141
157
|
}
|
|
142
158
|
|
|
143
159
|
.aggregateMenuLatelysColumn {
|
|
@@ -148,21 +164,17 @@
|
|
|
148
164
|
/* 黑色主题处理 */
|
|
149
165
|
.aggregateMenuDark {
|
|
150
166
|
color: #ffffffcc;
|
|
167
|
+
}
|
|
151
168
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
169
|
+
.aggregateMenuDark .aggregateMenuDrawerAllInput {
|
|
170
|
+
border-bottom: 1px solid #ffffff40;
|
|
171
|
+
}
|
|
155
172
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
background-color: #ffffff40;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
173
|
+
.aggregateMenuDark .aggregateMenuDrawerAllMenuItem:hover {
|
|
174
|
+
background-color: #ffffff40;
|
|
161
175
|
|
|
162
|
-
|
|
163
|
-
&:hover {
|
|
164
|
-
background-color: #ffffff40;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
176
|
+
}
|
|
167
177
|
|
|
178
|
+
.aggregateMenuDark .aggregateMenuDrawerMenuItem:hover {
|
|
179
|
+
background-color: #ffffff40;
|
|
168
180
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@ice/jsx-runtime/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import { useCallback } from "react";
|
|
3
3
|
import { LogoutOutlined, UserOutlined } from "@ant-design/icons";
|
|
4
4
|
import { Dropdown, Avatar } from "antd";
|
|
5
5
|
import styles from "./index.module.css";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\avatar-dropdown\\index.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\avatar-dropdown\\index.tsx"],"sourcesContent":["import { 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":["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,SAASA,WAAW,QAAQ,QAAQ;AACpC,SAASC,cAAc,EAAEC,YAAY,QAAQ,oBAAoB;AACjE,SAASC,QAAQ,EAAEC,MAAM,QAAmB,OAAO;AACnD,OAAOC,YAAY,qBAAqB;AACxC,SAASC,SAAS,QAAQ,kBAAY;AAyBtC,MAAMC,iBAAiB,CAACC,QAA+B;IACrD,MAAMC,SAASH,UAAU,mBACvBI,OAAO;QACLC,OAAO;YACL;gBACEC,KAAK;gBACLC,OAAOJ,OAAOK,MAAM;gBACpBC,oBAAM,KAACd;oBAAee,KAAKC;;gBAC3BC,SAASlB,YAAY,IAAM;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,CAAC,EAAEf,OAAOkB,MAAM,CAAC,CAAC,EAAElB,OAAOmB,OAAO,CAAC,CAAC;;8BACnD,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\i18n-dropdown\\index.tsx"],"sourcesContent":["import { useState, useEffect, useCallback, useContext } from 'react';\r\nimport { Dropdown
|
|
1
|
+
{"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\i18n-dropdown\\index.tsx"],"sourcesContent":["import { useState, useEffect, useCallback, useContext } from 'react';\r\nimport { Dropdown } from 'antd';\r\nimport styles from './index.module.css';\r\nimport { Context, ProviderProps, LocaleType } from '..';\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<ProviderProps>(Context),\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","Context","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,QAAQ,OAAO;AAChC,OAAOC,YAAY,qBAAqB;AACxC,SAASC,OAAO,EAAiBC,UAAU,QAAQ,WAAK;AASxD,SAASC,aAAaC,KAAwB,EAAE;IAC9C,MAAMC,MAAMP,WAA0BG,UACpC,CAACK,YAAYC,cAAc,GAAGZ,SAAS,KACvCa,kBAAkBX,YAAY,CAAC,EAAEY,IAAG,EAAsB,GAAK;YAC7DL;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,IAAM;QACd,MAAMoB,OAAOL,sBAAAA,uBAAAA,KAAAA,IAAAA,UAAWM,IAAI,CAACD,CAAAA;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"}
|
|
@@ -3,6 +3,7 @@ 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
5
|
export { default as TenantDropdown } from './tenant-dropdown';
|
|
6
|
+
export { default as MsgDropdown } from './msg-dropdown';
|
|
6
7
|
export { default as LeavePrompt, useLeavePrompt } from './leave-prompt';
|
|
7
8
|
export { default as I18nDropdown } from './i18n-dropdown';
|
|
8
9
|
export { default as CollectProviders } from './collect-providers';
|
|
@@ -13,6 +14,4 @@ export { default as AggregateMenu, type AggregateMenuDataSource } from './aggreg
|
|
|
13
14
|
export { default as UploadAvatar } from './upload-file/uploadAvatar';
|
|
14
15
|
export { default as UploadMultiple } from './upload-file/uploadMultiple';
|
|
15
16
|
export { default as UploadTemp } from './upload-file/uploadTemp';
|
|
16
|
-
export
|
|
17
|
-
ucenter = "ucenter"
|
|
18
|
-
}
|
|
17
|
+
export * as util from './_util';
|
|
@@ -3,6 +3,7 @@ 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
5
|
export { default as TenantDropdown } from "./tenant-dropdown/index";
|
|
6
|
+
export { default as MsgDropdown } from "./msg-dropdown/index";
|
|
6
7
|
export { default as LeavePrompt, useLeavePrompt } from "./leave-prompt/index";
|
|
7
8
|
export { default as I18nDropdown } from "./i18n-dropdown/index";
|
|
8
9
|
export { default as CollectProviders } from "./collect-providers/index";
|
|
@@ -13,9 +14,7 @@ export { default as AggregateMenu } from "./aggregate-menu/index";
|
|
|
13
14
|
export { default as UploadAvatar } from "./upload-file/uploadAvatar";
|
|
14
15
|
export { default as UploadMultiple } from "./upload-file/uploadMultiple";
|
|
15
16
|
export { default as UploadTemp } from "./upload-file/uploadTemp";
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
iceUrqlInstance["ucenter"] = "ucenter";
|
|
19
|
-
})(iceUrqlInstance || (iceUrqlInstance = {}));
|
|
17
|
+
import * as _util from "./_util/index";
|
|
18
|
+
export { _util as util };
|
|
20
19
|
|
|
21
20
|
//# sourceMappingURL=D:\codeing\git\github\knockout-js\packages\layout\es2017\components\index.js.map
|
|
@@ -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 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
|
|
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,SAASN,WAAWO,WAAW,QAAQ,uBAAiB;AACxD,SAASP,WAAWQ,WAAW,EAAEC,cAAc,QAAQ,uBAAiB;AACxE,SAAST,WAAWU,YAAY,QAAQ,wBAAkB;AAC1D,SAASV,WAAWW,gBAAgB,QAAQ,4BAAsB;AAClE,SAASC,UAAU,QAAQ,mBAAa;AACxC,SAASZ,WAAWa,MAAM,QAAQ,iBAAW;AAC7C,SAASb,WAAWc,KAAK,QAAyB,gBAAU;AAC5D,SAASd,WAAWe,aAAa,QAAsC,yBAAmB;AAC1F,SAASf,WAAWgB,YAAY,QAAQ,6BAA6B;AACrE,SAAShB,WAAWiB,cAAc,QAAQ,+BAA+B;AACzE,SAASjB,WAAWkB,UAAU,QAAQ,2BAA2B;AAEjE,uBAAsB,gBAAU;AAAhC,SAAO,SAAKC,IAAI,GAAgB"}
|
|
@@ -2,8 +2,10 @@ import { MenuDataItem, ProLayoutProps } from '@ant-design/pro-layout';
|
|
|
2
2
|
import { I18nDropdownProps } from '../i18n-dropdown';
|
|
3
3
|
import { TenantDropdownProps } from '../tenant-dropdown';
|
|
4
4
|
import { AvatarDropdownProps } from '../avatar-dropdown';
|
|
5
|
+
import { MsgDropdownProps, MsgDropdownRef } from '../msg-dropdown';
|
|
5
6
|
import { ThemeSwitchProps } from '../theme-switch';
|
|
6
|
-
import { ReactNode, FC } from 'react';
|
|
7
|
+
import { ReactNode, FC, Ref } from 'react';
|
|
8
|
+
import { LocaleType } from '..';
|
|
7
9
|
import { IconFontProps } from '@ant-design/icons/lib/components/IconFont';
|
|
8
10
|
import { AggregateMenuProps } from '../aggregate-menu';
|
|
9
11
|
export interface LayoutProps {
|
|
@@ -11,6 +13,11 @@ export interface LayoutProps {
|
|
|
11
13
|
* 应用code
|
|
12
14
|
*/
|
|
13
15
|
appCode: string;
|
|
16
|
+
/**
|
|
17
|
+
* 语言
|
|
18
|
+
* 默认 LocaleType.zhCN
|
|
19
|
+
*/
|
|
20
|
+
locale?: LocaleType;
|
|
14
21
|
/**
|
|
15
22
|
* 传递动态的 location.pathname
|
|
16
23
|
*/
|
|
@@ -35,10 +42,18 @@ export interface LayoutProps {
|
|
|
35
42
|
* AvatarDropdown组件对应的参数
|
|
36
43
|
*/
|
|
37
44
|
avatarProps: AvatarDropdownProps;
|
|
45
|
+
/**
|
|
46
|
+
* MsgDropdown组件的高级方法
|
|
47
|
+
*/
|
|
48
|
+
msgRef?: Ref<MsgDropdownRef>;
|
|
49
|
+
/**
|
|
50
|
+
* MsgDropdown组件对应的参数
|
|
51
|
+
*/
|
|
52
|
+
msgProps?: MsgDropdownProps;
|
|
38
53
|
/**
|
|
39
54
|
* ThemeSwitch组件对应的参数
|
|
40
55
|
*/
|
|
41
|
-
themeSwitchProps
|
|
56
|
+
themeSwitchProps?: ThemeSwitchProps;
|
|
42
57
|
/**
|
|
43
58
|
* ProLayout组件对应的参数
|
|
44
59
|
*/
|
|
@@ -5,37 +5,30 @@ import { ProLayout } from "@ant-design/pro-layout";
|
|
|
5
5
|
import I18nDropdown from "../i18n-dropdown/index";
|
|
6
6
|
import TenantDropdown from "../tenant-dropdown/index";
|
|
7
7
|
import AvatarDropdown from "../avatar-dropdown/index";
|
|
8
|
+
import MsgDropdown from "../msg-dropdown/index";
|
|
8
9
|
import ThemeSwitch from "../theme-switch/index";
|
|
9
10
|
import styles from "./layout.module.css";
|
|
10
|
-
import { useCallback, useState } from "react";
|
|
11
11
|
import { CollectProviders, LocaleType } from "../index";
|
|
12
12
|
import { gql, query } from "@knockout-js/ice-urql/request";
|
|
13
|
-
import { iceUrqlInstance } from "../index";
|
|
14
13
|
import { OpenWin } from "../icons/index";
|
|
15
14
|
import { logoBase64 } from "./logo";
|
|
16
15
|
import AggregateMenu from "../aggregate-menu/index";
|
|
17
16
|
import { BarsOutlined } from "@ant-design/icons";
|
|
17
|
+
import { listFormatTreeData } from "../_util/index";
|
|
18
|
+
import { instanceName } from "@knockout-js/api";
|
|
18
19
|
const userMenuListQuery = gql(/* GraphQL */ `query userMenuList($appCode:String!){
|
|
19
20
|
userMenus(appCode: $appCode){
|
|
20
21
|
id,parentID,kind,name,comments,displaySort,icon,route
|
|
21
22
|
}
|
|
22
23
|
}`);
|
|
23
24
|
const Layout = (props)=>{
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const listFormatTree = useCallback((list, parentList)=>{
|
|
27
|
-
if (!parentList) parentList = list.filter((item)=>item.parentId == '0');
|
|
28
|
-
parentList.forEach((pItem)=>{
|
|
29
|
-
let children = list.filter((allItem)=>allItem.parentId == pItem.key);
|
|
30
|
-
if (children && children.length) pItem.children = listFormatTree(list, children);
|
|
31
|
-
});
|
|
32
|
-
return parentList;
|
|
33
|
-
}, []);
|
|
25
|
+
var _props_themeSwitchProps;
|
|
26
|
+
var _props_locale, _props_themeSwitchProps_value;
|
|
34
27
|
return /*#__PURE__*/ _jsxs(CollectProviders, {
|
|
35
|
-
locale: locale,
|
|
28
|
+
locale: (_props_locale = props.locale) !== null && _props_locale !== void 0 ? _props_locale : LocaleType.zhCN,
|
|
36
29
|
appCode: props.appCode,
|
|
37
30
|
tenantId: props.tenantProps.value,
|
|
38
|
-
dark: props.themeSwitchProps.value,
|
|
31
|
+
dark: (_props_themeSwitchProps_value = (_props_themeSwitchProps = props.themeSwitchProps) === null || _props_themeSwitchProps === void 0 ? void 0 : _props_themeSwitchProps.value) !== null && _props_themeSwitchProps_value !== void 0 ? _props_themeSwitchProps_value : false,
|
|
39
32
|
pathname: props.pathname,
|
|
40
33
|
children: [
|
|
41
34
|
/*#__PURE__*/ _jsx(ProLayout, _object_spread_props(_object_spread({
|
|
@@ -75,7 +68,7 @@ const Layout = (props)=>{
|
|
|
75
68
|
const result = await query(userMenuListQuery, {
|
|
76
69
|
appCode: props.appCode
|
|
77
70
|
}, {
|
|
78
|
-
instanceName:
|
|
71
|
+
instanceName: instanceName.UCENTER
|
|
79
72
|
});
|
|
80
73
|
if ((_result_data = result.data) === null || _result_data === void 0 ? void 0 : _result_data.userMenus.length) {
|
|
81
74
|
const meunList = result.data.userMenus.sort((d1, d2)=>{
|
|
@@ -94,7 +87,7 @@ const Layout = (props)=>{
|
|
|
94
87
|
path: item.route
|
|
95
88
|
};
|
|
96
89
|
});
|
|
97
|
-
return
|
|
90
|
+
return listFormatTreeData(meunList);
|
|
98
91
|
}
|
|
99
92
|
return [];
|
|
100
93
|
}
|
|
@@ -103,18 +96,15 @@ const Layout = (props)=>{
|
|
|
103
96
|
pathname: props.pathname
|
|
104
97
|
},
|
|
105
98
|
actionsRender: ()=>{
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
/*#__PURE__*/ _jsx(AvatarDropdown, _object_spread({}, props.avatarProps)),
|
|
116
|
-
/*#__PURE__*/ _jsx(ThemeSwitch, _object_spread({}, props.themeSwitchProps))
|
|
117
|
-
];
|
|
99
|
+
const actions = [];
|
|
100
|
+
if (props.i18nProps) actions.push(/*#__PURE__*/ _jsx(I18nDropdown, _object_spread({}, props.i18nProps)));
|
|
101
|
+
if (props.msgProps) actions.push(/*#__PURE__*/ _jsx(MsgDropdown, _object_spread({
|
|
102
|
+
ref: props.msgRef
|
|
103
|
+
}, props.msgProps)));
|
|
104
|
+
actions.push(/*#__PURE__*/ _jsx(TenantDropdown, _object_spread({}, props.tenantProps)));
|
|
105
|
+
actions.push(/*#__PURE__*/ _jsx(AvatarDropdown, _object_spread({}, props.avatarProps)));
|
|
106
|
+
if (props.themeSwitchProps) actions.push(/*#__PURE__*/ _jsx(ThemeSwitch, _object_spread({}, props.themeSwitchProps)));
|
|
107
|
+
return actions;
|
|
118
108
|
},
|
|
119
109
|
menuItemRender: (item, defaultDom)=>{
|
|
120
110
|
return item.path ? /*#__PURE__*/ _jsxs(_Fragment, {
|
|
@@ -139,7 +129,7 @@ const Layout = (props)=>{
|
|
|
139
129
|
}, props.proLayoutProps), {
|
|
140
130
|
children: props.children
|
|
141
131
|
})),
|
|
142
|
-
/*#__PURE__*/ _jsx(AggregateMenu, _object_spread({}, props.aggregateMenuProps))
|
|
132
|
+
props.aggregateMenuProps ? /*#__PURE__*/ _jsx(AggregateMenu, _object_spread({}, props.aggregateMenuProps)) : /*#__PURE__*/ _jsx(_Fragment, {})
|
|
143
133
|
]
|
|
144
134
|
});
|
|
145
135
|
};
|
|
@@ -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 ThemeSwitch, { ThemeSwitchProps } from '../theme-switch';\r\nimport styles from './layout.module.css';\r\nimport { ReactNode, FC, useCallback, useState } from 'react';\r\nimport { UserMenuListQuery, UserMenuListQueryVariables } from '@knockout-js/api';\r\nimport { CollectProviders, LocaleType } from '..';\r\nimport { gql, query } from '@knockout-js/ice-urql/request';\r\nimport { iceUrqlInstance } from '..';\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\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?: 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 * 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 [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\r\n\r\n return (\r\n <CollectProviders\r\n locale={locale}\r\n appCode={props.appCode}\r\n tenantId={props.tenantProps.value}\r\n dark={props.themeSwitchProps.value}\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: iceUrqlInstance.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 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 <AggregateMenu\r\n {...props.aggregateMenuProps}\r\n />\r\n </CollectProviders>\r\n )\r\n}\r\n\r\nexport default Layout\r\n"],"names":["ProLayout","I18nDropdown","TenantDropdown","AvatarDropdown","ThemeSwitch","styles","useCallback","useState","CollectProviders","LocaleType","gql","query","iceUrqlInstance","OpenWin","logoBase64","AggregateMenu","BarsOutlined","userMenuListQuery","Layout","props","locale","setLocale","zhCN","listFormatTree","list","parentList","filter","item","parentId","forEach","pItem","children","allItem","key","length","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","instanceName","ucenter","data","userMenus","meunList","sort","d1","d2","d1Sort","displaySort","d2Sort","parentID","map","id","name","icon","IconFont","type","i","path","route","location","actionsRender","onChange","i18nProps","avatarProps","menuItemRender","defaultDom","a","onClickMenuItem","menuIconPopup","proLayoutProps"],"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 } from 'react';\r\nimport { UserMenuListQuery, UserMenuListQueryVariables } from '@knockout-js/api/esm/gql/ucenter/graphql';\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","UCENTER","data","userMenus","length","meunList","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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"}
|