@alaarab/ogrid-react-fluent 2.1.2 → 2.1.4

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 (28) hide show
  1. package/dist/esm/index.css +1278 -0
  2. package/dist/esm/index.js +1166 -11
  3. package/dist/types/OGrid/OGrid.d.ts +1 -1
  4. package/dist/types/index.d.ts +40 -1
  5. package/package.json +4 -4
  6. package/dist/esm/ColumnChooser/ColumnChooser.js +0 -34
  7. package/dist/esm/ColumnChooser/ColumnChooser.module.css +0 -50
  8. package/dist/esm/ColumnHeaderFilter/ColumnHeaderFilter.js +0 -30
  9. package/dist/esm/ColumnHeaderFilter/ColumnHeaderFilter.module.css +0 -412
  10. package/dist/esm/ColumnHeaderFilter/MultiSelectFilterPopover.js +0 -17
  11. package/dist/esm/ColumnHeaderFilter/PeopleFilterPopover.js +0 -18
  12. package/dist/esm/ColumnHeaderFilter/TextFilterPopover.js +0 -11
  13. package/dist/esm/ColumnHeaderFilter/index.js +0 -1
  14. package/dist/esm/ColumnHeaderMenu/ColumnHeaderMenu.js +0 -12
  15. package/dist/esm/ColumnHeaderMenu/ColumnHeaderMenu.module.css +0 -46
  16. package/dist/esm/ColumnHeaderMenu/index.js +0 -1
  17. package/dist/esm/DataGridTable/DataGridTable.js +0 -116
  18. package/dist/esm/DataGridTable/DataGridTable.module.css +0 -845
  19. package/dist/esm/DataGridTable/DropIndicator.js +0 -6
  20. package/dist/esm/DataGridTable/EmptyState.js +0 -14
  21. package/dist/esm/DataGridTable/GridContextMenu.js +0 -13
  22. package/dist/esm/DataGridTable/InlineCellEditor.js +0 -6
  23. package/dist/esm/DataGridTable/LoadingOverlay.js +0 -12
  24. package/dist/esm/DataGridTable/StatusBar.js +0 -12
  25. package/dist/esm/OGrid/OGrid.js +0 -9
  26. package/dist/esm/OGrid/index.js +0 -1
  27. package/dist/esm/PaginationControls/PaginationControls.js +0 -26
  28. package/dist/esm/PaginationControls/PaginationControls.module.css +0 -74
