@gp-grid/angular 0.16.1 → 0.18.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.
package/dist/styles.css CHANGED
@@ -88,9 +88,15 @@
88
88
  GP Grid - Clean Flat Design
89
89
  ============================================================================= */
90
90
 
91
- /* Grid Container */
91
+ /* Grid Container - structural */
92
92
  .gp-grid-container {
93
93
  outline: none;
94
+ user-select: none;
95
+ -webkit-user-select: none;
96
+ }
97
+
98
+ /* Visual properties - :where() for zero specificity, consumers can override with a single class */
99
+ :where(.gp-grid-container) {
94
100
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
95
101
  font-size: 13px;
96
102
  line-height: 1.5;
@@ -98,12 +104,13 @@
98
104
  background-color: var(--gp-grid-bg);
99
105
  border: 1px solid var(--gp-grid-border);
100
106
  border-radius: 6px;
101
- user-select: none;
102
- -webkit-user-select: none;
103
107
  }
104
108
 
105
109
  .gp-grid-container:focus {
106
110
  outline: none;
111
+ }
112
+
113
+ :where(.gp-grid-container:focus) {
107
114
  border-color: var(--gp-grid-primary);
108
115
  }
109
116
 
@@ -116,39 +123,43 @@
116
123
  position: sticky;
117
124
  top: 0;
118
125
  left: 0;
119
- /* z-index set inline (100) to ensure header stays above rows wrapper */
120
- background-color: var(--gp-grid-header-bg);
121
- border-bottom: 1px solid var(--gp-grid-border);
122
126
  flex-shrink: 0;
123
127
  z-index: 11;
124
128
  overflow: hidden;
125
129
  }
126
130
 
131
+ :where(.gp-grid-header) {
132
+ background-color: var(--gp-grid-header-bg);
133
+ border-bottom: 1px solid var(--gp-grid-border);
134
+ }
135
+
127
136
  .gp-grid-container .gp-grid-header-cell {
128
137
  position: absolute;
129
138
  box-sizing: border-box;
139
+ user-select: none;
140
+ display: flex;
141
+ top: 0;
142
+ touch-action: none;
143
+ }
144
+
145
+ :where(.gp-grid-header-cell) {
146
+ align-items: center;
147
+ padding: 0 12px;
130
148
  border-right: 1px solid var(--gp-grid-border);
131
149
  font-weight: 600;
132
150
  font-size: 12px;
133
151
  letter-spacing: 0.5px;
134
152
  color: var(--gp-grid-header-text);
135
153
  cursor: pointer;
136
- user-select: none;
137
- display: flex;
138
- align-items: center;
139
- padding: 0 12px;
140
154
  background-color: transparent;
141
155
  transition: background-color 0.1s ease;
142
- top: 0;
143
- background: transparent;
144
- touch-action: none;
145
156
  }
146
157
 
147
- .gp-grid-container .gp-grid-header-cell:hover {
158
+ :where(.gp-grid-header-cell:hover) {
148
159
  background-color: var(--gp-grid-hover);
149
160
  }
150
161
 
151
- .gp-grid-container .gp-grid-header-cell:active {
162
+ :where(.gp-grid-header-cell:active) {
152
163
  background-color: var(--gp-grid-border-light);
153
164
  }
154
165
 
@@ -157,6 +168,9 @@
157
168
  overflow: hidden;
158
169
  text-overflow: ellipsis;
159
170
  white-space: nowrap;
171
+ }
172
+
173
+ :where(.gp-grid-header-text) {
160
174
  color: var(--gp-grid-header-text);
161
175
  }
162
176
 
@@ -184,20 +198,20 @@
184
198
  gap: 2px;
185
199
  }
186
200
 
