comins-table 0.1.5 → 0.1.7

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.
package/styles.css CHANGED
@@ -11,16 +11,26 @@
11
11
  --comins-table-cell-height: 36px;
12
12
  --comins-table-cell-padding-x: 12px;
13
13
  --comins-table-cell-padding-y: 8px;
14
+ --comins-table-detail-background: var(--comins-table-surface);
15
+ --comins-table-detail-border: var(--comins-table-row-border);
16
+ --comins-table-detail-padding: 12px;
17
+ --comins-table-drop-invalid: #dc2626;
18
+ --comins-table-drop-invalid-background: rgba(220, 38, 38, 0.22);
14
19
  --comins-table-drop-marker: #064e3b;
20
+ --comins-table-drop-valid: #2563eb;
21
+ --comins-table-drop-valid-background: rgba(37, 99, 235, 0.22);
15
22
  --comins-table-focus: rgba(16, 185, 129, 0.28);
16
23
  --comins-table-foreground: #111827;
24
+ --comins-table-group-row-background: #d1d5db;
25
+ --comins-table-group-row-color: var(--comins-table-foreground);
17
26
  --comins-table-header-background: var(--comins-table-accent);
18
- --comins-table-header-border: var(--comins-table-accent-strong);
27
+ --comins-table-header-border: var(--comins-table-row-border);
19
28
  --comins-table-header-color: var(--comins-table-accent-foreground);
20
29
  --comins-table-header-height: 36px;
21
- --comins-table-header-split-border: var(--comins-table-accent-strong);
30
+ --comins-table-header-split-border: var(--comins-table-cell-border);
22
31
  --comins-table-muted: #64748b;
23
32
  --comins-table-range-background: #f1fcf8;
33
+ --comins-table-selected-range-background: var(--comins-table-row-selected-background);
24
34
  --comins-table-resize-handle: color-mix(in srgb, var(--comins-table-header-color) 70%, transparent);
25
35
  --comins-table-row-border: #bbe7d6;
26
36
  --comins-table-row-disabled-background: #f1f5f9;
@@ -86,8 +96,8 @@
86
96
  --comins-table-accent-soft: #d1fae5;
87
97
  --comins-table-cell-border: #a7dbc8;
88
98
  --comins-table-header-background: #10b981;
89
- --comins-table-header-border: #047857;
90
- --comins-table-header-split-border: #047857;
99
+ --comins-table-header-border: var(--comins-table-row-border);
100
+ --comins-table-header-split-border: var(--comins-table-cell-border);
91
101
  --comins-table-row-border: #bbe7d6;
92
102
  --comins-table-row-disabled-background: #f1f5f9;
93
103
  --comins-table-row-disabled-color: #64748b;
@@ -108,10 +118,12 @@
108
118
  --comins-table-drop-marker: #34d399;
109
119
  --comins-table-focus: rgba(45, 212, 191, 0.26);
110
120
  --comins-table-foreground: #effcf7;
121
+ --comins-table-group-row-background: #334155;
122
+ --comins-table-group-row-color: #f8fafc;
111
123
  --comins-table-header-background: #064e3b;
112
- --comins-table-header-border: #0f766e;
124
+ --comins-table-header-border: var(--comins-table-row-border);
113
125
  --comins-table-header-color: #ecfdf5;
114
- --comins-table-header-split-border: #10b981;
126
+ --comins-table-header-split-border: var(--comins-table-cell-border);
115
127
  --comins-table-muted: #9ad8c4;
116
128
  --comins-table-range-background: #1f3530;
117
129
  --comins-table-row-border: #2c4c42;
@@ -135,9 +147,9 @@
135
147
  --comins-table-drop-marker: #278aa7;
136
148
  --comins-table-focus: rgba(39, 138, 167, 0.24);
137
149
  --comins-table-header-background: #87ceeb;
138
- --comins-table-header-border: #278aa7;
150
+ --comins-table-header-border: var(--comins-table-row-border);
139
151
  --comins-table-header-color: #07364a;
