vxe-gantt 0.0.2 → 3.0.0-beta.0

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 (94) hide show
  1. package/README.md +18 -24
  2. package/es/components.js +3 -2
  3. package/es/gantt/src/gantt-body.js +137 -0
  4. package/es/gantt/src/gantt-chart.js +125 -0
  5. package/es/gantt/src/gantt-header.js +97 -0
  6. package/es/gantt/src/gantt-view.js +820 -0
  7. package/es/gantt/src/gantt.js +1897 -43
  8. package/es/gantt/src/util.js +9 -0
  9. package/es/gantt/style.css +624 -0
  10. package/es/gantt/style.min.css +1 -0
  11. package/es/index.esm.js +5 -2
  12. package/es/style.css +1 -0
  13. package/es/style.min.css +1 -0
  14. package/es/ui/index.js +55 -5
  15. package/es/ui/src/comp.js +1 -2
  16. package/es/ui/src/dom.js +44 -105
  17. package/es/ui/src/log.js +3 -2
  18. package/es/ui/src/utils.js +4 -3
  19. package/es/ui/src/vn.js +1 -32
  20. package/es/vxe-gantt/style.css +624 -0
  21. package/es/vxe-gantt/style.min.css +1 -0
  22. package/helper/vetur/attributes.json +1 -1
  23. package/helper/vetur/tags.json +1 -1
  24. package/lib/components.js +20 -19
  25. package/lib/components.min.js +1 -1
  26. package/lib/gantt/index.js +3 -3
  27. package/lib/gantt/index.min.js +1 -1
  28. package/lib/gantt/src/gantt-body.js +140 -0
  29. package/lib/gantt/src/gantt-body.min.js +1 -0
  30. package/lib/gantt/src/gantt-chart.js +134 -0
  31. package/lib/gantt/src/gantt-chart.min.js +1 -0
  32. package/lib/gantt/src/gantt-header.js +97 -0
  33. package/lib/gantt/src/gantt-header.min.js +1 -0
  34. package/lib/gantt/src/gantt-view.js +808 -0
  35. package/lib/gantt/src/gantt-view.min.js +1 -0
  36. package/lib/gantt/src/gantt.js +2045 -48
  37. package/lib/gantt/src/gantt.min.js +1 -1
  38. package/lib/gantt/src/util.js +16 -0
  39. package/lib/gantt/src/util.min.js +1 -0
  40. package/lib/gantt/style/style.css +624 -0
  41. package/lib/gantt/style/style.min.css +1 -0
  42. package/lib/index.common.js +12 -7
  43. package/lib/index.umd.js +11484 -235
  44. package/lib/index.umd.min.js +1 -1
  45. package/lib/style.css +1 -0
  46. package/lib/style.min.css +1 -0
  47. package/lib/ui/index.js +54 -14
  48. package/lib/ui/index.min.js +1 -1
  49. package/lib/ui/src/comp.js +3 -2
  50. package/lib/ui/src/comp.min.js +1 -1
  51. package/lib/ui/src/dom.js +78 -138
  52. package/lib/ui/src/dom.min.js +1 -1
  53. package/lib/ui/src/log.js +4 -3
  54. package/lib/ui/src/log.min.js +1 -1
  55. package/lib/ui/src/utils.js +5 -4
  56. package/lib/ui/src/utils.min.js +1 -1
  57. package/lib/ui/src/vn.js +1 -43
  58. package/lib/ui/src/vn.min.js +0 -1
  59. package/lib/vxe-gantt/index.js +4 -2
  60. package/lib/vxe-gantt/index.min.js +1 -1
  61. package/lib/vxe-gantt/style/style.css +624 -0
  62. package/lib/vxe-gantt/style/style.min.css +1 -0
  63. package/lib/vxe-ui/index.js +4 -2
  64. package/lib/vxe-ui/index.min.js +1 -1
  65. package/package.json +13 -13
  66. package/packages/components.ts +8 -5
  67. package/packages/gantt/index.ts +2 -2
  68. package/packages/gantt/src/gantt-body.ts +155 -0
  69. package/packages/gantt/src/gantt-chart.ts +143 -0
  70. package/packages/gantt/src/gantt-header.ts +109 -0
  71. package/packages/gantt/src/gantt-view.ts +908 -0
  72. package/packages/gantt/src/gantt.ts +2048 -46
  73. package/packages/gantt/src/util.ts +12 -0
  74. package/packages/index.ts +6 -2
  75. package/packages/ui/index.ts +56 -4
  76. package/packages/ui/src/comp.ts +2 -2
  77. package/packages/ui/src/dom.ts +53 -110
  78. package/packages/ui/src/log.ts +4 -2
  79. package/packages/ui/src/utils.ts +5 -3
  80. package/packages/ui/src/vn.ts +0 -37
  81. package/styles/components/gantt-module/all.scss +1 -0
  82. package/styles/components/gantt-module/gantt-chart.scss +65 -0
  83. package/styles/components/gantt.scss +591 -0
  84. package/styles/helpers/baseMixin.scss +96 -0
  85. package/styles/helpers/baseVar.scss +4 -0
  86. package/styles/helpers/placement.scss +39 -0
  87. package/styles/theme/base.scss +11 -0
  88. package/styles/theme/dark.scss +5 -0
  89. package/styles/theme/light.scss +5 -0
  90. package/types/all.d.ts +3 -3
  91. package/types/index.d.ts +2 -2
  92. package/README.en.md +0 -72
  93. package/README.ja-JP.md +0 -72
  94. package/README.zh-TW.md +0 -73