@@ -1,845 +0,0 @@
1
- @charset "UTF-8";
2
- .tableScrollContent {
3
- display: flex;
4
- flex-direction: column;
5
- width: 100%;
6
- min-width: 0;
7
- background: var(--ogrid-bg, #fff);
8
- }
9
-
10
- .tableWidthAnchor {
11
- position: relative;
12
- width: max-content;
13
- min-width: var(--data-table-min-width, max-content);
14
- background: var(--ogrid-bg, #fff);
15
- }
16
-
17
- .tableWrapper {
18
- position: relative;
19
- flex: 1;
20
- min-height: 0;
21
- overflow-x: hidden;
22
- overflow-y: auto;
23
- width: 100%;
24
- min-width: 0;
25
- max-width: 100%;
26
- box-sizing: border-box;
27
- background: var(--ogrid-bg, #fff);
28
- will-change: scroll-position;
29
- }
30
- .tableWrapper[data-overflow-x=true] {
31
- overflow-x: auto;
32
- }
33
- .tableWrapper[data-empty=true] {
34
- overflow-x: hidden;
35
- }
36
- .tableWrapper[data-loading=true] {
37
- min-height: 200px;
38
- }
39
-
40
- .dataTable {
41
- width: var(--data-table-width, fit-content);
42
- max-width: 100%;
43
- min-width: var(--data-table-min-width, max-content);
44
- border-collapse: separate;
45
- border-spacing: 0;
46
- box-sizing: border-box;
47
- table-layout: auto;
48
- background-color: var(--ogrid-bg, #fff);
49
- color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));
50
- }
51
- .dataTable tbody tr {
52
- height: var(--ogrid-row-height, auto);
53
- }
54
-
55
- .groupHeaderCell {
56
- text-align: center;
57
- font-weight: 600;
58
- border-bottom: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));
59
- padding: 6px 10px;
60
- background: var(--ogrid-header-bg, #f5f5f5);
61
- }
62
-
63
- .headerCellContent {
64
- display: flex;
65
- align-items: center;
66
- gap: 4px;
67
- }
68
-
69
- .headerMenuTrigger {
70
- background: transparent;
71
- border: none;
72
- cursor: pointer;
73
- padding: 2px 4px;
74
- font-size: 16px;
75
- line-height: 1;
76
- color: var(--ogrid-fg-secondary, rgba(0, 0, 0, 0.6));
77
- opacity: 1;
78
- transition: background-color 0.15s;
79
- border-radius: 3px;
80
- display: flex;
81
- align-items: center;
82
- justify-content: center;
83
- min-width: 20px;
84
- height: 20px;
85
- }
86
- .headerMenuTrigger:hover {
87
- background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));
88
- }
89
- .headerMenuTrigger:active {
90
- background: var(--ogrid-active-bg, rgba(0, 0, 0, 0.08));
91
- }
92
- .headerMenuTrigger:focus-visible {
93
- outline: 2px solid var(--ogrid-accent, #0078d4);
94
- outline-offset: 2px;
95
- }
96
-
97
- .dropIndicator {
98
- position: absolute;
99
- top: 0;
100
- bottom: 0;
101
- width: 3px;
102
- background: var(--ogrid-selection-color, #217346);
103
- pointer-events: none;
104
- z-index: 100;
105
- transition: left 0.05s;
106
- }
107
-
108
- .resizeHandle {
109
- position: absolute;
110
- top: 0;
111
- right: -3px;
112
- bottom: 0;
113
- width: 8px;
114
- cursor: col-resize;
115
- user-select: none;
116
- z-index: 1;
117
- }
118
- .resizeHandle::after {
119
- content: "";
120
- position: absolute;
121
- top: 0;
122
- right: 3px;
123
- bottom: 0;
124
- width: 2px;
125
- }
126
- .resizeHandle:hover::after {
127
- background-color: var(--ogrid-accent, #0078d4);
128
- }
129
- .resizeHandle:active::after {
130
- background-color: var(--ogrid-accent-dark, #005a9e);
131
- }
132
-
133
- .pinnedColLeft {
134
- position: sticky;
135
- z-index: 6;
136
- background: var(--ogrid-bg, #ffffff);
137
- }
138
- .pinnedColLeft::after {
139
- content: "";
140
- position: absolute;
141
- top: -1px;
142
- right: -4px;
143
- bottom: -1px;
144
- width: 4px;
145
- background: linear-gradient(to right, var(--ogrid-pinned-shadow, rgba(0, 0, 0, 0.12)), transparent);
146
- pointer-events: none;
147
- }
148
-
149
- .pinnedColRight {
150
- position: sticky;
151
- z-index: 6;
152
- background: var(--ogrid-bg, #ffffff);
153
- }
154
- .pinnedColRight::before {
155
- content: "";
156
- position: absolute;
157
- top: -1px;
158
- left: -4px;
159
- bottom: -1px;
160
- width: 4px;
161
- background: linear-gradient(to left, var(--ogrid-pinned-shadow, rgba(0, 0, 0, 0.12)), transparent);
162
- pointer-events: none;
163
- }
164
-
165
- .cellContent {
166
- width: 100%;
167
- height: 100%;
168
- display: flex;
169
- align-items: center;
170
- min-width: 0;
171
- box-sizing: border-box;
172
- overflow: hidden;
173
- text-overflow: ellipsis;
174
- white-space: nowrap;
175
- user-select: none;
176
- outline: none;
177
- }
178
- .cellContent:focus-visible {
179
- outline: none;
180
- }
181
-
182
- .activeCellContent {
183
- outline: 2px solid var(--ogrid-selection-color, #217346);
184
- outline-offset: -1px;
185
- z-index: 2;
186
- position: relative;
187
- overflow: visible;
188
- background: var(--ogrid-active-cell-bg, rgba(0, 0, 0, 0.02));
189
- }
190
-
191
- .editingCellContent {
192
- width: 100%;
193
- height: 100%;
194
- display: flex;
195
- align-items: center;
196
- box-sizing: border-box;
197
- outline: 2px solid var(--ogrid-selection-color, #217346);
198
- outline-offset: -1px;
199
- z-index: 2;
200
- position: relative;
201
- background: var(--ogrid-bg, #fff);
202
- overflow: visible;
203
- padding: 0;
204
- }
205
-
206
- .cellInRange {
207
- background: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)) !important;
208
- }
209
-
210
- :global([data-drag-range]) {
211
- background: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)) !important;
212
- }
213
-
214
- :global([data-drag-anchor]) {
215
- background: var(--ogrid-bg, #fff) !important;
216
- }
217
-
218
- .cellCut {
219
- background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)) !important;
220
- opacity: 0.7;
221
- }
222
-
223
- .fillHandle {
224
- position: absolute;
225
- right: -3px;
226
- bottom: -3px;
227
- width: 7px;
228
- height: 7px;
229
- background: var(--ogrid-selection-color, #217346);
230
- border: 1px solid var(--ogrid-bg, #fff);
231
- border-radius: 1px;
232
- cursor: crosshair;
233
- pointer-events: auto;
234
- z-index: 3;
235
- }
236
-
237
- .selectionHeaderCellInner,
238
- .selectionCellInner {
239
- display: flex;
240
- align-items: center;
241
- justify-content: center;
242
- width: 100%;
243
- }
244
-
245
- .rowNumberHeaderCellInner,
246
- .rowNumberCellInner {
247
- display: flex;
248
- align-items: center;
249
- justify-content: center;
250
- width: 100%;
251
- font-variant-numeric: tabular-nums;
252
- }
253
-
254
- .statusBar {
255
- display: flex;
256
- align-items: center;
257
- gap: 16px;
258
- width: 100%;
259
- padding: 6px 12px;
260
- box-sizing: border-box;
261
- font-size: 12px;
262
- color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));
263
- background: var(--ogrid-header-bg, #f5f5f5);
264
- border-top: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));
265
- min-height: 28px;
266
- }
267
-
268
- .statusBarItem {
269
- display: inline-flex;
270
- align-items: center;
271
- gap: 4px;
272
- }
273
- .statusBarItem:not(:last-child)::after {
274
- content: "";
275
- width: 1px;
276
- height: 14px;
277
- background: var(--ogrid-border, rgba(0, 0, 0, 0.12));
278
- margin-left: 12px;
279
- }
280
-
281
- .statusBarLabel {
282
- color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));
283
- }
284
-
285
- .statusBarValue {
286
- color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));
287
- font-weight: 600;
288
- }
289
-
290
- .contextMenu {
291
- position: fixed;
292
- z-index: 10000;
293
- min-width: 160px;
294
- padding: 4px 0;
295
- background: var(--ogrid-bg, #fff);
296
- border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));
297
- border-radius: 6px;
298
- box-shadow: var(--ogrid-shadow, 0 4px 16px rgba(0, 0, 0, 0.12));
299
- }
300
-
301
- .contextMenuItem {
302
- display: flex;
303
- align-items: center;
304
- justify-content: space-between;
305
- gap: 24px;
306
- width: 100%;
307
- padding: 6px 12px;
308
- border: none;
309
- background: none;
310
- font-size: 13px;
311
- text-align: left;
312
- cursor: pointer;
313
- color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));
314
- }
315
- .contextMenuItem:hover:not(:disabled) {
316
- background: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04));
317
- }
318
- .contextMenuItem:disabled {
319
- opacity: 0.5;
320
- cursor: not-allowed;
321
- }
322
-
323
- .contextMenuItemLabel {
324
- flex: 1;
325
- }
326
-
327
- .contextMenuItemShortcut {
328
- color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));
329
- font-size: 0.85em;
330
- }
331
-
332
- .contextMenuDivider {
333
- height: 1px;
334
- margin: 4px 0;
335
- background: var(--ogrid-border, rgba(0, 0, 0, 0.12));
336
- }
337
-
338
- .loadingOverlay {
339
- position: absolute;
340
- inset: 0;
341
- z-index: 2;
342
- display: flex;
343
- align-items: center;
344
- justify-content: center;
345
- background: var(--ogrid-loading-overlay, rgba(255, 255, 255, 0.7));
346
- backdrop-filter: blur(1px);
347
- pointer-events: all;
348
- }
349
-
350
- .loadingOverlayContent {
351
- display: flex;
352
- flex-direction: column;
353
- align-items: center;
354
- gap: 8px;
355
- padding: 16px 24px;
356
- background: var(--ogrid-bg, #fff);
357
- border: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));
358
- border-radius: 6px;
359
- box-shadow: var(--ogrid-shadow-sm, 0 2px 4px rgba(0, 0, 0, 0.08));
360
- }
361
-
362
- .loadingOverlayText {
363
- font-size: 13px;
364
- font-weight: 500;
365
- color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));
366
- }
367
-
368
- .loadingDimmed {
369
- opacity: 0.6;
370
- pointer-events: none;
371
- }
372
-
373
- .emptyStateInGrid {
374
- display: flex;
375
- flex-direction: column;
376
- align-items: center;
377
- justify-content: center;
378
- text-align: center;
379
- padding: 20px 16px;
380
- min-height: 88px;
381
- width: 100%;
382
- box-sizing: border-box;
383
- border-top: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));
384
- background: var(--ogrid-header-bg, #f5f5f5);
385
- }
386
-
387
- .emptyStateInGridTitle {
388
- font-size: 14px;
389
- font-weight: 600;
390
- color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));
391
- margin-bottom: 4px;
392
- }
393
-
394
- .emptyStateInGridMessage {
395
- font-size: 13px;
396
- color: var(--ogrid-fg-muted, rgba(0, 0, 0, 0.5));
397
- line-height: 1.5;
398
- }
399
-
400
- .emptyStateInGridLink {
401
- background: none;
402
- border: none;
403
- color: var(--ogrid-accent, #0078d4);
404
- text-decoration: underline;
405
- cursor: pointer;
406
- padding: 0;
407
- font-size: inherit;
408
- font-family: inherit;
409
- }
410
- .emptyStateInGridLink:hover {
411
- color: var(--ogrid-accent-dark, #005a9e);
412
- }
413
-
414
- .spinner {
415
- width: 24px;
416
- height: 24px;
417
- border: 2px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));
418
- border-top-color: var(--ogrid-accent, #0078d4);
419
- border-radius: 50%;
420
- animation: ogrid-spin 0.8s linear infinite;
421
- }
422
-
423
- @keyframes ogrid-spin {
424
- to {
425
- transform: rotate(360deg);
426
- }
427
- }
428
- /* ─── OGrid Theme Variables ─── */
429
- /* Bridge Fluent UI tokens -> ogrid CSS variables so headless components (SideBar, etc.)
430
- automatically follow the active FluentProvider theme (light or dark). */
431
- :global(:root) {
432
- --ogrid-bg: #ffffff;
433
- --ogrid-fg: rgba(0, 0, 0, 0.87);
434
- --ogrid-fg-secondary: rgba(0, 0, 0, 0.6);
435
- --ogrid-fg-muted: rgba(0, 0, 0, 0.5);
436
- --ogrid-border: rgba(0, 0, 0, 0.12);
437
- --ogrid-header-bg: #f3f2f1;
438
- --ogrid-hover-bg: rgba(0, 0, 0, 0.04);
439
- --ogrid-selected-row-bg: #e6f0fb;
440
- --ogrid-active-cell-bg: rgba(0, 0, 0, 0.02);
441
- --ogrid-range-bg: rgba(33, 115, 70, 0.12);
442
- --ogrid-accent: #0078d4;
443
- --ogrid-selection-color: #217346;
444
- --ogrid-loading-overlay: rgba(255, 255, 255, 0.7);
445
- }
446
-
447
- /* Page-level dark mode (for body background, non-FluentProvider elements) */
448
- :global([data-theme="dark"]) {
449
- --ogrid-bg: #1b1b1f;
450
- --ogrid-fg: rgba(255, 255, 255, 0.87);
451
- --ogrid-fg-secondary: rgba(255, 255, 255, 0.6);
452
- --ogrid-fg-muted: rgba(255, 255, 255, 0.5);
453
- --ogrid-border: rgba(255, 255, 255, 0.12);
454
- --ogrid-header-bg: #2c2c2c;
455
- --ogrid-hover-bg: rgba(255, 255, 255, 0.06);
456
- --ogrid-selected-row-bg: #1a3a5c;
457
- --ogrid-active-cell-bg: rgba(255, 255, 255, 0.04);
458
- --ogrid-range-bg: rgba(33, 115, 70, 0.2);
459
- --ogrid-accent: #4da6ff;
460
- --ogrid-selection-color: #217346;
461
- --ogrid-loading-overlay: rgba(0, 0, 0, 0.5);
462
- }
463
-
464
- /* Inside FluentProvider: derive --ogrid-* from Fluent tokens so light/dark follows automatically */
465
- :global(.fui-FluentProvider) {
466
- --ogrid-bg: var(--colorNeutralBackground1, #ffffff);
467
- --ogrid-fg: var(--colorNeutralForeground1, rgba(0, 0, 0, 0.87));
468
- --ogrid-fg-secondary: var(--colorNeutralForeground2, rgba(0, 0, 0, 0.6));
469
- --ogrid-fg-muted: var(--colorNeutralForeground3, rgba(0, 0, 0, 0.5));
470
- --ogrid-border: var(--colorNeutralStroke2, rgba(0, 0, 0, 0.12));
471
- --ogrid-header-bg: var(--colorSubtleBackgroundSelected, #f3f2f1);
472
- --ogrid-hover-bg: var(--colorSubtleBackgroundHover, rgba(0, 0, 0, 0.04));
473
- --ogrid-selected-row-bg: var(--colorNeutralBackground1Selected, #e6f0fb);
474
- --ogrid-active-cell-bg: rgba(0, 0, 0, 0.02);
475
- --ogrid-range-bg: rgba(33, 115, 70, 0.12);
476
- --ogrid-accent: var(--colorBrandForeground1, #0078d4);
477
- --ogrid-selection-color: #217346;
478
- --ogrid-loading-overlay: rgba(255, 255, 255, 0.7);
479
- }
480
-
481
- .tableScrollContent {
482
- min-height: 100%;
483
- background-color: var(--colorNeutralBackground1, var(--ogrid-bg, #ffffff));
484
- }
485
-
486
- .tableWidthAnchor {
487
- background-color: var(--colorNeutralBackground1, var(--ogrid-bg, #ffffff));
488
- }
489
-
490
- .tableWrapper {
491
- border: none;
492
- background-color: var(--colorNeutralBackground1, var(--ogrid-bg, #ffffff));
493
- -webkit-overflow-scrolling: touch;
494
- outline: none;
495
- }
496
-
497
- .dataTable {
498
- table-layout: auto !important;
499
- background-color: var(--colorNeutralBackground1, var(--ogrid-bg, #ffffff));
500
- }
501
-
502
- .dataTable :global(.fui-TableHeaderCell),
503
- .dataTable :global(.fui-TableCell) {
504
- min-width: 80px;
505
- box-sizing: border-box;
506
- border-right: 1px solid var(--colorNeutralStroke1, #c4c4c4);
507
- font-size: 13px;
508
- vertical-align: middle;
509
- }
510
-
511
- .dataTable :global(.fui-TableHeaderCell) {
512
- padding: 6px 10px;
513
- font-weight: 600;
514
- font-size: 14px;
515
- color: var(--ogrid-fg, rgba(0, 0, 0, 0.87));
516
- white-space: nowrap;
517
- background-color: var(--colorSubtleBackgroundSelected, var(--ogrid-header-bg, #f3f2f1));
518
- z-index: 8;
519
- border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));
520
- }
521
- .dataTable :global(.fui-TableHeaderCell) > :global(.fui-TableHeaderCell__button) {
522
- position: static !important;
523
- }
524
- .dataTable :global(.fui-TableHeaderCell):focus-visible {
525
- outline: 2px solid var(--colorBrandStroke1, var(--ogrid-accent, #0078d4));
526
- outline-offset: -2px;
527
- z-index: 11;
528
- }
529
-
530
- .dataTable :global(.fui-TableCell) {
531
- padding: 0;
532
- overflow: hidden;
533
- text-overflow: ellipsis;
534
- white-space: nowrap;
535
- font-size: 12px;
536
- height: 1px;
537
- border-right: 1px solid var(--colorNeutralStroke1, #c4c4c4);
538
- position: relative;
539
- border-bottom: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));
540
- /* Prevent long unbroken content from forcing intrinsic widths / overlap */
541
- }
542
- .dataTable :global(.fui-TableCell) > * {
543
- min-width: 0;
544
- }
545
- .dataTable :global(.fui-TableCell):focus-visible {
546
- outline: none;
547
- }
548
-
549
- /* No extra right border on last column */
550
- .dataTable :global(.fui-TableHeaderCell:last-of-type),
551
- .dataTable :global(.fui-TableCell:last-of-type) {
552
- border-right: none;
553
- }
554
-
555
- /* No extra bottom border on last row */
556
- .dataTable :global(.fui-TableBody .fui-TableRow:last-child .fui-TableCell) {
557
- border-bottom: none;
558
- }
559
-
560
- /* Row hover */
561
- .dataTable :global(.fui-TableBody .fui-TableRow:hover .fui-TableCell) {
562
- background-color: var(--colorSubtleBackgroundHover, var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)));
563
- }
564
-
565
- .leafHeaderCellSpan {
566
- font-weight: 600;
567
- padding: 6px 10px;
568
- background: var(--ogrid-header-bg, #f3f2f1);
569
- }
570
-
571
- .selectionHeaderCellWrapper {
572
- width: 48px;
573
- min-width: 48px;
574
- max-width: 48px;
575
- padding: 4px !important;
576
- text-align: center;
577
- }
578
-
579
- .selectionCellWrapper {
580
- width: 48px;
581
- min-width: 48px;
582
- max-width: 48px;
583
- padding: 4px !important;
584
- text-align: center;
585
- }
586
-
587
- .rowNumberHeaderCellWrapper {
588
- width: 50px;
589
- min-width: 50px;
590
- max-width: 50px;
591
- padding: 4px 8px !important;
592
- text-align: center;
593
- background: var(--ogrid-header-bg, #f5f5f5);
594
- font-weight: 600;
595
- color: var(--colorNeutralForeground3, #666);
596
- border-right: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));
597
- }
598
-
599
- .rowNumberCellWrapper {
600
- width: 50px;
601
- min-width: 50px;
602
- max-width: 50px;
603
- padding: 4px 8px !important;
604
- text-align: center;
605
- background: var(--colorNeutralBackground3, #f5f5f5);
606
- font-weight: 600;
607
- color: var(--colorNeutralForeground3, #666);
608
- border-right: 1px solid var(--ogrid-border, rgba(0, 0, 0, 0.12));
609
- }
610
-
611
- .dataTable :global(.fui-TableBody) .selectedRow :global(.fui-TableCell) {
612
- background-color: var(--colorNeutralBackground1Selected, var(--ogrid-selected-row-bg, #e6f0fb));
613
- }
614
-
615
- .selectableGrid .dataTable :global(.fui-TableBody .fui-TableRow:hover .fui-TableCell) {
616
- background-color: var(--colorSubtleBackgroundHover, #f5f5f5);
617
- cursor: pointer;
618
- }
619
-
620
- .selectableGrid .dataTable :global(.fui-TableBody) .selectedRow:hover :global(.fui-TableCell) {
621
- background-color: var(--colorNeutralBackground1Hover, #dae8f8);
622
- }
623
-
624
- .selectableGrid .dataTable :global(.fui-TableBody .fui-TableRow) {
625
- cursor: pointer;
626
- }
627
-
628
- .cellContent {
629
- padding: 4px 8px;
630
- }
631
-
632
- .activeCellContent {
633
- outline: 2px solid var(--ogrid-selection-color, #217346) !important;
634
- background-color: var(--ogrid-active-cell-bg, rgba(0, 0, 0, 0.02)) !important;
635
- }
636
-
637
- .cellInRange {
638
- background-color: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)) !important;
639
- }
640
-
641
- :global([data-drag-range]) {
642
- background-color: var(--ogrid-range-bg, rgba(33, 115, 70, 0.12)) !important;
643
- }
644
-
645
- :global([data-drag-anchor]) {
646
- background-color: var(--ogrid-bg, #ffffff) !important;
647
- }
648
-
649
- .cellCut {
650
- background-color: var(--ogrid-hover-bg, rgba(0, 0, 0, 0.04)) !important;
651
- }
652
-
653
- .stickyHeader {
654
- z-index: 8;
655
- background-color: var(--colorSubtleBackgroundSelected, var(--ogrid-header-bg, #f3f2f1));
656
- }
657
-
658
- .stickyHeader :global(.fui-TableHeaderCell) {
659
- position: sticky;
660
- top: 0;
661
- }
662
-
663
- .stickyHeader .pinnedColLeft,
664
- .stickyHeader .pinnedColRight {
665
- top: 0;
666
- z-index: 10;
667
- }
668
-
669
- .dataTable .pinnedColLeft {
670
- background-color: var(--colorNeutralBackground1, var(--ogrid-bg, #ffffff));
671
- border-right: 1px solid var(--colorNeutralStroke1, var(--ogrid-border, rgba(0, 0, 0, 0.12)));
672
- box-shadow: 2px 0 4px -1px rgba(0, 0, 0, 0.1);
673
- }
674
-
675
- .dataTable :global(.fui-TableHeader) .pinnedColLeft {
676
- background-color: var(--colorSubtleBackgroundSelected, var(--ogrid-header-bg, #f3f2f1));
677
- }
678
-
679
- .dataTable .pinnedColRight {
680
- background-color: var(--colorNeutralBackground1, var(--ogrid-bg, #ffffff));
681
- border-left: 1px solid var(--colorNeutralStroke1, var(--ogrid-border, rgba(0, 0, 0, 0.12)));
682
- box-shadow: -2px 0 4px -1px rgba(0, 0, 0, 0.1);
683
- }
684
-
685
- .dataTable :global(.fui-TableHeader) .pinnedColRight {
686
- background-color: var(--colorSubtleBackgroundSelected, var(--ogrid-header-bg, #f3f2f1));
687
- }
688
-
689
- .headerMenuTrigger {
690
- color: var(--colorNeutralForeground3, #666);
691
- }
692
- .headerMenuTrigger:hover {
693
- background: var(--colorNeutralBackground1Hover, #f3f2f1);
694
- }
695
- .headerMenuTrigger:active {
696
- background: var(--colorNeutralBackground1Pressed, #e1dfdd);
697
- }
698
- .headerMenuTrigger:focus-visible {
699
- outline: 2px solid var(--colorBrandStroke1, var(--ogrid-accent, #0078d4));
700
- }
701
-
702
- /* Column resize handle -- Fluent token override */
703
- .resizeHandle:hover::after {
704
- background-color: var(--colorBrandForeground1, var(--ogrid-accent, #0078d4));
705
- }
706
- .resizeHandle:active::after {
707
- background-color: var(--colorBrandForeground1Pressed, #005a9e);
708
- }
709
-
710
- .statusBar {
711
- min-width: 0;
712
- color: var(--colorNeutralForeground2, #616161);
713
- background-color: var(--colorSubtleBackgroundSelected, #f3f2f1);
714
- border-top: 1px solid var(--colorNeutralStroke2, #e0e0e0);
715
- user-select: none;
716
- }
717
-
718
- .statusBarItem:not(:last-child)::after {
719
- display: inline-block;
720
- background-color: var(--colorNeutralStroke1, #c4c4c4);
721
- }
722
-
723
- .statusBarLabel {
724
- color: var(--colorNeutralForeground3, #707070);
725
- font-weight: 400;
726
- }
727
-
728
- .statusBarValue {
729
- color: var(--colorNeutralForeground1, #242424);
730
- }
731
-
732
- .contextMenu {
733
- background: var(--colorNeutralBackground1, #fff);
734
- border: 1px solid var(--colorNeutralStroke1, #e0e0e0);
735
- border-radius: var(--borderRadiusMedium, 4px);
736
- box-shadow: var(--shadow16, 0 4px 16px rgba(0, 0, 0, 0.12));
737
- outline: none;
738
- }
739
-
740
- .contextMenuItem {
741
- color: var(--colorNeutralForeground1, #242424);
742
- }
743
- .contextMenuItem:hover:not(:disabled) {
744
- background-color: var(--colorSubtleBackgroundHover, #f5f5f5);
745
- }
746
-
747
- .contextMenuItemShortcut {
748
- color: var(--colorNeutralForeground3, rgba(0, 0, 0, 0.4));
749
- }
750
-
751
- .contextMenuDivider {
752
- background-color: var(--colorNeutralStroke2, #e0e0e0);
753
- }
754
-
755
- .loadingOverlayContent {
756
- background: var(--colorNeutralBackground1, #ffffff);
757
- border: 1px solid var(--colorNeutralStroke1, #c4c4c4);
758
- border-radius: var(--borderRadiusMedium, 4px);
759
- box-shadow: var(--shadow4, 0 2px 4px rgba(0, 0, 0, 0.14));
760
- }
761
-
762
- .loadingOverlayText {
763
- color: var(--colorNeutralForeground2, #616161);
764
- }
765
-
766
- .loadingDimmed {
767
- transition: opacity 0.15s ease;
768
- }
769
-
770
- .emptyStateInGrid {
771
- min-width: 0;
772
- border-top: 1px solid var(--colorNeutralStroke2, #e0e0e0);
773
- background-color: var(--colorNeutralBackground2, #fafafa);
774
- }
775
-
776
- .emptyStateInGridMessageSticky {
777
- position: sticky;
778
- left: 50%;
779
- transform: translateX(-50%);
780
- display: inline-flex;
781
- flex-direction: column;
782
- align-items: center;
783
- text-align: center;
784
- }
785
-
786
- .emptyStateInGridIcon {
787
- font-size: 24px;
788
- margin-bottom: 8px;
789
- opacity: 0.6;
790
- }
791
-
792
- .emptyStateInGridTitle {
793
- color: var(--colorNeutralForeground1, #242424);
794
- }
795
-
796
- .emptyStateInGridMessage {
797
- color: var(--colorNeutralForeground2, #616161);
798
- max-width: 100%;
799
- }
800
-
801
- .emptyStateInGridLink {
802
- color: var(--colorBrandForeground1, #0f6cbd);
803
- }
804
- .emptyStateInGridLink:hover {
805
- color: var(--colorBrandForeground1Hover, #115ea3);
806
- }
807
-
808
- /* Fluent Link styling within grid */
809
- .dataTable :global(.fui-Link) {
810
- color: var(--colorBrandForeground1, #0f6cbd);
811
- font-weight: 600;
812
- text-decoration: none;
813
- }
814
- .dataTable :global(.fui-Link):hover {
815
- text-decoration: underline;
816
- color: var(--colorBrandForeground1Hover, #115ea3);
817
- }
818
- .dataTable :global(.fui-Link):active {
819
- color: var(--colorBrandForeground1Pressed, #0c3b5e);
820
- }
821
-
822
- .density-compact .dataTable :global(.fui-TableHeaderCell) {
823
- padding: 4px 8px;
824
- }
825
- .density-compact .cellContent {
826
- padding: 4px 8px;
827
- }
828
-
829
- .density-comfortable .dataTable :global(.fui-TableHeaderCell) {
830
- padding: 12px 16px;
831
- }
832
- .density-comfortable .cellContent {
833
- padding: 12px 16px;
834
- }
835
-
836
- /* ─── Accessibility: Focus Visible Styles ─────────────────────── */
837
- .tableWrapper :global .fui-Button:focus-visible,
838
- .tableWrapper :global .fui-MenuButton:focus-visible {
839
- outline: 2px solid var(--colorBrandStroke1, #0078d4);
840
- outline-offset: 2px;
841
- }
842
- .tableWrapper :global .fui-Checkbox:focus-visible {
843
- outline: 2px solid var(--colorBrandStroke1, #0078d4);
844
- outline-offset: 2px;
845
- }