140
- --comins-table-header-split-border: #278aa7;
152
+ --comins-table-header-split-border: var(--comins-table-cell-border);
141
153
  --comins-table-range-background: #cdeeff;
142
154
  --comins-table-row-border: #a6dbed;
143
155
  --comins-table-row-disabled-background: #dbeff7;
@@ -160,9 +172,9 @@
160
172
  --comins-table-drop-marker: #22c55e;
161
173
  --comins-table-focus: rgba(34, 197, 94, 0.24);
162
174
  --comins-table-header-background: #98ff98;
163
- --comins-table-header-border: #22c55e;
175
+ --comins-table-header-border: var(--comins-table-row-border);
164
176
  --comins-table-header-color: #053f1c;
165
- --comins-table-header-split-border: #22c55e;
177
+ --comins-table-header-split-border: var(--comins-table-cell-border);
166
178
  --comins-table-range-background: #dfffe0;
167
179
  --comins-table-row-border: #9feaab;
168
180
  --comins-table-row-disabled-background: #e5f7e5;
@@ -185,9 +197,9 @@
185
197
  --comins-table-drop-marker: #7e7e7e;
186
198
  --comins-table-focus: rgba(126, 126, 126, 0.24);
187
199
  --comins-table-header-background: #bcbcbc;
188
- --comins-table-header-border: #7e7e7e;
200
+ --comins-table-header-border: var(--comins-table-row-border);
189
201
  --comins-table-header-color: #1f2937;
190
- --comins-table-header-split-border: #7e7e7e;
202
+ --comins-table-header-split-border: var(--comins-table-cell-border);
191
203
  --comins-table-range-background: #e5e5e5;
192
204
  --comins-table-row-border: #c7c7c7;
193
205
  --comins-table-row-disabled-background: #e7e7e7;
@@ -210,9 +222,9 @@
210
222
  --comins-table-drop-marker: #d97706;
211
223
  --comins-table-focus: rgba(245, 158, 11, 0.24);
212
224
  --comins-table-header-background: #ffa500;
213
- --comins-table-header-border: #d97706;
225
+ --comins-table-header-border: var(--comins-table-row-border);
214
226
  --comins-table-header-color: #2f1600;
215
- --comins-table-header-split-border: #d97706;
227
+ --comins-table-header-split-border: var(--comins-table-cell-border);
216
228
  --comins-table-range-background: #ffedd5;
217
229
  --comins-table-row-border: #fbbf24;
218
230
  --comins-table-row-disabled-background: #f7ead6;
@@ -243,6 +255,40 @@
243
255
  font-weight: 700;
244
256
  }
245
257
 