187
- .gp-grid-sort-arrow-up,
188
- .gp-grid-sort-arrow-down {
201
+ :where(.gp-grid-sort-arrow-up),
202
+ :where(.gp-grid-sort-arrow-down) {
189
203
  opacity: 0.35;
190
204
  transition: opacity 0.15s ease, color 0.15s ease;
191
205
  color: var(--gp-grid-text);
192
206
  }
193
207
 
194
- .gp-grid-sort-arrow-up.active,
195
- .gp-grid-sort-arrow-down.active {
208
+ :where(.gp-grid-sort-arrow-up.active),
209
+ :where(.gp-grid-sort-arrow-down.active) {
196
210
  opacity: 1;
197
211
  color: var(--gp-grid-primary);
198
212
  }
199
213
 
200
- .gp-grid-sort-index {
214
+ :where(.gp-grid-sort-index) {
201
215
  font-size: 9px;
202
216
  color: var(--gp-grid-primary);
203
217
  font-weight: 600;
@@ -210,6 +224,9 @@
210
224
  justify-content: center;
211
225
  width: 20px;
212
226
  height: 20px;
227
+ }
228
+
229
+ :where(.gp-grid-filter-icon) {
213
230
  border-radius: 4px;
214
231
  cursor: pointer;
215
232
  color: var(--gp-grid-text-secondary);
@@ -217,12 +234,12 @@
217
234
  margin-left: 2px;
218
235
  }
219
236
 
220
- .gp-grid-filter-icon:hover {
237
+ :where(.gp-grid-filter-icon:hover) {
221
238
  background-color: var(--gp-grid-hover);
222
239
  color: var(--gp-grid-primary);
223
240
  }
224
241
 
225
- .gp-grid-filter-icon.active {
242
+ :where(.gp-grid-filter-icon.active) {
226
243
  color: var(--gp-grid-primary);
227
244
  background-color: var(--gp-grid-primary-light);
228
245
  }
@@ -234,6 +251,8 @@
234
251
  min-height: 44px;
235
252
  width: 44px;
236
253
  height: 44px;
254
+ }
255
+ :where(.gp-grid-filter-icon) {
237
256
  margin-left: 0;
238
257
  }
239
258
 
@@ -246,6 +265,9 @@
246
265
  /* Disabled header state during data loading */
247
266
  .gp-grid-header--loading .gp-grid-header-cell {
248
267
  pointer-events: none;
268
+ }
269
+
270
+ :where(.gp-grid-header--loading .gp-grid-header-cell) {
249
271
  opacity: 0.6;
250
272
  cursor: default;
251
273
  }
@@ -265,8 +287,8 @@
265
287
  touch-action: none;
266
288
  }
267
289
 
268
- .gp-grid-header-resize-handle:hover,
269
- .gp-grid-header-resize-handle--active {
290
+ :where(.gp-grid-header-resize-handle:hover),
291
+ :where(.gp-grid-header-resize-handle--active) {
270
292
  background-color: var(--gp-grid-primary);
271
293
  opacity: 0.4;
272
294
  }
@@ -284,11 +306,14 @@
284
306
  top: 0;
285
307
  width: 2px;
286
308
  height: 100%;
287
- background-color: var(--gp-grid-primary);
288
309
  z-index: 1000;
289
310
  pointer-events: none;
290
311
  }
291
312
 
313
+ :where(.gp-grid-column-resize-line) {
314
+ background-color: var(--gp-grid-primary);
315
+ }
316
+
292
317
  /* =============================================================================
293
318
  Column Move
294
319
  ============================================================================= */
@@ -296,23 +321,26 @@
296
321
  .gp-grid-column-move-ghost {
297
322
  position: fixed;
298
323
  pointer-events: none;
299
- opacity: 0.7;
300
324
  z-index: 2000;
325
+ display: flex;
326
+ align-items: center;
327
+ box-sizing: border-box;
328
+ overflow: hidden;
329
+ white-space: nowrap;
330
+ text-overflow: ellipsis;
331
+ }
332
+
333
+ :where(.gp-grid-column-move-ghost) {
334
+ opacity: 0.7;
301
335
  background-color: var(--gp-grid-header-bg);
302
336
  border: 2px solid var(--gp-grid-primary);
303
337
  border-radius: 4px;
304
338
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
305
- display: flex;
306
- align-items: center;
307
339
  padding: 0 12px;
308
340
  font-weight: 600;
309
341
  font-size: 12px;
310
342
  letter-spacing: 0.5px;
311
343
  color: var(--gp-grid-header-text);
312
- box-sizing: border-box;
313
- overflow: hidden;
314
- white-space: nowrap;
315
- text-overflow: ellipsis;
316
344
  }
317
345
 
318
346
  .gp-grid-column-drop-indicator {
@@ -321,9 +349,12 @@
321
349
  left: 0;
322
350
  width: 3px;
323
351
  height: 100%;
324
- background-color: var(--gp-grid-primary);
325
352
  z-index: 1000;
326
353
  pointer-events: none;
354
+ }
355
+
356
+ :where(.gp-grid-column-drop-indicator) {
357
+ background-color: var(--gp-grid-primary);
327
358
  border-radius: 2px;
328
359
  }
329
360
 
@@ -359,7 +390,6 @@
359
390
  top: 0;
360
391
  box-sizing: border-box;
361
392
  display: flex;
362
- align-items: center;
363
393
  overflow: hidden;
364
394
  text-overflow: ellipsis;
365
395
  white-space: nowrap;
@@ -369,6 +399,7 @@
369
399
 
370
400
  /* Visual properties - :where() for zero specificity, so user highlight classes always win */
371
401
  :where(.gp-grid-cell) {
402
+ align-items: center;
372
403
  padding: 0 12px;
373
404
  cursor: cell;
374
405
  color: var(--gp-grid-text);
@@ -411,17 +442,20 @@
411
442
  position: absolute;
412
443
  width: 8px;
413
444
  height: 8px;
414
- background-color: var(--gp-grid-primary);
415
- border: 2px solid var(--gp-grid-bg);
416
- cursor: crosshair;
417
445
  z-index: 11;
418
446
  pointer-events: auto;
419
447
  box-sizing: border-box;
420
- border-radius: 1px;
421
448
  touch-action: none;
422
449
  }
423
450
 
424
- .gp-grid-fill-handle:hover {
451
+ :where(.gp-grid-fill-handle) {
452
+ background-color: var(--gp-grid-primary);
453
+ border: 2px solid var(--gp-grid-bg);
454
+ cursor: crosshair;
455
+ border-radius: 1px;
456
+ }
457
+
458
+ :where(.gp-grid-fill-handle:hover) {
425
459
  transform: scale(1.2);
426
460
  }
427
461
 
@@ -429,13 +463,15 @@
429
463
  .gp-grid-fill-handle {
430
464
  width: 24px;
431
465
  height: 24px;
466
+ }
467
+ :where(.gp-grid-fill-handle) {
432
468
  border-width: 3px;
433
469
  border-radius: 3px;
434
470
  }
435
471
  }
436
472
 
437
473
  /* Fill preview (cells being filled) */
438
- .gp-grid-cell.gp-grid-cell--fill-preview {
474
+ :where(.gp-grid-cell.gp-grid-cell--fill-preview) {
439
475
  background-color: var(--gp-grid-primary-light);
440
476
  border: 1px dashed var(--gp-grid-primary);
441
477
  }
@@ -447,6 +483,9 @@
447
483
  .gp-grid-edit-input {
448
484
  width: 100%;
449
485
  height: 100%;
486
+ }
487
+
488
+ :where(.gp-grid-edit-input) {
450
489
  padding: 0 11px;
451
490
  font-family: inherit;
452
491
  font-size: inherit;
@@ -459,6 +498,38 @@
459
498
  outline: none;
460
499
  }
461
500
 
501
+ /* =============================================================================
502
+ Cell Peek (read-only multi-line overlay on dblclick of non-editable cell)
503
+ ============================================================================= */
504
+
505
+ /* Structural: positioned absolutely by the framework wrapper; must sit above
506
+ selection (z:5), editing (z:10), fill handle (z:11). */
507
+ .gp-grid-cell-peek {
508
+ position: absolute;
509
+ z-index: 20;
510
+ box-sizing: border-box;
511
+ overflow: auto;
512
+ max-height: 320px;
513
+ }
514
+
515
+ :where(.gp-grid-cell-peek) {
516
+ padding: 8px 11px;
517
+ background-color: var(--gp-grid-bg);
518
+ color: var(--gp-grid-text);
519
+ border: 2px solid var(--gp-grid-primary);
520
+ border-radius: 3px;
521
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
522
+ font-family: inherit;
523
+ font-size: inherit;
524
+ line-height: 1.4;
525
+ white-space: pre-wrap;
526
+ overflow-wrap: anywhere;
527
+ cursor: text;
528
+ user-select: text;
529
+ -webkit-user-select: text;
530
+ }
531
+
532
+
462
533
 
463
534
  /* =============================================================================
464
535
  Loading & Error States
@@ -481,12 +552,15 @@
481
552
  top: 0;
482
553
  left: 0;
483
554
  width: 100%;
484
- height: 100%;
555
+ height: 100%;
485
556
  pointer-events: none;
557
+ }
558
+
559
+ :where(.gp-grid-loading-overlay) {
486
560
  background-color: var(--gp-grid-loading-overlay-bg, rgba(255, 255, 255, 0.4));
487
561
  }
488
562
 
489
- .gp-grid-container--dark .gp-grid-loading-overlay {
563
+ :where(.gp-grid-container--dark .gp-grid-loading-overlay) {
490
564
  background-color: var(--gp-grid-loading-overlay-bg, rgba(0, 0, 0, 0.3));
491
565
  }
492
566
 
@@ -496,6 +570,13 @@
496
570
  top: 50%;
497
571
  left: 50%;
498
572
  transform: translate(-50%, -50%);
573
+ z-index: 1000;
574
+ display: flex;
575
+ pointer-events: auto;
576
+ }
577
+
578
+ :where(.gp-grid-loading) {
579
+ align-items: center;
499
580
  padding: 12px 20px;
500
581
  background-color: var(--gp-grid-loading-bg);
501
582
  color: var(--gp-grid-loading-text);
@@ -503,20 +584,19 @@
503
584
  border: 1px solid var(--gp-grid-border);
504
585
  font-weight: 500;
505
586
  font-size: 13px;
506
- z-index: 1000;
507
- display: flex;
508
- align-items: center;
509
587
  gap: 10px;
510
- pointer-events: auto;
511
588
  }
512
589
 
513
590
  .gp-grid-loading-spinner {
514
591
  width: 16px;
515
592
  height: 16px;
593
+ animation: gp-grid-spin 0.7s linear infinite;
594
+ }
595
+
596
+ :where(.gp-grid-loading-spinner) {
516
597
  border: 2px solid var(--gp-grid-border);
517
598
  border-top-color: var(--gp-grid-primary);
518
599
  border-radius: 50%;
519
- animation: gp-grid-spin 0.7s linear infinite;
520
600
  }
521
601
 
522
602
  @keyframes gp-grid-spin {
@@ -530,6 +610,12 @@
530
610
  top: 50%;
531
611
  left: 50%;
532
612
  transform: translate(-50%, -50%);
613
+ z-index: 1000;
614
+ user-select: text;
615
+ -webkit-user-select: text;
616
+ }
617
+
618
+ :where(.gp-grid-error) {
533
619
  padding: 12px 20px;
534
620
  background-color: var(--gp-grid-error-bg);
535
621
  color: var(--gp-grid-error-text);
@@ -537,11 +623,8 @@
537
623
  border: 1px solid var(--gp-grid-error-text);
538
624
  font-weight: 500;
539
625
  font-size: 13px;
540
- z-index: 1000;
541
626
  max-width: 80%;
542
627
  text-align: center;
543
- user-select: text;
544
- -webkit-user-select: text;
545
628
  cursor: text;
546
629
  }
547
630
 
@@ -554,6 +637,9 @@
554
637
  top: 50%;
555
638
  left: 50%;
556
639
  transform: translate(-50%, -50%);
640
+ }
641
+
642
+ :where(.gp-grid-empty) {
557
643
  color: var(--gp-grid-text-muted);
558
644
  font-size: 14px;
559
645
  text-align: center;
@@ -569,20 +655,20 @@
569
655
  height: 8px;
570
656
  }
571
657
 
572
- .gp-grid-container::-webkit-scrollbar-track {
658
+ :where(.gp-grid-container)::-webkit-scrollbar-track {
573
659
  background-color: var(--gp-grid-scrollbar-track);
574
660
  }
575
661
 
576
- .gp-grid-container::-webkit-scrollbar-thumb {
662
+ :where(.gp-grid-container)::-webkit-scrollbar-thumb {
577
663
  background-color: var(--gp-grid-scrollbar-thumb);
578
664
  border-radius: 4px;
579
665
  }
580
666
 
581
- .gp-grid-container::-webkit-scrollbar-thumb:hover {
667
+ :where(.gp-grid-container)::-webkit-scrollbar-thumb:hover {
582
668
  background-color: var(--gp-grid-scrollbar-thumb-hover);
583
669
  }
584
670
 
585
- .gp-grid-container::-webkit-scrollbar-corner {
671
+ :where(.gp-grid-container)::-webkit-scrollbar-corner {
586
672
  background-color: var(--gp-grid-scrollbar-track);
587
673
  }
588
674
 
@@ -592,17 +678,21 @@
592
678
  ============================================================================= */
593
679
 
594
680
  .gp-grid-filter-popup {
681
+ max-height: 400px;
682
+ max-width: min(360px, calc(100vw - 16px));
683
+ display: flex;
684
+ flex-direction: column;
685
+ }
686
+
687
+ :where(.gp-grid-filter-popup) {
595
688
  background-color: var(--gp-grid-bg);
596
689
  border: 1px solid var(--gp-grid-border);
597
690
  border-radius: 6px;
598
691
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
599
- max-height: 400px;
600
- display: flex;
601
- flex-direction: column;
602
692
  font-size: 13px;
603
693
  }
604
694
 
605
- .gp-grid-filter-header {
695
+ :where(.gp-grid-filter-header) {
606
696
  padding: 10px 12px;
607
697
  font-weight: 600;
608
698
  border-bottom: 1px solid var(--gp-grid-border-light);
@@ -610,17 +700,23 @@
610
700
  }
611
701
 
612
702
  .gp-grid-filter-content {
613
- padding: 10px 12px;
614
703
  display: flex;
615
704
  flex-direction: column;
616
- gap: 10px;
617
705
  overflow-y: auto;
618
706
  min-height: 0;
619
707
  }
620
708
 
709
+ :where(.gp-grid-filter-content) {
710
+ padding: 10px 12px;
711
+ gap: 10px;
712
+ }
713
+
621
714
  /* Mode toggle (Values / Condition) */
622
715
  .gp-grid-filter-mode-toggle {
623
716
  display: flex;
717
+ }
718
+
719
+ :where(.gp-grid-filter-mode-toggle) {
624
720
  gap: 4px;
625
721
  background-color: var(--gp-grid-bg-alt);
626
722
  border-radius: 4px;
@@ -629,6 +725,9 @@
629
725
 
630
726
  .gp-grid-filter-mode-toggle button {
631
727
  flex: 1;
728
+ }
729
+
730
+ :where(.gp-grid-filter-mode-toggle button) {
632
731
  padding: 6px 10px;
633
732
  font-size: 11px;
634
733
  font-family: inherit;
@@ -640,18 +739,18 @@
640
739
  transition: background-color 0.15s ease, color 0.15s ease;
641
740
  }
642
741
 
643
- .gp-grid-filter-mode-toggle button:hover {
742
+ :where(.gp-grid-filter-mode-toggle button:hover) {
644
743
  color: var(--gp-grid-text);
645
744
  }
646
745
 
647
- .gp-grid-filter-mode-toggle button.active {
746
+ :where(.gp-grid-filter-mode-toggle button.active) {
648
747
  background-color: var(--gp-grid-bg);
649
748
  color: var(--gp-grid-text);
650
749
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
651
750
  }
652
751
 
653
752
  /* Info message for too many values */
654
- .gp-grid-filter-info {
753
+ :where(.gp-grid-filter-info) {
655
754
  font-size: 11px;
656
755
  color: var(--gp-grid-text-secondary);
657
756
  padding: 6px 8px;
@@ -663,6 +762,10 @@
663
762
  .gp-grid-filter-search {
664
763
  width: 100%;
665
764
  height: 30px;
765
+ box-sizing: border-box;
766
+ }
767
+
768
+ :where(.gp-grid-filter-search) {
666
769
  padding: 0 10px;
667
770
  font-family: inherit;
668
771
  font-size: 12px;
@@ -670,10 +773,9 @@
670
773
  border-radius: 4px;
671
774
  background-color: var(--gp-grid-input-bg);
672
775
  color: var(--gp-grid-text);
673
- box-sizing: border-box;
674
776
  }
675
777
 
676
- .gp-grid-filter-search:focus {
778
+ :where(.gp-grid-filter-search:focus) {
677
779
  outline: none;
678
780
  border-color: var(--gp-grid-primary);
679
781
  }
@@ -681,11 +783,17 @@
681
783
  /* Select All / Deselect All actions */
682
784
  .gp-grid-filter-actions {
683
785
  display: flex;
786
+ }
787
+
788
+ :where(.gp-grid-filter-actions) {
684
789
  gap: 8px;
685
790
  }
686
791
 
687
792
  .gp-grid-filter-actions button {
688
793
  flex: 1;
794
+ }
795
+
796
+ :where(.gp-grid-filter-actions button) {
689
797
  padding: 4px 8px;
690
798
  font-size: 11px;
691
799
  font-family: inherit;
@@ -696,11 +804,11 @@
696
804
  cursor: pointer;
697
805
  }
698
806
 
699
- .gp-grid-filter-actions button:hover:not(:disabled) {
807
+ :where(.gp-grid-filter-actions button:hover:not(:disabled)) {
700
808
  background-color: var(--gp-grid-hover);
701
809
  }
702
810
 
703
- .gp-grid-filter-actions button:disabled {
811
+ :where(.gp-grid-filter-actions button:disabled) {
704
812
  opacity: 0.5;
705
813
  cursor: not-allowed;
706
814
  }
@@ -711,6 +819,9 @@
711
819
  overflow-y: auto;
712
820
  display: flex;
713
821
  flex-direction: column;
822
+ }
823
+
824
+ :where(.gp-grid-filter-list) {
714
825
  gap: 4px;
715
826
  border: 1px solid var(--gp-grid-border-light);
716
827
  border-radius: 4px;
@@ -720,18 +831,24 @@
720
831
  .gp-grid-filter-option {
721
832
  display: flex;
722
833
  align-items: center;
834
+ }
835
+
836
+ :where(.gp-grid-filter-option) {
723
837
  gap: 8px;
724
838
  padding: 4px 6px;
725
839
  border-radius: 3px;
726
840
  cursor: pointer;
727
841
  }
728
842
 
729
- .gp-grid-filter-option:hover {
843
+ :where(.gp-grid-filter-option:hover) {
730
844
  background-color: var(--gp-grid-hover);
731
845
  }
732
846
 
733
847
  .gp-grid-filter-option input[type="checkbox"] {
734
848
  margin: 0;
849
+ }
850
+
851
+ :where(.gp-grid-filter-option input[type="checkbox"]) {
735
852
  cursor: pointer;
736
853
  }
737
854
 
@@ -742,7 +859,7 @@
742
859
  white-space: nowrap;
743
860
  }
744
861
 
745
- .gp-grid-filter-blank {
862
+ :where(.gp-grid-filter-blank) {
746
863
  font-style: italic;
747
864
  color: var(--gp-grid-text-muted);
748
865
  }
@@ -751,17 +868,26 @@
751
868
  .gp-grid-filter-condition {
752
869
  display: flex;
753
870
  flex-direction: column;
871
+ }
872
+
873
+ :where(.gp-grid-filter-condition) {
754
874
  gap: 6px;
755
875
  }
756
876
 
757
877
  .gp-grid-filter-row {
758
878
  display: flex;
759
879
  align-items: center;
880
+ }
881
+
882
+ :where(.gp-grid-filter-row) {
760
883
  gap: 6px;
761
884
  }
762
885
 
763
886
  .gp-grid-filter-row select {
764
887
  height: 30px;
888
+ }
889
+
890
+ :where(.gp-grid-filter-row select) {
765
891
  padding: 0 6px;
766
892
  font-family: inherit;
767
893
  font-size: 12px;
@@ -778,6 +904,14 @@
778
904
  .gp-grid-filter-text-input {
779
905
  flex: 1;
780
906
  height: 30px;
907
+ min-width: 0;
908
+ box-sizing: border-box;
909
+ }
910
+
911
+ :where(.gp-grid-filter-row input[type="number"]),
912
+ :where(.gp-grid-filter-row input[type="date"]),
913
+ :where(.gp-grid-filter-row input[type="text"]),
914
+ :where(.gp-grid-filter-text-input) {
781
915
  padding: 0 8px;
782
916
  font-family: inherit;
783
917
  font-size: 12px;
@@ -785,16 +919,14 @@
785
919
  border-radius: 4px;
786
920
  background-color: var(--gp-grid-input-bg);
787
921
  color: var(--gp-grid-text);
788
- min-width: 0;
789
- box-sizing: border-box;
790
922
  }
791
923
 
792
- .gp-grid-filter-row input:focus {
924
+ :where(.gp-grid-filter-row input:focus) {
793
925
  outline: none;
794
926
  border-color: var(--gp-grid-primary);
795
927
  }
796
928
 
797
- .gp-grid-filter-to {
929
+ :where(.gp-grid-filter-to) {
798
930
  font-size: 11px;
799
931
  color: var(--gp-grid-text-secondary);
800
932
  }
@@ -802,6 +934,9 @@
802
934
  .gp-grid-filter-remove {
803
935
  width: 24px;
804
936
  height: 24px;
937
+ }
938
+
939
+ :where(.gp-grid-filter-remove) {
805
940
  padding: 0;
806
941
  font-size: 16px;
807
942
  line-height: 1;
@@ -812,7 +947,7 @@
812
947
  cursor: pointer;
813
948
  }
814
949
 
815
- .gp-grid-filter-remove:hover {
950
+ :where(.gp-grid-filter-remove:hover) {
816
951
  background-color: var(--gp-grid-error-bg);
817
952
  color: var(--gp-grid-error-text);
818
953
  }
@@ -820,12 +955,18 @@
820
955
  /* AND/OR combination toggle */
821
956
  .gp-grid-filter-combination {
822
957
  display: flex;
958
+ }
959
+
960
+ :where(.gp-grid-filter-combination) {
823
961
  gap: 4px;
824
962
  margin-bottom: 4px;
825
963
  }
826
964
 
827
965
  .gp-grid-filter-combination button {
828
966
  flex: 1;
967
+ }
968
+
969
+ :where(.gp-grid-filter-combination button) {
829
970
  padding: 4px 8px;
830
971
  font-size: 10px;
831
972
  font-family: inherit;
@@ -836,7 +977,7 @@
836
977
  cursor: pointer;
837
978
  }
838
979
 
839
- .gp-grid-filter-combination button.active {
980
+ :where(.gp-grid-filter-combination button.active) {
840
981
  background-color: var(--gp-grid-primary);
841
982
  border-color: var(--gp-grid-primary);
842
983
  color: #fff;
@@ -845,6 +986,9 @@
845
986
  /* Add condition button */
846
987
  .gp-grid-filter-add {
847
988
  width: 100%;
989
+ }
990
+
991
+ :where(.gp-grid-filter-add) {
848
992
  padding: 6px;
849
993
  font-size: 11px;
850
994
  font-family: inherit;
@@ -855,7 +999,7 @@
855
999
  cursor: pointer;
856
1000
  }
857
1001
 
858
- .gp-grid-filter-add:hover {
1002
+ :where(.gp-grid-filter-add:hover) {
859
1003
  background-color: var(--gp-grid-hover);
860
1004
  border-color: var(--gp-grid-primary);
861
1005
  color: var(--gp-grid-primary);
@@ -864,6 +1008,9 @@
864
1008
  /* Apply / Clear buttons */
865
1009
  .gp-grid-filter-buttons {
866
1010
  display: flex;
1011
+ }
1012
+
1013
+ :where(.gp-grid-filter-buttons) {
867
1014
  gap: 8px;
868
1015
  padding-top: 8px;
869
1016
  border-top: 1px solid var(--gp-grid-border-light);
@@ -872,6 +1019,10 @@
872
1019
  .gp-grid-filter-btn-clear,
873
1020
  .gp-grid-filter-btn-apply {
874
1021
  flex: 1;
1022
+ }
1023
+
1024
+ :where(.gp-grid-filter-btn-clear),
1025
+ :where(.gp-grid-filter-btn-apply) {
875
1026
  padding: 8px 12px;
876
1027
  font-size: 12px;
877
1028
  font-family: inherit;
@@ -879,23 +1030,23 @@
879
1030
  cursor: pointer;
880
1031
  }
881
1032
 
882
- .gp-grid-filter-btn-clear {
1033
+ :where(.gp-grid-filter-btn-clear) {
883
1034
  border: 1px solid var(--gp-grid-input-border);
884
1035
  background-color: var(--gp-grid-bg);
885
1036
  color: var(--gp-grid-text);
886
1037
  }
887
1038
 
888
- .gp-grid-filter-btn-clear:hover {
1039
+ :where(.gp-grid-filter-btn-clear:hover) {
889
1040
  background-color: var(--gp-grid-hover);
890
1041
  }
891
1042
 
892
- .gp-grid-filter-btn-apply {
1043
+ :where(.gp-grid-filter-btn-apply) {
893
1044
  border: 1px solid var(--gp-grid-primary);
894
1045
  background-color: var(--gp-grid-primary);
895
1046
  color: #fff;
896
1047
  }
897
1048
 
898
- .gp-grid-filter-btn-apply:hover {
1049
+ :where(.gp-grid-filter-btn-apply:hover) {
899
1050
  opacity: 0.9;
900
1051
  }
901
1052
 
@@ -905,11 +1056,14 @@
905
1056
  ============================================================================= */
906
1057
 
907
1058
  .gp-grid-cell--row-drag-handle {
908
- cursor: grab;
909
1059
  touch-action: none;
910
1060
  }
911
1061
 
912
- .gp-grid-cell--row-drag-handle:active {
1062
+ :where(.gp-grid-cell--row-drag-handle) {
1063
+ cursor: grab;
1064
+ }
1065
+
1066
+ :where(.gp-grid-cell--row-drag-handle:active) {
913
1067
  cursor: grabbing;
914
1068
  }
915
1069
 
@@ -919,6 +1073,9 @@
919
1073
  justify-content: center;
920
1074
  width: 100%;
921
1075
  height: 100%;
1076
+ }
1077
+
1078
+ :where(.gp-grid-row-drag-icon) {
922
1079
  color: var(--gp-grid-text-secondary);
923
1080
  }
924
1081
 
@@ -930,14 +1087,17 @@
930
1087
  .gp-grid-row-drag-ghost {
931
1088
  position: fixed;
932
1089
  pointer-events: none;
933
- opacity: 0.8;
934
1090
  z-index: 2000;
1091
+ overflow: hidden;
1092
+ box-sizing: border-box;
1093
+ }
1094
+
1095
+ :where(.gp-grid-row-drag-ghost) {
1096
+ opacity: 0.8;
935
1097
  background-color: var(--gp-grid-bg, #fff);
936
1098
  border: 2px solid var(--gp-grid-primary);
937
1099
  border-radius: 4px;
938
1100
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
939
- overflow: hidden;
940
- box-sizing: border-box;
941
1101
  }
942
1102
 
943
1103
  .gp-grid-row-drop-indicator {
@@ -945,8 +1105,11 @@
945
1105
  left: 0;
946
1106
  width: 100%;
947
1107
  height: 3px;
948
- background-color: var(--gp-grid-primary);
949
1108
  z-index: 1000;
950
1109
  pointer-events: none;
1110
+ }
1111
+
1112
+ :where(.gp-grid-row-drop-indicator) {
1113
+ background-color: var(--gp-grid-primary);
951
1114
  border-radius: 2px;
952
1115
  }