@svgrid/grid 2.6.16 → 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/SvTree.svelte.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export type { TreeNode } from './createTree.svelte';
|
|
2
|
-
import { type EditorDir } from './editor-contract';
|
|
3
|
-
import { type TreeNode, type TreeDropPosition } from './createTree.svelte';
|
|
1
|
+
export type { TreeNode } from './createTree.svelte.js';
|
|
2
|
+
import { type EditorDir } from './editor-contract.js';
|
|
3
|
+
import { type TreeNode, type TreeDropPosition } from './createTree.svelte.js';
|
|
4
4
|
type Props = {
|
|
5
5
|
nodes: ReadonlyArray<TreeNode>;
|
|
6
6
|
/** Selected node id (single-select highlight). */
|
package/dist/SvTreeSelect.svelte
CHANGED
|
@@ -1,235 +1,235 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
export type { TreeSelectNode } from './ui-app.types'
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<script lang="ts">
|
|
6
|
-
/**
|
|
7
|
-
* SvTreeSelect - a single-select dropdown that shows an indented, collapsible
|
|
8
|
-
* tree in its panel (pick a node from a hierarchy). The open / position /
|
|
9
|
-
* dismiss / roving / keyboard / ARIA mechanics come from the shared
|
|
10
|
-
* `createPopoverSelect` core (with ArrowLeft/Right handled via onExtraKey for
|
|
11
|
-
* expand/collapse); this component adds the tree flattening + rendering. Covers
|
|
12
|
-
* the "cascader / tree select" pattern without depending on SvTree.
|
|
13
|
-
*/
|
|
14
|
-
import type { TreeSelectNode } from './ui-app.types'
|
|
15
|
-
import SvField from './SvField.svelte'
|
|
16
|
-
import { editorAria, nextEditorId, type SvEditorProps } from './editor-contract'
|
|
17
|
-
import { portalToBody, popIn } from './popover'
|
|
18
|
-
import { createPopoverSelect } from './createPopoverSelect.svelte'
|
|
19
|
-
import { flattenVisible, findNodePath } from './tree-select'
|
|
20
|
-
|
|
21
|
-
type Props = Pick<
|
|
22
|
-
SvEditorProps,
|
|
23
|
-
'disabled' | 'readonly' | 'label' | 'hint' | 'error' | 'required' | 'invalid' | 'size' | 'id' | 'name' | 'dir' | 'ariaLabel' | 'loading'
|
|
24
|
-
> & {
|
|
25
|
-
nodes: ReadonlyArray<TreeSelectNode>
|
|
26
|
-
value?: string | number | null
|
|
27
|
-
onChange?: (value: string | number) => void
|
|
28
|
-
onCommit?: (value: string | number) => void
|
|
29
|
-
onCancel?: () => void
|
|
30
|
-
placeholder?: string
|
|
31
|
-
showPath?: boolean
|
|
32
|
-
expandedIds?: ReadonlyArray<string | number>
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
let {
|
|
36
|
-
nodes,
|
|
37
|
-
value = $bindable<string | number | null>(null),
|
|
38
|
-
onChange,
|
|
39
|
-
placeholder = 'Select…',
|
|
40
|
-
showPath = false,
|
|
41
|
-
expandedIds = [],
|
|
42
|
-
disabled = false,
|
|
43
|
-
readonly = false,
|
|
44
|
-
label,
|
|
45
|
-
hint,
|
|
46
|
-
error,
|
|
47
|
-
required = false,
|
|
48
|
-
invalid = false,
|
|
49
|
-
size = 'md',
|
|
50
|
-
id,
|
|
51
|
-
name,
|
|
52
|
-
dir,
|
|
53
|
-
ariaLabel,
|
|
54
|
-
loading = false,
|
|
55
|
-
}: Props = $props()
|
|
56
|
-
|
|
57
|
-
const autoId = nextEditorId('sv-ts')
|
|
58
|
-
const uid = $derived(id ?? autoId)
|
|
59
|
-
|
|
60
|
-
let expanded = $state(new Set<string | number>(expandedIds))
|
|
61
|
-
let triggerEl = $state<HTMLButtonElement | null>(null)
|
|
62
|
-
let panelEl = $state<HTMLDivElement | null>(null)
|
|
63
|
-
let treeEl = $state<HTMLUListElement | null>(null)
|
|
64
|
-
|
|
65
|
-
const rows = $derived(flattenVisible(nodes, expanded))
|
|
66
|
-
const selectedPath = $derived(value == null ? null : findNodePath(nodes, value))
|
|
67
|
-
const triggerText = $derived(
|
|
68
|
-
!selectedPath
|
|
69
|
-
? ''
|
|
70
|
-
: showPath
|
|
71
|
-
? selectedPath.map((n) => n.label).join(' / ')
|
|
72
|
-
: selectedPath[selectedPath.length - 1]!.label,
|
|
73
|
-
)
|
|
74
|
-
|
|
75
|
-
function setExpanded(v: string | number, on: boolean) {
|
|
76
|
-
const next = new Set(expanded)
|
|
77
|
-
on ? next.add(v) : next.delete(v)
|
|
78
|
-
expanded = next
|
|
79
|
-
}
|
|
80
|
-
function toggleExpand(v: string | number) {
|
|
81
|
-
setExpanded(v, !expanded.has(v))
|
|
82
|
-
}
|
|
83
|
-
function pick(node: TreeSelectNode) {
|
|
84
|
-
if (node.disabled) return
|
|
85
|
-
value = node.value // enables bind:value
|
|
86
|
-
onChange?.(node.value)
|
|
87
|
-
ts.closePanel()
|
|
88
|
-
}
|
|
89
|
-
function onRowClick(row: { node: TreeSelectNode; hasChildren: boolean }) {
|
|
90
|
-
if (row.hasChildren) toggleExpand(row.node.value)
|
|
91
|
-
else pick(row.node)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const ts = createPopoverSelect({
|
|
95
|
-
itemCount: () => rows.length,
|
|
96
|
-
disabled: (i) => !!rows[i]?.node.disabled,
|
|
97
|
-
readonly: () => readonly,
|
|
98
|
-
onSelect: (i) => { const row = rows[i]; if (row) onRowClick(row) },
|
|
99
|
-
getTrigger: () => triggerEl,
|
|
100
|
-
getPanel: () => panelEl,
|
|
101
|
-
getInitialFocus: () => treeEl,
|
|
102
|
-
closeOnSelect: () => false, // onRowClick handles pick + close (branches stay open)
|
|
103
|
-
initialActive: () => Math.max(0, rows.findIndex((r) => r.node.value === value)),
|
|
104
|
-
minWidth: () => 220,
|
|
105
|
-
estimatedHeight: () => 300,
|
|
106
|
-
onExtraKey: (e, act) => {
|
|
107
|
-
const row = rows[act]
|
|
108
|
-
if (!row) return false
|
|
109
|
-
// "expand" opens the node or steps into the first child; "collapse" closes
|
|
110
|
-
// it or jumps to the parent - same fallback as createTree's core.
|
|
111
|
-
const expand = () => {
|
|
112
|
-
if (row.hasChildren && !row.expanded) setExpanded(row.node.value, true)
|
|
113
|
-
else if (row.hasChildren && row.expanded) ts.active = Math.min(act + 1, rows.length - 1)
|
|
114
|
-
}
|
|
115
|
-
const collapse = () => {
|
|
116
|
-
if (row.hasChildren && row.expanded) setExpanded(row.node.value, false)
|
|
117
|
-
else {
|
|
118
|
-
let pi = act - 1
|
|
119
|
-
while (pi >= 0 && rows[pi]!.depth >= row.depth) pi--
|
|
120
|
-
if (pi >= 0) ts.active = pi
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
if (e.key === 'ArrowRight') { e.preventDefault(); expand(); return true }
|
|
124
|
-
if (e.key === 'ArrowLeft') { e.preventDefault(); collapse(); return true }
|
|
125
|
-
return false
|
|
126
|
-
},
|
|
127
|
-
idPrefix: 'sv-ts',
|
|
128
|
-
})
|
|
129
|
-
</script>
|
|
130
|
-
|
|
131
|
-
<SvField id={uid} {label} {hint} {error} {required} {dir} {loading}>
|
|
132
|
-
<div class="sv-ts sv-ts--{size}" class:is-disabled={disabled}>
|
|
133
|
-
<button
|
|
134
|
-
bind:this={triggerEl}
|
|
135
|
-
type="button"
|
|
136
|
-
class="sv-ts__trigger"
|
|
137
|
-
class:is-invalid={invalid}
|
|
138
|
-
{disabled}
|
|
139
|
-
onclick={() => ts.toggle()}
|
|
140
|
-
{...ts.triggerProps('tree')}
|
|
141
|
-
{...editorAria({ id: uid, invalid, required, error, hint, ariaLabel })}
|
|
142
|
-
>
|
|
143
|
-
<span class="sv-ts__value" class:is-placeholder={!triggerText}>{triggerText || placeholder}</span>
|
|
144
|
-
<span class="sv-ts__arrow" aria-hidden="true">▾</span>
|
|
145
|
-
</button>
|
|
146
|
-
{#if name}<input type="hidden" {name} value={value ?? ''} />{/if}
|
|
147
|
-
</div>
|
|
148
|
-
</SvField>
|
|
149
|
-
|
|
150
|
-
{#if ts.open}
|
|
151
|
-
<div
|
|
152
|
-
bind:this={panelEl}
|
|
153
|
-
class="sv-ts__panel"
|
|
154
|
-
dir={dir}
|
|
155
|
-
use:portalToBody
|
|
156
|
-
use:popIn={{ up: ts.rect.openUpward }}
|
|
157
|
-
style:position="fixed"
|
|
158
|
-
style:top={`${ts.rect.top}px`}
|
|
159
|
-
style:left={`${ts.rect.left}px`}
|
|
160
|
-
style:min-width={`${ts.rect.width}px`}
|
|
161
|
-
>
|
|
162
|
-
<ul
|
|
163
|
-
bind:this={treeEl}
|
|
164
|
-
id={ts.panelId}
|
|
165
|
-
class="sv-ts__tree"
|
|
166
|
-
role="tree"
|
|
167
|
-
aria-label={label ?? ariaLabel ?? 'Tree'}
|
|
168
|
-
aria-activedescendant={ts.activeDescendant()}
|
|
169
|
-
tabindex="0"
|
|
170
|
-
style:max-height={`${ts.rect.maxHeight}px`}
|
|
171
|
-
onkeydown={ts.onPanelKeydown}
|
|
172
|
-
>
|
|
173
|
-
{#each rows as row, i (row.node.value)}
|
|
174
|
-
<li
|
|
175
|
-
class="sv-ts__row"
|
|
176
|
-
class:is-active={ts.isActive(i)}
|
|
177
|
-
class:is-selected={row.node.value === value}
|
|
178
|
-
class:is-disabled={row.node.disabled}
|
|
179
|
-
role="treeitem"
|
|
180
|
-
aria-selected={row.node.value === value}
|
|
181
|
-
aria-expanded={row.hasChildren ? row.expanded : undefined}
|
|
182
|
-
style:padding-inline-start={`${8 + row.depth * 16}px`}
|
|
183
|
-
onclick={() => onRowClick(row)}
|
|
184
|
-
{...ts.itemProps(i)}
|
|
185
|
-
>
|
|
186
|
-
{#if row.hasChildren}
|
|
187
|
-
<!-- Same chevron as SvTree and the grid's expanders. -->
|
|
188
|
-
<span class="sv-ts__chev" class:is-open={row.expanded} aria-hidden="true">
|
|
189
|
-
<svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor"
|
|
190
|
-
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6" /></svg>
|
|
191
|
-
</span>
|
|
192
|
-
{:else}
|
|
193
|
-
<span class="sv-ts__chev sv-ts__chev--leaf" aria-hidden="true"></span>
|
|
194
|
-
{/if}
|
|
195
|
-
<span class="sv-ts__label">{row.node.label}</span>
|
|
196
|
-
</li>
|
|
197
|
-
{/each}
|
|
198
|
-
</ul>
|
|
199
|
-
</div>
|
|
200
|
-
{/if}
|
|
201
|
-
|
|
202
|
-
<style>
|
|
203
|
-
.sv-ts { --_accent: var(--sg-accent, #2563eb); display: inline-flex; width: 240px; }
|
|
204
|
-
.sv-ts.is-disabled { opacity: 0.6; }
|
|
205
|
-
.sv-ts__trigger {
|
|
206
|
-
flex: 1; min-width: 0; display: flex; align-items: center; gap: 6px; text-align: start;
|
|
207
|
-
background: var(--sg-input-bg, #fff); color: var(--sg-fg, #0f172a);
|
|
208
|
-
border: 1px solid var(--sg-input-border, var(--sg-border, #cbd5e1)); border-radius: var(--sg-radius, 8px);
|
|
209
|
-
font: inherit; cursor: pointer; padding: 0 9px;
|
|
210
|
-
}
|
|
211
|
-
.sv-ts--sm .sv-ts__trigger { height: 28px; font-size: 12px; }
|
|
212
|
-
.sv-ts--md .sv-ts__trigger { height: 34px; font-size: 13px; }
|
|
213
|
-
.sv-ts--lg .sv-ts__trigger { height: 40px; font-size: 15px; }
|
|
214
|
-
.sv-ts__trigger:focus-visible { outline: none; border-color: var(--_accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--_accent) 22%, transparent); }
|
|
215
|
-
.sv-ts__trigger.is-invalid { border-color: var(--sg-danger, #dc2626); }
|
|
216
|
-
.sv-ts__value { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
217
|
-
.sv-ts__value.is-placeholder { color: var(--sg-muted, #94a3b8); }
|
|
218
|
-
.sv-ts__arrow { color: var(--sg-muted, #64748b); font-size: 10px; }
|
|
219
|
-
|
|
220
|
-
:global(.sv-ts__panel) {
|
|
221
|
-
z-index: 2147483646; max-height: 320px; max-width: 92vw; overflow: hidden;
|
|
222
|
-
background: var(--sg-bg, #fff); color: var(--sg-fg, #0f172a);
|
|
223
|
-
border: 1px solid var(--sg-border, #e2e8f0); border-radius: 10px;
|
|
224
|
-
box-shadow: 0 16px 48px -12px rgba(15, 23, 42, 0.35); font-size: 13px;
|
|
225
|
-
}
|
|
226
|
-
:global(.sv-ts__tree) { list-style: none; margin: 0; padding: 4px; overflow: auto; max-height: 320px; outline: none; }
|
|
227
|
-
:global(.sv-ts__row) { display: flex; align-items: center; gap: 4px; padding: 6px 8px; border-radius: 6px; cursor: pointer; }
|
|
228
|
-
:global(.sv-ts__row.is-active) { background: var(--sg-row-hover-bg, #f1f5f9); }
|
|
229
|
-
:global(.sv-ts__row.is-selected) { color: var(--sg-accent, #2563eb); font-weight: 600; }
|
|
230
|
-
:global(.sv-ts__row.is-disabled) { opacity: 0.5; cursor: not-allowed; }
|
|
231
|
-
:global(.sv-ts__chev) { width: 14px; flex: none; display: inline-flex; align-items: center; justify-content: center; color: var(--sg-muted, #64748b); transition: transform 0.12s; }
|
|
232
|
-
:global(.sv-ts__chev.is-open) { transform: rotate(90deg); }
|
|
233
|
-
:global(.sv-ts__chev--leaf) { visibility: hidden; }
|
|
234
|
-
:global(.sv-ts__label) { flex: 1; white-space: nowrap; }
|
|
235
|
-
</style>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
export type { TreeSelectNode } from './ui-app.types'
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script lang="ts">
|
|
6
|
+
/**
|
|
7
|
+
* SvTreeSelect - a single-select dropdown that shows an indented, collapsible
|
|
8
|
+
* tree in its panel (pick a node from a hierarchy). The open / position /
|
|
9
|
+
* dismiss / roving / keyboard / ARIA mechanics come from the shared
|
|
10
|
+
* `createPopoverSelect` core (with ArrowLeft/Right handled via onExtraKey for
|
|
11
|
+
* expand/collapse); this component adds the tree flattening + rendering. Covers
|
|
12
|
+
* the "cascader / tree select" pattern without depending on SvTree.
|
|
13
|
+
*/
|
|
14
|
+
import type { TreeSelectNode } from './ui-app.types'
|
|
15
|
+
import SvField from './SvField.svelte'
|
|
16
|
+
import { editorAria, nextEditorId, type SvEditorProps } from './editor-contract'
|
|
17
|
+
import { portalToBody, popIn } from './popover'
|
|
18
|
+
import { createPopoverSelect } from './createPopoverSelect.svelte'
|
|
19
|
+
import { flattenVisible, findNodePath } from './tree-select'
|
|
20
|
+
|
|
21
|
+
type Props = Pick<
|
|
22
|
+
SvEditorProps,
|
|
23
|
+
'disabled' | 'readonly' | 'label' | 'hint' | 'error' | 'required' | 'invalid' | 'size' | 'id' | 'name' | 'dir' | 'ariaLabel' | 'loading'
|
|
24
|
+
> & {
|
|
25
|
+
nodes: ReadonlyArray<TreeSelectNode>
|
|
26
|
+
value?: string | number | null
|
|
27
|
+
onChange?: (value: string | number) => void
|
|
28
|
+
onCommit?: (value: string | number) => void
|
|
29
|
+
onCancel?: () => void
|
|
30
|
+
placeholder?: string
|
|
31
|
+
showPath?: boolean
|
|
32
|
+
expandedIds?: ReadonlyArray<string | number>
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
let {
|
|
36
|
+
nodes,
|
|
37
|
+
value = $bindable<string | number | null>(null),
|
|
38
|
+
onChange,
|
|
39
|
+
placeholder = 'Select…',
|
|
40
|
+
showPath = false,
|
|
41
|
+
expandedIds = [],
|
|
42
|
+
disabled = false,
|
|
43
|
+
readonly = false,
|
|
44
|
+
label,
|
|
45
|
+
hint,
|
|
46
|
+
error,
|
|
47
|
+
required = false,
|
|
48
|
+
invalid = false,
|
|
49
|
+
size = 'md',
|
|
50
|
+
id,
|
|
51
|
+
name,
|
|
52
|
+
dir,
|
|
53
|
+
ariaLabel,
|
|
54
|
+
loading = false,
|
|
55
|
+
}: Props = $props()
|
|
56
|
+
|
|
57
|
+
const autoId = nextEditorId('sv-ts')
|
|
58
|
+
const uid = $derived(id ?? autoId)
|
|
59
|
+
|
|
60
|
+
let expanded = $state(new Set<string | number>(expandedIds))
|
|
61
|
+
let triggerEl = $state<HTMLButtonElement | null>(null)
|
|
62
|
+
let panelEl = $state<HTMLDivElement | null>(null)
|
|
63
|
+
let treeEl = $state<HTMLUListElement | null>(null)
|
|
64
|
+
|
|
65
|
+
const rows = $derived(flattenVisible(nodes, expanded))
|
|
66
|
+
const selectedPath = $derived(value == null ? null : findNodePath(nodes, value))
|
|
67
|
+
const triggerText = $derived(
|
|
68
|
+
!selectedPath
|
|
69
|
+
? ''
|
|
70
|
+
: showPath
|
|
71
|
+
? selectedPath.map((n) => n.label).join(' / ')
|
|
72
|
+
: selectedPath[selectedPath.length - 1]!.label,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
function setExpanded(v: string | number, on: boolean) {
|
|
76
|
+
const next = new Set(expanded)
|
|
77
|
+
on ? next.add(v) : next.delete(v)
|
|
78
|
+
expanded = next
|
|
79
|
+
}
|
|
80
|
+
function toggleExpand(v: string | number) {
|
|
81
|
+
setExpanded(v, !expanded.has(v))
|
|
82
|
+
}
|
|
83
|
+
function pick(node: TreeSelectNode) {
|
|
84
|
+
if (node.disabled) return
|
|
85
|
+
value = node.value // enables bind:value
|
|
86
|
+
onChange?.(node.value)
|
|
87
|
+
ts.closePanel()
|
|
88
|
+
}
|
|
89
|
+
function onRowClick(row: { node: TreeSelectNode; hasChildren: boolean }) {
|
|
90
|
+
if (row.hasChildren) toggleExpand(row.node.value)
|
|
91
|
+
else pick(row.node)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const ts = createPopoverSelect({
|
|
95
|
+
itemCount: () => rows.length,
|
|
96
|
+
disabled: (i) => !!rows[i]?.node.disabled,
|
|
97
|
+
readonly: () => readonly,
|
|
98
|
+
onSelect: (i) => { const row = rows[i]; if (row) onRowClick(row) },
|
|
99
|
+
getTrigger: () => triggerEl,
|
|
100
|
+
getPanel: () => panelEl,
|
|
101
|
+
getInitialFocus: () => treeEl,
|
|
102
|
+
closeOnSelect: () => false, // onRowClick handles pick + close (branches stay open)
|
|
103
|
+
initialActive: () => Math.max(0, rows.findIndex((r) => r.node.value === value)),
|
|
104
|
+
minWidth: () => 220,
|
|
105
|
+
estimatedHeight: () => 300,
|
|
106
|
+
onExtraKey: (e, act) => {
|
|
107
|
+
const row = rows[act]
|
|
108
|
+
if (!row) return false
|
|
109
|
+
// "expand" opens the node or steps into the first child; "collapse" closes
|
|
110
|
+
// it or jumps to the parent - same fallback as createTree's core.
|
|
111
|
+
const expand = () => {
|
|
112
|
+
if (row.hasChildren && !row.expanded) setExpanded(row.node.value, true)
|
|
113
|
+
else if (row.hasChildren && row.expanded) ts.active = Math.min(act + 1, rows.length - 1)
|
|
114
|
+
}
|
|
115
|
+
const collapse = () => {
|
|
116
|
+
if (row.hasChildren && row.expanded) setExpanded(row.node.value, false)
|
|
117
|
+
else {
|
|
118
|
+
let pi = act - 1
|
|
119
|
+
while (pi >= 0 && rows[pi]!.depth >= row.depth) pi--
|
|
120
|
+
if (pi >= 0) ts.active = pi
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (e.key === 'ArrowRight') { e.preventDefault(); expand(); return true }
|
|
124
|
+
if (e.key === 'ArrowLeft') { e.preventDefault(); collapse(); return true }
|
|
125
|
+
return false
|
|
126
|
+
},
|
|
127
|
+
idPrefix: 'sv-ts',
|
|
128
|
+
})
|
|
129
|
+
</script>
|
|
130
|
+
|
|
131
|
+
<SvField id={uid} {label} {hint} {error} {required} {dir} {loading}>
|
|
132
|
+
<div class="sv-ts sv-ts--{size}" class:is-disabled={disabled}>
|
|
133
|
+
<button
|
|
134
|
+
bind:this={triggerEl}
|
|
135
|
+
type="button"
|
|
136
|
+
class="sv-ts__trigger"
|
|
137
|
+
class:is-invalid={invalid}
|
|
138
|
+
{disabled}
|
|
139
|
+
onclick={() => ts.toggle()}
|
|
140
|
+
{...ts.triggerProps('tree')}
|
|
141
|
+
{...editorAria({ id: uid, invalid, required, error, hint, ariaLabel })}
|
|
142
|
+
>
|
|
143
|
+
<span class="sv-ts__value" class:is-placeholder={!triggerText}>{triggerText || placeholder}</span>
|
|
144
|
+
<span class="sv-ts__arrow" aria-hidden="true">▾</span>
|
|
145
|
+
</button>
|
|
146
|
+
{#if name}<input type="hidden" {name} value={value ?? ''} />{/if}
|
|
147
|
+
</div>
|
|
148
|
+
</SvField>
|
|
149
|
+
|
|
150
|
+
{#if ts.open}
|
|
151
|
+
<div
|
|
152
|
+
bind:this={panelEl}
|
|
153
|
+
class="sv-ts__panel"
|
|
154
|
+
dir={dir}
|
|
155
|
+
use:portalToBody
|
|
156
|
+
use:popIn={{ up: ts.rect.openUpward }}
|
|
157
|
+
style:position="fixed"
|
|
158
|
+
style:top={`${ts.rect.top}px`}
|
|
159
|
+
style:left={`${ts.rect.left}px`}
|
|
160
|
+
style:min-width={`${ts.rect.width}px`}
|
|
161
|
+
>
|
|
162
|
+
<ul
|
|
163
|
+
bind:this={treeEl}
|
|
164
|
+
id={ts.panelId}
|
|
165
|
+
class="sv-ts__tree"
|
|
166
|
+
role="tree"
|
|
167
|
+
aria-label={label ?? ariaLabel ?? 'Tree'}
|
|
168
|
+
aria-activedescendant={ts.activeDescendant()}
|
|
169
|
+
tabindex="0"
|
|
170
|
+
style:max-height={`${ts.rect.maxHeight}px`}
|
|
171
|
+
onkeydown={ts.onPanelKeydown}
|
|
172
|
+
>
|
|
173
|
+
{#each rows as row, i (row.node.value)}
|
|
174
|
+
<li
|
|
175
|
+
class="sv-ts__row"
|
|
176
|
+
class:is-active={ts.isActive(i)}
|
|
177
|
+
class:is-selected={row.node.value === value}
|
|
178
|
+
class:is-disabled={row.node.disabled}
|
|
179
|
+
role="treeitem"
|
|
180
|
+
aria-selected={row.node.value === value}
|
|
181
|
+
aria-expanded={row.hasChildren ? row.expanded : undefined}
|
|
182
|
+
style:padding-inline-start={`${8 + row.depth * 16}px`}
|
|
183
|
+
onclick={() => onRowClick(row)}
|
|
184
|
+
{...ts.itemProps(i)}
|
|
185
|
+
>
|
|
186
|
+
{#if row.hasChildren}
|
|
187
|
+
<!-- Same chevron as SvTree and the grid's expanders. -->
|
|
188
|
+
<span class="sv-ts__chev" class:is-open={row.expanded} aria-hidden="true">
|
|
189
|
+
<svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor"
|
|
190
|
+
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6" /></svg>
|
|
191
|
+
</span>
|
|
192
|
+
{:else}
|
|
193
|
+
<span class="sv-ts__chev sv-ts__chev--leaf" aria-hidden="true"></span>
|
|
194
|
+
{/if}
|
|
195
|
+
<span class="sv-ts__label">{row.node.label}</span>
|
|
196
|
+
</li>
|
|
197
|
+
{/each}
|
|
198
|
+
</ul>
|
|
199
|
+
</div>
|
|
200
|
+
{/if}
|
|
201
|
+
|
|
202
|
+
<style>
|
|
203
|
+
.sv-ts { --_accent: var(--sg-accent, #2563eb); display: inline-flex; width: 240px; }
|
|
204
|
+
.sv-ts.is-disabled { opacity: 0.6; }
|
|
205
|
+
.sv-ts__trigger {
|
|
206
|
+
flex: 1; min-width: 0; display: flex; align-items: center; gap: 6px; text-align: start;
|
|
207
|
+
background: var(--sg-input-bg, #fff); color: var(--sg-fg, #0f172a);
|
|
208
|
+
border: 1px solid var(--sg-input-border, var(--sg-border, #cbd5e1)); border-radius: var(--sg-radius, 8px);
|
|
209
|
+
font: inherit; cursor: pointer; padding: 0 9px;
|
|
210
|
+
}
|
|
211
|
+
.sv-ts--sm .sv-ts__trigger { height: 28px; font-size: 12px; }
|
|
212
|
+
.sv-ts--md .sv-ts__trigger { height: 34px; font-size: 13px; }
|
|
213
|
+
.sv-ts--lg .sv-ts__trigger { height: 40px; font-size: 15px; }
|
|
214
|
+
.sv-ts__trigger:focus-visible { outline: none; border-color: var(--_accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--_accent) 22%, transparent); }
|
|
215
|
+
.sv-ts__trigger.is-invalid { border-color: var(--sg-danger, #dc2626); }
|
|
216
|
+
.sv-ts__value { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
217
|
+
.sv-ts__value.is-placeholder { color: var(--sg-muted, #94a3b8); }
|
|
218
|
+
.sv-ts__arrow { color: var(--sg-muted, #64748b); font-size: 10px; }
|
|
219
|
+
|
|
220
|
+
:global(.sv-ts__panel) {
|
|
221
|
+
z-index: 2147483646; max-height: 320px; max-width: 92vw; overflow: hidden;
|
|
222
|
+
background: var(--sg-bg, #fff); color: var(--sg-fg, #0f172a);
|
|
223
|
+
border: 1px solid var(--sg-border, #e2e8f0); border-radius: 10px;
|
|
224
|
+
box-shadow: 0 16px 48px -12px rgba(15, 23, 42, 0.35); font-size: 13px;
|
|
225
|
+
}
|
|
226
|
+
:global(.sv-ts__tree) { list-style: none; margin: 0; padding: 4px; overflow: auto; max-height: 320px; outline: none; }
|
|
227
|
+
:global(.sv-ts__row) { display: flex; align-items: center; gap: 4px; padding: 6px 8px; border-radius: 6px; cursor: pointer; }
|
|
228
|
+
:global(.sv-ts__row.is-active) { background: var(--sg-row-hover-bg, #f1f5f9); }
|
|
229
|
+
:global(.sv-ts__row.is-selected) { color: var(--sg-accent, #2563eb); font-weight: 600; }
|
|
230
|
+
:global(.sv-ts__row.is-disabled) { opacity: 0.5; cursor: not-allowed; }
|
|
231
|
+
:global(.sv-ts__chev) { width: 14px; flex: none; display: inline-flex; align-items: center; justify-content: center; color: var(--sg-muted, #64748b); transition: transform 0.12s; }
|
|
232
|
+
:global(.sv-ts__chev.is-open) { transform: rotate(90deg); }
|
|
233
|
+
:global(.sv-ts__chev--leaf) { visibility: hidden; }
|
|
234
|
+
:global(.sv-ts__label) { flex: 1; white-space: nowrap; }
|
|
235
|
+
</style>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { TreeSelectNode } from './ui-app.types';
|
|
1
|
+
export type { TreeSelectNode } from './ui-app.types.js';
|
|
2
2
|
/**
|
|
3
3
|
* SvTreeSelect - a single-select dropdown that shows an indented, collapsible
|
|
4
4
|
* tree in its panel (pick a node from a hierarchy). The open / position /
|
|
@@ -7,8 +7,8 @@ export type { TreeSelectNode } from './ui-app.types';
|
|
|
7
7
|
* expand/collapse); this component adds the tree flattening + rendering. Covers
|
|
8
8
|
* the "cascader / tree select" pattern without depending on SvTree.
|
|
9
9
|
*/
|
|
10
|
-
import type { TreeSelectNode } from './ui-app.types';
|
|
11
|
-
import { type SvEditorProps } from './editor-contract';
|
|
10
|
+
import type { TreeSelectNode } from './ui-app.types.js';
|
|
11
|
+
import { type SvEditorProps } from './editor-contract.js';
|
|
12
12
|
type Props = Pick<SvEditorProps, 'disabled' | 'readonly' | 'label' | 'hint' | 'error' | 'required' | 'invalid' | 'size' | 'id' | 'name' | 'dir' | 'ariaLabel' | 'loading'> & {
|
|
13
13
|
nodes: ReadonlyArray<TreeSelectNode>;
|
|
14
14
|
value?: string | number | null;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Same shape as `pivot-view.svelte.ts`: a module-level `$state` holder with a
|
|
6
6
|
* register / get / has triple, so the free package carries no commercial code.
|
|
7
7
|
*/
|
|
8
|
-
import type { GridPredicateExpr } from './filtering/predicate-expr';
|
|
8
|
+
import type { GridPredicateExpr } from './filtering/predicate-expr.js';
|
|
9
9
|
/** What the engine needs in order to compile an expression into a predicate. */
|
|
10
10
|
export type AdvancedFilterCompileContext<TRow> = {
|
|
11
11
|
/**
|
package/dist/ai.d.ts
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* client and do nothing until you register a provider with `setAIProvider(...)`,
|
|
25
25
|
* so they add nothing to the base bundle unless you actually use them.
|
|
26
26
|
*/
|
|
27
|
-
import type { RowData, SvGridApi, TableFeatures } from './index';
|
|
27
|
+
import type { RowData, SvGridApi, TableFeatures } from './index.js';
|
|
28
28
|
type ExportFormat = 'xlsx' | 'xls' | 'pdf' | 'csv' | 'tsv' | 'html' | 'json' | 'xml' | 'md';
|
|
29
29
|
/**
|
|
30
30
|
* Shape every consumer-provided model adapter must implement. Keeping this
|
package/dist/ai.js
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* client and do nothing until you register a provider with `setAIProvider(...)`,
|
|
25
25
|
* so they add nothing to the base bundle unless you actually use them.
|
|
26
26
|
*/
|
|
27
|
-
import { getExportProvider } from './export-provider';
|
|
27
|
+
import { getExportProvider } from './export-provider.js';
|
|
28
28
|
let provider = null;
|
|
29
29
|
/**
|
|
30
30
|
* Register the model adapter every AI call will route through. Call once
|
package/dist/build-api.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type RowData, type SvGridApi, type TableFeatures } from "./index";
|
|
2
|
-
import "./sv-grid-scrollbar";
|
|
1
|
+
import { type RowData, type SvGridApi, type TableFeatures } from "./index.js";
|
|
2
|
+
import "./sv-grid-scrollbar.js";
|
|
3
3
|
export declare function createGridApi<TFeatures extends TableFeatures = TableFeatures, TData extends RowData = RowData>(ctx: any): {
|
|
4
4
|
buildApi: () => SvGridApi<TFeatures, TData>;
|
|
5
5
|
};
|
package/dist/build-api.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "./sv-grid-scrollbar";
|
|
1
|
+
import "./sv-grid-scrollbar.js";
|
|
2
2
|
import { untrack } from "svelte";
|
|
3
|
-
import { isGroupRow, getColumnAlign, columnDefMatchesId, } from "./cell-values";
|
|
4
|
-
import { hasAdvancedFilterEngine } from "./advanced-filter.svelte";
|
|
3
|
+
import { isGroupRow, getColumnAlign, columnDefMatchesId, } from "./cell-values.js";
|
|
4
|
+
import { hasAdvancedFilterEngine } from "./advanced-filter.svelte.js";
|
|
5
5
|
export function createGridApi(ctx) {
|
|
6
6
|
function buildApi() {
|
|
7
7
|
const findColumn = (columnId) => ctx.grid.getAllColumns().find((column) => column.id === columnId);
|
|
@@ -31,7 +31,7 @@ export function createGridApi(ctx) {
|
|
|
31
31
|
return out;
|
|
32
32
|
};
|
|
33
33
|
const projectForExport = async (scope, columns, rawValues) => {
|
|
34
|
-
const { projectGridRows } = await import("./export-format");
|
|
34
|
+
const { projectGridRows } = await import("./export-format.js");
|
|
35
35
|
return projectGridRows(exportScopeRows(scope), exportColumns(), { columns, rawValues });
|
|
36
36
|
};
|
|
37
37
|
return {
|
|
@@ -438,7 +438,7 @@ export function createGridApi(ctx) {
|
|
|
438
438
|
},
|
|
439
439
|
// ---- Free data export (CSV / TSV / JSON + clipboard) -----------------
|
|
440
440
|
async exportCsv(options = {}) {
|
|
441
|
-
const { serializeDelimited, downloadTextFile } = await import("./export-format");
|
|
441
|
+
const { serializeDelimited, downloadTextFile } = await import("./export-format.js");
|
|
442
442
|
const { records, fields } = await projectForExport(options.rows ?? "displayed", options.columns, options.rawValues);
|
|
443
443
|
const text = await serializeDelimited(records, fields, {
|
|
444
444
|
csv: { delimiter: ",", bom: options.bom ?? true },
|
|
@@ -450,7 +450,7 @@ export function createGridApi(ctx) {
|
|
|
450
450
|
return text;
|
|
451
451
|
},
|
|
452
452
|
async exportTsv(options = {}) {
|
|
453
|
-
const { serializeDelimited, downloadTextFile } = await import("./export-format");
|
|
453
|
+
const { serializeDelimited, downloadTextFile } = await import("./export-format.js");
|
|
454
454
|
const { records, fields } = await projectForExport(options.rows ?? "displayed", options.columns, options.rawValues);
|
|
455
455
|
const text = await serializeDelimited(records, fields, {
|
|
456
456
|
csv: { delimiter: "\t", bom: options.bom ?? true },
|
|
@@ -462,7 +462,7 @@ export function createGridApi(ctx) {
|
|
|
462
462
|
return text;
|
|
463
463
|
},
|
|
464
464
|
async exportJson(options = {}) {
|
|
465
|
-
const { serializeJson, downloadTextFile } = await import("./export-format");
|
|
465
|
+
const { serializeJson, downloadTextFile } = await import("./export-format.js");
|
|
466
466
|
const { records, fields } = await projectForExport(options.rows ?? "displayed", options.columns, options.rawValues);
|
|
467
467
|
const text = await serializeJson(records, fields, {
|
|
468
468
|
signal: options.signal,
|
|
@@ -473,7 +473,7 @@ export function createGridApi(ctx) {
|
|
|
473
473
|
return text;
|
|
474
474
|
},
|
|
475
475
|
async copyToClipboard(options = {}) {
|
|
476
|
-
const { serializeDelimited, serializeMarkdown, copyTextToClipboard } = await import("./export-format");
|
|
476
|
+
const { serializeDelimited, serializeMarkdown, copyTextToClipboard } = await import("./export-format.js");
|
|
477
477
|
const { records, fields, align } = await projectForExport(options.rows ?? "displayed", options.columns, options.rawValues);
|
|
478
478
|
const format = options.format ?? "tsv";
|
|
479
479
|
const text = format === "markdown"
|
package/dist/builtin-editors.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Kn as e, co as t, so as n } from "./src-
|
|
1
|
+
import { Kn as e, co as t, so as n } from "./src-D79V6bCA.js";
|
|
2
2
|
import { E as r, F as i, G as a, H as o, I as s, L as c, N as l, Q as u, U as d, V as f, X as p, Y as m, Z as h, _ as g, d as _, et as v, f as y, ft as b, g as x, h as S, j as C, k as w, lt as T, m as E, mt as D, nt as O, o as k, pt as A, st as j, t as M, tt as N, u as P, ut as F, v as I } from "./disclose-version-Dr7rEVv-.js";
|
|
3
3
|
import { b as ee } from "./editor-registry-CiI0xlKg.js";
|
|
4
|
-
import { l as te } from "./SvDateTimePicker-
|
|
4
|
+
import { l as te } from "./SvDateTimePicker-h9kPyszT.js";
|
|
5
5
|
//#region src/GridMenus.svelte
|
|
6
6
|
var ne = c("<option> </option>"), re = c("<input class=\"sv-grid-menu-condition-value\" placeholder=\"To\"/>"), ie = c("<option> </option>"), ae = c("<input class=\"sv-grid-menu-condition-value\" placeholder=\"To\"/>"), oe = c("<input class=\"sv-grid-menu-condition-value\"/> <!>", 1), se = c("<div class=\"sv-grid-menu-join\" role=\"radiogroup\" aria-label=\"Combine conditions\"><button type=\"button\">AND</button> <button type=\"button\">OR</button> <button type=\"button\" class=\"sv-grid-menu-join-x\" title=\"Remove second condition\" aria-label=\"Remove second condition\">×</button></div> <select class=\"sv-grid-menu-operator-select\" aria-label=\"Second filter condition\"></select> <!>", 1), ce = c("<button type=\"button\" class=\"sv-grid-menu-add-cond\">+ Add condition</button>"), le = c("<input class=\"sv-grid-menu-condition-value\"/> <!> <!>", 1), ue = c("<div class=\"sv-grid-facet-empty\">No values</div>"), de = c("<div class=\"sv-grid-facet-note\"> </div>"), fe = c("<div class=\"sv-grid-menu-filter\"><div class=\"sv-grid-menu-filter-head\"><span class=\"sv-grid-header-icon\"><!></span> Filter\n condition</div> <select class=\"sv-grid-menu-operator-select\" aria-label=\"Filter condition\"></select> <!> <div class=\"sv-grid-menu-sep\"></div> <div class=\"sv-grid-menu-filter-head\">Values</div> <input class=\"sv-grid-menu-search\" placeholder=\"Search values...\"/> <label class=\"sv-grid-facet sv-grid-facet-all\"><input type=\"checkbox\"/> <span class=\"sv-grid-facet-label\">(Select all)</span></label> <!> <!> <div class=\"sv-grid-menu-actions\"><button type=\"button\" class=\"sv-grid-menu-btn\">Clear filter</button> <button type=\"button\" class=\"sv-grid-menu-btn sv-grid-menu-btn-primary\">Done</button></div></div>"), pe = c("<div role=\"tooltip\"> </div>"), me = c("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div>"), L = c("<button type=\"button\" role=\"tab\">Filter</button>"), R = c("<div class=\"sv-grid-menu-tabs\" role=\"tablist\"><button type=\"button\" role=\"tab\">General</button> <!> <button type=\"button\" role=\"tab\">Columns</button></div>"), z = c("<div class=\"sv-grid-menu-filter-head\">Visible columns</div> <!>", 1), he = c("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Sort\n ascending</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Sort\n descending</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Remove sort</button>", 1), ge = c("<div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Pin to left</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Pin to right</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Unpin column</button>", 1), _e = c("<div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Group\n by this column</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Remove grouping</button>", 1), ve = c("<button type=\"button\" role=\"menuitem\" aria-haspopup=\"menu\"><span class=\"sv-grid-header-icon\"><!></span> Choose columns <span class=\"sv-grid-header-icon sv-grid-menu-item-chevron\"><!></span></button>"), ye = c("<!> <!> <div class=\"sv-grid-menu-sep\"></div> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Autosize\n this column</button> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Autosize\n all columns</button> <!> <div class=\"sv-grid-menu-sep\"></div> <!> <button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"><span class=\"sv-grid-header-icon\"><!></span> Reset columns</button>", 1), be = c("<div class=\"sv-grid-menu sv-grid-column-menu\" role=\"menu\"><!> <!></div>"), B = c("<div class=\"sv-grid-menu sv-grid-filter-menu\" role=\"menu\"><!></div>"), xe = c("<div class=\"sv-grid-menu sv-grid-choose-columns-menu\" role=\"menu\"><div class=\"sv-grid-menu-filter-head\">Visible columns</div> <!></div>"), Se = c("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitemradio\"><span class=\"sv-grid-header-icon\"><!></span> </button>"), Ce = c("<div class=\"sv-grid-menu sv-grid-operator-menu\" role=\"menu\"></div>"), we = c("<div class=\"sv-grid-facet-empty\">No values</div>"), Te = c("<div class=\"sv-grid-menu sv-grid-in-suggest\"><!></div>"), Ee = c("<div class=\"sv-grid-menu-sep\"></div>"), De = c("<button type=\"button\" class=\"sv-grid-menu-item\" role=\"menuitem\"> </button>"), Oe = c("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div> <div class=\"sv-grid-menu sv-grid-context-menu\" role=\"menu\"></div>", 1), ke = c("<div class=\"sv-grid-menu-backdrop\" role=\"presentation\"></div> <div class=\"sv-grid-menu sv-grid-comment-editor\" role=\"dialog\" aria-label=\"Edit comment\"><textarea class=\"sv-grid-comment-textarea\" rows=\"3\" placeholder=\"Add a comment…\"></textarea> <div class=\"sv-grid-comment-actions\"><button type=\"button\" class=\"sv-grid-comment-remove\">Remove</button> <span class=\"sv-grid-comment-spacer\"></span> <button type=\"button\" class=\"sv-grid-comment-cancel\">Cancel</button> <button type=\"button\" class=\"sv-grid-comment-save\">Save</button></div></div>", 1), Ae = c("<!> <!> <!> <!> <!> <!> <!> <!> <!>", 1);
|
|
7
7
|
function V(c, f) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Kn as e, co as t, so as n } from "./src-
|
|
1
|
+
import { Kn as e, co as t, so as n } from "./src-DMZZVVFd.js";
|
|
2
2
|
import { b as r } from "./editor-registry-CiI0xlKg.js";
|
|
3
|
-
import { l as i } from "./SvDateTimePicker-
|
|
3
|
+
import { l as i } from "./SvDateTimePicker-DSUhIta8.js";
|
|
4
4
|
import * as a from "svelte/internal/client";
|
|
5
5
|
import "svelte/internal/disclose-version";
|
|
6
6
|
//#region src/GridMenus.svelte
|