gi-component 0.0.49 → 0.0.50

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 (262) hide show
  1. package/dist/components/button/index.d.ts +2 -1
  2. package/dist/components/button/index.d.ts.map +1 -0
  3. package/dist/components/button/src/{button.vue.d.ts → button.d.ts} +5 -3
  4. package/dist/components/button/src/button.d.ts.map +1 -0
  5. package/dist/components/button/src/type.d.ts +1 -0
  6. package/dist/components/button/src/type.d.ts.map +1 -0
  7. package/dist/components/card/index.d.ts +2 -1
  8. package/dist/components/card/index.d.ts.map +1 -0
  9. package/dist/components/card/src/card.d.ts +37 -0
  10. package/dist/components/card/src/card.d.ts.map +1 -0
  11. package/dist/components/card/src/type.d.ts +1 -0
  12. package/dist/components/card/src/type.d.ts.map +1 -0
  13. package/dist/components/descriptions/index.d.ts +2 -2
  14. package/dist/components/descriptions/index.d.ts.map +1 -0
  15. package/dist/components/descriptions/src/descriptions.d.ts +25 -0
  16. package/dist/components/descriptions/src/descriptions.d.ts.map +1 -0
  17. package/dist/components/descriptions/src/type.d.ts +25 -11
  18. package/dist/components/descriptions/src/type.d.ts.map +1 -0
  19. package/dist/components/dialog/index.d.ts +2 -1
  20. package/dist/components/dialog/index.d.ts.map +1 -0
  21. package/dist/components/dialog/src/dialog-content.d.ts +11 -0
  22. package/dist/components/dialog/src/dialog-content.d.ts.map +1 -0
  23. package/dist/components/dialog/src/dialog.d.ts +16 -0
  24. package/dist/components/dialog/src/dialog.d.ts.map +1 -0
  25. package/dist/components/dialog/src/type.d.ts +1 -0
  26. package/dist/components/dialog/src/type.d.ts.map +1 -0
  27. package/dist/components/dot/index.d.ts +2 -1
  28. package/dist/components/dot/index.d.ts.map +1 -0
  29. package/dist/components/dot/src/dot.d.ts +9 -0
  30. package/dist/components/dot/src/dot.d.ts.map +1 -0
  31. package/dist/components/dot/src/type.d.ts +1 -0
  32. package/dist/components/dot/src/type.d.ts.map +1 -0
  33. package/dist/components/drawer/index.d.ts +2 -1
  34. package/dist/components/drawer/index.d.ts.map +1 -0
  35. package/dist/components/drawer/src/drawer.d.ts +1 -0
  36. package/dist/components/drawer/src/drawer.d.ts.map +1 -0
  37. package/dist/components/drawer/src/type.d.ts +1 -0
  38. package/dist/components/drawer/src/type.d.ts.map +1 -0
  39. package/dist/components/edit-table/index.d.ts +2 -1
  40. package/dist/components/edit-table/index.d.ts.map +1 -0
  41. package/dist/components/edit-table/src/type.d.ts +1 -0
  42. package/dist/components/edit-table/src/type.d.ts.map +1 -0
  43. package/dist/components/flex/index.d.ts +2 -1
  44. package/dist/components/flex/index.d.ts.map +1 -0
  45. package/dist/components/flex/src/{flex.vue.d.ts → flex.d.ts} +4 -2
  46. package/dist/components/flex/src/flex.d.ts.map +1 -0
  47. package/dist/components/flex/src/type.d.ts +1 -0
  48. package/dist/components/flex/src/type.d.ts.map +1 -0
  49. package/dist/components/form/index.d.ts +2 -1
  50. package/dist/components/form/index.d.ts.map +1 -0
  51. package/dist/components/form/src/type.d.ts +1 -0
  52. package/dist/components/form/src/type.d.ts.map +1 -0
  53. package/dist/components/grid/index.d.ts +3 -2
  54. package/dist/components/grid/index.d.ts.map +1 -0
  55. package/dist/components/grid/src/context.d.ts +1 -0
  56. package/dist/components/grid/src/context.d.ts.map +1 -0
  57. package/dist/components/grid/src/{grid-item.vue.d.ts → grid-item.d.ts} +9 -8
  58. package/dist/components/grid/src/grid-item.d.ts.map +1 -0
  59. package/dist/components/grid/src/{grid.vue.d.ts → grid.d.ts} +7 -6
  60. package/dist/components/grid/src/grid.d.ts.map +1 -0
  61. package/dist/components/grid/src/hook/use-index.d.ts +3 -2
  62. package/dist/components/grid/src/hook/use-index.d.ts.map +1 -0
  63. package/dist/components/grid/src/hook/use-responsive-state.d.ts +3 -2
  64. package/dist/components/grid/src/hook/use-responsive-state.d.ts.map +1 -0
  65. package/dist/components/grid/src/hook/use-responsive-value.d.ts +3 -2
  66. package/dist/components/grid/src/hook/use-responsive-value.d.ts.map +1 -0
  67. package/dist/components/grid/src/interface.d.ts +1 -0
  68. package/dist/components/grid/src/interface.d.ts.map +1 -0
  69. package/dist/components/grid/src/type.d.ts +1 -0
  70. package/dist/components/grid/src/type.d.ts.map +1 -0
  71. package/dist/components/grid/src/utils/global-config.d.ts +1 -0
  72. package/dist/components/grid/src/utils/global-config.d.ts.map +1 -0
  73. package/dist/components/grid/src/utils/index.d.ts +1 -0
  74. package/dist/components/grid/src/utils/index.d.ts.map +1 -0
  75. package/dist/components/grid/src/utils/is.d.ts +1 -0
  76. package/dist/components/grid/src/utils/is.d.ts.map +1 -0
  77. package/dist/components/grid/src/utils/responsive-observe.d.ts +1 -0
  78. package/dist/components/grid/src/utils/responsive-observe.d.ts.map +1 -0
  79. package/dist/components/input-group/index.d.ts +2 -1
  80. package/dist/components/input-group/index.d.ts.map +1 -0
  81. package/dist/components/input-group/src/{input-group.vue.d.ts → input-group.d.ts} +3 -1
  82. package/dist/components/input-group/src/input-group.d.ts.map +1 -0
  83. package/dist/components/input-group/src/type.d.ts +1 -0
  84. package/dist/components/input-group/src/type.d.ts.map +1 -0
  85. package/dist/components/input-search/index.d.ts +2 -1
  86. package/dist/components/input-search/index.d.ts.map +1 -0
  87. package/dist/components/input-search/src/{input-search.vue.d.ts → input-search.d.ts} +6 -4
  88. package/dist/components/input-search/src/input-search.d.ts.map +1 -0
  89. package/dist/components/input-search/src/type.d.ts +1 -0
  90. package/dist/components/input-search/src/type.d.ts.map +1 -0
  91. package/dist/components/nav-tabs/index.d.ts +2 -1
  92. package/dist/components/nav-tabs/index.d.ts.map +1 -0
  93. package/dist/components/nav-tabs/src/{nav-tabs.vue.d.ts → nav-tabs.d.ts} +6 -4
  94. package/dist/components/nav-tabs/src/nav-tabs.d.ts.map +1 -0
  95. package/dist/components/nav-tabs/src/type.d.ts +1 -0
  96. package/dist/components/nav-tabs/src/type.d.ts.map +1 -0
  97. package/dist/components/page-layout/index.d.ts +2 -1
  98. package/dist/components/page-layout/index.d.ts.map +1 -0
  99. package/dist/components/page-layout/src/page-layout.d.ts +219 -0
  100. package/dist/components/page-layout/src/page-layout.d.ts.map +1 -0
  101. package/dist/components/page-layout/src/{split-button.vue.d.ts → split-button.d.ts} +5 -3
  102. package/dist/components/page-layout/src/split-button.d.ts.map +1 -0
  103. package/dist/components/page-layout/src/type.d.ts +8 -0
  104. package/dist/components/page-layout/src/type.d.ts.map +1 -0
  105. package/dist/components/page-layout/src/useAutoCollapse.d.ts +1 -0
  106. package/dist/components/page-layout/src/useAutoCollapse.d.ts.map +1 -0
  107. package/dist/components/table/index.d.ts +5 -2
  108. package/dist/components/table/index.d.ts.map +1 -0
  109. package/dist/components/table/src/{TableColumn.vue.d.ts → table-column.d.ts} +1 -0
  110. package/dist/components/table/src/table-column.d.ts.map +1 -0
  111. package/dist/components/table/src/type.d.ts +7 -6
  112. package/dist/components/table/src/type.d.ts.map +1 -0
  113. package/dist/components/tabs/index.d.ts +2 -1
  114. package/dist/components/tabs/index.d.ts.map +1 -0
  115. package/dist/components/tabs/src/{tabs.vue.d.ts → tabs.d.ts} +16 -14
  116. package/dist/components/tabs/src/tabs.d.ts.map +1 -0
  117. package/dist/components/tabs/src/type.d.ts +1 -0
  118. package/dist/components/tabs/src/type.d.ts.map +1 -0
  119. package/dist/components/tag/index.d.ts +2 -1
  120. package/dist/components/tag/index.d.ts.map +1 -0
  121. package/dist/components/tag/src/{tag.vue.d.ts → tag.d.ts} +7 -5
  122. package/dist/components/tag/src/tag.d.ts.map +1 -0
  123. package/dist/components/tag/src/type.d.ts +1 -0
  124. package/dist/components/tag/src/type.d.ts.map +1 -0
  125. package/dist/components/tree-transfer/index.d.ts +2 -1
  126. package/dist/components/tree-transfer/index.d.ts.map +1 -0
  127. package/dist/components/tree-transfer/src/tree-transfer.d.ts +14438 -0
  128. package/dist/components/tree-transfer/src/tree-transfer.d.ts.map +1 -0
  129. package/dist/components/tree-transfer/src/type.d.ts +1 -0
  130. package/dist/components/tree-transfer/src/type.d.ts.map +1 -0
  131. package/dist/components/tree-transfer/src/utils.d.ts +1 -0
  132. package/dist/components/tree-transfer/src/utils.d.ts.map +1 -0
  133. package/dist/gi.css +1 -1
  134. package/dist/global.d.ts +26 -0
  135. package/dist/hooks/index.d.ts +1 -0
  136. package/dist/hooks/index.d.ts.map +1 -0
  137. package/dist/hooks/useBemClass.d.ts +1 -0
  138. package/dist/hooks/useBemClass.d.ts.map +1 -0
  139. package/dist/hooks/useNavTabs.d.ts +1 -0
  140. package/dist/hooks/useNavTabs.d.ts.map +1 -0
  141. package/dist/index.d.ts +3 -2
  142. package/dist/index.d.ts.map +1 -0
  143. package/dist/index.es.js +39 -36
  144. package/dist/index.es.js.map +1 -1
  145. package/dist/index.umd.js +1 -1
  146. package/dist/index.umd.js.map +1 -1
  147. package/dist/types/tool.d.ts +1 -0
  148. package/dist/types/tool.d.ts.map +1 -0
  149. package/dist/utils/createSelectDialog.d.ts +1 -0
  150. package/dist/utils/createSelectDialog.d.ts.map +1 -0
  151. package/dist/utils/index.d.ts +1 -0
  152. package/dist/utils/index.d.ts.map +1 -0
  153. package/package.json +7 -6
  154. package/dist/components/card/src/card.vue.d.ts +0 -35
  155. package/dist/components/descriptions/src/descriptions.vue.d.ts +0 -20
  156. package/dist/components/dialog/src/dialog-content.vue.d.ts +0 -9
  157. package/dist/components/dialog/src/dialog.vue.d.ts +0 -43
  158. package/dist/components/dot/src/dot.vue.d.ts +0 -7
  159. package/dist/components/drawer/src/drawer.vue.d.ts +0 -47
  160. package/dist/components/page-layout/src/page-layout.vue.d.ts +0 -21
  161. package/dist/components/plus-tabs/index.d.ts +0 -8
  162. package/dist/components/plus-tabs/src/context.d.ts +0 -26
  163. package/dist/components/plus-tabs/src/plus-tab-pane.vue.d.ts +0 -39
  164. package/dist/components/plus-tabs/src/plus-tabs.vue.d.ts +0 -78
  165. package/dist/components/plus-tabs/src/type.d.ts +0 -5
  166. package/dist/components/tab/index.d.ts +0 -2
  167. package/dist/components/tab/src/context.d.ts +0 -10
  168. package/dist/components/tab/src/tab-item.vue.d.ts +0 -26
  169. package/dist/components/tab/src/tab.vue.d.ts +0 -44
  170. package/dist/components/tab/src/type.d.ts +0 -21
  171. package/dist/components/tab/src/use-nav-tabs.d.ts +0 -2
  172. package/dist/components/tab/src/use-tabs.d.ts +0 -13
  173. package/dist/components/table/src/table.d.ts +0 -4
  174. package/dist/components/table/src/table.vue.d.ts +0 -4
  175. package/dist/components/table-pro/index.d.ts +0 -4
  176. package/dist/components/table-pro/src/table-pro-column-setting.vue.d.ts +0 -13
  177. package/dist/components/table-pro/src/type.d.ts +0 -5
  178. package/dist/components/tree-transfer/src/tree-transfer.vue.d.ts +0 -14436
  179. package/dist/components.d.ts +0 -27
  180. package/packages/components/button/index.ts +0 -5
  181. package/packages/components/button/src/button.vue +0 -60
  182. package/packages/components/button/src/type.ts +0 -15
  183. package/packages/components/card/index.ts +0 -5
  184. package/packages/components/card/src/card.vue +0 -171
  185. package/packages/components/card/src/type.ts +0 -12
  186. package/packages/components/descriptions/index.ts +0 -5
  187. package/packages/components/descriptions/src/descriptions.vue +0 -72
  188. package/packages/components/descriptions/src/type.ts +0 -44
  189. package/packages/components/dialog/index.ts +0 -6
  190. package/packages/components/dialog/src/dialog-content.vue +0 -40
  191. package/packages/components/dialog/src/dialog.ts +0 -131
  192. package/packages/components/dialog/src/dialog.vue +0 -114
  193. package/packages/components/dialog/src/type.ts +0 -16
  194. package/packages/components/dot/index.ts +0 -5
  195. package/packages/components/dot/src/dot.vue +0 -107
  196. package/packages/components/dot/src/type.ts +0 -6
  197. package/packages/components/drawer/index.ts +0 -6
  198. package/packages/components/drawer/src/drawer.ts +0 -84
  199. package/packages/components/drawer/src/drawer.vue +0 -114
  200. package/packages/components/drawer/src/type.ts +0 -15
  201. package/packages/components/edit-table/index.ts +0 -5
  202. package/packages/components/edit-table/src/edit-table.vue +0 -201
  203. package/packages/components/edit-table/src/type.ts +0 -51
  204. package/packages/components/flex/index.ts +0 -5
  205. package/packages/components/flex/src/flex.vue +0 -95
  206. package/packages/components/flex/src/type.ts +0 -18
  207. package/packages/components/form/index.ts +0 -5
  208. package/packages/components/form/src/form.vue +0 -424
  209. package/packages/components/form/src/type.ts +0 -85
  210. package/packages/components/grid/index.ts +0 -8
  211. package/packages/components/grid/src/context.ts +0 -30
  212. package/packages/components/grid/src/grid-item.vue +0 -143
  213. package/packages/components/grid/src/grid.vue +0 -151
  214. package/packages/components/grid/src/hook/use-index.ts +0 -63
  215. package/packages/components/grid/src/hook/use-responsive-state.ts +0 -66
  216. package/packages/components/grid/src/hook/use-responsive-value.ts +0 -36
  217. package/packages/components/grid/src/interface.ts +0 -74
  218. package/packages/components/grid/src/type.ts +0 -0
  219. package/packages/components/grid/src/utils/global-config.ts +0 -6
  220. package/packages/components/grid/src/utils/index.ts +0 -73
  221. package/packages/components/grid/src/utils/is.ts +0 -9
  222. package/packages/components/grid/src/utils/responsive-observe.ts +0 -135
  223. package/packages/components/input-group/index.ts +0 -5
  224. package/packages/components/input-group/src/input-group.vue +0 -79
  225. package/packages/components/input-group/src/type.ts +0 -1
  226. package/packages/components/input-search/index.ts +0 -5
  227. package/packages/components/input-search/src/input-search.vue +0 -48
  228. package/packages/components/input-search/src/type.ts +0 -6
  229. package/packages/components/nav-tabs/index.ts +0 -8
  230. package/packages/components/nav-tabs/src/nav-tabs.vue +0 -235
  231. package/packages/components/nav-tabs/src/type.ts +0 -24
  232. package/packages/components/page-layout/index.ts +0 -5
  233. package/packages/components/page-layout/src/page-layout.vue +0 -203
  234. package/packages/components/page-layout/src/split-button.vue +0 -107
  235. package/packages/components/page-layout/src/type.ts +0 -16
  236. package/packages/components/page-layout/src/useAutoCollapse.ts +0 -88
  237. package/packages/components/table/index.ts +0 -5
  238. package/packages/components/table/src/TableColumn.vue +0 -43
  239. package/packages/components/table/src/table.vue +0 -89
  240. package/packages/components/table/src/type.ts +0 -24
  241. package/packages/components/tabs/index.ts +0 -5
  242. package/packages/components/tabs/src/tabs.vue +0 -139
  243. package/packages/components/tabs/src/type.ts +0 -15
  244. package/packages/components/tag/index.ts +0 -5
  245. package/packages/components/tag/src/tag.vue +0 -355
  246. package/packages/components/tag/src/type.ts +0 -38
  247. package/packages/components/tree-transfer/index.ts +0 -5
  248. package/packages/components/tree-transfer/src/tree-transfer.vue +0 -225
  249. package/packages/components/tree-transfer/src/type.ts +0 -7
  250. package/packages/components/tree-transfer/src/utils.ts +0 -23
  251. package/packages/components.d.ts +0 -34
  252. package/packages/hooks/index.ts +0 -2
  253. package/packages/hooks/useBemClass.ts +0 -11
  254. package/packages/hooks/useNavTabs.ts +0 -497
  255. package/packages/index.ts +0 -118
  256. package/packages/styles/el.scss +0 -90
  257. package/packages/styles/index.scss +0 -141
  258. package/packages/styles/var.scss +0 -1
  259. package/packages/types/global.d.ts +0 -7
  260. package/packages/types/tool.ts +0 -14
  261. package/packages/utils/createSelectDialog.ts +0 -74
  262. package/packages/utils/index.ts +0 -1
