@pythia-software/query-table-ui 0.1.0 → 0.2.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/theme.css CHANGED
@@ -109,15 +109,26 @@
109
109
  .qt-link-btn:hover:not(:disabled) {
110
110
  color: var(--qt-text);
111
111
  }
112
+ .qt-btn:focus-visible,
113
+ .qt-add:focus-visible,
114
+ .qt-link-btn:focus-visible,
115
+ .qt-chip-x:focus-visible,
116
+ .qt-chip-op-btn:focus-visible,
117
+ .qt-table-wrap:focus-visible {
118
+ outline: 2px solid var(--qt-accent);
119
+ outline-offset: 2px;
120
+ }
112
121
  .qt-table-wrap {
113
122
  position: relative;
114
123
  display: block;
115
- overflow-x: auto;
116
- overflow-y: hidden;
124
+ overflow: auto;
117
125
  overscroll-behavior-x: contain;
118
126
  -webkit-overflow-scrolling: touch;
119
127
  touch-action: pan-x pan-y;
120
128
  }
129
+ .qt-table-scroll-cue {
130
+ display: none;
131
+ }
121
132
  .qt-table-wrap--loading .qt-row {
122
133
  opacity: 0.55;
123
134
  transition: opacity 120ms ease-in;
@@ -130,6 +141,16 @@
130
141
  font-size: var(--qt-font-size);
131
142
  table-layout: fixed;
132
143
  }
