@svgrid/grid 3.0.3 → 4.0.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/README.md +5 -4
- package/dist/GridMenus.svelte +44 -2
- package/dist/SvChartMenu.svelte +69 -0
- package/dist/SvChartMenu.svelte.d.ts +11 -0
- package/dist/SvChartPanes.svelte +113 -0
- package/dist/SvChartPanes.svelte.d.ts +20 -0
- package/dist/SvGrid.controller.svelte.d.ts +122 -41
- package/dist/SvGrid.controller.svelte.js +845 -207
- package/dist/SvGrid.css +178 -2
- package/dist/SvGrid.svelte +467 -516
- package/dist/SvGrid.types.d.ts +315 -12
- package/dist/SvGridCellEditor.svelte +17 -0
- package/dist/SvGridChart.svelte +2257 -329
- package/dist/SvGridChart.svelte.d.ts +6 -106
- package/dist/SvGridChart.types.d.ts +338 -0
- package/dist/SvGridChart.types.js +1 -0
- package/dist/SvGridChartBuilder.svelte +323 -0
- package/dist/SvGridChartBuilder.svelte.d.ts +34 -0
- package/dist/SvGridChartPanel.svelte +221 -275
- package/dist/SvGridChartPickers.svelte +417 -0
- package/dist/SvGridChartPickers.svelte.d.ts +70 -0
- package/dist/SvGridChartView.svelte +13 -14
- package/dist/SvModal.svelte +7 -1
- package/dist/SvModal.svelte.d.ts +5 -0
- package/dist/ai.d.ts +40 -8
- package/dist/ai.js +135 -24
- package/dist/aria.d.ts +11 -0
- package/dist/build-api.js +119 -28
- package/dist/cdn/GridMenus-CLI93jke.js +635 -0
- package/dist/cdn/{GridMenus-DhdPF700.js → GridMenus-CwooL3QA.js} +240 -207
- package/dist/cdn/SvChartMenu-Bl6PBbkT.js +58 -0
- package/dist/cdn/SvChartMenu-FBSMINA6.js +59 -0
- package/dist/cdn/{SvDateRangeInput-DMLKmGEc.js → SvDateRangeInput-BeU_TkbQ.js} +15 -14
- package/dist/cdn/{SvDateRangeInput-CaOuMs8O.js → SvDateRangeInput-yX8vzleW.js} +38 -37
- package/dist/cdn/{SvDateTimePicker-sonaH0oh.js → SvDateTimePicker-DQwt4UAs.js} +139 -180
- package/dist/cdn/SvDateTimePicker-vNU6bZ-q.js +775 -0
- package/dist/cdn/{SvGridCellEditor-CjEJMJKc.js → SvGridCellEditor-B1p-vCK5.js} +188 -178
- package/dist/cdn/{SvGridCellEditor-BWnTi2N7.js → SvGridCellEditor-D_0q4xAu.js} +98 -88
- package/dist/cdn/SvGridChart-C3EWAZaM.js +3574 -0
- package/dist/cdn/SvGridChart-DzLkSwCH.js +3572 -0
- package/dist/cdn/SvGridChartBuilder-BE2T1ykB.js +783 -0
- package/dist/cdn/SvGridChartBuilder-CfII62sZ.js +784 -0
- package/dist/cdn/SvGridChartPanel-CCX5_Wgd.js +675 -0
- package/dist/cdn/SvGridChartPanel-xf4sWVTo.js +699 -0
- package/dist/cdn/SvGridChartView-CfuXmY5I.js +48 -0
- package/dist/cdn/SvGridChartView-DYwabQWj.js +47 -0
- package/dist/cdn/SvMenuList-CLN8OuIK.js +452 -0
- package/dist/cdn/SvMenuList-DkGhNKjf.js +451 -0
- package/dist/cdn/SvModal-BAE-pjZX.js +396 -0
- package/dist/cdn/SvModal-CIZWCcad.js +397 -0
- package/dist/cdn/chart-Dz7SqMXH.js +4341 -0
- package/dist/cdn/chart-export-BXqueeWJ.js +135 -0
- package/dist/cdn/chart-export-pdf-DONFUnNY.js +110 -0
- package/dist/cdn/chart-panel-messages-CUbf2R4i.js +1052 -0
- package/dist/cdn/chart-panel-messages-CmNrMdsr.js +1053 -0
- package/dist/cdn/chart-summary-BJW_tg_X.js +138 -0
- package/dist/cdn/chart-trend-CaN9mDEV.js +50 -0
- package/dist/cdn/chart-validate-HcOVFAfJ.js +188 -0
- package/dist/cdn/{column-resize-DsfNXMom.js → column-resize-DpmOLfRp.js} +3 -3
- package/dist/cdn/{date-format-BnnHlqGw.js → date-format-CtquV-p3.js} +583 -603
- package/dist/cdn/{date-format-BNii4zeD.js → date-format-D6KFzU_W.js} +347 -367
- package/dist/cdn/dismissable-DAHetSNk.js +44 -0
- package/dist/cdn/editor-contract-LXgQJAgd.js +22 -0
- package/dist/cdn/focus-trap-BBOQYBma.js +65 -0
- package/dist/cdn/{row-resize-BRcimkUT.js → row-resize-niQCp040.js} +44 -36
- package/dist/cdn/server-block-cache-CGoWz-87.js +237 -0
- package/dist/cdn/{src-D6XvA1Ij.js → src-B6HXdfHY.js} +10448 -10049
- package/dist/cdn/{src-Bugf5XlI.js → src-C6Iowdvs.js} +6908 -6509
- package/dist/cdn/svgrid.js +27 -15
- package/dist/cdn/svgrid.svelte-external.js +27 -15
- package/dist/cdn/validate-CchXzyrX.js +76 -0
- package/dist/chart-axes.d.ts +53 -0
- package/dist/chart-axes.js +351 -0
- package/dist/chart-cartesian.d.ts +88 -0
- package/dist/chart-cartesian.js +1862 -0
- package/dist/chart-decimate.d.ts +51 -0
- package/dist/chart-decimate.js +199 -0
- package/dist/chart-export-pdf.d.ts +47 -0
- package/dist/chart-export-pdf.js +187 -0
- package/dist/chart-export.d.ts +2 -1
- package/dist/chart-export.js +18 -3
- package/dist/chart-financial.d.ts +91 -0
- package/dist/chart-financial.js +175 -0
- package/dist/chart-flow.d.ts +10 -0
- package/dist/chart-flow.js +298 -0
- package/dist/chart-format.d.ts +18 -0
- package/dist/chart-format.js +65 -0
- package/dist/chart-grid.d.ts +8 -0
- package/dist/chart-grid.js +190 -0
- package/dist/chart-hierarchy.d.ts +17 -0
- package/dist/chart-hierarchy.js +146 -0
- package/dist/chart-indicators.d.ts +115 -0
- package/dist/chart-indicators.js +389 -0
- package/dist/chart-messages.d.ts +95 -0
- package/dist/chart-messages.js +92 -0
- package/dist/chart-motion.d.ts +16 -0
- package/dist/chart-motion.js +141 -0
- package/dist/chart-panel-messages.d.ts +265 -0
- package/dist/chart-panel-messages.js +285 -0
- package/dist/chart-pivot.d.ts +87 -0
- package/dist/chart-pivot.js +156 -0
- package/dist/chart-polar.d.ts +25 -0
- package/dist/chart-polar.js +700 -0
- package/dist/chart-samples.d.ts +16 -0
- package/dist/chart-samples.js +153 -0
- package/dist/chart-scale.d.ts +113 -0
- package/dist/chart-scale.js +405 -0
- package/dist/chart-stats.d.ts +111 -0
- package/dist/chart-stats.js +419 -0
- package/dist/chart-stream.d.ts +45 -0
- package/dist/chart-stream.js +91 -0
- package/dist/chart-summary.d.ts +27 -0
- package/dist/chart-summary.js +205 -0
- package/dist/chart-sync.svelte.d.ts +32 -0
- package/dist/chart-sync.svelte.js +23 -0
- package/dist/chart-table.d.ts +35 -0
- package/dist/chart-table.js +165 -0
- package/dist/chart-trend.d.ts +19 -0
- package/dist/chart-trend.js +61 -0
- package/dist/chart-types.d.ts +1456 -0
- package/dist/chart-types.js +6 -0
- package/dist/chart-validate.d.ts +43 -0
- package/dist/chart-validate.js +272 -0
- package/dist/chart-zoom.d.ts +40 -0
- package/dist/chart-zoom.js +145 -0
- package/dist/chart.d.ts +186 -865
- package/dist/chart.js +460 -2204
- package/dist/clipboard.d.ts +1 -0
- package/dist/clipboard.js +137 -18
- package/dist/column-resize.d.ts +3 -0
- package/dist/column-resize.js +4 -1
- package/dist/columns.js +3 -0
- package/dist/command-context.d.ts +19 -0
- package/dist/command-context.js +116 -0
- package/dist/core.d.ts +7 -0
- package/dist/core.js +36 -13
- package/dist/createPopoverSelect.svelte.d.ts +2 -2
- package/dist/editing.d.ts +2 -8
- package/dist/editing.js +272 -33
- package/dist/fill-patterns.d.ts +0 -5
- package/dist/fill-patterns.js +56 -2
- package/dist/grid-icons.d.ts +2 -2
- package/dist/grid-icons.js +2 -2
- package/dist/grid-messages.d.ts +12 -3
- package/dist/grid-messages.js +7 -0
- package/dist/history.d.ts +83 -0
- package/dist/history.js +133 -0
- package/dist/index.d.ts +27 -10
- package/dist/index.js +22 -5
- package/dist/keyboard-handlers.js +88 -31
- package/dist/keyboard.d.ts +55 -0
- package/dist/keyboard.js +132 -0
- package/dist/menus.d.ts +3 -1
- package/dist/menus.js +7 -2
- package/dist/merges.d.ts +97 -0
- package/dist/merges.js +147 -0
- package/dist/row-model.d.ts +133 -0
- package/dist/row-model.js +16 -0
- package/dist/row-resize.d.ts +3 -0
- package/dist/row-resize.js +14 -0
- package/dist/scroll-sync.d.ts +1 -0
- package/dist/scroll-sync.js +24 -0
- package/dist/selection.d.ts +18 -1
- package/dist/selection.js +138 -18
- package/dist/server-block-cache.d.ts +214 -0
- package/dist/server-block-cache.js +531 -0
- package/dist/server-data-source.d.ts +240 -6
- package/dist/server-data-source.js +220 -20
- package/dist/server.d.ts +13 -0
- package/dist/server.js +13 -0
- package/dist/shortcut-registry.d.ts +145 -0
- package/dist/shortcut-registry.js +44 -0
- package/dist/svgrid-wrapper.types.d.ts +213 -22
- package/dist/validate.d.ts +2 -0
- package/dist/validate.js +8 -3
- package/dist/virtualization/virtualizer.js +38 -17
- package/package.json +11 -1
- package/src/GridMenus.svelte +44 -2
- package/src/SvChartMenu.svelte +69 -0
- package/src/SvChartPanes.svelte +113 -0
- package/src/SvChartPanes.test.ts +66 -0
- package/src/SvGrid.controller.svelte.ts +818 -179
- package/src/SvGrid.css +178 -2
- package/src/SvGrid.svelte +467 -516
- package/src/SvGrid.types.ts +293 -11
- package/src/SvGridCellEditor.svelte +17 -0
- package/src/SvGridChart.svelte +2257 -329
- package/src/SvGridChart.test.ts +1419 -1
- package/src/SvGridChart.types.ts +336 -0
- package/src/SvGridChartBuilder.svelte +323 -0
- package/src/SvGridChartPanel.svelte +221 -275
- package/src/SvGridChartPickers.svelte +417 -0
- package/src/SvGridChartView.svelte +13 -14
- package/src/SvModal.svelte +7 -1
- package/src/SvModal.test.ts +9 -0
- package/src/ai.test.ts +57 -2
- package/src/ai.ts +166 -22
- package/src/aria.d.ts +11 -0
- package/src/build-api.coverage.test.ts +184 -0
- package/src/build-api.ts +118 -22
- package/src/chart-axes.test.ts +573 -0
- package/src/chart-axes.ts +342 -0
- package/src/chart-cartesian.ts +1863 -0
- package/src/chart-decimate.test.ts +249 -0
- package/src/chart-decimate.ts +186 -0
- package/src/chart-export-pdf.test.ts +91 -0
- package/src/chart-export-pdf.ts +207 -0
- package/src/chart-export.test.ts +14 -0
- package/src/chart-export.ts +13 -3
- package/src/chart-financial.ts +208 -0
- package/src/chart-flow.ts +286 -0
- package/src/chart-format.ts +67 -0
- package/src/chart-grid.ts +179 -0
- package/src/chart-hierarchy.ts +135 -0
- package/src/chart-indicators.test.ts +443 -0
- package/src/chart-indicators.ts +384 -0
- package/src/chart-messages.test.ts +21 -0
- package/src/chart-messages.ts +184 -0
- package/src/chart-motion.test.ts +71 -0
- package/src/chart-motion.ts +148 -0
- package/src/chart-panel-messages.test.ts +29 -0
- package/src/chart-panel-messages.ts +550 -0
- package/src/chart-pivot.test.ts +54 -0
- package/src/chart-pivot.ts +225 -0
- package/src/chart-polar.ts +674 -0
- package/src/chart-samples.ts +106 -0
- package/src/chart-scale.ts +394 -0
- package/src/chart-series-types.test.ts +714 -0
- package/src/chart-stats.ts +409 -0
- package/src/chart-stream.test.ts +75 -0
- package/src/chart-stream.ts +114 -0
- package/src/chart-summary.test.ts +90 -0
- package/src/chart-summary.ts +197 -0
- package/src/chart-sync.svelte.ts +41 -0
- package/src/chart-table.test.ts +76 -0
- package/src/chart-table.ts +178 -0
- package/src/chart-trend.ts +47 -0
- package/src/chart-types.ts +1309 -0
- package/src/chart-validate.test.ts +100 -0
- package/src/chart-validate.ts +247 -0
- package/src/chart-zoom.test.ts +137 -0
- package/src/chart-zoom.ts +124 -0
- package/src/chart.coverage.test.ts +81 -0
- package/src/chart.test.ts +56 -3
- package/src/chart.ts +557 -2784
- package/src/clipboard.test.ts +151 -0
- package/src/clipboard.ts +145 -16
- package/src/column-resize.ts +7 -1
- package/src/columns.ts +2 -0
- package/src/command-context.test.ts +200 -0
- package/src/command-context.ts +137 -0
- package/src/core.rowmodel-cache.test.ts +51 -0
- package/src/core.ts +40 -12
- package/src/editing.test.ts +281 -3
- package/src/editing.ts +264 -38
- package/src/fill-patterns.test.ts +35 -0
- package/src/fill-patterns.ts +56 -2
- package/src/grid-icons.ts +2 -2
- package/src/grid-messages.ts +21 -3
- package/src/history.test.ts +196 -0
- package/src/history.ts +162 -0
- package/src/icon-seam.test.ts +5 -6
- package/src/index.ts +169 -12
- package/src/keyboard-handlers.coverage.test.ts +126 -6
- package/src/keyboard-handlers.ts +91 -30
- package/src/keyboard-shortcuts.seam.test.ts +200 -0
- package/src/keyboard.test.ts +124 -1
- package/src/keyboard.ts +142 -0
- package/src/menus.test.ts +26 -0
- package/src/menus.ts +10 -3
- package/src/merges.test.ts +112 -0
- package/src/merges.ts +168 -0
- package/src/pivot.grid.test.ts +40 -5
- package/src/row-model.ts +146 -0
- package/src/row-resize.test.ts +44 -0
- package/src/row-resize.ts +17 -0
- package/src/scroll-sync.test.ts +42 -1
- package/src/scroll-sync.ts +25 -0
- package/src/selection.multi-range.test.ts +34 -0
- package/src/selection.test.ts +33 -2
- package/src/selection.ts +143 -21
- package/src/server-block-cache.test.ts +645 -0
- package/src/server-block-cache.ts +677 -0
- package/src/server-data-source.infinite.test.ts +343 -0
- package/src/server-data-source.ts +450 -27
- package/src/server.ts +47 -0
- package/src/shortcut-registry.test.ts +97 -0
- package/src/shortcut-registry.ts +181 -0
- package/src/svgrid-wrapper.types.ts +184 -13
- package/src/svgrid.behavior.test.ts +135 -0
- package/src/svgrid.charting.test.ts +513 -3
- package/src/svgrid.context-menu.test.ts +31 -0
- package/src/svgrid.new-features.wrapper.test.ts +10 -3
- package/src/svgrid.row-model-prop.svelte.test.ts +352 -0
- package/src/svgrid.row-model-seam.svelte.test.ts +289 -0
- package/src/validate.test.ts +10 -0
- package/src/validate.ts +10 -3
- package/src/virtualization/virtualizer.ts +39 -17
- package/dist/SvGroupCell.svelte +0 -141
- package/dist/SvGroupCell.svelte.d.ts +0 -49
- package/dist/SvRowGroupPanel.svelte +0 -186
- package/dist/SvRowGroupPanel.svelte.d.ts +0 -25
- package/dist/cdn/GridMenus-CHOMnW-c.js +0 -602
- package/dist/cdn/SvDateTimePicker-CCbDZNZB.js +0 -816
- package/dist/cdn/SvGridChart-1PMSp2LZ.js +0 -1481
- package/dist/cdn/SvGridChart-D02avhyr.js +0 -1480
- package/dist/cdn/SvGridChartPanel-DJnViOv4.js +0 -834
- package/dist/cdn/SvGridChartPanel-vPTNerFZ.js +0 -810
- package/dist/cdn/SvGridChartView-C--HhdUo.js +0 -56
- package/dist/cdn/SvGridChartView-KyyFG-wY.js +0 -55
- package/dist/cdn/chart-DLg3_zTQ.js +0 -1652
- package/dist/cdn/validate-_CDJzgIo.js +0 -75
- package/dist/server-group-model.d.ts +0 -98
- package/dist/server-group-model.js +0 -263
- package/src/SvGroupCell.svelte +0 -141
- package/src/SvRowGroupPanel.svelte +0 -186
- package/src/server-group-model.test.ts +0 -294
- package/src/server-group-model.ts +0 -370
package/src/SvGrid.css
CHANGED
|
@@ -463,6 +463,79 @@
|
|
|
463
463
|
user-select: text;
|
|
464
464
|
}
|
|
465
465
|
|
|
466
|
+
/* Rows whose data has not arrived yet (server-side / infinite loading).
|
|
467
|
+
|
|
468
|
+
The shimmer is per CELL, not per row, so the columns keep their widths
|
|
469
|
+
and the table does not reflow as blocks land. Widths vary a little by
|
|
470
|
+
column position so a screenful of them reads as text rather than as a
|
|
471
|
+
barcode - the same trick every skeleton screen uses. */
|
|
472
|
+
.sv-grid-placeholder-cell {
|
|
473
|
+
user-select: none;
|
|
474
|
+
cursor: default;
|
|
475
|
+
}
|
|
476
|
+
/* The per-cell shimmer of a placeholder row. Its own name: `.sv-grid-skeleton`
|
|
477
|
+
above is the full-body loading overlay, absolutely positioned under the
|
|
478
|
+
header, and sharing it pulled every placeholder cell's bar up there. */
|
|
479
|
+
.sv-grid-placeholder-skeleton {
|
|
480
|
+
display: inline-block;
|
|
481
|
+
width: 72%;
|
|
482
|
+
height: 9px;
|
|
483
|
+
border-radius: 5px;
|
|
484
|
+
vertical-align: middle;
|
|
485
|
+
background: linear-gradient(
|
|
486
|
+
90deg,
|
|
487
|
+
color-mix(in srgb, var(--sg-fg, #0f172a) 8%, transparent) 25%,
|
|
488
|
+
color-mix(in srgb, var(--sg-fg, #0f172a) 3%, transparent) 50%,
|
|
489
|
+
color-mix(in srgb, var(--sg-fg, #0f172a) 8%, transparent) 75%
|
|
490
|
+
);
|
|
491
|
+
background-size: 200% 100%;
|
|
492
|
+
animation: sv-grid-skeleton-shimmer 1.2s linear infinite;
|
|
493
|
+
}
|
|
494
|
+
.sv-grid-placeholder-cell:nth-child(2n) .sv-grid-placeholder-skeleton { width: 54%; }
|
|
495
|
+
.sv-grid-placeholder-cell:nth-child(3n) .sv-grid-placeholder-skeleton { width: 84%; }
|
|
496
|
+
@keyframes sv-grid-skeleton-shimmer {
|
|
497
|
+
from { background-position: 200% 0; }
|
|
498
|
+
to { background-position: -200% 0; }
|
|
499
|
+
}
|
|
500
|
+
@media (prefers-reduced-motion: reduce) {
|
|
501
|
+
.sv-grid-placeholder-skeleton { animation: none; }
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/* A block that failed to load: one message across the row, and a way out.
|
|
505
|
+
The cell stays a table cell so its colspan holds; the flex box is inside
|
|
506
|
+
it (a flex `td` stops spanning and the tint shrank to the text). Rows
|
|
507
|
+
that continue a failed run are the same band without the message. */
|
|
508
|
+
.sv-grid-placeholder-failed .sv-grid-placeholder-cell {
|
|
509
|
+
background: color-mix(in srgb, var(--sg-danger, #dc2626) 6%, transparent);
|
|
510
|
+
}
|
|
511
|
+
.sv-grid-placeholder-failed-body {
|
|
512
|
+
display: flex;
|
|
513
|
+
align-items: center;
|
|
514
|
+
gap: 10px;
|
|
515
|
+
min-height: 100%;
|
|
516
|
+
padding-left: var(--sg-cell-px, 7px);
|
|
517
|
+
}
|
|
518
|
+
.sv-grid-placeholder-failed-cont .sv-grid-placeholder-cell {
|
|
519
|
+
border-top-color: transparent;
|
|
520
|
+
}
|
|
521
|
+
.sv-grid-placeholder-error {
|
|
522
|
+
color: var(--sg-danger, #dc2626);
|
|
523
|
+
font-size: 13px;
|
|
524
|
+
}
|
|
525
|
+
.sv-grid-placeholder-retry {
|
|
526
|
+
background: none;
|
|
527
|
+
border: 1px solid var(--sg-border, #e2e8f0);
|
|
528
|
+
border-radius: var(--sg-radius, 6px);
|
|
529
|
+
padding: 2px 10px;
|
|
530
|
+
font: inherit;
|
|
531
|
+
font-size: 12px;
|
|
532
|
+
color: var(--sg-fg, #0f172a);
|
|
533
|
+
cursor: pointer;
|
|
534
|
+
}
|
|
535
|
+
.sv-grid-placeholder-retry:hover {
|
|
536
|
+
background: color-mix(in srgb, var(--sg-fg, #0f172a) 6%, transparent);
|
|
537
|
+
}
|
|
538
|
+
|
|
466
539
|
/* Pinned columns read as "frozen" via three layered cues:
|
|
467
540
|
1. A distinct fill (slightly stronger than the header) so the
|
|
468
541
|
pinned strip is visible even before you scroll. Themes with a
|
|
@@ -873,7 +946,7 @@
|
|
|
873
946
|
`--sg-thead-h` pixels of the scroll container. `scrollIntoView`
|
|
874
947
|
and friends use this to avoid scrolling a row underneath the
|
|
875
948
|
sticky header - critical for Excel-style keyboard nav. */
|
|
876
|
-
scroll-padding-top: var(--sg-thead-h, 36px);
|
|
949
|
+
scroll-padding-top: calc(var(--sg-thead-h, 36px) + var(--sg-frozen-h, 0px));
|
|
877
950
|
}
|
|
878
951
|
|
|
879
952
|
.sv-grid-container.sv-grid-container-custom-scrollbars {
|
|
@@ -1446,6 +1519,24 @@ select.sv-grid-fr-editor {
|
|
|
1446
1519
|
padding: 0;
|
|
1447
1520
|
}
|
|
1448
1521
|
|
|
1522
|
+
/* ---- Collapsed columns and rows -------------------------------------------
|
|
1523
|
+
A column folded away by `api.setColumnCollapsed` is laid out at 0px (its
|
|
1524
|
+
width resolves to 0), and here it stops painting: no padding to push the
|
|
1525
|
+
box open, nothing visible, so its neighbours' borders meet at the seam the
|
|
1526
|
+
way they do in a sheet with a hidden column. A collapsed row leaves the
|
|
1527
|
+
flow entirely; a table row can, a table cell cannot. */
|
|
1528
|
+
.sv-grid-column.sv-grid-column-collapsed,
|
|
1529
|
+
.sv-grid-cell.sv-grid-cell-collapsed {
|
|
1530
|
+
padding: 0;
|
|
1531
|
+
border-left-width: 0;
|
|
1532
|
+
border-right-width: 0;
|
|
1533
|
+
overflow: hidden;
|
|
1534
|
+
visibility: hidden;
|
|
1535
|
+
}
|
|
1536
|
+
.sv-grid-row.sv-grid-row-collapsed {
|
|
1537
|
+
display: none;
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1449
1540
|
/* The four CSS variables let us compose a single box-shadow that draws the
|
|
1450
1541
|
selection rectangle outline only on the cells that sit on its edges. */
|
|
1451
1542
|
.sv-grid-cell[data-selected-range="true"] {
|
|
@@ -1514,6 +1605,36 @@ select.sv-grid-fr-editor {
|
|
|
1514
1605
|
color: inherit;
|
|
1515
1606
|
padding: 0 8px;
|
|
1516
1607
|
}
|
|
1608
|
+
/* Frozen rows (`frozenRows`): the grid's own rows, stuck under the header.
|
|
1609
|
+
Each carries its own `top`, set inline from the heights of the frozen rows
|
|
1610
|
+
above it. Below the header in the stacking order, above the body's rows,
|
|
1611
|
+
with the row's own background so the rows scrolling under it do not show
|
|
1612
|
+
through. */
|
|
1613
|
+
.sv-grid-row.sv-grid-row-frozen {
|
|
1614
|
+
position: sticky;
|
|
1615
|
+
/* Above the body rows' pinned cells (z 30) and row numbers (z 4), which
|
|
1616
|
+
scroll under the band; below the header (z 35) and the scrollbars. */
|
|
1617
|
+
z-index: 31;
|
|
1618
|
+
background: var(--sg-bg, #fff);
|
|
1619
|
+
}
|
|
1620
|
+
.sv-grid-row.sv-grid-row-frozen > .sv-grid-cell {
|
|
1621
|
+
background: var(--sg-bg, #fff);
|
|
1622
|
+
}
|
|
1623
|
+
/* The band's lower edge, so the frozen rows read as a pane. */
|
|
1624
|
+
.sv-grid-row.sv-grid-row-frozen-last > .sv-grid-cell {
|
|
1625
|
+
border-bottom: 1px solid var(--sg-frozen-edge, var(--sg-border, #94a3b8));
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
/* The multiline text editor sizes itself by its lines and keeps the
|
|
1629
|
+
input's single-line look until a break is typed. */
|
|
1630
|
+
.sv-grid-cell-editor-multiline {
|
|
1631
|
+
height: auto;
|
|
1632
|
+
min-height: 100%;
|
|
1633
|
+
resize: none;
|
|
1634
|
+
overflow: hidden;
|
|
1635
|
+
white-space: pre-wrap;
|
|
1636
|
+
line-height: inherit;
|
|
1637
|
+
}
|
|
1517
1638
|
|
|
1518
1639
|
/* Base look for the filter inputs (header filter row, per-column filter, the
|
|
1519
1640
|
global search box, and the menu's search / condition inputs). The inline cell
|
|
@@ -2113,6 +2234,21 @@ select.sv-grid-fr-editor {
|
|
|
2113
2234
|
.sv-grid-context-menu {
|
|
2114
2235
|
min-width: 180px;
|
|
2115
2236
|
}
|
|
2237
|
+
/* The icon gutter of a context-menu item: 16px, in the text colour, so a
|
|
2238
|
+
consumer's own glyphs (a spreadsheet's Cut / Copy / Paste) read as one
|
|
2239
|
+
set with the label. Empty on items without an icon, keeping the labels
|
|
2240
|
+
in one column. */
|
|
2241
|
+
.sv-grid-menu-icon {
|
|
2242
|
+
display: inline-flex;
|
|
2243
|
+
flex: none;
|
|
2244
|
+
width: 16px;
|
|
2245
|
+
height: 16px;
|
|
2246
|
+
align-items: center;
|
|
2247
|
+
justify-content: center;
|
|
2248
|
+
}
|
|
2249
|
+
.sv-grid-menu-icon > svg {
|
|
2250
|
+
display: block;
|
|
2251
|
+
}
|
|
2116
2252
|
|
|
2117
2253
|
.sv-grid-comment-editor {
|
|
2118
2254
|
width: 240px;
|
|
@@ -3107,6 +3243,18 @@ select.sv-grid-fr-editor {
|
|
|
3107
3243
|
.sv-grid-chart-actions { display: inline-flex; align-items: center; gap: 6px; }
|
|
3108
3244
|
.sv-grid-chart-controls { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; }
|
|
3109
3245
|
.sv-grid-chart-controls:empty { display: none; }
|
|
3246
|
+
/* The same pickers on the builder's Data tab, as a labelled form: one control
|
|
3247
|
+
per row, the label in the builder's 110px column. */
|
|
3248
|
+
.sv-grid-chart-controls.is-form { flex-direction: column; align-items: stretch; gap: 8px; }
|
|
3249
|
+
.sv-grid-chart-controls.is-form .sv-grid-chart-ctl,
|
|
3250
|
+
.sv-grid-chart-controls.is-form .sv-grid-chart-toggle {
|
|
3251
|
+
display: grid; grid-template-columns: 110px 1fr; align-items: center; gap: 8px; font-weight: 400; font-size: 12px;
|
|
3252
|
+
}
|
|
3253
|
+
.sv-grid-chart-controls.is-form .sv-grid-chart-toggle { grid-template-columns: 110px auto; justify-content: start; }
|
|
3254
|
+
.sv-grid-chart-controls.is-form .sv-grid-chart-toggle > input { order: 1; justify-self: start; }
|
|
3255
|
+
.sv-grid-chart-controls.is-form .sv-grid-chart-ctl-lbl { font-size: 12px; font-weight: 400; }
|
|
3256
|
+
.sv-grid-chart-controls.is-form .sv-grid-chart-indicators { flex-basis: auto; }
|
|
3257
|
+
.sv-grid-chart-controls.is-form .sv-grid-chart-hint { flex-basis: auto; }
|
|
3110
3258
|
/* Says why the chosen chart type cannot draw yet - a missing Split by, too few
|
|
3111
3259
|
groups. The picker deliberately does NOT hide such a type: options that come
|
|
3112
3260
|
and go as the user filters are worse than one sentence of explanation. */
|
|
@@ -3118,12 +3266,14 @@ select.sv-grid-fr-editor {
|
|
|
3118
3266
|
color: var(--sg-muted, #64748b);
|
|
3119
3267
|
}
|
|
3120
3268
|
.sv-grid-chart-ctl { display: flex; flex-direction: column; gap: 2px; font-size: 11px; font-weight: 600; color: var(--sg-muted, #64748b); }
|
|
3121
|
-
.sv-grid-chart-ctl select
|
|
3269
|
+
.sv-grid-chart-ctl select,
|
|
3270
|
+
.sv-grid-chart-ctl .sv-grid-chart-num {
|
|
3122
3271
|
font: inherit; font-size: 12.5px; font-weight: 400; color: var(--sg-fg, #0f172a);
|
|
3123
3272
|
background: var(--sg-input-bg, var(--sg-bg, #fff));
|
|
3124
3273
|
border: 1px solid var(--sg-input-border, var(--sg-border, #e2e8f0));
|
|
3125
3274
|
border-radius: var(--sg-radius, 6px); padding: 4px 8px;
|
|
3126
3275
|
}
|
|
3276
|
+
.sv-grid-chart-ctl .sv-grid-chart-num { width: 64px; }
|
|
3127
3277
|
.sv-grid-chart-toggle {
|
|
3128
3278
|
display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600;
|
|
3129
3279
|
color: var(--sg-muted, #64748b); cursor: pointer; white-space: nowrap;
|
|
@@ -3148,6 +3298,18 @@ select.sv-grid-fr-editor {
|
|
|
3148
3298
|
display: flex; align-items: stretch; justify-content: center;
|
|
3149
3299
|
}
|
|
3150
3300
|
.sv-grid-chart-panel-body > .sv-grid-chart { width: 100%; justify-content: center; }
|
|
3301
|
+
.sv-grid-chart-panes-host { width: 100%; height: 100%; overflow: auto; }
|
|
3302
|
+
.sv-grid-chart-build-btn { display: inline-flex; align-items: center; gap: 4px; }
|
|
3303
|
+
.sv-grid-chart-link-btn.is-unlinked { color: #b45309; border-color: color-mix(in srgb, #b45309 40%, transparent 60%); }
|
|
3304
|
+
/* Indicator chips on a price chart */
|
|
3305
|
+
.sv-grid-chart-indicators { flex-basis: 100%; }
|
|
3306
|
+
.sv-grid-chart-chips { display: flex; flex-wrap: wrap; gap: 3px; }
|
|
3307
|
+
.sv-grid-chart-chip {
|
|
3308
|
+
font: inherit; font-size: 11px; line-height: 1; padding: 3px 7px;
|
|
3309
|
+
border: 1px solid var(--sg-border, #e2e8f0); border-radius: 999px;
|
|
3310
|
+
background: var(--sg-bg, #fff); color: var(--sg-fg, #0f172a); cursor: pointer;
|
|
3311
|
+
}
|
|
3312
|
+
.sv-grid-chart-chip.is-on { background: var(--sg-accent, #2563eb); border-color: var(--sg-accent, #2563eb); color: #fff; }
|
|
3151
3313
|
.sv-grid-chart-empty { margin: 0; font-size: 13px; color: var(--sg-muted, #64748b); text-align: center; max-width: 42ch; }
|
|
3152
3314
|
/* Export menu */
|
|
3153
3315
|
.sv-grid-chart-export { position: relative; display: inline-flex; }
|
|
@@ -3163,6 +3325,20 @@ select.sv-grid-fr-editor {
|
|
|
3163
3325
|
}
|
|
3164
3326
|
.sv-grid-chart-export-menu button:hover:not(:disabled) { background: var(--sg-hover-bg, color-mix(in srgb, var(--sg-accent, #2563eb) 10%, transparent)); }
|
|
3165
3327
|
.sv-grid-chart-export-menu button:disabled { opacity: 0.45; cursor: default; }
|
|
3328
|
+
/* Saved charts: name the active tab, apply or remove a saved one */
|
|
3329
|
+
.sv-grid-chart-saved-menu { min-width: 220px; gap: 4px; }
|
|
3330
|
+
.sv-grid-chart-saved-row { display: flex; gap: 4px; padding: 2px; }
|
|
3331
|
+
.sv-grid-chart-saved-name {
|
|
3332
|
+
flex: 1; min-width: 0; font: inherit; font-size: 12.5px; color: var(--sg-fg, #0f172a);
|
|
3333
|
+
background: var(--sg-input-bg, var(--sg-bg, #fff)); border: 1px solid var(--sg-input-border, var(--sg-border, #e2e8f0));
|
|
3334
|
+
border-radius: var(--sg-radius, 6px); padding: 4px 8px;
|
|
3335
|
+
}
|
|
3336
|
+
.sv-grid-chart-saved-name:focus { outline: none; border-color: var(--sg-accent, #2563eb); }
|
|
3337
|
+
.sv-grid-chart-saved-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
|
|
3338
|
+
.sv-grid-chart-saved-item { display: flex; align-items: center; }
|
|
3339
|
+
.sv-grid-chart-saved-item .sv-grid-chart-saved-apply { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
|
|
3340
|
+
.sv-grid-chart-saved-item .sv-grid-chart-saved-x { flex: none; padding: 4px 8px; color: var(--sg-muted, #64748b); }
|
|
3341
|
+
.sv-grid-chart-saved-empty { margin: 0; padding: 4px 8px; font-size: 12px; color: var(--sg-muted, #64748b); }
|
|
3166
3342
|
/* AI "chart this" */
|
|
3167
3343
|
.sv-grid-chart-ai-btn { display: inline-flex; align-items: center; gap: 4px; }
|
|
3168
3344
|
.sv-grid-chart-ai-btn.is-active { border-color: var(--sg-accent, #2563eb); color: var(--sg-accent, #2563eb); }
|