@veltra/desktop 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/action/action-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/action/action.js.map +1 -1
- package/dist/components/auto-complete/auto-complete.js.map +1 -1
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/badge/style.d.ts +1 -1
- package/dist/components/batch-edit/batch-edit-form.js +8 -12
- package/dist/components/batch-edit/batch-edit-form.js.map +1 -1
- package/dist/components/batch-edit/batch-edit-list.js.map +1 -1
- package/dist/components/batch-edit/batch-edit.js +2 -1
- package/dist/components/batch-edit/batch-edit.js.map +1 -1
- package/dist/components/batch-edit/di.js.map +1 -1
- package/dist/components/batch-edit/index.d.ts +2 -2
- package/dist/components/batch-edit/use-edit-state.js +11 -9
- package/dist/components/batch-edit/use-edit-state.js.map +1 -1
- package/dist/components/batch-edit/use-handlers.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb/style.d.ts +1 -1
- package/dist/components/button/button-group.js.map +1 -1
- package/dist/components/button/button.js +2 -2
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button/style2.css +85 -92
- package/dist/components/calendar/calendar.js.map +1 -1
- package/dist/components/calendar/style.d.ts +1 -1
- package/dist/components/card/card-action.js.map +1 -1
- package/dist/components/card/card-content.js.map +1 -1
- package/dist/components/card/card-cover.js.map +1 -1
- package/dist/components/card/card-header.js.map +1 -1
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/card/style.d.ts +1 -1
- package/dist/components/cascade/cascade-panel-item.js.map +1 -1
- package/dist/components/cascade/cascade.js.map +1 -1
- package/dist/components/check-tag/check-tag.js.map +1 -1
- package/dist/components/check-tag/style.d.ts +1 -1
- package/dist/components/checkbox/checkbox-button.js.map +1 -1
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
- package/dist/components/code-editor/basic-setup.js +2 -2
- package/dist/components/code-editor/code-editor.js +2 -2
- package/dist/components/code-editor/code-editor.js.map +1 -1
- package/dist/components/code-editor/lang-loaders.js +1 -1
- package/dist/components/code-editor/shell-extension.js +2 -2
- package/dist/components/collapse/collapse-item.js +24 -7
- package/dist/components/collapse/collapse-item.js.map +1 -1
- package/dist/components/collapse/collapse.js.map +1 -1
- package/dist/components/collapse/style.d.ts +1 -1
- package/dist/components/condition-editor/components/condition-group.js.map +1 -1
- package/dist/components/condition-editor/components/condition-row.js.map +1 -1
- package/dist/components/condition-editor/condition-editor.js.map +1 -1
- package/dist/components/condition-editor/index.d.ts +2 -2
- package/dist/components/contextmenu/contextmenu-item.js +13 -6
- package/dist/components/contextmenu/contextmenu-item.js.map +1 -1
- package/dist/components/contextmenu/contextmenu-panel.js +12 -6
- package/dist/components/contextmenu/contextmenu-panel.js.map +1 -1
- package/dist/components/contextmenu/contextmenu-sub.js.map +1 -1
- package/dist/components/contextmenu/contextmenu.js.map +1 -1
- package/dist/components/contextmenu/di.d.ts +15 -0
- package/dist/components/contextmenu/index.d.ts +3 -2
- package/dist/components/contextmenu/style2.css +13 -0
- package/dist/components/date-panel/date-panel.js.map +1 -1
- package/dist/components/date-panel/headers/day.js.map +1 -1
- package/dist/components/date-panel/headers/month.js.map +1 -1
- package/dist/components/date-panel/headers/year.js.map +1 -1
- package/dist/components/date-panel/panels/day.js.map +1 -1
- package/dist/components/date-panel/panels/month.js.map +1 -1
- package/dist/components/date-panel/panels/year.js.map +1 -1
- package/dist/components/date-panel/style.d.ts +1 -1
- package/dist/components/date-picker/date-picker.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog/style2.css +3 -1
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown/dropdown.js.map +1 -1
- package/dist/components/dual-nav/dual-nav-app.js.map +1 -1
- package/dist/components/dual-nav/dual-nav.js.map +1 -1
- package/dist/components/empty/empty.js.map +1 -1
- package/dist/components/empty/style.d.ts +1 -1
- package/dist/components/expression-editor/components/path-preview.js.map +1 -1
- package/dist/components/expression-editor/components/variable-picker.js.map +1 -1
- package/dist/components/expression-editor/core/editor.js.map +1 -1
- package/dist/components/expression-editor/expression-editor.js.map +1 -1
- package/dist/components/expression-editor/style.d.ts +1 -1
- package/dist/components/file-picker/file-picker.js.map +1 -1
- package/dist/components/file-picker/style.d.ts +1 -1
- package/dist/components/file-viewer/file-viewer.js.map +1 -1
- package/dist/components/file-viewer/helper.js +1 -38
- package/dist/components/file-viewer/helper.js.map +1 -1
- package/dist/components/file-viewer/previewers/docx-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/image-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/pdf-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/pdf-viewport-scroll.js.map +1 -1
- package/dist/components/file-viewer/previewers/pdf-zoom-bridge.js.map +1 -1
- package/dist/components/file-viewer/previewers/sheet-previewer.js +68 -37
- package/dist/components/file-viewer/previewers/sheet-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/text-previewer.js +2 -2
- package/dist/components/file-viewer/previewers/text-previewer.js.map +1 -1
- package/dist/components/file-viewer/previewers/video-previewer.js.map +1 -1
- package/dist/components/file-viewer/style.d.ts +1 -1
- package/dist/components/float-button/float-button.js.map +1 -1
- package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/form/style.d.ts +1 -1
- package/dist/components/form-item/form-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/form-item/style.d.ts +1 -1
- package/dist/components/gantt-chart/gantt-chart.js.map +1 -1
- package/dist/components/gantt-chart/style.d.ts +1 -1
- package/dist/components/grid/grid-item.js.map +1 -1
- package/dist/components/grid/grid.js +3 -2
- package/dist/components/grid/grid.js.map +1 -1
- package/dist/components/grid/style.d.ts +1 -1
- package/dist/components/grid-input/grid-input.js.map +1 -1
- package/dist/components/grid-input/style.d.ts +1 -1
- package/dist/components/group-input/group-input.js.map +1 -1
- package/dist/components/group-nav/group-nav-item.js.map +1 -1
- package/dist/components/group-nav/group-nav.js.map +1 -1
- package/dist/components/group-nav/style.d.ts +1 -1
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/icon/style.d.ts +1 -1
- package/dist/components/index.d.ts +91 -156
- package/dist/components/index.js +4 -1
- package/dist/components/input/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/kbd/kbd.js.map +1 -1
- package/dist/components/kbd/style.d.ts +1 -1
- package/dist/components/layout/layout-resizer.js.map +1 -1
- package/dist/components/layout/layout.js +22 -10
- package/dist/components/layout/layout.js.map +1 -1
- package/dist/components/layout/style.d.ts +1 -1
- package/dist/components/list/list-item.js.map +1 -1
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/loading/directive.js +2 -1
- package/dist/components/loading/directive.js.map +1 -1
- package/dist/components/loading/index.d.ts +2 -2
- package/dist/components/loading/loading.js.map +1 -1
- package/dist/components/message/index.d.ts +2 -2
- package/dist/components/message/message-box.js.map +1 -1
- package/dist/components/message/message.js.map +1 -1
- package/dist/components/message/style.d.ts +1 -1
- package/dist/components/message-confirm/index.d.ts +2 -2
- package/dist/components/message-confirm/message-confirm-box.js.map +1 -1
- package/dist/components/message-confirm/message-confirm.js.map +1 -1
- package/dist/components/message-confirm/style.d.ts +1 -1
- package/dist/components/message-confirm/style2.css +18 -0
- package/dist/components/multi-select/multi-select-option.js.map +1 -1
- package/dist/components/multi-select/multi-select.js +6 -3
- package/dist/components/multi-select/multi-select.js.map +1 -1
- package/dist/components/multi-tree-select/multi-tree-select.js.map +1 -1
- package/dist/components/nav/nav-icon.js.map +1 -1
- package/dist/components/nav/nav-item-collapsed.js.map +1 -1
- package/dist/components/nav/nav-item.js +4 -2
- package/dist/components/nav/nav-item.js.map +1 -1
- package/dist/components/nav/nav-sub-collapsed.js.map +1 -1
- package/dist/components/nav/nav-sub.js.map +1 -1
- package/dist/components/nav/nav.js.map +1 -1
- package/dist/components/nav/style.d.ts +1 -1
- package/dist/components/node-render/style.d.ts +1 -1
- package/dist/components/notification/index.d.ts +2 -2
- package/dist/components/notification/notification-box.js +2 -2
- package/dist/components/notification/notification-box.js.map +1 -1
- package/dist/components/notification/notification.js.map +1 -1
- package/dist/components/notification/style.d.ts +1 -1
- package/dist/components/number/number.js.map +1 -1
- package/dist/components/number/style.d.ts +1 -1
- package/dist/components/number-input/number-input.js +2 -1
- package/dist/components/number-input/number-input.js.map +1 -1
- package/dist/components/number-range-input/number-range-input.js.map +1 -1
- package/dist/components/paginator/paginator.js.map +1 -1
- package/dist/components/palette/palette-alpha.js.map +1 -1
- package/dist/components/palette/palette-color-switch.js.map +1 -1
- package/dist/components/palette/palette-hue.js.map +1 -1
- package/dist/components/palette/palette-sv.js.map +1 -1
- package/dist/components/palette/palette.js.map +1 -1
- package/dist/components/password-input/password-input.js.map +1 -1
- package/dist/components/pop-confirm/pop-confirm.js.map +1 -1
- package/dist/components/progress/progress.js.map +1 -1
- package/dist/components/progress/style.d.ts +1 -1
- package/dist/components/progress-nodes/progress-nodes.js.map +1 -1
- package/dist/components/progress-nodes/style.d.ts +1 -1
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/radio-group/radio-group.js.map +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.js +2 -1
- package/dist/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/components/rich-text-editor/style.d.ts +1 -1
- package/dist/components/rich-text-editor/toolbar.js +3 -4
- package/dist/components/rich-text-editor/toolbar.js.map +1 -1
- package/dist/components/scroll/scroll-bar.js.map +1 -1
- package/dist/components/scroll/scroll.js.map +1 -1
- package/dist/components/scroll/style.d.ts +1 -1
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/slider/slider-thumb.js.map +1 -1
- package/dist/components/slider/slider.js.map +1 -1
- package/dist/components/slider/style.d.ts +1 -1
- package/dist/components/steps/steps.js.map +1 -1
- package/dist/components/steps/style.d.ts +1 -1
- package/dist/components/switch/style.d.ts +1 -1
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/index.d.ts +2 -2
- package/dist/components/table/node/col.d.ts +1 -49
- package/dist/components/table/table-body.js.map +1 -1
- package/dist/components/table/table-cell.js.map +1 -1
- package/dist/components/table/table-foot.js.map +1 -1
- package/dist/components/table/table-row.js +2 -1
- package/dist/components/table/table-row.js.map +1 -1
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/table/use-check.js +2 -1
- package/dist/components/table/use-check.js.map +1 -1
- package/dist/components/table/use-col-resize.js +9 -1
- package/dist/components/table/use-col-resize.js.map +1 -1
- package/dist/components/table/use-columns.d.ts +1 -1
- package/dist/components/table/use-rows.js +2 -1
- package/dist/components/table/use-rows.js.map +1 -1
- package/dist/components/table-editor/table-editor.js.map +1 -1
- package/dist/components/tabs/tabs-horizontal.js +2 -1
- package/dist/components/tabs/tabs-horizontal.js.map +1 -1
- package/dist/components/tabs/tabs-vertical.js.map +1 -1
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tabs/use-tabs-bar.js +10 -25
- package/dist/components/tabs/use-tabs-bar.js.map +1 -1
- package/dist/components/tag/style.d.ts +1 -1
- package/dist/components/tag/tag.js.map +1 -1
- package/dist/components/text/style.d.ts +1 -1
- package/dist/components/text/text.js.map +1 -1
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/components/theme/theme.js +3 -2
- package/dist/components/theme/theme.js.map +1 -1
- package/dist/components/tip/style.d.ts +1 -1
- package/dist/components/tip/tip.js.map +1 -1
- package/dist/components/tree/tree-node.js.map +1 -1
- package/dist/components/tree/tree.js.map +1 -1
- package/dist/components/tree-select/tree-select.js.map +1 -1
- package/dist/components/watermark/style.d.ts +1 -1
- package/dist/components/watermark/watermark.js.map +1 -1
- package/dist/index.d.ts +92 -96
- package/dist/index.js +2 -1
- package/dist/node_modules/.bun/@codemirror_autocomplete@6.20.3/node_modules/@codemirror/autocomplete/dist/index.js +2 -2
- package/dist/node_modules/.bun/@codemirror_autocomplete@6.20.3/node_modules/@codemirror/autocomplete/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@codemirror_commands@6.10.4/node_modules/@codemirror/commands/dist/index.js +3 -3
- package/dist/node_modules/.bun/@codemirror_commands@6.10.4/node_modules/@codemirror/commands/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@codemirror_lang-css@6.3.1/node_modules/@codemirror/lang-css/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@codemirror_lang-html@6.4.11/node_modules/@codemirror/lang-html/dist/index.js +5 -4
- package/dist/node_modules/.bun/@codemirror_lang-html@6.4.11/node_modules/@codemirror/lang-html/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@codemirror_lang-javascript@6.2.5/node_modules/@codemirror/lang-javascript/dist/index.js +2 -2
- package/dist/node_modules/.bun/{@codemirror_lang-markdown@6.5.1 → @codemirror_lang-markdown@6.5.2}/node_modules/@codemirror/lang-markdown/dist/index.js +4 -3
- package/dist/node_modules/.bun/@codemirror_lang-markdown@6.5.2/node_modules/@codemirror/lang-markdown/dist/index.js.map +1 -0
- package/dist/node_modules/.bun/@codemirror_lang-sql@6.10.0/node_modules/@codemirror/lang-sql/dist/index.js +2 -1
- package/dist/node_modules/.bun/@codemirror_lang-sql@6.10.0/node_modules/@codemirror/lang-sql/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@codemirror_language@6.12.4/node_modules/@codemirror/language/dist/index.js +2 -2
- package/dist/node_modules/.bun/@codemirror_language@6.12.4/node_modules/@codemirror/language/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@codemirror_lint@6.9.7/node_modules/@codemirror/lint/dist/index.js +4 -3
- package/dist/node_modules/.bun/@codemirror_lint@6.9.7/node_modules/@codemirror/lint/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@codemirror_search@6.7.1/node_modules/@codemirror/search/dist/index.js +2 -2
- package/dist/node_modules/.bun/@codemirror_search@6.7.1/node_modules/@codemirror/search/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/{@codemirror_state@6.7.0 → @codemirror_state@6.7.1}/node_modules/@codemirror/state/dist/index.js +13 -3
- package/dist/node_modules/.bun/@codemirror_state@6.7.1/node_modules/@codemirror/state/dist/index.js.map +1 -0
- package/dist/node_modules/.bun/@codemirror_theme-one-dark@6.1.3/node_modules/@codemirror/theme-one-dark/dist/index.js +1 -1
- package/dist/node_modules/.bun/@codemirror_theme-one-dark@6.1.3/node_modules/@codemirror/theme-one-dark/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/{@codemirror_view@6.43.4 → @codemirror_view@6.43.8}/node_modules/@codemirror/view/dist/index.js +86 -64
- package/dist/node_modules/.bun/@codemirror_view@6.43.8/node_modules/@codemirror/view/dist/index.js.map +1 -0
- package/dist/node_modules/.bun/@lezer_common@1.5.2/node_modules/@lezer/common/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@lezer_css@1.3.4/node_modules/@lezer/css/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@lezer_highlight@1.2.3/node_modules/@lezer/highlight/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@lezer_html@1.3.13/node_modules/@lezer/html/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@lezer_javascript@1.5.4/node_modules/@lezer/javascript/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@lezer_lr@1.4.10/node_modules/@lezer/lr/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@lezer_markdown@1.7.2/node_modules/@lezer/markdown/dist/index.js +1 -1
- package/dist/node_modules/.bun/@lezer_markdown@1.7.2/node_modules/@lezer/markdown/dist/index.js.map +1 -1
- package/dist/node_modules/.bun/@marijn_find-cluster-break@1.0.2/node_modules/@marijn/find-cluster-break/src/index.js.map +1 -1
- package/dist/node_modules/.bun/style-mod@4.1.3/node_modules/style-mod/src/style-mod.js.map +1 -1
- package/dist/types/collapse.d.ts +7 -1
- package/dist/types/contextmenu.d.ts +10 -4
- package/dist/types/index.d.ts +1 -7
- package/dist/types/layout.d.ts +16 -1
- package/package.json +34 -30
- package/src/components/batch-edit/__test__/batch-edit.test.ts +199 -0
- package/src/components/batch-edit/batch-edit-form.vue +8 -8
- package/src/components/batch-edit/batch-edit.vue +2 -1
- package/src/components/batch-edit/di.ts +2 -0
- package/src/components/batch-edit/use-edit-state.ts +19 -12
- package/src/components/button/button.vue +2 -2
- package/src/components/button/style.scss +8 -29
- package/src/components/collapse/__test__/collapse.test.ts +59 -0
- package/src/components/collapse/collapse-item.vue +32 -11
- package/src/components/contextmenu/__test__/contextmenu.test.ts +165 -0
- package/src/components/contextmenu/contextmenu-item.vue +7 -4
- package/src/components/contextmenu/contextmenu-panel.vue +7 -4
- package/src/components/contextmenu/index.ts +1 -0
- package/src/components/contextmenu/style.scss +16 -0
- package/src/components/dialog/style.scss +5 -1
- package/src/components/file-viewer/helper.ts +0 -53
- package/src/components/file-viewer/previewers/sheet-previewer.vue +91 -46
- package/src/components/layout/layout.vue +19 -8
- package/src/components/message-confirm/style.scss +19 -0
- package/src/components/notification/style.scss +16 -4
- package/src/components/radio-group/style.scss +1 -1
- package/src/components/slider/style.scss +1 -1
- package/src/components/table/use-col-resize.ts +9 -1
- package/src/components/tabs/use-tabs-bar.ts +15 -20
- package/src/types/collapse.ts +8 -1
- package/src/types/contextmenu.ts +10 -4
- package/src/types/layout.ts +16 -1
- package/dist/components/action/action-group.vue.d.ts +0 -25
- package/dist/components/action/action.vue.d.ts +0 -33
- package/dist/components/action/index.d.ts +0 -3
- package/dist/components/auto-complete/auto-complete.vue.d.ts +0 -41
- package/dist/components/auto-complete/index.d.ts +0 -2
- package/dist/components/badge/badge.vue.d.ts +0 -20
- package/dist/components/badge/index.d.ts +0 -2
- package/dist/components/batch-edit/batch-edit.vue.d.ts +0 -45
- package/dist/components/breadcrumb/breadcrumb.vue.d.ts +0 -24
- package/dist/components/breadcrumb/index.d.ts +0 -2
- package/dist/components/button/button-group.vue.d.ts +0 -19
- package/dist/components/button/button.vue.d.ts +0 -27
- package/dist/components/button/index.d.ts +0 -3
- package/dist/components/calendar/calendar.vue.d.ts +0 -17
- package/dist/components/calendar/index.d.ts +0 -2
- package/dist/components/card/card-action.vue.d.ts +0 -18
- package/dist/components/card/card-content.vue.d.ts +0 -18
- package/dist/components/card/card-cover.vue.d.ts +0 -8
- package/dist/components/card/card-header.vue.d.ts +0 -16
- package/dist/components/card/card.vue.d.ts +0 -18
- package/dist/components/card/index.d.ts +0 -6
- package/dist/components/cascade/cascade.vue.d.ts +0 -31
- package/dist/components/cascade/index.d.ts +0 -2
- package/dist/components/check-tag/check-tag.vue.d.ts +0 -22
- package/dist/components/check-tag/index.d.ts +0 -2
- package/dist/components/checkbox/checkbox-button.vue.d.ts +0 -35
- package/dist/components/checkbox/checkbox.vue.d.ts +0 -34
- package/dist/components/checkbox/index.d.ts +0 -3
- package/dist/components/checkbox-group/checkbox-group.vue.d.ts +0 -24
- package/dist/components/checkbox-group/index.d.ts +0 -2
- package/dist/components/code-editor/code-editor.vue.d.ts +0 -30
- package/dist/components/code-editor/index.d.ts +0 -2
- package/dist/components/collapse/collapse-item.vue.d.ts +0 -32
- package/dist/components/collapse/collapse.vue.d.ts +0 -27
- package/dist/components/collapse/index.d.ts +0 -3
- package/dist/components/condition-editor/condition-editor.vue.d.ts +0 -15
- package/dist/components/contextmenu/contextmenu.vue.d.ts +0 -14
- package/dist/components/date-panel/date-panel.vue.d.ts +0 -17
- package/dist/components/date-panel/index.d.ts +0 -2
- package/dist/components/date-picker/date-picker.vue.d.ts +0 -18
- package/dist/components/date-picker/index.d.ts +0 -2
- package/dist/components/date-range-picker/date-range-picker.vue.d.ts +0 -18
- package/dist/components/date-range-picker/index.d.ts +0 -2
- package/dist/components/dialog/dialog.vue.d.ts +0 -43
- package/dist/components/dialog/index.d.ts +0 -2
- package/dist/components/drawer/drawer.vue.d.ts +0 -36
- package/dist/components/drawer/index.d.ts +0 -2
- package/dist/components/dropdown/dropdown.vue.d.ts +0 -30
- package/dist/components/dropdown/index.d.ts +0 -2
- package/dist/components/dual-nav/dual-nav.vue.d.ts +0 -15
- package/dist/components/dual-nav/index.d.ts +0 -2
- package/dist/components/empty/empty.vue.d.ts +0 -11
- package/dist/components/empty/index.d.ts +0 -2
- package/dist/components/expression-editor/expression-editor.vue.d.ts +0 -16
- package/dist/components/expression-editor/index.d.ts +0 -2
- package/dist/components/file-picker/file-picker.vue.d.ts +0 -27
- package/dist/components/file-picker/index.d.ts +0 -2
- package/dist/components/file-viewer/file-viewer.vue.d.ts +0 -40
- package/dist/components/file-viewer/index.d.ts +0 -2
- package/dist/components/file-viewer/sheet-parser.js +0 -46
- package/dist/components/file-viewer/sheet-parser.js.map +0 -1
- package/dist/components/float-button/float-button.vue.d.ts +0 -12
- package/dist/components/float-button/index.d.ts +0 -2
- package/dist/components/form/form.vue.d.ts +0 -23
- package/dist/components/form/index.d.ts +0 -2
- package/dist/components/form-item/form-item.vue.d.ts +0 -21
- package/dist/components/form-item/index.d.ts +0 -2
- package/dist/components/gantt-chart/gantt-chart.vue.d.ts +0 -8
- package/dist/components/gantt-chart/index.d.ts +0 -2
- package/dist/components/grid/grid-item.vue.d.ts +0 -20
- package/dist/components/grid/grid.vue.d.ts +0 -27
- package/dist/components/grid/index.d.ts +0 -3
- package/dist/components/grid-input/grid-input.vue.d.ts +0 -19
- package/dist/components/grid-input/index.d.ts +0 -2
- package/dist/components/group-input/group-input.vue.d.ts +0 -26
- package/dist/components/group-input/index.d.ts +0 -2
- package/dist/components/group-nav/group-nav.vue.d.ts +0 -12
- package/dist/components/group-nav/index.d.ts +0 -2
- package/dist/components/icon/icon.vue.d.ts +0 -18
- package/dist/components/icon/index.d.ts +0 -2
- package/dist/components/input/index.d.ts +0 -2
- package/dist/components/input/input.vue.d.ts +0 -50
- package/dist/components/kbd/kbd.vue.d.ts +0 -16
- package/dist/components/layout/index.d.ts +0 -2
- package/dist/components/layout/layout.vue.d.ts +0 -20
- package/dist/components/list/index.d.ts +0 -3
- package/dist/components/list/list-item.vue.d.ts +0 -16
- package/dist/components/list/list.vue.d.ts +0 -21
- package/dist/components/loading/loading.vue.d.ts +0 -11
- package/dist/components/message/message.vue.d.ts +0 -16
- package/dist/components/message-confirm/message-confirm.vue.d.ts +0 -19
- package/dist/components/multi-select/index.d.ts +0 -2
- package/dist/components/multi-select/multi-select.vue.d.ts +0 -48
- package/dist/components/multi-tree-select/index.d.ts +0 -2
- package/dist/components/multi-tree-select/multi-tree-select.vue.d.ts +0 -44
- package/dist/components/nav/index.d.ts +0 -4
- package/dist/components/nav/nav-item.vue.d.ts +0 -12
- package/dist/components/nav/nav-sub.vue.d.ts +0 -13
- package/dist/components/nav/nav.vue.d.ts +0 -19
- package/dist/components/notification/notification.vue.d.ts +0 -18
- package/dist/components/number/index.d.ts +0 -2
- package/dist/components/number/number.vue.d.ts +0 -11
- package/dist/components/number-input/index.d.ts +0 -2
- package/dist/components/number-input/number-input.vue.d.ts +0 -39
- package/dist/components/number-range-input/index.d.ts +0 -2
- package/dist/components/number-range-input/number-range-input.vue.d.ts +0 -36
- package/dist/components/paginator/index.d.ts +0 -2
- package/dist/components/paginator/paginator.vue.d.ts +0 -29
- package/dist/components/palette/index.d.ts +0 -2
- package/dist/components/palette/palette.vue.d.ts +0 -20
- package/dist/components/password-input/index.d.ts +0 -2
- package/dist/components/password-input/password-input.vue.d.ts +0 -30
- package/dist/components/pop-confirm/index.d.ts +0 -2
- package/dist/components/pop-confirm/pop-confirm.vue.d.ts +0 -33
- package/dist/components/progress/index.d.ts +0 -2
- package/dist/components/progress/progress.vue.d.ts +0 -25
- package/dist/components/progress-nodes/index.d.ts +0 -2
- package/dist/components/progress-nodes/progress-nodes.vue.d.ts +0 -36
- package/dist/components/radio/index.d.ts +0 -2
- package/dist/components/radio/radio.vue.d.ts +0 -31
- package/dist/components/radio-group/index.d.ts +0 -2
- package/dist/components/radio-group/radio-group.vue.d.ts +0 -26
- package/dist/components/rich-text-editor/index.d.ts +0 -2
- package/dist/components/rich-text-editor/rich-text-editor.vue.d.ts +0 -23
- package/dist/components/scroll/index.d.ts +0 -2
- package/dist/components/scroll/scroll.vue.d.ts +0 -28
- package/dist/components/select/index.d.ts +0 -2
- package/dist/components/select/select.vue.d.ts +0 -38
- package/dist/components/slider/index.d.ts +0 -2
- package/dist/components/slider/slider.vue.d.ts +0 -21
- package/dist/components/steps/index.d.ts +0 -2
- package/dist/components/steps/steps.vue.d.ts +0 -29
- package/dist/components/switch/index.d.ts +0 -2
- package/dist/components/switch/switch.vue.d.ts +0 -24
- package/dist/components/table/node/row.d.ts +0 -49
- package/dist/components/table/table.vue.d.ts +0 -54
- package/dist/components/table-editor/index.d.ts +0 -2
- package/dist/components/table-editor/table-editor.vue.d.ts +0 -12
- package/dist/components/tabs/index.d.ts +0 -4
- package/dist/components/tabs/tabs-horizontal.vue.d.ts +0 -40
- package/dist/components/tabs/tabs-vertical.vue.d.ts +0 -39
- package/dist/components/tabs/tabs.vue.d.ts +0 -36
- package/dist/components/tag/index.d.ts +0 -2
- package/dist/components/tag/tag.vue.d.ts +0 -22
- package/dist/components/text/index.d.ts +0 -2
- package/dist/components/text/text.vue.d.ts +0 -10
- package/dist/components/textarea/index.d.ts +0 -2
- package/dist/components/textarea/textarea.vue.d.ts +0 -34
- package/dist/components/theme/index.d.ts +0 -2
- package/dist/components/theme/theme.vue.d.ts +0 -8
- package/dist/components/tip/index.d.ts +0 -2
- package/dist/components/tip/tip.vue.d.ts +0 -31
- package/dist/components/tree/di.d.ts +0 -12
- package/dist/components/tree/index.d.ts +0 -2
- package/dist/components/tree/tree.vue.d.ts +0 -40
- package/dist/components/tree-select/index.d.ts +0 -2
- package/dist/components/tree-select/tree-select.vue.d.ts +0 -48
- package/dist/components/watermark/index.d.ts +0 -2
- package/dist/components/watermark/watermark.vue.d.ts +0 -21
- package/dist/node_modules/.bun/@codemirror_lang-markdown@6.5.1/node_modules/@codemirror/lang-markdown/dist/index.js.map +0 -1
- package/dist/node_modules/.bun/@codemirror_state@6.7.0/node_modules/@codemirror/state/dist/index.js.map +0 -1
- package/dist/node_modules/.bun/@codemirror_view@6.43.4/node_modules/@codemirror/view/dist/index.js.map +0 -1
- package/src/components/file-viewer/sheet-parser.ts +0 -52
|
@@ -1,33 +1,44 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div :class="cls.e('sheet')">
|
|
3
|
-
<div v-if="
|
|
4
|
-
|
|
3
|
+
<div v-if="unavailable" :class="cls.e('empty')">
|
|
4
|
+
<u-empty text="无法预览表格:未安装 @veltra/sheet-core" :size="32" />
|
|
5
5
|
</div>
|
|
6
|
-
<
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
<template v-else>
|
|
7
|
+
<div v-if="truncated" :class="cls.e('sheet-note')">
|
|
8
|
+
共 {{ totalRows.toLocaleString() }} 行,超出预览上限
|
|
9
|
+
{{ maxRows.toLocaleString() }} 行,已全量加载
|
|
10
|
+
</div>
|
|
11
|
+
<div v-if="sheets.length > 1" :class="cls.e('sheet-tabs')">
|
|
12
|
+
<button
|
|
13
|
+
v-for="(s, i) in sheets"
|
|
14
|
+
:key="s.name"
|
|
15
|
+
:class="[cls.e('sheet-tab'), bem.is('active', i === activeSheetIndex)]"
|
|
16
|
+
@click="activeSheetIndex = i"
|
|
17
|
+
>
|
|
18
|
+
{{ s.name }}
|
|
19
|
+
</button>
|
|
20
|
+
</div>
|
|
21
|
+
<div ref="container" :class="cls.e('sheet-stage')" />
|
|
22
|
+
<div v-if="loading" :class="cls.e('loading')">加载中…</div>
|
|
23
|
+
</template>
|
|
18
24
|
</div>
|
|
19
25
|
</template>
|
|
20
26
|
|
|
21
27
|
<script lang="ts" setup>
|
|
22
28
|
import { bem } from '@veltra/utils'
|
|
23
|
-
import { ListTable } from '@visactor/vtable'
|
|
24
29
|
import { onBeforeUnmount, ref, shallowRef, useTemplateRef, watch } from 'vue'
|
|
25
30
|
|
|
26
31
|
import type { FileViewerItem } from '../../../types/file-viewer'
|
|
27
|
-
import {
|
|
32
|
+
import { UEmpty } from '../../empty'
|
|
33
|
+
import { getExtension, toArrayBuffer } from '../helper'
|
|
28
34
|
|
|
29
35
|
defineOptions({ name: 'UFileViewerSheetPreviewer' })
|
|
30
36
|
|
|
37
|
+
/** 仅类型查询;运行时通过动态 import 加载,未安装时不炸主入口 */
|
|
38
|
+
type SheetCoreModule = typeof import('@veltra/sheet-core')
|
|
39
|
+
type Sheet = InstanceType<SheetCoreModule['Sheet']>
|
|
40
|
+
type SheetGrid = InstanceType<SheetCoreModule['SheetGrid']>
|
|
41
|
+
|
|
31
42
|
const props = withDefaults(defineProps<{ file: FileViewerItem; maxRows?: number }>(), {
|
|
32
43
|
maxRows: 50_000
|
|
33
44
|
})
|
|
@@ -37,72 +48,106 @@ const emit = defineEmits<{ (e: 'error', err: unknown): void }>()
|
|
|
37
48
|
const cls = bem('file-viewer')
|
|
38
49
|
const container = useTemplateRef<HTMLDivElement>('container')
|
|
39
50
|
const loading = ref(true)
|
|
51
|
+
const unavailable = ref(false)
|
|
40
52
|
const truncated = ref(false)
|
|
41
53
|
const totalRows = ref(0)
|
|
42
|
-
const
|
|
43
|
-
const sheets = shallowRef<SheetPreview[]>([])
|
|
54
|
+
const sheets = shallowRef<Sheet[]>([])
|
|
44
55
|
const activeSheetIndex = ref(0)
|
|
45
56
|
|
|
46
57
|
let controller: AbortController | undefined
|
|
47
|
-
|
|
48
|
-
let
|
|
58
|
+
/** 递增 token:importXlsx 无 AbortSignal,靠它防止切文件后旧解析结果落地 */
|
|
59
|
+
let loadToken = 0
|
|
60
|
+
let grid: SheetGrid | undefined
|
|
61
|
+
let sheetCore: SheetCoreModule | undefined
|
|
62
|
+
|
|
63
|
+
function releaseGrid() {
|
|
64
|
+
grid?.release()
|
|
65
|
+
grid = undefined
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** 动态加载 sheet-core;未安装 optional peer 时返回 undefined */
|
|
69
|
+
async function resolveSheetCore(): Promise<SheetCoreModule | undefined> {
|
|
70
|
+
if (sheetCore) return sheetCore
|
|
71
|
+
try {
|
|
72
|
+
sheetCore = await import('@veltra/sheet-core')
|
|
73
|
+
return sheetCore
|
|
74
|
+
} catch {
|
|
75
|
+
return undefined
|
|
76
|
+
}
|
|
77
|
+
}
|
|
49
78
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
79
|
+
/** 解析文件为 Sheet 列表:xlsx 多表(importXlsx 建工作簿);csv 单表,表名取文件名 */
|
|
80
|
+
async function parseFile(
|
|
81
|
+
core: SheetCoreModule,
|
|
82
|
+
file: FileViewerItem,
|
|
83
|
+
signal?: AbortSignal
|
|
84
|
+
): Promise<Sheet[]> {
|
|
85
|
+
const buf = await toArrayBuffer(file.src, signal)
|
|
86
|
+
if (getExtension(file.name) === 'csv') {
|
|
87
|
+
const text = new TextDecoder('utf-8', { fatal: false }).decode(buf)
|
|
88
|
+
const sheet = new core.Sheet(file.name)
|
|
89
|
+
core.importCsv(text, sheet)
|
|
90
|
+
return [sheet]
|
|
91
|
+
}
|
|
92
|
+
const workbook = await core.importXlsx(buf)
|
|
93
|
+
return workbook.getSheets()
|
|
53
94
|
}
|
|
54
95
|
|
|
55
96
|
function renderActive() {
|
|
56
97
|
const sheet = sheets.value[activeSheetIndex.value]
|
|
57
98
|
const el = container.value
|
|
58
|
-
|
|
99
|
+
releaseGrid()
|
|
100
|
+
if (!sheet || !el || !sheetCore) return
|
|
59
101
|
|
|
60
|
-
|
|
102
|
+
// SheetGrid 的 rows 选项是渲染行数下限(构造时数据高水位恒并入渲染尺寸),
|
|
103
|
+
// 不能用作行数上限;deleteRows 硬裁又会让引用被裁区域的公式显示 #REF!,
|
|
104
|
+
// 故 maxRows 只驱动截断提示,不裁模型
|
|
105
|
+
const total = sheet.rowCount
|
|
106
|
+
totalRows.value = total
|
|
107
|
+
truncated.value = props.maxRows > 0 && total > props.maxRows
|
|
61
108
|
|
|
62
|
-
|
|
63
|
-
totalRows.value = sheet.rows.length
|
|
64
|
-
renderedRows.value = limit
|
|
65
|
-
truncated.value = props.maxRows > 0 && sheet.rows.length > props.maxRows
|
|
66
|
-
|
|
67
|
-
table = new ListTable(el, {
|
|
68
|
-
records: sheet.rows.slice(0, limit),
|
|
69
|
-
columns: sheet.headers.map((title, i) => ({ field: String(i), title, width: 'auto' })),
|
|
70
|
-
widthMode: 'standard'
|
|
71
|
-
})
|
|
109
|
+
grid = new sheetCore.SheetGrid({ container: el, sheet, readonly: true })
|
|
72
110
|
}
|
|
73
111
|
|
|
74
112
|
async function load() {
|
|
113
|
+
const token = ++loadToken
|
|
75
114
|
controller?.abort()
|
|
76
115
|
controller = new AbortController()
|
|
77
116
|
loading.value = true
|
|
117
|
+
truncated.value = false
|
|
118
|
+
releaseGrid()
|
|
78
119
|
sheets.value = []
|
|
79
120
|
activeSheetIndex.value = 0
|
|
80
121
|
|
|
81
122
|
try {
|
|
82
|
-
|
|
83
|
-
if (
|
|
123
|
+
const core = await resolveSheetCore()
|
|
124
|
+
if (token !== loadToken) return
|
|
125
|
+
if (!core) {
|
|
126
|
+
unavailable.value = true
|
|
127
|
+
emit('error', new Error('未安装 @veltra/sheet-core,无法预览 Excel/CSV'))
|
|
128
|
+
return
|
|
129
|
+
}
|
|
130
|
+
unavailable.value = false
|
|
131
|
+
|
|
132
|
+
const parsed = await parseFile(core, props.file, controller.signal)
|
|
133
|
+
if (token !== loadToken) return
|
|
134
|
+
sheets.value = parsed
|
|
84
135
|
renderActive()
|
|
85
136
|
} catch (err) {
|
|
137
|
+
if (token !== loadToken) return
|
|
86
138
|
if ((err as { name?: string })?.name === 'AbortError') return
|
|
87
139
|
emit('error', err)
|
|
88
140
|
} finally {
|
|
89
|
-
loading.value = false
|
|
141
|
+
if (token === loadToken) loading.value = false
|
|
90
142
|
}
|
|
91
143
|
}
|
|
92
144
|
|
|
93
145
|
watch(() => props.file, load, { immediate: true })
|
|
94
146
|
watch(activeSheetIndex, renderActive)
|
|
95
|
-
watch(container, (el) => {
|
|
96
|
-
resizeObserver?.disconnect()
|
|
97
|
-
if (!el) return
|
|
98
|
-
resizeObserver = new ResizeObserver(() => table?.resize?.())
|
|
99
|
-
resizeObserver.observe(el)
|
|
100
|
-
})
|
|
101
147
|
|
|
102
148
|
onBeforeUnmount(() => {
|
|
103
149
|
controller?.abort()
|
|
104
|
-
|
|
105
|
-
releaseTable()
|
|
150
|
+
releaseGrid()
|
|
106
151
|
sheets.value = []
|
|
107
152
|
})
|
|
108
153
|
</script>
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
direction="vertical"
|
|
12
12
|
@resize="handleResize($event, index)"
|
|
13
13
|
@resize-start="handleStartResize(index)"
|
|
14
|
+
@resize-end="emit('resize-end', index)"
|
|
14
15
|
>
|
|
15
16
|
</ULayoutResizer>
|
|
16
17
|
|
|
@@ -37,7 +38,7 @@ import {
|
|
|
37
38
|
nextTick
|
|
38
39
|
} from 'vue'
|
|
39
40
|
|
|
40
|
-
import type { LayoutProps } from '../../types'
|
|
41
|
+
import type { LayoutEmits, LayoutProps } from '../../types'
|
|
41
42
|
import { LayoutDIKey } from './di'
|
|
42
43
|
import ULayoutResizer from './layout-resizer.vue'
|
|
43
44
|
|
|
@@ -45,6 +46,8 @@ defineOptions({ name: 'ULayout' })
|
|
|
45
46
|
|
|
46
47
|
const props = withDefaults(defineProps<LayoutProps>(), { tag: 'div' })
|
|
47
48
|
|
|
49
|
+
const emit = defineEmits<LayoutEmits>()
|
|
50
|
+
|
|
48
51
|
const cls = bem('layout')
|
|
49
52
|
|
|
50
53
|
const templateCols = ref<string[]>([])
|
|
@@ -87,20 +90,25 @@ function getResizeOffsets() {
|
|
|
87
90
|
|
|
88
91
|
watch([() => props.resizable, containerRef, () => props.cols], () => {
|
|
89
92
|
nextTick(() => {
|
|
90
|
-
|
|
93
|
+
syncResizers()
|
|
91
94
|
})
|
|
92
95
|
})
|
|
93
96
|
|
|
94
97
|
useResizeObserver({
|
|
95
98
|
targets: containerRef,
|
|
96
99
|
onResize() {
|
|
97
|
-
|
|
98
|
-
resizerRefs.value.forEach((r, i) => {
|
|
99
|
-
r.update(resizerOffsets.value![i]!)
|
|
100
|
-
})
|
|
100
|
+
syncResizers()
|
|
101
101
|
}
|
|
102
102
|
})
|
|
103
103
|
|
|
104
|
+
/** 重新测量各列边界并同步所有拖拽手柄位置(容器尺寸或 cols 程序化变化后调用) */
|
|
105
|
+
function syncResizers() {
|
|
106
|
+
getResizeOffsets()
|
|
107
|
+
resizerRefs.value.forEach((r, i) => {
|
|
108
|
+
r.update(resizerOffsets.value![i]!)
|
|
109
|
+
})
|
|
110
|
+
}
|
|
111
|
+
|
|
104
112
|
// const horizontalResizerList = []
|
|
105
113
|
|
|
106
114
|
// const resizing = shallowRef(false)
|
|
@@ -117,11 +125,14 @@ const handleStartResize = (index: number) => {
|
|
|
117
125
|
const nextDom = container.children[index + 1] as HTMLElement | undefined
|
|
118
126
|
prevSize = prevDom ? prevDom.getBoundingClientRect().width : 0
|
|
119
127
|
nextSize = nextDom ? nextDom.getBoundingClientRect().width : 0
|
|
128
|
+
emit('resize-start', index)
|
|
120
129
|
}
|
|
121
130
|
const handleResize = (offset: number, index: number) => {
|
|
122
|
-
// 钳位到 [-prevSize, nextSize]
|
|
131
|
+
// 钳位到 [colMin-prevSize, nextSize-colMin],避免轨道尺寸出现负值或小于列最小宽度——
|
|
123
132
|
// 一旦 grid-template-columns 中带负值,整条声明会被浏览器丢弃。
|
|
124
|
-
const
|
|
133
|
+
const minPrev = props.colMinSizes?.[index] ?? 0
|
|
134
|
+
const minNext = props.colMinSizes?.[index + 1] ?? 0
|
|
135
|
+
const clamped = Math.max(minPrev - prevSize, Math.min(nextSize - minNext, offset))
|
|
125
136
|
templateCols.value[index] = `${prevSize + clamped}px`
|
|
126
137
|
templateCols.value[index + 1] = `${nextSize - clamped}px`
|
|
127
138
|
}
|
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
$root-name: message-confirm;
|
|
8
8
|
|
|
9
9
|
@include m.b($root-name) {
|
|
10
|
+
// 根元素必须「平时」就有 transition:Vue transition-group 的 hasTransition 在
|
|
11
|
+
// 添加 leave-active 类之前检查元素当前 computed 样式,只在类上声明 transition
|
|
12
|
+
// 读不到 → 判定无过渡 → after-leave 同步触发(onClosed 在点击事件内同步执行,
|
|
13
|
+
// replaceWorkbook 长任务阻塞弹窗关闭)。与 message 组件对称(mask/box 同此)。
|
|
14
|
+
transition: opacity fn.use-var(transition, normal) fn.use-var(transition, ease);
|
|
15
|
+
|
|
10
16
|
@include m.e(mask) {
|
|
11
17
|
background-color: rgba(0, 0, 0, 0.32);
|
|
12
18
|
position: fixed;
|
|
@@ -57,8 +63,21 @@ $root-name: message-confirm;
|
|
|
57
63
|
}
|
|
58
64
|
}
|
|
59
65
|
|
|
66
|
+
/* 根元素必须声明 transition:Vue transition-group 通过「被过渡元素自身」的
|
|
67
|
+
computed transition 判定是否走动画。此前动画只写在子元素 mask/box 上,
|
|
68
|
+
根元素无 transition → Vue 判定无过渡 → after-leave 同步触发(onClosed 在
|
|
69
|
+
点击事件内同步执行,长任务阻塞弹窗关闭)。与 message 组件对称。 */
|
|
70
|
+
.#{$root-name}-enter-active,
|
|
71
|
+
.#{$root-name}-leave-active {
|
|
72
|
+
transition-duration: fn.use-var(transition, normal);
|
|
73
|
+
transition-timing-function: fn.use-var(transition, ease);
|
|
74
|
+
transition-property: opacity;
|
|
75
|
+
}
|
|
76
|
+
|
|
60
77
|
.#{$root-name}-enter-from,
|
|
61
78
|
.#{$root-name}-leave-to {
|
|
79
|
+
opacity: 0;
|
|
80
|
+
|
|
62
81
|
@include m.bem($root-name, mask) {
|
|
63
82
|
opacity: 0;
|
|
64
83
|
}
|
|
@@ -7,10 +7,22 @@
|
|
|
7
7
|
$root-name: notification;
|
|
8
8
|
// 方位 => (垂直锚边, 水平锚边)
|
|
9
9
|
$stack-positions: (
|
|
10
|
-
'bottom-right': (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
'bottom-right': (
|
|
11
|
+
bottom,
|
|
12
|
+
right
|
|
13
|
+
),
|
|
14
|
+
'bottom-left': (
|
|
15
|
+
bottom,
|
|
16
|
+
left
|
|
17
|
+
),
|
|
18
|
+
'top-right': (
|
|
19
|
+
top,
|
|
20
|
+
right
|
|
21
|
+
),
|
|
22
|
+
'top-left': (
|
|
23
|
+
top,
|
|
24
|
+
left
|
|
25
|
+
)
|
|
14
26
|
);
|
|
15
27
|
|
|
16
28
|
@include m.b($root-name) {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { debounce } from '@cat-kit/core'
|
|
2
|
+
import { useResizeObserver } from '@veltra/compositions'
|
|
3
|
+
import { computed, nextTick, provide, shallowRef, watchEffect, type ShallowRef } from 'vue'
|
|
2
4
|
|
|
3
5
|
import type { ScrollExposed } from '../../types'
|
|
4
6
|
import { allocateLeafColumnWidths } from './allocate-column-widths'
|
|
@@ -53,6 +55,12 @@ export function useColResize(options: Options): UseColResizeReturned {
|
|
|
53
55
|
|
|
54
56
|
watchEffect(correctColumnStyle)
|
|
55
57
|
|
|
58
|
+
// 容器宽度变化(窗口缩放、父布局变化、纵向滚动条出现/消失等)时重新分配列宽,
|
|
59
|
+
// 直到所有未显式设宽的列回落到 minWidth。计算开销较大,用防抖合并连续的 resize 触发。
|
|
60
|
+
const debouncedCorrectColumnStyle = debounce(correctColumnStyle)
|
|
61
|
+
const containerRef = computed(() => scrollRef.value?.containerRef ?? null)
|
|
62
|
+
useResizeObserver({ targets: containerRef, onResize: debouncedCorrectColumnStyle })
|
|
63
|
+
|
|
56
64
|
function updateResizeLine(transformX: number): void {
|
|
57
65
|
if (!resizeLineRef.value) return
|
|
58
66
|
resizeLineRef.value.style.transform = `translateX(${transformX}px)`
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { useResizeObserver } from '@veltra/compositions'
|
|
2
|
+
import {
|
|
3
|
+
applyWheelHorizontalScroll,
|
|
4
|
+
computeOverflowNavState,
|
|
5
|
+
scrollElementIntoView,
|
|
6
|
+
scrollViewportByStep
|
|
7
|
+
} from '@veltra/utils'
|
|
2
8
|
import {
|
|
3
9
|
type ModelRef,
|
|
4
10
|
type Ref,
|
|
@@ -20,7 +26,8 @@ interface UseTabsBarOptions {
|
|
|
20
26
|
}
|
|
21
27
|
|
|
22
28
|
/**
|
|
23
|
-
*
|
|
29
|
+
* 水平标签栏的溢出滚动逻辑(滚动几何/滚轮转横滚/元素滚入视野共享
|
|
30
|
+
* @veltra/utils overflow-nav,见 #17;此处保留 useResizeObserver 与 watch 差异):
|
|
24
31
|
* - 计算 nav 按钮显隐与可用状态
|
|
25
32
|
* - 提供按步滚动与活动标签自动滚入视野的方法
|
|
26
33
|
* - 绑定 wheel / scroll / resize 事件
|
|
@@ -36,18 +43,17 @@ export function useTabsBar(options: UseTabsBarOptions) {
|
|
|
36
43
|
const updateNavState = () => {
|
|
37
44
|
const vp = viewportRef.value
|
|
38
45
|
if (!vp) return
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
canNext.value = overflowing && scrollLeft + clientWidth < scrollWidth - 1
|
|
46
|
+
const state = computeOverflowNavState(vp)
|
|
47
|
+
showNav.value = state.overflowing
|
|
48
|
+
canPrev.value = state.canPrev
|
|
49
|
+
canNext.value = state.canNext
|
|
44
50
|
}
|
|
45
51
|
|
|
46
52
|
/** 箭头按钮:按视口宽度 80% 的步长平滑滚动 */
|
|
47
53
|
const scrollByStep = (dir: 1 | -1) => {
|
|
48
54
|
const vp = viewportRef.value
|
|
49
55
|
if (!vp) return
|
|
50
|
-
|
|
56
|
+
scrollViewportByStep(vp, dir)
|
|
51
57
|
}
|
|
52
58
|
|
|
53
59
|
/** 活动标签自动滚入视野 */
|
|
@@ -61,25 +67,14 @@ export function useTabsBar(options: UseTabsBarOptions) {
|
|
|
61
67
|
if (activeIndex < 0) return
|
|
62
68
|
const el = list.children[activeIndex] as HTMLElement | undefined
|
|
63
69
|
if (!el) return
|
|
64
|
-
|
|
65
|
-
const vpRect = vp.getBoundingClientRect()
|
|
66
|
-
const elRect = el.getBoundingClientRect()
|
|
67
|
-
if (elRect.left < vpRect.left) {
|
|
68
|
-
vp.scrollTo({ left: vp.scrollLeft + (elRect.left - vpRect.left) - 8, behavior: 'smooth' })
|
|
69
|
-
} else if (elRect.right > vpRect.right) {
|
|
70
|
-
vp.scrollTo({ left: vp.scrollLeft + (elRect.right - vpRect.right) + 8, behavior: 'smooth' })
|
|
71
|
-
}
|
|
70
|
+
scrollElementIntoView(vp, el)
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
/** 鼠标滚轮(纵向)驱动水平滚动;触控板横滑(已有 deltaX)不拦截 */
|
|
75
74
|
const handleWheel = (e: WheelEvent) => {
|
|
76
|
-
if (!showNav.value) return
|
|
77
75
|
const vp = viewportRef.value
|
|
78
76
|
if (!vp) return
|
|
79
|
-
|
|
80
|
-
if (e.deltaY === 0) return
|
|
81
|
-
e.preventDefault()
|
|
82
|
-
vp.scrollLeft += e.deltaY
|
|
77
|
+
applyWheelHorizontalScroll(e, vp, showNav.value)
|
|
83
78
|
}
|
|
84
79
|
|
|
85
80
|
useResizeObserver({ targets: [viewportRef, listRef], onResize: () => updateNavState() })
|
package/src/types/collapse.ts
CHANGED
|
@@ -52,7 +52,7 @@ export interface CollapseItemProps {
|
|
|
52
52
|
*/
|
|
53
53
|
modelValue?: boolean
|
|
54
54
|
|
|
55
|
-
/**
|
|
55
|
+
/** 标题文本(也可通过 #header 插槽自定义整个头部) */
|
|
56
56
|
title?: string
|
|
57
57
|
|
|
58
58
|
/** 是否禁用 */
|
|
@@ -63,6 +63,13 @@ export interface CollapseItemProps {
|
|
|
63
63
|
* 在 `UCollapse` 内由父组件 `expandIcon` 统一管理。
|
|
64
64
|
*/
|
|
65
65
|
expandIcon?: Component
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* 折叠动画结束后卸载内容 DOM(展开时重新挂载),减少长列表的内存与渲染成本。
|
|
69
|
+
* 注意:卸载会丢失内容区的本地组件状态。
|
|
70
|
+
* @default false
|
|
71
|
+
*/
|
|
72
|
+
destroyOnCollapse?: boolean
|
|
66
73
|
}
|
|
67
74
|
|
|
68
75
|
export interface CollapseItemEmits {
|
package/src/types/contextmenu.ts
CHANGED
|
@@ -5,8 +5,8 @@ import type { Component } from 'vue'
|
|
|
5
5
|
* 右键菜单项
|
|
6
6
|
*/
|
|
7
7
|
export interface ContextmenuItem {
|
|
8
|
-
/**
|
|
9
|
-
label
|
|
8
|
+
/** 菜单名称(divider 时可空) */
|
|
9
|
+
label?: string
|
|
10
10
|
/** 菜单描述 */
|
|
11
11
|
description?: string
|
|
12
12
|
/** 菜单图标 */
|
|
@@ -17,6 +17,12 @@ export interface ContextmenuItem {
|
|
|
17
17
|
callback?: () => any
|
|
18
18
|
/** 是否禁用 */
|
|
19
19
|
disabled?: boolean | (() => boolean)
|
|
20
|
+
/** 渲染为分割线(忽略其余字段) */
|
|
21
|
+
divider?: boolean
|
|
22
|
+
/** 自定义内容组件(替代 label 文本渲染) */
|
|
23
|
+
render?: Component
|
|
24
|
+
/** 点击本项不触发关闭流程(供内嵌交互组件使用) */
|
|
25
|
+
keepOpen?: boolean
|
|
20
26
|
}
|
|
21
27
|
|
|
22
28
|
/** 鼠标右键菜单组件属性 */
|
|
@@ -24,8 +30,8 @@ export interface ContextmenuProps extends ComponentProps {
|
|
|
24
30
|
/** 鼠标位置 */
|
|
25
31
|
mousePosition: { x: number; y: number }
|
|
26
32
|
/**
|
|
27
|
-
*
|
|
28
|
-
* @default
|
|
33
|
+
* 菜单宽度。传数字为固定 px;传 `'max-content'` 时由内容撑开(配合根样式 min-width: 120px)。
|
|
34
|
+
* @default 150
|
|
29
35
|
*/
|
|
30
36
|
width?: number | string
|
|
31
37
|
/** 菜单项 */
|
package/src/types/layout.ts
CHANGED
|
@@ -38,10 +38,25 @@ export interface LayoutProps {
|
|
|
38
38
|
* @description 注意:当为true时,gap固定且需要有一项宽度为固定像素才能够拖拽
|
|
39
39
|
*/
|
|
40
40
|
resizable?: boolean
|
|
41
|
+
/**
|
|
42
|
+
* 每列的最小宽度(px),按列索引与 cols 对应,仅 resizable 拖拽时生效。
|
|
43
|
+
* 未指定的列不限制(可被压至 0)。
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* // 三栏拖拽时,左栏不小于 120px,右栏不小于 200px
|
|
47
|
+
* :cols="['1fr', '2fr', '300px']" :col-min-sizes="[120, undefined, 200]"
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
colMinSizes?: (number | undefined)[]
|
|
41
51
|
}
|
|
42
52
|
|
|
43
53
|
/** 布局组件定义的事件 */
|
|
44
|
-
export interface LayoutEmits {
|
|
54
|
+
export interface LayoutEmits {
|
|
55
|
+
/** 开始拖拽调节某条间隔(index 为间隔左侧列的索引) */
|
|
56
|
+
(e: 'resize-start', index: number): void
|
|
57
|
+
/** 拖拽调节结束 */
|
|
58
|
+
(e: 'resize-end', index: number): void
|
|
59
|
+
}
|
|
45
60
|
|
|
46
61
|
/** 布局组件暴露的属性和方法(组件内部使用) */
|
|
47
62
|
export interface _LayoutExposed {}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ActionGroupProps, _ActionGroupExposed } from "../../types/action.js";
|
|
2
|
-
import "../../types/index.js";
|
|
3
|
-
import { VNode } from "vue";
|
|
4
|
-
//#region src/components/action/action-group.vue.d.ts
|
|
5
|
-
type __VLS_Slots = {
|
|
6
|
-
default?: () => VNode[];
|
|
7
|
-
};
|
|
8
|
-
declare const __VLS_base: import("vue").DefineComponent<ActionGroupProps, _ActionGroupExposed, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ActionGroupProps> & Readonly<{}>, {
|
|
9
|
-
type: import("@veltra/utils").ColorType;
|
|
10
|
-
size: "small" | "default" | "large";
|
|
11
|
-
max: number;
|
|
12
|
-
text: boolean;
|
|
13
|
-
circle: boolean;
|
|
14
|
-
loading: boolean;
|
|
15
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
|
-
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
17
|
-
declare const _default: typeof __VLS_export;
|
|
18
|
-
type __VLS_WithSlots<T, S> = T & {
|
|
19
|
-
new (): {
|
|
20
|
-
$slots: S;
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
//#endregion
|
|
24
|
-
export { _default as default };
|
|
25
|
-
//# sourceMappingURL=action-group.vue.d.ts.map
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { ButtonType } from "../../types/button.js";
|
|
2
|
-
import { ActionProps } from "../../types/action.js";
|
|
3
|
-
import "../../types/index.js";
|
|
4
|
-
import "../../index.js";
|
|
5
|
-
//#region src/components/action/action.vue.d.ts
|
|
6
|
-
declare var __VLS_17: {}, __VLS_28: {};
|
|
7
|
-
type __VLS_Slots = {} & {
|
|
8
|
-
default?: (props: typeof __VLS_17) => any;
|
|
9
|
-
} & {
|
|
10
|
-
default?: (props: typeof __VLS_28) => any;
|
|
11
|
-
};
|
|
12
|
-
declare const __VLS_base: import("vue").DefineComponent<ActionProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
13
|
-
run: () => any;
|
|
14
|
-
}, string, import("vue").PublicProps, Readonly<ActionProps> & Readonly<{
|
|
15
|
-
onRun?: (() => any) | undefined;
|
|
16
|
-
}>, {
|
|
17
|
-
type: ButtonType;
|
|
18
|
-
size: import("@veltra/utils").ComponentSize;
|
|
19
|
-
text: boolean;
|
|
20
|
-
circle: boolean;
|
|
21
|
-
loading: boolean;
|
|
22
|
-
inDropdown: boolean;
|
|
23
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
24
|
-
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
25
|
-
declare const _default: typeof __VLS_export;
|
|
26
|
-
type __VLS_WithSlots<T, S> = T & {
|
|
27
|
-
new (): {
|
|
28
|
-
$slots: S;
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
//#endregion
|
|
32
|
-
export { _default as default };
|
|
33
|
-
//# sourceMappingURL=action.vue.d.ts.map
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { AutoCompleteProps, _AutoCompleteExposed } from "../../types/auto-complete.js";
|
|
2
|
-
import "../../types/index.js";
|
|
3
|
-
//#region src/components/auto-complete/auto-complete.vue.d.ts
|
|
4
|
-
type __VLS_Props = AutoCompleteProps;
|
|
5
|
-
type __VLS_Slots = {
|
|
6
|
-
default?: (props: {
|
|
7
|
-
option: string;
|
|
8
|
-
index: number;
|
|
9
|
-
}) => any;
|
|
10
|
-
suffix?: () => any;
|
|
11
|
-
prefix?: () => any;
|
|
12
|
-
};
|
|
13
|
-
type __VLS_ModelProps = {
|
|
14
|
-
modelValue?: string;
|
|
15
|
-
};
|
|
16
|
-
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
17
|
-
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, _AutoCompleteExposed, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
18
|
-
"update:modelValue": (value: string | undefined) => any;
|
|
19
|
-
} & {
|
|
20
|
-
"update:modelValue": (value: string) => any;
|
|
21
|
-
select: (value: string) => any;
|
|
22
|
-
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
23
|
-
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
24
|
-
onSelect?: ((value: string) => any) | undefined;
|
|
25
|
-
}>, {
|
|
26
|
-
disabled: boolean;
|
|
27
|
-
readonly: boolean;
|
|
28
|
-
placeholder: string;
|
|
29
|
-
clearable: boolean;
|
|
30
|
-
allowCustom: boolean;
|
|
31
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
32
|
-
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
33
|
-
declare const _default: typeof __VLS_export;
|
|
34
|
-
type __VLS_WithSlots<T, S> = T & {
|
|
35
|
-
new (): {
|
|
36
|
-
$slots: S;
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
//#endregion
|
|
40
|
-
export { _default as default };
|
|
41
|
-
//# sourceMappingURL=auto-complete.vue.d.ts.map
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { BadgeProps } from "../../types/badge.js";
|
|
2
|
-
import "../../types/index.js";
|
|
3
|
-
//#region src/components/badge/badge.vue.d.ts
|
|
4
|
-
declare var __VLS_1: {};
|
|
5
|
-
type __VLS_Slots = {} & {
|
|
6
|
-
default?: (props: typeof __VLS_1) => any;
|
|
7
|
-
};
|
|
8
|
-
declare const __VLS_base: import("vue").DefineComponent<BadgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BadgeProps> & Readonly<{}>, {
|
|
9
|
-
max: number;
|
|
10
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
|
-
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
12
|
-
declare const _default: typeof __VLS_export;
|
|
13
|
-
type __VLS_WithSlots<T, S> = T & {
|
|
14
|
-
new (): {
|
|
15
|
-
$slots: S;
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
//#endregion
|
|
19
|
-
export { _default as default };
|
|
20
|
-
//# sourceMappingURL=badge.vue.d.ts.map
|