144
+ .qt-table thead {
145
+ position: sticky;
146
+ top: 0;
147
+ z-index: 3;
148
+ }
149
+ .qt-table tfoot {
150
+ position: sticky;
151
+ bottom: 0;
152
+ z-index: 3;
153
+ }
133
154
  .qt-th {
134
155
  background: var(--qt-header-bg);
135
156
  font-weight: 600;
@@ -172,6 +193,19 @@
172
193
  .qt-table-wrap--resizing {
173
194
  cursor: col-resize;
174
195
  }
196
+ .qt-resize-guide {
197
+ position: absolute;
198
+ top: 0;
199
+ bottom: 0;
200
+ left: 0;
201
+ z-index: 3;
202
+ display: none;
203
+ width: 1px;
204
+ pointer-events: none;
205
+ background: var(--qt-accent);
206
+ opacity: 0.8;
207
+ will-change: transform;
208
+ }
175
209
  .qt-cell {
176
210
  padding: 8px 12px;
177
211
  border-bottom: 1px solid var(--qt-border-subtle);
@@ -221,6 +255,9 @@
221
255
  .qt-row--selected .qt-cell:hover {
222
256
  background: var(--qt-row-selected-bg);
223
257
  }
258
+ .qt-virtual-spacer {
259
+ pointer-events: none;
260
+ }
224
261
  .qt-empty {
225
262
  text-align: center;
226
263
  color: var(--qt-muted);
@@ -276,14 +313,15 @@
276
313
  box-shadow: inset 0 0 0 2px var(--qt-accent);
277
314
  }
278
315
  .qt-loading-bar {
279
- position: absolute;
316
+ position: sticky;
280
317
  top: 0;
281
318
  left: 0;
282
319
  right: 0;
283
320
  height: 2px;
321
+ margin-bottom: -2px;
284
322
  overflow: hidden;
285
323
  background: var(--qt-border-subtle);
286
- z-index: 1;
324
+ z-index: 4;
287
325
  pointer-events: none;
288
326
  }
289
327
  .qt-loading-bar::before {
@@ -462,6 +500,9 @@
462
500
  border-radius: var(--qt-radius);
463
501
  padding: 2px 6px;
464
502
  }
503
+ .qt-qb-window-field {
504
+ display: contents;
505
+ }
465
506
  .qt-qb-saved {
466
507
  display: inline-flex;
467
508
  align-items: center;
@@ -687,6 +728,9 @@
687
728
  .qt-chip-x:hover {
688
729
  color: var(--qt-fail-fg);
689
730
  }
731
+ .qt-chip-move-buttons {
732
+ display: none;
733
+ }
690
734
  .qt-autocomplete-hint {
691
735
  color: var(--qt-muted);
692
736
  font-size: 10px;
@@ -1126,6 +1170,9 @@
1126
1170
  border-radius: 0;
1127
1171
  box-sizing: border-box;
1128
1172
  }
1173
+ .qt-qt-section--expanded > .qt-qt-section-head {
1174
+ display: none;
1175
+ }
1129
1176
  .qt-qt-section-title {
1130
1177
  font-size: 12px;
1131
1178
  color: var(--qt-muted);
@@ -1169,4 +1216,475 @@
1169
1216
  border: 1px solid var(--qt-border);
1170
1217
  border-radius: 0 0 var(--qt-radius) 0;
1171
1218
  }
1219
+ @media (pointer: coarse) {
1220
+ .qt-btn,
1221
+ .qt-add,
1222
+ .qt-link-btn {
1223
+ min-height: 40px;
1224
+ height: auto;
1225
+ padding: 8px 10px;
1226
+ touch-action: manipulation;
1227
+ }
1228
+ .qt-chip-x,
1229
+ .qt-chip-op-btn,
1230
+ .qt-qb-saved-star,
1231
+ .qt-qb-saved-cancel,
1232
+ .qt-saved-pick,
1233
+ .qt-picker-item,
1234
+ .qt-cm-item {
1235
+ touch-action: manipulation;
1236
+ }
1237
+ .qt-resize-handle {
1238
+ display: none;
1239
+ }
1240
+ }
1241
+ @media (max-width: 640px) {
1242
+ .qt-qb {
1243
+ font-size: 14px;
1244
+ }
1245
+ .qt-qb-bar {
1246
+ padding: 10px;
1247
+ }
1248
+ .qt-qb-state-bar {
1249
+ min-height: 48px;
1250
+ padding-left: 50px;
1251
+ gap: 8px;
1252
+ }
1253
+ .qt-qb-state-main {
1254
+ flex: 1 1 auto;
1255
+ overflow: hidden;
1256
+ }
1257
+ .qt-qb-saved {
1258
+ min-width: 0;
1259
+ }
1260
+ .qt-qb-saved-star {
1261
+ width: 32px;
1262
+ min-width: 32px;
1263
+ min-height: 32px;
1264
+ font-size: 18px;
1265
+ }
1266
+ .qt-qb-saved-name {
1267
+ max-width: 45vw;
1268
+ overflow: hidden;
1269
+ text-overflow: ellipsis;
1270
+ white-space: nowrap;
1271
+ font-size: 14px;
1272
+ }
1273
+ .qt-qb-saved-input-wrap {
1274
+ max-width: 100%;
1275
+ }
1276
+ .qt-qb-saved-input {
1277
+ width: 100%;
1278
+ min-width: 0;
1279
+ }
1280
+ .qt-qb-collapse-btn {
1281
+ left: 6px;
1282
+ top: 50%;
1283
+ width: 36px;
1284
+ min-width: 36px;
1285
+ height: 36px;
1286
+ min-height: 36px;
1287
+ padding: 0;
1288
+ border-right: 1px solid var(--qt-border);
1289
+ border-radius: var(--qt-radius);
1290
+ }
1291
+ .qt-qb-editor-bar {
1292
+ flex-direction: column;
1293
+ gap: 14px;
1294
+ padding: 12px 10px;
1295
+ }
1296
+ .qt-qb-editor-bar .qt-qb-body {
1297
+ width: 100%;
1298
+ gap: 14px;
1299
+ }
1300
+ .qt-qb-editor-bar .qt-qb-row {
1301
+ align-items: flex-start;
1302
+ gap: 8px;
1303
+ }
1304
+ .qt-qb-editor-bar .qt-qb-row:not(.qt-qb-pagination) > .qt-qb-kw {
1305
+ flex: 1 0 100%;
1306
+ width: auto;
1307
+ min-width: 0;
1308
+ font-size: 11px;
1309
+ font-weight: 700;
1310
+ }
1311
+ .qt-qb-editor-stack {
1312
+ width: 100%;
1313
+ min-width: 0;
1314
+ flex-direction: row;
1315
+ gap: 8px;
1316
+ }
1317
+ .qt-qb-editor-stack .qt-btn {
1318
+ flex: 1;
1319
+ min-width: 0;
1320
+ }
1321
+ .qt-chip {
1322
+ height: auto;
1323
+ min-height: 40px;
1324
+ padding: 4px 8px;
1325
+ gap: 5px;
1326
+ flex-wrap: wrap;
1327
+ font-size: 13px;
1328
+ }
1329
+ .qt-chip-grip {
1330
+ display: none;
1331
+ }
1332
+ .qt-chip-x {
1333
+ min-width: 30px;
1334
+ min-height: 30px;
1335
+ padding: 4px 7px;
1336
+ justify-content: center;
1337
+ font-size: 13px;
1338
+ }
1339
+ .qt-chip-move-buttons {
1340
+ display: inline-flex;
1341
+ align-items: center;
1342
+ overflow: hidden;
1343
+ border: 1px solid var(--qt-border-subtle);
1344
+ border-radius: 5px;
1345
+ }
1346
+ .qt-chip-move {
1347
+ display: inline-flex;
1348
+ align-items: center;
1349
+ justify-content: center;
1350
+ width: 30px;
1351
+ min-width: 30px;
1352
+ height: 30px;
1353
+ padding: 0;
1354
+ color: var(--qt-text);
1355
+ background: #fff;
1356
+ border: 0;
1357
+ border-right: 1px solid var(--qt-border-subtle);
1358
+ font: inherit;
1359
+ font-size: 14px;
1360
+ cursor: pointer;
1361
+ touch-action: manipulation;
1362
+ }
1363
+ .qt-chip-move:last-child {
1364
+ border-right: 0;
1365
+ }
1366
+ .qt-chip-move:disabled {
1367
+ opacity: 0.35;
1368
+ }
1369
+ .qt-chip-move:focus-visible {
1370
+ z-index: 1;
1371
+ outline: 2px solid var(--qt-accent);
1372
+ outline-offset: -2px;
1373
+ }
1374
+ .qt-chip-op,
1375
+ .qt-chip-val {
1376
+ height: 32px;
1377
+ min-height: 32px;
1378
+ padding: 4px 6px;
1379
+ font-size: 16px;
1380
+ }
1381
+ .qt-chip-op-btn {
1382
+ height: 32px;
1383
+ padding: 4px 8px;
1384
+ font-size: 13px;
1385
+ }
1386
+ .qt-chip-where-list,
1387
+ .qt-chip-where-clause {
1388
+ max-width: 100%;
1389
+ }
1390
+ .qt-chip--where {
1391
+ flex: 1 0 100%;
1392
+ max-width: 100%;
1393
+ }
1394
+ .qt-chip--agg {
1395
+ flex: 1 0 100%;
1396
+ }
1397
+ .qt-chip-agg-group {
1398
+ height: 32px;
1399
+ font-size: 13px;
1400
+ }
1401
+ .qt-chip-agg-group .qt-chip-x {
1402
+ min-width: 28px;
1403
+ min-height: 28px;
1404
+ font-size: 12px;
1405
+ }
1406
+ .qt-qb-pagination {
1407
+ display: flex;
1408
+ gap: 10px;
1409
+ }
1410
+ .qt-qb-window-field {
1411
+ display: flex;
1412
+ flex: 1 1 0;
1413
+ flex-direction: column;
1414
+ gap: 5px;
1415
+ min-width: 0;
1416
+ }
1417
+ .qt-qb-window-field .qt-qb-kw {
1418
+ width: auto;
1419
+ min-width: 0;
1420
+ flex: none;
1421
+ font-size: 11px;
1422
+ font-weight: 700;
1423
+ }
1424
+ .qt-qb-num {
1425
+ width: 100%;
1426
+ min-height: 40px;
1427
+ box-sizing: border-box;
1428
+ padding: 6px 8px;
1429
+ font-size: 16px;
1430
+ }
1431
+ .qt-qb-row--metrics {
1432
+ padding-top: 14px;
1433
+ margin-top: 0;
1434
+ }
1435
+ .qt-qb-run-bar {
1436
+ align-items: center;
1437
+ row-gap: 6px;
1438
+ }
1439
+ .qt-qb-run-metric {
1440
+ font-size: 12px;
1441
+ }
1442
+ .qt-qb-run-actions {
1443
+ display: flex;
1444
+ flex: 1 0 100%;
1445
+ flex-wrap: wrap;
1446
+ gap: 8px;
1447
+ margin-left: 0;
1448
+ }
1449
+ .qt-qb-auto-status {
1450
+ flex: 1 0 100%;
1451
+ line-height: 1.4;
1452
+ }
1453
+ .qt-auto-refresh,
1454
+ .qt-qb-run-actions > .qt-btn {
1455
+ flex: 1 1 0;
1456
+ }
1457
+ .qt-auto-refresh > .qt-btn {
1458
+ width: 100%;
1459
+ justify-content: center;
1460
+ }
1461
+ .qt-auto-refresh-popover {
1462
+ position: fixed;
1463
+ inset: auto max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
1464
+ width: auto;
1465
+ max-height: calc(100dvh - 24px);
1466
+ overflow-y: auto;
1467
+ gap: 12px;
1468
+ padding: 16px;
1469
+ border-radius: 12px;
1470
+ box-shadow: 0 12px 36px rgba(0, 0, 0, 0.22);
1471
+ }
1472
+ .qt-auto-refresh-field {
1473
+ font-size: 14px;
1474
+ }
1475
+ .qt-auto-refresh-select {
1476
+ width: 150px;
1477
+ height: 40px;
1478
+ padding: 6px 8px;
1479
+ font-size: 16px;
1480
+ }
1481
+ .qt-picker {
1482
+ flex: 1 0 100%;
1483
+ width: 100%;
1484
+ }
1485
+ .qt-picker-input {
1486
+ width: 100%;
1487
+ min-height: 42px;
1488
+ box-sizing: border-box;
1489
+ padding: 7px 9px;
1490
+ font-size: 16px;
1491
+ }
1492
+ .qt-picker-list {
1493
+ width: 100%;
1494
+ max-width: calc(100vw - 44px);
1495
+ max-height: min(320px, 50dvh);
1496
+ }
1497
+ .qt-picker-group-label {
1498
+ padding: 7px 10px;
1499
+ }
1500
+ .qt-picker-item {
1501
+ min-height: 48px;
1502
+ padding: 8px 10px;
1503
+ font-size: 14px;
1504
+ }
1505
+ .qt-selection-toolbar {
1506
+ flex-wrap: wrap;
1507
+ gap: 8px;
1508
+ padding: 8px 10px;
1509
+ border-radius: 0;
1510
+ }
1511
+ .qt-selection-actions {
1512
+ flex: 1 0 100%;
1513
+ margin-left: 0;
1514
+ }
1515
+ .qt-selection-actions > * {
1516
+ min-height: 40px;
1517
+ }
1518
+ .qt-qt-section--expanded > .qt-qt-section-head {
1519
+ display: flex;
1520
+ }
1521
+ .qt-qt-section-head {
1522
+ min-height: 48px;
1523
+ padding: 8px 10px 8px 50px;
1524
+ background: var(--qt-header-bg);
1525
+ }
1526
+ .qt-qt-section-title {
1527
+ font-size: 11px;
1528
+ }
1529
+ .qt-qt-section-summary {
1530
+ overflow: hidden;
1531
+ text-overflow: ellipsis;
1532
+ white-space: nowrap;
1533
+ }
1534
+ .qt-qt-section-toggle {
1535
+ z-index: 2;
1536
+ left: 6px;
1537
+ top: 6px;
1538
+ width: 36px;
1539
+ min-width: 36px;
1540
+ height: 36px;
1541
+ min-height: 36px;
1542
+ padding: 0;
1543
+ border-right: 1px solid var(--qt-border);
1544
+ border-radius: var(--qt-radius);
1545
+ }
1546
+ .qt-metrics {
1547
+ gap: 10px;
1548
+ padding: 10px;
1549
+ border-top: 0;
1550
+ }
1551
+ .qt-metric,
1552
+ .qt-metric--gb2,
1553
+ .qt-metric--gb3 {
1554
+ flex: 1 0 100%;
1555
+ min-width: 0;
1556
+ }
1557
+ .qt-metric-big-value {
1558
+ font-size: 28px;
1559
+ }
1560
+ .qt-table-scroll-cue {
1561
+ display: flex;
1562
+ align-items: center;
1563
+ justify-content: flex-end;
1564
+ gap: 5px;
1565
+ min-height: 30px;
1566
+ padding: 5px 10px;
1567
+ box-sizing: border-box;
1568
+ color: var(--qt-accent);
1569
+ background: var(--qt-accent-bg);
1570
+ border-right: 1px solid var(--qt-border);
1571
+ border-left: 1px solid var(--qt-border);
1572
+ font-size: 11px;
1573
+ font-weight: 700;
1574
+ letter-spacing: 0.02em;
1575
+ }
1576
+ .qt-table-scroll-cue span {
1577
+ font-size: 15px;
1578
+ }
1579
+ .qt-table-wrap {
1580
+ container-type: inline-size;
1581
+ border-radius: 0 0 var(--qt-radius) var(--qt-radius);
1582
+ scrollbar-color: var(--qt-border) transparent;
1583
+ scrollbar-width: thin;
1584
+ }
1585
+ .qt-th,
1586
+ .qt-cell {
1587
+ padding-top: 11px;
1588
+ padding-bottom: 11px;
1589
+ }
1590
+ .qt-th.qt-checkbox-cell:first-child {
1591
+ position: sticky;
1592
+ left: 0;
1593
+ z-index: 3;
1594
+ background: var(--qt-header-bg);
1595
+ box-shadow: 1px 0 0 var(--qt-border-subtle);
1596
+ }
1597
+ .qt-row > .qt-checkbox-cell:first-child {
1598
+ position: sticky;
1599
+ left: 0;
1600
+ z-index: 1;
1601
+ background: #fff;
1602
+ box-shadow: 1px 0 0 var(--qt-border-subtle);
1603
+ }
1604
+ .qt-row--selected > .qt-checkbox-cell:first-child {
1605
+ background: var(--qt-row-selected-bg);
1606
+ }
1607
+ .qt-checkbox-cell input {
1608
+ width: 20px;
1609
+ height: 20px;
1610
+ margin: 0;
1611
+ }
1612
+ .qt-empty {
1613
+ position: sticky;
1614
+ left: 0;
1615
+ height: 88px;
1616
+ padding-left: 18px;
1617
+ text-align: left;
1618
+ }
1619
+ .qt-table-summary {
1620
+ position: sticky;
1621
+ left: 12px;
1622
+ width: calc(100vw - 48px);
1623
+ width: calc(100cqw - 24px);
1624
+ min-height: 40px;
1625
+ }
1626
+ .qt-table-summary .qt-btn {
1627
+ min-width: 76px;
1628
+ }
1629
+ .qt-cell-menu {
1630
+ inset: auto max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left)) !important;
1631
+ width: auto !important;
1632
+ max-height: calc(100dvh - 24px);
1633
+ overflow-y: auto;
1634
+ padding: 8px;
1635
+ border-radius: 12px;
1636
+ box-shadow: 0 12px 36px rgba(0, 0, 0, 0.22);
1637
+ }
1638
+ .qt-cm-header {
1639
+ padding: 8px 10px 10px;
1640
+ }
1641
+ .qt-cm-item {
1642
+ min-height: 44px;
1643
+ padding: 10px 12px;
1644
+ font-size: 15px;
1645
+ }
1646
+ .qt-modal-backdrop {
1647
+ align-items: flex-end;
1648
+ box-sizing: border-box;
1649
+ padding: 12px max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
1650
+ }
1651
+ .qt-modal {
1652
+ width: 100%;
1653
+ max-height: calc(100dvh - 24px);
1654
+ box-sizing: border-box;
1655
+ padding: 18px;
1656
+ border-radius: 14px;
1657
+ }
1658
+ .qt-modal-title {
1659
+ margin-bottom: 14px;
1660
+ }
1661
+ .qt-saved-item {
1662
+ flex-wrap: wrap;
1663
+ gap: 8px;
1664
+ padding: 10px 0;
1665
+ }
1666
+ .qt-saved-pick {
1667
+ flex: 1 0 100%;
1668
+ min-width: 0;
1669
+ padding: 6px 2px;
1670
+ }
1671
+ .qt-saved-default,
1672
+ .qt-saved-delete {
1673
+ flex: 1;
1674
+ justify-content: center;
1675
+ }
1676
+ .qt-modal-footer .qt-btn {
1677
+ min-width: 96px;
1678
+ justify-content: center;
1679
+ }
1680
+ }
1681
+ @media (prefers-reduced-motion: reduce) {
1682
+ .qt-loading-bar::before {
1683
+ animation: none;
1684
+ }
1685
+ .qt-qb-collapse-caret,
1686
+ .qt-qt-section-toggle-caret {
1687
+ transition: none;
1688
+ }
1689
+ }
1172
1690
  /*# sourceMappingURL=theme.css.map */