@dt-frames/ui 1.0.11 → 1.0.15

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 (219) hide show
  1. package/es/components/curd/src/components/dialog.d.ts +34 -25
  2. package/es/components/curd/src/components/props.d.ts +6 -5
  3. package/es/components/curd/src/hooks/useCurd.d.ts +1 -0
  4. package/es/components/curd/src/types/curd.type.d.ts +4 -3
  5. package/es/components/forms/src/components/formButton.d.ts +1 -2
  6. package/es/components/forms/src/components/formIcon.d.ts +16 -11
  7. package/es/components/forms/src/components/formInputUseDialog.d.ts +903 -0
  8. package/es/components/forms/src/hooks/useFormActions.d.ts +2 -2
  9. package/es/components/forms/src/index.d.ts +2 -2
  10. package/es/components/forms/src/types/form.type.d.ts +6 -18
  11. package/es/components/index.d.ts +2 -2
  12. package/es/components/modal/src/components/modal.d.ts +2 -2
  13. package/es/components/modal/src/components/modalFooter.d.ts +10 -5
  14. package/es/components/modal/src/index.d.ts +16 -11
  15. package/es/components/modal/src/props.d.ts +2 -1
  16. package/es/components/modal/src/types/modal.type.d.ts +4 -1
  17. package/es/components/source/src/hooks/useFetch.d.ts +1 -1
  18. package/es/components/table/src/hooks/useCustomRow.d.ts +19 -0
  19. package/es/components/table/src/hooks/useTable.d.ts +2 -2
  20. package/es/components/table/src/index.d.ts +24 -5
  21. package/es/components/table/src/props.d.ts +5 -2
  22. package/es/components/table/src/types/table.type.d.ts +2 -2
  23. package/es/components/tree/src/props.d.ts +8 -1
  24. package/es/components/upload/index.d.ts +1 -2
  25. package/es/components/upload/src/helper.d.ts +1 -0
  26. package/es/components/upload/src/index.d.ts +34 -11
  27. package/es/components/upload/src/props.d.ts +4 -1
  28. package/es/components/upload/src/upload.d.ts +42 -11
  29. package/es/index.js +356 -200
  30. package/es/style/components/forms/index.less +23 -0
  31. package/es/style/components/icons/index.less +1 -1
  32. package/es/style/components/upload/index.less +3 -11
  33. package/package.json +1 -10
  34. package/vite.config.js +10 -0
  35. package/src/assets/data/icons/actions.ts +0 -427
  36. package/src/assets/data/icons/code.ts +0 -10
  37. package/src/assets/data/icons/commuticate.ts +0 -190
  38. package/src/assets/data/icons/currency.ts +0 -46
  39. package/src/assets/data/icons/devices.ts +0 -128
  40. package/src/assets/data/icons/edit.ts +0 -165
  41. package/src/assets/data/icons/file.ts +0 -104
  42. package/src/assets/data/icons/math.ts +0 -53
  43. package/src/assets/data/icons/message.ts +0 -75
  44. package/src/assets/data/icons/navigate.ts +0 -181
  45. package/src/assets/data/icons/other.ts +0 -333
  46. package/src/assets/data/icons.ts +0 -58
  47. package/src/assets/imgs/header/avatar.png +0 -0
  48. package/src/assets/imgs/logo/logo.png +0 -0
  49. package/src/assets/locales/en_US.json +0 -3
  50. package/src/assets/locales/zh_CN.json +0 -3
  51. package/src/assets/style/index.less +0 -10
  52. package/src/assets/style/reset.less +0 -17
  53. package/src/components/container/index.less +0 -85
  54. package/src/components/container/index.ts +0 -8
  55. package/src/components/container/src/bar.ts +0 -107
  56. package/src/components/container/src/lazy-container.vue +0 -9
  57. package/src/components/container/src/scroll-bar.vue +0 -117
  58. package/src/components/container/src/scroll-container.vue +0 -61
  59. package/src/components/curd/index.ts +0 -5
  60. package/src/components/curd/src/components/dialog.vue +0 -73
  61. package/src/components/curd/src/components/props.ts +0 -32
  62. package/src/components/curd/src/hooks/useCurd.tsx +0 -87
  63. package/src/components/curd/src/types/curd.type.ts +0 -31
  64. package/src/components/excel/index.ts +0 -6
  65. package/src/components/excel/src/export2Excel.ts +0 -44
  66. package/src/components/forms/index.less +0 -84
  67. package/src/components/forms/index.ts +0 -11
  68. package/src/components/forms/src/componentMap.ts +0 -44
  69. package/src/components/forms/src/components/formButton.vue +0 -150
  70. package/src/components/forms/src/components/formIcon.vue +0 -51
  71. package/src/components/forms/src/components/formItem.vue +0 -420
  72. package/src/components/forms/src/components/radioButton.vue +0 -58
  73. package/src/components/forms/src/const/form.const.ts +0 -7
  74. package/src/components/forms/src/hooks/helper.ts +0 -70
  75. package/src/components/forms/src/hooks/useForm.ts +0 -130
  76. package/src/components/forms/src/hooks/useFormActions.ts +0 -63
  77. package/src/components/forms/src/hooks/useFormEvents.ts +0 -248
  78. package/src/components/forms/src/hooks/useFormValue.ts +0 -49
  79. package/src/components/forms/src/hooks/useFormValues.ts +0 -131
  80. package/src/components/forms/src/hooks/useLabelWidth.ts +0 -57
  81. package/src/components/forms/src/index.vue +0 -310
  82. package/src/components/forms/src/prop.ts +0 -80
  83. package/src/components/forms/src/types/form.type.ts +0 -269
  84. package/src/components/icons/index.less +0 -101
  85. package/src/components/icons/index.ts +0 -7
  86. package/src/components/icons/src/pick-icon.vue +0 -119
  87. package/src/components/icons/src/svg-icon.vue +0 -117
  88. package/src/components/iframe/index.less +0 -3
  89. package/src/components/iframe/index.ts +0 -5
  90. package/src/components/iframe/src/index.less +0 -3
  91. package/src/components/iframe/src/index.vue +0 -38
  92. package/src/components/index.ts +0 -54
  93. package/src/components/modal/index.less +0 -60
  94. package/src/components/modal/index.ts +0 -8
  95. package/src/components/modal/src/components/close-icon.vue +0 -46
  96. package/src/components/modal/src/components/modal-wrap.vue +0 -128
  97. package/src/components/modal/src/components/modal.tsx +0 -30
  98. package/src/components/modal/src/components/modalFooter.vue +0 -38
  99. package/src/components/modal/src/hooks/useDrag.ts +0 -107
  100. package/src/components/modal/src/hooks/useFullScreen.ts +0 -29
  101. package/src/components/modal/src/hooks/useModal.ts +0 -194
  102. package/src/components/modal/src/index.vue +0 -173
  103. package/src/components/modal/src/props.ts +0 -43
  104. package/src/components/modal/src/types/modal.type.ts +0 -27
  105. package/src/components/router/base-router.vue +0 -11
  106. package/src/components/router/index.ts +0 -3
  107. package/src/components/source/index.ts +0 -1
  108. package/src/components/source/src/hooks/useFetch.ts +0 -42
  109. package/src/components/source/src/hooks/usePage.ts +0 -3
  110. package/src/components/source/src/hooks/useSource.ts +0 -214
  111. package/src/components/source/src/index.ts +0 -5
  112. package/src/components/source/src/types/source.type.ts +0 -58
  113. package/src/components/source/src/types/table.type.ts +0 -8
  114. package/src/components/table/index.less +0 -179
  115. package/src/components/table/index.ts +0 -7
  116. package/src/components/table/src/components/TableActions.vue +0 -108
  117. package/src/components/table/src/components/TableHeader.vue +0 -78
  118. package/src/components/table/src/components/TableRender.vue +0 -76
  119. package/src/components/table/src/components/editable/CellComponent.ts +0 -57
  120. package/src/components/table/src/components/editable/EditTableCell.vue +0 -181
  121. package/src/components/table/src/components/editable/componentMap.ts +0 -18
  122. package/src/components/table/src/components/editable/index.ts +0 -58
  123. package/src/components/table/src/components/setting/Column.vue +0 -354
  124. package/src/components/table/src/components/setting/Download.vue +0 -55
  125. package/src/components/table/src/components/setting/Fullscreen.vue +0 -43
  126. package/src/components/table/src/components/setting/Size.vue +0 -42
  127. package/src/components/table/src/components/setting/index.vue +0 -64
  128. package/src/components/table/src/const.ts +0 -13
  129. package/src/components/table/src/hooks/useColumns.ts +0 -326
  130. package/src/components/table/src/hooks/useCustomRow.ts +0 -0
  131. package/src/components/table/src/hooks/useDataSource.ts +0 -97
  132. package/src/components/table/src/hooks/useHeaderCode.ts +0 -89
  133. package/src/components/table/src/hooks/useLoading.ts +0 -29
  134. package/src/components/table/src/hooks/usePagination.ts +0 -76
  135. package/src/components/table/src/hooks/useRowSelection.ts +0 -145
  136. package/src/components/table/src/hooks/useRows.ts +0 -30
  137. package/src/components/table/src/hooks/useTable.ts +0 -90
  138. package/src/components/table/src/hooks/useTableHeader.ts +0 -48
  139. package/src/components/table/src/hooks/useTableInstance.ts +0 -29
  140. package/src/components/table/src/hooks/useTableScroll.ts +0 -229
  141. package/src/components/table/src/index.vue +0 -200
  142. package/src/components/table/src/props.ts +0 -157
  143. package/src/components/table/src/types/table.type.ts +0 -160
  144. package/src/components/table/src/types/tableHeader.type.ts +0 -27
  145. package/src/components/tree/index.less +0 -41
  146. package/src/components/tree/index.ts +0 -5
  147. package/src/components/tree/src/components/TreeHeader.vue +0 -97
  148. package/src/components/tree/src/hooks/useTree.ts +0 -239
  149. package/src/components/tree/src/index.vue +0 -392
  150. package/src/components/tree/src/props.ts +0 -133
  151. package/src/components/tree/src/type/tree.ts +0 -105
  152. package/src/components/tree/src/utils/tree.ts +0 -73
  153. package/src/components/type.ts +0 -0
  154. package/src/components/upload/index.less +0 -43
  155. package/src/components/upload/index.ts +0 -7
  156. package/src/components/upload/src/helper.ts +0 -32
  157. package/src/components/upload/src/index.vue +0 -38
  158. package/src/components/upload/src/props.ts +0 -48
  159. package/src/components/upload/src/upload.vue +0 -166
  160. package/src/directives/icon.ts +0 -36
  161. package/src/directives/index.ts +0 -26
  162. package/src/directives/permission.ts +0 -20
  163. package/src/global.d.ts +0 -8
  164. package/src/index.ts +0 -4
  165. package/src/theme/content/index.vue +0 -37
  166. package/src/theme/feature/back-top.vue +0 -11
  167. package/src/theme/feature/index.vue +0 -7
  168. package/src/theme/footer/index.less +0 -16
  169. package/src/theme/footer/index.vue +0 -24
  170. package/src/theme/header/components/bread-crumb.vue +0 -26
  171. package/src/theme/header/components/fullscreen.vue +0 -12
  172. package/src/theme/header/components/handler.ts +0 -81
  173. package/src/theme/header/components/index.ts +0 -21
  174. package/src/theme/header/components/lang-picker.vue +0 -36
  175. package/src/theme/header/components/logo.vue +0 -35
  176. package/src/theme/header/components/menu-search.vue +0 -62
  177. package/src/theme/header/components/notify.vue +0 -22
  178. package/src/theme/header/components/setting-theme.vue +0 -123
  179. package/src/theme/header/components/theme-drawer/enum.ts +0 -12
  180. package/src/theme/header/components/theme-drawer/feature.vue +0 -75
  181. package/src/theme/header/components/theme-drawer/index.ts +0 -7
  182. package/src/theme/header/components/theme-drawer/menu-type.vue +0 -40
  183. package/src/theme/header/components/theme-drawer/select-item.vue +0 -46
  184. package/src/theme/header/components/theme-drawer/switch-item.vue +0 -39
  185. package/src/theme/header/components/theme-drawer/theme-color.vue +0 -26
  186. package/src/theme/header/components/trigger.vue +0 -14
  187. package/src/theme/header/components/user-info.vue +0 -60
  188. package/src/theme/header/const/index.ts +0 -40
  189. package/src/theme/header/helper/menu-tree.ts +0 -64
  190. package/src/theme/header/index.less +0 -442
  191. package/src/theme/header/index.ts +0 -0
  192. package/src/theme/header/index.vue +0 -96
  193. package/src/theme/header/multiple-header.vue +0 -67
  194. package/src/theme/header/set-theme.less +0 -68
  195. package/src/theme/index.ts +0 -3
  196. package/src/theme/sider/components/basic-menu/basic-menu-item.vue +0 -14
  197. package/src/theme/sider/components/basic-menu/basic-menu.vue +0 -122
  198. package/src/theme/sider/components/basic-menu/basic-sub-menu-item.vue +0 -46
  199. package/src/theme/sider/components/basic-menu/menu-item-content.vue +0 -13
  200. package/src/theme/sider/components/drag-bar.vue +0 -26
  201. package/src/theme/sider/components/layout-menu.vue +0 -132
  202. package/src/theme/sider/components/props.ts +0 -97
  203. package/src/theme/sider/components/sider-trigger.vue +0 -24
  204. package/src/theme/sider/helper/sider.ts +0 -52
  205. package/src/theme/sider/helper/split-menu.ts +0 -146
  206. package/src/theme/sider/hooks/useDragLine.ts +0 -86
  207. package/src/theme/sider/hooks/useOpenKeys.ts +0 -57
  208. package/src/theme/sider/index.less +0 -203
  209. package/src/theme/sider/index.vue +0 -88
  210. package/src/theme/tabs/components/TabContent.vue +0 -36
  211. package/src/theme/tabs/components/TabRedo.vue +0 -18
  212. package/src/theme/tabs/hooks/useMultifyTabs.ts +0 -96
  213. package/src/theme/tabs/hooks/useTabDropdown.ts +0 -89
  214. package/src/theme/tabs/index.less +0 -165
  215. package/src/theme/tabs/index.vue +0 -98
  216. package/src/theme/tabs/types/tabs.type.ts +0 -8
  217. package/src/theme/theme.less +0 -67
  218. package/src/theme/theme.vue +0 -90
  219. package/src/theme/transition.less +0 -99
