@svgrid/grid 2.6.15 → 2.6.17
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/CHANGELOG.md +346 -346
- package/README.md +199 -199
- package/dist/DockNodeView.svelte.d.ts +1 -1
- package/dist/DockPopoutHost.svelte.d.ts +1 -1
- package/dist/FlexRender.svelte +96 -96
- package/dist/FlexRender.svelte.d.ts +1 -1
- package/dist/GridFooter.svelte +181 -178
- package/dist/GridFooter.svelte.d.ts +3 -3
- package/dist/GridMenus.svelte +705 -705
- package/dist/GridMenus.svelte.d.ts +3 -3
- package/dist/SvAccordion.svelte.d.ts +3 -3
- package/dist/SvAutoComplete.svelte +165 -165
- package/dist/SvAutoComplete.svelte.d.ts +2 -2
- package/dist/SvAvatar.svelte +75 -75
- package/dist/SvBreadcrumb.svelte.d.ts +2 -2
- package/dist/SvButtonGroup.svelte.d.ts +3 -3
- package/dist/SvCalendar.svelte +503 -503
- package/dist/SvCalendar.svelte.d.ts +7 -7
- package/dist/SvCarousel.svelte +141 -141
- package/dist/SvCarousel.svelte.d.ts +1 -1
- package/dist/SvCheckBox.svelte +102 -102
- package/dist/SvCheckBox.svelte.d.ts +1 -1
- package/dist/SvCircularProgress.svelte +109 -109
- package/dist/SvColorInput.svelte +181 -181
- package/dist/SvColorInput.svelte.d.ts +1 -1
- package/dist/SvComboBox.svelte +275 -275
- package/dist/SvComboBox.svelte.d.ts +2 -2
- package/dist/SvCommand.svelte.d.ts +2 -2
- package/dist/SvContextMenu.svelte +116 -116
- package/dist/SvCountryInput.svelte +163 -163
- package/dist/SvCountryInput.svelte.d.ts +1 -1
- package/dist/SvDateRangeInput.svelte.d.ts +3 -3
- package/dist/SvDateTimePicker.svelte.d.ts +4 -4
- package/dist/SvDockLayout.svelte.d.ts +2 -2
- package/dist/SvDockManager.svelte.d.ts +2 -2
- package/dist/SvDrawer.svelte +254 -254
- package/dist/SvDropDownList.svelte +374 -374
- package/dist/SvDropDownList.svelte.d.ts +2 -2
- package/dist/SvDurationInput.svelte +126 -126
- package/dist/SvDurationInput.svelte.d.ts +1 -1
- package/dist/SvField.svelte +293 -293
- package/dist/SvField.svelte.d.ts +1 -1
- package/dist/SvFileUpload.svelte.d.ts +3 -3
- package/dist/SvForm.svelte +437 -437
- package/dist/SvForm.svelte.d.ts +4 -4
- package/dist/SvGauge.svelte.d.ts +1 -1
- package/dist/SvGrid.controller.svelte.d.ts +28 -28
- package/dist/SvGrid.controller.svelte.js +117 -45
- package/dist/SvGrid.css +2896 -2856
- package/dist/SvGrid.helpers.d.ts +2 -2
- package/dist/SvGrid.svelte +2956 -2956
- package/dist/SvGrid.svelte.d.ts +3 -3
- package/dist/SvGrid.types.d.ts +28 -7
- package/dist/SvGridCellEditor.svelte +662 -662
- package/dist/SvGridCellEditor.svelte.d.ts +2 -2
- package/dist/SvGridChart.svelte +1716 -1716
- package/dist/SvGridChart.svelte.d.ts +1 -1
- package/dist/SvGridChartPanel.svelte +485 -485
- package/dist/SvGridChartPanel.svelte.d.ts +2 -2
- package/dist/SvGridChartView.svelte +70 -70
- package/dist/SvGridChartView.svelte.d.ts +1 -1
- package/dist/SvGridDropdown.svelte +728 -728
- package/dist/SvGridDropdown.svelte.d.ts +1 -1
- package/dist/SvGridSelect.svelte +266 -266
- package/dist/SvGridSelect.svelte.d.ts +4 -4
- package/dist/SvGroupCell.svelte +116 -116
- package/dist/SvGroupCell.svelte.d.ts +1 -1
- package/dist/SvHoverCard.svelte.d.ts +1 -1
- package/dist/SvListBox.svelte +326 -326
- package/dist/SvListBox.svelte.d.ts +2 -2
- package/dist/SvMaskedInput.svelte +122 -122
- package/dist/SvMaskedInput.svelte.d.ts +1 -1
- package/dist/SvMenu.svelte +124 -124
- package/dist/SvMenu.svelte.d.ts +1 -1
- package/dist/SvMenuList.svelte +146 -146
- package/dist/SvMenuList.svelte.d.ts +3 -3
- package/dist/SvMenubar.svelte.d.ts +3 -3
- package/dist/SvMultiSelect.svelte +289 -289
- package/dist/SvMultiSelect.svelte.d.ts +3 -3
- package/dist/SvNavPane.svelte.d.ts +1 -1
- package/dist/SvNumberInput.svelte +168 -168
- package/dist/SvNumberInput.svelte.d.ts +1 -1
- package/dist/SvOtpInput.svelte +158 -158
- package/dist/SvOtpInput.svelte.d.ts +1 -1
- package/dist/SvPasswordInput.svelte +151 -151
- package/dist/SvPasswordInput.svelte.d.ts +1 -1
- package/dist/SvPhoneInput.svelte +133 -133
- package/dist/SvPhoneInput.svelte.d.ts +2 -2
- package/dist/SvPopconfirm.svelte.d.ts +1 -1
- package/dist/SvPopover.svelte +197 -197
- package/dist/SvPopover.svelte.d.ts +1 -1
- package/dist/SvProgress.svelte +116 -116
- package/dist/SvRadioGroup.svelte +107 -107
- package/dist/SvRadioGroup.svelte.d.ts +3 -3
- package/dist/SvRating.svelte +112 -112
- package/dist/SvRating.svelte.d.ts +1 -1
- package/dist/SvResult.svelte +73 -73
- package/dist/SvRichText.svelte +211 -211
- package/dist/SvRowGroupPanel.svelte +170 -170
- package/dist/SvScrollArea.svelte +61 -61
- package/dist/SvSegmented.svelte.d.ts +3 -3
- package/dist/SvSlider.svelte +203 -203
- package/dist/SvSlider.svelte.d.ts +1 -1
- package/dist/SvSparkline.svelte.d.ts +1 -1
- package/dist/SvSplitter.svelte.d.ts +3 -3
- package/dist/SvStepper.svelte.d.ts +2 -2
- package/dist/SvSwitchButton.svelte +108 -108
- package/dist/SvSwitchButton.svelte.d.ts +1 -1
- package/dist/SvTabs.svelte.d.ts +3 -3
- package/dist/SvTagsInput.svelte +115 -115
- package/dist/SvTagsInput.svelte.d.ts +1 -1
- package/dist/SvTextArea.svelte.d.ts +1 -1
- package/dist/SvTextInput.svelte +147 -147
- package/dist/SvTextInput.svelte.d.ts +1 -1
- package/dist/SvTimePicker.svelte +245 -245
- package/dist/SvTimePicker.svelte.d.ts +3 -3
- package/dist/SvTimeline.svelte.d.ts +2 -2
- package/dist/SvToaster.svelte +159 -159
- package/dist/SvToggleButton.svelte +85 -85
- package/dist/SvToggleButton.svelte.d.ts +1 -1
- package/dist/SvTooltip.svelte +161 -161
- package/dist/SvTooltip.svelte.d.ts +1 -1
- package/dist/SvTour.svelte +208 -208
- package/dist/SvTour.svelte.d.ts +3 -3
- package/dist/SvTree.svelte +444 -444
- package/dist/SvTree.svelte.d.ts +3 -3
- package/dist/SvTreeSelect.svelte +235 -235
- package/dist/SvTreeSelect.svelte.d.ts +3 -3
- package/dist/advanced-filter.svelte.d.ts +1 -1
- package/dist/ai.d.ts +1 -1
- package/dist/ai.js +1 -1
- package/dist/build-api.d.ts +2 -2
- package/dist/build-api.js +8 -8
- package/dist/builtin-editors.js +1 -1
- package/dist/cdn/{GridMenus-CPdy5dxw.js → GridMenus-3kKYmYOE.js} +2 -2
- package/dist/cdn/{GridMenus-BLajq_RP.js → GridMenus-BcDiwQ9U.js} +2 -2
- package/dist/cdn/{SvDateTimePicker-CHnUkWcH.js → SvDateTimePicker-DSUhIta8.js} +2 -2
- package/dist/cdn/{SvDateTimePicker-CRQH_U7E.js → SvDateTimePicker-h9kPyszT.js} +2 -2
- package/dist/cdn/{SvGridCellEditor-BGUCzuPB.js → SvGridCellEditor-DkyQO6FV.js} +1 -1
- package/dist/cdn/{SvGridCellEditor-G8IMWIws.js → SvGridCellEditor-JpJSRhDx.js} +1 -1
- package/dist/cdn/{SvGridChart-BwVos976.js → SvGridChart-Bs2GIR2Q.js} +1 -1
- package/dist/cdn/{SvGridChart-BEJmNNx9.js → SvGridChart-CwhFz7GV.js} +1 -1
- package/dist/cdn/{SvGridChartPanel-BOknOkrP.js → SvGridChartPanel-1WXuStzM.js} +1 -1
- package/dist/cdn/{SvGridChartPanel-D2PjII4O.js → SvGridChartPanel-e5_nqNP9.js} +1 -1
- package/dist/cdn/{SvGridChartView-00LPUHL1.js → SvGridChartView-SmPW10dI.js} +1 -1
- package/dist/cdn/{SvGridChartView-BhUEJ5ki.js → SvGridChartView-eSPuJE6g.js} +1 -1
- package/dist/cdn/{SvGridDropdown-D0VdjeR8.js → SvGridDropdown-B1ZcLpgs.js} +1 -1
- package/dist/cdn/{SvGridDropdown-D13MtJ2j.js → SvGridDropdown-CtdbHcIS.js} +1 -1
- package/dist/cdn/{src-ogpR-lHu.js → src-D79V6bCA.js} +298 -296
- package/dist/cdn/{src-CKpl94Cx.js → src-DMZZVVFd.js} +297 -295
- package/dist/cdn/svgrid.js +6 -6
- package/dist/cdn/svgrid.svelte-external.js +6 -6
- package/dist/cell-render.d.ts +3 -3
- package/dist/cell-render.js +6 -6
- package/dist/cell-values.d.ts +1 -1
- package/dist/cell-values.js +1 -1
- package/dist/chart-export.d.ts +1 -1
- package/dist/chart-export.js +8 -8
- package/dist/clipboard.d.ts +2 -2
- package/dist/clipboard.js +5 -5
- package/dist/column-groups.js +1 -1
- package/dist/columns.d.ts +2 -2
- package/dist/columns.js +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.js +1 -1
- package/dist/createAutocomplete.svelte.d.ts +1 -1
- package/dist/createAutocomplete.svelte.js +2 -2
- package/dist/createButtonGroup.svelte.js +1 -1
- package/dist/createCalendar.svelte.d.ts +4 -4
- package/dist/createCalendar.svelte.js +4 -4
- package/dist/createCarousel.svelte.d.ts +1 -1
- package/dist/createCheckbox.svelte.js +1 -1
- package/dist/createColorInput.svelte.js +1 -1
- package/dist/createCombobox.svelte.d.ts +1 -1
- package/dist/createCombobox.svelte.js +2 -2
- package/dist/createCommand.svelte.d.ts +1 -1
- package/dist/createCommand.svelte.js +2 -2
- package/dist/createCountryInput.svelte.d.ts +1 -1
- package/dist/createCountryInput.svelte.js +2 -2
- package/dist/createDateTimePicker.svelte.d.ts +1 -1
- package/dist/createDateTimePicker.svelte.js +3 -3
- package/dist/createDropdownList.svelte.d.ts +1 -1
- package/dist/createDropdownList.svelte.js +2 -2
- package/dist/createFileUpload.svelte.js +1 -1
- package/dist/createForm.svelte.d.ts +1 -1
- package/dist/createForm.svelte.js +2 -2
- package/dist/createGrid.svelte.d.ts +1 -1
- package/dist/createGrid.svelte.js +1 -1
- package/dist/createGridState.svelte.d.ts +1 -1
- package/dist/createListbox.svelte.d.ts +1 -1
- package/dist/createListbox.svelte.js +2 -2
- package/dist/createMaskedInput.svelte.js +2 -2
- package/dist/createMenu.svelte.d.ts +2 -2
- package/dist/createMenu.svelte.js +2 -2
- package/dist/createNumberInput.svelte.js +1 -1
- package/dist/createOverlay.svelte.js +3 -3
- package/dist/createPagination.d.ts +1 -1
- package/dist/createPagination.js +1 -1
- package/dist/createPasswordInput.svelte.js +1 -1
- package/dist/createPhoneInput.svelte.js +3 -3
- package/dist/createPopoverSelect.svelte.d.ts +1 -1
- package/dist/createPopoverSelect.svelte.js +3 -3
- package/dist/createRadioGroup.svelte.js +1 -1
- package/dist/createRating.svelte.js +1 -1
- package/dist/createSlider.svelte.js +1 -1
- package/dist/createSwitch.svelte.js +1 -1
- package/dist/createTabs.svelte.d.ts +1 -1
- package/dist/createTagsInput.svelte.js +1 -1
- package/dist/createToggle.svelte.js +1 -1
- package/dist/createTooltip.svelte.js +1 -1
- package/dist/createTree.svelte.d.ts +1 -1
- package/dist/datetime/date-restrict.d.ts +1 -1
- package/dist/datetime/date-restrict.js +1 -1
- package/dist/datetime/date-selection.js +1 -1
- package/dist/dock-context.d.ts +1 -1
- package/dist/dock-manager-model.d.ts +1 -1
- package/dist/dock-manager-model.js +1 -1
- package/dist/dock-popout.d.ts +1 -1
- package/dist/dock-popout.js +1 -1
- package/dist/editing.d.ts +2 -2
- package/dist/editing.js +5 -5
- package/dist/editor-registry.d.ts +1 -1
- package/dist/editors/cell-editors.js +1 -1
- package/dist/export-format.d.ts +2 -2
- package/dist/export-format.js +2 -2
- package/dist/export-provider.d.ts +1 -1
- package/dist/facet-buckets.d.ts +1 -1
- package/dist/facet-buckets.js +1 -1
- package/dist/features.d.ts +2 -2
- package/dist/features.js +2 -2
- package/dist/filter-operators.d.ts +2 -2
- package/dist/filter-operators.js +1 -1
- package/dist/form-field.d.ts +1 -1
- package/dist/grid-messages.js +1 -1
- package/dist/headless.d.ts +11 -4
- package/dist/headless.js +11 -4
- package/dist/index.d.ts +120 -120
- package/dist/index.js +111 -111
- package/dist/keyboard-handlers.d.ts +2 -2
- package/dist/keyboard-handlers.js +2 -2
- package/dist/keyboard.d.ts +1 -1
- package/dist/menus.d.ts +3 -3
- package/dist/menus.js +3 -3
- package/dist/named-views.d.ts +1 -1
- package/dist/pivot-view.svelte.d.ts +1 -1
- package/dist/recurrence.d.ts +1 -1
- package/dist/recurrence.js +1 -1
- package/dist/row-drag.js +1 -1
- package/dist/scheduler-ical.d.ts +1 -1
- package/dist/scheduler-model.d.ts +3 -3
- package/dist/scheduler-model.js +2 -2
- package/dist/scroll-sync.d.ts +2 -2
- package/dist/scroll-sync.js +1 -1
- package/dist/selection.d.ts +2 -2
- package/dist/selection.js +3 -3
- package/dist/server-data-source.d.ts +1 -1
- package/dist/server-group-model.d.ts +1 -1
- package/dist/static-functions.d.ts +1 -1
- package/dist/static-functions.js +1 -1
- package/dist/subscribe.d.ts +1 -1
- package/dist/summaries.d.ts +2 -2
- package/dist/summaries.js +3 -3
- package/dist/svgrid-wrapper.types.d.ts +5 -5
- package/dist/themes/index.d.ts +3 -1
- package/dist/themes/index.js +4 -2
- package/dist/toast-store.svelte.js +1 -1
- package/dist/tree-select.d.ts +1 -1
- package/dist/virtualization/column-virtualizer.d.ts +3 -3
- package/dist/virtualization/column-virtualizer.js +1 -1
- package/dist/virtualization/svelte-virtualizer.svelte.d.ts +3 -3
- package/dist/virtualization/svelte-virtualizer.svelte.js +1 -1
- package/dist/virtualization/virtualizer.d.ts +1 -1
- package/package.json +23 -11
- package/src/FlexRender.svelte +96 -96
- package/src/GridFooter.svelte +181 -178
- package/src/GridMenus.svelte +705 -705
- package/src/SvAutoComplete.svelte +165 -165
- package/src/SvAvatar.svelte +75 -75
- package/src/SvCalendar.svelte +503 -503
- package/src/SvCalendar.test.ts +226 -226
- package/src/SvCarousel.svelte +141 -141
- package/src/SvCheckBox.svelte +102 -102
- package/src/SvCircularProgress.svelte +109 -109
- package/src/SvColorInput.svelte +181 -181
- package/src/SvComboBox.svelte +275 -275
- package/src/SvContextMenu.svelte +116 -116
- package/src/SvCountryInput.svelte +163 -163
- package/src/SvDrawer.svelte +254 -254
- package/src/SvDropDownList.svelte +374 -374
- package/src/SvDurationInput.svelte +126 -126
- package/src/SvField.svelte +293 -293
- package/src/SvForm.svelte +437 -437
- package/src/SvForm.test.ts +411 -411
- package/src/SvGrid.controller.svelte.ts +3974 -3898
- package/src/SvGrid.css +2896 -2856
- package/src/SvGrid.svelte +2956 -2956
- package/src/SvGrid.types.ts +1790 -1769
- package/src/SvGridCellEditor.svelte +662 -662
- package/src/SvGridChart.svelte +1716 -1716
- package/src/SvGridChartPanel.svelte +485 -485
- package/src/SvGridChartView.svelte +70 -70
- package/src/SvGridDropdown.svelte +728 -728
- package/src/SvGridSelect.svelte +266 -266
- package/src/SvGroupCell.svelte +116 -116
- package/src/SvListBox.svelte +326 -326
- package/src/SvMaskedInput.svelte +122 -122
- package/src/SvMenu.svelte +124 -124
- package/src/SvMenu.test.ts +97 -97
- package/src/SvMenuList.svelte +146 -146
- package/src/SvMultiSelect.svelte +289 -289
- package/src/SvNumberInput.svelte +168 -168
- package/src/SvOtpInput.svelte +158 -158
- package/src/SvPasswordInput.svelte +151 -151
- package/src/SvPhoneInput.svelte +133 -133
- package/src/SvPopover.svelte +197 -197
- package/src/SvProgress.svelte +116 -116
- package/src/SvRadioGroup.svelte +107 -107
- package/src/SvRating.svelte +112 -112
- package/src/SvResult.svelte +73 -73
- package/src/SvRichText.svelte +211 -211
- package/src/SvRowGroupPanel.svelte +170 -170
- package/src/SvScrollArea.svelte +61 -61
- package/src/SvSlider.svelte +203 -203
- package/src/SvSwitchButton.svelte +108 -108
- package/src/SvTagsInput.svelte +115 -115
- package/src/SvTextInput.svelte +147 -147
- package/src/SvTimePicker.svelte +245 -245
- package/src/SvToaster.svelte +159 -159
- package/src/SvToaster.test.ts +95 -95
- package/src/SvToggleButton.svelte +85 -85
- package/src/SvTooltip.svelte +161 -161
- package/src/SvTour.svelte +208 -208
- package/src/SvTree.svelte +444 -444
- package/src/SvTreeSelect.svelte +235 -235
- package/src/a11y/dismissable.test.ts +119 -119
- package/src/a11y/dismissable.ts +114 -114
- package/src/a11y.contract.test.ts +49 -49
- package/src/a11y.test.ts +59 -59
- package/src/a11y.ts +61 -61
- package/src/ai.test.ts +502 -502
- package/src/ai.ts +1391 -1391
- package/src/build-api.coverage.test.ts +633 -633
- package/src/build-api.ts +846 -846
- package/src/builtin-editors.grid.test.ts +83 -83
- package/src/cell-formatting.ts +169 -169
- package/src/cell-render.test.ts +513 -513
- package/src/cell-render.ts +496 -496
- package/src/cell-values.ts +118 -118
- package/src/chart-export.ts +201 -201
- package/src/chart-view.svelte.ts +36 -36
- package/src/chart.ts +2295 -2295
- package/src/collaboration.test.ts +104 -104
- package/src/collaboration.ts +167 -167
- package/src/core.performance.test.ts +30 -30
- package/src/core.ts +1261 -1261
- package/src/createAutocomplete.svelte.ts +132 -132
- package/src/createCombobox.svelte.ts +191 -191
- package/src/createCountryInput.svelte.ts +157 -157
- package/src/createDropdownList.svelte.ts +168 -168
- package/src/createForm.svelte.ts +386 -386
- package/src/createGrid.svelte.ts +42 -42
- package/src/createGrid.test.ts +10 -10
- package/src/createGridState.svelte.ts +17 -17
- package/src/createListbox.svelte.ts +250 -250
- package/src/createMenu.svelte.ts +224 -224
- package/src/createPopoverSelect.svelte.ts +213 -213
- package/src/createSlider.svelte.ts +191 -191
- package/src/createTooltip.svelte.ts +144 -144
- package/src/createTree.svelte.ts +319 -319
- package/src/editing.test.ts +949 -949
- package/src/editing.ts +606 -606
- package/src/editor-contract.ts +170 -170
- package/src/editor-registry.grid.test.ts +144 -144
- package/src/editor-registry.ts +122 -122
- package/src/export-data-api.test.ts +126 -126
- package/src/export-format.test.ts +107 -107
- package/src/export-format.ts +601 -601
- package/src/filter-operators.ts +160 -160
- package/src/flex-render.ts +3 -3
- package/src/form-field.ts +127 -127
- package/src/group-display.test.ts +167 -167
- package/src/group-display.ts +200 -200
- package/src/headless.ts +87 -80
- package/src/index.ts +754 -754
- package/src/js-scroller.svelte.ts +173 -173
- package/src/keyboard-handlers.ts +270 -270
- package/src/keyboard.test.ts +59 -59
- package/src/keyboard.ts +97 -97
- package/src/list-nav.test.ts +49 -49
- package/src/list-nav.ts +29 -29
- package/src/list-option.test.ts +56 -56
- package/src/list-option.ts +172 -172
- package/src/menus.ts +567 -567
- package/src/merge-objects.ts +48 -48
- package/src/overlays.test.ts +90 -90
- package/src/render-component.ts +28 -28
- package/src/row-drag-touch.ts +211 -211
- package/src/row-drag.test.ts +353 -353
- package/src/row-drag.ts +415 -415
- package/src/row-resize.ts +210 -210
- package/src/scheduler-model.test.ts +562 -562
- package/src/scheduler-model.ts +872 -872
- package/src/selection.test.ts +754 -754
- package/src/selection.ts +491 -491
- package/src/server-data-source.test.ts +383 -383
- package/src/server-data-source.ts +469 -469
- package/src/sparkline.test.ts +68 -68
- package/src/sparkline.ts +169 -169
- package/src/spreadsheet.test.ts +488 -488
- package/src/spreadsheet.ts +312 -312
- package/src/static-functions.ts +11 -11
- package/src/subscribe.ts +38 -38
- package/src/svgrid-wrapper.types.ts +558 -558
- package/src/svgrid.async-editor-options.test.ts +273 -273
- package/src/svgrid.auto-row-height.test.ts +204 -204
- package/src/svgrid.behavior.test.ts +912 -704
- package/src/svgrid.charting.test.ts +534 -534
- package/src/svgrid.comments-autocomplete.test.ts +127 -127
- package/src/svgrid.context-menu.test.ts +147 -147
- package/src/svgrid.features.test.ts +157 -157
- package/src/svgrid.filter-depth.test.ts +163 -163
- package/src/svgrid.filter-menu-listbox.svelte.test.ts +331 -331
- package/src/svgrid.filter-menu-scroll.test.ts +112 -112
- package/src/svgrid.grand-total.test.ts +188 -188
- package/src/svgrid.group-display-mode.test.ts +171 -171
- package/src/svgrid.group-footers.test.ts +121 -121
- package/src/svgrid.group-pagination.test.ts +153 -153
- package/src/svgrid.new-features.wrapper.test.ts +251 -251
- package/src/svgrid.tree-data.test.ts +186 -186
- package/src/svgrid.wrapper.test.ts +63 -63
- package/src/svgriddropdown.async-panel.svelte.test.ts +195 -195
- package/src/test-setup.ts +62 -62
- package/src/themes/index.ts +288 -286
- package/src/toast-store.svelte.ts +246 -246
- package/src/toast-store.test.ts +147 -147
- package/src/tree-row-model.test.ts +168 -168
- package/src/ui-buttons.test.ts +144 -144
- package/src/ui-inputs.test.ts +118 -118
- package/src/ui-localization.test.ts +113 -113
- package/src/ui-range.test.ts +70 -70
- package/src/ui-selection.test.ts +155 -155
- package/src/ui-tier1.test.ts +142 -142
- package/src/virtual.test.ts +88 -88
- package/src/virtualization/column-virtualizer.test.ts +27 -27
- package/src/virtualization/column-virtualizer.ts +30 -30
- package/src/virtualization/svelte-virtualizer.svelte.ts +26 -26
- package/src/virtualization/types.ts +30 -30
- package/src/virtualization/virtualizer.test.ts +47 -47
- package/src/virtualization/virtualizer.ts +322 -322
package/dist/SvForm.svelte.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export type { FormField, FormFieldType, FormSection, FormEntry } from './form-field';
|
|
2
|
-
import { type FormEntry } from './form-field';
|
|
3
|
-
import { type FormMessages } from './createForm.svelte';
|
|
4
|
-
import type { EditorDir } from './editor-contract';
|
|
1
|
+
export type { FormField, FormFieldType, FormSection, FormEntry } from './form-field.js';
|
|
2
|
+
import { type FormEntry } from './form-field.js';
|
|
3
|
+
import { type FormMessages } from './createForm.svelte.js';
|
|
4
|
+
import type { EditorDir } from './editor-contract.js';
|
|
5
5
|
type Props = {
|
|
6
6
|
fields: ReadonlyArray<FormEntry>;
|
|
7
7
|
initial?: Record<string, any>;
|
package/dist/SvGauge.svelte.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* The arc/needle geometry + `role="meter"` ARIA live in the headless
|
|
7
7
|
* `createGauge` core; this component is just one styled renderer over it.
|
|
8
8
|
*/
|
|
9
|
-
import { type EditorDir } from './editor-contract';
|
|
9
|
+
import { type EditorDir } from './editor-contract.js';
|
|
10
10
|
type Band = {
|
|
11
11
|
from: number;
|
|
12
12
|
to: number;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { type GridPredicateExpr, type CellEditorOption, type Column, type ColumnDef, type Row, type RowData, type TableFeatures, type ChartType, type ChartSpec, type ChartValueFormat } from "./index";
|
|
2
|
-
import "./sv-grid-scrollbar";
|
|
3
|
-
import { type ColumnStat } from "./conditional-formatting";
|
|
4
|
-
import type { Props, SelectionRange, CellEditState, FilterOperator, MenuPosition, ContextMenuTarget, ChartingConfig } from "./SvGrid.types";
|
|
5
|
-
import { operatorOption, operatorsForColumn, defaultOperatorFor, operatorLabelFor } from "./filter-operators";
|
|
6
|
-
import { type FacetBucket, isBucketableColumn, buildBuckets, isInBucket } from "./facet-buckets";
|
|
7
|
-
import { getColumnBaseValue, isGroupRow, toolPanelHeaderLabel, formatSummaryNumeric, getColumnAlign, getPinnedCellValue, getColumnAccessorValue, columnDefMatchesId } from "./cell-values";
|
|
1
|
+
import { type GridPredicateExpr, type CellEditorOption, type Column, type ColumnDef, type Row, type RowData, type TableFeatures, type ChartType, type ChartSpec, type ChartValueFormat } from "./index.js";
|
|
2
|
+
import "./sv-grid-scrollbar.js";
|
|
3
|
+
import { type ColumnStat } from "./conditional-formatting.js";
|
|
4
|
+
import type { Props, SelectionRange, CellEditState, FilterOperator, MenuPosition, ContextMenuTarget, ChartingConfig } from "./SvGrid.types.js";
|
|
5
|
+
import { operatorOption, operatorsForColumn, defaultOperatorFor, operatorLabelFor } from "./filter-operators.js";
|
|
6
|
+
import { type FacetBucket, isBucketableColumn, buildBuckets, isInBucket } from "./facet-buckets.js";
|
|
7
|
+
import { getColumnBaseValue, isGroupRow, toolPanelHeaderLabel, formatSummaryNumeric, getColumnAlign, getPinnedCellValue, getColumnAccessorValue, columnDefMatchesId } from "./cell-values.js";
|
|
8
8
|
/**
|
|
9
9
|
* SvGrid controller. The component's entire reactive core - every $state,
|
|
10
10
|
* $derived, $effect and handler - lives here so SvGrid.svelte can stay a thin
|
|
@@ -110,7 +110,7 @@ export declare function createSvGridController<TFeatures extends TableFeatures =
|
|
|
110
110
|
readonly selectionColumnWidth: number;
|
|
111
111
|
readonly rowNumberColumnWidth: number;
|
|
112
112
|
readonly showRowNumbersEffective: boolean;
|
|
113
|
-
readonly filterOperatorOptions: import("./SvGrid.types").FilterOption[];
|
|
113
|
+
readonly filterOperatorOptions: import("./SvGrid.types.js").FilterOption[];
|
|
114
114
|
readonly TEXT_OPERATORS: FilterOperator[];
|
|
115
115
|
readonly NUMBER_OPERATORS: FilterOperator[];
|
|
116
116
|
readonly DATE_OPERATORS: FilterOperator[];
|
|
@@ -175,11 +175,11 @@ export declare function createSvGridController<TFeatures extends TableFeatures =
|
|
|
175
175
|
rows: Array<Row<TData>>;
|
|
176
176
|
}) => Row<TData>[];
|
|
177
177
|
readonly resolveEffectiveFeatures: () => TableFeatures;
|
|
178
|
-
readonly grid: import("./createGrid.svelte").SvelteGrid<TableFeatures, TData, {}>;
|
|
178
|
+
readonly grid: import("./createGrid.svelte.js").SvelteGrid<TableFeatures, TData, {}>;
|
|
179
179
|
userColumnOrder: string[];
|
|
180
180
|
lastSeededOrder: string;
|
|
181
181
|
readonly allColumns: Column<TData>[];
|
|
182
|
-
readonly headerGroups: import("./core").HeaderGroup<TData>[];
|
|
182
|
+
readonly headerGroups: import("./core.js").HeaderGroup<TData>[];
|
|
183
183
|
readonly groupHeaderRows: {
|
|
184
184
|
id: string;
|
|
185
185
|
cells: {
|
|
@@ -256,13 +256,13 @@ export declare function createSvGridController<TFeatures extends TableFeatures =
|
|
|
256
256
|
readonly getColumnBaseValue: typeof getColumnBaseValue;
|
|
257
257
|
readonly hasConditionalFormats: boolean;
|
|
258
258
|
readonly conditionalColumnStats: Map<string, ColumnStat>;
|
|
259
|
-
readonly cellConditionalFormat: (row: Row<TData>, column: Column<TData>, value: unknown) => import("./conditional-formatting").ResolvedCellFormat | null;
|
|
259
|
+
readonly cellConditionalFormat: (row: Row<TData>, column: Column<TData>, value: unknown) => import("./conditional-formatting.js").ResolvedCellFormat | null;
|
|
260
260
|
readonly isGroupRow: typeof isGroupRow;
|
|
261
261
|
readonly isCellEditable: (column: Column<TData>, row?: Row<TData> | undefined) => boolean;
|
|
262
262
|
readonly isCellEditableAt: (rowIndex: number, colIndex: number) => boolean;
|
|
263
263
|
readonly sortDirectionByColumn: Record<string, false | "asc" | "desc">;
|
|
264
264
|
readonly groupingColumns: any;
|
|
265
|
-
readonly groupDisplayMode: import("./group-display").GroupDisplayType;
|
|
265
|
+
readonly groupDisplayMode: import("./group-display.js").GroupDisplayType;
|
|
266
266
|
readonly groupColumnMode: boolean;
|
|
267
267
|
readonly autoGroupCell: (row: Row<TData>, columnId: string) => {
|
|
268
268
|
label: string;
|
|
@@ -297,12 +297,12 @@ export declare function createSvGridController<TFeatures extends TableFeatures =
|
|
|
297
297
|
readonly toolPanelHeaderLabel: typeof toolPanelHeaderLabel;
|
|
298
298
|
readonly toggleColumnVisibleInPanel: (columnId: string) => void;
|
|
299
299
|
readonly moveColumnInPanel: (columnId: string, dir: -1 | 1) => void;
|
|
300
|
-
readonly messages: import("./grid-messages").GridMessages;
|
|
301
|
-
readonly pivotConfig: import("./pivot-view.svelte").GridPivotConfig<TData> | null;
|
|
300
|
+
readonly messages: import("./grid-messages.js").GridMessages;
|
|
301
|
+
readonly pivotConfig: import("./pivot-view.svelte.js").GridPivotConfig<TData> | null;
|
|
302
302
|
readonly pivotActive: boolean;
|
|
303
303
|
readonly pivotResult: {
|
|
304
|
-
rows: import("./pivot-view.svelte").GridPivotRow[];
|
|
305
|
-
columns: ColumnDef<TableFeatures, import("./pivot-view.svelte").GridPivotRow>[];
|
|
304
|
+
rows: import("./pivot-view.svelte.js").GridPivotRow[];
|
|
305
|
+
columns: ColumnDef<TableFeatures, import("./pivot-view.svelte.js").GridPivotRow>[];
|
|
306
306
|
} | null;
|
|
307
307
|
readonly pivotModeOn: boolean;
|
|
308
308
|
readonly hasPivotEngine: boolean;
|
|
@@ -395,33 +395,33 @@ export declare function createSvGridController<TFeatures extends TableFeatures =
|
|
|
395
395
|
lastFiltersSerialized: string;
|
|
396
396
|
readonly virtualizer: {
|
|
397
397
|
readonly version: number;
|
|
398
|
-
setOptions: (next: Partial<import("./index").VirtualizerOptions>) => void;
|
|
398
|
+
setOptions: (next: Partial<import("./index.js").VirtualizerOptions>) => void;
|
|
399
399
|
setScrollOffset: (scrollOffset: number) => void;
|
|
400
400
|
setViewportHeight: (viewportHeight: number) => void;
|
|
401
401
|
scrollToIndex: (index: number) => void;
|
|
402
|
-
getVirtualItems: () => import("./index").VirtualItem[];
|
|
402
|
+
getVirtualItems: () => import("./index.js").VirtualItem[];
|
|
403
403
|
getTotalSize: () => number;
|
|
404
404
|
getOffsetForIndex: (index: number) => number;
|
|
405
405
|
getSizeForIndex: (index: number) => number;
|
|
406
|
-
getState: () => import("./index").VirtualizerState;
|
|
406
|
+
getState: () => import("./index.js").VirtualizerState;
|
|
407
407
|
};
|
|
408
408
|
readonly columnVirtualizer: {
|
|
409
409
|
setViewportWidth(viewportWidth: number): void;
|
|
410
410
|
setHorizontalOffset(scrollOffset: number): void;
|
|
411
|
-
setOptions(next: Partial<import("./index").VirtualizerOptions>): void;
|
|
411
|
+
setOptions(next: Partial<import("./index.js").VirtualizerOptions>): void;
|
|
412
412
|
setScrollOffset(scrollOffset: number): void;
|
|
413
413
|
setViewportHeight(viewportHeight: number): void;
|
|
414
414
|
scrollToIndex(index: number): void;
|
|
415
|
-
getVirtualItems(): import("./index").VirtualItem[];
|
|
415
|
+
getVirtualItems(): import("./index.js").VirtualItem[];
|
|
416
416
|
getTotalSize(): number;
|
|
417
417
|
getOffsetForIndex(index: number): number;
|
|
418
418
|
getSizeForIndex(index: number): number;
|
|
419
|
-
getState(): import("./index").VirtualizerState;
|
|
419
|
+
getState(): import("./index.js").VirtualizerState;
|
|
420
420
|
subscribe(listener: () => void): () => boolean;
|
|
421
421
|
};
|
|
422
422
|
readonly rowVirtualizationEnabled: boolean;
|
|
423
423
|
readonly columnVirtualizationEnabled: boolean;
|
|
424
|
-
readonly virtualRows: import("./index").VirtualItem[];
|
|
424
|
+
readonly virtualRows: import("./index.js").VirtualItem[];
|
|
425
425
|
readonly autoRowHeightOn: boolean;
|
|
426
426
|
/** Svelte action: measure this row and report its natural height. */
|
|
427
427
|
readonly measureRowHeight: (node: HTMLElement, index: number) => {
|
|
@@ -441,9 +441,9 @@ export declare function createSvGridController<TFeatures extends TableFeatures =
|
|
|
441
441
|
readonly rowBottomSpacer: number;
|
|
442
442
|
readonly domToLogicalRowOffset: (domTop: number) => number;
|
|
443
443
|
readonly logicalToDomRowOffset: (logical: number) => number;
|
|
444
|
-
readonly virtualColumns: import("./index").VirtualItem[];
|
|
444
|
+
readonly virtualColumns: import("./index.js").VirtualItem[];
|
|
445
445
|
readonly virtualColumnTotalSize: number;
|
|
446
|
-
readonly renderedColumnItems: import("./index").VirtualItem[] | {
|
|
446
|
+
readonly renderedColumnItems: import("./index.js").VirtualItem[] | {
|
|
447
447
|
index: number;
|
|
448
448
|
key: number;
|
|
449
449
|
size: any;
|
|
@@ -472,7 +472,7 @@ export declare function createSvGridController<TFeatures extends TableFeatures =
|
|
|
472
472
|
readonly formatSummaryNumeric: typeof formatSummaryNumeric;
|
|
473
473
|
readonly computeSummaries: (rows: readonly Row<TData>[], columns: readonly Column<TData>[]) => Record<string, string>;
|
|
474
474
|
readonly SUMMARY_DEFER_CELL_LIMIT: number;
|
|
475
|
-
summaryByColumn: Record<string, string>;
|
|
475
|
+
readonly summaryByColumn: Record<string, string>;
|
|
476
476
|
hasMeasured: boolean;
|
|
477
477
|
scrollBottomArmed: boolean;
|
|
478
478
|
readonly onBodyScroll: (event: Event) => void;
|
|
@@ -601,7 +601,7 @@ export declare function createSvGridController<TFeatures extends TableFeatures =
|
|
|
601
601
|
readonly updateFilterMenuValueTo: (columnId: string, valueTo: string) => void;
|
|
602
602
|
readonly toggleCheckboxWithKeyboard: (event: KeyboardEvent, toggle: () => void) => void;
|
|
603
603
|
readonly getColumnAccessorValue: typeof getColumnAccessorValue;
|
|
604
|
-
readonly fallbackOperatorOption: import("./SvGrid.types").FilterOption;
|
|
604
|
+
readonly fallbackOperatorOption: import("./SvGrid.types.js").FilterOption;
|
|
605
605
|
readonly operatorOption: typeof operatorOption;
|
|
606
606
|
readonly operatorsForColumn: typeof operatorsForColumn;
|
|
607
607
|
readonly defaultOperatorFor: typeof defaultOperatorFor;
|
|
@@ -647,6 +647,6 @@ export declare function createSvGridController<TFeatures extends TableFeatures =
|
|
|
647
647
|
readonly clearColumnFilter: (columnId: string) => void;
|
|
648
648
|
readonly onWindowKeydown: (event: KeyboardEvent) => void;
|
|
649
649
|
readonly columnDefMatchesId: typeof columnDefMatchesId;
|
|
650
|
-
readonly buildApi: () => import("./svgrid-wrapper.types").SvGridApi<TFeatures, TData>;
|
|
650
|
+
readonly buildApi: () => import("./svgrid-wrapper.types.js").SvGridApi<TFeatures, TData>;
|
|
651
651
|
apiNotified: boolean;
|
|
652
652
|
};
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { applyGroupAggregate, applyRowPredicate, compileExcelFilter, getAdvancedFilterEngine, normalizeForFilter, createColumnVirtualizer, createCoreRowModel, createExpandedRowModel, createFilteredRowModel, createGroupedRowModel, createTreeRowModel, createSvelteVirtualizer, createSortedRowModel, createSvGrid, getGridCellDomId, sortFns, } from "./index";
|
|
2
|
-
import { createRowScrollScaling, resolveMaxDomHeight, } from "./virtualization/scroll-scaling";
|
|
3
|
-
import { buildPreMeasureItems } from "./virtualization/virtualizer";
|
|
4
|
-
import "./sv-grid-scrollbar";
|
|
5
|
-
import { computeColumnStat, formatsNeedingStats, formatNeedsStats, } from "./conditional-formatting";
|
|
6
|
-
import { rawToNumber, } from "./SvGrid.helpers";
|
|
7
|
-
import { createFeatures } from "./features";
|
|
8
|
-
import { createScrollSync, } from "./scroll-sync";
|
|
9
|
-
import { createKeyboard, } from "./keyboard-handlers";
|
|
10
|
-
import { createSummaries, } from "./summaries";
|
|
11
|
-
import { createMenus, } from "./menus";
|
|
12
|
-
import { createCellRender, } from "./cell-render";
|
|
13
|
-
import { createEditing, } from "./editing";
|
|
14
|
-
import { createSelection, } from "./selection";
|
|
15
|
-
import { createColumns, } from "./columns";
|
|
16
|
-
import { createRowDrag, } from "./row-drag";
|
|
17
|
-
import { createAlignedGrids, } from "./aligned-grids";
|
|
18
|
-
import { resolveColumnTypes, } from "./column-types";
|
|
19
|
-
import { computeColumnGroupMeta, hiddenLeavesForCollapse, } from "./column-groups";
|
|
20
|
-
import { resolveColumnId } from "./column-id";
|
|
21
|
-
import { buildAutoGroupColumns, insertGroupFooters, paginateGroupedRows } from "./group-display";
|
|
22
|
-
import { createGridApi, } from "./build-api";
|
|
23
|
-
import { createClipboard, } from "./clipboard";
|
|
24
|
-
import { resolveGridMessages } from "./grid-messages";
|
|
25
|
-
import { announce } from "./a11y/live-region";
|
|
26
|
-
import { filterAnnouncement, selectionAnnouncement, } from "./a11y/grid-announcements";
|
|
27
|
-
import { getPivotEngine, hasPivotEngine } from "./pivot-view.svelte";
|
|
28
|
-
import { filterOperatorOptions, fallbackOperatorOption, TEXT_OPERATORS, NUMBER_OPERATORS, DATE_OPERATORS, CHECKBOX_OPERATORS, operatorOption, operatorsForColumn, defaultOperatorFor, operatorLabelFor, } from "./filter-operators";
|
|
29
|
-
import { isBucketableColumn, buildBuckets, isInBucket, } from "./facet-buckets";
|
|
30
|
-
import { getColumnBaseValue, isGroupRow, toolPanelHeaderLabel, formatSummaryNumeric, getColumnAlign, getPinnedCellValue, getColumnAccessorValue, columnDefMatchesId, } from "./cell-values";
|
|
1
|
+
import { applyGroupAggregate, applyRowPredicate, compileExcelFilter, getAdvancedFilterEngine, normalizeForFilter, createColumnVirtualizer, createCoreRowModel, createExpandedRowModel, createFilteredRowModel, createGroupedRowModel, createTreeRowModel, createSvelteVirtualizer, createSortedRowModel, createSvGrid, getGridCellDomId, sortFns, } from "./index.js";
|
|
2
|
+
import { createRowScrollScaling, resolveMaxDomHeight, } from "./virtualization/scroll-scaling.js";
|
|
3
|
+
import { buildPreMeasureItems } from "./virtualization/virtualizer.js";
|
|
4
|
+
import "./sv-grid-scrollbar.js";
|
|
5
|
+
import { computeColumnStat, formatsNeedingStats, formatNeedsStats, } from "./conditional-formatting.js";
|
|
6
|
+
import { rawToNumber, } from "./SvGrid.helpers.js";
|
|
7
|
+
import { createFeatures } from "./features.js";
|
|
8
|
+
import { createScrollSync, } from "./scroll-sync.js";
|
|
9
|
+
import { createKeyboard, } from "./keyboard-handlers.js";
|
|
10
|
+
import { createSummaries, } from "./summaries.js";
|
|
11
|
+
import { createMenus, } from "./menus.js";
|
|
12
|
+
import { createCellRender, } from "./cell-render.js";
|
|
13
|
+
import { createEditing, } from "./editing.js";
|
|
14
|
+
import { createSelection, } from "./selection.js";
|
|
15
|
+
import { createColumns, } from "./columns.js";
|
|
16
|
+
import { createRowDrag, } from "./row-drag.js";
|
|
17
|
+
import { createAlignedGrids, } from "./aligned-grids.js";
|
|
18
|
+
import { resolveColumnTypes, } from "./column-types.js";
|
|
19
|
+
import { computeColumnGroupMeta, hiddenLeavesForCollapse, } from "./column-groups.js";
|
|
20
|
+
import { resolveColumnId } from "./column-id.js";
|
|
21
|
+
import { buildAutoGroupColumns, insertGroupFooters, paginateGroupedRows } from "./group-display.js";
|
|
22
|
+
import { createGridApi, } from "./build-api.js";
|
|
23
|
+
import { createClipboard, } from "./clipboard.js";
|
|
24
|
+
import { resolveGridMessages } from "./grid-messages.js";
|
|
25
|
+
import { announce } from "./a11y/live-region.js";
|
|
26
|
+
import { filterAnnouncement, selectionAnnouncement, } from "./a11y/grid-announcements.js";
|
|
27
|
+
import { getPivotEngine, hasPivotEngine } from "./pivot-view.svelte.js";
|
|
28
|
+
import { filterOperatorOptions, fallbackOperatorOption, TEXT_OPERATORS, NUMBER_OPERATORS, DATE_OPERATORS, CHECKBOX_OPERATORS, operatorOption, operatorsForColumn, defaultOperatorFor, operatorLabelFor, } from "./filter-operators.js";
|
|
29
|
+
import { isBucketableColumn, buildBuckets, isInBucket, } from "./facet-buckets.js";
|
|
30
|
+
import { getColumnBaseValue, isGroupRow, toolPanelHeaderLabel, formatSummaryNumeric, getColumnAlign, getPinnedCellValue, getColumnAccessorValue, columnDefMatchesId, } from "./cell-values.js";
|
|
31
31
|
import { untrack } from "svelte";
|
|
32
32
|
/**
|
|
33
33
|
* Conservative fallback for the browser's max element height, used during SSR
|
|
@@ -399,7 +399,12 @@ export function createSvGridController(rawProps, domIdBase) {
|
|
|
399
399
|
const showRowSelectionEffective = $derived(props.showRowSelection ??
|
|
400
400
|
((props.selectionMode ?? "both") === "row" ||
|
|
401
401
|
(props.selectionMode ?? "both") === "both"));
|
|
402
|
-
|
|
402
|
+
// `selectable` is the shortcut alias, so it wins over the fine-grained prop,
|
|
403
|
+
// which in turn wins over `selectionMode` - the same precedence the other
|
|
404
|
+
// shortcuts use. Unlike them it starts ON (selectionMode defaults to 'both'),
|
|
405
|
+
// so its real work is `selectable={false}`.
|
|
406
|
+
const enableCellSelectionEffective = $derived(props.selectable ??
|
|
407
|
+
props.enableCellSelection ??
|
|
403
408
|
((props.selectionMode ?? "both") === "cell" ||
|
|
404
409
|
(props.selectionMode ?? "both") === "both"));
|
|
405
410
|
// Internal source-of-truth for data and column defs. Seeded from props and
|
|
@@ -1766,7 +1771,7 @@ export function createSvGridController(rawProps, domIdBase) {
|
|
|
1766
1771
|
let chartEngine = $state(null);
|
|
1767
1772
|
$effect(() => {
|
|
1768
1773
|
if (chartingEnabled && !chartEngine)
|
|
1769
|
-
import("./chart").then((m) => (chartEngine = m.rowsToChartSpec));
|
|
1774
|
+
import("./chart.js").then((m) => (chartEngine = m.rowsToChartSpec));
|
|
1770
1775
|
});
|
|
1771
1776
|
const chartSpec = $derived.by(() => {
|
|
1772
1777
|
if (!chartingEnabled || !chartCfg)
|
|
@@ -2180,7 +2185,50 @@ export function createSvGridController(rawProps, domIdBase) {
|
|
|
2180
2185
|
// before the grid ever appears. Smaller grids compute inline so the
|
|
2181
2186
|
// footer is correct on the first frame (no flicker).
|
|
2182
2187
|
const SUMMARY_DEFER_CELL_LIMIT = 50000;
|
|
2183
|
-
|
|
2188
|
+
/** Deferred summaries for a grid too big to total inline. A grid under the
|
|
2189
|
+
* cell limit is handled by `eagerSummaries` below - synchronously, so the
|
|
2190
|
+
* totals are in the SERVER-rendered footer too. */
|
|
2191
|
+
let deferredSummaries = $state({});
|
|
2192
|
+
/**
|
|
2193
|
+
* The aggregator, handed over once `createSummaries(ctx)` has run - it needs
|
|
2194
|
+
* `ctx`, which cannot exist this early. Held in `$state` so `eagerSummaries`
|
|
2195
|
+
* recomputes when it lands.
|
|
2196
|
+
*
|
|
2197
|
+
* The whole dance is to keep the declaration ABOVE `ctx`: a `$derived`
|
|
2198
|
+
* referenced before its declaration is mis-compiled (the binding is dropped
|
|
2199
|
+
* and the `ctx` getter comes out with an empty body, so the footer read
|
|
2200
|
+
* `undefined` and threw on the first column id).
|
|
2201
|
+
*/
|
|
2202
|
+
let summarize = $state(null);
|
|
2203
|
+
/**
|
|
2204
|
+
* Footer totals for a grid small enough to aggregate inline, derived rather
|
|
2205
|
+
* than assigned from an `$effect`.
|
|
2206
|
+
*
|
|
2207
|
+
* Effects never run during SSR, so when the totals lived only in the effect
|
|
2208
|
+
* the server emitted a summary row of EMPTY cells: the numbers appeared only
|
|
2209
|
+
* after hydration (a visible pop-in), and never at all for a reader with
|
|
2210
|
+
* JavaScript off - while the row still took up space and drew its border.
|
|
2211
|
+
* A `$derived` runs on the server too, so the totals ship with the HTML.
|
|
2212
|
+
*
|
|
2213
|
+
* `null` above the cell limit - that case stays on the rAF-deferred effect,
|
|
2214
|
+
* which keeps a huge grid painting before it totals.
|
|
2215
|
+
*/
|
|
2216
|
+
const eagerSummaries = $derived.by(() => {
|
|
2217
|
+
if (!summarize)
|
|
2218
|
+
return null;
|
|
2219
|
+
if (!(props.enableRowSummaries ?? true))
|
|
2220
|
+
return null;
|
|
2221
|
+
const rows = allRows;
|
|
2222
|
+
const columns = allColumns;
|
|
2223
|
+
if (rows.length * columns.length > SUMMARY_DEFER_CELL_LIMIT)
|
|
2224
|
+
return null;
|
|
2225
|
+
// `computeSummaries` reads `editedCellValues` through `ctx`, so an inline
|
|
2226
|
+
// edit re-runs this too.
|
|
2227
|
+
return summarize(rows, columns);
|
|
2228
|
+
});
|
|
2229
|
+
/** What the footer renders: the inline totals when the grid is small enough,
|
|
2230
|
+
* otherwise the rAF-deferred ones. */
|
|
2231
|
+
const summaryByColumn = $derived(eagerSummaries ?? deferredSummaries);
|
|
2184
2232
|
$effect(() => {
|
|
2185
2233
|
// Re-aggregate whenever the data / columns / edits change. We depend on
|
|
2186
2234
|
// `allRows` / `allColumns` / `editedCellValues` DIRECTLY - not the
|
|
@@ -2194,19 +2242,20 @@ export function createSvGridController(rawProps, domIdBase) {
|
|
|
2194
2242
|
const rows = allRows;
|
|
2195
2243
|
const columns = allColumns;
|
|
2196
2244
|
if (!(props.enableRowSummaries ?? true)) {
|
|
2197
|
-
|
|
2245
|
+
deferredSummaries = {};
|
|
2198
2246
|
return;
|
|
2199
2247
|
}
|
|
2200
2248
|
if (rows.length * columns.length <= SUMMARY_DEFER_CELL_LIMIT ||
|
|
2201
2249
|
typeof requestAnimationFrame === "undefined") {
|
|
2202
|
-
|
|
2250
|
+
// Small enough to total inline - `eagerSummaries` already did, and it
|
|
2251
|
+
// wins in the getter, so there is nothing to recompute here.
|
|
2203
2252
|
return;
|
|
2204
2253
|
}
|
|
2205
2254
|
// Large grid: paint first, total a frame later.
|
|
2206
2255
|
let cancelled = false;
|
|
2207
2256
|
const handle = requestAnimationFrame(() => {
|
|
2208
2257
|
if (!cancelled)
|
|
2209
|
-
|
|
2258
|
+
deferredSummaries = computeSummaries(rows, columns);
|
|
2210
2259
|
});
|
|
2211
2260
|
return () => {
|
|
2212
2261
|
cancelled = true;
|
|
@@ -2409,18 +2458,39 @@ export function createSvGridController(rawProps, domIdBase) {
|
|
|
2409
2458
|
// width/height stays in sync. Always attached (window resize / parent
|
|
2410
2459
|
// layout shift / sidebar collapse can change the size whether the
|
|
2411
2460
|
// consumer passed a numeric or "100%" containerHeight).
|
|
2412
|
-
/** True
|
|
2413
|
-
*
|
|
2414
|
-
*
|
|
2415
|
-
*
|
|
2416
|
-
* scrollbar for ONE frame (based on the base column widths summing
|
|
2417
|
-
*
|
|
2418
|
-
*
|
|
2419
|
-
*
|
|
2461
|
+
/** True once the grid has measured its real container size and `fitColumns`
|
|
2462
|
+
* has had a chance to scale the columns to that width. Gates the scrollbar
|
|
2463
|
+
* visibility, the scrollbar gutter on a trailing right-aligned column and
|
|
2464
|
+
* the top pager: rendering those before this flips paints a horizontal
|
|
2465
|
+
* scrollbar for ONE frame (based on the base column widths summing larger
|
|
2466
|
+
* than the viewport), then immediately hides it once fit scaling kicks in -
|
|
2467
|
+
* visible as a "flashing horizontal scrollbar" every time a demo first
|
|
2468
|
+
* loads. */
|
|
2420
2469
|
let hasMeasured = $state(false);
|
|
2421
2470
|
$effect(() => {
|
|
2422
2471
|
if (!scrollContainer)
|
|
2423
2472
|
return;
|
|
2473
|
+
// Measure SYNCHRONOUSLY here, not just from the observer below. Effects run
|
|
2474
|
+
// after the DOM is in place but before the browser paints, so reading the
|
|
2475
|
+
// container now lets the very first painted frame already carry the
|
|
2476
|
+
// scrollbars, the fit-scaled column widths, the 16px gutter on a trailing
|
|
2477
|
+
// right-aligned column and the top pager (which has a `border-top`).
|
|
2478
|
+
// `observeSizeRaf` has to defer its callback by a frame (or the
|
|
2479
|
+
// ResizeObserver re-notifies within one delivery cycle), so relying on it
|
|
2480
|
+
// alone guarantees one painted frame in the unmeasured state - a visible
|
|
2481
|
+
// flash on EVERY mount, and therefore on every navigation in an app that
|
|
2482
|
+
// recreates the grid (e.g. a `{#key}` around it, or a route that remounts).
|
|
2483
|
+
// `untrack` keeps the writes below from making this effect depend on
|
|
2484
|
+
// `viewportVersion` (it would then re-run and re-attach the observer).
|
|
2485
|
+
untrack(() => {
|
|
2486
|
+
// A zero-height container means the grid is not laid out yet (hidden
|
|
2487
|
+
// ancestor, `display: none`); leave it unmeasured and let the observer
|
|
2488
|
+
// flip it when the box becomes real.
|
|
2489
|
+
if (scrollContainer && scrollContainer.clientHeight > 0) {
|
|
2490
|
+
viewportVersion += 1;
|
|
2491
|
+
hasMeasured = true;
|
|
2492
|
+
}
|
|
2493
|
+
});
|
|
2424
2494
|
return observeSizeRaf(scrollContainer, () => {
|
|
2425
2495
|
viewportVersion += 1;
|
|
2426
2496
|
if (!hasMeasured)
|
|
@@ -3225,7 +3295,6 @@ export function createSvGridController(rawProps, domIdBase) {
|
|
|
3225
3295
|
get computeSummaries() { return computeSummaries; },
|
|
3226
3296
|
get SUMMARY_DEFER_CELL_LIMIT() { return SUMMARY_DEFER_CELL_LIMIT; },
|
|
3227
3297
|
get summaryByColumn() { return summaryByColumn; },
|
|
3228
|
-
set summaryByColumn(v) { summaryByColumn = v; },
|
|
3229
3298
|
get hasMeasured() { return hasMeasured; },
|
|
3230
3299
|
set hasMeasured(v) { hasMeasured = v; },
|
|
3231
3300
|
get scrollBottomArmed() { return scrollBottomArmed; },
|
|
@@ -3379,6 +3448,9 @@ export function createSvGridController(rawProps, domIdBase) {
|
|
|
3379
3448
|
const { showTooltipFor, hideTooltip, flushScheduledScrollSync, scheduleScrollSync, onBodyScroll } = createScrollSync(ctx);
|
|
3380
3449
|
const { onGridKeyDown, onWindowKeydown, onHeaderSortClick } = createKeyboard(ctx);
|
|
3381
3450
|
const { computeSummaries, hasRenderedColumn } = createSummaries(ctx);
|
|
3451
|
+
// Hand the aggregator to `eagerSummaries` (declared above `ctx`, which this
|
|
3452
|
+
// needs). Plain assignment during init - no effect, so SSR gets it too.
|
|
3453
|
+
summarize = computeSummaries;
|
|
3382
3454
|
const { updateFilterRow, updateFilterOperator, updateFilterMenuValue, updateFilterMenuValueTo, addFilterToken, removeFilterToken, toggleFilterToken, toggleCheckboxWithKeyboard, isColumnFiltered, closeMenus, openInSuggest, closeInSuggest, openChooseColumns, openColumnMenu, openFilterMenu, openOperatorMenu, sortColumnFromMenu, clearColumnSort, groupByColumnFromMenu, clearGroupingFromMenu, isFacetChecked, toggleFacetValue, setFacetSelection, setFilterTokens, isAllFacetsChecked, toggleAllFacets, clearColumnFilter, changePage, goToPage, setPageSize, openContextMenu, closeContextMenu, contextMenuItems, saveComment, removeComment, closeCommentEditor } = createMenus(ctx);
|
|
3383
3455
|
const { cellConditionalFormat, computeRowClass, computeCellClass, computeCellTooltip, computeCellValidity, computeCellNote, getColumnEditorOptions, areEditorOptionsLoading, formatListCellValue, formatCellValue, formatPinnedValue, computePinnedCellClass } = createCellRender(ctx);
|
|
3384
3456
|
const { isCellEditable, isCellEditableAt, getRowColumnValue, getCellDisplayValue, startEditingWithChar, startEditing, stopEditing, startFullRowEdit, setFullRowDraft, commitFullRowEdit, cancelFullRowEdit, saveEditingCell, applyHistoryStep, updateEditingCellValue, onEditorKeyDown, commitAndMoveByTab, focusOnMount, onCellDoubleClick, pasteFromClipboard, onGridPaste } = createEditing(ctx);
|