@ditari/bsui 5.0.27 → 5.0.30

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 (97) hide show
  1. package/dist/cjs/components/date/RangePicker.vue2.cjs +2 -1
  2. package/dist/cjs/components/date/RangePicker.vue2.cjs.map +1 -1
  3. package/dist/cjs/components/date/index.cjs.map +1 -1
  4. package/dist/cjs/components/dic/DicReplace.cjs +3 -3
  5. package/dist/cjs/components/dic/DicReplace.cjs.map +1 -1
  6. package/dist/cjs/components/dic/index.cjs.map +1 -1
  7. package/dist/cjs/components/form/FormLayout.cjs.map +1 -1
  8. package/dist/cjs/components/form/index.cjs.map +1 -1
  9. package/dist/cjs/components/icon/Moon.vue.cjs +3 -3
  10. package/dist/cjs/components/icon/Moon.vue.cjs.map +1 -1
  11. package/dist/cjs/components/icon/Sun.vue.cjs +4 -4
  12. package/dist/cjs/components/icon/Sun.vue.cjs.map +1 -1
  13. package/dist/cjs/components/icon/index.cjs.map +1 -1
  14. package/dist/cjs/components/layout/Layout.vue2.cjs +3 -2
  15. package/dist/cjs/components/layout/Layout.vue2.cjs.map +1 -1
  16. package/dist/cjs/components/layout/List.cjs.map +1 -1
  17. package/dist/cjs/components/layout/Show.cjs.map +1 -1
  18. package/dist/cjs/components/layout/components/index.cjs.map +1 -1
  19. package/dist/cjs/components/layout/components/layout/HeaderLayout.vue2.cjs +23 -1
  20. package/dist/cjs/components/layout/components/layout/HeaderLayout.vue2.cjs.map +1 -1
  21. package/dist/cjs/components/layout/components/layout/RouterContent.vue2.cjs +12 -3
  22. package/dist/cjs/components/layout/components/layout/RouterContent.vue2.cjs.map +1 -1
  23. package/dist/cjs/components/layout/components/layout/ThemeApp.vue2.cjs.map +1 -1
  24. package/dist/cjs/components/layout/components/menu/Menu.cjs +54 -35
  25. package/dist/cjs/components/layout/components/menu/Menu.cjs.map +1 -1
  26. package/dist/cjs/components/layout/components/settings/BlockCheckbox.vue2.cjs.map +1 -1
  27. package/dist/cjs/components/layout/components/settings/SettingDrawer.cjs.map +1 -1
  28. package/dist/cjs/components/layout/index.cjs.map +1 -1
  29. package/dist/cjs/components/select/Select.vue2.cjs +1 -1
  30. package/dist/cjs/components/select/Select.vue2.cjs.map +1 -1
  31. package/dist/cjs/components/select/index.cjs.map +1 -1
  32. package/dist/cjs/components/tab/Search.cjs +2 -2
  33. package/dist/cjs/components/tab/Search.cjs.map +1 -1
  34. package/dist/cjs/components/tab/Tab.vue2.cjs +1 -1
  35. package/dist/cjs/components/tab/Tab.vue2.cjs.map +1 -1
  36. package/dist/cjs/components/tab/index.cjs.map +1 -1
  37. package/dist/cjs/components/table/Table.cjs.map +1 -1
  38. package/dist/cjs/components/table/index.cjs.map +1 -1
  39. package/dist/cjs/index.cjs +0 -1
  40. package/dist/cjs/index.cjs.map +1 -1
  41. package/dist/cjs/utils/useMenuCore.cjs.map +1 -1
  42. package/dist/cjs/utils/useTheme.cjs.map +1 -1
  43. package/dist/css/components/tab/style/index.css +1 -1
  44. package/dist/css/index.css +1 -1
  45. package/dist/esm/components/date/RangePicker.vue2.mjs +2 -1
  46. package/dist/esm/components/date/RangePicker.vue2.mjs.map +1 -1
  47. package/dist/esm/components/date/index.mjs.map +1 -1
  48. package/dist/esm/components/dic/DicReplace.mjs +3 -3
  49. package/dist/esm/components/dic/DicReplace.mjs.map +1 -1
  50. package/dist/esm/components/dic/index.mjs.map +1 -1
  51. package/dist/esm/components/form/FormLayout.mjs.map +1 -1
  52. package/dist/esm/components/form/index.mjs.map +1 -1
  53. package/dist/esm/components/icon/Moon.vue.mjs +3 -3
  54. package/dist/esm/components/icon/Moon.vue.mjs.map +1 -1
  55. package/dist/esm/components/icon/Sun.vue.mjs +4 -4
  56. package/dist/esm/components/icon/Sun.vue.mjs.map +1 -1
  57. package/dist/esm/components/icon/index.mjs.map +1 -1
  58. package/dist/esm/components/layout/Layout.vue2.mjs +3 -2
  59. package/dist/esm/components/layout/Layout.vue2.mjs.map +1 -1
  60. package/dist/esm/components/layout/List.mjs.map +1 -1
  61. package/dist/esm/components/layout/Show.mjs.map +1 -1
  62. package/dist/esm/components/layout/components/index.mjs.map +1 -1
  63. package/dist/esm/components/layout/components/layout/HeaderLayout.vue2.mjs +25 -3
  64. package/dist/esm/components/layout/components/layout/HeaderLayout.vue2.mjs.map +1 -1
  65. package/dist/esm/components/layout/components/layout/RouterContent.vue2.mjs +13 -4
  66. package/dist/esm/components/layout/components/layout/RouterContent.vue2.mjs.map +1 -1
  67. package/dist/esm/components/layout/components/layout/ThemeApp.vue2.mjs.map +1 -1
  68. package/dist/esm/components/layout/components/menu/Menu.mjs +56 -37
  69. package/dist/esm/components/layout/components/menu/Menu.mjs.map +1 -1
  70. package/dist/esm/components/layout/components/settings/BlockCheckbox.vue2.mjs.map +1 -1
  71. package/dist/esm/components/layout/components/settings/SettingDrawer.mjs.map +1 -1
  72. package/dist/esm/components/layout/index.mjs.map +1 -1
  73. package/dist/esm/components/select/Select.vue2.mjs +1 -1
  74. package/dist/esm/components/select/Select.vue2.mjs.map +1 -1
  75. package/dist/esm/components/select/index.mjs.map +1 -1
  76. package/dist/esm/components/tab/Search.mjs +1 -1
  77. package/dist/esm/components/tab/Search.mjs.map +1 -1
  78. package/dist/esm/components/tab/Tab.vue2.mjs +1 -1
  79. package/dist/esm/components/tab/Tab.vue2.mjs.map +1 -1
  80. package/dist/esm/components/tab/index.mjs.map +1 -1
  81. package/dist/esm/components/table/Table.mjs.map +1 -1
  82. package/dist/esm/components/table/index.mjs.map +1 -1
  83. package/dist/esm/index.mjs +0 -1
  84. package/dist/esm/index.mjs.map +1 -1
  85. package/dist/esm/utils/useMenuCore.mjs.map +1 -1
  86. package/dist/esm/utils/useTheme.mjs.map +1 -1
  87. package/dist/types/components/date/RangePicker.vue.d.ts.map +1 -1
  88. package/dist/types/components/layout/Layout.vue.d.ts +44 -2
  89. package/dist/types/components/layout/Layout.vue.d.ts.map +1 -1
  90. package/dist/types/components/layout/components/layout/HeaderLayout.vue.d.ts +29 -1
  91. package/dist/types/components/layout/components/layout/HeaderLayout.vue.d.ts.map +1 -1
  92. package/dist/types/components/layout/components/layout/RouterContent.vue.d.ts +15 -1
  93. package/dist/types/components/layout/components/layout/RouterContent.vue.d.ts.map +1 -1
  94. package/dist/types/components/layout/components/menu/Menu.d.ts.map +1 -1
  95. package/dist/types/index.d.ts.map +1 -1
  96. package/package.json +4 -15
  97. package/src/index.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.mjs","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"sourcesContent":["import { computed, defineComponent, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n useAppStore,\r\n useMenuStore,\r\n useNoStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nimport useMenuCore from \"../../../../utils/useMenuCore\";\r\n\r\nexport default defineComponent({\r\n name: \"DMenu\",\r\n emits: [\"onMenuClick\"],\r\n setup(_, { emit }) {\r\n const { layout, modeConfig } =\r\n storeToRefs(useAppStore());\r\n const { findMatchedMenuById, findMenuItemByUrl } =\r\n useMenuCore();\r\n const { menuList } = storeToRefs(useNoStore());\r\n const { menuWrapperStyle } = useStyle();\r\n const { openKeys, selectedKeys, onClick } = useMenu();\r\n\r\n function useStyle() {\r\n const menuWrapperStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n\r\n .ant-menu {\r\n height: 100%;\r\n overflow: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n ${modeConfig.value.mode === \"light\"\r\n ? \"background:transparent;\"\r\n : \"\"}\r\n /* Webkit 浏览器 */\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `\r\n );\r\n return {\r\n menuWrapperStyle\r\n };\r\n }\r\n\r\n function useMenu() {\r\n const { openKeys, selectedKeys, data } =\r\n storeToRefs(useMenuStore());\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n /**\r\n * 根据URL路径查找最接近的父级菜单\r\n */\r\n const findClosestParentMenu = (\r\n url: string,\r\n menus: any[]\r\n ): any => {\r\n // 移除查询参数和哈希\r\n const cleanUrl = url.split(\"?\")[0].split(\"#\")[0];\r\n const pathSegments = cleanUrl\r\n .split(\"/\")\r\n .filter(Boolean);\r\n\r\n // 从最长路径开始尝试匹配\r\n for (let i = pathSegments.length; i > 0; i--) {\r\n const testPath =\r\n \"/\" + pathSegments.slice(0, i).join(\"/\");\r\n const foundItem = findMenuItemByUrl(\r\n testPath,\r\n menus\r\n );\r\n if (foundItem) return foundItem;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n /**\r\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\r\n */\r\n watch(\r\n () => route.fullPath,\r\n async path => {\r\n const flag = selectedKeys.value.some(\r\n (item: string) => item === path\r\n );\r\n if (!flag) {\r\n let menuItem = findMenuItemByUrl(\r\n path,\r\n data.value\r\n );\r\n\r\n // 如果没有精确匹配,尝试匹配父级路径\r\n if (!menuItem) {\r\n menuItem = findClosestParentMenu(\r\n path,\r\n data.value\r\n );\r\n }\r\n\r\n if (!menuItem) {\r\n openKeys.value = [];\r\n selectedKeys.value = [path];\r\n } else {\r\n const rs = getFullParentChain(\r\n menuItem.id,\r\n data.value as never\r\n );\r\n if (!layout.value.collapsed) {\r\n openKeys.value = rs!;\r\n }\r\n selectedKeys.value = [menuItem.key];\r\n }\r\n }\r\n }\r\n );\r\n\r\n watch(\r\n () => layout.value.collapsed,\r\n val => {\r\n const id = selectedKeys.value[0];\r\n const rs = findMatchedMenuById(\r\n id,\r\n data.value as never\r\n );\r\n\r\n if (val) {\r\n openKeys.value = [];\r\n } else {\r\n if (rs?.parentItem) {\r\n openKeys.value = [rs.parentItem.key];\r\n } else {\r\n openKeys.value = [rs!.matchItem.key];\r\n }\r\n }\r\n }\r\n );\r\n\r\n /**\r\n * 获取从根到目标菜单项的完整 key 链\r\n * @param targetId 目标菜单项 id\r\n * @param menus 菜单数据\r\n * @param parentChain 递归传递的父级链\r\n */\r\n const getFullParentChain = (\r\n targetId: string,\r\n menus: any[],\r\n parentChain: string[] = []\r\n ): string[] | null => {\r\n for (const menu of menus) {\r\n // 找到目标项,返回完整链(包含自身 key)\r\n if (menu.id === targetId) {\r\n return [...parentChain, menu.key];\r\n }\r\n\r\n // 递归查找子菜单\r\n if (menu.children?.length) {\r\n const result = getFullParentChain(\r\n targetId,\r\n menu.children,\r\n [...parentChain, menu.key] // 传递当前层级的 key\r\n );\r\n if (result) return result;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n const onClick = ({\r\n key,\r\n keyPath,\r\n item\r\n }: {\r\n item: { originItemValue: any };\r\n key: string;\r\n keyPath: string[];\r\n }) => {\r\n const rs = findMatchedMenuById(key, data.value);\r\n if (\r\n item.originItemValue?.isFrame &&\r\n item.originItemValue?.isFrame === \"0\"\r\n ) {\r\n emit(\"onMenuClick\", item);\r\n } else {\r\n openKeys.value = keyPath;\r\n selectedKeys.value = [rs.matchItem?.key];\r\n if (rs.matchItem?.url !== route.path) {\r\n // 判断目标路由和当前路由是否相等;\r\n // 不相等的时候再跳转\r\n router.push(rs.matchItem?.url).then(r => {\r\n if (r) {\r\n console.warn(r);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n return {\r\n openKeys,\r\n selectedKeys,\r\n data,\r\n onClick\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={menuWrapperStyle.value}>\r\n <a-menu\r\n v-model:open-keys={openKeys.value}\r\n v-model:selected-keys={selectedKeys.value}\r\n items={menuList.value}\r\n mode=\"inline\"\r\n triggerSubMenuAction={\"hover\"}\r\n onClick={onClick}\r\n ></a-menu>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["name","emits","setup","_","emit","layout","modeConfig","storeToRefs","useAppStore","findMatchedMenuById","findMenuItemByUrl","useMenuCore","menuList","useNoStore","menuWrapperStyle","useStyle","openKeys","selectedKeys","onClick","useMenu","computed","css","value","mode","data","useMenuStore","route","useRoute","router","useRouter","findClosestParentMenu","url","menus","cleanUrl","split","pathSegments","filter","Boolean","i","length","testPath","slice","join","foundItem","watch","fullPath","path","flag","some","item","menuItem","rs","getFullParentChain","id","collapsed","key","val","parentItem","matchItem","targetId","parentChain","menu","children","result","keyPath","originItemValue","isFrame","push","then","r","console","warn","_createVNode","_resolveComponent","$event"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,2BAA+B,eAAA,CAAA;AAAA,EAC7BA,IAAM,EAAA,OAAA;AAAA,EACNC,KAAAA,EAAO,CAAC,aAAa,CAAA;AAAA,EACrBC,MAAMC,CAAG,EAAA;AAAA,IAAEC;AAAAA,GAAQ,EAAA;AACjB,IAAM,MAAA;AAAA,MAAEC,MAAAA;AAAAA,MAAQC;AAAAA,KAAW,GACzBC,WAAYC,CAAAA,WAAAA,EAAa,CAAA;AAC3B,IAAM,MAAA;AAAA,MAAEC,mBAAAA;AAAAA,MAAqBC;AAAAA,QAC3BC,WAAY,EAAA;AACd,IAAM,MAAA;AAAA,MAAEC;AAAAA,KAAS,GAAIL,WAAYM,CAAAA,UAAAA,EAAY,CAAA;AAC7C,IAAM,MAAA;AAAA,MAAEC;AAAAA,QAAqBC,QAAS,EAAA;AACtC,IAAM,MAAA;AAAA,MAAEC,QAAAA;AAAAA,MAAUC,YAAAA;AAAAA,MAAcC;AAAAA,QAAYC,OAAQ,EAAA;AAEpD,IAAA,SAASJ,QAAW,GAAA;AAClB,MAAMD,MAAAA,iBAAAA,GAAmBM,SACvB,MAAMC,GAAAA;AAAAA;AAAAA;;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;;AAAAA,YAAAA,EAUAf,UAAWgB,CAAAA,KAAAA,CAAMC,IAAS,KAAA,OAAA,GACxB,4BACA,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOZ,CAAA,CAAA;AACA,MAAO,OAAA;AAAA,QACLT,gBAAAA,EAAAA;AAAAA,OACF;AAAA;AAGF,IAAA,SAASK,OAAU,GAAA;AACjB,MAAM,MAAA;AAAA,QAAEH,QAAAA,EAAAA,SAAAA;AAAAA,QAAUC,YAAAA,EAAAA,aAAAA;AAAAA,QAAcO;AAAAA,OAAK,GACnCjB,WAAYkB,CAAAA,YAAAA,EAAc,CAAA;AAC5B,MAAA,MAAMC,QAAQC,QAAS,EAAA;AACvB,MAAA,MAAMC,SAASC,SAAU,EAAA;AAKzB,MAAMC,MAAAA,qBAAAA,GAAwBA,CAC5BC,GAAAA,EACAC,KACQ,KAAA;AAER,QAAMC,MAAAA,QAAAA,GAAWF,GAAIG,CAAAA,KAAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAEA,CAAAA,KAAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AAC/C,QAAA,MAAMC,eAAeF,QAClBC,CAAAA,KAAAA,CAAM,GAAG,CAAA,CACTE,OAAOC,OAAO,CAAA;AAGjB,QAAA,KAAA,IAASC,CAAIH,GAAAA,YAAAA,CAAaI,MAAQD,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,EAAA;AAC5C,UAAME,MAAAA,QAAAA,GACJ,MAAML,YAAaM,CAAAA,KAAAA,CAAM,GAAGH,CAAC,CAAA,CAAEI,KAAK,GAAG,CAAA;AACzC,UAAMC,MAAAA,SAAAA,GAAYjC,iBAChB8B,CAAAA,QAAAA,EACAR,KACF,CAAA;AACA,UAAA,IAAIW,WAAkBA,OAAAA,SAAAA;AAAAA;AAGxB,QAAO,OAAA,IAAA;AAAA,OACT;AAKAC,MAAAA,KAAAA,CACE,MAAMlB,KAAAA,CAAMmB,QACZ,EAAA,CAAMC,IAAQ,KAAA,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AACZ,QAAA,MAAMC,OAAO9B,aAAaK,CAAAA,KAAAA,CAAM0B,IAC7BC,CAAAA,CAAAA,IAAAA,KAAiBA,SAASH,IAC7B,CAAA;AACA,QAAA,IAAI,CAACC,IAAM,EAAA;AACT,UAAA,IAAIG,QAAWxC,GAAAA,iBAAAA,CACboC,IACAtB,EAAAA,IAAAA,CAAKF,KACP,CAAA;AAGA,UAAA,IAAI,CAAC4B,QAAU,EAAA;AACbA,YAAWpB,QAAAA,GAAAA,qBAAAA,CACTgB,IACAtB,EAAAA,IAAAA,CAAKF,KACP,CAAA;AAAA;AAGF,UAAA,IAAI,CAAC4B,QAAU,EAAA;AACblC,YAAAA,SAAAA,CAASM,QAAQ,EAAE;AACnBL,YAAAA,aAAAA,CAAaK,KAAQ,GAAA,CAACwB,IAAI,CAAA;AAAA,WACrB,MAAA;AACL,YAAA,MAAMK,EAAKC,GAAAA,kBAAAA,CACTF,QAASG,CAAAA,EAAAA,EACT7B,KAAKF,KACP,CAAA;AACA,YAAI,IAAA,CAACjB,MAAOiB,CAAAA,KAAAA,CAAMgC,SAAW,EAAA;AAC3BtC,cAAAA,UAASM,KAAQ6B,GAAAA,EAAAA;AAAAA;AAEnBlC,YAAAA,aAAaK,CAAAA,KAAAA,GAAQ,CAAC4B,QAAAA,CAASK,GAAG,CAAA;AAAA;AACpC;AACF,OAEJ,CAAA,CAAA;AAEAX,MAAAA,KAAAA,CACE,MAAMvC,MAAAA,CAAOiB,KAAMgC,CAAAA,SAAAA,EACnBE,CAAO,GAAA,KAAA;AACL,QAAMH,MAAAA,EAAAA,GAAKpC,aAAaK,CAAAA,KAAAA,CAAM,CAAC,CAAA;AAC/B,QAAA,MAAM6B,EAAK1C,GAAAA,mBAAAA,CACT4C,EACA7B,EAAAA,IAAAA,CAAKF,KACP,CAAA;AAEA,QAAA,IAAIkC,GAAK,EAAA;AACPxC,UAAAA,SAAAA,CAASM,QAAQ,EAAE;AAAA,SACd,MAAA;AACL,UAAA,IAAI6B,yBAAIM,UAAY,EAAA;AAClBzC,YAAAA,SAASM,CAAAA,KAAAA,GAAQ,CAAC6B,EAAAA,CAAGM,WAAWF,GAAG,CAAA;AAAA,WAC9B,MAAA;AACLvC,YAAAA,SAASM,CAAAA,KAAAA,GAAQ,CAAC6B,EAAAA,CAAIO,UAAUH,GAAG,CAAA;AAAA;AACrC;AACF,OAEJ,CAAA;AAQA,MAAA,MAAMH,qBAAqBA,CACzBO,QAAAA,EACA3B,KACA4B,EAAAA,WAAAA,GAAwB,EACJ,KAAA;AA5J5B,QAAA,IAAA,EAAA;AA6JQ,QAAA,KAAA,MAAWC,QAAQ7B,KAAO,EAAA;AAExB,UAAI6B,IAAAA,IAAAA,CAAKR,OAAOM,QAAU,EAAA;AACxB,YAAA,OAAO,CAAC,GAAGC,WAAaC,EAAAA,IAAAA,CAAKN,GAAG,CAAA;AAAA;AAIlC,UAAIM,IAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAKC,QAALD,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAetB,MAAQ,EAAA;AACzB,YAAA,MAAMwB,MAASX,GAAAA,kBAAAA;AAAAA,cACbO,QAAAA;AAAAA,cACAE,IAAKC,CAAAA,QAAAA;AAAAA,cACL,CAAC,GAAGF,WAAaC,EAAAA,IAAAA,CAAKN,GAAG;AAAA;AAAA,aAC3B;AACA,YAAA,IAAIQ,QAAeA,OAAAA,MAAAA;AAAAA;AACrB;AAEF,QAAO,OAAA,IAAA;AAAA,OACT;AAEA,MAAA,MAAM7C,WAAUA,CAAC;AAAA,QACfqC,GAAAA;AAAAA,QACAS,OAAAA;AAAAA,QACAf;AAAAA,OAKI,KAAA;AAxLZ,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAyLQ,QAAA,MAAME,EAAK1C,GAAAA,mBAAAA,CAAoB8C,GAAK/B,EAAAA,IAAAA,CAAKF,KAAK,CAAA;AAC9C,QACE2B,IAAAA,CAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAKgB,oBAALhB,IAAsBiB,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,OAAAA,KAAAA,CAAAA,CACtBjB,UAAKgB,eAALhB,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAsBiB,aAAY,GAClC,EAAA;AACA9D,UAAAA,IAAAA,CAAK,eAAe6C,IAAI,CAAA;AAAA,SACnB,MAAA;AACLjC,UAAAA,UAASM,KAAQ0C,GAAAA,OAAAA;AACjB/C,UAAAA,cAAaK,KAAQ,GAAA,CAAA,CAAC6B,EAAGO,GAAAA,EAAAA,CAAAA,SAAAA,KAAHP,mBAAcI,GAAG,CAAA;AACvC,UAAA,IAAA,CAAA,CAAIJ,EAAGO,GAAAA,EAAAA,CAAAA,SAAAA,KAAHP,IAAcpB,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,GAAAA,MAAQL,MAAMoB,IAAM,EAAA;AAGpClB,YAAAA,MAAAA,CAAOuC,MAAKhB,EAAGO,GAAAA,EAAAA,CAAAA,SAAAA,KAAHP,mBAAcpB,GAAG,CAAA,CAAEqC,KAAKC,CAAK,CAAA,KAAA;AACvC,cAAA,IAAIA,CAAG,EAAA;AACLC,gBAAAA,OAAAA,CAAQC,KAAKF,CAAC,CAAA;AAAA;AAChB,aACD,CAAA;AAAA;AACH;AACF,OACF;AAEA,MAAO,OAAA;AAAA,QACLrD,QAAAA,EAAAA,SAAAA;AAAAA,QACAC,YAAAA,EAAAA,aAAAA;AAAAA,QACAO,IAAAA;AAAAA,QACAN,OAAAA,EAAAA;AAAAA,OACF;AAAA;AAGF,IAAO,OAAA,MAAAsD,YAAA,KAAA,EAAA;AAAA,MAAA,SACO1D,gBAAiBQ,CAAAA;AAAAA,KAAKkD,EAAAA,CAAAA,WAAAC,CAAAA,gBAAAA,CAAA,QAAA,CAAA,EAAA;AAAA,MAAA,aAEXzD,QAASM,CAAAA,KAAAA;AAAAA,MAAK,oBAAA,EAAAoD,CAAd1D,MAAAA,KAAAA,QAAAA,CAASM,KAAKoD,GAAAA,MAAAA;AAAAA,MAAA,iBACVzD,YAAaK,CAAAA,KAAAA;AAAAA,MAAK,wBAAA,EAAAoD,CAAlBzD,MAAAA,KAAAA,YAAAA,CAAaK,KAAKoD,GAAAA,MAAAA;AAAAA,MAAA,SAClC9D,QAASU,CAAAA,KAAAA;AAAAA,MAAK,MAAA,EAAA,QAAA;AAAA,MAAA,sBAEC,EAAA,OAAA;AAAA,MAAO,SACpBJ,EAAAA;AAAAA,KAAO,EAGrB,IAAA,CAAA,CAAA,CAAA;AAAA;AAEL,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"Menu.mjs","sources":["../../../../../../src/components/layout/components/menu/Menu.tsx"],"sourcesContent":["import { computed, defineComponent, ref, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n useAppStore,\r\n useMenuStore,\r\n useNoStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nimport useMenuCore from \"../../../../utils/useMenuCore\";\r\n\r\nexport default defineComponent({\r\n name: \"DMenu\",\r\n emits: [\"onMenuClick\"],\r\n setup(_, { emit }) {\r\n // ⭐️ 修复:直接调用 Store 函数,Pinia 内部机制会处理实例缺失时的行为\r\n const appStore = useAppStore();\r\n const menuStore = useMenuStore();\r\n const noStore = useNoStore();\r\n\r\n // 提供默认值当 Pinia 不可用时\r\n const defaultLayout = {\r\n sideWidth: 200,\r\n headerHeight: 44,\r\n collapsedWidth: 80,\r\n collapsed: false\r\n };\r\n\r\n const defaultModeConfig = {\r\n mode: \"light\",\r\n list: [\r\n { value: \"light\", label: \"亮色\" },\r\n { value: \"dark\", label: \"深色\" },\r\n { value: \"os\", label: \"跟随系统\" }\r\n ]\r\n };\r\n\r\n const defaultMenuList = ref<any[]>([]);\r\n const defaultOpenKeys = ref<string[]>([]);\r\n const defaultSelectedKeys = ref<string[]>([]);\r\n const defaultData = ref<any[]>([]);\r\n\r\n // ⭐️ 修复:直接使用 storeToRefs,并在外部提供默认的 ref,以防 Pinia 逻辑无法正常运行时使用。\r\n // 注意:这里的 ?.value 是为了类型安全,但 storeToRefs 应该总是返回一个包含 ref 的对象。\r\n const layout =\r\n storeToRefs(appStore).layout ?? ref(defaultLayout);\r\n const modeConfig =\r\n storeToRefs(appStore).modeConfig ??\r\n ref(defaultModeConfig);\r\n const menuList =\r\n storeToRefs(noStore).menuList ?? defaultMenuList;\r\n const openKeys =\r\n storeToRefs(menuStore).openKeys ?? defaultOpenKeys;\r\n const selectedKeys =\r\n storeToRefs(menuStore).selectedKeys ??\r\n defaultSelectedKeys;\r\n const data = storeToRefs(menuStore).data ?? defaultData;\r\n\r\n const { findMatchedMenuById, findMenuItemByUrl } =\r\n useMenuCore();\r\n const { menuWrapperStyle } = useStyle();\r\n const { onClick } = useMenu();\r\n\r\n function useStyle() {\r\n const menuWrapperStyle = computed(\r\n () => css`\r\n flex: 1;\r\n overflow: hidden;\r\n\r\n .ant-menu {\r\n height: 100%;\r\n overflow: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n ${modeConfig.value.mode === \"light\"\r\n ? \"background:transparent;\"\r\n : \"\"}\r\n /* Webkit 浏览器 */\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `\r\n );\r\n return {\r\n menuWrapperStyle\r\n };\r\n }\r\n\r\n function useMenu() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n /**\r\n * 根据URL路径查找最接近的父级菜单\r\n */\r\n const findClosestParentMenu = (\r\n url: string,\r\n menus: any[]\r\n ): any => {\r\n // 移除查询参数和哈希\r\n const cleanUrl = url.split(\"?\")[0].split(\"#\")[0];\r\n const pathSegments = cleanUrl\r\n .split(\"/\")\r\n .filter(Boolean);\r\n\r\n // 从最长路径开始尝试匹配\r\n for (let i = pathSegments.length; i > 0; i--) {\r\n const testPath =\r\n \"/\" + pathSegments.slice(0, i).join(\"/\");\r\n const foundItem = findMenuItemByUrl(\r\n testPath,\r\n menus\r\n );\r\n if (foundItem) return foundItem;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n /**\r\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\r\n */\r\n watch(\r\n () => route.fullPath,\r\n async path => {\r\n const flag = selectedKeys.value.some(\r\n (item: string) => item === path\r\n );\r\n if (!flag) {\r\n let menuItem = findMenuItemByUrl(\r\n path,\r\n data.value\r\n );\r\n\r\n // 如果没有精确匹配,尝试匹配父级路径\r\n if (!menuItem) {\r\n menuItem = findClosestParentMenu(\r\n path,\r\n data.value\r\n );\r\n }\r\n\r\n if (!menuItem) {\r\n openKeys.value = [];\r\n selectedKeys.value = [path];\r\n } else {\r\n const rs = getFullParentChain(\r\n menuItem.id,\r\n data.value as never\r\n );\r\n if (!layout.value.collapsed) {\r\n openKeys.value = rs!;\r\n }\r\n selectedKeys.value = [menuItem.key];\r\n }\r\n }\r\n }\r\n );\r\n\r\n watch(\r\n () => layout.value.collapsed,\r\n val => {\r\n const id = selectedKeys.value[0];\r\n const rs = findMatchedMenuById(\r\n id,\r\n data.value as never\r\n );\r\n\r\n if (val) {\r\n openKeys.value = [];\r\n } else {\r\n if (rs?.parentItem) {\r\n openKeys.value = [rs.parentItem.key];\r\n } else {\r\n openKeys.value = [rs!.matchItem.key];\r\n }\r\n }\r\n }\r\n );\r\n\r\n /**\r\n * 获取从根到目标菜单项的完整 key 链\r\n * @param targetId 目标菜单项 id\r\n * @param menus 菜单数据\r\n * @param parentChain 递归传递的父级链\r\n */\r\n const getFullParentChain = (\r\n targetId: string,\r\n menus: any[],\r\n parentChain: string[] = []\r\n ): string[] | null => {\r\n for (const menu of menus) {\r\n // 找到目标项,返回完整链(包含自身 key)\r\n if (menu.id === targetId) {\r\n return [...parentChain, menu.key];\r\n }\r\n\r\n // 递归查找子菜单\r\n if (menu.children?.length) {\r\n const result = getFullParentChain(\r\n targetId,\r\n menu.children,\r\n [...parentChain, menu.key] // 传递当前层级的 key\r\n );\r\n if (result) return result;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n const onClick = ({\r\n key,\r\n keyPath,\r\n item\r\n }: {\r\n item: { originItemValue: any };\r\n key: string;\r\n keyPath: string[];\r\n }) => {\r\n const rs = findMatchedMenuById(key, data.value);\r\n if (\r\n item.originItemValue?.isFrame &&\r\n item.originItemValue?.isFrame === \"0\"\r\n ) {\r\n emit(\"onMenuClick\", item);\r\n } else {\r\n openKeys.value = keyPath;\r\n selectedKeys.value = [rs.matchItem?.key];\r\n if (rs.matchItem?.url !== route.path) {\r\n // 判断目标路由和当前路由是否相等;\r\n // 不相等的时候再跳转\r\n router.push(rs.matchItem?.url).then(r => {\r\n if (r) {\r\n console.warn(r);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n return {\r\n openKeys,\r\n selectedKeys,\r\n data,\r\n onClick\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={menuWrapperStyle.value}>\r\n <a-menu\r\n v-model:open-keys={openKeys.value}\r\n v-model:selected-keys={selectedKeys.value}\r\n items={menuList.value}\r\n mode=\"inline\"\r\n triggerSubMenuAction={\"hover\"}\r\n onClick={onClick}\r\n ></a-menu>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["name","emits","setup","_","emit","appStore","useAppStore","menuStore","useMenuStore","noStore","useNoStore","defaultLayout","sideWidth","headerHeight","collapsedWidth","collapsed","defaultModeConfig","mode","list","value","label","defaultMenuList","ref","defaultOpenKeys","defaultSelectedKeys","defaultData","layout","storeToRefs","modeConfig","menuList","openKeys","selectedKeys","data","findMatchedMenuById","findMenuItemByUrl","useMenuCore","menuWrapperStyle","useStyle","onClick","useMenu","computed","css","route","useRoute","router","useRouter","findClosestParentMenu","url","menus","cleanUrl","split","pathSegments","filter","Boolean","i","length","testPath","slice","join","foundItem","watch","fullPath","path","flag","some","item","menuItem","rs","getFullParentChain","id","key","val","parentItem","matchItem","targetId","parentChain","_a","menu","children","result","keyPath","_b","_c","_d","_e","originItemValue","isFrame","push","then","r","console","warn","_createVNode","_resolveComponent","$event"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockCheckbox.vue2.mjs","sources":["../../../../../../src/components/layout/components/settings/BlockCheckbox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, shallowRef } from \"vue\";\n\nimport { CheckOutlined } from \"@ant-design/icons-vue\";\n\nconst props = defineProps({\n themes: { type: String, required: false },\n isDark: { type: Boolean, required: false },\n checked: { type: Boolean, required: false },\n t: { type: Function, required: false }\n});\nconst prefixCls = shallowRef(\n \"ant-pro-drawer-setting-block-checkbox\"\n);\n\nconst cls = computed(() => {\n return {\n [`${prefixCls.value}-item`]: true,\n [`${prefixCls.value}-theme-item`]: props.isDark,\n // [`${prefixCls.value}-item-${props.theme}`]: !!props.theme,\n [`${prefixCls.value}-theme-item-${props.themes}`]:\n props.isDark\n };\n});\n</script>\n\n<template>\n <a-tooltip>\n <template #title>\n <!-- {{ t?.(`app.setting.pagestyle.${theme}` ?? \"\") }}-->\n </template>\n <div :class=\"cls\">\n <CheckOutlined\n v-show=\"checked\"\n :class=\"`${prefixCls}-selectIcon`\"\n />\n </div>\n </a-tooltip>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAKA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,SAAY,GAAA,UAAA;AAAA,MAChB;AAAA,KACF;AAEA,IAAM,MAAA,GAAA,GAAM,SAAS,MAAM;AACzB,MAAO,OAAA;AAAA,QACL,CAAC,CAAA,EAAG,SAAU,CAAA,KAAK,OAAO,GAAG,IAAA;AAAA,QAC7B,CAAC,CAAG,EAAA,SAAA,CAAU,KAAK,CAAA,WAAA,CAAa,GAAG,KAAM,CAAA,MAAA;AAAA;AAAA,QAEzC,CAAC,GAAG,SAAU,CAAA,KAAK,eAAe,KAAM,CAAA,MAAM,CAAE,CAAA,GAC9C,KAAM,CAAA;AAAA,OACV;AAAA,KACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BlockCheckbox.vue2.mjs","sources":["../../../../../../src/components/layout/components/settings/BlockCheckbox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, shallowRef } from \"vue\";\n\nimport { CheckOutlined } from \"@ant-design/icons-vue\";\n\nconst props = defineProps({\n themes: { type: String, required: false },\n isDark: { type: Boolean, required: false },\n checked: { type: Boolean, required: false },\n t: { type: Function, required: false }\n});\nconst prefixCls = shallowRef(\n \"ant-pro-drawer-setting-block-checkbox\"\n);\n\nconst cls = computed(() => {\n return {\n [`${prefixCls.value}-item`]: true,\n [`${prefixCls.value}-theme-item`]: props.isDark,\n // [`${prefixCls.value}-item-${props.theme}`]: !!props.theme,\n [`${prefixCls.value}-theme-item-${props.themes}`]:\n props.isDark\n };\n});\n</script>\n\n<template>\n <a-tooltip>\n <template #title>\n <!-- {{ t?.(`app.setting.pagestyle.${theme}` ?? \"\") }}-->\n </template>\n <div :class=\"cls\">\n <CheckOutlined\n v-show=\"checked\"\n :class=\"`${prefixCls}-selectIcon`\"\n />\n </div>\n </a-tooltip>\n</template>\n"],"names":["_createBlock","_createCommentVNode","_createElementVNode","_createVNode","_unref"],"mappings":";;;;;;;;;;;;;AAKA,IAAA,MAAM,KAAA,GAAQ,OAAA;AAMd,IAAA,MAAM,SAAA,GAAY,UAAA;AAAA,MAChB;AAAA,KACF;AAEA,IAAA,MAAM,GAAA,GAAM,SAAS,MAAM;AACzB,MAAA,OAAO;AAAA,QACL,CAAC,CAAA,EAAG,SAAA,CAAU,KAAK,OAAO,GAAG,IAAA;AAAA,QAC7B,CAAC,CAAA,EAAG,SAAA,CAAU,KAAK,CAAA,WAAA,CAAa,GAAG,KAAA,CAAM,MAAA;AAAA;AAAA,QAEzC,CAAC,GAAG,SAAA,CAAU,KAAK,eAAe,KAAA,CAAM,MAAM,CAAA,CAAE,GAC9C,KAAA,CAAM;AAAA,OACV;AAAA,IACF,CAAC,CAAA;;;0BAICA,WAAA,CAUY,oBAAA,EAAA,IAAA,EAAA;AAAA,QATC,KAAA,UACT,MAA8D;AAAA,UAA9DC,mBAAA,yDAAA;AAAA;yBAEF,MAKM;AAAA,UALNC,kBAAA;AAAA,YAKM,KAAA;AAAA,YAAA;AAAA,cALA,KAAA,iBAAO,GAAA,CAAA,KAAG;AAAA;;6BACdC,WAAA,CAGEC,KAAA,CAAA,aAAA,CAAA,EAAA;AAAA,gBADC,KAAA,oBAAU,SAAA,CAAA,KAAS,CAAA,WAAA,CAAA;AAAA;wBADZ,OAAA,CAAA,OAAO;AAAA;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingDrawer.mjs","sources":["../../../../../../src/components/layout/components/settings/SettingDrawer.tsx"],"sourcesContent":["import {\r\n computed,\r\n type ComputedRef,\r\n defineComponent,\r\n ref\r\n} from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n CloseOutlined,\r\n SettingOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nimport BlockCheckbox from \"./BlockCheckbox.vue\";\r\n\r\nexport default defineComponent({\r\n components: {\r\n BlockCheckbox\r\n },\r\n setup() {\r\n const open = ref(false);\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n const store = useAppStore();\r\n const { modeConfig, isCompact } = storeToRefs(store);\r\n\r\n const { btnStyle, closeBtnStyle, settingDrawerStyle } =\r\n useStyle();\r\n\r\n function useStyle(): {\r\n btnStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n dividerStyle: ComputedRef<string>;\r\n settingDrawerStyle: ComputedRef<string>;\r\n } {\r\n const settingDrawerStyle = computed(() => css``);\r\n const btnStyle = computed(\r\n () => css`\r\n background-color: ${token.value.colorPrimary};\r\n border-end-start-radius: ${token?.value\r\n .borderRadius}px;\r\n border-start-start-radius: ${token?.value\r\n .borderRadius}px;\r\n `\r\n );\r\n\r\n const closeBtnStyle = computed(\r\n () => css`\r\n ${btnStyle.value};\r\n position: absolute;\r\n top: 240px;\r\n right: 378px;\r\n `\r\n );\r\n\r\n const dividerStyle = computed(\r\n () => `\r\n border-color: #7cb305;\r\n `\r\n );\r\n\r\n return {\r\n btnStyle,\r\n closeBtnStyle,\r\n dividerStyle,\r\n settingDrawerStyle\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={settingDrawerStyle.value}>\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${btnStyle.value}`}\r\n onClick={() => (open.value = true)}\r\n >\r\n <SettingOutlined class={\"icon\"} />\r\n </div>\r\n <a-drawer\r\n v-model:open={open.value}\r\n bodyStyle={{ padding: 0 }}\r\n >\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${closeBtnStyle.value}`}\r\n onClick={() => (open.value = false)}\r\n >\r\n <CloseOutlined class={\"icon\"} />\r\n </div>\r\n <a-form>\r\n <a-form-item label={\"模式\"}>\r\n <a-radio-group\r\n v-model:value={modeConfig.value.mode}\r\n button-style=\"solid\"\r\n >\r\n {modeConfig.value.list.map(item => (\r\n <a-radio-button value={item.value}>\r\n {item.label}\r\n </a-radio-button>\r\n ))}\r\n </a-radio-group>\r\n </a-form-item>\r\n <a-form-item label={\"紧凑\"}>\r\n <a-switch\r\n v-model:checked={isCompact.value}\r\n checked-children=\"开\"\r\n un-checked-children=\"关\"\r\n ></a-switch>\r\n </a-form-item>\r\n </a-form>\r\n </a-drawer>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","components","BlockCheckbox","setup","open","ref","useToken","theme","token","store","useAppStore","modeConfig","isCompact","storeToRefs","btnStyle","closeBtnStyle","settingDrawerStyle","useStyle","computed","css","value","colorPrimary","borderRadius","dividerStyle","_slot","_createVNode","onClick","SettingOutlined","_resolveComponent","$event","padding","default","CloseOutlined","mode","list","map","item","label"],"mappings":"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"}
1
+ {"version":3,"file":"SettingDrawer.mjs","sources":["../../../../../../src/components/layout/components/settings/SettingDrawer.tsx"],"sourcesContent":["import {\r\n computed,\r\n type ComputedRef,\r\n defineComponent,\r\n ref\r\n} from \"vue\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n CloseOutlined,\r\n SettingOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nimport BlockCheckbox from \"./BlockCheckbox.vue\";\r\n\r\nexport default defineComponent({\r\n components: {\r\n BlockCheckbox\r\n },\r\n setup() {\r\n const open = ref(false);\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n const store = useAppStore();\r\n const { modeConfig, isCompact } = storeToRefs(store);\r\n\r\n const { btnStyle, closeBtnStyle, settingDrawerStyle } =\r\n useStyle();\r\n\r\n function useStyle(): {\r\n btnStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n dividerStyle: ComputedRef<string>;\r\n settingDrawerStyle: ComputedRef<string>;\r\n } {\r\n const settingDrawerStyle = computed(() => css``);\r\n const btnStyle = computed(\r\n () => css`\r\n background-color: ${token.value.colorPrimary};\r\n border-end-start-radius: ${token?.value\r\n .borderRadius}px;\r\n border-start-start-radius: ${token?.value\r\n .borderRadius}px;\r\n `\r\n );\r\n\r\n const closeBtnStyle = computed(\r\n () => css`\r\n ${btnStyle.value};\r\n position: absolute;\r\n top: 240px;\r\n right: 378px;\r\n `\r\n );\r\n\r\n const dividerStyle = computed(\r\n () => `\r\n border-color: #7cb305;\r\n `\r\n );\r\n\r\n return {\r\n btnStyle,\r\n closeBtnStyle,\r\n dividerStyle,\r\n settingDrawerStyle\r\n };\r\n }\r\n\r\n return () => (\r\n <div class={settingDrawerStyle.value}>\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${btnStyle.value}`}\r\n onClick={() => (open.value = true)}\r\n >\r\n <SettingOutlined class={\"icon\"} />\r\n </div>\r\n <a-drawer\r\n v-model:open={open.value}\r\n bodyStyle={{ padding: 0 }}\r\n >\r\n <div\r\n class={`ant-pro-drawer-setting-handle ${closeBtnStyle.value}`}\r\n onClick={() => (open.value = false)}\r\n >\r\n <CloseOutlined class={\"icon\"} />\r\n </div>\r\n <a-form>\r\n <a-form-item label={\"模式\"}>\r\n <a-radio-group\r\n v-model:value={modeConfig.value.mode}\r\n button-style=\"solid\"\r\n >\r\n {modeConfig.value.list.map(item => (\r\n <a-radio-button value={item.value}>\r\n {item.label}\r\n </a-radio-button>\r\n ))}\r\n </a-radio-group>\r\n </a-form-item>\r\n <a-form-item label={\"紧凑\"}>\r\n <a-switch\r\n v-model:checked={isCompact.value}\r\n checked-children=\"开\"\r\n un-checked-children=\"关\"\r\n ></a-switch>\r\n </a-form-item>\r\n </a-form>\r\n </a-drawer>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","components","BlockCheckbox","setup","open","ref","useToken","theme","token","store","useAppStore","modeConfig","isCompact","storeToRefs","btnStyle","closeBtnStyle","settingDrawerStyle","useStyle","computed","css","value","colorPrimary","borderRadius","dividerStyle","_slot","_createVNode","onClick","SettingOutlined","_resolveComponent","$event","padding","default","CloseOutlined","mode","list","map","item","label"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/components/layout/index.ts"],"sourcesContent":["import List from \"./List\";\r\nimport Show from \"./Show\";\r\nimport type { App } from \"vue\";\r\n\r\nimport Layout from \"./Layout.vue\";\r\n\r\nexport * from \"./components\";\r\n\r\nList.install = function (app: App) {\r\n app.component(List.name!, List);\r\n return app;\r\n};\r\n\r\nShow.install = function (app: App) {\r\n app.component(Show.name!, Show);\r\n return app;\r\n};\r\nLayout.install = function (app: App) {\r\n app.component(\"DLayout\", Layout);\r\n return app;\r\n};\r\n\r\nexport { Layout, List, Show };\r\n"],"names":["List","Show","Layout"],"mappings":";;;;;;;;;;AAQAA,IAAK,CAAA,OAAA,GAAU,SAAU,GAAU,EAAA;AACjC,EAAI,GAAA,CAAA,SAAA,CAAUA,IAAK,CAAA,IAAA,EAAOA,IAAI,CAAA;AAC9B,EAAO,OAAA,GAAA;AACT,CAAA;AAEAC,IAAK,CAAA,OAAA,GAAU,SAAU,GAAU,EAAA;AACjC,EAAI,GAAA,CAAA,SAAA,CAAUA,IAAK,CAAA,IAAA,EAAOA,IAAI,CAAA;AAC9B,EAAO,OAAA,GAAA;AACT,CAAA;AACAC,SAAO,CAAA,OAAA,GAAU,SAAU,GAAU,EAAA;AACnC,EAAI,GAAA,CAAA,SAAA,CAAU,WAAWA,SAAM,CAAA;AAC/B,EAAO,OAAA,GAAA;AACT,CAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/components/layout/index.ts"],"sourcesContent":["import List from \"./List\";\r\nimport Show from \"./Show\";\r\nimport type { App } from \"vue\";\r\n\r\nimport Layout from \"./Layout.vue\";\r\n\r\nexport * from \"./components\";\r\n\r\nList.install = function (app: App) {\r\n app.component(List.name!, List);\r\n return app;\r\n};\r\n\r\nShow.install = function (app: App) {\r\n app.component(Show.name!, Show);\r\n return app;\r\n};\r\nLayout.install = function (app: App) {\r\n app.component(\"DLayout\", Layout);\r\n return app;\r\n};\r\n\r\nexport { Layout, List, Show };\r\n"],"names":["List","Show","Layout"],"mappings":";;;;;;;;;;AAQAA,IAAA,CAAK,OAAA,GAAU,SAAU,GAAA,EAAU;AACjC,EAAA,GAAA,CAAI,SAAA,CAAUA,IAAA,CAAK,IAAA,EAAOA,IAAI,CAAA;AAC9B,EAAA,OAAO,GAAA;AACT,CAAA;AAEAC,IAAA,CAAK,OAAA,GAAU,SAAU,GAAA,EAAU;AACjC,EAAA,GAAA,CAAI,SAAA,CAAUA,IAAA,CAAK,IAAA,EAAOA,IAAI,CAAA;AAC9B,EAAA,OAAO,GAAA;AACT,CAAA;AACAC,SAAA,CAAO,OAAA,GAAU,SAAU,GAAA,EAAU;AACnC,EAAA,GAAA,CAAI,SAAA,CAAU,WAAWA,SAAM,CAAA;AAC/B,EAAA,OAAO,GAAA;AACT,CAAA;;;;"}
@@ -45,7 +45,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
45
45
  const isKeepAlive = keepNames.some(
46
46
  (name) => name === route.name
47
47
  );
48
- const fetchDic = inject("fetchDic", (name) => __async(this, null, function* () {
48
+ const fetchDic = inject("fetchDic", (name) => __async(null, null, function* () {
49
49
  console.warn(
50
50
  `fetchDic \u672A\u6CE8\u5165\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u5B9E\u73B0\uFF0Cname: ${name}`
51
51
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Select.vue2.mjs","sources":["../../../../src/components/select/Select.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n inject,\n onActivated,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { useRoute } from \"vue-router\";\n\nimport {\n useDicStore,\n useKeepAliveStore\n} from \"@ditari/store\";\n\ninterface DicItem {\n value: string | number;\n label: string;\n}\n\nconst props = defineProps({\n value: { required: true, default: undefined },\n name: { type: String, required: true, default: \"\" },\n disabled: { type: Boolean, required: false, default: false },\n placeholder: { type: String, required: false, default: \"请填写默认占位符啊!\" },\n include: { type: Array, required: false, default: () => [] }\n});\n\nconst emits = defineEmits([\"update:value\", \"change\", \"select\"]);\n\nconst { getDicByKey } = useDicStore();\nconst { get: keepNames } = useKeepAliveStore();\n\nconst { modelValue, data, onSelect, onChange } =\n useSelect();\n\nfunction useSelect() {\n const route = useRoute();\n const loadingStatus = ref(false);\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = keepNames.some(\n (name: string) => name === route.name\n );\n // 注入 fetchDic,提供默认值\n const fetchDic = inject<\n (name: string) => Promise<unknown[]>\n >(\"fetchDic\", async (name: string) => {\n console.warn(\n `fetchDic 未注入,使用默认实现,name: ${name}`\n );\n return [];\n });\n\n // 字典数据\n let dicData: DicItem[] = [...getDicByKey(props.name)];\n const data = ref<DicItem[]>(dicData);\n\n // 取值\n const modelValue = ref<string | number | undefined>(\n props.value\n );\n\n onActivated(() => {\n // 缓存页面被激活的时候调用\n loadDicData();\n });\n\n onMounted(() => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n loadDicData();\n }\n });\n\n // 监听value值的变化\n watch(\n () => props.value,\n val => {\n modelValue.value = val;\n }\n );\n\n setTimeout(() => {\n if (!loadingStatus.value) {\n loadDicData();\n }\n }, 1000);\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n loadingStatus.value = true;\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n dicData = [...getDicByKey(props.name)];\n data.value = dicData;\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n // 监听用户搜索事件\n const onSearch = (keywords: string) => {\n sendWorkerSearch(keywords);\n };\n\n // 发送搜索到webworker\n function sendWorkerSearch(keywords: string) {\n keywords = keywords ?? \"\";\n data.value = dicData\n .filter((item: DicItem) => {\n return (\n item.value\n .toString()\n .toLowerCase()\n .indexOf(keywords.toLowerCase()) !== -1 ||\n item.label\n .toLowerCase()\n .includes(keywords.toLowerCase())\n );\n })\n .slice(0, 10);\n if (data.value.length === 0) {\n data.value = [...dicData].slice(0, 10);\n }\n }\n\n // 监听下拉选择事件\n const onSelect = (value: string | number) => {\n // 发射选择的数据\n emits(\"update:value\", value);\n // 处理下拉后返回数据的\n onSelectHandler();\n };\n\n // 监听数据改变\n const onChange = () => {\n emits(\"update:value\", modelValue.value);\n emits(\"change\", modelValue.value);\n };\n\n /**\n * 根据当前选中的value匹配对应的整条数据\n * 然后返回给父组件\n */\n function onSelectHandler() {\n const dicList = getDicByKey(props.name);\n const rs = dicList.find(\n (obj: DicItem) => obj.value === modelValue.value\n );\n emits(\"select\", rs);\n }\n\n watch(\n () => props.include,\n (val: Array<string | number>) => {\n if (val.length > 0) {\n // 只过滤出来include包含的数据\n data.value = dicData.filter((item: DicItem) => {\n return val.some(\n (i: string | number) => i === item.value\n );\n });\n } else {\n data.value = dicData;\n }\n },\n {\n immediate: true\n }\n );\n\n return {\n data,\n modelValue,\n onSearch,\n onSelect,\n onChange\n };\n}\n\n/**\n * 过滤筛选\n * @param inputValue\n * @param options\n */\nconst onFilterOption = (\n inputValue: string,\n options: DicItem\n) => {\n return (\n options.value\n .toString()\n .toLowerCase()\n .indexOf(inputValue.toLowerCase()) !== -1 ||\n options.label\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n );\n};\n</script>\n\n<template>\n <a-select\n v-model:value=\"modelValue\"\n style=\"width: 100%\"\n allow-clear\n show-search\n :options=\"data\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :filter-option=\"onFilterOption\"\n @select=\"onSelect\"\n @change=\"onChange\"\n >\n </a-select>\n</template>\n\n<style scoped></style>\n"],"names":["data","modelValue","onSelect","onChange"],"mappings":"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"}
1
+ {"version":3,"file":"Select.vue2.mjs","sources":["../../../../src/components/select/Select.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n inject,\n onActivated,\n onMounted,\n ref,\n watch\n} from \"vue\";\nimport { useRoute } from \"vue-router\";\n\nimport {\n useDicStore,\n useKeepAliveStore\n} from \"@ditari/store\";\n\ninterface DicItem {\n value: string | number;\n label: string;\n}\n\nconst props = defineProps({\n value: { required: true, default: undefined },\n name: { type: String, required: true, default: \"\" },\n disabled: { type: Boolean, required: false, default: false },\n placeholder: { type: String, required: false, default: \"请填写默认占位符啊!\" },\n include: { type: Array, required: false, default: () => [] }\n});\n\nconst emits = defineEmits([\"update:value\", \"change\", \"select\"]);\n\nconst { getDicByKey } = useDicStore();\nconst { get: keepNames } = useKeepAliveStore();\n\nconst { modelValue, data, onSelect, onChange } =\n useSelect();\n\nfunction useSelect() {\n const route = useRoute();\n const loadingStatus = ref(false);\n // 判断使用组件的页面是否被缓存\n const isKeepAlive = keepNames.some(\n (name: string) => name === route.name\n );\n // 注入 fetchDic,提供默认值\n const fetchDic = inject<\n (name: string) => Promise<unknown[]>\n >(\"fetchDic\", async (name: string) => {\n console.warn(\n `fetchDic 未注入,使用默认实现,name: ${name}`\n );\n return [];\n });\n\n // 字典数据\n let dicData: DicItem[] = [...getDicByKey(props.name)];\n const data = ref<DicItem[]>(dicData);\n\n // 取值\n const modelValue = ref<string | number | undefined>(\n props.value\n );\n\n onActivated(() => {\n // 缓存页面被激活的时候调用\n loadDicData();\n });\n\n onMounted(() => {\n if (!isKeepAlive) {\n // 未缓存页面 挂载的时候调用\n loadDicData();\n }\n });\n\n // 监听value值的变化\n watch(\n () => props.value,\n val => {\n modelValue.value = val;\n }\n );\n\n setTimeout(() => {\n if (!loadingStatus.value) {\n loadDicData();\n }\n }, 1000);\n\n // 请求字典数据的函数\n async function loadDicData() {\n try {\n loadingStatus.value = true;\n // 调用注入进来的fetchDic方法\n await fetchDic(props.name);\n dicData = [...getDicByKey(props.name)];\n data.value = dicData;\n } catch (error) {\n console.error(\"获取字典数据失败:\", error);\n }\n }\n\n // 监听用户搜索事件\n const onSearch = (keywords: string) => {\n sendWorkerSearch(keywords);\n };\n\n // 发送搜索到webworker\n function sendWorkerSearch(keywords: string) {\n keywords = keywords ?? \"\";\n data.value = dicData\n .filter((item: DicItem) => {\n return (\n item.value\n .toString()\n .toLowerCase()\n .indexOf(keywords.toLowerCase()) !== -1 ||\n item.label\n .toLowerCase()\n .includes(keywords.toLowerCase())\n );\n })\n .slice(0, 10);\n if (data.value.length === 0) {\n data.value = [...dicData].slice(0, 10);\n }\n }\n\n // 监听下拉选择事件\n const onSelect = (value: string | number) => {\n // 发射选择的数据\n emits(\"update:value\", value);\n // 处理下拉后返回数据的\n onSelectHandler();\n };\n\n // 监听数据改变\n const onChange = () => {\n emits(\"update:value\", modelValue.value);\n emits(\"change\", modelValue.value);\n };\n\n /**\n * 根据当前选中的value匹配对应的整条数据\n * 然后返回给父组件\n */\n function onSelectHandler() {\n const dicList = getDicByKey(props.name);\n const rs = dicList.find(\n (obj: DicItem) => obj.value === modelValue.value\n );\n emits(\"select\", rs);\n }\n\n watch(\n () => props.include,\n (val: Array<string | number>) => {\n if (val.length > 0) {\n // 只过滤出来include包含的数据\n data.value = dicData.filter((item: DicItem) => {\n return val.some(\n (i: string | number) => i === item.value\n );\n });\n } else {\n data.value = dicData;\n }\n },\n {\n immediate: true\n }\n );\n\n return {\n data,\n modelValue,\n onSearch,\n onSelect,\n onChange\n };\n}\n\n/**\n * 过滤筛选\n * @param inputValue\n * @param options\n */\nconst onFilterOption = (\n inputValue: string,\n options: DicItem\n) => {\n return (\n options.value\n .toString()\n .toLowerCase()\n .indexOf(inputValue.toLowerCase()) !== -1 ||\n options.label\n .toLowerCase()\n .includes(inputValue.toLowerCase())\n );\n};\n</script>\n\n<template>\n <a-select\n v-model:value=\"modelValue\"\n style=\"width: 100%\"\n allow-clear\n show-search\n :options=\"data\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :filter-option=\"onFilterOption\"\n @select=\"onSelect\"\n @change=\"onChange\"\n >\n </a-select>\n</template>\n\n<style scoped></style>\n"],"names":["data","modelValue","onSelect","onChange","_createBlock","_unref"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/components/select/index.ts"],"sourcesContent":["import type { App } from \"vue\";\n\nimport Select from \"./Select.vue\";\n\nSelect.install = (app: App) => {\n app.component(\"DSelect\", Select);\n};\n\nexport default Select;\n"],"names":["Select"],"mappings":";;;;AAIAA,SAAO,CAAA,OAAA,GAAU,CAAC,GAAa,KAAA;AAC7B,EAAI,GAAA,CAAA,SAAA,CAAU,WAAWA,SAAM,CAAA;AACjC,CAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/components/select/index.ts"],"sourcesContent":["import type { App } from \"vue\";\n\nimport Select from \"./Select.vue\";\n\nSelect.install = (app: App) => {\n app.component(\"DSelect\", Select);\n};\n\nexport default Select;\n"],"names":["Select"],"mappings":";;;;AAIAA,SAAA,CAAO,OAAA,GAAU,CAAC,GAAA,KAAa;AAC7B,EAAA,GAAA,CAAI,SAAA,CAAU,WAAWA,SAAM,CAAA;AACjC,CAAA;;;;"}
@@ -5,7 +5,7 @@ import { useMagicKeys, useWindowScroll } from '@vueuse/core';
5
5
  import { SearchOutlined, UnorderedListOutlined, CloseOutlined, DownOutlined } from '@ant-design/icons-vue';
6
6
  import { useNavTabStore } from '@ditari/store';
7
7
  import { css } from '@emotion/css';
8
- import dayjs from '../../_virtual/dayjs.min.mjs';
8
+ import dayjs from 'dayjs';
9
9
 
10
10
  "use strict";
11
11
  var Search = /* @__PURE__ */ defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"Search.mjs","sources":["../../../../src/components/tab/Search.tsx"],"sourcesContent":["import {\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n h,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport {\r\n useMagicKeys,\r\n useWindowScroll\r\n} from \"@vueuse/core\";\r\n\r\nimport {\r\n CloseOutlined,\r\n DownOutlined,\r\n SearchOutlined,\r\n UnorderedListOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport {\r\n type NavTabsState,\r\n useNavTabStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\nimport dayjs from \"dayjs\";\r\n\r\nexport default defineComponent({\r\n name: \"Search\",\r\n setup() {\r\n const router = useRouter();\r\n\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const { getList, deleteTabs } = useNavTabStore();\r\n // 用来监听 Ctrl + Shift + S\r\n const keys = useMagicKeys();\r\n const shiftCtrlA = keys[\"Shift+Ctrl+S\"];\r\n const open = ref(false);\r\n const { y } = useWindowScroll();\r\n\r\n const navTabList = computed(() => {\r\n return getList!.sort(\r\n (a, b) => (b.openTime || 0) - (a.openTime || 0)\r\n );\r\n });\r\n\r\n // 添加搜索相关状态\r\n const searchKewords = ref(\"\"); // 搜索输入框的值\r\n const filteredNavTabList = computed(() => {\r\n const list = getList!.sort(\r\n (a, b) => (b.openTime || 0) - (a.openTime || 0)\r\n );\r\n\r\n if (!searchKewords.value) {\r\n return list; // 如果没有搜索词,返回完整列表\r\n }\r\n\r\n const query = searchKewords.value.toLowerCase();\r\n return list.filter(item => {\r\n const fullPathMatch = item.fullPath\r\n ?.toLowerCase()\r\n .includes(query);\r\n\r\n const title: string =\r\n (item.meta?.title as string) || \"\";\r\n\r\n const titleMatch = title\r\n .toLowerCase()\r\n .includes(query);\r\n\r\n return fullPathMatch || titleMatch;\r\n });\r\n });\r\n\r\n watch(shiftCtrlA, v => {\r\n if (v) {\r\n open.value = !open.value;\r\n }\r\n });\r\n\r\n watch(\r\n () => open.value,\r\n () => {\r\n searchKewords.value = \"\";\r\n }\r\n );\r\n\r\n watch(\r\n () => y.value,\r\n val => {\r\n if (val > 0) {\r\n open.value = false;\r\n }\r\n }\r\n );\r\n\r\n const onCloseTab = (path: string) => {\r\n deleteTabs(path);\r\n };\r\n\r\n const searchStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n border-bottom: 1px solid ${token.value.colorBorder};\r\n\r\n .tip-txt {\r\n color: ${token.value.colorPrimary};\r\n }\r\n `\r\n );\r\n\r\n const searchListStyle = computed(\r\n () => css`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n max-height: 400px;\r\n overflow-y: overlay;\r\n user-select: none;\r\n\r\n /* 整个滚动条 */\r\n\r\n ::-webkit-scrollbar {\r\n width: 4px; /* 垂直滚动条的宽度 */\r\n height: 4px; /* 水平滚动条的高度 */\r\n }\r\n\r\n /* 滚动条轨道 */\r\n\r\n ::-webkit-scrollbar-track {\r\n background: transparent; /* 轨道背景色 */\r\n border-radius: 0; /* 轨道圆角 */\r\n }\r\n\r\n /* 滚动条滑块 */\r\n\r\n ::-webkit-scrollbar-thumb {\r\n //background: #888; /* 滑块背景色 */\r\n // border-radius: 6px; /* 滑块圆角 */\r\n border: 3px solid\r\n ${token.value.colorPrimaryBorder}; /* 滑块边框 */\r\n }\r\n\r\n /* 滚动条滑块悬停效果 */\r\n\r\n ::-webkit-scrollbar-thumb:hover {\r\n background: red; /* 滑块悬停背景色 */\r\n }\r\n\r\n .search-title {\r\n position: sticky;\r\n top: 0;\r\n padding: 10px;\r\n background: ${token.value.colorPrimary};\r\n }\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n min-width: 400px;\r\n\r\n li {\r\n display: flex;\r\n align-items: center;\r\n padding: 4px 10px;\r\n width: 400px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${token.value\r\n .colorBgLayout};\r\n\r\n .close-wrapper {\r\n display: block;\r\n }\r\n }\r\n\r\n .icon {\r\n width: 42px;\r\n height: 42px;\r\n border-radius: 10px;\r\n background-color: ${token.value.colorPrimary};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n .content {\r\n padding-left: 10px;\r\n\r\n .time-ago {\r\n display: flex;\r\n align-items: center;\r\n font-size: 12px;\r\n\r\n .hostname {\r\n max-width: 180px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n .split {\r\n width: 4px;\r\n height: 4px;\r\n display: inline-block;\r\n background-color: ${token.value\r\n .colorPrimary};\r\n border-radius: 10px;\r\n margin: 0 6px;\r\n }\r\n }\r\n }\r\n\r\n .close-wrapper {\r\n display: none;\r\n flex: 1;\r\n text-align: right;\r\n\r\n .close-btn {\r\n display: inline-block;\r\n width: 22px;\r\n height: 22px;\r\n border-radius: 50%;\r\n text-align: center;\r\n\r\n &:hover {\r\n // background-color: ${token.value\r\n .colorBgLayout};\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `\r\n );\r\n\r\n function timeAgo(providedTime: number) {\r\n const now = dayjs();\r\n const diffInSeconds = now.diff(\r\n providedTime,\r\n \"second\"\r\n ); // 计算时间差(秒)\r\n const diffInMinutes = now.diff(\r\n providedTime,\r\n \"minute\"\r\n ); // 计算时间差(分钟)\r\n const diffInHours = now.diff(providedTime, \"hour\"); // 计算时间差(小时)\r\n\r\n if (diffInMinutes < 1) {\r\n return `${diffInSeconds} 秒前`;\r\n } else if (diffInHours < 1) {\r\n return `${diffInMinutes} 分钟前`;\r\n } else {\r\n return `${diffInHours} 小时前`;\r\n }\r\n }\r\n\r\n const onJump = (item: NavTabsState) => {\r\n if (item.fullPath) {\r\n router.push(item.fullPath);\r\n }\r\n open.value = false;\r\n };\r\n\r\n const closeBtnStatus = (item: NavTabsState) => {\r\n // 如果meta有设置keepOpen则隐藏关闭按钮\r\n if (item.meta?.keepOpen) {\r\n return false;\r\n } else {\r\n // 如果只有一个标签,则隐藏关闭按钮\r\n return navTabList.value.length !== 1;\r\n }\r\n };\r\n\r\n return () => (\r\n <div class={\"app-search-tab\"}>\r\n <a-popover\r\n v-model:open={open.value}\r\n placement={\"bottomRight\"}\r\n trigger={\"click\"}\r\n overlayClassName={\"search-popover-wrapper\"}\r\n >\r\n {{\r\n default: () => (\r\n <div style={{ marginRight: \"5px\" }}>\r\n <a-button\r\n style={{ borderRadius: \"10px\" }}\r\n icon={h(DownOutlined)}\r\n title={\"搜索标签页\"}\r\n />\r\n </div>\r\n ),\r\n content: () => (\r\n <>\r\n <div class={searchStyle.value}>\r\n <a-input\r\n v-model:value={searchKewords.value}\r\n placeholder={\"搜索标签页\"}\r\n bordered={false}\r\n >\r\n {{\r\n prefix: () => <SearchOutlined />,\r\n suffix: () => (\r\n <span class={\"tip-txt\"}>\r\n Ctrl+Shift+S\r\n </span>\r\n )\r\n }}\r\n </a-input>\r\n </div>\r\n <div class={searchListStyle.value}>\r\n <span class={\"search-title\"}>\r\n 打开的标签页\r\n </span>\r\n <ul>\r\n {filteredNavTabList.value.map(item => (\r\n <li onClick={() => onJump(item)}>\r\n <div class={\"icon\"}>\r\n <UnorderedListOutlined />\r\n </div>\r\n <div class={\"content\"}>\r\n <div class={\"title\"}>\r\n {item.meta?.title}\r\n </div>\r\n <div class={\"time-ago\"}>\r\n <span class={\"hostname\"}>\r\n {window.location.hostname +\r\n \"\" +\r\n item.path}\r\n </span>\r\n <span class={\"split\"}></span>\r\n <span class={\"time\"}>\r\n {timeAgo(item.openTime ?? 0)}\r\n </span>\r\n </div>\r\n </div>\r\n {closeBtnStatus(item) && (\r\n <div class={\"close-wrapper\"}>\r\n <span\r\n class={\"close-btn\"}\r\n onClick={() =>\r\n onCloseTab(\r\n item.fullPath || \"\"\r\n )\r\n }\r\n >\r\n <CloseOutlined />\r\n </span>\r\n </div>\r\n )}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </>\r\n )\r\n }}\r\n </a-popover>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["name","setup","router","useRouter","useToken","theme","token","getList","deleteTabs","useNavTabStore","keys","useMagicKeys","shiftCtrlA","open","ref","y","useWindowScroll","navTabList","computed","sort","a","b","openTime","searchKewords","filteredNavTabList","list","value","query","toLowerCase","filter","item","fullPathMatch","fullPath","includes","title","meta","titleMatch","watch","v","val","onCloseTab","path","searchStyle","css","colorBorder","colorPrimary","searchListStyle","colorPrimaryBorder","colorBgLayout","timeAgo","providedTime","now","dayjs","diffInSeconds","diff","diffInMinutes","diffInHours","onJump","push","closeBtnStatus","keepOpen","length","_createVNode","_resolveComponent","$event","default","marginRight","borderRadius","h","DownOutlined","content","_Fragment","prefix","SearchOutlined","suffix","_createTextVNode","map","onClick","UnorderedListOutlined","window","location","hostname","CloseOutlined"],"mappings":"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"}
1
+ {"version":3,"file":"Search.mjs","sources":["../../../../src/components/tab/Search.tsx"],"sourcesContent":["import {\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n h,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport {\r\n useMagicKeys,\r\n useWindowScroll\r\n} from \"@vueuse/core\";\r\n\r\nimport {\r\n CloseOutlined,\r\n DownOutlined,\r\n SearchOutlined,\r\n UnorderedListOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport {\r\n type NavTabsState,\r\n useNavTabStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\nimport dayjs from \"dayjs\";\r\n\r\nexport default defineComponent({\r\n name: \"Search\",\r\n setup() {\r\n const router = useRouter();\r\n\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const { getList, deleteTabs } = useNavTabStore();\r\n // 用来监听 Ctrl + Shift + S\r\n const keys = useMagicKeys();\r\n const shiftCtrlA = keys[\"Shift+Ctrl+S\"];\r\n const open = ref(false);\r\n const { y } = useWindowScroll();\r\n\r\n const navTabList = computed(() => {\r\n return getList!.sort(\r\n (a, b) => (b.openTime || 0) - (a.openTime || 0)\r\n );\r\n });\r\n\r\n // 添加搜索相关状态\r\n const searchKewords = ref(\"\"); // 搜索输入框的值\r\n const filteredNavTabList = computed(() => {\r\n const list = getList!.sort(\r\n (a, b) => (b.openTime || 0) - (a.openTime || 0)\r\n );\r\n\r\n if (!searchKewords.value) {\r\n return list; // 如果没有搜索词,返回完整列表\r\n }\r\n\r\n const query = searchKewords.value.toLowerCase();\r\n return list.filter(item => {\r\n const fullPathMatch = item.fullPath\r\n ?.toLowerCase()\r\n .includes(query);\r\n\r\n const title: string =\r\n (item.meta?.title as string) || \"\";\r\n\r\n const titleMatch = title\r\n .toLowerCase()\r\n .includes(query);\r\n\r\n return fullPathMatch || titleMatch;\r\n });\r\n });\r\n\r\n watch(shiftCtrlA, v => {\r\n if (v) {\r\n open.value = !open.value;\r\n }\r\n });\r\n\r\n watch(\r\n () => open.value,\r\n () => {\r\n searchKewords.value = \"\";\r\n }\r\n );\r\n\r\n watch(\r\n () => y.value,\r\n val => {\r\n if (val > 0) {\r\n open.value = false;\r\n }\r\n }\r\n );\r\n\r\n const onCloseTab = (path: string) => {\r\n deleteTabs(path);\r\n };\r\n\r\n const searchStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n border-bottom: 1px solid ${token.value.colorBorder};\r\n\r\n .tip-txt {\r\n color: ${token.value.colorPrimary};\r\n }\r\n `\r\n );\r\n\r\n const searchListStyle = computed(\r\n () => css`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n max-height: 400px;\r\n overflow-y: overlay;\r\n user-select: none;\r\n\r\n /* 整个滚动条 */\r\n\r\n ::-webkit-scrollbar {\r\n width: 4px; /* 垂直滚动条的宽度 */\r\n height: 4px; /* 水平滚动条的高度 */\r\n }\r\n\r\n /* 滚动条轨道 */\r\n\r\n ::-webkit-scrollbar-track {\r\n background: transparent; /* 轨道背景色 */\r\n border-radius: 0; /* 轨道圆角 */\r\n }\r\n\r\n /* 滚动条滑块 */\r\n\r\n ::-webkit-scrollbar-thumb {\r\n //background: #888; /* 滑块背景色 */\r\n // border-radius: 6px; /* 滑块圆角 */\r\n border: 3px solid\r\n ${token.value.colorPrimaryBorder}; /* 滑块边框 */\r\n }\r\n\r\n /* 滚动条滑块悬停效果 */\r\n\r\n ::-webkit-scrollbar-thumb:hover {\r\n background: red; /* 滑块悬停背景色 */\r\n }\r\n\r\n .search-title {\r\n position: sticky;\r\n top: 0;\r\n padding: 10px;\r\n background: ${token.value.colorPrimary};\r\n }\r\n\r\n ul {\r\n margin: 0;\r\n padding: 0;\r\n list-style: none;\r\n min-width: 400px;\r\n\r\n li {\r\n display: flex;\r\n align-items: center;\r\n padding: 4px 10px;\r\n width: 400px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${token.value\r\n .colorBgLayout};\r\n\r\n .close-wrapper {\r\n display: block;\r\n }\r\n }\r\n\r\n .icon {\r\n width: 42px;\r\n height: 42px;\r\n border-radius: 10px;\r\n background-color: ${token.value.colorPrimary};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n .content {\r\n padding-left: 10px;\r\n\r\n .time-ago {\r\n display: flex;\r\n align-items: center;\r\n font-size: 12px;\r\n\r\n .hostname {\r\n max-width: 180px;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n .split {\r\n width: 4px;\r\n height: 4px;\r\n display: inline-block;\r\n background-color: ${token.value\r\n .colorPrimary};\r\n border-radius: 10px;\r\n margin: 0 6px;\r\n }\r\n }\r\n }\r\n\r\n .close-wrapper {\r\n display: none;\r\n flex: 1;\r\n text-align: right;\r\n\r\n .close-btn {\r\n display: inline-block;\r\n width: 22px;\r\n height: 22px;\r\n border-radius: 50%;\r\n text-align: center;\r\n\r\n &:hover {\r\n // background-color: ${token.value\r\n .colorBgLayout};\r\n }\r\n }\r\n }\r\n }\r\n }\r\n `\r\n );\r\n\r\n function timeAgo(providedTime: number) {\r\n const now = dayjs();\r\n const diffInSeconds = now.diff(\r\n providedTime,\r\n \"second\"\r\n ); // 计算时间差(秒)\r\n const diffInMinutes = now.diff(\r\n providedTime,\r\n \"minute\"\r\n ); // 计算时间差(分钟)\r\n const diffInHours = now.diff(providedTime, \"hour\"); // 计算时间差(小时)\r\n\r\n if (diffInMinutes < 1) {\r\n return `${diffInSeconds} 秒前`;\r\n } else if (diffInHours < 1) {\r\n return `${diffInMinutes} 分钟前`;\r\n } else {\r\n return `${diffInHours} 小时前`;\r\n }\r\n }\r\n\r\n const onJump = (item: NavTabsState) => {\r\n if (item.fullPath) {\r\n router.push(item.fullPath);\r\n }\r\n open.value = false;\r\n };\r\n\r\n const closeBtnStatus = (item: NavTabsState) => {\r\n // 如果meta有设置keepOpen则隐藏关闭按钮\r\n if (item.meta?.keepOpen) {\r\n return false;\r\n } else {\r\n // 如果只有一个标签,则隐藏关闭按钮\r\n return navTabList.value.length !== 1;\r\n }\r\n };\r\n\r\n return () => (\r\n <div class={\"app-search-tab\"}>\r\n <a-popover\r\n v-model:open={open.value}\r\n placement={\"bottomRight\"}\r\n trigger={\"click\"}\r\n overlayClassName={\"search-popover-wrapper\"}\r\n >\r\n {{\r\n default: () => (\r\n <div style={{ marginRight: \"5px\" }}>\r\n <a-button\r\n style={{ borderRadius: \"10px\" }}\r\n icon={h(DownOutlined)}\r\n title={\"搜索标签页\"}\r\n />\r\n </div>\r\n ),\r\n content: () => (\r\n <>\r\n <div class={searchStyle.value}>\r\n <a-input\r\n v-model:value={searchKewords.value}\r\n placeholder={\"搜索标签页\"}\r\n bordered={false}\r\n >\r\n {{\r\n prefix: () => <SearchOutlined />,\r\n suffix: () => (\r\n <span class={\"tip-txt\"}>\r\n Ctrl+Shift+S\r\n </span>\r\n )\r\n }}\r\n </a-input>\r\n </div>\r\n <div class={searchListStyle.value}>\r\n <span class={\"search-title\"}>\r\n 打开的标签页\r\n </span>\r\n <ul>\r\n {filteredNavTabList.value.map(item => (\r\n <li onClick={() => onJump(item)}>\r\n <div class={\"icon\"}>\r\n <UnorderedListOutlined />\r\n </div>\r\n <div class={\"content\"}>\r\n <div class={\"title\"}>\r\n {item.meta?.title}\r\n </div>\r\n <div class={\"time-ago\"}>\r\n <span class={\"hostname\"}>\r\n {window.location.hostname +\r\n \"\" +\r\n item.path}\r\n </span>\r\n <span class={\"split\"}></span>\r\n <span class={\"time\"}>\r\n {timeAgo(item.openTime ?? 0)}\r\n </span>\r\n </div>\r\n </div>\r\n {closeBtnStatus(item) && (\r\n <div class={\"close-wrapper\"}>\r\n <span\r\n class={\"close-btn\"}\r\n onClick={() =>\r\n onCloseTab(\r\n item.fullPath || \"\"\r\n )\r\n }\r\n >\r\n <CloseOutlined />\r\n </span>\r\n </div>\r\n )}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </>\r\n )\r\n }}\r\n </a-popover>\r\n </div>\r\n );\r\n }\r\n});\r\n"],"names":["name","setup","router","useRouter","useToken","theme","token","getList","deleteTabs","useNavTabStore","keys","useMagicKeys","shiftCtrlA","open","ref","y","useWindowScroll","navTabList","computed","sort","a","b","openTime","searchKewords","filteredNavTabList","list","value","query","toLowerCase","filter","item","fullPathMatch","fullPath","includes","title","meta","titleMatch","watch","v","val","onCloseTab","path","searchStyle","css","colorBorder","colorPrimary","searchListStyle","colorPrimaryBorder","colorBgLayout","timeAgo","providedTime","now","dayjs","diffInSeconds","diff","diffInMinutes","diffInHours","onJump","push","closeBtnStatus","keepOpen","length","_createVNode","_resolveComponent","$event","default","marginRight","borderRadius","h","DownOutlined","content","_Fragment","prefix","SearchOutlined","suffix","_createTextVNode","map","onClick","UnorderedListOutlined","window","location","hostname","CloseOutlined"],"mappings":";;;;;;;;;;AA6BA,6CAA+B;AAAA,EAC7BA,IAAAA,EAAM,QAAA;AAAA,EACNC,KAAAA,GAAQ;AACN,IAAA,MAAMC,SAASC,SAAAA,EAAU;AAEzB,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAS,GAAIC,KAAAA;AACrB,IAAA,MAAM;AAAA,MAAEC;AAAAA,QACNF,QAAAA,EAAS;AAEX,IAAA,MAAM;AAAA,MAAEG,OAAAA;AAAAA,MAASC;AAAAA,QAAeC,cAAAA,EAAe;AAE/C,IAAA,MAAMC,OAAOC,YAAAA,EAAa;AAC1B,IAAA,MAAMC,UAAAA,GAAaF,KAAK,cAAc,CAAA;AACtC,IAAA,MAAMG,IAAAA,GAAOC,IAAI,KAAK,CAAA;AACtB,IAAA,MAAM;AAAA,MAAEC;AAAAA,QAAMC,eAAAA,EAAgB;AAE9B,IAAA,MAAMC,UAAAA,GAAaC,SAAS,MAAM;AAChC,MAAA,OAAOX,OAAAA,CAASY,IAAAA,CACd,CAACC,CAAAA,EAAGC,CAAAA,KAAAA,CAAOA,EAAEC,QAAAA,IAAY,CAAA,KAAMF,CAAAA,CAAEE,QAAAA,IAAY,CAAA,CAC/C,CAAA;AAAA,IACF,CAAC,CAAA;AAGD,IAAA,MAAMC,aAAAA,GAAgBT,IAAI,EAAE,CAAA;AAC5B,IAAA,MAAMU,kBAAAA,GAAqBN,SAAS,MAAM;AACxC,MAAA,MAAMO,IAAAA,GAAOlB,OAAAA,CAASY,IAAAA,CACpB,CAACC,CAAAA,EAAGC,CAAAA,KAAAA,CAAOA,CAAAA,CAAEC,QAAAA,IAAY,CAAA,KAAMF,CAAAA,CAAEE,QAAAA,IAAY,CAAA,CAC/C,CAAA;AAEA,MAAA,IAAI,CAACC,cAAcG,KAAAA,EAAO;AACxB,QAAA,OAAOD,IAAAA;AAAAA,MACT;AAEA,MAAA,MAAME,KAAAA,GAAQJ,aAAAA,CAAcG,KAAAA,CAAME,WAAAA,EAAY;AAC9C,MAAA,OAAOH,IAAAA,CAAKI,OAAOC,CAAAA,IAAAA,KAAQ;AA/DjC,QAAA,IAAA,EAAA,EAAA,EAAA;AAgEQ,QAAA,MAAMC,aAAAA,GAAAA,CAAgBD,EAAAA,GAAAA,IAAAA,CAAKE,QAAAA,KAALF,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAClBF,cACDK,QAAAA,CAASN,KAAAA,CAAAA;AAEZ,QAAA,MAAMO,KAAAA,GAAAA,CAAAA,CACHJ,EAAAA,GAAAA,IAAAA,CAAKK,IAAAA,KAALL,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAWI,KAAAA,KAAoB,EAAA;AAElC,QAAA,MAAME,UAAAA,GAAaF,KAAAA,CAChBN,WAAAA,EAAY,CACZK,SAASN,KAAK,CAAA;AAEjB,QAAA,OAAOI,aAAAA,IAAiBK,UAAAA;AAAAA,MAC1B,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAEDC,IAAAA,KAAAA,CAAMzB,YAAY0B,CAAAA,CAAAA,KAAK;AACrB,MAAA,IAAIA,CAAAA,EAAG;AACLzB,QAAAA,IAAAA,CAAKa,KAAAA,GAAQ,CAACb,IAAAA,CAAKa,KAAAA;AAAAA,MACrB;AAAA,IACF,CAAC,CAAA;AAEDW,IAAAA,KAAAA,CACE,MAAMxB,IAAAA,CAAKa,KAAAA,EACX,MAAM;AACJH,MAAAA,aAAAA,CAAcG,KAAAA,GAAQ,EAAA;AAAA,IACxB,CACF,CAAA;AAEAW,IAAAA,KAAAA,CACE,MAAMtB,CAAAA,CAAEW,KAAAA,EACRa,CAAAA,GAAAA,KAAO;AACL,MAAA,IAAIA,MAAM,CAAA,EAAG;AACX1B,QAAAA,IAAAA,CAAKa,KAAAA,GAAQ,KAAA;AAAA,MACf;AAAA,IACF,CACF,CAAA;AAEA,IAAA,MAAMc,aAAcC,CAAAA,IAAAA,KAAiB;AACnCjC,MAAAA,UAAAA,CAAWiC,IAAI,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAMC,WAAAA,GAAcxB,SAClB,MAAMyB,GAAAA;AAAAA;AAAAA,iCAAAA,EAEuBrC,KAAAA,CAAMoB,MAAMkB,WAAW,CAAA;;AAAA;AAAA,iBAAA,EAGvCtC,KAAAA,CAAMoB,MAAMmB,YAAY,CAAA;AAAA;AAAA,MAAA,CAGvC,CAAA;AAEA,IAAA,MAAMC,eAAAA,GAAkB5B,SACtB,MAAMyB,GAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;;AAAAA;;AAAAA;AAAAA;AAAAA;AAAAA;;AAAAA;;AAAAA;AAAAA;AAAAA;AAAAA;;AAAAA;;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,YAAAA,EA4BErC,KAAAA,CAAMoB,MAAMqB,kBAAkB,CAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EAapBzC,KAAAA,CAAMoB,MAAMmB,YAAY,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,gCAAA,EAiBdvC,KAAAA,CAAMoB,MACvBsB,aAAa,CAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,gCAAA,EAWI1C,KAAAA,CAAMoB,MAAMmB,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oCAAA,EAwBpBvC,KAAAA,CAAMoB,MACvBmB,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,uCAAA,EAoBQvC,KAAAA,CAAMoB,MAC1BsB,aAAa,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAO9B,CAAA;AAEA,IAAA,SAASC,QAAQC,YAAAA,EAAsB;AACrC,MAAA,MAAMC,MAAMC,KAAAA,EAAM;AAClB,MAAA,MAAMC,aAAAA,GAAgBF,GAAAA,CAAIG,IAAAA,CACxBJ,YAAAA,EACA,QACF,CAAA;AACA,MAAA,MAAMK,aAAAA,GAAgBJ,GAAAA,CAAIG,IAAAA,CACxBJ,YAAAA,EACA,QACF,CAAA;AACA,MAAA,MAAMM,WAAAA,GAAcL,GAAAA,CAAIG,IAAAA,CAAKJ,YAAAA,EAAc,MAAM,CAAA;AAEjD,MAAA,IAAIK,gBAAgB,CAAA,EAAG;AACrB,QAAA,OAAO,GAAGF,aAAa,CAAA,aAAA,CAAA;AAAA,MACzB,CAAA,MAAA,IAAWG,cAAc,CAAA,EAAG;AAC1B,QAAA,OAAO,GAAGD,aAAa,CAAA,mBAAA,CAAA;AAAA,MACzB,CAAA,MAAO;AACL,QAAA,OAAO,GAAGC,WAAW,CAAA,mBAAA,CAAA;AAAA,MACvB;AAAA,IACF;AAEA,IAAA,MAAMC,SAAU3B,CAAAA,IAAAA,KAAuB;AACrC,MAAA,IAAIA,KAAKE,QAAAA,EAAU;AACjB9B,QAAAA,MAAAA,CAAOwD,IAAAA,CAAK5B,KAAKE,QAAQ,CAAA;AAAA,MAC3B;AACAnB,MAAAA,IAAAA,CAAKa,KAAAA,GAAQ,KAAA;AAAA,IACf,CAAA;AAEA,IAAA,MAAMiC,iBAAkB7B,CAAAA,IAAAA,KAAuB;AA9QnD,MAAA,IAAA,EAAA;AAgRM,MAAA,IAAA,CAAIA,EAAAA,GAAAA,IAAAA,CAAKK,IAAAA,KAALL,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAW8B,QAAAA,EAAU;AACvB,QAAA,OAAO,KAAA;AAAA,MACT,CAAA,MAAO;AAEL,QAAA,OAAO3C,UAAAA,CAAWS,MAAMmC,MAAAA,KAAW,CAAA;AAAA,MACrC;AAAA,IACF,CAAA;AAEA,IAAA,OAAO,MAAAC,YAAA,KAAA,EAAA;AAAA,MAAA,OAAA,EACO;AAAA,KAAgB,EAAA,CAAAA,WAAAA,CAAAC,gBAAAA,CAAA,WAAA,CAAA,EAAA;AAAA,MAAA,QAEVlD,IAAAA,CAAKa,KAAAA;AAAAA,MAAK,eAAA,EAAAsC,CAAAA,MAAAA,KAAVnD,IAAAA,CAAKa,KAAAA,GAAKsC,MAAAA;AAAAA,MAAA,WAAA,EACb,aAAA;AAAA,MAAa,SAAA,EACf,OAAA;AAAA,MAAO,kBAAA,EACE;AAAA,KAAwB,EAAA;AAAA,MAGxCC,OAAAA,EAASA,MAAAH,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACK;AAAA,UAAEI,WAAAA,EAAa;AAAA;AAAM,OAAC,EAAA,CAAAJ,WAAAA,CAAAC,gBAAAA,CAAA,UAAA,CAAA,EAAA;AAAA,QAAA,OAAA,EAEvB;AAAA,UAAEI,YAAAA,EAAc;AAAA,SAAO;AAAA,QAAC,MAAA,EACzBC,EAAEC,YAAY,CAAA;AAAA,QAAC,OAAA,EACd;AAAA,OAAO,EAAA,IAAA,CAAA,CAAA,CAAA;AAAA,MAIpBC,SAASA,MAAAR,WAAAA,CAAAS,iBAAAT,YAAA,KAAA,EAAA;AAAA,QAAA,SAEOpB,WAAAA,CAAYhB;AAAAA,OAAK,EAAA,CAAAoC,WAAAA,CAAAC,gBAAAA,CAAA,SAAA,CAAA,EAAA;AAAA,QAAA,SAEVxC,aAAAA,CAAcG,KAAAA;AAAAA,QAAK,gBAAA,EAAAsC,CAAAA,MAAAA,KAAnBzC,aAAAA,CAAcG,KAAAA,GAAKsC,MAAAA;AAAAA,QAAA,aAAA,EACrB,gCAAA;AAAA,QAAO,UAAA,EACV;AAAA,OAAK,EAAA;AAAA,QAGbQ,MAAAA,EAAQA,MAAAV,WAAAA,CAAAW,cAAAA,EAAA,MAAA,IAAA,CAAA;AAAA,QACRC,MAAAA,EAAQA,MAAAZ,WAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EACO;AAAA,SAAS,EAAA,CAAAa,eAAAA,CAAA,cAAA,CAAA,CAAA;AAAA,OAGvB,CAAA,CAAA,CAAA,EAAAb,YAAA,KAAA,EAAA;AAAA,QAAA,SAIKhB,eAAAA,CAAgBpB;AAAAA,OAAK,EAAA,CAAAoC,WAAAA,CAAA,MAAA,EAAA;AAAA,QAAA,OAAA,EAClB;AAAA,OAAc,EAAA,CAAAa,eAAAA,CAAA,sCAAA,CAAA,CAAA,CAAA,EAAAb,WAAAA,CAAA,IAAA,EAAA,IAAA,EAAA,CAIxBtC,kBAAAA,CAAmBE,KAAAA,CAAMkD,IAAI9C,CAAAA,IAAAA,KAAI;AAjUtD,QAAA,IAAA,EAAA,EAAA,EAAA;AAiUsDgC,QAAAA,OAAAA,WAAAA,CAAA,IAAA,EAAA;AAAA,UAAA,SAAA,EACnBe,MAAMpB,MAAAA,CAAO3B,IAAI;AAAA,SAAC,EAAA,CAAAgC,WAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EACjB;AAAA,SAAM,EAAA,CAAAA,WAAAA,CAAAgB,qBAAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,EAAAhB,WAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAGN;AAAA,SAAS,EAAA,CAAAA,WAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EACP;AAAA,SAAO,EAAA,EAChBhC,EAAAA,GAAAA,IAAAA,CAAKK,IAAAA,KAALL,mBAAWI,KAAK,IAAA4B,WAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAEP;AAAA,SAAU,EAAA,CAAAA,WAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EACP;AAAA,SAAU,EAAA,CACpBiB,MAAAA,CAAOC,QAAAA,CAASC,QAAAA,GACf,EAAA,GACAnD,IAAAA,CAAKW,IAAI,CAAA,CAAA,EAAAqB,WAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EAEA;AAAA,SAAO,EAAA,IAAA,CAAA,EAAAA,WAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EACP;AAAA,WAAM,CAChBb,OAAAA,CAAAA,CAAQnB,UAAKR,QAAAA,KAALQ,IAAAA,GAAAA,EAAAA,GAAiB,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAIjC6B,eAAe7B,IAAI,CAAA,IAACgC,YAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EACP;AAAA,SAAe,EAAA,CAAAA,WAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EAEhB,WAAA;AAAA,UAAW,SAAA,EACTe,MACPrC,UAAAA,CACEV,IAAAA,CAAKE,YAAY,EACnB;AAAA,SAAC,EAAA,CAAA8B,WAAAA,CAAAoB,aAAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAMR;OAEJ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAIT,CAAA,CAAA,CAAA;AAAA,EAKX;AACF,CAAC,CAAA;;;;"}
@@ -159,7 +159,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
159
159
  { class: "tab-dividers" },
160
160
  null,
161
161
  -1
162
- /* HOISTED */
162
+ /* CACHED */
163
163
  )),
164
164
  createCommentVNode(` <a-dropdown :trigger="['contextmenu']">`),
165
165
  createElementVNode(
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.vue2.mjs","sources":["../../../../src/components/tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, type ComputedRef, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport Search from \"./Search\";\r\nimport {\r\n CloseOutlined,\r\n ReloadOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport {\r\n type NavTabsState,\r\n useNavTabStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst { tabsNavStyle, tabHoverBgStyle, closeBtnStyle } =\r\n useStyle();\r\n\r\nconst {\r\n activeKey,\r\n list,\r\n closeBtnStatus,\r\n onChange,\r\n onClose\r\n} = useTab();\r\n\r\nfunction useStyle(): {\r\n tabsNavStyle: ComputedRef<string>;\r\n tabHoverBgStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const activeTabColor = computed(\r\n () => token.value.colorBgLayout\r\n );\r\n const splitColor = computed(\r\n () => token.value.colorBorderSecondary\r\n );\r\n\r\n const tabsNavStyle = computed(() => {\r\n return css`\r\n --active-tab-color: ${activeTabColor.value};\r\n --splitColor: ${splitColor.value};\r\n padding-top: 10px;\r\n display: flex;\r\n `;\r\n });\r\n\r\n const tabHoverBgStyle = computed(() => {\r\n return css`\r\n &:before {\r\n background: ${token.value.colorPrimaryBgHover};\r\n }\r\n `;\r\n });\r\n\r\n const closeBtnStyle = computed(() => {\r\n return css`\r\n &:hover {\r\n background: ${token.value.colorPrimaryBorderHover};\r\n border-radius: 50%;\r\n }\r\n `;\r\n });\r\n\r\n return {\r\n tabsNavStyle,\r\n tabHoverBgStyle,\r\n closeBtnStyle\r\n };\r\n}\r\n\r\nfunction useTab() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const store = useNavTabStore();\r\n const { list, activeKey } = storeToRefs(store);\r\n const { save, deleteTabs } = store;\r\n\r\n watch(\r\n () => route.fullPath,\r\n val => {\r\n save(route);\r\n activeKey.value = val;\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n const onChange = (key: string) => {\r\n if (key !== route.path) {\r\n // 匹配打开的标签路由数据\r\n const rs = list.value.filter(\r\n item => item.fullPath === key\r\n )[0];\r\n router.push(rs);\r\n }\r\n };\r\n\r\n const onClose = (\r\n $event: Event,\r\n key: string | undefined\r\n ) => {\r\n if (!key) return;\r\n //阻止冒泡\r\n $event.stopPropagation();\r\n // 删除标签\r\n deleteTabs(key);\r\n // 重新push已打开的路由\r\n const backRoute = list.value[list.value.length - 1];\r\n if (backRoute.fullPath) {\r\n router.push(backRoute.fullPath);\r\n }\r\n };\r\n\r\n const closeBtnStatus = (item: NavTabsState) => {\r\n // 如果meta有设置keepOpen则隐藏关闭按钮\r\n if (item.meta?.keepOpen) {\r\n return false;\r\n } else {\r\n // 如果只有一个标签,则隐藏关闭按钮\r\n return list.value.length !== 1;\r\n }\r\n };\r\n\r\n return {\r\n activeKey,\r\n list,\r\n closeBtnStatus,\r\n onChange,\r\n onClose\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div class=\"tabs-nav-wrapper\" :class=\"tabsNavStyle\">\r\n <Search />\r\n <div class=\"d-tabs-nav\">\r\n <a-tabs\r\n size=\"small\"\r\n v-model:activeKey=\"activeKey\"\r\n type=\"card\"\r\n hide-add\r\n @change=\"onChange\"\r\n >\r\n <a-tab-pane\r\n :key=\"item.fullPath\"\r\n :closable=\"false\"\r\n v-for=\"item in list\"\r\n :class=\"{ active: activeKey === item.fullPath }\"\r\n >\r\n <template #tab>\r\n <div\r\n class=\"tab-hover-bg\"\r\n :class=\"tabHoverBgStyle\"\r\n ></div>\r\n <div class=\"tab-dividers\"></div>\r\n <!-- <a-dropdown :trigger=\"['contextmenu']\">-->\r\n <div class=\"tab-item\">\r\n {{ item.meta?.title || \"无标题\" }}\r\n </div>\r\n <!-- <template #overlay>-->\r\n <!-- <a-menu>-->\r\n <!-- <a-menu-item key=\"1\">-->\r\n <!-- <ReloadOutlined />-->\r\n <!-- 重新加载-->\r\n <!-- </a-menu-item>-->\r\n <!-- <a-menu-item key=\"2\">-->\r\n <!-- <CloseOutlined />-->\r\n <!-- 关闭其他-->\r\n <!-- </a-menu-item>-->\r\n <!-- <a-menu-item key=\"3\"-->\r\n <!-- >关闭右侧标签-->\r\n <!-- </a-menu-item>-->\r\n <!-- <a-menu-item key=\"3\"-->\r\n <!-- >关闭左侧标签-->\r\n <!-- </a-menu-item>-->\r\n <!-- </a-menu>-->\r\n <!-- </template>-->\r\n <!-- </a-dropdown>-->\r\n\r\n <div\r\n class=\"tab-close\"\r\n v-if=\"closeBtnStatus(item)\"\r\n >\r\n <div\r\n class=\"close-btn\"\r\n :class=\"closeBtnStyle\"\r\n @click=\"onClose($event, item.fullPath)\"\r\n >\r\n <CloseOutlined />\r\n </div>\r\n </div>\r\n </template>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\"></style>\r\n"],"names":["tabsNavStyle","tabHoverBgStyle","closeBtnStyle","list","activeKey","onChange","onClose","closeBtnStatus"],"mappings":"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"}
1
+ {"version":3,"file":"Tab.vue2.mjs","sources":["../../../../src/components/tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, type ComputedRef, watch } from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport Search from \"./Search\";\r\nimport {\r\n CloseOutlined,\r\n ReloadOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport {\r\n type NavTabsState,\r\n useNavTabStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst { tabsNavStyle, tabHoverBgStyle, closeBtnStyle } =\r\n useStyle();\r\n\r\nconst {\r\n activeKey,\r\n list,\r\n closeBtnStatus,\r\n onChange,\r\n onClose\r\n} = useTab();\r\n\r\nfunction useStyle(): {\r\n tabsNavStyle: ComputedRef<string>;\r\n tabHoverBgStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const activeTabColor = computed(\r\n () => token.value.colorBgLayout\r\n );\r\n const splitColor = computed(\r\n () => token.value.colorBorderSecondary\r\n );\r\n\r\n const tabsNavStyle = computed(() => {\r\n return css`\r\n --active-tab-color: ${activeTabColor.value};\r\n --splitColor: ${splitColor.value};\r\n padding-top: 10px;\r\n display: flex;\r\n `;\r\n });\r\n\r\n const tabHoverBgStyle = computed(() => {\r\n return css`\r\n &:before {\r\n background: ${token.value.colorPrimaryBgHover};\r\n }\r\n `;\r\n });\r\n\r\n const closeBtnStyle = computed(() => {\r\n return css`\r\n &:hover {\r\n background: ${token.value.colorPrimaryBorderHover};\r\n border-radius: 50%;\r\n }\r\n `;\r\n });\r\n\r\n return {\r\n tabsNavStyle,\r\n tabHoverBgStyle,\r\n closeBtnStyle\r\n };\r\n}\r\n\r\nfunction useTab() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const store = useNavTabStore();\r\n const { list, activeKey } = storeToRefs(store);\r\n const { save, deleteTabs } = store;\r\n\r\n watch(\r\n () => route.fullPath,\r\n val => {\r\n save(route);\r\n activeKey.value = val;\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n const onChange = (key: string) => {\r\n if (key !== route.path) {\r\n // 匹配打开的标签路由数据\r\n const rs = list.value.filter(\r\n item => item.fullPath === key\r\n )[0];\r\n router.push(rs);\r\n }\r\n };\r\n\r\n const onClose = (\r\n $event: Event,\r\n key: string | undefined\r\n ) => {\r\n if (!key) return;\r\n //阻止冒泡\r\n $event.stopPropagation();\r\n // 删除标签\r\n deleteTabs(key);\r\n // 重新push已打开的路由\r\n const backRoute = list.value[list.value.length - 1];\r\n if (backRoute.fullPath) {\r\n router.push(backRoute.fullPath);\r\n }\r\n };\r\n\r\n const closeBtnStatus = (item: NavTabsState) => {\r\n // 如果meta有设置keepOpen则隐藏关闭按钮\r\n if (item.meta?.keepOpen) {\r\n return false;\r\n } else {\r\n // 如果只有一个标签,则隐藏关闭按钮\r\n return list.value.length !== 1;\r\n }\r\n };\r\n\r\n return {\r\n activeKey,\r\n list,\r\n closeBtnStatus,\r\n onChange,\r\n onClose\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div class=\"tabs-nav-wrapper\" :class=\"tabsNavStyle\">\r\n <Search />\r\n <div class=\"d-tabs-nav\">\r\n <a-tabs\r\n size=\"small\"\r\n v-model:activeKey=\"activeKey\"\r\n type=\"card\"\r\n hide-add\r\n @change=\"onChange\"\r\n >\r\n <a-tab-pane\r\n :key=\"item.fullPath\"\r\n :closable=\"false\"\r\n v-for=\"item in list\"\r\n :class=\"{ active: activeKey === item.fullPath }\"\r\n >\r\n <template #tab>\r\n <div\r\n class=\"tab-hover-bg\"\r\n :class=\"tabHoverBgStyle\"\r\n ></div>\r\n <div class=\"tab-dividers\"></div>\r\n <!-- <a-dropdown :trigger=\"['contextmenu']\">-->\r\n <div class=\"tab-item\">\r\n {{ item.meta?.title || \"无标题\" }}\r\n </div>\r\n <!-- <template #overlay>-->\r\n <!-- <a-menu>-->\r\n <!-- <a-menu-item key=\"1\">-->\r\n <!-- <ReloadOutlined />-->\r\n <!-- 重新加载-->\r\n <!-- </a-menu-item>-->\r\n <!-- <a-menu-item key=\"2\">-->\r\n <!-- <CloseOutlined />-->\r\n <!-- 关闭其他-->\r\n <!-- </a-menu-item>-->\r\n <!-- <a-menu-item key=\"3\"-->\r\n <!-- >关闭右侧标签-->\r\n <!-- </a-menu-item>-->\r\n <!-- <a-menu-item key=\"3\"-->\r\n <!-- >关闭左侧标签-->\r\n <!-- </a-menu-item>-->\r\n <!-- </a-menu>-->\r\n <!-- </template>-->\r\n <!-- </a-dropdown>-->\r\n\r\n <div\r\n class=\"tab-close\"\r\n v-if=\"closeBtnStatus(item)\"\r\n >\r\n <div\r\n class=\"close-btn\"\r\n :class=\"closeBtnStyle\"\r\n @click=\"onClose($event, item.fullPath)\"\r\n >\r\n <CloseOutlined />\r\n </div>\r\n </div>\r\n </template>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\"></style>\r\n"],"names":["tabsNavStyle","tabHoverBgStyle","closeBtnStyle","list","activeKey","onChange","onClose","closeBtnStatus","_createElementBlock","_normalizeClass","_unref","_createVNode","_createElementVNode","_Fragment","_renderList","_createBlock","_createCommentVNode","_toDisplayString","_openBlock"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/components/tab/index.ts"],"sourcesContent":["import type { App } from \"vue\";\r\n\r\nimport Tab from \"./Tab.vue\";\r\n\r\nTab.install = (app: App) => {\r\n app.component(\"DTab\", Tab);\r\n};\r\n\r\nexport default Tab;\r\n"],"names":["Tab"],"mappings":";;;;AAIAA,SAAI,CAAA,OAAA,GAAU,CAAC,GAAa,KAAA;AAC1B,EAAI,GAAA,CAAA,SAAA,CAAU,QAAQA,SAAG,CAAA;AAC3B,CAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/components/tab/index.ts"],"sourcesContent":["import type { App } from \"vue\";\r\n\r\nimport Tab from \"./Tab.vue\";\r\n\r\nTab.install = (app: App) => {\r\n app.component(\"DTab\", Tab);\r\n};\r\n\r\nexport default Tab;\r\n"],"names":["Tab"],"mappings":";;;;AAIAA,SAAA,CAAI,OAAA,GAAU,CAAC,GAAA,KAAa;AAC1B,EAAA,GAAA,CAAI,SAAA,CAAU,QAAQA,SAAG,CAAA;AAC3B,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.mjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { type ExtractPropTypes, type PropType } from \"vue\";\r\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\r\nimport { type TablePaginationConfig } from \"ant-design-vue\";\r\n\r\nimport { type PaginationProps } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\r\nimport type {\r\n SelectionSelectFn,\r\n TableRowSelection\r\n} from \"ant-design-vue/es/table/interface\";\r\nimport { merge } from \"lodash\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType =\r\n | \"small\"\r\n | \"middle\"\r\n | \"large\"\r\n | undefined;\r\n\r\n// 定义分页\r\ninterface Page {\r\n total: number;\r\n current: number;\r\n pageSize: number;\r\n}\r\n\r\n// 定义表格配置接口,支持泛型\r\ninterface Config<T = unknown> {\r\n columns: ColumnsType<T>;\r\n // 分页\r\n pagination?: Page | undefined;\r\n // 分页配置\r\n paginationConfig?: PaginationProps;\r\n changePagination?: (\r\n current: number,\r\n size: number\r\n ) => void;\r\n // 单击\r\n click?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 双击\r\n dbClick?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (\r\n record: unknown\r\n ) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\r\n // 点击行号激活的class\r\n activeRowClass?: string;\r\n // 复选框方式\r\n selection?: string;\r\n // 切换分页是否保留选中的ID\r\n keepSelected?: boolean;\r\n}\r\n\r\n// 定义 Props 类型,支持泛型\r\nexport const tableProps = <T = unknown,>() => ({\r\n height: { type: Number, default: 0 },\r\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\r\n loading: { type: Boolean, default: false },\r\n rowKey: { type: String, default: \"id\" },\r\n bordered: { type: Boolean, default: false },\r\n size: {\r\n type: String as PropType<SizeType>,\r\n default: \"small\"\r\n },\r\n keys: {\r\n type: Array as PropType<Key[]>,\r\n default: () => []\r\n },\r\n config: {\r\n type: Object as PropType<Config<T>>,\r\n required: true\r\n }\r\n});\r\n\r\nexport type TableProps = Partial<\r\n ExtractPropTypes<ReturnType<typeof tableProps>>\r\n>;\r\n\r\n// 分页组件默认配置\r\nconst defaultPaginationProps: PaginationProps = {\r\n defaultPageSize: 20,\r\n disabled: false,\r\n hideOnSinglePage: false,\r\n pageSize: 20,\r\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\r\n responsive: false,\r\n showLessItems: false,\r\n showQuickJumper: true,\r\n showSizeChanger: true, // 默认展示切换器\r\n showTotal: total => `总共 ${total} 条数据`,\r\n simple: false,\r\n size: \"default\",\r\n total: 0\r\n};\r\n\r\n// 表格默认配置\r\nconst defaultConfig: Config = {\r\n columns: [],\r\n pagination: undefined,\r\n paginationConfig: defaultPaginationProps,\r\n activeRowClass: \"\",\r\n selection: \"N\",\r\n keepSelected: false\r\n};\r\n\r\nconst paginationStyle = css`\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 6px;\r\n`;\r\n\r\n// 定义泛型组件\r\nconst DTable = defineComponent({\r\n name: \"DTable\",\r\n props: tableProps(), // 初始泛型设置为 `unknown`\r\n emits: [\"update:keys\"],\r\n setup(props, { emit, slots, attrs }) {\r\n // 保存选中的唯一id\r\n const selectedRowKeys = ref<Key[]>(props.keys || []);\r\n // 计算表格高度\r\n //const height = computed(() => props.height);\r\n\r\n const { columns, data, pagination } = useProps();\r\n const { tableSlots } = useSlots();\r\n const { paginationConfig, onPaginationChange } =\r\n usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } =\r\n useHeight();\r\n const rowSelection = useRowSelection();\r\n\r\n onMounted(() => {});\r\n\r\n /**\r\n * props计算属性处理\r\n */\r\n function useProps() {\r\n // 定义计算属性\r\n const _config = computed(() =>\r\n merge({}, defaultConfig, props.config)\r\n );\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(\r\n () => _config.value.pagination || false\r\n );\r\n\r\n return {\r\n columns,\r\n data,\r\n pagination\r\n };\r\n }\r\n\r\n /**\r\n * 插槽处理\r\n */\r\n function useSlots() {\r\n // 定义插槽\r\n const tableSlots = {\r\n bodyCell: (params: unknown) =>\r\n slots.bodyCell?.(params),\r\n summary: () => slots.summary?.()\r\n };\r\n\r\n return {\r\n tableSlots\r\n };\r\n }\r\n\r\n function useHeight() {\r\n const tableRef = ref();\r\n const tableHeight = ref(0);\r\n let headerHeight = 0,\r\n tableEl: HTMLElement;\r\n\r\n // 表格body对象\r\n const antTableBodyRef = ref<HTMLElement>();\r\n\r\n watch(\r\n () => props.height,\r\n val => {\r\n if (val !== 0) {\r\n nextTick(() => {\r\n _tableBodyHeight(val);\r\n });\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function _tableBodyHeight(height: number) {\r\n tableEl = tableRef?.value?.$el;\r\n //表头高度\r\n headerHeight = useEleHeight(\r\n tableEl.getElementsByClassName(\r\n \"ant-table-header\"\r\n )[0]\r\n );\r\n // 分页\r\n const paginationEl = tableEl.getElementsByClassName(\r\n \"d-pagination\"\r\n )[0] as HTMLElement | undefined;\r\n let paginationHeight = 0;\r\n if (paginationEl) {\r\n paginationEl.style.marginBottom = \"0\";\r\n paginationHeight =\r\n useEleHeight(paginationEl as never) ?? 0;\r\n }\r\n\r\n //总结行\r\n let summaryHeight = 0;\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n if (summaryEl) {\r\n summaryHeight =\r\n useEleHeight(summaryEl as HTMLElement) ?? 0;\r\n }\r\n\r\n tableHeight.value =\r\n height -\r\n paginationHeight -\r\n headerHeight -\r\n summaryHeight;\r\n\r\n antTableBodyRef.value =\r\n tableEl.getElementsByClassName(\r\n \"ant-table-body\"\r\n )[0] as HTMLElement;\r\n\r\n if (antTableBodyRef.value) {\r\n // 设置body高度\r\n antTableBodyRef.value.style.height =\r\n tableHeight.value + \"px\";\r\n //TODO antTableBodyRef 滚动到底部的时候,需要去除底部边框,否则边框会重叠\r\n //antTableBodyRef.value.style.borderBottom = \"1px solid #f0f0f0\";\r\n }\r\n }\r\n\r\n return {\r\n tableRef,\r\n tableHeight,\r\n antTableBodyRef\r\n };\r\n }\r\n\r\n function usePagination() {\r\n const { changePagination } = props.config!;\r\n const paginationConfig =\r\n computed<TablePaginationConfig>(() => {\r\n return {\r\n position: [\"bottomCenter\"], // 符合类型的分页位置\r\n total: 0, // 确保符合要求\r\n ...defaultPaginationProps,\r\n ...pagination.value\r\n };\r\n });\r\n\r\n const onPaginationChange = (\r\n page: number,\r\n pageSize: number\r\n ) => {\r\n const { selection, keepSelected } = props.config!;\r\n changePagination?.(page, pageSize);\r\n // 切换分页的时候,表体滚动到顶部\r\n antTableBodyRef.value!.scrollTop = 0;\r\n\r\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\r\n // 清空历史选中数据\r\n if (selection === \"S\" || !keepSelected) {\r\n // 只有selectedRowKeys被清空时,这里才触发update;\r\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\r\n if (selectedRowKeys.value.length > 0) {\r\n selectedRowKeys.value = [];\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n paginationConfig,\r\n onPaginationChange\r\n };\r\n }\r\n\r\n function useCustomRow() {\r\n return (record: never, index: number) => {\r\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\r\n let clickTimeout: number = 0;\r\n const {\r\n rowKey,\r\n config: {\r\n click,\r\n dbClick,\r\n selection,\r\n getCheckboxProps\r\n } = {} as Config\r\n } = props;\r\n\r\n // 当前点击行的唯一ID,通过rowKey从record中取值\r\n const id = record[rowKey];\r\n\r\n /**\r\n * 处理单击事件业务\r\n * @param record 当前点击行数据\r\n */\r\n const onClick = () => {\r\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\r\n // 否则checkEnable为false\r\n const checkEnable =\r\n getCheckboxProps === undefined\r\n ? false\r\n : getCheckboxProps(record)?.disabled;\r\n\r\n if (selection === \"N\" || checkEnable) {\r\n // 1. 未开启复选框 则不处理数据选中操作\r\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\r\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\r\n // 方法返回的disabled为true就不执行\r\n // 复选框选中的操作\r\n return;\r\n }\r\n const haveState = selectedRowKeys.value.some(\r\n (key: Key) => key === id\r\n );\r\n if (haveState) {\r\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\r\n selectedRowKeys.value =\r\n selectedRowKeys.value.filter(\r\n (key: Key) => key !== id\r\n );\r\n } else {\r\n if (selection === \"S\") {\r\n //单选的时候 清空选中的数据 再赋值新的ID\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value.push(id);\r\n } else {\r\n //多选直接追加ID\r\n selectedRowKeys.value.push(id);\r\n }\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n function activeRowBackground(event: Event) {\r\n const { activeRowClass } = props.config!;\r\n if (!activeRowClass) return;\r\n const curEl = event.target;\r\n if (curEl instanceof HTMLElement) {\r\n const parentElement =\r\n curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(\r\n activeRowClass\r\n )\r\n ) {\r\n parentElement.classList.remove(\r\n activeRowClass\r\n );\r\n } else {\r\n parentElement?.classList.add(activeRowClass);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n onClick: (event: Event) => {\r\n clearTimeout(clickTimeout);\r\n clickTimeout = window.setTimeout(() => {\r\n // 处理背景激活逻辑\r\n activeRowBackground(event);\r\n // 处理单击事件业务\r\n onClick();\r\n // 回传数据 自定义单击后的业务\r\n click?.(record, index);\r\n }, 200);\r\n }, // 点击行\r\n onDblclick: () => {\r\n clearTimeout(clickTimeout);\r\n // 回传数据 自定义单击后的业务\r\n dbClick?.(record, index);\r\n }\r\n };\r\n };\r\n }\r\n\r\n function useRowSelection() {\r\n const rowSelection = ref<\r\n TableRowSelection<unknown> | undefined\r\n >(undefined);\r\n\r\n const {\r\n rowKey,\r\n config: { getCheckboxProps, selection } = {}\r\n } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (\r\n record,\r\n selected\r\n ) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected\r\n ? [data[rowKey]]\r\n : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => key !== data[rowKey]\r\n );\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onSelectAll = (\r\n selected: boolean,\r\n selectedRows: unknown[],\r\n changeRows: unknown[]\r\n ) => {\r\n const _ids = changeRows.map(\r\n (record: unknown) =>\r\n (record as { [key: string]: never })[rowKey]\r\n );\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(_ids)\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key as never)\r\n );\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n //TODO 这个方法在单选的时候 会出现异常bug,暂时不知道怎么解决\r\n const onChange = (\r\n rowKeys: Key[],\r\n selectedRows: unknown[]\r\n ) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<\r\n string,\r\n never\r\n >[];\r\n // 等于0 说明是取消全选,反之\r\n const selected = data.length !== 0;\r\n // 显式转换 _ids 的类型为 Key[]\r\n const _ids: Key[] = props.data.map(\r\n record =>\r\n (record as Record<string, unknown>)[\r\n rowKey\r\n ] as Key\r\n );\r\n\r\n // 更新 selectedRowKeys\r\n // selected 为true,说明是全选,那么rowKeys是权限后的数组ID,需要过滤掉selectedRowKeys里的不在id才进行添加,\r\n // 否则会出现,比如一开始选择了两条数据,然后再进行全选的话 会多出两个重复ID\r\n // selected 为false,说明是取消全选,那么需要从selectedRowKeys过滤掉 _ids的id\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(\r\n rowKeys.filter(\r\n (key: Key) =>\r\n !selectedRowKeys.value.includes(key)\r\n )\r\n )\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key)\r\n );\r\n console.log(\"onSelect\", selectedRowKeys.value);\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\r\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\r\n watch(\r\n () => props.keys,\r\n val => {\r\n selectedRowKeys.value = val;\r\n },\r\n {\r\n deep: true,\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => props.config?.selection,\r\n val => {\r\n if (val !== \"N\") {\r\n rowSelection.value = {\r\n selectedRowKeys: selectedRowKeys as never,\r\n onSelect,\r\n onSelectAll,\r\n fixed: true,\r\n columnTitle:\r\n selection === \"S\" ? \"选择\" : null,\r\n columnWidth: selection === \"S\" ? 60 : 40,\r\n getCheckboxProps: getCheckboxProps as never\r\n };\r\n } else {\r\n rowSelection.value = undefined;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return rowSelection;\r\n }\r\n\r\n return () => (\r\n <Flex vertical={true} ref={tableRef}>\r\n <Table\r\n {...attrs}\r\n loading={props.loading}\r\n size={props.size}\r\n bordered={props.bordered}\r\n dataSource={data.value}\r\n columns={columns.value}\r\n rowSelection={rowSelection.value}\r\n customRow={useCustomRow() as never}\r\n pagination={false}\r\n rowKey={props.rowKey}\r\n v-slots={tableSlots}\r\n scroll={{\r\n y: tableHeight.value,\r\n x: \"100%\",\r\n scrollToFirstRowOnChange: true\r\n }}\r\n />\r\n {pagination.value && (\r\n <div class={[paginationStyle, \"d-pagination\"]}>\r\n {\r\n <Pagination\r\n v-model:current={\r\n paginationConfig.value.current\r\n }\r\n v-model:pageSize={\r\n paginationConfig.value.pageSize\r\n }\r\n total={paginationConfig.value.total}\r\n disabled={props.loading}\r\n show-size-changer\r\n size={\"default\"}\r\n hide-on-single-page={\r\n paginationConfig.value.hideOnSinglePage\r\n }\r\n show-quick-jumper={\r\n paginationConfig.value.showQuickJumper\r\n }\r\n default-page-size={\r\n paginationConfig.value.defaultPageSize\r\n }\r\n page-size-options={\r\n paginationConfig.value.pageSizeOptions\r\n }\r\n show-total={\r\n paginationConfig.value.showTotal\r\n }\r\n onChange={onPaginationChange}\r\n showLessItems={true}\r\n ></Pagination>\r\n }\r\n </div>\r\n )}\r\n </Flex>\r\n );\r\n }\r\n});\r\n\r\nexport const useEleHeight = (node: Element) => {\r\n const list = [\r\n \"margin-top\",\r\n \"margin-bottom\",\r\n \"border-top\",\r\n \"border-bottom\",\r\n \"padding-top\",\r\n \"padding-bottom\",\r\n \"height\"\r\n ];\r\n const style = getComputedStyle(node);\r\n return list\r\n .map(k => parseInt(style.getPropertyValue(k), 10))\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n });\r\n};\r\n\r\nexport default DTable;\r\n"],"names":["tableProps","height","type","Number","default","data","Array","loading","Boolean","rowKey","String","bordered","size","keys","config","Object","required","defaultPaginationProps","defaultPageSize","disabled","hideOnSinglePage","pageSize","pageSizeOptions","responsive","showLessItems","showQuickJumper","showSizeChanger","showTotal","total","simple","defaultConfig","columns","pagination","undefined","paginationConfig","activeRowClass","selection","keepSelected","paginationStyle","css","DTable","name","props","emits","setup","emit","slots","attrs","selectedRowKeys","ref","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","rowSelection","useRowSelection","onMounted","_config","computed","merge","value","bodyCell","params","summary","headerHeight","tableEl","watch","val","nextTick","_tableBodyHeight","immediate","$el","useEleHeight","getElementsByClassName","paginationEl","paginationHeight","style","marginBottom","summaryHeight","summaryEl","changePagination","position","page","scrollTop","length","useCustomRow","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","some","key","filter","push","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","concat","onSelectAll","selectedRows","changeRows","_ids","map","includes","onChange","rowKeys","console","log","deep","fixed","columnTitle","columnWidth","_createVNode","Flex","Table","_mergeProps","y","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
1
+ {"version":3,"file":"Table.mjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { type ExtractPropTypes, type PropType } from \"vue\";\r\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\r\nimport { type TablePaginationConfig } from \"ant-design-vue\";\r\n\r\nimport { type PaginationProps } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\r\nimport type {\r\n SelectionSelectFn,\r\n TableRowSelection\r\n} from \"ant-design-vue/es/table/interface\";\r\nimport { merge } from \"lodash\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType =\r\n | \"small\"\r\n | \"middle\"\r\n | \"large\"\r\n | undefined;\r\n\r\n// 定义分页\r\ninterface Page {\r\n total: number;\r\n current: number;\r\n pageSize: number;\r\n}\r\n\r\n// 定义表格配置接口,支持泛型\r\ninterface Config<T = unknown> {\r\n columns: ColumnsType<T>;\r\n // 分页\r\n pagination?: Page | undefined;\r\n // 分页配置\r\n paginationConfig?: PaginationProps;\r\n changePagination?: (\r\n current: number,\r\n size: number\r\n ) => void;\r\n // 单击\r\n click?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 双击\r\n dbClick?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (\r\n record: unknown\r\n ) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\r\n // 点击行号激活的class\r\n activeRowClass?: string;\r\n // 复选框方式\r\n selection?: string;\r\n // 切换分页是否保留选中的ID\r\n keepSelected?: boolean;\r\n}\r\n\r\n// 定义 Props 类型,支持泛型\r\nexport const tableProps = <T = unknown,>() => ({\r\n height: { type: Number, default: 0 },\r\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\r\n loading: { type: Boolean, default: false },\r\n rowKey: { type: String, default: \"id\" },\r\n bordered: { type: Boolean, default: false },\r\n size: {\r\n type: String as PropType<SizeType>,\r\n default: \"small\"\r\n },\r\n keys: {\r\n type: Array as PropType<Key[]>,\r\n default: () => []\r\n },\r\n config: {\r\n type: Object as PropType<Config<T>>,\r\n required: true\r\n }\r\n});\r\n\r\nexport type TableProps = Partial<\r\n ExtractPropTypes<ReturnType<typeof tableProps>>\r\n>;\r\n\r\n// 分页组件默认配置\r\nconst defaultPaginationProps: PaginationProps = {\r\n defaultPageSize: 20,\r\n disabled: false,\r\n hideOnSinglePage: false,\r\n pageSize: 20,\r\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\r\n responsive: false,\r\n showLessItems: false,\r\n showQuickJumper: true,\r\n showSizeChanger: true, // 默认展示切换器\r\n showTotal: total => `总共 ${total} 条数据`,\r\n simple: false,\r\n size: \"default\",\r\n total: 0\r\n};\r\n\r\n// 表格默认配置\r\nconst defaultConfig: Config = {\r\n columns: [],\r\n pagination: undefined,\r\n paginationConfig: defaultPaginationProps,\r\n activeRowClass: \"\",\r\n selection: \"N\",\r\n keepSelected: false\r\n};\r\n\r\nconst paginationStyle = css`\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 6px;\r\n`;\r\n\r\n// 定义泛型组件\r\nconst DTable = defineComponent({\r\n name: \"DTable\",\r\n props: tableProps(), // 初始泛型设置为 `unknown`\r\n emits: [\"update:keys\"],\r\n setup(props, { emit, slots, attrs }) {\r\n // 保存选中的唯一id\r\n const selectedRowKeys = ref<Key[]>(props.keys || []);\r\n // 计算表格高度\r\n //const height = computed(() => props.height);\r\n\r\n const { columns, data, pagination } = useProps();\r\n const { tableSlots } = useSlots();\r\n const { paginationConfig, onPaginationChange } =\r\n usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } =\r\n useHeight();\r\n const rowSelection = useRowSelection();\r\n\r\n onMounted(() => {});\r\n\r\n /**\r\n * props计算属性处理\r\n */\r\n function useProps() {\r\n // 定义计算属性\r\n const _config = computed(() =>\r\n merge({}, defaultConfig, props.config)\r\n );\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(\r\n () => _config.value.pagination || false\r\n );\r\n\r\n return {\r\n columns,\r\n data,\r\n pagination\r\n };\r\n }\r\n\r\n /**\r\n * 插槽处理\r\n */\r\n function useSlots() {\r\n // 定义插槽\r\n const tableSlots = {\r\n bodyCell: (params: unknown) =>\r\n slots.bodyCell?.(params),\r\n summary: () => slots.summary?.()\r\n };\r\n\r\n return {\r\n tableSlots\r\n };\r\n }\r\n\r\n function useHeight() {\r\n const tableRef = ref();\r\n const tableHeight = ref(0);\r\n let headerHeight = 0,\r\n tableEl: HTMLElement;\r\n\r\n // 表格body对象\r\n const antTableBodyRef = ref<HTMLElement>();\r\n\r\n watch(\r\n () => props.height,\r\n val => {\r\n if (val !== 0) {\r\n nextTick(() => {\r\n _tableBodyHeight(val);\r\n });\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function _tableBodyHeight(height: number) {\r\n tableEl = tableRef?.value?.$el;\r\n //表头高度\r\n headerHeight = useEleHeight(\r\n tableEl.getElementsByClassName(\r\n \"ant-table-header\"\r\n )[0]\r\n );\r\n // 分页\r\n const paginationEl = tableEl.getElementsByClassName(\r\n \"d-pagination\"\r\n )[0] as HTMLElement | undefined;\r\n let paginationHeight = 0;\r\n if (paginationEl) {\r\n paginationEl.style.marginBottom = \"0\";\r\n paginationHeight =\r\n useEleHeight(paginationEl as never) ?? 0;\r\n }\r\n\r\n //总结行\r\n let summaryHeight = 0;\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n if (summaryEl) {\r\n summaryHeight =\r\n useEleHeight(summaryEl as HTMLElement) ?? 0;\r\n }\r\n\r\n tableHeight.value =\r\n height -\r\n paginationHeight -\r\n headerHeight -\r\n summaryHeight;\r\n\r\n antTableBodyRef.value =\r\n tableEl.getElementsByClassName(\r\n \"ant-table-body\"\r\n )[0] as HTMLElement;\r\n\r\n if (antTableBodyRef.value) {\r\n // 设置body高度\r\n antTableBodyRef.value.style.height =\r\n tableHeight.value + \"px\";\r\n //TODO antTableBodyRef 滚动到底部的时候,需要去除底部边框,否则边框会重叠\r\n //antTableBodyRef.value.style.borderBottom = \"1px solid #f0f0f0\";\r\n }\r\n }\r\n\r\n return {\r\n tableRef,\r\n tableHeight,\r\n antTableBodyRef\r\n };\r\n }\r\n\r\n function usePagination() {\r\n const { changePagination } = props.config!;\r\n const paginationConfig =\r\n computed<TablePaginationConfig>(() => {\r\n return {\r\n position: [\"bottomCenter\"], // 符合类型的分页位置\r\n total: 0, // 确保符合要求\r\n ...defaultPaginationProps,\r\n ...pagination.value\r\n };\r\n });\r\n\r\n const onPaginationChange = (\r\n page: number,\r\n pageSize: number\r\n ) => {\r\n const { selection, keepSelected } = props.config!;\r\n changePagination?.(page, pageSize);\r\n // 切换分页的时候,表体滚动到顶部\r\n antTableBodyRef.value!.scrollTop = 0;\r\n\r\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\r\n // 清空历史选中数据\r\n if (selection === \"S\" || !keepSelected) {\r\n // 只有selectedRowKeys被清空时,这里才触发update;\r\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\r\n if (selectedRowKeys.value.length > 0) {\r\n selectedRowKeys.value = [];\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n paginationConfig,\r\n onPaginationChange\r\n };\r\n }\r\n\r\n function useCustomRow() {\r\n return (record: never, index: number) => {\r\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\r\n let clickTimeout: number = 0;\r\n const {\r\n rowKey,\r\n config: {\r\n click,\r\n dbClick,\r\n selection,\r\n getCheckboxProps\r\n } = {} as Config\r\n } = props;\r\n\r\n // 当前点击行的唯一ID,通过rowKey从record中取值\r\n const id = record[rowKey];\r\n\r\n /**\r\n * 处理单击事件业务\r\n * @param record 当前点击行数据\r\n */\r\n const onClick = () => {\r\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\r\n // 否则checkEnable为false\r\n const checkEnable =\r\n getCheckboxProps === undefined\r\n ? false\r\n : getCheckboxProps(record)?.disabled;\r\n\r\n if (selection === \"N\" || checkEnable) {\r\n // 1. 未开启复选框 则不处理数据选中操作\r\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\r\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\r\n // 方法返回的disabled为true就不执行\r\n // 复选框选中的操作\r\n return;\r\n }\r\n const haveState = selectedRowKeys.value.some(\r\n (key: Key) => key === id\r\n );\r\n if (haveState) {\r\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\r\n selectedRowKeys.value =\r\n selectedRowKeys.value.filter(\r\n (key: Key) => key !== id\r\n );\r\n } else {\r\n if (selection === \"S\") {\r\n //单选的时候 清空选中的数据 再赋值新的ID\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value.push(id);\r\n } else {\r\n //多选直接追加ID\r\n selectedRowKeys.value.push(id);\r\n }\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n function activeRowBackground(event: Event) {\r\n const { activeRowClass } = props.config!;\r\n if (!activeRowClass) return;\r\n const curEl = event.target;\r\n if (curEl instanceof HTMLElement) {\r\n const parentElement =\r\n curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(\r\n activeRowClass\r\n )\r\n ) {\r\n parentElement.classList.remove(\r\n activeRowClass\r\n );\r\n } else {\r\n parentElement?.classList.add(activeRowClass);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n onClick: (event: Event) => {\r\n clearTimeout(clickTimeout);\r\n clickTimeout = window.setTimeout(() => {\r\n // 处理背景激活逻辑\r\n activeRowBackground(event);\r\n // 处理单击事件业务\r\n onClick();\r\n // 回传数据 自定义单击后的业务\r\n click?.(record, index);\r\n }, 200);\r\n }, // 点击行\r\n onDblclick: () => {\r\n clearTimeout(clickTimeout);\r\n // 回传数据 自定义单击后的业务\r\n dbClick?.(record, index);\r\n }\r\n };\r\n };\r\n }\r\n\r\n function useRowSelection() {\r\n const rowSelection = ref<\r\n TableRowSelection<unknown> | undefined\r\n >(undefined);\r\n\r\n const {\r\n rowKey,\r\n config: { getCheckboxProps, selection } = {}\r\n } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (\r\n record,\r\n selected\r\n ) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected\r\n ? [data[rowKey]]\r\n : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => key !== data[rowKey]\r\n );\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onSelectAll = (\r\n selected: boolean,\r\n selectedRows: unknown[],\r\n changeRows: unknown[]\r\n ) => {\r\n const _ids = changeRows.map(\r\n (record: unknown) =>\r\n (record as { [key: string]: never })[rowKey]\r\n );\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(_ids)\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key as never)\r\n );\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n //TODO 这个方法在单选的时候 会出现异常bug,暂时不知道怎么解决\r\n const onChange = (\r\n rowKeys: Key[],\r\n selectedRows: unknown[]\r\n ) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<\r\n string,\r\n never\r\n >[];\r\n // 等于0 说明是取消全选,反之\r\n const selected = data.length !== 0;\r\n // 显式转换 _ids 的类型为 Key[]\r\n const _ids: Key[] = props.data.map(\r\n record =>\r\n (record as Record<string, unknown>)[\r\n rowKey\r\n ] as Key\r\n );\r\n\r\n // 更新 selectedRowKeys\r\n // selected 为true,说明是全选,那么rowKeys是权限后的数组ID,需要过滤掉selectedRowKeys里的不在id才进行添加,\r\n // 否则会出现,比如一开始选择了两条数据,然后再进行全选的话 会多出两个重复ID\r\n // selected 为false,说明是取消全选,那么需要从selectedRowKeys过滤掉 _ids的id\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(\r\n rowKeys.filter(\r\n (key: Key) =>\r\n !selectedRowKeys.value.includes(key)\r\n )\r\n )\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key)\r\n );\r\n console.log(\"onSelect\", selectedRowKeys.value);\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\r\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\r\n watch(\r\n () => props.keys,\r\n val => {\r\n selectedRowKeys.value = val;\r\n },\r\n {\r\n deep: true,\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => props.config?.selection,\r\n val => {\r\n if (val !== \"N\") {\r\n rowSelection.value = {\r\n selectedRowKeys: selectedRowKeys as never,\r\n onSelect,\r\n onSelectAll,\r\n fixed: true,\r\n columnTitle:\r\n selection === \"S\" ? \"选择\" : null,\r\n columnWidth: selection === \"S\" ? 60 : 40,\r\n getCheckboxProps: getCheckboxProps as never\r\n };\r\n } else {\r\n rowSelection.value = undefined;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return rowSelection;\r\n }\r\n\r\n return () => (\r\n <Flex vertical={true} ref={tableRef}>\r\n <Table\r\n {...attrs}\r\n loading={props.loading}\r\n size={props.size}\r\n bordered={props.bordered}\r\n dataSource={data.value}\r\n columns={columns.value}\r\n rowSelection={rowSelection.value}\r\n customRow={useCustomRow() as never}\r\n pagination={false}\r\n rowKey={props.rowKey}\r\n v-slots={tableSlots}\r\n scroll={{\r\n y: tableHeight.value,\r\n x: \"100%\",\r\n scrollToFirstRowOnChange: true\r\n }}\r\n />\r\n {pagination.value && (\r\n <div class={[paginationStyle, \"d-pagination\"]}>\r\n {\r\n <Pagination\r\n v-model:current={\r\n paginationConfig.value.current\r\n }\r\n v-model:pageSize={\r\n paginationConfig.value.pageSize\r\n }\r\n total={paginationConfig.value.total}\r\n disabled={props.loading}\r\n show-size-changer\r\n size={\"default\"}\r\n hide-on-single-page={\r\n paginationConfig.value.hideOnSinglePage\r\n }\r\n show-quick-jumper={\r\n paginationConfig.value.showQuickJumper\r\n }\r\n default-page-size={\r\n paginationConfig.value.defaultPageSize\r\n }\r\n page-size-options={\r\n paginationConfig.value.pageSizeOptions\r\n }\r\n show-total={\r\n paginationConfig.value.showTotal\r\n }\r\n onChange={onPaginationChange}\r\n showLessItems={true}\r\n ></Pagination>\r\n }\r\n </div>\r\n )}\r\n </Flex>\r\n );\r\n }\r\n});\r\n\r\nexport const useEleHeight = (node: Element) => {\r\n const list = [\r\n \"margin-top\",\r\n \"margin-bottom\",\r\n \"border-top\",\r\n \"border-bottom\",\r\n \"padding-top\",\r\n \"padding-bottom\",\r\n \"height\"\r\n ];\r\n const style = getComputedStyle(node);\r\n return list\r\n .map(k => parseInt(style.getPropertyValue(k), 10))\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n });\r\n};\r\n\r\nexport default DTable;\r\n"],"names":["tableProps","height","type","Number","default","data","Array","loading","Boolean","rowKey","String","bordered","size","keys","config","Object","required","defaultPaginationProps","defaultPageSize","disabled","hideOnSinglePage","pageSize","pageSizeOptions","responsive","showLessItems","showQuickJumper","showSizeChanger","showTotal","total","simple","defaultConfig","columns","pagination","undefined","paginationConfig","activeRowClass","selection","keepSelected","paginationStyle","css","DTable","defineComponent","name","props","emits","setup","emit","slots","attrs","selectedRowKeys","ref","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","rowSelection","useRowSelection","onMounted","_config","computed","merge","value","bodyCell","params","summary","headerHeight","tableEl","watch","val","nextTick","_tableBodyHeight","immediate","$el","useEleHeight","getElementsByClassName","paginationEl","paginationHeight","style","marginBottom","summaryHeight","summaryEl","changePagination","position","page","scrollTop","length","useCustomRow","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","some","key","filter","push","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","concat","onSelectAll","selectedRows","changeRows","_ids","map","includes","onChange","rowKeys","console","log","deep","fixed","columnTitle","columnWidth","_createVNode","Flex","Table","_mergeProps","y","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}