yy-vue-easytable 2.27.2

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 (205) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +187 -0
  3. package/libs/font/demo.css +539 -0
  4. package/libs/font/demo_index.html +400 -0
  5. package/libs/font/iconfont.css +57 -0
  6. package/libs/font/iconfont.eot +0 -0
  7. package/libs/font/iconfont.js +1 -0
  8. package/libs/font/iconfont.json +79 -0
  9. package/libs/font/iconfont.svg +56 -0
  10. package/libs/font/iconfont.ttf +0 -0
  11. package/libs/font/iconfont.woff +0 -0
  12. package/libs/font/iconfont.woff2 +0 -0
  13. package/libs/locale/lang/af-ZA.js +48 -0
  14. package/libs/locale/lang/en-US.js +48 -0
  15. package/libs/locale/lang/fr-FR.js +48 -0
  16. package/libs/locale/lang/ko-KR.js +48 -0
  17. package/libs/locale/lang/pt-BR.js +48 -0
  18. package/libs/locale/lang/ru-RU.js +48 -0
  19. package/libs/locale/lang/zh-CN.js +48 -0
  20. package/libs/locale/lang/zh-TW.js +48 -0
  21. package/libs/locale/lang/zu-ZA.js +48 -0
  22. package/libs/main.js +1 -0
  23. package/libs/theme-dark/base.css +1 -0
  24. package/libs/theme-dark/index.css +1253 -0
  25. package/libs/theme-dark/var.css +7 -0
  26. package/libs/theme-dark/ve-checkbox.css +150 -0
  27. package/libs/theme-dark/ve-contextmenu.css +71 -0
  28. package/libs/theme-dark/ve-dropdown.css +177 -0
  29. package/libs/theme-dark/ve-icon.css +10 -0
  30. package/libs/theme-dark/ve-loading.css +218 -0
  31. package/libs/theme-dark/ve-pagination.css +136 -0
  32. package/libs/theme-dark/ve-radio.css +111 -0
  33. package/libs/theme-dark/ve-select.css +50 -0
  34. package/libs/theme-dark/ve-table.css +385 -0
  35. package/libs/theme-default/base.css +1 -0
  36. package/libs/theme-default/index.css +1253 -0
  37. package/libs/theme-default/var.css +7 -0
  38. package/libs/theme-default/ve-checkbox.css +150 -0
  39. package/libs/theme-default/ve-contextmenu.css +71 -0
  40. package/libs/theme-default/ve-dropdown.css +177 -0
  41. package/libs/theme-default/ve-icon.css +10 -0
  42. package/libs/theme-default/ve-loading.css +218 -0
  43. package/libs/theme-default/ve-pagination.css +136 -0
  44. package/libs/theme-default/ve-radio.css +111 -0
  45. package/libs/theme-default/ve-select.css +50 -0
  46. package/libs/theme-default/ve-table.css +385 -0
  47. package/libs/umd/index.js +9 -0
  48. package/libs/ve-checkbox-group.js +1 -0
  49. package/libs/ve-checkbox.js +1 -0
  50. package/libs/ve-contextmenu.js +1 -0
  51. package/libs/ve-dropdown.js +1 -0
  52. package/libs/ve-icon.js +1 -0
  53. package/libs/ve-loading.js +1 -0
  54. package/libs/ve-locale.js +1 -0
  55. package/libs/ve-pagination.js +1 -0
  56. package/libs/ve-radio.js +1 -0
  57. package/libs/ve-select.js +1 -0
  58. package/libs/ve-table.js +1 -0
  59. package/package.json +142 -0
  60. package/packages/font/demo.css +539 -0
  61. package/packages/font/demo_index.html +400 -0
  62. package/packages/font/iconfont.css +57 -0
  63. package/packages/font/iconfont.eot +0 -0
  64. package/packages/font/iconfont.js +1 -0
  65. package/packages/font/iconfont.json +79 -0
  66. package/packages/font/iconfont.svg +56 -0
  67. package/packages/font/iconfont.ttf +0 -0
  68. package/packages/font/iconfont.woff +0 -0
  69. package/packages/font/iconfont.woff2 +0 -0
  70. package/packages/index.js +75 -0
  71. package/packages/src/comps/resize-observer/index.js +2 -0
  72. package/packages/src/comps/resize-observer/src/index.jsx +38 -0
  73. package/packages/src/directives/clickoutside.js +31 -0
  74. package/packages/src/directives/events-outside.js +79 -0
  75. package/packages/src/directives/focus.js +28 -0
  76. package/packages/src/locale/index.js +27 -0
  77. package/packages/src/locale/lang/af-ZA.js +29 -0
  78. package/packages/src/locale/lang/en-US.js +30 -0
  79. package/packages/src/locale/lang/fr-FR.js +29 -0
  80. package/packages/src/locale/lang/ko-KR.js +29 -0
  81. package/packages/src/locale/lang/pt-BR.js +29 -0
  82. package/packages/src/locale/lang/ru-RU.js +29 -0
  83. package/packages/src/locale/lang/zh-CN.js +30 -0
  84. package/packages/src/locale/lang/zh-TW.js +29 -0
  85. package/packages/src/locale/lang/zu-ZA.js +29 -0
  86. package/packages/src/mixins/emitter.js +39 -0
  87. package/packages/src/utils/animation-frame.js +39 -0
  88. package/packages/src/utils/auto-resize.js +179 -0
  89. package/packages/src/utils/constant.js +42 -0
  90. package/packages/src/utils/dom.js +239 -0
  91. package/packages/src/utils/event-key-codes.js +53 -0
  92. package/packages/src/utils/hooks-manager.js +76 -0
  93. package/packages/src/utils/index.js +161 -0
  94. package/packages/src/utils/mouse-event.js +24 -0
  95. package/packages/src/utils/random.js +6 -0
  96. package/packages/src/utils/request-animation-timeout.js +36 -0
  97. package/packages/src/utils/resize-event.js +40 -0
  98. package/packages/src/utils/scroll-bar.js +27 -0
  99. package/packages/style/ve-checkbox.less +179 -0
  100. package/packages/style/ve-contextmenu.less +76 -0
  101. package/packages/style/ve-dropdown.less +204 -0
  102. package/packages/style/ve-icon.less +3 -0
  103. package/packages/style/ve-loading.less +242 -0
  104. package/packages/style/ve-pagination.less +153 -0
  105. package/packages/style/ve-radio.less +126 -0
  106. package/packages/style/ve-select.less +48 -0
  107. package/packages/style/ve-table.less +539 -0
  108. package/packages/theme-dark/base.less +1 -0
  109. package/packages/theme-dark/index.less +12 -0
  110. package/packages/theme-dark/var.less +111 -0
  111. package/packages/theme-dark/ve-checkbox.less +2 -0
  112. package/packages/theme-dark/ve-contextmenu.less +2 -0
  113. package/packages/theme-dark/ve-dropdown.less +2 -0
  114. package/packages/theme-dark/ve-icon.less +2 -0
  115. package/packages/theme-dark/ve-loading.less +2 -0
  116. package/packages/theme-dark/ve-pagination.less +2 -0
  117. package/packages/theme-dark/ve-radio.less +2 -0
  118. package/packages/theme-dark/ve-select.less +2 -0
  119. package/packages/theme-dark/ve-table.less +2 -0
  120. package/packages/theme-default/base.less +1 -0
  121. package/packages/theme-default/index.less +12 -0
  122. package/packages/theme-default/var.less +111 -0
  123. package/packages/theme-default/ve-checkbox.less +2 -0
  124. package/packages/theme-default/ve-contextmenu.less +2 -0
  125. package/packages/theme-default/ve-dropdown.less +2 -0
  126. package/packages/theme-default/ve-icon.less +2 -0
  127. package/packages/theme-default/ve-loading.less +2 -0
  128. package/packages/theme-default/ve-pagination.less +2 -0
  129. package/packages/theme-default/ve-radio.less +2 -0
  130. package/packages/theme-default/ve-select.less +2 -0
  131. package/packages/theme-default/ve-table.less +2 -0
  132. package/packages/ve-checkbox/index.js +7 -0
  133. package/packages/ve-checkbox/src/index.jsx +175 -0
  134. package/packages/ve-checkbox/src/util/constant.js +14 -0
  135. package/packages/ve-checkbox/src/util/index.js +10 -0
  136. package/packages/ve-checkbox-group/index.js +7 -0
  137. package/packages/ve-checkbox-group/src/index.jsx +53 -0
  138. package/packages/ve-checkbox-group/src/util/constant.js +14 -0
  139. package/packages/ve-checkbox-group/src/util/index.js +10 -0
  140. package/packages/ve-contextmenu/index.js +7 -0
  141. package/packages/ve-contextmenu/src/index.jsx +731 -0
  142. package/packages/ve-contextmenu/src/util/constant.js +29 -0
  143. package/packages/ve-contextmenu/src/util/index.js +10 -0
  144. package/packages/ve-dropdown/index.js +7 -0
  145. package/packages/ve-dropdown/src/index.jsx +720 -0
  146. package/packages/ve-dropdown/src/util/constant.js +15 -0
  147. package/packages/ve-dropdown/src/util/index.js +10 -0
  148. package/packages/ve-icon/index.js +7 -0
  149. package/packages/ve-icon/src/index.jsx +52 -0
  150. package/packages/ve-icon/src/util/constant.js +10 -0
  151. package/packages/ve-icon/src/util/index.js +10 -0
  152. package/packages/ve-loading/index.js +8 -0
  153. package/packages/ve-loading/src/bounce.jsx +50 -0
  154. package/packages/ve-loading/src/flow.jsx +51 -0
  155. package/packages/ve-loading/src/grid.jsx +57 -0
  156. package/packages/ve-loading/src/index.js +106 -0
  157. package/packages/ve-loading/src/loading.jsx +63 -0
  158. package/packages/ve-loading/src/plane.jsx +38 -0
  159. package/packages/ve-loading/src/pulse.jsx +38 -0
  160. package/packages/ve-loading/src/util/constant.js +31 -0
  161. package/packages/ve-loading/src/util/index.js +10 -0
  162. package/packages/ve-loading/src/wave.jsx +53 -0
  163. package/packages/ve-locale/index.js +28 -0
  164. package/packages/ve-pagination/index.js +7 -0
  165. package/packages/ve-pagination/src/index.jsx +304 -0
  166. package/packages/ve-pagination/src/pager.jsx +166 -0
  167. package/packages/ve-pagination/src/util/constant.js +16 -0
  168. package/packages/ve-pagination/src/util/index.js +10 -0
  169. package/packages/ve-radio/index.js +7 -0
  170. package/packages/ve-radio/src/index.jsx +121 -0
  171. package/packages/ve-radio/src/util/constant.js +13 -0
  172. package/packages/ve-radio/src/util/index.js +10 -0
  173. package/packages/ve-select/index.js +7 -0
  174. package/packages/ve-select/src/index.jsx +193 -0
  175. package/packages/ve-select/src/util/constant.js +13 -0
  176. package/packages/ve-select/src/util/index.js +10 -0
  177. package/packages/ve-table/index.js +7 -0
  178. package/packages/ve-table/src/body/body-checkbox-content.jsx +126 -0
  179. package/packages/ve-table/src/body/body-radio-content.jsx +113 -0
  180. package/packages/ve-table/src/body/body-td.jsx +671 -0
  181. package/packages/ve-table/src/body/body-tr-scrolling.jsx +38 -0
  182. package/packages/ve-table/src/body/body-tr.jsx +383 -0
  183. package/packages/ve-table/src/body/expand-tr-icon.jsx +80 -0
  184. package/packages/ve-table/src/body/expand-tr.jsx +147 -0
  185. package/packages/ve-table/src/body/index.jsx +943 -0
  186. package/packages/ve-table/src/colgroup/index.jsx +48 -0
  187. package/packages/ve-table/src/column-resizer/index.jsx +318 -0
  188. package/packages/ve-table/src/editor/constant.js +5 -0
  189. package/packages/ve-table/src/editor/index.jsx +533 -0
  190. package/packages/ve-table/src/footer/footer-td.jsx +396 -0
  191. package/packages/ve-table/src/footer/footer-tr.jsx +249 -0
  192. package/packages/ve-table/src/footer/index.jsx +108 -0
  193. package/packages/ve-table/src/header/header-checkbox-content.jsx +69 -0
  194. package/packages/ve-table/src/header/header-filter-content.jsx +100 -0
  195. package/packages/ve-table/src/header/header-filter-custom-content.jsx +110 -0
  196. package/packages/ve-table/src/header/header-th.jsx +664 -0
  197. package/packages/ve-table/src/header/header-tr.jsx +255 -0
  198. package/packages/ve-table/src/header/index.jsx +195 -0
  199. package/packages/ve-table/src/index.jsx +4196 -0
  200. package/packages/ve-table/src/selection/constant.js +5 -0
  201. package/packages/ve-table/src/selection/index.jsx +1643 -0
  202. package/packages/ve-table/src/util/clipboard.js +428 -0
  203. package/packages/ve-table/src/util/constant.js +269 -0
  204. package/packages/ve-table/src/util/index.js +1585 -0
  205. package/packages/ve-table/src/util/store.js +14 -0
