@gx-design-vue/create-gx-cli 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (257) hide show
  1. package/package.json +1 -1
  2. package/src/cli.js +1 -1
  3. package/src/main.js +4 -0
  4. package/template-design-pro/.editorconfig +0 -19
  5. package/template-design-pro/.env +0 -2
  6. package/template-design-pro/.env.development +0 -18
  7. package/template-design-pro/.env.pro +0 -32
  8. package/template-design-pro/.env.production +0 -32
  9. package/template-design-pro/.env.test +0 -20
  10. package/template-design-pro/.eslintignore +0 -16
  11. package/template-design-pro/.eslintrc.js +0 -64
  12. package/template-design-pro/.gitpod.yml +0 -6
  13. package/template-design-pro/.husky/pre-commit +0 -4
  14. package/template-design-pro/.prettierignore +0 -9
  15. package/template-design-pro/.stylelintignore +0 -3
  16. package/template-design-pro/.yarnclean +0 -48
  17. package/template-design-pro/LICENSE +0 -21
  18. package/template-design-pro/README.md +0 -111
  19. package/template-design-pro/build/constant.ts +0 -6
  20. package/template-design-pro/build/generate/generateModifyVars.ts +0 -18
  21. package/template-design-pro/build/getConfigFileName.ts +0 -13
  22. package/template-design-pro/build/script/buildConf.ts +0 -44
  23. package/template-design-pro/build/script/postBuild.ts +0 -25
  24. package/template-design-pro/build/script/reSetRootHtml.ts +0 -20
  25. package/template-design-pro/build/utils.ts +0 -85
  26. package/template-design-pro/build/vite/cdn.ts +0 -7
  27. package/template-design-pro/build/vite/optimizer.ts +0 -22
  28. package/template-design-pro/build/vite/plugin/autoImport.ts +0 -18
  29. package/template-design-pro/build/vite/plugin/compress.ts +0 -35
  30. package/template-design-pro/build/vite/plugin/hmr.ts +0 -25
  31. package/template-design-pro/build/vite/plugin/html.ts +0 -47
  32. package/template-design-pro/build/vite/plugin/index.ts +0 -89
  33. package/template-design-pro/build/vite/plugin/mock.ts +0 -20
  34. package/template-design-pro/build/vite/plugin/pwa.ts +0 -37
  35. package/template-design-pro/build/vite/plugin/styleImport.ts +0 -129
  36. package/template-design-pro/build/vite/plugin/visualizer.ts +0 -17
  37. package/template-design-pro/build/vite/plugin/vite-plugin-antd-theme/index.ts +0 -24
  38. package/template-design-pro/build/vite/plugin/vite-plugin-mock/createMockServer.ts +0 -303
  39. package/template-design-pro/build/vite/plugin/vite-plugin-mock/createProdMockServer.ts +0 -93
  40. package/template-design-pro/build/vite/plugin/vite-plugin-mock/index.ts +0 -68
  41. package/template-design-pro/build/vite/plugin/vite-plugin-mock/types.ts +0 -30
  42. package/template-design-pro/build/vite/plugin/vite-plugin-mock/utils.ts +0 -26
  43. package/template-design-pro/commitlint.config.js +0 -32
  44. package/template-design-pro/config/config.ts +0 -14
  45. package/template-design-pro/config/default/animate.ts +0 -30
  46. package/template-design-pro/config/default/defaultSettings.ts +0 -75
  47. package/template-design-pro/config/default/network.ts +0 -16
  48. package/template-design-pro/config/default/proxy.ts +0 -26
  49. package/template-design-pro/config/default/theme.ts +0 -43
  50. package/template-design-pro/config/default/themeColor.ts +0 -62
  51. package/template-design-pro/index.html +0 -45
  52. package/template-design-pro/jest.config.mjs +0 -36
  53. package/template-design-pro/mock/_createProductionServer.ts +0 -19
  54. package/template-design-pro/mock/_util.ts +0 -55
  55. package/template-design-pro/mock/controller/menu.ts +0 -85
  56. package/template-design-pro/mock/controller/notices.ts +0 -114
  57. package/template-design-pro/mock/system/dict.ts +0 -60
  58. package/template-design-pro/mock/system/user.ts +0 -218
  59. package/template-design-pro/package.json +0 -151
  60. package/template-design-pro/pnpm-lock.yaml +0 -9913
  61. package/template-design-pro/postcss.config.js +0 -5
  62. package/template-design-pro/prettier.config.js +0 -18
  63. package/template-design-pro/public/resource/css/index.css +0 -171
  64. package/template-design-pro/public/resource/img/favicon.ico +0 -0
  65. package/template-design-pro/public/resource/img/logo.png +0 -0
  66. package/template-design-pro/public/resource/img/pro_icon.svg +0 -5
  67. package/template-design-pro/public/resource/img/pwa-192x192.png +0 -0
  68. package/template-design-pro/public/resource/img/pwa-512x512.png +0 -0
  69. package/template-design-pro/src/App.vue +0 -47
  70. package/template-design-pro/src/assets/error_images/403.png +0 -0
  71. package/template-design-pro/src/assets/error_images/404.png +0 -0
  72. package/template-design-pro/src/assets/error_images/cloud.png +0 -0
  73. package/template-design-pro/src/assets/login_images/login_background.svg +0 -69
  74. package/template-design-pro/src/assets/logo.png +0 -0
  75. package/template-design-pro/src/assets/menu_font/iconfont.css +0 -94
  76. package/template-design-pro/src/assets/menu_font/iconfont.eot +0 -0
  77. package/template-design-pro/src/assets/menu_font/iconfont.js +0 -1
  78. package/template-design-pro/src/assets/menu_font/iconfont.json +0 -142
  79. package/template-design-pro/src/assets/menu_font/iconfont.svg +0 -57
  80. package/template-design-pro/src/assets/menu_font/iconfont.ttf +0 -0
  81. package/template-design-pro/src/assets/menu_font/iconfont.woff +0 -0
  82. package/template-design-pro/src/assets/menu_font/iconfont.woff2 +0 -0
  83. package/template-design-pro/src/assets/menu_font/index.less +0 -94
  84. package/template-design-pro/src/common/global.ts +0 -1
  85. package/template-design-pro/src/components/GDesign/ProLayout/BasicLayout.less +0 -80
  86. package/template-design-pro/src/components/GDesign/ProLayout/BasicLayout.tsx +0 -342
  87. package/template-design-pro/src/components/GDesign/ProLayout/PageLoading.tsx +0 -20
  88. package/template-design-pro/src/components/GDesign/ProLayout/RenderTypings.ts +0 -31
  89. package/template-design-pro/src/components/GDesign/ProLayout/RouteContext.tsx +0 -82
  90. package/template-design-pro/src/components/GDesign/ProLayout/WrapContent.tsx +0 -69
  91. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalFooter/index.tsx +0 -88
  92. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/DefaultHeader.tsx +0 -189
  93. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/Header.less +0 -8
  94. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/index.tsx +0 -105
  95. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/props.ts +0 -69
  96. package/template-design-pro/src/components/GDesign/ProLayout/components/GlobalHeader/style.less +0 -144
  97. package/template-design-pro/src/components/GDesign/ProLayout/components/LogoContent/index.tsx +0 -81
  98. package/template-design-pro/src/components/GDesign/ProLayout/components/LogoContent/props.ts +0 -29
  99. package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/index.tsx +0 -384
  100. package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/props.ts +0 -15
  101. package/template-design-pro/src/components/GDesign/ProLayout/components/MultiTab/style.less +0 -79
  102. package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeIcon.tsx +0 -148
  103. package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.module.less +0 -115
  104. package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/NoticeList.tsx +0 -154
  105. package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.less +0 -39
  106. package/template-design-pro/src/components/GDesign/ProLayout/components/NoticeIcon/index.tsx +0 -133
  107. package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/index.tsx +0 -190
  108. package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/props.ts +0 -48
  109. package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/style.less +0 -128
  110. package/template-design-pro/src/components/GDesign/ProLayout/components/PageContainer/typings.ts +0 -0
  111. package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/AvatarDropdown.tsx +0 -63
  112. package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/HeaderSearch.tsx +0 -122
  113. package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/headerSearch.less +0 -30
  114. package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/index.tsx +0 -95
  115. package/template-design-pro/src/components/GDesign/ProLayout/components/RightContent/style.less +0 -90
  116. package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/BlockCheckbox.tsx +0 -70
  117. package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/LayoutSetting.tsx +0 -107
  118. package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/ThemeColor.tsx +0 -68
  119. package/template-design-pro/src/components/GDesign/ProLayout/components/SettingDrawer/index.tsx +0 -346
  120. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/BaseMenu.tsx +0 -224
  121. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/SiderMenu.tsx +0 -224
  122. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/index.tsx +0 -43
  123. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/props.ts +0 -112
  124. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/style.less +0 -262
  125. package/template-design-pro/src/components/GDesign/ProLayout/components/SiderMenu/typings.ts +0 -44
  126. package/template-design-pro/src/components/GDesign/ProLayout/default.less +0 -2
  127. package/template-design-pro/src/components/GDesign/ProLayout/defaultSettings.ts +0 -121
  128. package/template-design-pro/src/components/GDesign/ProLayout/hooks/context/index.ts +0 -45
  129. package/template-design-pro/src/components/GDesign/ProLayout/index.ts +0 -43
  130. package/template-design-pro/src/components/GDesign/ProLayout/props.ts +0 -57
  131. package/template-design-pro/src/components/GDesign/ProLayout/style.less +0 -272
  132. package/template-design-pro/src/components/GDesign/ProLayout/typings.ts +0 -1
  133. package/template-design-pro/src/components/GDesign/ProLayout/utils/getMenuData.ts +0 -31
  134. package/template-design-pro/src/components/GDesign/ProLayout/utils/index.ts +0 -94
  135. package/template-design-pro/src/components/GDesign/ProLayout/utils/isImg/index.ts +0 -6
  136. package/template-design-pro/src/components/GDesign/ProLayout/utils/isUrl/index.ts +0 -5
  137. package/template-design-pro/src/components/GDesign/Result/index.tsx +0 -142
  138. package/template-design-pro/src/components/GDesign/Result/style.less +0 -140
  139. package/template-design-pro/src/components/GDesign/Scrollbars/components/Bar/index.tsx +0 -56
  140. package/template-design-pro/src/components/GDesign/Scrollbars/components/Bar/props.ts +0 -23
  141. package/template-design-pro/src/components/GDesign/Scrollbars/components/Thumb/index.tsx +0 -164
  142. package/template-design-pro/src/components/GDesign/Scrollbars/components/Thumb/props.ts +0 -11
  143. package/template-design-pro/src/components/GDesign/Scrollbars/context.ts +0 -10
  144. package/template-design-pro/src/components/GDesign/Scrollbars/index.tsx +0 -200
  145. package/template-design-pro/src/components/GDesign/Scrollbars/props.ts +0 -65
  146. package/template-design-pro/src/components/GDesign/Scrollbars/style.less +0 -85
  147. package/template-design-pro/src/components/GDesign/Scrollbars/util.ts +0 -40
  148. package/template-design-pro/src/components/GDesign/utils/index.ts +0 -7
  149. package/template-design-pro/src/components/PageLoading/index.tsx +0 -44
  150. package/template-design-pro/src/components/PageTransition/index.vue +0 -98
  151. package/template-design-pro/src/components/index.ts +0 -6
  152. package/template-design-pro/src/core/ant-design/index.ts +0 -14
  153. package/template-design-pro/src/core/gx-admin-design/index.ts +0 -7
  154. package/template-design-pro/src/core/gx-admin-directives/index.ts +0 -8
  155. package/template-design-pro/src/core/gx-admin-directives/permission.ts +0 -28
  156. package/template-design-pro/src/core/gx-design/index.ts +0 -7
  157. package/template-design-pro/src/core/gx-pro-design/index.ts +0 -10
  158. package/template-design-pro/src/core/index.ts +0 -27
  159. package/template-design-pro/src/design/ant-design/index.less +0 -4
  160. package/template-design-pro/src/design/ant-design/layout.less +0 -29
  161. package/template-design-pro/src/design/ant-design/menu.less +0 -55
  162. package/template-design-pro/src/design/ant-design/table.less +0 -67
  163. package/template-design-pro/src/design/ant-design/tooltip.less +0 -13
  164. package/template-design-pro/src/design/color.less +0 -1
  165. package/template-design-pro/src/design/config.less +0 -5
  166. package/template-design-pro/src/design/index.less +0 -41
  167. package/template-design-pro/src/design/mixin.less +0 -66
  168. package/template-design-pro/src/design/normalize.less +0 -390
  169. package/template-design-pro/src/global.less +0 -15
  170. package/template-design-pro/src/hooks/core/index.ts +0 -3
  171. package/template-design-pro/src/hooks/core/useRequest/index.ts +0 -70
  172. package/template-design-pro/src/hooks/core/useRequest/typings.ts +0 -0
  173. package/template-design-pro/src/hooks/event/index.ts +0 -3
  174. package/template-design-pro/src/hooks/event/useClipboard.ts +0 -14
  175. package/template-design-pro/src/hooks/system/index.ts +0 -5
  176. package/template-design-pro/src/hooks/system/useDict.ts +0 -62
  177. package/template-design-pro/src/hooks/system/usePermissions.ts +0 -39
  178. package/template-design-pro/src/hooks/typings.ts +0 -17
  179. package/template-design-pro/src/layout/BasicLayout.vue +0 -104
  180. package/template-design-pro/src/layout/BlankLayout.vue +0 -5
  181. package/template-design-pro/src/layout/ContentView.vue +0 -76
  182. package/template-design-pro/src/layout/IframeView.vue +0 -1
  183. package/template-design-pro/src/layout/UserLayout.vue +0 -7
  184. package/template-design-pro/src/main.ts +0 -34
  185. package/template-design-pro/src/plugins/index.ts +0 -3
  186. package/template-design-pro/src/router/guard/index.ts +0 -84
  187. package/template-design-pro/src/router/guard/permissions.ts +0 -73
  188. package/template-design-pro/src/router/guard/stateGuard.ts +0 -11
  189. package/template-design-pro/src/router/helper/routeHelper.ts +0 -244
  190. package/template-design-pro/src/router/helper/utils.ts +0 -19
  191. package/template-design-pro/src/router/index.ts +0 -30
  192. package/template-design-pro/src/router/routes/index.ts +0 -85
  193. package/template-design-pro/src/router/routes/modules/workplace.ts +0 -19
  194. package/template-design-pro/src/services/common/index.ts +0 -11
  195. package/template-design-pro/src/services/controller/router.ts +0 -10
  196. package/template-design-pro/src/services/controller/user.ts +0 -35
  197. package/template-design-pro/src/services/system/dictData.ts +0 -10
  198. package/template-design-pro/src/services/system/notices.ts +0 -9
  199. package/template-design-pro/src/store/index.ts +0 -32
  200. package/template-design-pro/src/store/modules/dict.ts +0 -27
  201. package/template-design-pro/src/store/modules/permission.ts +0 -19
  202. package/template-design-pro/src/store/modules/routes.ts +0 -110
  203. package/template-design-pro/src/store/modules/settings.ts +0 -102
  204. package/template-design-pro/src/store/modules/tabsRouter.ts +0 -73
  205. package/template-design-pro/src/store/modules/user.ts +0 -153
  206. package/template-design-pro/src/utils/accessToken.ts +0 -93
  207. package/template-design-pro/src/utils/crypto.ts +0 -39
  208. package/template-design-pro/src/utils/env.ts +0 -52
  209. package/template-design-pro/src/utils/fetchFile.ts +0 -79
  210. package/template-design-pro/src/utils/index.ts +0 -127
  211. package/template-design-pro/src/utils/pageTitle.ts +0 -17
  212. package/template-design-pro/src/utils/request/XHR.ts +0 -131
  213. package/template-design-pro/src/utils/request/axiosCancel.ts +0 -60
  214. package/template-design-pro/src/utils/request/checkStatus.ts +0 -26
  215. package/template-design-pro/src/utils/request/index.ts +0 -145
  216. package/template-design-pro/src/utils/request/typings.ts +0 -114
  217. package/template-design-pro/src/utils/storage.ts +0 -194
  218. package/template-design-pro/src/utils/uploadFile.ts +0 -26
  219. package/template-design-pro/src/utils/util.ts +0 -278
  220. package/template-design-pro/src/utils/validate.ts +0 -221
  221. package/template-design-pro/src/views/Iframe/index.vue +0 -76
  222. package/template-design-pro/src/views/MenuOne/index.vue +0 -15
  223. package/template-design-pro/src/views/MenuTwo/index.vue +0 -13
  224. package/template-design-pro/src/views/exception/403/index.vue +0 -9
  225. package/template-design-pro/src/views/exception/404/index.vue +0 -9
  226. package/template-design-pro/src/views/user/login/index.vue +0 -110
  227. package/template-design-pro/src/views/user/login/style.less +0 -38
  228. package/template-design-pro/stylelint.config.js +0 -106
  229. package/template-design-pro/tests/__mocks__/fileMock.ts +0 -1
  230. package/template-design-pro/tests/__mocks__/styleMock.ts +0 -1
  231. package/template-design-pro/tests/__mocks__/workerMock.ts +0 -5
  232. package/template-design-pro/tests/server/README.md +0 -15
  233. package/template-design-pro/tests/server/controller/FileController.ts +0 -18
  234. package/template-design-pro/tests/server/controller/UserController.ts +0 -15
  235. package/template-design-pro/tests/server/ecosystem.config.js +0 -18
  236. package/template-design-pro/tests/server/index.ts +0 -63
  237. package/template-design-pro/tests/server/nodemon.json +0 -8
  238. package/template-design-pro/tests/server/package.json +0 -36
  239. package/template-design-pro/tests/server/routes.ts +0 -23
  240. package/template-design-pro/tests/server/service/FileService.ts +0 -54
  241. package/template-design-pro/tests/server/service/UserService.ts +0 -25
  242. package/template-design-pro/tests/server/tsconfig.json +0 -15
  243. package/template-design-pro/tests/server/utils.ts +0 -9
  244. package/template-design-pro/tests/server/yarn.lock +0 -2955
  245. package/template-design-pro/tests/test.spec.ts +0 -16
  246. package/template-design-pro/tsconfig.json +0 -47
  247. package/template-design-pro/types/auto-imports.d.ts +0 -61
  248. package/template-design-pro/types/config.d.ts +0 -100
  249. package/template-design-pro/types/global.d.ts +0 -103
  250. package/template-design-pro/types/gx-components.d.ts +0 -24
  251. package/template-design-pro/types/index.d.ts +0 -13
  252. package/template-design-pro/types/mock.d.ts +0 -23
  253. package/template-design-pro/types/module.d.ts +0 -16
  254. package/template-design-pro/types/response.d.ts +0 -15
  255. package/template-design-pro/types/route.d.ts +0 -89
  256. package/template-design-pro/vite.config.ts +0 -136
  257. package/template-design-pro/yarn.lock +0 -9697
