@knockout-js/layout 0.0.4-beta.1 → 0.1.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.
Files changed (45) hide show
  1. package/es2017/components/_util/index.d.ts +40 -0
  2. package/es2017/components/_util/index.js +69 -0
  3. package/es2017/components/_util/index.js.map +1 -0
  4. package/es2017/components/aggregate-menu/index.d.ts +6 -1
  5. package/es2017/components/aggregate-menu/index.js +156 -69
  6. package/es2017/components/aggregate-menu/index.js.map +1 -1
  7. package/es2017/components/aggregate-menu/index.module.css +38 -16
  8. package/es2017/components/index.d.ts +1 -0
  9. package/es2017/components/index.js +2 -0
  10. package/es2017/components/index.js.map +1 -1
  11. package/es2017/components/layout/index.d.ts +7 -1
  12. package/es2017/components/layout/index.js +12 -26
  13. package/es2017/components/layout/index.js.map +1 -1
  14. package/es2017/components/upload-file/index.d.ts +0 -2
  15. package/es2017/components/upload-file/index.js +1 -13
  16. package/es2017/components/upload-file/index.js.map +1 -1
  17. package/es2017/components/upload-file/uploadAvatar.js +1 -1
  18. package/es2017/components/upload-file/uploadAvatar.js.map +1 -1
  19. package/es2017/components/upload-file/uploadMultiple.js +1 -1
  20. package/es2017/components/upload-file/uploadMultiple.js.map +1 -1
  21. package/es2017/components/upload-file/uploadTemp.js +1 -1
  22. package/es2017/components/upload-file/uploadTemp.js.map +1 -1
  23. package/esm/components/_util/index.d.ts +40 -0
  24. package/esm/components/_util/index.js +75 -0
  25. package/esm/components/_util/index.js.map +1 -0
  26. package/esm/components/aggregate-menu/index.d.ts +6 -1
  27. package/esm/components/aggregate-menu/index.js +258 -70
  28. package/esm/components/aggregate-menu/index.js.map +1 -1
  29. package/esm/components/aggregate-menu/index.module.css +38 -16
  30. package/esm/components/index.d.ts +1 -0
  31. package/esm/components/index.js +2 -0
  32. package/esm/components/index.js.map +1 -1
  33. package/esm/components/layout/index.d.ts +7 -1
  34. package/esm/components/layout/index.js +12 -31
  35. package/esm/components/layout/index.js.map +1 -1
  36. package/esm/components/upload-file/index.d.ts +0 -2
  37. package/esm/components/upload-file/index.js +1 -13
  38. package/esm/components/upload-file/index.js.map +1 -1
  39. package/esm/components/upload-file/uploadAvatar.js +1 -1
  40. package/esm/components/upload-file/uploadAvatar.js.map +1 -1
  41. package/esm/components/upload-file/uploadMultiple.js +1 -1
  42. package/esm/components/upload-file/uploadMultiple.js.map +1 -1
  43. package/esm/components/upload-file/uploadTemp.js +1 -1
  44. package/esm/components/upload-file/uploadTemp.js.map +1 -1
  45. package/package.json +7 -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","apps","newAll","i","menuResult","menu","first","instanceName","ucenter","data","userRootOrgs","forEach","org","edges","oApp","node","find","app","push","appCode","code","userMenus","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 { App, AppMenu, AppMenuKind, LayoutPkgSaveUserPreferenceMutation, LayoutPkgSaveUserPreferenceMutationVariables, LayoutPkgUserMenuListQuery, LayoutPkgUserMenuListQueryVariables, LayoutPkgUserPreferenceQuery, LayoutPkgUserPreferenceQueryVariables, LayoutPkgUserAppListQuery, LayoutPkgUserAppListQueryVariables } 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 } from \"../provider\";\r\nimport { listFormatTreeData, treeFormatList } from \"../_util\";\r\nimport { OpenWin } from \"../icons\";\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: iceUrqlInstance.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: 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: 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, {}, { instanceName: iceUrqlInstance.ucenter });\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: iceUrqlInstance.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: iceUrqlInstance.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","AppMenuKind","iceUrqlInstance","DndContext","closestCenter","KeyboardSensor","PointerSensor","useSensor","useSensors","arrayMove","SortableContext","useSortable","sortableKeyboardCoordinates","verticalListSortingStrategy","CSS","useLocale","useDark","listFormatTreeData","treeFormatList","OpenWin","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","apps","newAll","i","menuResult","menu","menuFavorite","menuRecent","collectsList","latelyList","instanceName","ucenter","data","userApps","forEach","app","push","appCode","code","userMenus","sort","d1","d2","d1Sort","displaySort","d2Sort","parentID","key","parentId","orgUserPreference","menuItem","find","item","requestFavorite","list","input","map","requestRecent","ids","checkCollect","onClickItem","isOpen","allApp","oldIdx","allItem","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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"}
@@ -4,7 +4,6 @@
4
4
  }
5
5
 
6
6
  .aggregateMenuDrawer {
7
-
8
7
  :global(.ant-drawer-header-title) {
9
8
  flex-direction: row-reverse;
10
9
  }
@@ -12,7 +11,6 @@
12
11
  :global(.ant-drawer-body) {
13
12
  padding: 0;
14
13
  }
15
-
16
14
  }
17
15
 
18
16
  .aggregateMenuDrawerRow {
@@ -20,20 +18,20 @@
20
18
  display: flex;
21
19
  }
22
20
 