@@ -0,0 +1,48 @@
1
+ import { getValByUnit } from "../../../src/utils/index.js";
2
+ import { COMPS_NAME } from "../util/constant";
3
+ export default {
4
+ name: COMPS_NAME.VE_TABLE_COLGROUP,
5
+ props: {
6
+ colgroups: {
7
+ type: Array,
8
+ required: true,
9
+ },
10
+ enableColumnResize: {
11
+ type: Boolean,
12
+ required: true,
13
+ },
14
+ },
15
+ methods: {
16
+ getValByUnit(item) {
17
+ const { enableColumnResize } = this;
18
+
19
+ let width;
20
+ // 开启 column resize
21
+ if (enableColumnResize) {
22
+ // 解决使用 _columnResizeWidth 在多表头下宽度计算异常的问题
23
+ width = item._columnResizeWidth
24
+ ? item._columnResizeWidth
25
+ : item.width;
26
+ } else {
27
+ width = item.width;
28
+ }
29
+ return getValByUnit(width);
30
+ },
31
+ },
32
+ render() {
33
+ return (
34
+ <colgroup>
35
+ {this.colgroups.map((item) => {
36
+ return (
37
+ <col
38
+ key={item.key}
39
+ style={{
40
+ width: this.getValByUnit(item),
41
+ }}
42
+ />
43
+ );
44
+ })}
45
+ </colgroup>
46
+ );
47
+ },
48
+ };
@@ -0,0 +1,318 @@
1
+ import { clsName } from "../util";
2
+ import { COMPS_NAME, HOOKS_NAME } from "../util/constant";
3
+ import { isNumber } from "../../../src/utils/index.js";
4
+
5
+ export default {
6
+ name: COMPS_NAME.VE_TABLE_COLUMN_RESISZER,
7
+ props: {
8
+ parentRendered: {
9
+ type: Boolean,
10
+ required: true,
11
+ },
12
+ tableContainerEl: {
13
+ type: HTMLDivElement,
14
+ default: null,
15
+ },
16
+ hooks: {
17
+ type: Object,
18
+ required: true,
19
+ },
20
+ colgroups: {
21
+ type: Array,
22
+ required: true,
23
+ },
24
+ isColumnResizerHover: {
25
+ type: Boolean,
26
+ required: true,
27
+ },
28
+ isColumnResizing: {
29
+ type: Boolean,
30
+ required: true,
31
+ },
32
+ setIsColumnResizerHover: {
33
+ type: Function,
34
+ required: true,
35
+ },
36
+ setIsColumnResizing: {
37
+ type: Function,
38
+ required: true,
39
+ },
40
+ setColumnWidth: {
41
+ type: Function,
42
+ required: true,
43
+ },
44
+ // column width resize option
45
+ columnWidthResizeOption: {
46
+ type: Object,
47
+ default: function () {
48
+ return null;
49
+ },
50
+ },
51
+ },
52
+ data() {
53
+ return {
54
+ // column resizer start x
55
+ columnResizerStartX: 0,
56
+ // current resizing column
57
+ currentResizingColumn: null,
58
+ // column resizer handler width
59
+ columnResizerHandlerWidth: 5,
60
+ // column resizer rect
61
+ columnResizerRect: {
62
+ top: 0,
63
+ left: 0,
64
+ height: 0,
65
+ },
66
+ };
67
+ },
68
+ computed: {
69
+ // column min width
70
+ columnMinWidth() {
71
+ let result = 30;
72
+
73
+ const { columnWidthResizeOption } = this;
74
+
75
+ if (columnWidthResizeOption) {
76
+ const { minWidth } = columnWidthResizeOption;
77
+ if (isNumber(minWidth) && minWidth > 0) {
78
+ result = minWidth;
79
+ }
80
+ }
81
+ return result;
82
+ },
83
+ },
84
+ watch: {
85
+ parentRendered: {
86
+ handler: function (val) {
87
+ if (val) {
88
+ // header cell mousemove
89
+ this.hooks.addHook(
90
+ HOOKS_NAME.HEADER_CELL_MOUSEMOVE,
91
+ ({ event, column }) => {
92
+ if (column.disableResizing) return;
93
+ this.initColumnResizerPosition({ event, column });
94
+ },
95
+ );
96
+ }
97
+ },
98
+ immediate: true,
99
+ },
100
+ },
101
+ methods: {
102
+ // init column resizer position
103
+ initColumnResizerPosition({ event, column }) {
104
+ const { tableContainerEl, isColumnResizing } = this;
105
+
106
+ if (tableContainerEl && !isColumnResizing) {
107
+ const { left: tableContainerLeft, top: tableContainerTop } =
108
+ tableContainerEl.getBoundingClientRect();
109
+
110
+ const col = this.colgroups.find((x) => x.key === column.key);
111
+
112
+ // 表头分组,不支持分组表头列宽拖动
113
+ if (!col) {
114
+ return false;
115
+ }
116
+
117
+ if (col._realTimeWidth) {
118
+ const target = event.target;
119
+ const cellRect = target.getBoundingClientRect();
120
+ const { height, left, top } = cellRect;
121
+
122
+ this.columnResizerRect.left =
123
+ left + col._realTimeWidth - tableContainerLeft;
124
+ this.columnResizerRect.top = top - tableContainerTop;
125
+ this.columnResizerRect.height = height;
126
+
127
+ this.currentResizingColumn = col;
128
+ this.columnResizerStartX = left + col._realTimeWidth;
129
+ } else {
130
+ console.warn("Resizer column needs set column width");
131
+ }
132
+ }
133
+ },
134
+
135
+ // set column resizer position byu drag
136
+ setColumnResizerPositionByDrag(event) {
137
+ const {
138
+ tableContainerEl,
139
+ isColumnResizing,
140
+ currentResizingColumn,
141
+ } = this;
142
+
143
+ if (tableContainerEl && isColumnResizing) {
144
+ const { left: tableContainerLeft } =
145
+ tableContainerEl.getBoundingClientRect();
146
+
147
+ if (isColumnResizing && currentResizingColumn) {
148
+ const { columnResizerStartX, columnMinWidth } = this;
149
+
150
+ // 不允许拖动小于列最小宽度
151
+ if (
152
+ currentResizingColumn._realTimeWidth +
153
+ (event.clientX - columnResizerStartX) >
154
+ columnMinWidth
155
+ ) {
156
+ this.columnResizerRect.left =
157
+ event.clientX - tableContainerLeft;
158
+ }
159
+ }
160
+ }
161
+ },
162
+
163
+ // column resizer handler mousedown
164
+ columnResizerHandlerMousedown({ event }) {
165
+ if (this.isColumnResizerHover) {
166
+ this.setIsColumnResizing(true);
167
+
168
+ // add document mousemove listener
169
+ document.addEventListener(
170
+ "mousemove",
171
+ this.setColumnResizerPositionByDrag,
172
+ );
173
+ // add document mouseup listener
174
+ document.addEventListener("mouseup", this.columnResizerMouseup);
175
+
176
+ // stop text select when reszing
177
+ document.onselectstart = function () {
178
+ return false;
179
+ };
180
+ document.ondragstart = function () {
181
+ return false;
182
+ };
183
+ }
184
+ },
185
+
186
+ // column resizer mouseup
187
+ columnResizerMouseup(event) {
188
+ const {
189
+ isColumnResizing,
190
+ currentResizingColumn,
191
+ columnResizerStartX,
192
+ setColumnWidth,
193
+ columnWidthResizeOption,
194
+ columnMinWidth,
195
+ } = this;
196
+
197
+ if (!isColumnResizing || !currentResizingColumn) {
198
+ return false;
199
+ }
200
+
201
+ let differWidth;
202
+ // 拖动小于列最小宽度
203
+ if (
204
+ currentResizingColumn._realTimeWidth +
205
+ (event.clientX - columnResizerStartX) <
206
+ columnMinWidth
207
+ ) {
208
+ differWidth =
209
+ columnMinWidth - currentResizingColumn._realTimeWidth;
210
+ } else {
211
+ differWidth = event.clientX - columnResizerStartX;
212
+ }
213
+ differWidth = Math.floor(differWidth);
214
+
215
+ // 偏差阈值,低于则不处理
216
+ if (Math.abs(differWidth) > 1) {
217
+ let nextColumnWidth = currentResizingColumn._realTimeWidth;
218
+ nextColumnWidth += differWidth;
219
+
220
+ // set column width
221
+ setColumnWidth({
222
+ colKey: currentResizingColumn.key,
223
+ width: nextColumnWidth,
224
+ });
225
+
226
+ if (columnWidthResizeOption) {
227
+ const { sizeChange } = columnWidthResizeOption;
228
+ sizeChange &&
229
+ sizeChange({
230
+ column: currentResizingColumn,
231
+ differWidth,
232
+ columnWidth: nextColumnWidth,
233
+ });
234
+ }
235
+ }
236
+
237
+ this.clearColumnResizerStatus();
238
+ // add document mousemove listener
239
+ document.removeEventListener(
240
+ "mousemove",
241
+ this.setColumnResizerPositionByDrag,
242
+ );
243
+ // add document mouseup listener
244
+ document.removeEventListener("mouseup", this.columnResizerMouseup);
245
+ },
246
+
247
+ // clear column resizer status
248
+ clearColumnResizerStatus() {
249
+ this.currentResizingColumn = null;
250
+ this.columnResizerStartX = 0;
251
+ this.setIsColumnResizerHover(false);
252
+ this.setIsColumnResizing(false);
253
+
254
+ // enable text select when reszing
255
+ document.onselectstart = function () {
256
+ return true;
257
+ };
258
+ document.ondragstart = function () {
259
+ return true;
260
+ };
261
+ },
262
+ },
263
+
264
+ render() {
265
+ const {
266
+ isColumnResizerHover,
267
+ isColumnResizing,
268
+ columnResizerRect,
269
+ columnResizerHandlerWidth,
270
+ } = this;
271
+
272
+ const { left, top, height } = columnResizerRect;
273
+
274
+ const columnResizerHandlerProps = {
275
+ class: {
276
+ [clsName("column-resizer-handler")]: true,
277
+ ["active"]: isColumnResizerHover || isColumnResizing,
278
+ },
279
+ style: {
280
+ left: left - columnResizerHandlerWidth + "px",
281
+ top: top + "px",
282
+ height: height + "px",
283
+ },
284
+ on: {
285
+ click: () => {
286
+ //
287
+ },
288
+ mousedown: (event) => {
289
+ this.columnResizerHandlerMousedown({ event });
290
+ },
291
+ mouseenter: () => {
292
+ this.setIsColumnResizerHover(true);
293
+ },
294
+ mouseleave: () => {
295
+ this.setIsColumnResizerHover(false);
296
+ },
297
+ mouseup: (event) => {
298
+ this.columnResizerMouseup(event);
299
+ },
300
+ },
301
+ };
302
+
303
+ const columnResizerLineProps = {
304
+ class: [clsName("column-resizer-line")],
305
+ style: {
306
+ display: isColumnResizing ? "block" : "none",
307
+ left: left + "px",
308
+ },
309
+ };
310
+
311
+ return (
312
+ <div class={clsName("column-resizer")}>
313
+ <div {...columnResizerHandlerProps} />
314
+ <div {...columnResizerLineProps} />
315
+ </div>
316
+ );
317
+ },
318
+ };
@@ -0,0 +1,5 @@
1
+ // instance methods
2
+ export const INSTANCE_METHODS = {
3
+ TEXTAREA_ADD_NEW_LINE: "textareaAddNewLine",
4
+ TEXTAREA_SELECT: "textareaSelect",
5
+ };