@@ -1,56 +0,0 @@
1
- import type { ExtractPropTypes } from 'vue'
2
- import { defineComponent, ref } from 'vue'
3
- import { barProps } from './props'
4
- import Thumb from '../Thumb'
5
-
6
- export type BarProps = ExtractPropTypes<typeof barProps>
7
-
8
- const Bar = defineComponent({
9
- props: barProps,
10
- setup(props) {
11
- const moveX = ref(0)
12
- const moveY = ref(0)
13
- const GAP = 4
14
-
15
- const handleScroll = (wrap: HTMLDivElement) => {
16
- if (wrap) {
17
- const offsetHeight = wrap.offsetHeight - GAP
18
- const offsetWidth = wrap.offsetWidth - GAP
19
-
20
- moveY.value = ((wrap.scrollTop * 100) / offsetHeight) * props.ratioY
21
- moveX.value = ((wrap.scrollLeft * 100) / offsetWidth) * props.ratioX
22
- }
23
- }
24
-
25
- return {
26
- moveX,
27
- moveY,
28
- handleScroll
29
- }
30
- },
31
- render() {
32
- return (
33
- <>
34
- <Thumb
35
- className={this.className}
36
- move={this.moveX}
37
- ratio={this.ratioX}
38
- size={this.width}
39
- always={this.always}
40
- />
41
- <Thumb
42
- className={this.className}
43
- move={this.moveY}
44
- ratio={this.ratioY}
45
- size={this.height}
46
- vertical
47
- always={this.always}
48
- />
49
- </>
50
- )
51
- }
52
- })
53
-
54
- Bar.inheritAttrs = false
55
-
56
- export default Bar
@@ -1,23 +0,0 @@
1
- export const barProps = {
2
- className: String,
3
- always: {
4
- type: Boolean,
5
- default: true,
6
- },
7
- width: {
8
- type: String,
9
- default: '',
10
- },
11
- height: {
12
- type: String,
13
- default: '',
14
- },
15
- ratioX: {
16
- type: Number,
17
- default: 1,
18
- },
19
- ratioY: {
20
- type: Number,
21
- default: 1,
22
- },
23
- }
@@ -1,164 +0,0 @@
1
- import type { ExtractPropTypes } from 'vue'
2
- import { computed, defineComponent, inject, onBeforeUnmount, ref, toRef, Transition } from 'vue'
3
- import { isClient, useEventListener } from '@vueuse/core'
4
- import { thumbProps } from './props'
5
- import { scrollbarContextKey } from '../../context'
6
- import { BAR_MAP, renderThumbStyle } from '../../util'
7
-
8
- export type ThumbProps = ExtractPropTypes<typeof thumbProps>
9
-
10
- const COMPONENT_NAME = 'Thumb'
11
- const Thumb = defineComponent({
12
- props: thumbProps,
13
- setup(props) {
14
- const scrollbar = inject(scrollbarContextKey)
15
-
16
- if (!scrollbar) console.error(COMPONENT_NAME, 'can not inject scrollbar context')
17
-
18
- const instance = ref()
19
- const thumb = ref()
20
-
21
- const thumbState = ref({})
22
- const visible = ref(false)
23
-
24
- let cursorDown = false
25
- let cursorLeave = false
26
- let originalOnSelectStart: ((this: GlobalEventHandlers, ev: Event) => any) | null = isClient
27
- ? document.onselectstart
28
- : null
29
-
30
- const bar = computed(() => BAR_MAP[props.vertical ? 'vertical' : 'horizontal'])
31
-
32
- const thumbStyle = computed(() =>
33
- renderThumbStyle({
34
- size: props.size,
35
- move: props.move,
36
- bar: bar.value
37
- })
38
- )
39
-
40
- const offsetRatio = computed(
41
- () =>
42
- // offsetRatioX = original width of thumb / current width of thumb / ratioX
43
- // offsetRatioY = original height of thumb / current height of thumb / ratioY
44
- // instance height = wrap height - GAP
45
- instance.value![bar.value.offset] ** 2 /
46
- scrollbar.wrapElement![bar.value.scrollSize] /
47
- props.ratio /
48
- thumb.value![bar.value.offset]
49
- )
50
-
51
- const clickThumbHandler = (e: MouseEvent) => {
52
- // prevent click event of middle and right button
53
- e.stopPropagation()
54
- if (e.ctrlKey || [1, 2].includes(e.button)) return
55
-
56
- window.getSelection()?.removeAllRanges()
57
- startDrag(e)
58
-
59
- const el = e.currentTarget as HTMLDivElement
60
- if (!el) return
61
- thumbState.value[bar.value.axis] =
62
- el[bar.value.offset] -
63
- (e[bar.value.client] - el.getBoundingClientRect()[bar.value.direction])
64
- }
65
-
66
- const clickTrackHandler = (e: MouseEvent) => {
67
- if (!thumb.value || !instance.value || !scrollbar.wrapElement) return
68
-
69
- const offset = Math.abs(
70
- (e.target as HTMLElement).getBoundingClientRect()[bar.value.direction] - e[bar.value.client]
71
- )
72
- const thumbHalf = thumb.value[bar.value.offset] / 2
73
- const thumbPositionPercentage =
74
- ((offset - thumbHalf) * 100 * offsetRatio.value) / instance.value[bar.value.offset]
75
-
76
- scrollbar.wrapElement[bar.value.scroll] =
77
- (thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize]) / 100
78
- }
79
-
80
- const startDrag = (e: MouseEvent) => {
81
- e.stopImmediatePropagation()
82
- cursorDown = true
83
- document.addEventListener('mousemove', mouseMoveDocumentHandler)
84
- document.addEventListener('mouseup', mouseUpDocumentHandler)
85
- originalOnSelectStart = document.onselectstart
86
- document.onselectstart = () => false
87
- }
88
-
89
- const mouseMoveDocumentHandler = (e: MouseEvent) => {
90
- if (!instance.value || !thumb.value) return
91
- if (cursorDown === false) return
92
-
93
- const prevPage = thumbState.value[bar.value.axis]
94
- if (!prevPage) return
95
-
96
- const offset =
97
- (instance.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1
98
- const thumbClickPosition = thumb.value[bar.value.offset] - prevPage
99
- const thumbPositionPercentage =
100
- ((offset - thumbClickPosition) * 100 * offsetRatio.value) / instance.value[bar.value.offset]
101
- scrollbar.wrapElement[bar.value.scroll] =
102
- (thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize]) / 100
103
- }
104
-
105
- const mouseUpDocumentHandler = () => {
106
- cursorDown = false
107
- thumbState.value[bar.value.axis] = 0
108
- document.removeEventListener('mousemove', mouseMoveDocumentHandler)
109
- document.removeEventListener('mouseup', mouseUpDocumentHandler)
110
- restoreOnselectstart()
111
- if (cursorLeave) visible.value = false
112
- }
113
-
114
- const mouseMoveScrollbarHandler = () => {
115
- cursorLeave = false
116
- visible.value = !!props.size
117
- }
118
-
119
- const mouseLeaveScrollbarHandler = () => {
120
- cursorLeave = true
121
- visible.value = cursorDown
122
- }
123
-
124
- onBeforeUnmount(() => {
125
- restoreOnselectstart()
126
- document.removeEventListener('mouseup', mouseUpDocumentHandler)
127
- })
128
-
129
- const restoreOnselectstart = () => {
130
- if (document.onselectstart !== originalOnSelectStart)
131
- document.onselectstart = originalOnSelectStart
132
- }
133
-
134
- useEventListener(toRef(scrollbar, 'scrollbarElement'), 'mousemove', mouseMoveScrollbarHandler)
135
- useEventListener(toRef(scrollbar, 'scrollbarElement'), 'mouseleave', mouseLeaveScrollbarHandler)
136
-
137
- return () => {
138
- return (
139
- <Transition name={`${props.className}-fade`}>
140
- <div
141
- ref={(e) => (instance.value = e)}
142
- class={
143
- props.always || visible.value
144
- ? [`${props.className}-bar`, 'is-' + bar.value.key]
145
- : [`${props.className}-bar`, 'is-' + bar.value.key, 'hidden']
146
- }
147
- onMousedown={clickTrackHandler}
148
- >
149
- <div
150
- ref={(e) => (thumb.value = e)}
151
- class={`${props.className}-thumb`}
152
- style={thumbStyle.value}
153
- onMousedown={clickThumbHandler}
154
- />
155
- </div>
156
- </Transition>
157
- )
158
- }
159
- }
160
- })
161
-
162
- Thumb.inheritAttrs = false
163
-
164
- export default Thumb
@@ -1,11 +0,0 @@
1
- export const thumbProps = {
2
- className: String,
3
- vertical: Boolean,
4
- size: String,
5
- move: Number,
6
- ratio: {
7
- type: Number,
8
- required: true,
9
- },
10
- always: Boolean,
11
- }
@@ -1,10 +0,0 @@
1
- import type { InjectionKey } from 'vue'
2
-
3
- export interface scrollbarContext {
4
- scrollbarElement: HTMLDivElement
5
- wrapElement: HTMLDivElement
6
- }
7
-
8
- export const scrollbarContextKey: InjectionKey<scrollbarContext> = Symbol(
9
- 'scrollbarContextKey'
10
- )
@@ -1,200 +0,0 @@
1
- import { ExtractPropTypes, StyleValue } from 'vue'
2
- import { defineComponent, watch, provide, onMounted, ref, computed } from 'vue'
3
- import { useEventListener, useResizeObserver } from '@vueuse/core'
4
- import { isNumber, isObject, getPrefixCls } from '@gx-design-vue/pro-utils'
5
- import { scrollbarEmits, scrollbarProps } from './props'
6
- import { scrollbarContextKey } from './context'
7
- import Bar from './components/Bar'
8
- import { addUnit } from './util'
9
-
10
- import './style.less'
11
-
12
- export type ScrollbarProps = ExtractPropTypes<typeof scrollbarProps>
13
-
14
- const GBars = defineComponent({
15
- name: 'GBars',
16
- props: scrollbarProps,
17
- emits: scrollbarEmits,
18
- setup(props, { emit }) {
19
- const prefixCls = getPrefixCls({
20
- suffixCls: 'scrollbar'
21
- })
22
-
23
- let stopResizeObserver: (() => void) | undefined = undefined
24
- let stopResizeListener: (() => void) | undefined = undefined
25
-
26
- const scrollbar$ = ref()
27
- const wrap$ = ref()
28
- const resize$ = ref()
29
-
30
- const sizeWidth = ref('0')
31
- const sizeHeight = ref('0')
32
- const barRef = ref()
33
- const moveX = ref(0)
34
- const moveY = ref(0)
35
- const ratioY = ref(1)
36
- const ratioX = ref(1)
37
- const SCOPE = 'GBars'
38
- const GAP = 4 // top 2 + bottom 2 of bar instance
39
-
40
- const style = computed<StyleValue>(() => {
41
- const style: any = {}
42
- if (props.height) style.height = addUnit(props.height)
43
- if (props.maxHeight) style.maxHeight = addUnit(props.maxHeight)
44
- return [props.wrapStyle, style]
45
- })
46
-
47
- const handleScroll = () => {
48
- if (wrap$.value) {
49
- barRef.value?.handleScroll(wrap$.value)
50
-
51
- emit('scroll', {
52
- scrollTop: wrap$.value.scrollTop,
53
- scrollLeft: wrap$.value.scrollLeft
54
- })
55
- }
56
- }
57
-
58
- function scrollTo(xCord: number, yCord?: number): void
59
- function scrollTo(options: ScrollToOptions): void
60
- function scrollTo(arg1: unknown, arg2?: number) {
61
- if (isObject(arg1)) {
62
- wrap$.value!.scrollTo(arg1)
63
- } else if (isNumber(arg1) && isNumber(arg2)) {
64
- wrap$.value!.scrollTo(arg1, arg2)
65
- }
66
- }
67
-
68
- const setScrollTop = (value: number) => {
69
- if (!isNumber(value)) {
70
- console.warn(SCOPE, 'value 必须为数字')
71
- return
72
- }
73
- wrap$.value!.scrollTop = value
74
- }
75
-
76
- const setScrollLeft = (value: number) => {
77
- if (!isNumber(value)) {
78
- console.warn(SCOPE, 'value 必须为数字')
79
- return
80
- }
81
- wrap$.value!.scrollLeft = value
82
- }
83
-
84
- const update = () => {
85
- if (!wrap$.value) return
86
- const offsetHeight = wrap$.value.offsetHeight - GAP
87
- const offsetWidth = wrap$.value.offsetWidth - GAP
88
-
89
- const originalHeight = offsetHeight ** 2 / wrap$.value.scrollHeight
90
- const originalWidth = offsetWidth ** 2 / wrap$.value.scrollWidth
91
- const height = Math.max(originalHeight, props.minSize)
92
- const width = Math.max(originalWidth, props.minSize)
93
-
94
- ratioY.value =
95
- originalHeight / (offsetHeight - originalHeight) / (height / (offsetHeight - height))
96
- ratioX.value = originalWidth / (offsetWidth - originalWidth) / (width / (offsetWidth - width))
97
-
98
- sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : ''
99
- sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : ''
100
- }
101
-
102
- watch(
103
- () => props.noresize,
104
- (noresize) => {
105
- if (noresize) {
106
- stopResizeObserver?.()
107
- stopResizeListener?.()
108
- } else {
109
- ;({ stop: stopResizeObserver } = useResizeObserver(resize$, update))
110
- stopResizeListener = useEventListener('resize', update)
111
- }
112
- },
113
- { immediate: true }
114
- )
115
-
116
- watch(
117
- () => [props.maxHeight, props.height],
118
- () => {
119
- if (!props.native)
120
- nextTick(() => {
121
- update()
122
- if (wrap$.value) {
123
- barRef.value?.handleScroll(wrap$.value)
124
- }
125
- })
126
- }
127
- )
128
-
129
- provide(
130
- scrollbarContextKey,
131
- reactive({
132
- scrollbarElement: scrollbar$,
133
- wrapElement: wrap$
134
- })
135
- )
136
-
137
- onMounted(() => {
138
- if (!props.native) nextTick(() => update())
139
- })
140
-
141
- return {
142
- barRef,
143
- wrap$,
144
- scrollbar$,
145
- resize$,
146
- style,
147
- moveX,
148
- moveY,
149
- prefixCls,
150
- sizeHeight,
151
- sizeWidth,
152
- ratioX,
153
- ratioY,
154
- handleScroll,
155
- scrollTo,
156
- setScrollTop,
157
- setScrollLeft
158
- }
159
- },
160
- render() {
161
- const CustomTag: any = this.tag
162
- return (
163
- <div ref={(e) => (this.scrollbar$ = e)} class={this.prefixCls}>
164
- <div
165
- ref={(e) => (this.wrap$ = e)}
166
- class={[
167
- this.wrapClass,
168
- `${this.prefixCls}-wrap`,
169
- this.native ? '' : `${this.prefixCls}-wrap-hidden-default`
170
- ]}
171
- style={this.style}
172
- onScroll={this.handleScroll}
173
- >
174
- <CustomTag
175
- ref={(e) => (this.resize$ = e)}
176
- class={[`${this.prefixCls}-view`, this.viewClass]}
177
- style={this.viewStyle}
178
- >
179
- {this.$slots.default?.()}
180
- </CustomTag>
181
- </div>
182
- {!this.native && (
183
- <Bar
184
- ref={(e) => (this.barRef = e)}
185
- className={this.prefixCls}
186
- height={this.sizeHeight}
187
- width={this.sizeWidth}
188
- always={this.always}
189
- ratioX={this.ratioX}
190
- ratioY={this.ratioY}
191
- />
192
- )}
193
- </div>
194
- )
195
- }
196
- })
197
-
198
- GBars.inheritAttrs = false
199
-
200
- export default GBars
@@ -1,65 +0,0 @@
1
- import type { CSSProperties } from 'vue'
2
- import { isNumber } from '@gx-design-vue/pro-utils'
3
-
4
- const wrapperKey = Symbol()
5
-
6
- export type PropWrapper<T> = { [wrapperKey]: T }
7
-
8
- export const definePropType = <T>(val: any) =>
9
- ({ [wrapperKey]: val } as PropWrapper<T>)
10
-
11
- export const scrollbarProps = {
12
- height: {
13
- type: [ String, Number ],
14
- default: ''
15
- },
16
- maxHeight: {
17
- type: [ String, Number ],
18
- default: ''
19
- },
20
- native: {
21
- type: Boolean,
22
- default: false
23
- },
24
- wrapStyle: {
25
- type: [String, Array] as PropType<string | CSSProperties[]>,
26
- default: ''
27
- },
28
- wrapClass: {
29
- type: [ String, Array ],
30
- default: ''
31
- },
32
- viewClass: {
33
- type: [ String, Array ],
34
- default: ''
35
- },
36
- viewStyle: {
37
- type: [ String, Array, Object ],
38
- default: ''
39
- },
40
- noresize: Boolean, // 如果 container 尺寸不会发生变化,最好设置它可以优化性能
41
- tag: {
42
- type: String,
43
- default: 'div'
44
- },
45
- always: {
46
- type: Boolean,
47
- default: false
48
- },
49
- minSize: {
50
- type: Number,
51
- default: 20
52
- }
53
- }
54
-
55
-
56
- export const scrollbarEmits = {
57
- scroll: ({
58
- scrollTop,
59
- scrollLeft
60
- }: {
61
- scrollTop: number
62
- scrollLeft: number
63
- }) => isNumber(scrollTop) && isNumber(scrollLeft)
64
- }
65
- export type ScrollbarEmits = typeof scrollbarEmits
@@ -1,85 +0,0 @@
1
- :root {
2
- --wd-scrollbar-opacity: 0.3;
3
- --wd-text-color-secondary: #909399;
4
- --wd-scrollbar-background-color: var(--wd-text-color-secondary);
5
- --wd-scrollbar-hover-opacity: 0.5;
6
- --wd-scrollbar-hover-background-color: var(--wd-text-color-secondary);
7
- }
8
-
9
- .@{gx-prefix}-scrollbar {
10
- position: relative;
11
- height: 100%;
12
- overflow: hidden;
13
-
14
- &-wrap {
15
- height: 100%;
16
- overflow: auto;
17
-
18
- &-hidden-default {
19
- scrollbar-width: none;
20
-
21
- &::-webkit-scrollbar {
22
- display: none;
23
- }
24
- }
25
- }
26
-
27
- &-bar {
28
- position: absolute;
29
- right: 2px;
30
- bottom: 2px;
31
- z-index: 999;
32
- border-radius: 4px;
33
-
34
- &.is-vertical {
35
- top: 2px;
36
- width: 6px;
37
-
38
- & > div {
39
- width: 100%;
40
- }
41
- }
42
-
43
- &.is-horizontal {
44
- left: 2px;
45
- height: 6px;
46
-
47
- & > div {
48
- height: 100%;
49
- }
50
- }
51
- }
52
-
53
- &-thumb {
54
- position: relative;
55
- display: block;
56
- width: 0;
57
- height: 0;
58
- cursor: pointer;
59
- background-color: var(--wd-scrollbar-background-color);
60
- border-radius: inherit;
61
- opacity: var(--wd-scrollbar-opacity);
62
- -webkit-transition: var(--wd-transition-duration) background-color;
63
- transition: var(--wd-transition-duration) background-color;
64
-
65
- &:hover {
66
- background-color: var(--wd-scrollbar-hover-background-color);
67
- opacity: var(--wd-scrollbar-hover-opacity);
68
- }
69
- }
70
-
71
- &-fade-enter-active {
72
- -webkit-transition: opacity 340ms ease-out;
73
- transition: opacity 340ms ease-out;
74
- }
75
-
76
- &-fade-leave-active {
77
- -webkit-transition: opacity 120ms ease-out;
78
- transition: opacity 120ms ease-out;
79
- }
80
- }
81
-
82
- .@{gx-prefix}-scrollbar-fade-enter-from,
83
- .@{gx-prefix}-scrollbar-fade-leave-active {
84
- opacity: 0;
85
- }
@@ -1,40 +0,0 @@
1
- import type { CSSProperties } from 'vue'
2
- import { isNumber, isString } from '@gx-design-vue/pro-utils'
3
-
4
- export const BAR_MAP = {
5
- vertical: {
6
- offset: 'offsetHeight',
7
- scroll: 'scrollTop',
8
- scrollSize: 'scrollHeight',
9
- size: 'height',
10
- key: 'vertical',
11
- axis: 'Y',
12
- client: 'clientY',
13
- direction: 'top',
14
- },
15
- horizontal: {
16
- offset: 'offsetWidth',
17
- scroll: 'scrollLeft',
18
- scrollSize: 'scrollWidth',
19
- size: 'width',
20
- key: 'horizontal',
21
- axis: 'X',
22
- client: 'clientX',
23
- direction: 'left',
24
- },
25
- }
26
-
27
- export const renderThumbStyle = ({ move, size, bar }): CSSProperties => ({
28
- [bar.size]: size,
29
- transform: `translate${bar.axis}(${move}%)`,
30
- })
31
-
32
- export function addUnit(value: string | number, defaultUnit = 'px') {
33
- if (!value) return ''
34
- if (isString(value)) {
35
- return value
36
- } else if (isNumber(value)) {
37
- return `${value}${defaultUnit}`
38
- }
39
- return false
40
- }
@@ -1,7 +0,0 @@
1
- import devWarning from 'ant-design-vue/es/vc-util/devWarning'
2
-
3
- export { noteOnce, warning } from 'ant-design-vue/es/vc-util/warning'
4
-
5
- export {
6
- devWarning
7
- }