23
- .aggregateMenuDrawerMenu {
24
- height: 100%;
25
- border-right: 1px solid rgba(5, 5, 5, 0.06);
26
- }
27
-
28
21
  .aggregateMenuDrawerAllMenu {
29
22
  height: calc(100% - 52px);
30
23
  padding: 16px;
31
24
  overflow-y: auto;
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ .aggregateMenuDrawerAllMenuColumn {
29
+ /* column瀑布流 */
32
30
  column-count: 3;
33
31
  column-gap: 10px;
34
32
  }
35
33
 
36
- .aggregateMenuDrawerAllMenuColumn {
34
+ .aggregateMenuDrawerAllMenuColumnItem {
37
35
  /* 瀑布流关键写法 */
38
36
  break-inside: avoid;
39
37
  margin-bottom: 16px;
@@ -58,13 +56,13 @@
58
56
  height: 32px;
59
57
  line-height: 32px;
60
58
  cursor: pointer;
61
- padding: 0 16px;
59
+ padding: 0 6px 0 16px;
62
60
  display: flex;
63
61
 
64
62
  &:hover {
65
63
  background-color: #f1f1f1;
66
64
 
67
- :global(.anticon-star) {
65
+ :global(.anticon) {
68
66
  display: inline;
69
67
  }
70
68
  }
@@ -73,10 +71,6 @@
73
71
  color: rgb(255, 106, 0);
74
72
  display: inline-flex;
75
73
  }
76
-
77
- :global(.anticon-star) {
78
- display: none;
79
- }
80
74
  }
81
75
 
82
76
  .aggregateMenuDrawerAllMenuItemDir {
@@ -94,17 +88,44 @@
94
88
  font-weight: lighter;
95
89
  }
96
90
 
91
+ .aggregateMenuDrawerAllMenuItemIcons {
92
+
93
+ :global(.ant-space) {
94
+ align-items: unset;
95
+ }
96
+
97
+ :global(.anticon) {
98
+ display: none;
99
+ color: #c1c1c1;
100
+
101
+ &:hover {
102
+ color: #8c8c8c;
103
+
104
+ &:global(.anticon-star.collect) {
105
+ color: rgb(255, 106, 0);
106
+ display: inline-flex;
107
+ }
108
+ }
109
+
110
+ }
111
+ }
112
+
97
113
  .aggregateMenuDrawerAllInput {
98
114
  padding: 10px 0;
99
115
  margin: 0 16px;
100
116
  border-bottom: 1px solid rgba(5, 5, 5, 0.06);
101
117
  }
102
118
 
119
+ .aggregateMenuDrawerMenu {
120
+ height: 100%;
121
+ border-right: 1px solid rgba(5, 5, 5, 0.06);
122
+ }
123
+
103
124
  .aggregateMenuDrawerMenuItem {
104
125
  height: 40px;
105
126
  line-height: 40px;
106
127
  cursor: pointer;
107
- padding: 0 16px;
128
+ padding: 0 10px 0 16px;
108
129
  display: flex;
109
130
 
110
131
  &:hover {
@@ -137,7 +158,8 @@
137
158
 
138
159
  .aggregateMenuLatelys {
139
160
  padding: 16px 16px 0 16px;
140
-
161
+ height: 112px;
162
+ box-sizing: border-box;
141
163
  }
142
164
 
143
165
  .aggregateMenuLatelysColumn {
@@ -13,6 +13,7 @@ export { default as AggregateMenu, type AggregateMenuDataSource } from './aggreg
13
13
  export { default as UploadAvatar } from './upload-file/uploadAvatar';
14
14
  export { default as UploadMultiple } from './upload-file/uploadMultiple';
15
15
  export { default as UploadTemp } from './upload-file/uploadTemp';
16
+ export * as util from './_util';
16
17
  export declare enum iceUrqlInstance {
17
18
  ucenter = "ucenter"
18
19
  }
@@ -13,6 +13,8 @@ export { default as AggregateMenu } from "./aggregate-menu/index";
13
13
  export { default as UploadAvatar } from "./upload-file/uploadAvatar";
14
14
  export { default as UploadMultiple } from "./upload-file/uploadMultiple";
15
15
  export { default as UploadTemp } from "./upload-file/uploadTemp";
16
+ import * as _util from "./_util/index";
17
+ export { _util as util };
16
18
  export var iceUrqlInstance;
17
19
  (function(iceUrqlInstance) {
18
20
  iceUrqlInstance["ucenter"] = "ucenter";
@@ -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 enum iceUrqlInstance {\r\n ucenter = \"ucenter\"\r\n}\r\n"],"names":["default","Provider","Context","ThemeSwitch","AvatarDropdown","KeepAlive","TenantDropdown","LeavePrompt","useLeavePrompt","I18nDropdown","CollectProviders","LocaleType","Layout","Modal","AggregateMenu","UploadAvatar","UploadMultiple","UploadTemp","iceUrqlInstance","ucenter"],"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,EAAEC,cAAc,QAAQ,uBAAiB;AACxE,SAASR,WAAWS,YAAY,QAAQ,wBAAkB;AAC1D,SAAST,WAAWU,gBAAgB,QAAQ,4BAAsB;AAClE,SAASC,UAAU,QAAQ,mBAAa;AACxC,SAASX,WAAWY,MAAM,QAAQ,iBAAW;AAC7C,SAASZ,WAAWa,KAAK,QAAyB,gBAAU;AAC5D,SAASb,WAAWc,aAAa,QAAsC,yBAAmB;AAC1F,SAASd,WAAWe,YAAY,QAAQ,6BAA6B;AACrE,SAASf,WAAWgB,cAAc,QAAQ,+BAA+B;AACzE,SAAShB,WAAWiB,UAAU,QAAQ,2BAA2B;WAE1D;UAAKC,eAAe;IAAfA,gBACVC,aAAAA;GADUD,oBAAAA"}
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 * as util from './_util';\r\n\r\nexport enum iceUrqlInstance {\r\n ucenter = \"ucenter\"\r\n}\r\n"],"names":["default","Provider","Context","ThemeSwitch","AvatarDropdown","KeepAlive","TenantDropdown","LeavePrompt","useLeavePrompt","I18nDropdown","CollectProviders","LocaleType","Layout","Modal","AggregateMenu","UploadAvatar","UploadMultiple","UploadTemp","util","iceUrqlInstance","ucenter"],"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,EAAEC,cAAc,QAAQ,uBAAiB;AACxE,SAASR,WAAWS,YAAY,QAAQ,wBAAkB;AAC1D,SAAST,WAAWU,gBAAgB,QAAQ,4BAAsB;AAClE,SAASC,UAAU,QAAQ,mBAAa;AACxC,SAASX,WAAWY,MAAM,QAAQ,iBAAW;AAC7C,SAASZ,WAAWa,KAAK,QAAyB,gBAAU;AAC5D,SAASb,WAAWc,aAAa,QAAsC,yBAAmB;AAC1F,SAASd,WAAWe,YAAY,QAAQ,6BAA6B;AACrE,SAASf,WAAWgB,cAAc,QAAQ,+BAA+B;AACzE,SAAShB,WAAWiB,UAAU,QAAQ,2BAA2B;AAEjE,uBAAsB,gBAAU;AAAhC,SAAO,SAAKC,IAAI,GAAgB;WAEzB;UAAKC,eAAe;IAAfA,gBACVC,aAAAA;GADUD,oBAAAA"}
@@ -4,6 +4,7 @@ import { TenantDropdownProps } from '../tenant-dropdown';
4
4
  import { AvatarDropdownProps } from '../avatar-dropdown';
5
5
  import { ThemeSwitchProps } from '../theme-switch';
6
6
  import { ReactNode, FC } from 'react';
7
+ import { LocaleType } from '..';
7
8
  import { IconFontProps } from '@ant-design/icons/lib/components/IconFont';
8
9
  import { AggregateMenuProps } from '../aggregate-menu';
9
10
  export interface LayoutProps {
@@ -11,6 +12,11 @@ export interface LayoutProps {
11
12
  * 应用code
12
13
  */
13
14
  appCode: string;
15
+ /**
16
+ * 语言
17
+ * 默认 LocaleType.zhCN
18
+ */
19
+ locale?: LocaleType;
14
20
  /**
15
21
  * 传递动态的 location.pathname
16
22
  */
@@ -38,7 +44,7 @@ export interface LayoutProps {
38
44
  /**
39
45
  * ThemeSwitch组件对应的参数
40
46
  */
41
- themeSwitchProps: ThemeSwitchProps;
47
+ themeSwitchProps?: ThemeSwitchProps;
42
48
  /**
43
49
  * ProLayout组件对应的参数
44
50
  */
@@ -1,7 +1,6 @@
1
1
  import _async_to_generator from "@swc/helpers/src/_async_to_generator.mjs";
2
2
  import _object_spread from "@swc/helpers/src/_object_spread.mjs";
3
3
  import _object_spread_props from "@swc/helpers/src/_object_spread_props.mjs";
4
- import _sliced_to_array from "@swc/helpers/src/_sliced_to_array.mjs";
5
4
  import _ts_generator from "@swc/helpers/src/_ts_generator.mjs";
6
5
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@ice/jsx-runtime/jsx-runtime";
7
6
  import { ProLayout } from "@ant-design/pro-layout";
@@ -10,7 +9,6 @@ import TenantDropdown from "../tenant-dropdown/index";
10
9
  import AvatarDropdown from "../avatar-dropdown/index";
11
10
  import ThemeSwitch from "../theme-switch/index";
12
11
  import styles from "./layout.module.css";
13
- import { useCallback, useState } from "react";
14
12
  import { CollectProviders, LocaleType } from "../index";
15
13
  import { gql, query } from "@knockout-js/ice-urql/request";
16
14
  import { iceUrqlInstance } from "../index";
@@ -18,27 +16,16 @@ import { OpenWin } from "../icons/index";
18
16
  import { logoBase64 } from "./logo";
19
17
  import AggregateMenu from "../aggregate-menu/index";
20
18
  import { BarsOutlined } from "@ant-design/icons";
19
+ import { listFormatTreeData } from "../_util/index";
21
20
  var userMenuListQuery = gql("query userMenuList($appCode:String!){\n userMenus(appCode: $appCode){\n id,parentID,kind,name,comments,displaySort,icon,route\n }\n}");
22
21
  var Layout = function(props) {
23
- var _useState = _sliced_to_array(useState(LocaleType.zhCN), 2), locale = _useState[0], setLocale = _useState[1];
24
- // 根据列表格式化成菜单树结构
25
- var listFormatTree = useCallback(function(list, parentList) {
26
- if (!parentList) parentList = list.filter(function(item) {
27
- return item.parentId == "0";
28
- });
29
- parentList.forEach(function(pItem) {
30
- var children = list.filter(function(allItem) {
31
- return allItem.parentId == pItem.key;
32
- });
33
- if (children && children.length) pItem.children = listFormatTree(list, children);
34
- });
35
- return parentList;
36
- }, []);
22
+ var _props_themeSwitchProps;
23
+ var _props_locale, _props_themeSwitchProps_value;
37
24
  return /*#__PURE__*/ _jsxs(CollectProviders, {
38
- locale: locale,
25
+ locale: (_props_locale = props.locale) !== null && _props_locale !== void 0 ? _props_locale : LocaleType.zhCN,
39
26
  appCode: props.appCode,
40
27
  tenantId: props.tenantProps.value,
41
- dark: props.themeSwitchProps.value,
28
+ 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,
42
29
  pathname: props.pathname,
43
30
  children: [
44
31
  /*#__PURE__*/ _jsx(ProLayout, _object_spread_props(_object_spread({
@@ -107,7 +94,7 @@ var Layout = function(props) {
107
94
  });
108
95
  return [
109
96
  2,
110
- listFormatTree(meunList)
97
+ listFormatTreeData(meunList)
111
98
  ];
112
99
  }
113
100
  return [
@@ -122,18 +109,12 @@ var Layout = function(props) {
122
109
  pathname: props.pathname
123
110
  },
124
111
  actionsRender: function() {
125
- return [
126
- /*#__PURE__*/ _jsx(I18nDropdown, {
127
- onChange: function(value) {
128
- var _props_i18nProps, _props_i18nProps_onChange;
129
- setLocale(value);
130
- (_props_i18nProps = props.i18nProps) === null || _props_i18nProps === void 0 ? void 0 : (_props_i18nProps_onChange = _props_i18nProps.onChange) === null || _props_i18nProps_onChange === void 0 ? void 0 : _props_i18nProps_onChange.call(_props_i18nProps, value);
131
- }
132
- }),
133
- /*#__PURE__*/ _jsx(TenantDropdown, _object_spread({}, props.tenantProps)),
134
- /*#__PURE__*/ _jsx(AvatarDropdown, _object_spread({}, props.avatarProps)),
135
- /*#__PURE__*/ _jsx(ThemeSwitch, _object_spread({}, props.themeSwitchProps))
136
- ];
112
+ var actions = [];
113
+ if (props.i18nProps) actions.push(/*#__PURE__*/ _jsx(I18nDropdown, _object_spread({}, props.i18nProps)));
114
+ actions.push(/*#__PURE__*/ _jsx(TenantDropdown, _object_spread({}, props.tenantProps)));
115
+ actions.push(/*#__PURE__*/ _jsx(AvatarDropdown, _object_spread({}, props.avatarProps)));
116
+ if (props.themeSwitchProps) actions.push(/*#__PURE__*/ _jsx(ThemeSwitch, _object_spread({}, props.themeSwitchProps)));
117
+ return actions;
137
118
  },
138
119
  menuItemRender: function(item, defaultDom) {
139
120
  return item.path ? /*#__PURE__*/ _jsxs(_Fragment, {
@@ -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","zhCN","locale","setLocale","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","meunList","instanceName","ucenter","data","userMenus","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 ThemeSwitch, { ThemeSwitchProps } from '../theme-switch';\r\nimport styles from './layout.module.css';\r\nimport { ReactNode, FC } 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\nimport { listFormatTreeData } from '../_util';\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 * 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\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: 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 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 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 <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","CollectProviders","LocaleType","gql","query","iceUrqlInstance","OpenWin","logoBase64","AggregateMenu","BarsOutlined","listFormatTreeData","userMenuListQuery","Layout","props","locale","zhCN","appCode","tenantId","tenantProps","value","dark","themeSwitchProps","pathname","className","layout","headerTitleRender","logo","title","aggregateMenuProps","open","rev","undefined","style","fontSize","marginRight","onClick","onChangeOpen","img","src","alt","fixSiderbar","suppressSiderWhenMenuEmpty","menu","request","result","meunList","instanceName","ucenter","data","userMenus","length","sort","d1","d2","d1Sort","displaySort","d2Sort","parentID","map","item","key","id","name","icon","IconFont","type","i","parentId","path","route","location","actionsRender","actions","i18nProps","push","avatarProps","menuItemRender","defaultDom","a","onClickMenuItem","menuIconPopup","proLayoutProps","children"],"mappings":";;;;;AAAA,SAAuBA,SAAS,QAAwB,yBAAyB;AACjF,OAAOC,kBAAyC,yBAAmB;AACnE,OAAOC,oBAA6C,2BAAqB;AACzE,OAAOC,oBAA6C,2BAAqB;AACzE,OAAOC,iBAAuC,wBAAkB;AAChE,OAAOC,YAAY,sBAAsB;AAGzC,SAASC,gBAAgB,EAAEC,UAAU,QAAQ,WAAK;AAClD,SAASC,GAAG,EAAEC,KAAK,QAAQ,gCAAgC;AAC3D,SAASC,eAAe,QAAQ,WAAK;AACrC,SAASC,OAAO,QAAQ,iBAAW;AAEnC,SAASC,UAAU,QAAQ,SAAS;AACpC,OAAOC,mBAA2C,0BAAoB;AACtE,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,kBAAkB,QAAQ,iBAAW;AA6D9C,IAAMC,oBAAoBR,IAAkB;AAO5C,IAAMS,SAAS,SAACC,OAAuB;QAQ3BA;QAHEA,eAGFA;IALV,qBACE,MAACZ;QACCa,QAAQD,CAAAA,gBAAAA,MAAMC,MAAM,cAAZD,2BAAAA,gBAAgBX,WAAWa,IAAI;QACvCC,SAASH,MAAMG,OAAO;QACtBC,UAAUJ,MAAMK,WAAW,CAACC,KAAK;QACjCC,MAAMP,CAAAA,gCAAAA,CAAAA,0BAAAA,MAAMQ,gBAAgB,cAAtBR,qCAAAA,KAAAA,IAAAA,wBAAwBM,KAAK,cAA7BN,2CAAAA,gCAAiC,KAAK;QAC5CS,UAAUT,MAAMS,QAAQ;;0BAExB,KAAC3B;gBACC4B,WAAWvB,OAAOwB,MAAM;gBACxBC,mBAAmB,SAACC,MAAMC,OAAU;wBAExBd;oBADV,qBAAO;;4BACJ,OAAOA,CAAAA,CAAAA,4BAAAA,MAAMe,kBAAkB,cAAxBf,uCAAAA,KAAAA,IAAAA,0BAA0BgB,IAAI,AAAD,MAAM,0BAAY,KAACpB;gCACtDqB,KAAKC;gCACLC,OAAO;oCAAEC,UAAU;oCAAIC,aAAa;gCAAG;gCACvCC,SAAS,WAAM;wCACbtB;oCAAAA,CAAAA,4BAAAA,MAAMe,kBAAkB,cAAxBf,uCAAAA,KAAAA,IAAAA,0CAAAA,0BAA0BuB,8EAA1BvB,KAAAA,IAAAA,uCAAAA,KAAAA,2BAAyC,IAAI;gCAC/C;+CACG,mBAAK;4BACTa;4BACAC;;;gBAEL;gBACAA,OAAM;gBACND,oBAAM,KAACW;oBAAIC,KAAK/B;oBAAYgC,KAAI;;gBAChCf,QAAO;gBACPgB,WAAW;gBACXC,0BAA0B;gBAC1BC,MAAM;oBACJ5B,QAAQ,IAAI;oBACZ6B,uBAAS,oBAAA,WAAY;4BAIfC,cAHEA,QAIEC;;;;oCAJO;;wCAAMzC,MAAqDO,mBAAmB;4CAC3FK,SAASH,MAAMG,OAAO;wCACxB,GAAG;4CAAE8B,cAAczC,gBAAgB0C,OAAO;wCAAC;;;oCAFrCH,SAAS;oCAGf,IAAIA,CAAAA,eAAAA,OAAOI,IAAI,cAAXJ,0BAAAA,KAAAA,IAAAA,aAAaK,UAAUC,MAAM,EAAE;wCAC3BL,WAAWD,OAAOI,IAAI,CAACC,SAAS,CAACE,IAAI,CAAC,SAACC,IAAIC,IAAO;4CACtD,IAAMC,SAASF,GAAGG,WAAW,IAAI,GAAGC,SAASH,GAAGE,WAAW,IAAI;4CAC/D,OAAOH,GAAGK,QAAQ,GAAGJ,GAAGI,QAAQ,GAAG,KAAKL,GAAGK,QAAQ,GAAGJ,GAAGI,QAAQ,GAAG,IAAIH,SAASE,SAAS,KAAKF,SAASE,SAAS,IAAI,CAAC;wCACxH,GAAGE,GAAG,CAACC,SAAAA,MAAQ;4CACb,OAAO;gDACLC,KAAKD,KAAKE,EAAE;gDACZC,MAAMH,KAAKG,IAAI;gDACfC,MAAMJ,KAAKI,IAAI,GAAGlD,MAAMmD,QAAQ,iBAAG,KAACnD,MAAMmD,QAAQ;oDAACC,MAAMN,KAAKI,IAAI;mEAAO,KAACG;oDAAE3C,WAAWoC,KAAKI,IAAI;kDAAI,GAAGhC,SAAS;gDAChHoC,UAAUR,KAAKF,QAAQ;gDACvBW,MAAMT,KAAKU,KAAK;4CAClB;wCACF;wCAEA;;4CAAO3D,mBAAmBmC;;oCAC5B,CAAC;oCACD;;;;;;oBACF;gBACF;gBACAyB,UAAU;oBACRhD,UAAUT,MAAMS,QAAQ;gBAC1B;gBACAiD,eAAe,WAAM;oBACnB,IAAMC,UAAuB,EAAE;oBAC/B,IAAI3D,MAAM4D,SAAS,EACjBD,QAAQE,IAAI,eAAC,KAAC9E,iCAAiBiB,MAAM4D,SAAS;oBAEhDD,QAAQE,IAAI,eAAC,KAAC7E,mCAAmBgB,MAAMK,WAAW;oBAClDsD,QAAQE,IAAI,eAAC,KAAC5E,mCAAmBe,MAAM8D,WAAW;oBAClD,IAAI9D,MAAMQ,gBAAgB,EACxBmD,QAAQE,IAAI,eAAC,KAAC3E,gCAAgBc,MAAMQ,gBAAgB;oBAEtD,OAAOmD;gBACT;gBACAI,gBAAgB,SAACjB,MAAMkB;oBAAgBlB,OAAAA,KAAKS,IAAI,iBAAG;;0CACjD,KAACU;gCACC3C,SAAS,WAAM;wCACbtB;oCAAAA,CAAAA,yBAAAA,MAAMkE,eAAe,cAArBlE,oCAAAA,KAAAA,IAAAA,uBAAAA,KAAAA,OAAwB8C,MAAM,KAAK;gCACrC;0CACAkB;;0CACF,KAACvE;gCACCiB,WAAWvB,OAAOgF,aAAa;gCAC/B7C,SAAS,WAAM;wCACbtB;oCAAAA,CAAAA,yBAAAA,MAAMkE,eAAe,cAArBlE,oCAAAA,KAAAA,IAAAA,uBAAAA,KAAAA,OAAwB8C,MAAM,IAAI;gCACpC;;;yBAGAkB,UAAU;;eACVhE,MAAMoE,cAAc;0BAEvBpE,MAAMqE,QAAQ;;0BAEjB,KAAC1E,kCACKK,MAAMe,kBAAkB;;;AAIpC;AAEA,eAAehB,OAAM"}
@@ -55,5 +55,3 @@ export interface UploadFileProps<T> {
55
55
  */
56
56
  onChangePath?: (path?: T) => void;
57
57
  }
58
- export declare const formatFileSize: (fileSize: number) => string;
59
- export declare const randomId: (len: number) => string;
@@ -1,15 +1,3 @@
1
- //字节大小处理
2
- export var formatFileSize = function(fileSize) {
3
- if (fileSize < 1024) return fileSize + "B";
4
- else if (fileSize < 1048576) return (fileSize / 1024).toFixed(2) + "KB";
5
- else if (fileSize < 1073741824) return (fileSize / 1048576).toFixed(2) + "MB";
6
- else return (fileSize / 1073741824).toFixed(2) + "GB";
7
- };
8
- // 随机数
9
- export var randomId = function(len) {
10
- var str = "";
11
- for(; str.length < len; str += Math.random().toString(36).substring(2));
12
- return str.substring(0, len);
13
- };
1
+ export { };
14
2
 
15
3
  //# sourceMappingURL=D:\codeing\git\github\knockout-js\packages\layout\esm\components\upload-file\index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\upload-file\\index.ts"],"sourcesContent":["export type UploadFileLocale = {\r\n // 文件大小必须小于:\r\n fileSizeTip: string;\r\n del: string;\r\n confirmDel: string;\r\n // 点击或拖拽文件上传\r\n clickOrDragUpload: string;\r\n // 支持扩展名\r\n supportExtension: string;\r\n errSupportExtension: string;\r\n fileUpload: string;\r\n tempViewer: string;\r\n tempDown: string;\r\n}\r\n\r\nexport interface UploadFileProps<T> {\r\n /**\r\n * bucket\r\n */\r\n bucket?: string;\r\n /**\r\n * 应用code\r\n */\r\n appCode?: string;\r\n /**\r\n * tenantId\r\n */\r\n tenantId?: string;\r\n /**\r\n * 目录格式 xxx/ss\r\n */\r\n directory?: string;\r\n /**\r\n * 强制使用目录当前缀\r\n */\r\n forceDirectory?: boolean;\r\n /**\r\n * 限制文件大小\r\n */\r\n maxSize?: number;\r\n /**\r\n * 限制弹框选择\r\n */\r\n accept?: string;\r\n /**\r\n * 文件 id\r\n */\r\n value?: T;\r\n /**\r\n * 返回文件id\r\n * @param value\r\n * @returns\r\n */\r\n onChange?: (value?: T) => void;\r\n /**\r\n * 返回文件path\r\n * @param path\r\n * @returns\r\n */\r\n onChangePath?: (path?: T) => void;\r\n}\r\n\r\n//字节大小处理\r\nexport const formatFileSize = (fileSize: number) => {\r\n if (fileSize < 1024) {\r\n return fileSize + 'B';\r\n } else if (fileSize < (1024 * 1024)) {\r\n return (fileSize / 1024).toFixed(2) + 'KB';\r\n } else if (fileSize < (1024 * 1024 * 1024)) {\r\n return (fileSize / (1024 * 1024)).toFixed(2) + 'MB';\r\n } else {\r\n return (fileSize / (1024 * 1024 * 1024)).toFixed(2) + 'GB';\r\n }\r\n}\r\n\r\n// 随机数\r\nexport const randomId = (len: number) => {\r\n let str = '';\r\n for (; str.length < len; str += Math.random().toString(36).substring(2));\r\n return str.substring(0, len);\r\n}\r\n"],"names":["formatFileSize","fileSize","toFixed","randomId","len","str","length","Math","random","toString","substring"],"mappings":"AA8DA,QAAQ;AACR,OAAO,IAAMA,iBAAiB,SAACC,UAAqB;IAClD,IAAIA,WAAW,MACb,OAAOA,WAAW;SACb,IAAIA,WAAY,SACrB,OAAO,AAACA,CAAAA,WAAW,IAAG,EAAGC,OAAO,CAAC,KAAK;SACjC,IAAID,WAAY,YACrB,OAAO,AAACA,CAAAA,WAAY,OAAW,EAAGC,OAAO,CAAC,KAAK;SAE/C,OAAO,AAACD,CAAAA,WAAY,UAAkB,EAAGC,OAAO,CAAC,KAAK;AAE1D,EAAC;AAED,MAAM;AACN,OAAO,IAAMC,WAAW,SAACC,KAAgB;IACvC,IAAIC,MAAM;IACV,MAAOA,IAAIC,MAAM,GAAGF,KAAKC,OAAOE,KAAKC,MAAM,GAAGC,QAAQ,CAAC,IAAIC,SAAS,CAAC;IACrE,OAAOL,IAAIK,SAAS,CAAC,GAAGN;AAC1B,EAAC"}
1
+ {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\upload-file\\index.ts"],"sourcesContent":["export type UploadFileLocale = {\r\n // 文件大小必须小于:\r\n fileSizeTip: string;\r\n del: string;\r\n confirmDel: string;\r\n // 点击或拖拽文件上传\r\n clickOrDragUpload: string;\r\n // 支持扩展名\r\n supportExtension: string;\r\n errSupportExtension: string;\r\n fileUpload: string;\r\n tempViewer: string;\r\n tempDown: string;\r\n}\r\n\r\nexport interface UploadFileProps<T> {\r\n /**\r\n * bucket\r\n */\r\n bucket?: string;\r\n /**\r\n * 应用code\r\n */\r\n appCode?: string;\r\n /**\r\n * tenantId\r\n */\r\n tenantId?: string;\r\n /**\r\n * 目录格式 xxx/ss\r\n */\r\n directory?: string;\r\n /**\r\n * 强制使用目录当前缀\r\n */\r\n forceDirectory?: boolean;\r\n /**\r\n * 限制文件大小\r\n */\r\n maxSize?: number;\r\n /**\r\n * 限制弹框选择\r\n */\r\n accept?: string;\r\n /**\r\n * 文件 id\r\n */\r\n value?: T;\r\n /**\r\n * 返回文件id\r\n * @param value\r\n * @returns\r\n */\r\n onChange?: (value?: T) => void;\r\n /**\r\n * 返回文件path\r\n * @param path\r\n * @returns\r\n */\r\n onChangePath?: (path?: T) => void;\r\n}\r\n"],"names":[],"mappings":"AAAA,WA4DC"}
@@ -7,8 +7,8 @@ import { Spin, Upload, message } from "antd";
7
7
  import { useEffect, useState } from "react";
8
8
  import { files as fileApi } from "@knockout-js/api";
9
9
  import { useAppCode, useTenantId } from "../provider/index";
10
- import { randomId, formatFileSize } from "./index";
11
10
  import { useLocale } from "../locale/index";
11
+ import { formatFileSize, randomId } from "../_util/index";
12
12
  export default function(props) {
13
13
  var _props_bucket, _props_appCode, _props_tenantId;
14
14
  var bucket = (_props_bucket = props.bucket) !== null && _props_bucket !== void 0 ? _props_bucket : "local", appCode = (_props_appCode = props.appCode) !== null && _props_appCode !== void 0 ? _props_appCode : useAppCode(), tenantId = (_props_tenantId = props.tenantId) !== null && _props_tenantId !== void 0 ? _props_tenantId : useTenantId(), locale = useLocale("UploadFile"), _message_useMessage = _sliced_to_array(message.useMessage(), 1), messageApi = _message_useMessage[0], _useState = _sliced_to_array(useState(false), 2), loading = _useState[0], setLoading = _useState[1], _useState1 = _sliced_to_array(useState(), 2), imgsrc = _useState1[0], setImgsrc = _useState1[1];
@@ -1 +1 @@
1
- {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\upload-file\\uploadAvatar.tsx"],"sourcesContent":["import { PlusOutlined } from \"@ant-design/icons\";\nimport { Spin, Upload, message } from \"antd\"\nimport { RcFile } from \"antd/es/upload\";\nimport { useEffect, useState } from \"react\";\nimport { files as fileApi } from \"@knockout-js/api\";\nimport { useAppCode, useTenantId } from \"../provider\";\nimport { UploadFileProps, randomId, formatFileSize } from \".\";\nimport { useLocale } from \"../locale\";\n\nexport default (props: UploadFileProps<string>) => {\n const\n bucket = props.bucket ?? 'local',\n appCode = props.appCode ?? useAppCode(),\n tenantId = props.tenantId ?? useTenantId(),\n locale = useLocale(\"UploadFile\"),\n [messageApi] = message.useMessage(),\n [loading, setLoading] = useState(false),\n [imgsrc, setImgsrc] = useState<string>();\n\n const\n getUploadKey = (file: RcFile) => {\n const suffix = file.name.split('.').pop(),\n keys: string[] = [];\n if (props.forceDirectory && props.directory) {\n keys.push(props.directory)\n } else {\n if (appCode) {\n keys.push(appCode)\n }\n if (tenantId) {\n keys.push(tenantId)\n }\n if (props.directory) {\n keys.push(props.directory)\n }\n }\n keys.push(`${randomId(16)}.${suffix}`);\n return `/${keys.join('/')}`.replace('//', '/');\n },\n updateFile = async (file: RcFile) => {\n const key = getUploadKey(file);\n setLoading(true);\n if (bucket === 'local') {\n try {\n const result = await fileApi.updateFiles({\n key,\n bucket,\n file,\n })\n if (result) {\n props.onChange?.(result)\n props.onChangePath?.(key);\n }\n } catch (error) {\n\n }\n }\n setLoading(false)\n },\n getValueFile = async () => {\n if (props.value) {\n if (bucket === 'local') {\n const result = await fileApi.getFilesRaw(props.value, 'url');\n if (typeof result === 'string') {\n setImgsrc(result)\n }\n }\n } else {\n setImgsrc(undefined)\n }\n }\n\n useEffect(() => {\n getValueFile()\n }, [props.value])\n\n return <div style={{ display: \"inline-block\" }}>\n <Spin spinning={loading} >\n <Upload\n accept={props.accept}\n listType=\"picture-card\"\n showUploadList={false}\n beforeUpload={async (file) => {\n const maxSize = props.maxSize || (1024 * 1024 * 5);\n\n if (file.size > maxSize) {\n messageApi.error(`${locale.fileSizeTip}: ${formatFileSize(maxSize)}`);\n return false;\n }\n\n await updateFile(file);\n return false;\n }}\n >\n {\n imgsrc ? <img\n src={imgsrc} alt=\"avatar\" style={{ width: '100%' }}\n /> : <>\n <PlusOutlined rev={undefined} />\n <div style={{ marginTop: 8 }}></div>\n </>\n }\n </Upload>\n </Spin>\n </div>\n}\n"],"names":["PlusOutlined","Spin","Upload","message","useEffect","useState","files","fileApi","useAppCode","useTenantId","randomId","formatFileSize","useLocale","props","bucket","appCode","tenantId","locale","useMessage","messageApi","loading","setLoading","imgsrc","setImgsrc","getUploadKey","file","suffix","name","split","pop","keys","forceDirectory","directory","push","join","replace","updateFile","key","result","error","updateFiles","onChange","onChangePath","getValueFile","value","getFilesRaw","undefined","div","style","display","spinning","accept","listType","showUploadList","beforeUpload","maxSize","size","fileSizeTip","img","src","alt","width","rev","marginTop"],"mappings":"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"}
1
+ {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\upload-file\\uploadAvatar.tsx"],"sourcesContent":["import { PlusOutlined } from \"@ant-design/icons\";\r\nimport { Spin, Upload, message } from \"antd\"\r\nimport { RcFile } from \"antd/es/upload\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { files as fileApi } from \"@knockout-js/api\";\r\nimport { useAppCode, useTenantId } from \"../provider\";\r\nimport { UploadFileProps } from \".\";\r\nimport { useLocale } from \"../locale\";\r\nimport { formatFileSize, randomId } from \"../_util\";\r\n\r\nexport default (props: UploadFileProps<string>) => {\r\n const\r\n bucket = props.bucket ?? 'local',\r\n appCode = props.appCode ?? useAppCode(),\r\n tenantId = props.tenantId ?? useTenantId(),\r\n locale = useLocale(\"UploadFile\"),\r\n [messageApi] = message.useMessage(),\r\n [loading, setLoading] = useState(false),\r\n [imgsrc, setImgsrc] = useState<string>();\r\n\r\n const\r\n getUploadKey = (file: RcFile) => {\r\n const suffix = file.name.split('.').pop(),\r\n keys: string[] = [];\r\n if (props.forceDirectory && props.directory) {\r\n keys.push(props.directory)\r\n } else {\r\n if (appCode) {\r\n keys.push(appCode)\r\n }\r\n if (tenantId) {\r\n keys.push(tenantId)\r\n }\r\n if (props.directory) {\r\n keys.push(props.directory)\r\n }\r\n }\r\n keys.push(`${randomId(16)}.${suffix}`);\r\n return `/${keys.join('/')}`.replace('//', '/');\r\n },\r\n updateFile = async (file: RcFile) => {\r\n const key = getUploadKey(file);\r\n setLoading(true);\r\n if (bucket === 'local') {\r\n try {\r\n const result = await fileApi.updateFiles({\r\n key,\r\n bucket,\r\n file,\r\n })\r\n if (result) {\r\n props.onChange?.(result)\r\n props.onChangePath?.(key);\r\n }\r\n } catch (error) {\r\n\r\n }\r\n }\r\n setLoading(false)\r\n },\r\n getValueFile = async () => {\r\n if (props.value) {\r\n if (bucket === 'local') {\r\n const result = await fileApi.getFilesRaw(props.value, 'url');\r\n if (typeof result === 'string') {\r\n setImgsrc(result)\r\n }\r\n }\r\n } else {\r\n setImgsrc(undefined)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getValueFile()\r\n }, [props.value])\r\n\r\n return <div style={{ display: \"inline-block\" }}>\r\n <Spin spinning={loading} >\r\n <Upload\r\n accept={props.accept}\r\n listType=\"picture-card\"\r\n showUploadList={false}\r\n beforeUpload={async (file) => {\r\n const maxSize = props.maxSize || (1024 * 1024 * 5);\r\n\r\n if (file.size > maxSize) {\r\n messageApi.error(`${locale.fileSizeTip}: ${formatFileSize(maxSize)}`);\r\n return false;\r\n }\r\n\r\n await updateFile(file);\r\n return false;\r\n }}\r\n >\r\n {\r\n imgsrc ? <img\r\n src={imgsrc} alt=\"avatar\" style={{ width: '100%' }}\r\n /> : <>\r\n <PlusOutlined rev={undefined} />\r\n <div style={{ marginTop: 8 }}></div>\r\n </>\r\n }\r\n </Upload>\r\n </Spin>\r\n </div>\r\n}\r\n"],"names":["PlusOutlined","Spin","Upload","message","useEffect","useState","files","fileApi","useAppCode","useTenantId","useLocale","formatFileSize","randomId","props","bucket","appCode","tenantId","locale","useMessage","messageApi","loading","setLoading","imgsrc","setImgsrc","getUploadKey","file","suffix","name","split","pop","keys","forceDirectory","directory","push","join","replace","updateFile","key","result","error","updateFiles","onChange","onChangePath","getValueFile","value","getFilesRaw","undefined","div","style","display","spinning","accept","listType","showUploadList","beforeUpload","maxSize","size","fileSizeTip","img","src","alt","width","rev","marginTop"],"mappings":"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"}
@@ -6,10 +6,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "@ice/jsx-runtime/jsx-runtime";
6
6
  import { UploadOutlined } from "@ant-design/icons";
7
7
  import { Modal, Spin, Typography, Upload, message } from "antd";
8
8
  import { useEffect, useState } from "react";
9
- import { formatFileSize, randomId } from "./index";
10
9
  import { useAppCode, useTenantId } from "../provider/index";
11
10
  import { useLocale } from "../locale/index";
12
11
  import { files as fileApi } from "@knockout-js/api";
12
+ import { formatFileSize, randomId } from "../_util/index";
13
13
  var files = [];
14
14
  var timeoutFn = undefined;
15
15
  export default function(props) {
@@ -1 +1 @@
1
- {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\upload-file\\uploadMultiple.tsx"],"sourcesContent":["import { UploadOutlined } from \"@ant-design/icons\";\r\nimport { Modal, Spin, Typography, Upload, message } from \"antd\"\r\nimport { RcFile, UploadFile } from \"antd/es/upload\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { UploadFileProps, formatFileSize, randomId } from \".\";\r\nimport { Files } from \"@knockout-js/api/esm/files\";\r\nimport { useAppCode, useTenantId } from \"../provider\";\r\nimport { useLocale } from \"../locale\";\r\nimport { files as fileApi } from \"@knockout-js/api\";\r\n\r\nlet files: RcFile[] = [];\r\nlet timeoutFn: NodeJS.Timeout | undefined = undefined;\r\n\r\nexport default (props: UploadFileProps<string[]>) => {\r\n const\r\n bucket = props.bucket ?? 'local',\r\n appCode = props.appCode ?? useAppCode(),\r\n tenantId = props.tenantId ?? useTenantId(),\r\n locale = useLocale(\"UploadFile\"),\r\n [loading, setLoading] = useState(false),\r\n [list, setList] = useState<UploadFile<Files>[]>([]);\r\n\r\n const\r\n getUploadKey = (file: RcFile) => {\r\n const suffix = file.name.split('.').pop(),\r\n keys: string[] = [];\r\n if (props.forceDirectory && props.directory) {\r\n keys.push(props.directory);\r\n } else {\r\n if (appCode) {\r\n keys.push(appCode);\r\n }\r\n if (tenantId) {\r\n keys.push(tenantId);\r\n }\r\n if (props.directory) {\r\n keys.push(props.directory);\r\n }\r\n }\r\n keys.push(`${randomId(16)}.${suffix}`);\r\n return `/${keys.join('/')}`.replace('//', '/');\r\n },\r\n beforeUpload = async (file: RcFile) => {\r\n const maxSize = props.maxSize || 1024 * 5000;\r\n\r\n if (file.size > maxSize) {\r\n message.error(`${locale.fileSizeTip}: ${formatFileSize(maxSize)}`);\r\n return false;\r\n }\r\n\r\n files.push(file);\r\n clearTimeout(timeoutFn);\r\n timeoutFn = setTimeout(async () => {\r\n await updateFile();\r\n }, 500);\r\n return false;\r\n },\r\n updateFile = async () => {\r\n if (files.length) {\r\n setLoading(true);\r\n const values: string[] = props.value || [];\r\n for (let i in files) {\r\n const file = files[i],\r\n key = getUploadKey(file);\r\n\r\n if (bucket === 'local') {\r\n try {\r\n const result = await fileApi.updateFiles({\r\n key,\r\n bucket,\r\n file,\r\n })\r\n if (result) {\r\n values.push(result);\r\n }\r\n } catch (error) {\r\n }\r\n }\r\n }\r\n await getValuesFile(values);\r\n props.onChange?.(values);\r\n setLoading(false);\r\n files = [];\r\n }\r\n },\r\n getValuesFile = async (values?: string[]) => {\r\n if (values && values.length) {\r\n const bucket = props.bucket ?? 'local';\r\n const oldKye = list.map(item => item.uid),\r\n addKeys = values.filter(key => !oldKye.includes(key)),\r\n addLength = addKeys.length;\r\n if (addLength) {\r\n for (let i = 0; i < addLength; i++) {\r\n const data: UploadFile = {\r\n uid: addKeys[i],\r\n name: '',\r\n };\r\n const result = await fileApi.getFiles(data.uid);\r\n if (result?.id) {\r\n data.name = result.name;\r\n data.linkProps = {\r\n download: result.name,\r\n };\r\n data.response = result;\r\n }\r\n if (bucket === 'local') {\r\n const resultRaw = await fileApi.getFilesRaw(data.uid, 'url');\r\n if (typeof resultRaw === 'string') {\r\n data.url = resultRaw;\r\n }\r\n }\r\n list.push(data);\r\n }\r\n setList([...list]);\r\n }\r\n } else {\r\n setList([]);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getValuesFile(props.value);\r\n }, [props.value]);\r\n\r\n useEffect(() => {\r\n const paths: string[] = [];\r\n list.forEach(item => {\r\n if (item.response) {\r\n paths.push(item.response.path);\r\n }\r\n })\r\n props.onChangePath?.(paths);\r\n }, [list]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n clearTimeout(timeoutFn);\r\n };\r\n }, []);\r\n\r\n return <Spin spinning={loading} >\r\n <Upload.Dragger\r\n accept={props.accept}\r\n beforeUpload={beforeUpload}\r\n multiple={true}\r\n fileList={list}\r\n onRemove={(file) => {\r\n Modal.confirm({\r\n title: locale.del,\r\n content: `${locale.confirmDel}: ${file.name}`,\r\n onOk: () => {\r\n setList(list.filter(item => item.uid != file.uid));\r\n props.onChange?.(props.value?.filter(item => item != file.uid) || [])\r\n }\r\n })\r\n }}\r\n >\r\n <br />\r\n <div>\r\n <UploadOutlined style={{ fontSize: 40 }} rev={undefined} />\r\n </div>\r\n <br />\r\n <div>\r\n <Typography.Text type=\"secondary\">\r\n {locale.clickOrDragUpload}\r\n </Typography.Text>\r\n </div>\r\n <div>\r\n <Typography.Text type=\"secondary\">\r\n {`${locale.supportExtension}: ${props.accept?.split(',.').join('、').replace('.', '')}`}\r\n </Typography.Text>\r\n </div>\r\n </Upload.Dragger>\r\n </Spin>\r\n}\r\n"],"names":["UploadOutlined","Modal","Spin","Typography","Upload","message","useEffect","useState","formatFileSize","randomId","useAppCode","useTenantId","useLocale","files","fileApi","timeoutFn","undefined","props","bucket","appCode","tenantId","locale","loading","setLoading","list","setList","getUploadKey","file","suffix","name","split","pop","keys","forceDirectory","directory","push","join","replace","beforeUpload","maxSize","size","error","fileSizeTip","clearTimeout","setTimeout","updateFile","values","i","key","result","length","value","updateFiles","getValuesFile","onChange","oldKye","addKeys","addLength","data","resultRaw","map","item","uid","filter","includes","getFiles","id","linkProps","download","response","getFilesRaw","url","paths","forEach","path","onChangePath","spinning","Dragger","accept","multiple","fileList","onRemove","confirm","title","del","content","confirmDel","onOk","br","div","style","fontSize","rev","Text","type","clickOrDragUpload","supportExtension"],"mappings":"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"}
1
+ {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\upload-file\\uploadMultiple.tsx"],"sourcesContent":["import { UploadOutlined } from \"@ant-design/icons\";\r\nimport { Modal, Spin, Typography, Upload, message } from \"antd\"\r\nimport { RcFile, UploadFile } from \"antd/es/upload\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { UploadFileProps } from \".\";\r\nimport { Files } from \"@knockout-js/api/esm/files\";\r\nimport { useAppCode, useTenantId } from \"../provider\";\r\nimport { useLocale } from \"../locale\";\r\nimport { files as fileApi } from \"@knockout-js/api\";\r\nimport { formatFileSize, randomId } from \"../_util\";\r\n\r\nlet files: RcFile[] = [];\r\nlet timeoutFn: NodeJS.Timeout | undefined = undefined;\r\n\r\nexport default (props: UploadFileProps<string[]>) => {\r\n const\r\n bucket = props.bucket ?? 'local',\r\n appCode = props.appCode ?? useAppCode(),\r\n tenantId = props.tenantId ?? useTenantId(),\r\n locale = useLocale(\"UploadFile\"),\r\n [loading, setLoading] = useState(false),\r\n [list, setList] = useState<UploadFile<Files>[]>([]);\r\n\r\n const\r\n getUploadKey = (file: RcFile) => {\r\n const suffix = file.name.split('.').pop(),\r\n keys: string[] = [];\r\n if (props.forceDirectory && props.directory) {\r\n keys.push(props.directory);\r\n } else {\r\n if (appCode) {\r\n keys.push(appCode);\r\n }\r\n if (tenantId) {\r\n keys.push(tenantId);\r\n }\r\n if (props.directory) {\r\n keys.push(props.directory);\r\n }\r\n }\r\n keys.push(`${randomId(16)}.${suffix}`);\r\n return `/${keys.join('/')}`.replace('//', '/');\r\n },\r\n beforeUpload = async (file: RcFile) => {\r\n const maxSize = props.maxSize || 1024 * 5000;\r\n\r\n if (file.size > maxSize) {\r\n message.error(`${locale.fileSizeTip}: ${formatFileSize(maxSize)}`);\r\n return false;\r\n }\r\n\r\n files.push(file);\r\n clearTimeout(timeoutFn);\r\n timeoutFn = setTimeout(async () => {\r\n await updateFile();\r\n }, 500);\r\n return false;\r\n },\r\n updateFile = async () => {\r\n if (files.length) {\r\n setLoading(true);\r\n const values: string[] = props.value || [];\r\n for (let i in files) {\r\n const file = files[i],\r\n key = getUploadKey(file);\r\n\r\n if (bucket === 'local') {\r\n try {\r\n const result = await fileApi.updateFiles({\r\n key,\r\n bucket,\r\n file,\r\n })\r\n if (result) {\r\n values.push(result);\r\n }\r\n } catch (error) {\r\n }\r\n }\r\n }\r\n await getValuesFile(values);\r\n props.onChange?.(values);\r\n setLoading(false);\r\n files = [];\r\n }\r\n },\r\n getValuesFile = async (values?: string[]) => {\r\n if (values && values.length) {\r\n const bucket = props.bucket ?? 'local';\r\n const oldKye = list.map(item => item.uid),\r\n addKeys = values.filter(key => !oldKye.includes(key)),\r\n addLength = addKeys.length;\r\n if (addLength) {\r\n for (let i = 0; i < addLength; i++) {\r\n const data: UploadFile = {\r\n uid: addKeys[i],\r\n name: '',\r\n };\r\n const result = await fileApi.getFiles(data.uid);\r\n if (result?.id) {\r\n data.name = result.name;\r\n data.linkProps = {\r\n download: result.name,\r\n };\r\n data.response = result;\r\n }\r\n if (bucket === 'local') {\r\n const resultRaw = await fileApi.getFilesRaw(data.uid, 'url');\r\n if (typeof resultRaw === 'string') {\r\n data.url = resultRaw;\r\n }\r\n }\r\n list.push(data);\r\n }\r\n setList([...list]);\r\n }\r\n } else {\r\n setList([]);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getValuesFile(props.value);\r\n }, [props.value]);\r\n\r\n useEffect(() => {\r\n const paths: string[] = [];\r\n list.forEach(item => {\r\n if (item.response) {\r\n paths.push(item.response.path);\r\n }\r\n })\r\n props.onChangePath?.(paths);\r\n }, [list]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n clearTimeout(timeoutFn);\r\n };\r\n }, []);\r\n\r\n return <Spin spinning={loading} >\r\n <Upload.Dragger\r\n accept={props.accept}\r\n beforeUpload={beforeUpload}\r\n multiple={true}\r\n fileList={list}\r\n onRemove={(file) => {\r\n Modal.confirm({\r\n title: locale.del,\r\n content: `${locale.confirmDel}: ${file.name}`,\r\n onOk: () => {\r\n setList(list.filter(item => item.uid != file.uid));\r\n props.onChange?.(props.value?.filter(item => item != file.uid) || [])\r\n }\r\n })\r\n }}\r\n >\r\n <br />\r\n <div>\r\n <UploadOutlined style={{ fontSize: 40 }} rev={undefined} />\r\n </div>\r\n <br />\r\n <div>\r\n <Typography.Text type=\"secondary\">\r\n {locale.clickOrDragUpload}\r\n </Typography.Text>\r\n </div>\r\n <div>\r\n <Typography.Text type=\"secondary\">\r\n {`${locale.supportExtension}: ${props.accept?.split(',.').join('、').replace('.', '')}`}\r\n </Typography.Text>\r\n </div>\r\n </Upload.Dragger>\r\n </Spin>\r\n}\r\n"],"names":["UploadOutlined","Modal","Spin","Typography","Upload","message","useEffect","useState","useAppCode","useTenantId","useLocale","files","fileApi","formatFileSize","randomId","timeoutFn","undefined","props","bucket","appCode","tenantId","locale","loading","setLoading","list","setList","getUploadKey","file","suffix","name","split","pop","keys","forceDirectory","directory","push","join","replace","beforeUpload","maxSize","size","error","fileSizeTip","clearTimeout","setTimeout","updateFile","values","i","key","result","length","value","updateFiles","getValuesFile","onChange","oldKye","addKeys","addLength","data","resultRaw","map","item","uid","filter","includes","getFiles","id","linkProps","download","response","getFilesRaw","url","paths","forEach","path","onChangePath","spinning","Dragger","accept","multiple","fileList","onRemove","confirm","title","del","content","confirmDel","onOk","br","div","style","fontSize","rev","Text","type","clickOrDragUpload","supportExtension"],"mappings":"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"}