@dt-frames/ui 1.0.13 → 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 (208) hide show
  1. package/es/components/curd/src/components/dialog.d.ts +20 -20
  2. package/es/components/curd/src/components/props.d.ts +2 -1
  3. package/es/components/curd/src/hooks/useCurd.d.ts +1 -0
  4. package/es/components/curd/src/types/curd.type.d.ts +2 -2
  5. package/es/components/forms/src/components/formButton.d.ts +1 -2
  6. package/es/components/forms/src/components/formIcon.d.ts +15 -15
  7. package/es/components/forms/src/hooks/useFormActions.d.ts +2 -2
  8. package/es/components/forms/src/index.d.ts +2 -2
  9. package/es/components/forms/src/types/form.type.d.ts +3 -17
  10. package/es/components/index.d.ts +1 -1
  11. package/es/components/modal/src/components/modal.d.ts +2 -2
  12. package/es/components/modal/src/components/modalFooter.d.ts +1 -1
  13. package/es/components/modal/src/index.d.ts +15 -15
  14. package/es/components/modal/src/props.d.ts +1 -1
  15. package/es/components/source/src/hooks/useFetch.d.ts +1 -1
  16. package/es/components/table/src/index.d.ts +3 -3
  17. package/es/components/table/src/props.d.ts +1 -2
  18. package/es/components/tree/src/props.d.ts +8 -1
  19. package/es/components/upload/src/upload.d.ts +3 -3
  20. package/es/index.js +43 -19
  21. package/es/style/components/icons/index.less +1 -1
  22. package/package.json +1 -10
  23. package/vite.config.js +10 -0
  24. package/src/assets/data/icons/actions.ts +0 -427
  25. package/src/assets/data/icons/code.ts +0 -10
  26. package/src/assets/data/icons/commuticate.ts +0 -190
  27. package/src/assets/data/icons/currency.ts +0 -46
  28. package/src/assets/data/icons/devices.ts +0 -128
  29. package/src/assets/data/icons/edit.ts +0 -165
  30. package/src/assets/data/icons/file.ts +0 -104
  31. package/src/assets/data/icons/math.ts +0 -53
  32. package/src/assets/data/icons/message.ts +0 -75
  33. package/src/assets/data/icons/navigate.ts +0 -181
  34. package/src/assets/data/icons/other.ts +0 -333
  35. package/src/assets/data/icons.ts +0 -58
  36. package/src/assets/imgs/header/avatar.png +0 -0
  37. package/src/assets/imgs/logo/logo.png +0 -0
  38. package/src/assets/locales/en_US.json +0 -3
  39. package/src/assets/locales/zh_CN.json +0 -3
  40. package/src/assets/style/index.less +0 -10
  41. package/src/assets/style/reset.less +0 -17
  42. package/src/components/container/index.less +0 -85
  43. package/src/components/container/index.ts +0 -8
  44. package/src/components/container/src/bar.ts +0 -107
  45. package/src/components/container/src/lazy-container.vue +0 -9
  46. package/src/components/container/src/scroll-bar.vue +0 -117
  47. package/src/components/container/src/scroll-container.vue +0 -61
  48. package/src/components/curd/index.ts +0 -5
  49. package/src/components/curd/src/components/dialog.vue +0 -73
  50. package/src/components/curd/src/components/props.ts +0 -32
  51. package/src/components/curd/src/hooks/useCurd.tsx +0 -87
  52. package/src/components/curd/src/types/curd.type.ts +0 -32
  53. package/src/components/excel/index.ts +0 -6
  54. package/src/components/excel/src/export2Excel.ts +0 -44
  55. package/src/components/forms/index.less +0 -107
  56. package/src/components/forms/index.ts +0 -11
  57. package/src/components/forms/src/componentMap.ts +0 -46
  58. package/src/components/forms/src/components/formButton.vue +0 -150
  59. package/src/components/forms/src/components/formIcon.vue +0 -51
  60. package/src/components/forms/src/components/formInputUseDialog.vue +0 -43
  61. package/src/components/forms/src/components/formItem.vue +0 -420
  62. package/src/components/forms/src/components/radioButton.vue +0 -58
  63. package/src/components/forms/src/const/form.const.ts +0 -7
  64. package/src/components/forms/src/hooks/helper.ts +0 -70
  65. package/src/components/forms/src/hooks/useForm.ts +0 -130
  66. package/src/components/forms/src/hooks/useFormActions.ts +0 -63
  67. package/src/components/forms/src/hooks/useFormEvents.ts +0 -248
  68. package/src/components/forms/src/hooks/useFormValue.ts +0 -49
  69. package/src/components/forms/src/hooks/useFormValues.ts +0 -131
  70. package/src/components/forms/src/hooks/useLabelWidth.ts +0 -57
  71. package/src/components/forms/src/index.vue +0 -310
  72. package/src/components/forms/src/prop.ts +0 -80
  73. package/src/components/forms/src/types/form.type.ts +0 -275
  74. package/src/components/icons/index.less +0 -101
  75. package/src/components/icons/index.ts +0 -7
  76. package/src/components/icons/src/pick-icon.vue +0 -119
  77. package/src/components/icons/src/svg-icon.vue +0 -117
  78. package/src/components/iframe/index.less +0 -3
  79. package/src/components/iframe/index.ts +0 -5
  80. package/src/components/iframe/src/index.less +0 -3
  81. package/src/components/iframe/src/index.vue +0 -38
  82. package/src/components/index.ts +0 -53
  83. package/src/components/modal/index.less +0 -60
  84. package/src/components/modal/index.ts +0 -8
  85. package/src/components/modal/src/components/close-icon.vue +0 -46
  86. package/src/components/modal/src/components/modal-wrap.vue +0 -128
  87. package/src/components/modal/src/components/modal.tsx +0 -30
  88. package/src/components/modal/src/components/modalFooter.vue +0 -46
  89. package/src/components/modal/src/hooks/useDrag.ts +0 -107
  90. package/src/components/modal/src/hooks/useFullScreen.ts +0 -29
  91. package/src/components/modal/src/hooks/useModal.ts +0 -200
  92. package/src/components/modal/src/index.vue +0 -184
  93. package/src/components/modal/src/props.ts +0 -44
  94. package/src/components/modal/src/types/modal.type.ts +0 -30
  95. package/src/components/router/base-router.vue +0 -11
  96. package/src/components/router/index.ts +0 -3
  97. package/src/components/source/index.ts +0 -1
  98. package/src/components/source/src/hooks/useFetch.ts +0 -42
  99. package/src/components/source/src/hooks/usePage.ts +0 -3
  100. package/src/components/source/src/hooks/useSource.ts +0 -214
  101. package/src/components/source/src/index.ts +0 -5
  102. package/src/components/source/src/types/source.type.ts +0 -58
  103. package/src/components/source/src/types/table.type.ts +0 -8
  104. package/src/components/table/index.less +0 -179
  105. package/src/components/table/index.ts +0 -7
  106. package/src/components/table/src/components/TableActions.vue +0 -108
  107. package/src/components/table/src/components/TableHeader.vue +0 -78
  108. package/src/components/table/src/components/TableRender.vue +0 -76
  109. package/src/components/table/src/components/editable/CellComponent.ts +0 -57
  110. package/src/components/table/src/components/editable/EditTableCell.vue +0 -181
  111. package/src/components/table/src/components/editable/componentMap.ts +0 -18
  112. package/src/components/table/src/components/editable/index.ts +0 -58
  113. package/src/components/table/src/components/setting/Column.vue +0 -354
  114. package/src/components/table/src/components/setting/Download.vue +0 -55
  115. package/src/components/table/src/components/setting/Fullscreen.vue +0 -43
  116. package/src/components/table/src/components/setting/Size.vue +0 -42
  117. package/src/components/table/src/components/setting/index.vue +0 -64
  118. package/src/components/table/src/const.ts +0 -13
  119. package/src/components/table/src/hooks/useColumns.ts +0 -326
  120. package/src/components/table/src/hooks/useCustomRow.ts +0 -86
  121. package/src/components/table/src/hooks/useDataSource.ts +0 -97
  122. package/src/components/table/src/hooks/useHeaderCode.ts +0 -89
  123. package/src/components/table/src/hooks/useLoading.ts +0 -29
  124. package/src/components/table/src/hooks/usePagination.ts +0 -76
  125. package/src/components/table/src/hooks/useRowSelection.ts +0 -145
  126. package/src/components/table/src/hooks/useRows.ts +0 -30
  127. package/src/components/table/src/hooks/useTable.ts +0 -90
  128. package/src/components/table/src/hooks/useTableHeader.ts +0 -48
  129. package/src/components/table/src/hooks/useTableInstance.ts +0 -29
  130. package/src/components/table/src/hooks/useTableScroll.ts +0 -229
  131. package/src/components/table/src/index.vue +0 -212
  132. package/src/components/table/src/props.ts +0 -160
  133. package/src/components/table/src/types/table.type.ts +0 -160
  134. package/src/components/table/src/types/tableHeader.type.ts +0 -27
  135. package/src/components/tree/index.less +0 -41
  136. package/src/components/tree/index.ts +0 -5
  137. package/src/components/tree/src/components/TreeHeader.vue +0 -97
  138. package/src/components/tree/src/hooks/useTree.ts +0 -239
  139. package/src/components/tree/src/index.vue +0 -392
  140. package/src/components/tree/src/props.ts +0 -133
  141. package/src/components/tree/src/type/tree.ts +0 -105
  142. package/src/components/tree/src/utils/tree.ts +0 -73
  143. package/src/components/type.ts +0 -0
  144. package/src/components/upload/index.less +0 -35
  145. package/src/components/upload/index.ts +0 -5
  146. package/src/components/upload/src/helper.ts +0 -60
  147. package/src/components/upload/src/props.ts +0 -51
  148. package/src/components/upload/src/upload.vue +0 -191
  149. package/src/directives/icon.ts +0 -36
  150. package/src/directives/index.ts +0 -26
  151. package/src/directives/permission.ts +0 -20
  152. package/src/global.d.ts +0 -8
  153. package/src/index.ts +0 -4
  154. package/src/theme/content/index.vue +0 -37
  155. package/src/theme/feature/back-top.vue +0 -11
  156. package/src/theme/feature/index.vue +0 -7
  157. package/src/theme/footer/index.less +0 -16
  158. package/src/theme/footer/index.vue +0 -24
  159. package/src/theme/header/components/bread-crumb.vue +0 -26
  160. package/src/theme/header/components/fullscreen.vue +0 -12
  161. package/src/theme/header/components/handler.ts +0 -81
  162. package/src/theme/header/components/index.ts +0 -21
  163. package/src/theme/header/components/lang-picker.vue +0 -36
  164. package/src/theme/header/components/logo.vue +0 -35
  165. package/src/theme/header/components/menu-search.vue +0 -62
  166. package/src/theme/header/components/notify.vue +0 -22
  167. package/src/theme/header/components/setting-theme.vue +0 -123
  168. package/src/theme/header/components/theme-drawer/enum.ts +0 -12
  169. package/src/theme/header/components/theme-drawer/feature.vue +0 -75
  170. package/src/theme/header/components/theme-drawer/index.ts +0 -7
  171. package/src/theme/header/components/theme-drawer/menu-type.vue +0 -40
  172. package/src/theme/header/components/theme-drawer/select-item.vue +0 -46
  173. package/src/theme/header/components/theme-drawer/switch-item.vue +0 -39
  174. package/src/theme/header/components/theme-drawer/theme-color.vue +0 -26
  175. package/src/theme/header/components/trigger.vue +0 -14
  176. package/src/theme/header/components/user-info.vue +0 -60
  177. package/src/theme/header/const/index.ts +0 -40
  178. package/src/theme/header/helper/menu-tree.ts +0 -64
  179. package/src/theme/header/index.less +0 -442
  180. package/src/theme/header/index.ts +0 -0
  181. package/src/theme/header/index.vue +0 -96
  182. package/src/theme/header/multiple-header.vue +0 -67
  183. package/src/theme/header/set-theme.less +0 -68
  184. package/src/theme/index.ts +0 -3
  185. package/src/theme/sider/components/basic-menu/basic-menu-item.vue +0 -14
  186. package/src/theme/sider/components/basic-menu/basic-menu.vue +0 -122
  187. package/src/theme/sider/components/basic-menu/basic-sub-menu-item.vue +0 -46
  188. package/src/theme/sider/components/basic-menu/menu-item-content.vue +0 -13
  189. package/src/theme/sider/components/drag-bar.vue +0 -26
  190. package/src/theme/sider/components/layout-menu.vue +0 -132
  191. package/src/theme/sider/components/props.ts +0 -97
  192. package/src/theme/sider/components/sider-trigger.vue +0 -24
  193. package/src/theme/sider/helper/sider.ts +0 -52
  194. package/src/theme/sider/helper/split-menu.ts +0 -146
  195. package/src/theme/sider/hooks/useDragLine.ts +0 -86
  196. package/src/theme/sider/hooks/useOpenKeys.ts +0 -57
  197. package/src/theme/sider/index.less +0 -203
  198. package/src/theme/sider/index.vue +0 -88
  199. package/src/theme/tabs/components/TabContent.vue +0 -36
  200. package/src/theme/tabs/components/TabRedo.vue +0 -18
  201. package/src/theme/tabs/hooks/useMultifyTabs.ts +0 -96
  202. package/src/theme/tabs/hooks/useTabDropdown.ts +0 -89
  203. package/src/theme/tabs/index.less +0 -165
  204. package/src/theme/tabs/index.vue +0 -98
  205. package/src/theme/tabs/types/tabs.type.ts +0 -8
  206. package/src/theme/theme.less +0 -67
  207. package/src/theme/theme.vue +0 -90
  208. 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
- }