@@ -0,0 +1,591 @@
1
+ @use '../helpers/baseMixin.scss';
2
+ @use './gantt-module/all.scss';
3
+
4
+ .vxe-gantt {
5
+ position: relative;
6
+ overflow: auto;
7
+ display: flex;
8
+ flex-direction: column;
9
+ &.is--loading {
10
+ &:before {
11
+ content: "";
12
+ position: absolute;
13
+ top: 0;
14
+ left: 0;
15
+ width: 100%;
16
+ height: 100%;
17
+ z-index: 99;
18
+ user-select: none;
19
+ background-color: var(--vxe-ui-loading-background-color);
20
+ }
21
+ & > .vxe-gantt-view {
22
+ .vxe-loading {
23
+ background-color: transparent;
24
+ }
25
+ }
26
+ }
27
+ &.is--maximize {
28
+ position: fixed;
29
+ top: 0;
30
+ left: 0;
31
+ width: 100%;
32
+ height: 100%;
33
+ padding: 0.5em 1em;
34
+ background-color: var(--vxe-ui-layout-background-color);
35
+ }
36
+ &.is--split-drag {
37
+ cursor: col-resize;
38
+ .vxe-gantt--table-wrapper,
39
+ .vxe-gantt--view-wrapper {
40
+ &::after {
41
+ content: "";
42
+ position: absolute;
43
+ top: 0;
44
+ left: 0;
45
+ width: 100%;
46
+ height: 100%;
47
+ z-index: 1;
48
+ background: transparent;
49
+ user-select: none;
50
+ }
51
+ }
52
+ }
53
+ .vxe-gantt--form-wrapper,
54
+ .vxe-gantt--top-wrapper,
55
+ .vxe-gantt--bottom-wrapper {
56
+ position: relative;
57
+ }
58
+ .vxe-gantt--gantt-container {
59
+ position: relative;
60
+ display: flex;
61
+ flex-direction: row;
62
+ }
63
+ .vxe-gantt--left-wrapper,
64
+ .vxe-gantt--right-wrapper {
65
+ flex-shrink: 0;
66
+ overflow: auto;
67
+ outline: 0;
68
+ }
69
+ .vxe-gantt--table-wrapper,
70
+ .vxe-gantt--view-wrapper {
71
+ display: none;
72
+ position: relative;
73
+ flex-grow: 1;
74
+ overflow: hidden;
75
+ }
76
+ .vxe-gantt--view-split-bar {
77
+ flex-shrink: 0;
78
+ width: var(--vxe-ui-gantt-view-split-bar-width);
79
+ background-color: var(--vxe-ui-gantt-view-split-bar-background-color);
80
+ &.is--resize {
81
+ cursor: col-resize;
82
+ }
83
+ }
84
+ &.show--left {
85
+ .vxe-gantt--table-wrapper {
86
+ display: block;
87
+ }
88
+ &.show--right {
89
+ .vxe-gantt--table-wrapper {
90
+ flex-grow: unset;
91
+ flex-shrink: 0;
92
+ width: var(--vxe-ui-gantt-view-table-default-width);
93
+ }
94
+ }
95
+ }
96
+ &.show--right {
97
+ .vxe-gantt--view-wrapper {
98
+ display: block;
99
+ }
100
+ }
101
+ }
102
+
103
+ .vxe-gantt--layout-body-wrapper {
104
+ display: flex;
105
+ flex-direction: row;
106
+ overflow: auto;
107
+ flex-grow: 1;
108
+ }
109
+ .vxe-gantt--layout-body-content-wrapper {
110
+ flex-grow: 1;
111
+ overflow: hidden;
112
+ }
113
+ .vxe-gantt--layout-header-wrapper,
114
+ .vxe-gantt--layout-footer-wrapper,
115
+ .vxe-gantt--layout-aside-left-wrapper,
116
+ .vxe-gantt--layout-aside-left-wrapper {
117
+ flex-shrink: 0;
118
+ overflow: auto;
119
+ }
120
+
121
+ /*边框线*/
122
+ .vxe-gantt--border-line {
123
+ position: absolute;
124
+ top: 0;
125
+ left: 0;
126
+ width: 100%;
127
+ height: 100%;
128
+ z-index: 10;
129
+ pointer-events: none;
130
+ border: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
131
+ }
132
+ .vxe-gantt {
133
+ &.border--default,
134
+ &.border--full,
135
+ &.border--outer {
136
+ .vxe-gantt-view--header-wrapper {
137
+ background-color: var(--vxe-ui-table-header-background-color);
138
+ }
139
+ }
140
+ &.border--full {
141
+ .vxe-gantt-view--header-column,
142
+ .vxe-gantt-view--body-column,
143
+ .vxe-gantt-view--footer-column {
144
+ background-image: linear-gradient(var(--vxe-ui-table-border-color), var(--vxe-ui-table-border-color)), linear-gradient(var(--vxe-ui-table-border-color), var(--vxe-ui-table-border-color));
145
+ background-repeat: no-repeat;
146
+ background-size: var(--vxe-ui-table-border-width) 100%, 100% var(--vxe-ui-table-border-width);
147
+ background-position: right top, right bottom;
148
+ }
149
+ }
150
+ &.border--default,
151
+ &.border--full,
152
+ &.border--outer,
153
+ &.border--inner {
154
+ .vxe-gantt-view--scroll-y-top-corner,
155
+ .vxe-gantt-view--scroll-y-bottom-corner {
156
+ &::before {
157
+ content: "";
158
+ position: absolute;
159
+ top: 0;
160
+ left: 0;
161
+ width: 100%;
162
+ height: 100%;
163
+ z-index: 1;
164
+ border-width: 0;
165
+ border-style: solid;
166
+ border-color: var(--vxe-ui-table-border-color);
167
+ }
168
+ }
169
+ .vxe-gantt-view--scroll-y-top-corner {
170
+ &::before {
171
+ border-bottom-width: var(--vxe-ui-table-border-width);
172
+ }
173
+ }
174
+ .vxe-gantt-view--scroll-y-bottom-corner {
175
+ border-top: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
176
+ }
177
+ .vxe-gantt-view--scroll-x-wrapper {
178
+ &::after {
179
+ content: "";
180
+ position: absolute;
181
+ left: 0;
182
+ width: 100%;
183
+ height: 100%;
184
+ z-index: 1;
185
+ pointer-events: none;
186
+ }
187
+ }
188
+ &.sx-pos--top {
189
+ .vxe-gantt-view--scroll-x-wrapper {
190
+ &::after {
191
+ top: 0;
192
+ border-bottom: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
193
+ }
194
+ }
195
+ }
196
+ &.sx-pos--bottom {
197
+ .vxe-gantt-view--scroll-x-wrapper {
198
+ &::after {
199
+ bottom: 0;
200
+ height: calc(100% + var(--vxe-ui-table-border-width));
201
+ border-top: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
202
+ }
203
+ }
204
+ }
205
+ }
206
+
207
+ &.border--default,
208
+ &.border--full {
209
+ .vxe-gantt-view--scroll-y-top-corner {
210
+ &::before {
211
+ border-left-width: var(--vxe-ui-table-border-width);
212
+ border-right-width: var(--vxe-ui-table-border-width);
213
+ }
214
+ }
215
+ .vxe-gantt-view--scroll-y-bottom-corner {
216
+ &::before {
217
+ border-left-width: var(--vxe-ui-table-border-width);
218
+ border-right-width: var(--vxe-ui-table-border-width);
219
+ }
220
+ }
221
+ &.sy-pos--right {
222
+ .vxe-gantt-view--scroll-y-top-corner,
223
+ .vxe-gantt-view--scroll-y-bottom-corner {
224
+ &::before {
225
+ width: calc(100% + 1px);
226
+ left: -1px;
227
+ }
228
+ }
229
+ }
230
+ .vxe-gantt-view--scroll-y-wrapper {
231
+ &::after {
232
+ content: "";
233
+ position: absolute;
234
+ top: 0;
235
+ width: 100%;
236
+ height: 100%;
237
+ z-index: 1;
238
+ pointer-events: none;
239
+ }
240
+ }
241
+ &.sy-pos--left {
242
+ .vxe-gantt-view--scroll-y-wrapper {
243
+ &::after {
244
+ left: 0;
245
+ border-right: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
246
+ }
247
+ }
248
+ }
249
+ &.sy-pos--right {
250
+ .vxe-gantt-view--scroll-y-wrapper {
251
+ &::after {
252
+ right: 0;
253
+ width: calc(100% + var(--vxe-ui-table-border-width));
254
+ border-left: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
255
+ }
256
+ }
257
+ }
258
+ }
259
+ }
260
+
261
+ /*分割条*/
262
+ .vxe-gantt--view-split-bar {
263
+ position: relative;
264
+ user-select: none;
265
+ }
266
+ .vxe-gantt--view-split-bar-handle {
267
+ position: absolute;
268
+ top: 0;
269
+ left: 0;
270
+ width: 100%;
271
+ height: 100%;
272
+ z-index: 13;
273
+ }
274
+ .vxe-gantt--view-split-bar-btn-wrapper {
275
+ display: flex;
276
+ flex-direction: column;
277
+ align-items: center;
278
+ position: absolute;
279
+ left: 50%;
280
+ top: 50%;
281
+ transform: translate(-50%, -50%);
282
+ z-index: 15;
283
+ pointer-events: none;
284
+ & > div {
285
+ margin-top: 1em;
286
+ &:first-child {
287
+ margin-top: 0;
288
+ }
289
+ }
290
+ }
291
+ .vxe-gantt--view-split-bar-left-btn,
292
+ .vxe-gantt--view-split-bar-right-btn {
293
+ display: flex;
294
+ flex-direction: row;
295
+ align-items: center;
296
+ justify-content: center;
297
+ font-size: 0.5em;
298
+ height: var(--vxe-ui-gantt-view-split-bar-height);
299
+ width: var(--vxe-ui-gantt-view-split-bar-width);
300
+ color: var(--vxe-ui-layout-background-color);
301
+ border-radius: var(--vxe-ui-base-border-radius);
302
+ background-color: var(--vxe-ui-gantt-view-handle-background-color);
303
+ border: 1px solid var(--vxe-ui-input-border-color);
304
+ pointer-events: all;
305
+ cursor: pointer;
306
+ user-select: none;
307
+ @include baseMixin.createAnimationTransition(all, 0.1s);
308
+ &:hover {
309
+ background-color: var(--vxe-ui-font-primary-lighten-color);
310
+ }
311
+ &:active {
312
+ transform: scale(0.9);
313
+ }
314
+ }
315
+ .vxe-gantt--resizable-split-tip {
316
+ display: none;
317
+ position: absolute;
318
+ top: 0;
319
+ left: 0;
320
+ width: 1px;
321
+ height: 100%;
322
+ z-index: 18;
323
+ pointer-events: none;
324
+ user-select: none;
325
+ cursor: col-resize;
326
+ &:before {
327
+ content: "";
328
+ display: block;
329
+ height: 100%;
330
+ background-color: var(--vxe-ui-table-resizable-drag-line-color);
331
+ }
332
+ }
333
+ .vxe-gantt--resizable-split-tip-number {
334
+ position: absolute;
335
+ top: 0;
336
+ left: 0;
337
+ user-select: none;
338
+ pointer-events: none;
339
+ }
340
+ .vxe-gantt--resizable-split-number-left,
341
+ .vxe-gantt--resizable-split-number-right {
342
+ position: absolute;
343
+ padding: 0.25em 0.25em;
344
+ font-size: 12px;
345
+ border-radius: var(--vxe-ui-border-radius);
346
+ white-space: nowrap;
347
+ color: #ffffff;
348
+ background-color: var(--vxe-ui-table-resizable-drag-line-color);
349
+ }
350
+ .vxe-gantt--resizable-split-number-left {
351
+ right: 0;
352
+ }
353
+ .vxe-gantt--resizable-split-number-right {
354
+ left: 1px;
355
+ }
356
+
357
+ /*滚动条*/
358
+ .vxe-gantt {
359
+ &.is--loading {
360
+ & > .vxe-gantt-view--scroll-x-virtual {
361
+ visibility: hidden;
362
+ }
363
+ & > .vxe-gantt-view--layout-wrapper {
364
+ & > .vxe-gantt-view--scroll-y-virtual {
365
+ visibility: hidden;
366
+ }
367
+ }
368
+ }
369
+ .vxe-gantt-view--scroll-x-virtual {
370
+ height: 0;
371
+ }
372
+ .vxe-gantt-view--scroll-y-virtual {
373
+ width: 0;
374
+ }
375
+ .vxe-gantt-view--scroll-x-virtual,
376
+ .vxe-gantt-view--scroll-y-virtual {
377
+ visibility: hidden;
378
+ position: relative;
379
+ flex-shrink: 0;
380
+ z-index: 7;
381
+ }
382
+ .vxe-gantt-view--scroll-x-handle,
383
+ .vxe-gantt-view--scroll-y-handle,
384
+ .vxe-gantt-view--scroll-x-wrapper,
385
+ .vxe-gantt-view--scroll-y-wrapper,
386
+ .vxe-gantt-view--scroll-y-top-corner,
387
+ .vxe-gantt-view--scroll-y-bottom-corner,
388
+ .vxe-gantt-view--scroll-x-left-corner,
389
+ .vxe-gantt-view--scroll-x-right-corner {
390
+ position: absolute;
391
+ }
392
+ .vxe-gantt-view--scroll-x-handle,
393
+ .vxe-gantt-view--scroll-x-wrapper {
394
+ width: 100%;
395
+ left: 0;
396
+ bottom: 0;
397
+ }
398
+ .vxe-gantt-view--scroll-x-handle {
399
+ overflow-y: hidden;
400
+ overflow-x: scroll;
401
+ height: 18px;
402
+ }
403
+ .vxe-gantt-view--scroll-x-wrapper {
404
+ height: 100%;
405
+ }
406
+ .vxe-gantt-view--scroll-y-handle,
407
+ .vxe-gantt-view--scroll-y-wrapper {
408
+ width: 100%;
409
+ height: 100%;
410
+ right: 0;
411
+ top: 0;
412
+ }
413
+ .vxe-gantt-view--scroll-y-handle {
414
+ overflow-y: scroll;
415
+ overflow-x: hidden;
416
+ width: 18px;
417
+ height: 100%;
418
+ }
419
+ .vxe-gantt-view--scroll-x-space {
420
+ height: 1px;
421
+ }
422
+ .vxe-gantt-view--scroll-y-space {
423
+ width: 1px;
424
+ }
425
+ .vxe-gantt-view--scroll-x-left-corner,
426
+ .vxe-gantt-view--scroll-x-right-corner,
427
+ .vxe-gantt-view--scroll-y-top-corner,
428
+ .vxe-gantt-view--scroll-y-bottom-corner {
429
+ display: none;
430
+ position: absolute;
431
+ }
432
+ .vxe-gantt-view--scroll-x-left-corner,
433
+ .vxe-gantt-view--scroll-x-right-corner {
434
+ bottom: 0;
435
+ width: 0;
436
+ height: 100%;
437
+ &::before {
438
+ content: "";
439
+ position: absolute;
440
+ top: 0;
441
+ left: 0;
442
+ width: 100%;
443
+ height: 100%;
444
+ z-index: 1;
445
+ border-width: var(--vxe-ui-table-border-width);
446
+ border-style: solid;
447
+ border-color: var(--vxe-ui-table-border-color);
448
+ }
449
+ }
450
+ .vxe-gantt-view--scroll-x-left-corner {
451
+ left: 0;
452
+ }
453
+ .vxe-gantt-view--scroll-x-right-corner {
454
+ right: 0;
455
+ }
456
+ &.sy-pos--right {
457
+ .vxe-gantt-view--scroll-x-right-corner {
458
+ right: 1px;
459
+ &::before {
460
+ border-right: 0;
461
+ }
462
+ }
463
+ }
464
+ &.sx-pos--bottom {
465
+ .vxe-gantt-view--scroll-x-right-corner {
466
+ bottom: 1px;
467
+ &::before {
468
+ border-bottom: 0;
469
+ }
470
+ }
471
+ }
472
+ .vxe-gantt-view--scroll-y-top-corner {
473
+ background-color: var(--vxe-ui-table-header-background-color);
474
+ }
475
+ .vxe-gantt-view--scroll-y-top-corner,
476
+ .vxe-gantt-view--scroll-y-bottom-corner {
477
+ top: 0;
478
+ right: 0;
479
+ width: 100%;
480
+ height: 0;
481
+ }
482
+ .vxe-gantt-view--scroll-y-bottom-corner {
483
+ margin-top: -1px;
484
+ }
485
+ }
486
+
487
+ .vxe-gantt-view--layout-wrapper {
488
+ display: flex;
489
+ flex-direction: row;
490
+ background-color: var(--vxe-ui-layout-background-color)
491
+ }
492
+ .vxe-gantt-view--viewport-wrapper {
493
+ position: relative;
494
+ overflow: hidden;
495
+ flex-grow: 1;
496
+ }
497
+
498
+ .vxe-gantt-view--render-vars {
499
+ width: 0;
500
+ height: 0;
501
+ overflow: hidden;
502
+ }
503
+ .vxe-gantt-view--column-info {
504
+ width: var(--vxe-ui-gantt-view-default-cell-width);
505
+ }
506
+
507
+ // 任务视图
508
+ .vxe-gantt-view {
509
+ flex-grow: 1;
510
+ overflow: hidden;
511
+ .vxe-body--x-space {
512
+ width: 100%;
513
+ height: 1px;
514
+ margin-bottom: -1px;
515
+ }
516
+ .vxe-body--y-space {
517
+ width: 0;
518
+ float: left;
519
+ }
520
+ }
521
+ .vxe-gantt-view--header-table {
522
+ height: 100%;
523
+ }
524
+ .vxe-gantt-view--header-table,
525
+ .vxe-gantt-view--body-table {
526
+ border: 0;
527
+ border-spacing: 0;
528
+ border-collapse: separate;
529
+ table-layout: fixed;
530
+ col {
531
+ width: var(--vxe-ui-gantt-view-default-cell-width);
532
+ }
533
+ }
534
+ .vxe-gantt-view--header-wrapper,
535
+ .vxe-gantt-view--body-wrapper {
536
+ overflow: hidden;
537
+ }
538
+ .vxe-gantt-view--header-inner-wrapper {
539
+ overflow-y: hidden;
540
+ overflow-x: scroll;
541
+ }
542
+ .vxe-gantt-view--body-inner-wrapper {
543
+ overflow-y: auto;
544
+ overflow-x: auto;
545
+ }
546
+ .vxe-gantt-view--header-inner-wrapper,
547
+ .vxe-gantt-view--body-inner-wrapper {
548
+ position: relative;
549
+ width: 100%;
550
+ height: 100%;
551
+ scrollbar-width: none;
552
+ -ms-overflow-style: none;
553
+ -webkit-overflow-scrolling: touch;
554
+ }
555
+ .vxe-gantt-view--header-column {
556
+ text-align: center;
557
+ font-size: 1em;
558
+ }
559
+ .vxe-gantt-view--body-column {
560
+ height: 48px;
561
+ }
562
+ .vxe-gantt-view--header-column,
563
+ .vxe-gantt-view--body-column,
564
+ .vxe-gantt-view--footer-column {
565
+ position: relative;
566
+ overflow: hidden;
567
+ text-overflow: ellipsis;
568
+ white-space: nowrap;
569
+ }
570
+
571
+ .vxe-gantt-view {
572
+ &.mode--day {
573
+ .vxe-gantt-view--header-column {
574
+ height: 50%;
575
+ }
576
+ }
577
+ }
578
+
579
+ .vxe-gantt {
580
+ font-size: var(--vxe-ui-font-size-default);
581
+ &.size--medium {
582
+ font-size: var(--vxe-ui-font-size-medium);
583
+ }
584
+ &.size--small {
585
+ font-size: var(--vxe-ui-font-size-small);
586
+ }
587
+ &.size--mini {
588
+ font-size: var(--vxe-ui-font-size-mini);
589
+ }
590
+ }
591
+
@@ -0,0 +1,96 @@
1
+ @mixin createAnimationTransition ($property, $duration: .1s, $func: ease-in-out) {
2
+ transition: $property $duration $func;
3
+ }
4
+
5
+ @mixin createCheckboxIcon {
6
+ .vxe-checkbox--icon {
7
+ font-size: 1.22em;
8
+ }
9
+ .vxe-checkbox--icon {
10
+ color: var(--vxe-ui-input-border-color);
11
+ vertical-align: middle;
12
+ font-weight: 700;
13
+ user-select: none;
14
+ }
15
+ &.is--checked,
16
+ &.is--indeterminate {
17
+ color: var(--vxe-ui-font-primary-color);
18
+ .vxe-checkbox--icon {
19
+ color: var(--vxe-ui-font-primary-color);
20
+ }
21
+ }
22
+ &:not(.is--disabled) {
23
+ cursor: pointer;
24
+ &:hover {
25
+ .vxe-checkbox--icon {
26
+ color: var(--vxe-ui-font-primary-color);
27
+ }
28
+ }
29
+ }
30
+ &.is--hidden {
31
+ cursor: default;
32
+ }
33
+ &.is--disabled {
34
+ color: var(--vxe-ui-font-disabled-color);
35
+ cursor: not-allowed;
36
+ .vxe-checkbox--icon {
37
+ color: var(--vxe-ui-input-disabled-color);
38
+ }
39
+ }
40
+ .vxe-checkbox--label {
41
+ padding-left: 0.5em;
42
+ vertical-align: middle;
43
+ }
44
+ }
45
+
46
+ @mixin createRadioIcon {
47
+ cursor: pointer;
48
+ .vxe-radio--icon {
49
+ font-size: 1.26em;
50
+ }
51
+ .vxe-radio--icon {
52
+ color: var(--vxe-ui-input-border-color);
53
+ border-radius: 50%;
54
+ vertical-align: middle;
55
+ font-weight: 700;
56
+ user-select: none;
57
+ }
58
+ &.is--checked {
59
+ color: var(--vxe-ui-font-primary-color);
60
+ .vxe-radio--icon {
61
+ color: var(--vxe-ui-font-primary-color);
62
+ }
63
+ }
64
+ &:not(.is--disabled) {
65
+ cursor: pointer;
66
+ &:hover {
67
+ .vxe-radio--icon {
68
+ color: var(--vxe-ui-font-primary-color);
69
+ }
70
+ }
71
+ }
72
+ &.is--disabled {
73
+ color: var(--vxe-ui-font-disabled-color);
74
+ cursor: not-allowed;
75
+ .vxe-radio--icon {
76
+ color: var(--vxe-ui-input-disabled-color);
77
+ }
78
+ }
79
+ .vxe-radio--label {
80
+ padding-left: 0.5em;
81
+ vertical-align: middle;
82
+ }
83
+ }
84
+
85
+ @mixin createEmptyMask {
86
+ &::after {
87
+ content: "";
88
+ position: absolute;
89
+ top: 0;
90
+ left: 0;
91
+ width: 100%;
92
+ height: 100%;
93
+ z-index: 1;
94
+ user-select: none;
95
+ }
96
+ }
@@ -0,0 +1,4 @@
1
+ // 24 栅格布局
2
+ $colSpanList: 4.16667%, 8.33333%, 12.5%, 16.66667%, 20.83333%, 25%, 29.16667%, 33.33333%,
3
+ 37.5%, 41.66667%, 45.83333%, 50%, 54.16667%, 58.33333%, 62.5%, 66.66667%,
4
+ 70.83333%, 75%, 79.16667%, 83.33333%, 87.5%, 91.66667%, 95.83333%, 100%;
@@ -0,0 +1,39 @@
1
+ @use './baseMixin.scss';
2
+
3
+ @mixin createPlacementPanel {
4
+ display: none;
5
+ position: absolute;
6
+ left: 0;
7
+ padding: 4px 0;
8
+ color: var(--vxe-ui-font-color);
9
+ text-align: left;
10
+ &:not(.is--transfer) {
11
+ min-width: 100%;
12
+ }
13
+ &.is--transfer {
14
+ position: fixed;
15
+ }
16
+ &.ani--leave {
17
+ display: block;
18
+ opacity: 0;
19
+ transform: scaleY(0.5);
20
+ transition: transform .3s cubic-bezier(.23,1,.32,1), opacity .3s cubic-bezier(.23,1,.32,1);
21
+ transform-origin: center top;
22
+ backface-visibility: hidden;
23
+ &[placement="top"] {
24
+ transform-origin: center bottom;
25
+ }
26
+ }
27
+ &.ani--enter {
28
+ opacity: 1;
29
+ transform: scaleY(1);
30
+ & > div {
31
+ &::after {
32
+ display: none;
33
+ }
34
+ }
35
+ }
36
+ & > div {
37
+ @include baseMixin.createEmptyMask();
38
+ }
39
+ }