258
+ .comins-table-icon {
259
+ color: currentColor;
260
+ display: block;
261
+ flex: 0 0 15px;
262
+ height: 15px;
263
+ width: 15px;
264
+ }
265
+
266
+ .comins-table-icon-button {
267
+ align-items: center;
268
+ background: transparent;
269
+ border: 0;
270
+ color: inherit;
271
+ cursor: pointer;
272
+ display: inline-flex;
273
+ font: inherit;
274
+ height: 24px;
275
+ justify-content: center;
276
+ min-height: 24px;
277
+ min-width: 24px;
278
+ padding: 0;
279
+ width: 24px;
280
+ }
281
+
282
+ .comins-table-icon-button:disabled {
283
+ cursor: not-allowed;
284
+ opacity: 0.55;
285
+ }
286
+
287
+ .comins-table-icon-button:focus-visible {
288
+ box-shadow: 0 0 0 3px var(--comins-table-focus);
289
+ outline: none;
290
+ }
291
+
246
292
  .comins-tree-cell-content {
247
293
  align-items: center;
248
294
  display: inline-flex;
@@ -253,30 +299,150 @@
253
299
 
254
300
  .comins-tree-expander,
255
301
  .comins-tree-expander-spacer {
256
- flex: 0 0 18px;
257
- height: 18px;
258
- width: 18px;
302
+ flex: 0 0 24px;
303
+ height: 24px;
304
+ width: 24px;
259
305
  }
260
306
 
261
307
  .comins-tree-expander {
308
+ color: var(--comins-table-accent-strong);
309
+ }
310
+
311
+ .comins-tree-cell-value {
312
+ min-width: 0;
313
+ }
314
+
315
+ .comins-table__group-row {
316
+ background: var(--comins-table-group-row-background);
317
+ color: var(--comins-table-group-row-color);
318
+ }
319
+
320
+ .comins-table__group-row > .comins-table__group-cell {
321
+ background: inherit;
322
+ color: inherit;
323
+ font-weight: 600;
324
+ text-align: left;
325
+ }
326
+
327
+ .comins-row-group-cell-content {
262
328
  align-items: center;
263
- background: transparent;
264
- border: 0;
329
+ display: flex;
330
+ gap: 4px;
331
+ min-width: 0;
332
+ }
333
+
334
+ .comins-row-group-content {
335
+ align-items: center;
336
+ display: flex;
337
+ gap: 10px;
338
+ min-width: 0;
339
+ }
340
+
341
+ .comins-row-group-count,
342
+ .comins-row-group-aggregate {
343
+ color: var(--comins-table-muted);
344
+ flex: 0 0 auto;
345
+ font-size: 0.875em;
346
+ font-weight: 500;
347
+ }
348
+
349
+ .comins-row-group-drag-handle {
265
350
  color: var(--comins-table-accent-strong);
266
- cursor: pointer;
267
- display: inline-flex;
268
- font: inherit;
269
- justify-content: center;
270
- padding: 0;
351
+ cursor: grab;
352
+ flex: 0 0 24px;
271
353
  }
272
354
 
273
- .comins-tree-expander:focus-visible {
274
- box-shadow: 0 0 0 3px var(--comins-table-focus);
275
- outline: none;
355
+ .comins-row-group-drag-handle:active {
356
+ cursor: grabbing;
276
357
  }
277
358
 
278
- .comins-tree-cell-value {
359
+ .comins-row-group-expander {
360
+ color: var(--comins-table-accent-strong);
361
+ flex: 0 0 24px;
362
+ }
363
+
364
+ .comins-row-group-expander .comins-table-icon {
365
+ transform: rotate(0deg);
366
+ transition: transform 160ms ease;
367
+ }
368
+
369
+ .comins-row-group-expander[aria-expanded="true"] .comins-table-icon {
370
+ transform: rotate(90deg);
371
+ }
372
+
373
+ .comins-row-group-label {
279
374
  min-width: 0;
375
+ overflow: hidden;
376
+ text-overflow: ellipsis;
377
+ white-space: nowrap;
378
+ }
379
+
380
+ .comins-table__group-row[data-comins-group-drag-source="true"] > .comins-table__group-cell {
381
+ opacity: 0.68;
382
+ }
383
+
384
+ .comins-table__group-row[data-comins-group-drop-position="before"] > .comins-table__group-cell {
385
+ box-shadow: inset 0 3px var(--comins-table-drop-marker);
386
+ }
387
+
388
+ .comins-table__group-row[data-comins-group-drop-position="after"] > .comins-table__group-cell {
389
+ box-shadow: inset 0 -3px var(--comins-table-drop-marker);
390
+ }
391
+
392
+ .comins-table__group-row[data-comins-row-drop-valid="true"] > .comins-table__group-cell {
393
+ background: var(--comins-table-drop-valid-background);
394
+ }
395
+
396
+ .comins-table__group-row[data-comins-row-drop-valid="false"] > .comins-table__group-cell {
397
+ background: var(--comins-table-drop-invalid-background);
398
+ }
399
+
400
+ .comins-row-group-column-label {
401
+ font-weight: 500;
402
+ opacity: 0.72;
403
+ }
404
+
405
+ .comins-row-detail-expander {
406
+ color: var(--comins-table-accent-strong);
407
+ }
408
+
409
+ .comins-row-detail-expander .comins-table-icon,
410
+ .comins-tree-expander .comins-table-icon {
411
+ transform: rotate(0deg);
412
+ transition: transform 160ms ease;
413
+ }
414
+
415
+ .comins-row-detail-expander[aria-expanded="true"] .comins-table-icon,
416
+ .comins-tree-expander[aria-expanded="true"] .comins-table-icon {
417
+ transform: rotate(90deg);
418
+ }
419
+
420
+ .comins-row-cell-content {
421
+ align-items: center;
422
+ display: flex;
423
+ min-width: 0;
424
+ width: 100%;
425
+ }
426
+
427
+ .comins-row-cell-content__value {
428
+ flex: 1 1 auto;
429
+ min-width: 0;
430
+ overflow: hidden;
431
+ }
432
+
433
+ .comins-row-leading-controls {
434
+ align-items: center;
435
+ display: inline-flex;
436
+ flex: 0 0 auto;
437
+ gap: 2px;
438
+ margin-right: 4px;
439
+ }
440
+
441
+ .comins-row-detail-expander-spacer,
442
+ .comins-row-drag-handle {
443
+ flex: 0 0 24px;
444
+ height: 24px;
445
+ width: 24px;
280
446
  }
281
447
 
282
448
  .comins-table__body-viewport {
@@ -291,6 +457,7 @@
291
457
 
292
458
  .comins-table__body-viewport[data-virtualized="true"] {
293
459
  contain: layout paint;
460
+ overflow-anchor: none;
294
461
  position: relative;
295
462
  scroll-behavior: auto;
296
463
  }
@@ -403,6 +570,11 @@
403
570
  .comins-table__skeleton-block {
404
571
  animation: none;
405
572
  }
573
+
574
+ .comins-row-detail-expander .comins-table-icon,
575
+ .comins-tree-expander .comins-table-icon {
576
+ transition: none;
577
+ }
406
578
  }
407
579
 
408
580
  .comins-table__table {
@@ -454,6 +626,33 @@
454
626
  overflow: hidden;
455
627
  }
456
628
 
629
+ .comins-table__body-table .comins-table__td {
630
+ padding-bottom: min(
631
+ var(--comins-table-cell-padding-y),
632
+ max(0px, calc((var(--comins-table-row-height) - 25px) / 2))
633
+ );
634
+ padding-top: min(
635
+ var(--comins-table-cell-padding-y),
636
+ max(0px, calc((var(--comins-table-row-height) - 25px) / 2))
637
+ );
638
+ }
639
+
640
+ .comins-table__detail-cell {
641
+ border: 0;
642
+ height: auto;
643
+ overflow: visible;
644
+ padding: 0;
645
+ }
646
+
647
+ .comins-table__detail-content {
648
+ background: var(--comins-table-detail-background);
649
+ border-bottom: 1px solid var(--comins-table-detail-border);
650
+ border-right: 1px solid var(--comins-table-detail-border);
651
+ box-sizing: border-box;
652
+ overflow: auto;
653
+ padding: var(--comins-table-detail-padding);
654
+ }
655
+
457
656
  .comins-table__th {
458
657
  border-top: 1px solid var(--comins-table-header-border);
459
658
  cursor: grab;
@@ -497,8 +696,12 @@
497
696
  cursor: grabbing;
498
697
  }
499
698
 
699
+ .comins-table__th[data-column-position-locked="true"] {
700
+ cursor: default;
701
+ }
702
+
500
703
  .comins-table__th[data-column-placeholder="true"] {
501
- background: color-mix(in srgb, var(--comins-table-surface-muted) 82%, transparent);
704
+ background: color-mix(in srgb, var(--comins-table-header-background) 82%, #000000);
502
705
  outline: 1px dashed var(--comins-table-drop-marker);
503
706
  outline-offset: -2px;
504
707
  }
@@ -509,6 +712,23 @@
509
712
  pointer-events: none;
510
713
  }
511
714
 
715
+ .comins-column-placeholder-label {
716
+ display: none;
717
+ }
718
+
719
+ .comins-table__th[data-column-placeholder="true"] > .comins-column-placeholder-label {
720
+ align-items: center;
721
+ display: flex;
722
+ inset: 0;
723
+ justify-content: center;
724
+ overflow: hidden;
725
+ padding: 0 12px;
726
+ pointer-events: none;
727
+ position: absolute;
728
+ text-overflow: ellipsis;
729
+ white-space: nowrap;
730
+ }
731
+
512
732
  .comins-table__header-content {
513
733
  align-items: center;
514
734
  column-gap: 0;
@@ -524,6 +744,21 @@
524
744
  grid-template-columns: minmax(0, auto) minmax(0, 1fr) auto minmax(0, auto);
525
745
  }
526
746
 
747
+ .comins-column-move-handle {
748
+ align-items: center;
749
+ cursor: grab;
750
+ display: inline-flex;
751
+ flex: 0 0 24px;
752
+ height: 24px;
753
+ justify-content: center;
754
+ touch-action: none;
755
+ width: 24px;
756
+ }
757
+
758
+ .comins-column-move-handle:active {
759
+ cursor: grabbing;
760
+ }
761
+
527
762
  .comins-table__header-label,
528
763
  .comins-table__header-label > * {
529
764
  display: block;
@@ -551,6 +786,94 @@
551
786
  margin-left: 6px;
552
787
  }
553
788
 
789
+ .comins-column-filter {
790
+ display: inline-flex;
791
+ flex: 0 0 24px;
792
+ overflow: visible;
793
+ position: relative;
794
+ }
795
+
796
+ .comins-column-filter__trigger {
797
+ border-radius: 4px;
798
+ color: var(--comins-table-header-color);
799
+ opacity: 0.72;
800
+ }
801
+
802
+ .comins-column-filter__trigger:hover,
803
+ .comins-column-filter__trigger:focus-visible,
804
+ .comins-column-filter__trigger[data-active="true"] {
805
+ background: color-mix(in srgb, var(--comins-table-header-color) 18%, transparent);
806
+ opacity: 1;
807
+ }
808
+
809
+ .comins-column-filter__popover {
810
+ background: var(--comins-table-component-surface);
811
+ border: 1px solid var(--comins-table-component-border);
812
+ border-radius: 6px;
813
+ box-shadow: 0 12px 28px rgba(15, 23, 42, 0.18);
814
+ color: var(--comins-table-component-foreground);
815
+ display: grid;
816
+ font-size: 12px;
817
+ font-weight: 400;
818
+ gap: 10px;
819
+ min-width: 260px;
820
+ padding: 12px;
821
+ position: fixed;
822
+ text-align: left;
823
+ z-index: 9999;
824
+ }
825
+
826
+ .comins-column-filter__title {
827
+ font-size: 13px;
828
+ font-weight: 700;
829
+ }
830
+
831
+ .comins-column-filter__field {
832
+ color: var(--comins-table-component-muted);
833
+ display: grid;
834
+ gap: 4px;
835
+ }
836
+
837
+ .comins-column-filter__field > input,
838
+ .comins-column-filter__field > select {
839
+ background: var(--comins-table-component-surface);
840
+ border: 1px solid var(--comins-table-component-border);
841
+ border-radius: 4px;
842
+ color: var(--comins-table-component-foreground);
843
+ font: inherit;
844
+ min-height: 30px;
845
+ padding: 4px 8px;
846
+ width: 100%;
847
+ }
848
+
849
+ .comins-column-filter__field > input:focus-visible,
850
+ .comins-column-filter__field > select:focus-visible {
851
+ box-shadow: 0 0 0 3px var(--comins-table-component-focus);
852
+ outline: none;
853
+ }
854
+
855
+ .comins-column-filter__clear {
856
+ background: var(--comins-table-component-surface-muted);
857
+ border: 1px solid var(--comins-table-component-border);
858
+ border-radius: 4px;
859
+ color: var(--comins-table-component-button-foreground);
860
+ cursor: pointer;
861
+ font: inherit;
862
+ min-height: 30px;
863
+ padding: 4px 10px;
864
+ }
865
+
866
+ .comins-column-filter__clear:hover,
867
+ .comins-column-filter__clear:focus-visible {
868
+ background: var(--comins-table-component-accent-soft);
869
+ outline: none;
870
+ }
871
+
872
+ .comins-column-filter__clear:disabled {
873
+ cursor: not-allowed;
874
+ opacity: 0.55;
875
+ }
876
+
554
877
  .comins-table__header-components {
555
878
  align-items: center;
556
879
  display: inline-flex;
@@ -621,33 +944,75 @@
621
944
  display: block;
622
945
  }
623
946
 
624
- .comins-table__th[data-column-drop-target="true"] {
625
- background: var(--comins-table-accent-strong);
947
+ .comins-table__th[data-column-drop-target="true"][data-column-drop-valid="true"] {
948
+ background: var(--comins-table-drop-valid-background);
949
+ outline: 2px solid var(--comins-table-drop-valid);
950
+ outline-offset: -2px;
951
+ }
952
+
953
+ .comins-table__th[data-column-drop-valid="true"] .comins-column-drop-marker {
954
+ background: var(--comins-table-drop-valid);
626
955
  }
627
956
 
628
957
  .comins-table__th[data-column-placeholder="true"][data-column-drop-target="true"] {
629
- background: color-mix(in srgb, var(--comins-table-surface-muted) 82%, transparent);
958
+ background: color-mix(in srgb, var(--comins-table-header-background) 82%, #000000);
959
+ }
960
+
961
+ .comins-table__th[data-column-drop-target="true"][data-column-drop-valid="false"] {
962
+ background: var(--comins-table-drop-invalid-background);
963
+ cursor: not-allowed;
964
+ outline: 2px solid var(--comins-table-drop-invalid);
965
+ outline-offset: -2px;
966
+ }
967
+
968
+ .comins-table__th[data-column-drop-target="true"][data-column-drop-valid="false"] .comins-column-drop-marker {
969
+ background: var(--comins-table-drop-invalid);
970
+ }
971
+
972
+ [data-column-move-animating="prepare"] {
973
+ transition: none;
974
+ translate: var(--comins-column-move-offset) 0;
975
+ }
976
+
977
+ [data-column-move-animating="true"] {
978
+ transition: translate 180ms ease-out;
979
+ translate: var(--comins-column-move-offset) 0;
980
+ will-change: translate;
981
+ }
982
+
983
+ @media (prefers-reduced-motion: reduce) {
984
+ [data-column-move-animating] {
985
+ transition: none;
986
+ translate: none;
987
+ }
630
988
  }
631
989
 
632
990
  .comins-column-move-ghost {
991
+ align-items: center;
633
992
  background: var(--comins-table-drop-marker);
634
993
  border: 1px solid rgba(255, 255, 255, 0.58);
635
994
  border-radius: 6px;
636
995
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.22);
637
996
  color: #ffffff;
997
+ display: inline-flex;
638
998
  font-size: 13px;
639
999
  font-weight: 800;
640
1000
  max-width: 220px;
641
- overflow: hidden;
1001
+ gap: 6px;
642
1002
  padding: 7px 10px;
643
1003
  pointer-events: none;
644
1004
  position: fixed;
645
- text-overflow: ellipsis;
646
1005
  top: 0;
647
1006
  white-space: nowrap;
648
1007
  z-index: 60;
649
1008
  }
650
1009
 
1010
+ .comins-column-move-ghost__label {
1011
+ min-width: 0;
1012
+ overflow: hidden;
1013
+ text-overflow: ellipsis;
1014
+ }
1015
+
651
1016
  .comins-sort-meta {
652
1017
  align-items: center;
653
1018
  display: inline-flex;
@@ -666,35 +1031,6 @@
666
1031
  transform 180ms ease;
667
1032
  }
668
1033
 
669
- .comins-sort-icon {
670
- display: inline-block;
671
- height: 14px;
672
- position: relative;
673
- width: 14px;
674
- }
675
-
676
- .comins-sort-icon::before {
677
- border-left: 2px solid currentColor;
678
- border-top: 2px solid currentColor;
679
- content: "";
680
- height: 6px;
681
- left: 3px;
682
- position: absolute;
683
- top: 2px;
684
- transform: rotate(45deg);
685
- width: 6px;
686
- }
687
-
688
- .comins-sort-icon::after {
689
- background: currentColor;
690
- content: "";
691
- height: 8px;
692
- left: 6px;
693
- position: absolute;
694
- top: 4px;
695
- width: 2px;
696
- }
697
-
698
1034
  .comins-sort-indicator[data-sort-state="asc"] {
699
1035
  display: inline-flex;
700
1036
  opacity: 1;
@@ -704,7 +1040,7 @@
704
1040
  .comins-sort-indicator[data-sort-state="desc"] {
705
1041
  display: inline-flex;
706
1042
  opacity: 1;
707
- transform: scale(1) rotate(180deg);
1043
+ transform: scale(1) rotate(0deg);
708
1044
  }
709
1045
 
710
1046
  .comins-sort-priority {
@@ -747,23 +1083,21 @@
747
1083
  z-index: 1;
748
1084
  }
749
1085
 
750
- .comins-table__td--with-row-handle {
751
- padding-left: 30px;
752
- position: relative;
1086
+ .comins-row-drag-handle {
1087
+ align-items: center;
1088
+ cursor: grab;
1089
+ display: inline-flex;
1090
+ justify-content: center;
1091
+ opacity: 0.55;
753
1092
  }
754
1093
 
755
- .comins-row-drag-handle {
1094
+ .comins-row-drag-handle::before {
756
1095
  background:
757
1096
  radial-gradient(circle, var(--comins-table-accent-strong) 1px, transparent 1.5px) 0 0 / 4px 4px;
758
- cursor: grab;
1097
+ content: "";
759
1098
  display: block;
760
- height: 14px;
761
- left: 10px;
762
- opacity: 0.55;
763
- position: absolute;
764
- top: 50%;
765
- transform: translateY(-50%);
766
- width: 10px;
1099
+ height: 15px;
1100
+ width: 15px;
767
1101
  }
768
1102
 
769
1103
  .comins-row-drag-handle:active {
@@ -780,6 +1114,11 @@
780
1114
  text-align: center;
781
1115
  }
782
1116
 
1117
+ .comins-row-move-placeholder[data-comins-row-drop-valid="false"] td {
1118
+ background: var(--comins-table-drop-invalid-background);
1119
+ color: var(--comins-table-drop-invalid);
1120
+ }
1121
+
783
1122
  .comins-table-empty-filler td {
784
1123
  border-bottom: 0;
785
1124
  border-right: 1px solid var(--comins-table-cell-border);
@@ -790,11 +1129,20 @@
790
1129
  border-bottom: 0;
791
1130
  }
792
1131
 
793
- .comins-table__tr > .comins-table__td.comins-cell-range-selected,
794
- .comins-table__tr.comins-row-selected > .comins-table__td.comins-cell-range-selected {
1132
+ .comins-table__tr > .comins-table__td.comins-cell-range-selected {
795
1133
  background: var(--comins-table-range-background);
796
1134
  }
797
1135
 
1136
+ .comins-table__tr.comins-row-selected > .comins-table__td.comins-cell-range-selected {
1137
+ background: var(--comins-table-selected-range-background);
1138
+ box-shadow: inset 0 0 0 2px var(--comins-table-accent);
1139
+ }
1140
+
1141
+ .comins-table__tr.comins-row-selected[data-comins-row-custom-background="true"]
1142
+ > .comins-table__td.comins-cell-range-selected {
1143
+ background: var(--comins-table-row-custom-background);
1144
+ }
1145
+
798
1146
  .comins-table__component-layout {
799
1147
  align-items: center;
800
1148
  display: inline-flex;