@@ -1,122 +0,0 @@
1
- <template>
2
- <Menu
3
- :theme="theme"
4
- :selectedKeys="menuState.selectedKeys"
5
- :defaultSelectedKeys="menuState.defaultSelectedKeys"
6
- :openKeys="menuState.openKeys"
7
- :inlineIndent="inlineIndent"
8
- :subMenuOpenDelay="0.2"
9
- :mode="mode"
10
- collapsible
11
- @click="handleMenuClick"
12
- @open-change="handleOpenChange"
13
- :collapsed="getInlineCollapsed"
14
- >
15
- <template v-for="item in items" :key="item.id">
16
- <BasicSubMenuItem :item="item" :theme="theme" :isHorizontal="isHorizontal" />
17
- </template>
18
- </Menu>
19
- </template>
20
-
21
- <script setup lang="ts">
22
- import { isFunction, MenuMode, useMenu } from '@dt-frames/core';
23
- import { Menu } from 'ant-design-vue';
24
- import { computed, ref, unref, VNodeChild, watch, reactive, toRefs } from 'vue';
25
- import { useRouter } from 'vue-router';
26
- import { getBreadCrumb } from '../../../header/helper/menu-tree';
27
- import { BasicMenu } from '../props';
28
- import BasicSubMenuItem from './basic-sub-menu-item.vue'
29
- import { MenuState, useOpenKeys } from '../../hooks/useOpenKeys'
30
-
31
- type MenuInfo = {
32
- key: string;
33
- keyPath: string[]
34
- item: VNodeChild
35
- }
36
-
37
- const {
38
- theme,
39
- items,
40
- mode,
41
- type,
42
- isHorizontal,
43
- inlineIndent,
44
- mixSider,
45
- beforeClickFn
46
- } = defineProps( BasicMenu );
47
-
48
- const { getSplit } = useMenu()
49
-
50
- const { currentRoute } = useRouter();
51
-
52
- const menuState = reactive<MenuState>({
53
- defaultSelectedKeys: [],
54
- openKeys: [],
55
- selectedKeys: [],
56
- collapsedOpenKeys: []
57
- })
58
-
59
- const { handleOpenChange, setOpenKeys, getOpenKeys } = useOpenKeys(
60
- menuState,
61
- items,
62
- type
63
- )
64
-
65
- watch(
66
- () => currentRoute.value.path,
67
- (val) => {
68
- if( val === '/' ) return;
69
- handleMenuChange(val)
70
- },
71
- {
72
- immediate: true
73
- }
74
- )
75
-
76
- async function handleMenuChange(path) {
77
- // 设置展开的节点
78
- setOpenKeys(path)
79
-
80
- // 定义选中的节点
81
- if (isHorizontal && unref(getSplit)) {
82
- console.log(items, path)
83
- const parentPath = await getBreadCrumb(path, items);
84
- // console.log(parentPath, '-------------', route)
85
- // menuState.selectedKeys = [parentPath];
86
- } else {
87
- const parentPaths = await getBreadCrumb(path);
88
-
89
- menuState.selectedKeys = parentPaths.reduce( (keys, it) => {
90
- it.url && keys.push( it.url )
91
- return keys
92
- }, [] )
93
- }
94
-
95
- }
96
-
97
-
98
- const emits = defineEmits(['menuClick'])
99
-
100
- const { getCollapsed } = useMenu();
101
- const getInlineCollapsed = computed( () => {
102
- const isInline = unref(mode) === MenuMode.INLINE;
103
-
104
- if (isInline) {
105
- return mixSider ? false : unref(getCollapsed);
106
- }
107
-
108
- return false;
109
-
110
- } )
111
-
112
- async function handleMenuClick(item: MenuInfo) {
113
- if (beforeClickFn && isFunction(beforeClickFn)) {
114
- const flag = await beforeClickFn(item.key);
115
- if (!flag) return;
116
- }
117
-
118
- emits('menuClick', item.key);
119
-
120
- menuState.selectedKeys = [item.key];
121
- }
122
- </script>
@@ -1,46 +0,0 @@
1
- <template>
2
- <!-- 没有子节点 -->
3
- <BasicMenuItem v-if="!menuHasChildren(item) && getShowMenu" v-bind="props"/>
4
-
5
- <!-- 有子节点 -->
6
- <SubMenu
7
- v-if="menuHasChildren(item) && getShowMenu"
8
- :class="[ theme ]"
9
- :key="item.id"
10
- popupClassName="app-top-menu-popup"
11
- >
12
- <template #title>
13
- <MenuItemContent
14
- v-bind="props"
15
- :item="item" />
16
- </template>
17
-
18
- <template v-for="childrenItem in item.children" :key="childrenItem.id">
19
- <BasicSubMenuItem v-bind="props" :item="childrenItem" />
20
- </template>
21
- </SubMenu>
22
- </template>
23
-
24
- <script setup lang="ts">
25
- import { SubMenu } from 'ant-design-vue';
26
- import { useMenu } from '@dt-frames/core';
27
- import BasicMenuItem from './basic-menu-item.vue';
28
- import MenuItemContent from './menu-item-content.vue';
29
- import { ItemProp } from '../props';
30
-
31
-
32
- const { getShowMenu } = useMenu();
33
-
34
- const props = defineProps(ItemProp);
35
- const {
36
- theme,
37
- item,
38
- showTitle,
39
- isHorizontal
40
- } = props;
41
-
42
-
43
- const menuHasChildren = ( menu: any ) => {
44
- return !!menu.children && menu.children.length > 0;
45
- }
46
- </script>
@@ -1,13 +0,0 @@
1
- <template>
2
- <span class="dt-basic-menu-item-content-flex items-center dt-menu-item">
3
- <span class="menu-icon" v-icon="item.icon" :fontSize="16"></span>
4
- {{ item.label }}
5
- </span>
6
- </template>
7
-
8
- <script setup lang="ts">
9
- import { contentProps } from "../props";
10
-
11
- const props = defineProps( contentProps );
12
-
13
- </script>
@@ -1,26 +0,0 @@
1
- <template>
2
- <div :class="getClass" :style="getDragBarStyle"></div>
3
- </template>
4
-
5
- <script lang="ts" setup>
6
- import { computed, unref } from 'vue'
7
- import { useMenu } from '@dt-frames/core';
8
-
9
- const { getMiniWidthNumber, getCollapsed, getCanDrag } = useMenu()
10
-
11
- const getDragBarStyle = computed(() => {
12
- if( unref(getCollapsed) ) {
13
- return { left: `${unref(getMiniWidthNumber)}px` }
14
- }
15
- return {}
16
- })
17
-
18
- const getClass = computed(() => {
19
- return [
20
- 'dt-darg-bar',
21
- {
22
- 'dt-darg-bar--hide': !unref(getCanDrag)
23
- }
24
- ]
25
- })
26
- </script>
@@ -1,132 +0,0 @@
1
-
2
-
3
- <script lang="tsx">
4
- import { computed, defineComponent, toRef, unref } from "vue"
5
- import { isUrl, MenuSplitTye, useMenu, useTheme, openWindow, useGo } from "@dt-frames/core"
6
- import { useSplitMenu } from "../helper/split-menu"
7
- import { DtLogo } from "../../header/components";
8
- import BasicMenu from './basic-menu/basic-menu.vue'
9
- import { ScrollContainer } from "../../../components/container";
10
-
11
-
12
- export default defineComponent({
13
- name: 'LayoutMenu',
14
-
15
- props: {
16
- theme: String,
17
- splitType: {
18
- type: Number,
19
- default: MenuSplitTye.NONE,
20
- },
21
- isHorizontal: Boolean,
22
- menuMode: String
23
- },
24
-
25
- setup(props) {
26
- const {
27
- getMenuType,
28
- getMenuMode,
29
- getMenuTheme,
30
- getCollapsed,
31
- getCollapsedShowTitle,
32
- getIsHorizontal,
33
- getIsSidebarType,
34
- getSplit
35
- } = useMenu();
36
-
37
- const { getShowLogo } = useTheme();
38
-
39
- const { menusRef } = useSplitMenu( toRef(props, 'splitType') );
40
-
41
- // 菜单的相关属性
42
- const getComputedTheme = computed( () => props.theme || unref( getMenuTheme ) );
43
- const getComputedMenuMode = computed(() => props.menuMode || unref(getMenuMode) );
44
- const getIsShowLogo = computed(() => unref(getShowLogo) && unref(getIsSidebarType));
45
-
46
- const getUseScroll = computed(() => {
47
- return (
48
- !unref(getIsHorizontal) &&
49
- (unref(getIsSidebarType) ||
50
- props.splitType === MenuSplitTye.LEFT ||
51
- props.splitType === MenuSplitTye.NONE)
52
- );
53
- });
54
-
55
- const getLogoClass = computed(() => [ `dt-menu-logo`, unref(getComputedTheme) ]);
56
-
57
- const getMenuProps = computed( () => {
58
- const menus = unref( menusRef );
59
-
60
- return {
61
- menus,
62
- beforeClickFn: beforeMenuClickFn,
63
- items: menus,
64
- theme: unref( getComputedTheme ),
65
- collapse: unref( getCollapsed ),
66
- collapsedShowTitle: unref( getCollapsedShowTitle ),
67
- onMenuClick: handleMenuClick,
68
- }
69
- } );
70
-
71
- // 跳转到指定页面
72
- const go = useGo();
73
-
74
- // 跳转之前需要做检测,部分系统需要跳转到第三方系统
75
- function beforeMenuClickFn( path: string ) {
76
- if (!isUrl(path)) {
77
- return true;
78
- }
79
-
80
- openWindow(path);
81
- return false;
82
- }
83
-
84
- // 按钮点击事件
85
- function handleMenuClick( path: string ) {
86
- go(path);
87
- }
88
-
89
-
90
- function renderHeader() {
91
- if( !unref(getIsShowLogo) ) return null;
92
-
93
- return (
94
- <DtLogo
95
- showTitle={!unref(getCollapsed)}
96
- class={unref(getLogoClass)}
97
- theme={unref(getComputedTheme) as string}
98
- />
99
- )
100
- }
101
-
102
- function renderMenu( ) {
103
- const { menus, ...menuProps } = unref( getMenuProps );
104
-
105
- if (!menus || !menus.length) return null;
106
-
107
- return <BasicMenu
108
- {...(menuProps as any)}
109
- isHorizontal={props.isHorizontal}
110
- type={unref(getMenuType)}
111
- showLogo={unref(getIsShowLogo)}
112
- mode={unref(getComputedMenuMode as any)}
113
- items={menus}
114
- ></BasicMenu>
115
- }
116
-
117
- return () => {
118
- return (
119
- <>
120
- { (renderHeader()) }
121
- {unref(getUseScroll) ? (
122
- <ScrollContainer>{() => renderMenu()}</ScrollContainer>
123
- ) : (
124
- renderMenu()
125
- )}
126
- </>
127
- )
128
- }
129
-
130
- }
131
- })
132
- </script>
@@ -1,97 +0,0 @@
1
-
2
- import { MenuTheme } from "ant-design-vue";
3
- import { PropType } from "vue";
4
- import { MenuMode, Menus, MenuType, Theme } from "@dt-frames/core";
5
-
6
- export const BasicMenu = {
7
- // 菜单
8
- items: {
9
- type: Array as PropType<Menus[]>
10
- },
11
-
12
- // 折叠是否显示标题
13
- collapsedShowTitle: Boolean,
14
-
15
- inlineIndent: {
16
- default: 20
17
- },
18
-
19
- // 菜单组件的mode属性
20
- mode: {
21
- type: String as PropType<MenuMode>,
22
- default: MenuMode.INLINE
23
- },
24
-
25
- // 菜单类型
26
- type: {
27
- type: String,
28
- default: MenuType.SIDE
29
- },
30
-
31
- // 主题
32
- theme: {
33
- default: Theme.DARK,
34
- },
35
-
36
- inlineCollapsed: Boolean,
37
-
38
- isHorizontal: Boolean,
39
-
40
- beforeClickFn: {
41
- type: Function
42
- },
43
-
44
- mixSider: Boolean
45
- }
46
-
47
- export const ItemProp = {
48
- item: {
49
- type: Object,
50
- default: {}
51
- },
52
-
53
- theme: {
54
- type: String as PropType<MenuTheme>,
55
- default: Theme.DARK
56
- },
57
-
58
- isHorizontal: Boolean,
59
-
60
- showTitle: Boolean,
61
-
62
- beforeClickFn: {
63
- type: Function
64
- }
65
- }
66
-
67
- export const contentProps = {
68
- item: {
69
- type: Object,
70
- default: {},
71
- },
72
-
73
- showTitle: Boolean,
74
-
75
- level: Number,
76
-
77
- isHorizontal: Boolean
78
- };
79
-
80
- export const SimpleMenu = {
81
- // 菜单
82
- items: {
83
- type: Array as PropType<MenuType[]>,
84
- default: (): any[] => []
85
- },
86
-
87
- collapse: Boolean,
88
- mixSider: Boolean,
89
- theme: {
90
- default: Theme.DARK
91
- },
92
- collapsedShowTitle: Boolean,
93
- beforeClickFn: {
94
- type: Function
95
- },
96
- isSplitMenu: Boolean
97
- }
@@ -1,24 +0,0 @@
1
- <template>
2
- <div @click.stop="toggleCollapsed">
3
- <DtIcon icon-class="ant-design:double-right-outlined" v-if="getCollapsed" />
4
- <DtIcon icon-class="ant-design:double-left-outlined" v-else />
5
- </div>
6
- </template>
7
-
8
- <script setup lang="ts">
9
- import { useMenu } from '@dt-frames/core';
10
- import { DtIcon } from '../../../components';
11
-
12
-
13
- const { getCollapsed, toggleCollapsed } = useMenu();
14
-
15
- const props = defineProps({
16
- type: {
17
- type: String,
18
- default: null
19
- }
20
- })
21
-
22
-
23
-
24
- </script>
@@ -1,52 +0,0 @@
1
- /**
2
- * 这是layout-sider相关的业务处理
3
- * 函数命名已use开头
4
- */
5
-
6
- import { MenuTriggerPos, useMenu } from "@dt-frames/core";
7
- import { computed, h, ref, unref } from "vue";
8
- import Trigger from '../components/sider-trigger.vue'
9
-
10
-
11
- // 菜单展开折叠切换
12
- export function useMenuSwitch() {
13
- const brokenRef = ref( false );
14
-
15
- const { getMiniWidthNumber } = useMenu();
16
-
17
- const getCollapsedWidth = computed( () => {
18
- return unref( brokenRef ) ? 0 : unref( getMiniWidthNumber );
19
- } );
20
-
21
- function onBreakPointChange( broken: boolean ) {
22
- brokenRef.value = broken;
23
- }
24
-
25
- return { getCollapsedWidth, onBreakPointChange };
26
- }
27
-
28
-
29
- // 处理菜单展开折叠按钮
30
- export function useTrigger() {
31
- const { getTrigger, getSplit } = useMenu();
32
-
33
- const getShowTrigger = computed(() => {
34
- const trigger = unref(getTrigger) as unknown as String;
35
-
36
- return trigger && unref( getSplit )
37
- });
38
-
39
- const getTriggerAttr = computed(() => {
40
- if( unref(getShowTrigger) ) {
41
- return { }
42
- }
43
-
44
- return {
45
- trigger: null
46
- }
47
- });
48
-
49
- return { getTriggerAttr, getShowTrigger };
50
- }
51
-
52
-
@@ -1,146 +0,0 @@
1
- /** ======================================================
2
- * 菜单分割管理
3
- * ======================================================*/
4
-
5
- import { ref, computed, unref, watch, Ref } from "vue";
6
- import { useRouter } from "vue-router";
7
- import { useThrottleFn } from '@vueuse/core';
8
- import { CacheKey, DtCache, Menus, MenuSplitTye, useAuthStore, useMenu } from "@dt-frames/core";
9
-
10
- type MenusMap = {
11
- parentPath?: string,
12
- children?: MenusMap[] | undefined,
13
- includesPath?: string[]
14
- }
15
-
16
- export function useSplitMenu( splitType: Ref<MenuSplitTye> ) {
17
- const menusRef = ref<MenusMap[]>([]);
18
- const { currentRoute } = useRouter();
19
-
20
-
21
- const { getIsHorizontal, getSplit } = useMenu();
22
-
23
- const throttleHandleSplitLeftMenu = useThrottleFn(handleSplitLeftMenu, 50);
24
-
25
- const splitNotLeft = computed(
26
- () => unref(splitType) !== MenuSplitTye.LEFT && !unref(getIsHorizontal),
27
- );
28
-
29
- const getSplitLeft = computed(
30
- () => !unref( getSplit ) || unref(splitType) !== MenuSplitTye.LEFT
31
- );
32
-
33
- const getSplitTop = computed(
34
- () => unref( splitType ) === MenuSplitTye.TOP
35
- );
36
-
37
- const normalType = computed(
38
- () => !unref( getSplit ) || unref(splitType) === MenuSplitTye.NONE
39
- );
40
-
41
- watch(
42
- [() => (unref(currentRoute) as any).path, () => unref(splitType)],
43
- async ([path]) => {
44
- if (unref(splitNotLeft)) return;
45
-
46
- throttleHandleSplitLeftMenu(path);
47
- },
48
- {
49
- immediate: true,
50
- },
51
- )
52
-
53
- watch(
54
- () => getSplit.value,
55
- () => {
56
- if (unref(splitNotLeft)) return;
57
- getMenus();
58
- },
59
- );
60
-
61
- async function handleSplitLeftMenu(path: string) {
62
- if (unref(getSplitLeft)) return;
63
- const { menusMap } = await getMenusMap();
64
-
65
- menusRef.value = menusMap.filter( it => it.includesPath.includes(path) )[0]?.children
66
- }
67
-
68
- async function getMenus() {
69
- if (unref(normalType)) {
70
- menusRef.value = DtCache.getLocal(CacheKey.MENUS)?.children
71
- return;
72
- }
73
-
74
- if (unref(getSplitTop)) {
75
- const shallowMenus = await getShallowMenus();
76
-
77
- menusRef.value = shallowMenus;
78
- return;
79
- }
80
- }
81
-
82
- getMenus();
83
-
84
- return { menusRef };
85
- }
86
-
87
-
88
- async function getMenus() { return DtCache.getLocal(CacheKey.MENUS)?.children }
89
-
90
- function getFirstMenuPath(item: Menus) {
91
- let isFind = false, path = ''
92
-
93
- const getPath = (menu: Menus) => {
94
- if( isFind ) return
95
-
96
- if( menu.children && menu.children.length ) {
97
- menu.children.forEach( node => getPath( node ) )
98
- } else {
99
- path = menu.url
100
- isFind = true
101
- }
102
- }
103
-
104
- getPath(item)
105
-
106
- return path
107
- }
108
-
109
- // 获取菜单地图
110
- async function getMenusMap() {
111
- const menus = await getMenus();
112
- const menusMap: MenusMap[] = [];
113
-
114
- const getPaths = ( menu: Menus, path: string[] ) => {
115
- if( menu.children && menu.children.length ) {
116
- menu.children.forEach( node => getPaths( node, path ) )
117
- } else {
118
- path.push( menu.url )
119
- }
120
-
121
- return path;
122
- }
123
-
124
- menus.map((item: Menus) => {
125
- item.url = getFirstMenuPath(item);
126
-
127
- menusMap.push({
128
- parentPath: item.url,
129
- children: item.children || [],
130
- includesPath: getPaths( item, [] )
131
- })
132
- });
133
-
134
- return { menusMap };
135
- }
136
-
137
-
138
- export async function getShallowMenus() {
139
- const menus = await getMenus();
140
-
141
- const shallowMenuList = menus.map((item: Menus) => {
142
- item.url = getFirstMenuPath(item);
143
- return { ...item, children: undefined } as any
144
- });
145
- return shallowMenuList;
146
- }