@@ -1,30 +0,0 @@
1
- import type { InjectionKey } from 'vue'
2
- import type { GridItemData } from './interface'
3
-
4
- export type RowContextContext = Readonly<{
5
- gutter?: [number, number]
6
- div?: boolean
7
- }>
8
-
9
- export const RowContextInjectionKey: InjectionKey<RowContextContext> = Symbol(
10
- 'RowContextInjectionKey'
11
- )
12
-
13
- export type GridContext = Readonly<{
14
- overflow: boolean
15
- displayIndexList: number[]
16
- cols: number
17
- colGap: number
18
- }>
19
-
20
- export const GridContextInjectionKey: InjectionKey<GridContext> = Symbol(
21
- 'GridContextInjectionKey'
22
- )
23
-
24
- export type GridDataCollector = Readonly<{
25
- collectItemData: (index: number, itemData: GridItemData) => void
26
- removeItemData: (index: number) => void
27
- }>
28
-
29
- export const GridDataCollectorInjectionKey: InjectionKey<GridDataCollector>
30
- = Symbol('GridDataCollectorInjectionKey')
@@ -1,143 +0,0 @@
1
- <template>
2
- <div ref="domRef" :class="classNames" :style="style">
3
- <slot :overflow="overflow" />
4
- </div>
5
- </template>
6
-
7
- <script lang="ts">
8
- import type { PropType } from 'vue'
9
- import type { ResponsiveValue } from './interface'
10
- import {
11
- computed,
12
- defineComponent,
13
- inject,
14
- onUnmounted,
15
- ref,
16
- toRefs,
17
- watchEffect
18
- } from 'vue'
19
- import {
20
- GridContextInjectionKey,
21
- GridDataCollectorInjectionKey
22
- } from './context'
23
- import { useIndex } from './hook/use-index'
24
- import { useResponsiveState } from './hook/use-responsive-state'
25
- import { resolveItemData } from './utils'
26
- import { getPrefixCls } from './utils/global-config'
27
-
28
- /**
29
- * @version 2.15.0
30
- * @zh 响应式配置从 `2.18.0` 开始支持,具体配置 [ResponsiveValue](#responsivevalue)
31
- * @en Responsive configuration has been supported since `2.18.0`, the specific configuration [ResponsiveValue](#responsivevalue)
32
- */
33
- export default defineComponent({
34
- name: 'GridItem',
35
- props: {
36
- /**
37
- * @zh 跨越的格数
38
- * @en Number of grids spanned
39
- */
40
- span: {
41
- type: [Number, Object] as PropType<number | ResponsiveValue>,
42
- default: 1
43
- },
44
- /**
45
- * @zh 左侧的间隔格数
46
- * @en Number of grids on the left
47
- */
48
- offset: {
49
- type: [Number, Object] as PropType<number | ResponsiveValue>,
50
- default: 0
51
- },
52
- /**
53
- * @zh 是否是后缀元素
54
- * @en Is it a suffix element
55
- */
56
- suffix: {
57
- type: Boolean,
58
- default: false
59
- }
60
- },
61
- setup(props) {
62
- const prefixCls = getPrefixCls('grid-item')
63
- const domRef = ref<HTMLDivElement>()
64
- const { computedIndex } = useIndex({
65
- itemRef: domRef,
66
- selector: `.${prefixCls}`
67
- })
68
- const gridContext = inject(GridContextInjectionKey, {
69
- overflow: false,
70
- displayIndexList: [],
71
- cols: 24,
72
- colGap: 0
73
- })
74
- const gridDataCollector = inject(GridDataCollectorInjectionKey)
75
- const visible = computed(() =>
76
- gridContext?.displayIndexList?.includes(computedIndex.value)
77
- )
78
- const { span: propSpan, offset: propOffset } = toRefs(props)
79
- const rSpan = useResponsiveState(propSpan, 1)
80
- const rOffset = useResponsiveState(propOffset, 0)
81
- const itemData = computed(() =>
82
- resolveItemData(gridContext.cols, {
83
- ...props,
84
- span: rSpan.value,
85
- offset: rOffset.value
86
- })
87
- )
88
-
89
- const classNames = computed(() => [prefixCls])
90
- const offsetStyle = computed(() => {
91
- const { offset, span } = itemData.value
92
- const { colGap } = gridContext
93
- if (offset > 0) {
94
- const oneSpan = `(100% - ${colGap * (span - 1)}px) / ${span}`
95
- return {
96
- 'margin-left': `calc((${oneSpan} * ${offset}) + ${colGap * offset}px)`
97
- }
98
- }
99
- return {}
100
- })
101
- const columnStart = computed(() => {
102
- const { suffix, span } = itemData.value
103
- const { cols } = gridContext
104
- if (suffix) {
105
- return `${cols - span + 1}`
106
- }
107
- return `span ${span}`
108
- })
109
- const style = computed(() => {
110
- const { span } = itemData.value
111
- if (domRef.value) {
112
- return [
113
- {
114
- 'grid-column': `${columnStart.value} / span ${span}`
115
- },
116
- offsetStyle.value,
117
- !visible.value || span === 0 ? { display: 'none' } : {}
118
- ]
119
- }
120
- return []
121
- })
122
-
123
- watchEffect(() => {
124
- if (computedIndex.value !== -1) {
125
- gridDataCollector?.collectItemData(computedIndex.value, itemData.value)
126
- }
127
- })
128
-
129
- onUnmounted(() => {
130
- if (computedIndex.value !== -1) {
131
- gridDataCollector?.removeItemData(computedIndex.value)
132
- }
133
- })
134
-
135
- return {
136
- classNames,
137
- style,
138
- domRef,
139
- overflow: computed(() => gridContext.overflow)
140
- }
141
- }
142
- })
143
- </script>
@@ -1,151 +0,0 @@
1
- <template>
2
- <div :class="classNames" :style="style">
3
- <slot></slot>
4
- </div>
5
- </template>
6
-
7
- <script lang="ts">
8
- import type { PropType } from 'vue'
9
- import type { GridItemData, ResponsiveValue } from './interface'
10
- import {
11
- computed,
12
- defineComponent,
13
- provide,
14
- reactive,
15
- toRefs,
16
- watchEffect
17
- } from 'vue'
18
- import {
19
- GridContextInjectionKey,
20
- GridDataCollectorInjectionKey
21
- } from './context'
22
- import { useResponsiveState } from './hook/use-responsive-state'
23
- import { setItemVisible } from './utils'
24
- import { getPrefixCls } from './utils/global-config'
25
-
26
- /**
27
- * @version 2.15.0
28
- * @zh 响应式配置从 `2.18.0` 开始支持,具体配置 [ResponsiveValue](#responsivevalue)
29
- * @en Responsive configuration has been supported since `2.18.0`, the specific configuration [ResponsiveValue](#responsivevalue)
30
- */
31
- export default defineComponent({
32
- name: 'Grid',
33
- props: {
34
- /**
35
- * @zh 每一行展示的列数
36
- * @en Number of columns displayed in each row
37
- */
38
- cols: {
39
- type: [Number, Object] as PropType<number | ResponsiveValue>,
40
- default: 24
41
- },
42
- /**
43
- * @zh 行与行之间的间距
44
- * @en The space in row-to-row
45
- */
46
- rowGap: {
47
- type: [Number, Object] as PropType<number | ResponsiveValue>,
48
- default: 0
49
- },
50
- /**
51
- * @zh 列与列之间的间距
52
- * @en The space in column-to-column
53
- */
54
- colGap: {
55
- type: [Number, Object] as PropType<number | ResponsiveValue>,
56
- default: 0
57
- },
58
- /**
59
- * @zh 是否折叠
60
- * @en Whether to collapsed
61
- */
62
- collapsed: {
63
- type: Boolean,
64
- default: false
65
- },
66
- /**
67
- * @zh 折叠时显示的行数
68
- * @en Number of rows displayed when collapsed
69
- */
70
- collapsedRows: {
71
- type: Number,
72
- default: 1
73
- }
74
- },
75
- setup(props) {
76
- const {
77
- cols: propCols,
78
- rowGap: propRowGap,
79
- colGap: propColGap,
80
- collapsedRows,
81
- collapsed
82
- } = toRefs(props)
83
- const cols = useResponsiveState(propCols, 24)
84
- const colGap = useResponsiveState(propColGap, 0)
85
- const rowGap = useResponsiveState(propRowGap, 0)
86
- const prefixCls = getPrefixCls('grid')
87
- const classNames = computed(() => [prefixCls])
88
- const style = computed(() => [
89
- {
90
- 'gap': `${rowGap.value}px ${colGap.value}px`,
91
- 'grid-template-columns': `repeat(${cols.value}, minmax(0px, 1fr))`
92
- }
93
- ])
94
- const itemDataMap = reactive<Map<number, GridItemData>>(new Map())
95
- const itemDataList = computed(() => {
96
- const list: GridItemData[] = []
97
- for (const [index, itemData] of itemDataMap.entries()) {
98
- list[index] = itemData
99
- }
100
- return list
101
- })
102
- const gridContext = reactive<{
103
- overflow: boolean
104
- displayIndexList: number[]
105
- cols: number
106
- colGap: number
107
- }>({
108
- overflow: false,
109
- displayIndexList: [],
110
- cols: cols.value,
111
- colGap: colGap.value
112
- })
113
-
114
- watchEffect(() => {
115
- gridContext.cols = cols.value
116
- gridContext.colGap = colGap.value
117
- })
118
- watchEffect(() => {
119
- const displayInfo = setItemVisible({
120
- cols: cols.value,
121
- collapsed: collapsed.value,
122
- collapsedRows: collapsedRows.value,
123
- itemDataList: itemDataList.value
124
- })
125
- gridContext.overflow = displayInfo.overflow
126
- gridContext.displayIndexList = displayInfo.displayIndexList
127
- })
128
-
129
- provide(GridContextInjectionKey, gridContext)
130
- provide(GridDataCollectorInjectionKey, {
131
- collectItemData(index, itemData) {
132
- itemDataMap.set(index, itemData)
133
- },
134
- removeItemData(index) {
135
- itemDataMap.delete(index)
136
- }
137
- })
138
-
139
- return {
140
- classNames,
141
- style
142
- }
143
- }
144
- })
145
- </script>
146
-
147
- <style lang="scss" scoped>
148
- .gi-grid {
149
- display: grid;
150
- }
151
- </style>
@@ -1,63 +0,0 @@
1
- import type { Ref } from 'vue'
2
- import { computed, onMounted, onUpdated, ref, watch } from 'vue'
3
-
4
- function isUndefined(obj: any): obj is undefined {
5
- return obj === undefined
6
- }
7
-
8
- export function useIndex({
9
- itemRef,
10
- selector,
11
- index,
12
- parentClassName
13
- }: {
14
- itemRef: Ref<HTMLElement | undefined>
15
- selector: string
16
- index?: Ref<number | undefined>
17
- parentClassName?: string
18
- }) {
19
- const _index = ref(-1)
20
- const computedIndex = computed(() => index?.value ?? _index.value)
21
-
22
- const parent = ref<HTMLElement>()
23
-
24
- const getParent = () => {
25
- let parent = itemRef.value?.parentElement ?? undefined
26
- if (parentClassName) {
27
- while (parent && !parent.className.includes(parentClassName)) {
28
- parent = parent.parentElement ?? undefined
29
- }
30
- }
31
- return parent
32
- }
33
-
34
- const getIndex = () => {
35
- if (isUndefined(index?.value) && parent.value && itemRef.value) {
36
- const index = Array.from(parent.value.querySelectorAll(selector)).indexOf(
37
- itemRef.value
38
- )
39
- if (index !== _index.value) {
40
- _index.value = index
41
- }
42
- }
43
- }
44
-
45
- watch(itemRef, () => {
46
- if (itemRef.value && !parent.value) {
47
- parent.value = getParent()
48
- }
49
- })
50
-
51
- onMounted(() => {
52
- if (itemRef.value) {
53
- parent.value = getParent()
54
- }
55
- getIndex()
56
- })
57
-
58
- onUpdated(() => getIndex())
59
-
60
- return {
61
- computedIndex
62
- }
63
- }
@@ -1,66 +0,0 @@
1
- import type { Ref } from 'vue'
2
- import type { ResponsiveValue } from '../interface'
3
- import type { ScreenMap } from '../utils/responsive-observe'
4
- import { computed, onMounted, onUnmounted, ref } from 'vue'
5
- import { isObject } from '../utils/is'
6
- import ResponsiveObserve, {
7
- responsiveArray
8
- } from '../utils/responsive-observe'
9
-
10
- function isResponsiveValue(
11
- val: number | ResponsiveValue
12
- ): val is ResponsiveValue {
13
- return isObject(val)
14
- }
15
-
16
- export function useResponsiveState(
17
- val: Ref<number | ResponsiveValue>,
18
- defaultVal: number,
19
- fallbackToXs = false
20
- ) {
21
- const screens = ref<ScreenMap>({
22
- xs: true,
23
- sm: true,
24
- md: true,
25
- lg: true,
26
- xl: true,
27
- xxl: true
28
- })
29
- const result = computed(() => {
30
- let res = defaultVal
31
- if (isResponsiveValue(val.value)) {
32
- for (let i = 0; i < responsiveArray.length; i++) {
33
- const breakpoint = responsiveArray[i]
34
- if (
35
- (screens.value[breakpoint]
36
- || (breakpoint === 'xs' && fallbackToXs))
37
- && val.value[breakpoint] !== undefined
38
- ) {
39
- res = val.value[breakpoint] as number
40
- break
41
- }
42
- }
43
- } else {
44
- res = val.value
45
- }
46
- return res
47
- })
48
-
49
- let subscribeToken = ''
50
-
51
- onMounted(() => {
52
- subscribeToken = ResponsiveObserve.subscribe((screensVal) => {
53
- if (isResponsiveValue(val.value)) {
54
- screens.value = screensVal
55
- }
56
- })
57
- })
58
-
59
- onUnmounted(() => {
60
- if (subscribeToken) {
61
- ResponsiveObserve.unsubscribe(subscribeToken)
62
- }
63
- })
64
-
65
- return result
66
- }
@@ -1,36 +0,0 @@
1
- import type { Ref } from 'vue'
2
- import type { ResponsiveValue } from '../interface'
3
- import { computed } from 'vue'
4
- import { isNumber, isObject } from '../utils/is'
5
- import { responsiveArray } from '../utils/responsive-observe'
6
-
7
- export function useResponsiveValue(
8
- props: Ref<{
9
- val: number
10
- key: string
11
- xs?: number | { [key: string]: any }
12
- sm?: number | { [key: string]: any }
13
- md?: number | { [key: string]: any }
14
- lg?: number | { [key: string]: any }
15
- xl?: number | { [key: string]: any }
16
- xxl?: number | { [key: string]: any }
17
- }>
18
- ) {
19
- const value = computed(() => {
20
- const { val, key, xs, sm, md, lg, xl, xxl } = props.value
21
- if (!xs && !sm && !md && !lg && !xl && !xxl) {
22
- return val
23
- }
24
- const result: ResponsiveValue = {}
25
- responsiveArray.forEach((breakpoint) => {
26
- const config = props.value[breakpoint]
27
- if (isNumber(config)) {
28
- result[breakpoint] = config
29
- } else if (isObject(config) && isNumber(config[key])) {
30
- result[breakpoint] = config[key]
31
- }
32
- })
33
- return result
34
- })
35
- return value
36
- }
@@ -1,74 +0,0 @@
1
- export interface ResponsiveValue {
2
- /**
3
- * @zh >= 1600px 响应式配置
4
- * @en >= 1600px responsive configuration
5
- */
6
- xxl?: number
7
- /**
8
- * @zh >= 1200px 响应式配置
9
- * @en >= 1200px responsive configuration
10
- */
11
- xl?: number
12
- /**
13
- * @zh >= 992px 响应式配置
14
- * @en >= 992px responsive configuration
15
- */
16
- lg?: number
17
- /**
18
- * @zh >= 768px 响应式配置
19
- * @en >= 768px responsive configuration
20
- */
21
- md?: number
22
- /**
23
- * @zh >= 576px 响应式配置
24
- * @en >= 576px responsive configuration
25
- */
26
- sm?: number
27
- /**
28
- * @zh < 576px 响应式配置
29
- * @en <576px responsive configuration
30
- */
31
- xs?: number
32
- }
33
-
34
- export type FlexType = number | string | 'initial' | 'auto' | 'none'
35
-
36
- export interface RowProps {
37
- gutter?: number | ResponsiveValue | ResponsiveValue[]
38
- justify?: 'start' | 'center' | 'end' | 'space-around' | 'space-between'
39
- align?: 'start' | 'center' | 'end' | 'stretch'
40
- div?: boolean
41
- wrap?: boolean
42
- }
43
-
44
- export interface ColProps {
45
- span?: number
46
- offset?: number | undefined
47
- order?: number | undefined
48
- xs?: number | { [key: string]: any } | undefined
49
- sm?: number | { [key: string]: any } | undefined
50
- md?: number | { [key: string]: any } | undefined
51
- lg?: number | { [key: string]: any } | undefined
52
- xl?: number | { [key: string]: any } | undefined
53
- xxl?: number | { [key: string]: any } | undefined
54
- flex?: number | string | 'initial' | 'auto' | 'none' | undefined
55
- }
56
-
57
- export interface GridProps {
58
- cols?: number | ResponsiveValue
59
- rowGap?: number | ResponsiveValue
60
- colGap?: number | ResponsiveValue
61
- collapsed?: boolean
62
- collapsedRows?: number
63
- }
64
-
65
- export interface GridItemProps {
66
- span?: number | ResponsiveValue
67
- offset?: number | ResponsiveValue
68
- suffix?: boolean
69
- }
70
-
71
- export interface GridItemData extends GridItemProps {
72
- span: number
73
- offset: number
74
- }
File without changes
@@ -1,6 +0,0 @@
1
- import { useBemClass } from '../../../../hooks'
2
-
3
- export function getPrefixCls(name: string) {
4
- const { b } = useBemClass()
5
- return b(name)
6
- }
@@ -1,73 +0,0 @@
1
- import type { GridItemData } from '../interface'
2
-
3
- export function resolveItemData(
4
- cols: number,
5
- props: GridItemData
6
- ): GridItemData {
7
- const originSpan = props.span ?? 1
8
- const originOffset = props.offset ?? 0
9
- const offset = Math.min(originOffset, cols)
10
- const span = Math.min(
11
- offset > 0 ? originSpan + originOffset : originSpan,
12
- cols
13
- )
14
- return {
15
- span,
16
- offset,
17
- suffix: 'suffix' in props ? props.suffix !== false : false
18
- }
19
- }
20
-
21
- export function setItemVisible({
22
- cols,
23
- collapsed,
24
- collapsedRows,
25
- itemDataList
26
- }: {
27
- cols: number
28
- collapsed: boolean
29
- collapsedRows: number
30
- itemDataList: GridItemData[]
31
- }) {
32
- let overflow = false
33
- let displayIndexList: number[] = []
34
-
35
- function isOverflow(span: number) {
36
- return Math.ceil(span / cols) > collapsedRows
37
- }
38
-
39
- if (collapsed) {
40
- let spanSum = 0
41
- for (let i = 0; i < itemDataList.length; i++) {
42
- if (itemDataList[i].suffix) {
43
- spanSum += itemDataList[i].span
44
- displayIndexList.push(i)
45
- }
46
- }
47
- if (!isOverflow(spanSum)) {
48
- let current = 0
49
- while (current < itemDataList.length) {
50
- const item = itemDataList[current]
51
- if (!item.suffix) {
52
- spanSum += item.span
53
-
54
- if (isOverflow(spanSum)) {
55
- break
56
- }
57
- displayIndexList.push(current)
58
- }
59
- current++
60
- }
61
- }
62
- overflow = itemDataList.some(
63
- (item, index) => !item.suffix && !displayIndexList.includes(index)
64
- )
65
- } else {
66
- displayIndexList = itemDataList.map((_, index) => index)
67
- }
68
-
69
- return {
70
- overflow,
71
- displayIndexList
72
- }
73
- }
@@ -1,9 +0,0 @@
1
- const opt = Object.prototype.toString
2
-
3
- export function isObject(obj: unknown): obj is Record<string, any> {
4
- return opt.call(obj) === '[object Object]'
5
- }
6
-
7
- export function isNumber(obj: any): obj is number {
8
- return opt.call(obj) === '[object Number]' && obj === obj; // eslint-disable-line
9
- }