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

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 (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
- }