@jiaozhiye/qm-design-react 2.0.3 → 2.0.5

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.
@@ -1,371 +1,372 @@
1
- /*
2
- * @Author: 焦质晔
3
- * @Date: 2021-07-23 19:05:57
4
- * @Last Modified by: 焦质晔
5
- * @Last Modified time: 2023-06-03 21:46:35
6
- */
7
- @import '../../style/common';
8
-
9
- @prefix-table: ~'@{qm-prefix}-table';
10
-
11
- // 外层容器
12
- .@{prefix-table}--wrapper {
13
- .reset-container();
14
- }
15
-
16
- /* 全屏 */
17
- .@{prefix-table}--maximize {
18
- position: fixed;
19
- top: 0;
20
- left: 0;
21
- right: 0;
22
- height: 100%;
23
- z-index: 100;
24
- overflow-y: auto;
25
- padding: @v-module-distance;
26
- padding-bottom: 0;
27
- background-color: @v-table-background-color;
28
- }
29
-
30
- /* table 样式 */
31
- .@{prefix-table} {
32
- position: relative;
33
- background-color: @v-table-background-color;
34
- &:before,
35
- &:after {
36
- content: '';
37
- position: absolute;
38
- left: 0;
39
- width: 100%;
40
- height: 0;
41
- z-index: 3;
42
- pointer-events: none;
43
- }
44
- &:before {
45
- top: 0;
46
- border-top: 1px solid @v-table-border-color;
47
- }
48
- &:after {
49
- bottom: -1px;
50
- border-bottom: 1px solid @v-table-border-color;
51
- }
52
-
53
- &--header,
54
- &--body,
55
- &--footer {
56
- border: 0;
57
- border-spacing: 0;
58
- border-collapse: separate;
59
- table-layout: fixed;
60
- }
61
-
62
- &--header-wrapper,
63
- &--footer-wrapper {
64
- overflow-x: hidden;
65
- overflow-y: hidden;
66
- }
67
-
68
- &--body-wrapper {
69
- overflow-y: auto;
70
- overflow-x: auto;
71
- }
72
-
73
- &--merge-cell {
74
- position: absolute;
75
- display: none;
76
- border: 2px solid @v-primary-color;
77
- border-radius: @v-border-radius;
78
- background-color: rgba(255, 255, 255, 0.3);
79
- z-index: 9;
80
- .btn {
81
- position: absolute;
82
- right: -54px;
83
- bottom: 0;
84
- }
85
- .cancel {
86
- bottom: 30px;
87
- }
88
- }
89
-
90
- &.c--resize {
91
- cursor: col-resize;
92
- .header--column {
93
- pointer-events: none;
94
- }
95
- }
96
-
97
- .header--column {
98
- background-color: @v-table-header-background-color;
99
- }
100
-
101
- .body--column {
102
- transition: background-color 0.3s ease;
103
- background-color: @v-table-background-color;
104
- }
105
-
106
- .footer--column {
107
- background-color: @v-table-footer-background-color;
108
- border-bottom: 0;
109
- }
110
-
111
- .body--row:hover {
112
- .body--column {
113
- background-color: @v-table-row-hover-background-color;
114
- }
115
- }
116
-
117
- .body--row-striped {
118
- .body--column {
119
- background-color: @v-table-header-background-color;
120
- }
121
- }
122
-
123
- .body--row-selected {
124
- .body--column {
125
- background-color: @v-table-row-selected-background-color;
126
- }
127
- }
128
-
129
- .body--row-current {
130
- .body--column {
131
- background-color: @v-table-row-current-background-color;
132
- }
133
- }
134
-
135
- .body--row-expanded {
136
- .body--column {
137
- background-color: @v-table-row-expanded-background-color;
138
- }
139
- }
140
-
141
- .body--row-group_1 {
142
- .body--column {
143
- background-color: @--primary-1;
144
- }
145
- }
146
-
147
- .body--row-group_2 {
148
- .body--column {
149
- background-color: @--primary-2;
150
- }
151
- }
152
-
153
- .body--row-group_3 {
154
- .body--column {
155
- background-color: @--primary-3;
156
- }
157
- }
158
-
159
- .header--column,
160
- .body--column,
161
- .footer--column {
162
- position: relative;
163
- text-align: left;
164
- // line-height: @v-table-row-line-height;
165
- &:not(.col--ellipsis) {
166
- padding: ceil(((@v-table-row-height - @v-table-row-line-height) / 2)) 0;
167
- .cell {
168
- line-height: 1.2;
169
- }
170
- }
171
- &.col--center:not(.header--column) {
172
- text-align: center;
173
- }
174
- &.col--right:not(.header--column) {
175
- text-align: right;
176
- }
177
- .cell {
178
- white-space: pre-wrap;
179
- word-break: break-all;
180
- padding: 0 @v-module-distance;
181
- .cell--indent {
182
- float: left;
183
- height: 1px;
184
- visibility: hidden;
185
- }
186
- .cell--sign {
187
- content: ' ';
188
- top: -5px;
189
- left: -5px;
190
- position: absolute;
191
- z-index: 1;
192
- border-width: 5px;
193
- border-style: solid;
194
- border-color: transparent @v-primary-color transparent transparent;
195
- transform: rotate(45deg);
196
- pointer-events: none;
197
- }
198
- .cell--copy {
199
- display: flex;
200
- flex-shrink: 0;
201
- align-items: center;
202
- justify-content: space-between;
203
- .text {
204
- flex: 1;
205
- .text-overflow-cut();
206
- }
207
- .icon {
208
- margin-right: -2px;
209
- color: @v-font-secondary-color;
210
- cursor: pointer;
211
- }
212
- }
213
- }
214
- }
215
-
216
- // 自定义
217
- &.is--fixed {
218
- .cell-fix-left,
219
- .cell-fix-right {
220
- position: sticky;
221
- z-index: 2;
222
- }
223
- .cell-fix-left-last {
224
- &::after {
225
- content: '';
226
- position: absolute;
227
- top: 0;
228
- right: 0;
229
- bottom: -1px;
230
- width: 20px;
231
- transform: translateX(100%);
232
- transition: box-shadow 0.3s, -webkit-box-shadow 0.3s;
233
- pointer-events: none;
234
- }
235
- }
236
- .cell-fix-right-first {
237
- &::after {
238
- content: '';
239
- position: absolute;
240
- top: 0;
241
- left: 0;
242
- bottom: -1px;
243
- width: 20px;
244
- transform: translateX(-100%);
245
- transition: box-shadow 0.3s, -webkit-box-shadow 0.3s;
246
- pointer-events: none;
247
- }
248
- }
249
- &.ping--left .cell-fix-left-last::after {
250
- box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.15);
251
- }
252
- &.ping--right .cell-fix-right-first::after {
253
- box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.15);
254
- }
255
- }
256
-
257
- &.is--sortable {
258
- .column-has-sorter {
259
- transition: background-color 0.3s ease;
260
- cursor: pointer;
261
- &:hover {
262
- background-color: @v-table-column-sort-hover-color;
263
- }
264
- &.column--sort {
265
- background-color: @v-table-column-sorted-color;
266
- }
267
- }
268
- .column--sort {
269
- background-color: @v-table-header-background-color;
270
- }
271
- }
272
-
273
- &.is--border {
274
- .header--column,
275
- .body--column,
276
- .footer--column {
277
- border-bottom: 1px solid @v-table-border-color;
278
- border-right: 1px solid @v-table-border-color;
279
- .box-sizing-content();
280
- }
281
- }
282
-
283
- &:not(.is--border) {
284
- &:before,
285
- &:after {
286
- border: 0;
287
- }
288
- .header--column,
289
- .body--column {
290
- border-bottom: 1px solid @v-table-border-color;
291
- }
292
- }
293
-
294
- &.is--merge-cell &--body-wrapper > table > tbody {
295
- pointer-events: none;
296
- }
297
-
298
- /* body 填充元素 */
299
- .body--x-space {
300
- height: 0;
301
- visibility: hidden;
302
- &::after {
303
- content: '.';
304
- }
305
- }
306
- .body--y-space {
307
- width: 0;
308
- float: left;
309
- visibility: hidden;
310
- &::after {
311
- content: '.';
312
- }
313
- }
314
-
315
- /* 列宽线 */
316
- &--resizable-bar {
317
- display: none;
318
- position: absolute;
319
- top: 0;
320
- left: 0;
321
- width: 1px;
322
- height: 100%;
323
- z-index: 4;
324
- &:before {
325
- content: '';
326
- display: block;
327
- height: 100%;
328
- background-color: @v-table-resizable-color;
329
- }
330
- }
331
-
332
- /* 边框线 */
333
- &--border-line {
334
- &:before,
335
- &:after {
336
- content: '';
337
- position: absolute;
338
- top: 0;
339
- width: 0;
340
- height: 100%;
341
- z-index: 3;
342
- pointer-events: none;
343
- }
344
- &:before {
345
- left: 0;
346
- border-left: 1px solid @v-table-border-color;
347
- }
348
- &:after {
349
- right: 0;
350
- border-right: 1px solid @v-table-border-color;
351
- }
352
- }
353
-
354
- /* 溢出列 */
355
- .header--column,
356
- .body--column,
357
- .footer--column {
358
- &.col--ellipsis {
359
- .cell {
360
- .text-overflow-cut();
361
- word-break: break-all;
362
- white-space: pre;
363
- }
364
- }
365
- }
366
-
367
- /* 弹出层 */
368
- &__popper {
369
- padding: @v-module-distance;
370
- }
371
- }
1
+ /*
2
+ * @Author: 焦质晔
3
+ * @Date: 2021-07-23 19:05:57
4
+ * @Last Modified by: 焦质晔
5
+ * @Last Modified time: 2023-06-03 21:46:35
6
+ */
7
+ @import '../../style/common';
8
+
9
+ @prefix-table: ~'@{qm-prefix}-table';
10
+
11
+ // 外层容器
12
+ .@{prefix-table}--wrapper {
13
+ .reset-container();
14
+ }
15
+
16
+ /* 全屏 */
17
+ .@{prefix-table}--maximize {
18
+ position: fixed;
19
+ top: 0;
20
+ left: 0;
21
+ right: 0;
22
+ height: 100%;
23
+ z-index: 100;
24
+ overflow-y: auto;
25
+ padding: @v-module-distance;
26
+ padding-bottom: 0;
27
+ background-color: @v-table-background-color;
28
+ }
29
+
30
+ /* table 样式 */
31
+ .@{prefix-table} {
32
+ position: relative;
33
+ background-color: @v-table-background-color;
34
+ &:before,
35
+ &:after {
36
+ content: '';
37
+ position: absolute;
38
+ left: 0;
39
+ width: 100%;
40
+ height: 0;
41
+ z-index: 3;
42
+ pointer-events: none;
43
+ }
44
+ &:before {
45
+ top: 0;
46
+ border-top: 1px solid @v-table-border-color;
47
+ }
48
+ &:after {
49
+ bottom: -1px;
50
+ border-bottom: 1px solid @v-table-border-color;
51
+ }
52
+
53
+ &--header,
54
+ &--body,
55
+ &--footer {
56
+ border: 0;
57
+ border-spacing: 0;
58
+ border-collapse: separate;
59
+ table-layout: fixed;
60
+ }
61
+
62
+ &--header-wrapper,
63
+ &--footer-wrapper {
64
+ overflow-x: hidden;
65
+ overflow-y: hidden;
66
+ }
67
+
68
+ &--body-wrapper {
69
+ overflow-y: auto;
70
+ overflow-x: auto;
71
+ }
72
+
73
+ &--merge-cell {
74
+ position: absolute;
75
+ display: none;
76
+ border: 2px solid @v-primary-color;
77
+ border-radius: @v-border-radius;
78
+ background-color: rgba(255, 255, 255, 0.3);
79
+ z-index: 9;
80
+ .btn {
81
+ position: absolute;
82
+ right: -54px;
83
+ bottom: 0;
84
+ }
85
+ .cancel {
86
+ bottom: 30px;
87
+ }
88
+ }
89
+
90
+ &.c--resize {
91
+ cursor: col-resize;
92
+ .header--column {
93
+ pointer-events: none;
94
+ }
95
+ }
96
+
97
+ .header--column {
98
+ background-color: @v-table-header-background-color;
99
+ }
100
+
101
+ .body--column {
102
+ transition: background-color 0.3s ease;
103
+ background-color: @v-table-background-color;
104
+ }
105
+
106
+ .footer--column {
107
+ background-color: @v-table-footer-background-color;
108
+ border-bottom: 0;
109
+ }
110
+
111
+ .body--row:hover {
112
+ .body--column {
113
+ background-color: @v-table-row-hover-background-color;
114
+ }
115
+ }
116
+
117
+ .body--row-striped {
118
+ .body--column {
119
+ background-color: @v-table-header-background-color;
120
+ }
121
+ }
122
+
123
+ .body--row-selected {
124
+ .body--column {
125
+ background-color: @v-table-row-selected-background-color;
126
+ }
127
+ }
128
+
129
+ .body--row-current {
130
+ .body--column {
131
+ background-color: @v-table-row-current-background-color;
132
+ }
133
+ }
134
+
135
+ .body--row-expanded {
136
+ .body--column {
137
+ background-color: @v-table-row-expanded-background-color;
138
+ }
139
+ }
140
+
141
+ .body--row-group_1 {
142
+ .body--column {
143
+ background-color: @--primary-1;
144
+ }
145
+ }
146
+
147
+ .body--row-group_2 {
148
+ .body--column {
149
+ background-color: @--primary-2;
150
+ }
151
+ }
152
+
153
+ .body--row-group_3 {
154
+ .body--column {
155
+ background-color: @--primary-3;
156
+ }
157
+ }
158
+
159
+ .header--column,
160
+ .body--column,
161
+ .footer--column {
162
+ position: relative;
163
+ text-align: left;
164
+ // line-height: @v-table-row-line-height;
165
+ &:not(.col--ellipsis) {
166
+ padding: ceil(((@v-table-row-height - @v-table-row-line-height) / 2)) 0;
167
+ .cell {
168
+ line-height: 1.2;
169
+ }
170
+ }
171
+ &.col--center:not(.header--column) {
172
+ text-align: center;
173
+ }
174
+ &.col--right:not(.header--column) {
175
+ text-align: right;
176
+ }
177
+ .cell {
178
+ white-space: pre-wrap;
179
+ word-break: break-all;
180
+ padding: 0 @v-module-distance;
181
+ .cell--indent {
182
+ float: left;
183
+ height: 1px;
184
+ visibility: hidden;
185
+ }
186
+ .cell--sign {
187
+ content: ' ';
188
+ top: -5px;
189
+ left: -5px;
190
+ position: absolute;
191
+ z-index: 1;
192
+ border-width: 5px;
193
+ border-style: solid;
194
+ border-color: transparent @v-primary-color transparent transparent;
195
+ transform: rotate(45deg);
196
+ pointer-events: none;
197
+ }
198
+ .cell--copy {
199
+ display: flex;
200
+ flex-shrink: 0;
201
+ align-items: center;
202
+ justify-content: space-between;
203
+ .text {
204
+ flex: 1;
205
+ .text-overflow-cut();
206
+ }
207
+ .icon {
208
+ margin-right: -2px;
209
+ color: @v-font-secondary-color;
210
+ cursor: pointer;
211
+ }
212
+ }
213
+ }
214
+ }
215
+
216
+ // 自定义
217
+ &.is--fixed {
218
+ .cell-fix-left,
219
+ .cell-fix-right {
220
+ position: sticky;
221
+ z-index: 2;
222
+ }
223
+ .cell-fix-left-last {
224
+ &::after {
225
+ content: '';
226
+ position: absolute;
227
+ top: 0;
228
+ right: 0;
229
+ bottom: -1px;
230
+ width: 20px;
231
+ transform: translateX(100%);
232
+ transition: box-shadow 0.3s, -webkit-box-shadow 0.3s;
233
+ pointer-events: none;
234
+ }
235
+ }
236
+ .cell-fix-right-first {
237
+ &::after {
238
+ content: '';
239
+ position: absolute;
240
+ top: 0;
241
+ left: 0;
242
+ bottom: -1px;
243
+ width: 20px;
244
+ transform: translateX(-100%);
245
+ transition: box-shadow 0.3s, -webkit-box-shadow 0.3s;
246
+ pointer-events: none;
247
+ }
248
+ }
249
+ &.ping--left .cell-fix-left-last::after {
250
+ box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.15);
251
+ }
252
+ &.ping--right .cell-fix-right-first::after {
253
+ box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.15);
254
+ }
255
+ }
256
+
257
+ &.is--sortable {
258
+ .column-has-sorter {
259
+ transition: background-color 0.3s ease;
260
+ cursor: pointer;
261
+ &:hover {
262
+ background-color: @v-table-column-sort-hover-color;
263
+ }
264
+ &.column--sort {
265
+ background-color: @v-table-column-sorted-color;
266
+ }
267
+ }
268
+ .column--sort {
269
+ background-color: @v-table-header-background-color;
270
+ }
271
+ }
272
+
273
+ &.is--border {
274
+ .header--column,
275
+ .body--column,
276
+ .footer--column {
277
+ border-bottom: 1px solid @v-table-border-color;
278
+ border-right: 1px solid @v-table-border-color;
279
+ .box-sizing-content();
280
+ }
281
+ }
282
+
283
+ &:not(.is--border) {
284
+ &:before,
285
+ &:after {
286
+ border: 0;
287
+ }
288
+ .header--column,
289
+ .body--column {
290
+ border-bottom: 1px solid @v-table-border-color;
291
+ }
292
+ }
293
+
294
+ &.is--merge-cell &--body-wrapper > table > tbody {
295
+ pointer-events: none;
296
+ }
297
+
298
+ /* body 填充元素 */
299
+ .body--x-space {
300
+ height: 0;
301
+ visibility: hidden;
302
+ &::after {
303
+ content: '.';
304
+ }
305
+ }
306
+ .body--y-space {
307
+ width: 0;
308
+ line-height: 0;
309
+ float: left;
310
+ visibility: hidden;
311
+ &::after {
312
+ content: '.';
313
+ }
314
+ }
315
+
316
+ /* 列宽线 */
317
+ &--resizable-bar {
318
+ display: none;
319
+ position: absolute;
320
+ top: 0;
321
+ left: 0;
322
+ width: 1px;
323
+ height: 100%;
324
+ z-index: 4;
325
+ &:before {
326
+ content: '';
327
+ display: block;
328
+ height: 100%;
329
+ background-color: @v-table-resizable-color;
330
+ }
331
+ }
332
+
333
+ /* 边框线 */
334
+ &--border-line {
335
+ &:before,
336
+ &:after {
337
+ content: '';
338
+ position: absolute;
339
+ top: 0;
340
+ width: 0;
341
+ height: 100%;
342
+ z-index: 3;
343
+ pointer-events: none;
344
+ }
345
+ &:before {
346
+ left: 0;
347
+ border-left: 1px solid @v-table-border-color;
348
+ }
349
+ &:after {
350
+ right: 0;
351
+ border-right: 1px solid @v-table-border-color;
352
+ }
353
+ }
354
+
355
+ /* 溢出列 */
356
+ .header--column,
357
+ .body--column,
358
+ .footer--column {
359
+ &.col--ellipsis {
360
+ .cell {
361
+ .text-overflow-cut();
362
+ word-break: break-all;
363
+ white-space: pre;
364
+ }
365
+ }
366
+ }
367
+
368
+ /* 弹出层 */
369
+ &__popper {
370
+ padding: @v-module-distance;
371
+ }
372
+ }