niuma-ui 2.0.4 → 2.0.9
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 +58 -0
- package/dist/components/_shared/index.d.ts +2 -2
- package/dist/components/_shared/src/overlay-utils.d.ts +44 -1
- package/dist/components/_shared/src/overlay-utils.js +87 -2
- package/dist/components/_shared/src/reka.js +2 -2
- package/dist/components/alert/index.d.ts +1 -0
- package/dist/components/alert/src/RsAlert.css +120 -65
- package/dist/components/alert/src/RsAlert.d.ts +24 -5
- package/dist/components/alert/src/RsAlert.impl.js +108 -36
- package/dist/components/alert/src/RsAlert.js +1 -1
- package/dist/components/alert/src/alert-utils.d.ts +37 -0
- package/dist/components/alert/src/alert-utils.js +71 -0
- package/dist/components/auto-complete/src/RsAutoComplete.d.ts +1 -1
- package/dist/components/button/src/RsButton.impl.js +1 -1
- package/dist/components/card/src/RsCard.d.ts +1 -1
- package/dist/components/code-block/index.d.ts +1 -0
- package/dist/components/code-block/src/RsCodeBlock.css +93 -52
- package/dist/components/code-block/src/RsCodeBlock.d.ts +36 -9
- package/dist/components/code-block/src/RsCodeBlock.impl.js +203 -84
- package/dist/components/code-block/src/RsCodeBlock.js +1 -1
- package/dist/components/code-block/src/code-block-highlight.d.ts +4 -0
- package/dist/components/code-block/src/code-block-highlight.js +34 -0
- package/dist/components/code-block/src/code-block-utils.d.ts +23 -0
- package/dist/components/code-block/src/code-block-utils.js +71 -0
- package/dist/components/code-editor/index.d.ts +1 -1
- package/dist/components/code-editor/src/RsCodeEditor.css +118 -92
- package/dist/components/code-editor/src/RsCodeEditor.d.ts +14 -3
- package/dist/components/code-editor/src/RsCodeEditor.impl.js +261 -94
- package/dist/components/code-editor/src/RsCodeEditor.js +1 -1
- package/dist/components/code-editor/src/code-editor-utils.d.ts +15 -0
- package/dist/components/code-editor/src/code-editor-utils.js +36 -1
- package/dist/components/code-editor/src/code-mirror-completion.d.ts +1 -1
- package/dist/components/code-editor/src/code-mirror-completion.js +8 -5
- package/dist/components/code-editor/src/code-mirror-diagnostics.d.ts +2 -3
- package/dist/components/code-editor/src/code-mirror-diagnostics.js +3 -4
- package/dist/components/code-editor/src/code-mirror-ghost.d.ts +1 -1
- package/dist/components/code-editor/src/code-mirror-ghost.js +12 -3
- package/dist/components/code-editor/src/code-mirror-inline-edit.js +8 -3
- package/dist/components/code-editor/src/code-mirror-intel.d.ts +2 -2
- package/dist/components/code-editor/src/code-mirror-intel.js +50 -39
- package/dist/components/code-editor/src/code-mirror-lang.js +4 -0
- package/dist/components/code-editor/src/code-mirror-session.d.ts +13 -0
- package/dist/components/code-editor/src/code-mirror-session.js +30 -0
- package/dist/components/context-menu/index.d.ts +1 -1
- package/dist/components/context-menu/src/RsContextMenu.css +115 -89
- package/dist/components/context-menu/src/RsContextMenu.d.ts +32 -11
- package/dist/components/context-menu/src/RsContextMenu.impl.js +795 -48
- package/dist/components/context-menu/src/RsContextMenuItems.d.ts +25 -1
- package/dist/components/context-menu/src/RsContextMenuItems.impl.js +110 -61
- package/dist/components/context-menu/src/context-menu-utils.d.ts +89 -3
- package/dist/components/context-menu/src/context-menu-utils.js +168 -3
- package/dist/components/date-picker/src/RsDatePicker.d.ts +2 -2
- package/dist/components/date-picker/src/RsDateTimePicker.d.ts +2 -2
- package/dist/components/descriptions/index.d.ts +1 -1
- package/dist/components/descriptions/src/RsDescriptions.css +38 -11
- package/dist/components/descriptions/src/RsDescriptions.d.ts +20 -4
- package/dist/components/descriptions/src/RsDescriptions.impl.js +89 -19
- package/dist/components/descriptions/src/RsDescriptionsItem.impl.js +13 -6
- package/dist/components/descriptions/src/descriptions-utils.d.ts +19 -0
- package/dist/components/descriptions/src/descriptions-utils.js +39 -1
- package/dist/components/dialog/index.d.ts +1 -1
- package/dist/components/dialog/src/RsConfirmDialog.css +47 -21
- package/dist/components/dialog/src/RsConfirmDialog.d.ts +19 -7
- package/dist/components/dialog/src/RsConfirmDialog.impl.js +349 -119
- package/dist/components/dialog/src/RsConfirmDialog.js +2 -1
- package/dist/components/dialog/src/RsDialog.css +102 -109
- package/dist/components/dialog/src/RsDialog.d.ts +34 -24
- package/dist/components/dialog/src/RsDialog.impl.js +410 -177
- package/dist/components/dialog/src/RsDialog.js +2 -1
- package/dist/components/dialog/src/dialog-utils.d.ts +40 -1
- package/dist/components/dialog/src/dialog-utils.js +152 -1
- package/dist/components/dialog/src/dialog-window.js +29 -8
- package/dist/components/drawer/index.d.ts +1 -1
- package/dist/components/drawer/src/RsDrawer.css +61 -29
- package/dist/components/drawer/src/RsDrawer.d.ts +37 -21
- package/dist/components/drawer/src/RsDrawer.impl.js +441 -223
- package/dist/components/drawer/src/drawer-utils.d.ts +35 -0
- package/dist/components/drawer/src/drawer-utils.js +131 -1
- package/dist/components/dropdown/index.d.ts +1 -1
- package/dist/components/dropdown/src/RsDropdown.css +140 -61
- package/dist/components/dropdown/src/RsDropdown.d.ts +39 -6
- package/dist/components/dropdown/src/RsDropdown.impl.js +693 -63
- package/dist/components/dropdown/src/RsDropdownItemView.impl.js +17 -7
- package/dist/components/dropdown/src/RsDropdownItems.d.ts +32 -3
- package/dist/components/dropdown/src/RsDropdownItems.impl.js +171 -59
- package/dist/components/dropdown/src/dropdown-utils.d.ts +50 -0
- package/dist/components/dropdown/src/dropdown-utils.js +103 -3
- package/dist/components/empty/index.d.ts +1 -0
- package/dist/components/empty/src/RsEmpty.css +105 -23
- package/dist/components/empty/src/RsEmpty.d.ts +27 -4
- package/dist/components/empty/src/RsEmpty.impl.js +154 -11
- package/dist/components/empty/src/RsEmpty.js +2 -1
- package/dist/components/empty/src/empty-utils.d.ts +28 -0
- package/dist/components/empty/src/empty-utils.js +55 -0
- package/dist/components/form/src/RsForm.d.ts +1 -1
- package/dist/components/input-number/src/RsInputNumber.d.ts +1 -1
- package/dist/components/label/src/RsLabel.d.ts +1 -1
- package/dist/components/loading/index.d.ts +1 -0
- package/dist/components/loading/src/RsLoading.css +13 -97
- package/dist/components/loading/src/RsLoading.d.ts +52 -2
- package/dist/components/loading/src/RsLoading.impl.js +216 -33
- package/dist/components/loading/src/RsLoading.js +2 -1
- package/dist/components/loading/src/loading-status.css +210 -0
- package/dist/components/loading/src/loading-status.d.ts +34 -0
- package/dist/components/loading/src/loading-status.impl.js +84 -0
- package/dist/components/loading/src/loading-status.js +8 -0
- package/dist/components/loading/src/loading-utils.d.ts +51 -4
- package/dist/components/loading/src/loading-utils.js +122 -0
- package/dist/components/loading-bar/index.d.ts +1 -0
- package/dist/components/loading-bar/src/RsLoadingBar.css +72 -8
- package/dist/components/loading-bar/src/RsLoadingBar.d.ts +55 -11
- package/dist/components/loading-bar/src/RsLoadingBar.impl.js +298 -57
- package/dist/components/loading-bar/src/RsLoadingBar.js +1 -1
- package/dist/components/loading-bar/src/loading-bar-utils.d.ts +69 -0
- package/dist/components/loading-bar/src/loading-bar-utils.js +97 -0
- package/dist/components/log/src/RsLog.css +52 -144
- package/dist/components/log/src/RsLog.d.ts +12 -11
- package/dist/components/log/src/RsLog.impl.js +181 -148
- package/dist/components/log/src/RsLog.js +1 -1
- package/dist/components/log/src/RsLogRow.css +152 -0
- package/dist/components/log/src/RsLogRow.d.ts +35 -0
- package/dist/components/log/src/RsLogRow.impl.js +91 -0
- package/dist/components/log/src/RsLogRow.js +8 -0
- package/dist/components/log/src/log-utils.d.ts +8 -0
- package/dist/components/log/src/log-utils.js +71 -10
- package/dist/components/markdown/index.d.ts +1 -1
- package/dist/components/markdown/src/RsMarkdown.css +75 -32
- package/dist/components/markdown/src/RsMarkdown.d.ts +6 -2
- package/dist/components/markdown/src/RsMarkdown.impl.js +185 -17
- package/dist/components/markdown/src/markdown-utils.d.ts +26 -0
- package/dist/components/markdown/src/markdown-utils.js +114 -12
- package/dist/components/mentions/src/RsMentions.d.ts +2 -2
- package/dist/components/menu/index.d.ts +1 -1
- package/dist/components/menu/src/RsMenu.css +70 -29
- package/dist/components/menu/src/RsMenu.d.ts +58 -4
- package/dist/components/menu/src/RsMenu.impl.js +93 -46
- package/dist/components/menu/src/RsMenuItems.d.ts +22 -5
- package/dist/components/menu/src/RsMenuItems.impl.js +506 -154
- package/dist/components/menu/src/menu-utils.d.ts +56 -0
- package/dist/components/menu/src/menu-utils.js +139 -6
- package/dist/components/monaco-editor/index.d.ts +1 -1
- package/dist/components/monaco-editor/src/RsMonacoEditor.css +28 -16
- package/dist/components/monaco-editor/src/RsMonacoEditor.d.ts +39 -41
- package/dist/components/monaco-editor/src/RsMonacoEditor.impl.js +212 -133
- package/dist/components/monaco-editor/src/RsMonacoEditor.js +1 -1
- package/dist/components/monaco-editor/src/monaco-editor-utils.d.ts +126 -0
- package/dist/components/monaco-editor/src/monaco-editor-utils.js +302 -0
- package/dist/components/pagination/index.d.ts +2 -2
- package/dist/components/pagination/src/RsPagination.css +93 -46
- package/dist/components/pagination/src/RsPagination.d.ts +68 -8
- package/dist/components/pagination/src/RsPagination.impl.js +229 -86
- package/dist/components/pagination/src/RsPagination.js +1 -1
- package/dist/components/pagination/src/pagination-utils.d.ts +59 -0
- package/dist/components/pagination/src/pagination-utils.js +105 -1
- package/dist/components/popover/index.d.ts +1 -0
- package/dist/components/popover/src/RsPopover.css +124 -14
- package/dist/components/popover/src/RsPopover.d.ts +38 -7
- package/dist/components/popover/src/RsPopover.impl.js +546 -35
- package/dist/components/popover/src/RsPopover.js +2 -1
- package/dist/components/popover/src/popover-utils.d.ts +24 -2
- package/dist/components/popover/src/popover-utils.js +55 -0
- package/dist/components/sidebar/index.d.ts +1 -0
- package/dist/components/sidebar/src/RsSidebar.css +91 -33
- package/dist/components/sidebar/src/RsSidebar.d.ts +17 -9
- package/dist/components/sidebar/src/RsSidebar.impl.js +124 -22
- package/dist/components/sidebar/src/RsSidebar.js +1 -1
- package/dist/components/sidebar/src/RsSidebarGroup.css +23 -6
- package/dist/components/sidebar/src/RsSidebarGroup.d.ts +6 -2
- package/dist/components/sidebar/src/RsSidebarGroup.impl.js +17 -4
- package/dist/components/sidebar/src/RsSidebarGroup.js +1 -1
- package/dist/components/sidebar/src/RsSidebarItem.css +50 -20
- package/dist/components/sidebar/src/RsSidebarItem.d.ts +21 -3
- package/dist/components/sidebar/src/RsSidebarItem.impl.js +71 -20
- package/dist/components/sidebar/src/RsSidebarItem.js +1 -1
- package/dist/components/sidebar/src/sidebar-utils.d.ts +47 -0
- package/dist/components/sidebar/src/sidebar-utils.js +72 -0
- package/dist/components/split-pane/index.d.ts +2 -2
- package/dist/components/split-pane/src/RsSplitPane.css +41 -30
- package/dist/components/split-pane/src/RsSplitPane.d.ts +6 -2
- package/dist/components/split-pane/src/RsSplitPane.impl.js +153 -45
- package/dist/components/split-pane/src/split-pane-utils.d.ts +23 -0
- package/dist/components/split-pane/src/split-pane-utils.js +18 -1
- package/dist/components/stat-card/index.d.ts +1 -0
- package/dist/components/stat-card/src/RsStatCard.css +129 -25
- package/dist/components/stat-card/src/RsStatCard.d.ts +40 -4
- package/dist/components/stat-card/src/RsStatCard.impl.js +106 -12
- package/dist/components/stat-card/src/RsStatCard.js +1 -1
- package/dist/components/stat-card/src/stat-card-utils.d.ts +39 -0
- package/dist/components/stat-card/src/stat-card-utils.js +113 -0
- package/dist/components/steps/index.d.ts +1 -1
- package/dist/components/steps/src/RsSteps.css +158 -37
- package/dist/components/steps/src/RsSteps.d.ts +69 -5
- package/dist/components/steps/src/RsSteps.impl.js +168 -28
- package/dist/components/steps/src/RsSteps.js +1 -1
- package/dist/components/steps/src/steps-utils.d.ts +51 -1
- package/dist/components/steps/src/steps-utils.js +67 -1
- package/dist/components/table/src/RsTable.impl.js +4 -2
- package/dist/components/table/src/composables/useRsTableContextMenu.d.ts +16 -0
- package/dist/components/table/src/composables/useRsTableContextMenu.js +1 -1
- package/dist/components/table/src/composables/useRsTableEngine.js +6 -2
- package/dist/components/table/src/composables/useRsTableScrollLayout.js +2 -0
- package/dist/components/table/src/composables/useRsTableShell.d.ts +16 -0
- package/dist/components/table/src/rs-table-props.d.ts +1 -1
- package/dist/components/table/src/rs-table-props.js +0 -1
- package/dist/components/table/src/table-body/RsTableBody.impl.js +1 -0
- package/dist/components/table/src/table-body/RsTableCellEditor.impl.js +10 -2
- package/dist/components/table/src/table-body/RsTableColGroup.impl.js +1 -0
- package/dist/components/table/src/table-footer/RsTableSummaryRow.impl.js +1 -0
- package/dist/components/table/src/table-header/RsTableHeader.impl.js +1 -0
- package/dist/components/table/src/utils/table-utils.d.ts +10 -6
- package/dist/components/table/src/utils/table-utils.js +27 -25
- package/dist/components/table/style/rs-table.css +34 -20
- package/dist/components/tabs/index.d.ts +2 -2
- package/dist/components/tabs/src/RsTabs.css +225 -101
- package/dist/components/tabs/src/RsTabs.d.ts +37 -8
- package/dist/components/tabs/src/RsTabs.impl.js +400 -270
- package/dist/components/tabs/src/tabs-utils.d.ts +41 -2
- package/dist/components/tabs/src/tabs-utils.js +55 -1
- package/dist/components/terminal/index.d.ts +1 -1
- package/dist/components/terminal/src/RsTerminal.css +60 -37
- package/dist/components/terminal/src/RsTerminal.d.ts +36 -4
- package/dist/components/terminal/src/RsTerminal.impl.js +288 -68
- package/dist/components/terminal/src/RsTerminal.js +1 -1
- package/dist/components/terminal/src/terminal-utils.d.ts +42 -4
- package/dist/components/terminal/src/terminal-utils.js +113 -10
- package/dist/components/textarea/src/RsTextarea.d.ts +1 -1
- package/dist/components/time-picker/src/RsTimePicker.d.ts +2 -2
- package/dist/components/toaster/src/RsToaster.css +156 -203
- package/dist/components/toaster/src/RsToaster.d.ts +32 -2
- package/dist/components/toaster/src/RsToaster.impl.js +309 -34
- package/dist/components/toaster/src/toast-store.d.ts +95 -0
- package/dist/components/toaster/src/toast-store.js +177 -0
- package/dist/components/toaster/src/toast-utils.d.ts +60 -0
- package/dist/components/toaster/src/toast-utils.js +86 -0
- package/dist/components/toolbar/index.d.ts +1 -1
- package/dist/components/toolbar/src/RsToolbar.css +206 -32
- package/dist/components/toolbar/src/RsToolbar.d.ts +41 -16
- package/dist/components/toolbar/src/RsToolbar.impl.js +146 -18
- package/dist/components/toolbar/src/RsToolbar.js +2 -1
- package/dist/components/toolbar/src/toolbar-utils.d.ts +20 -0
- package/dist/components/toolbar/src/toolbar-utils.js +105 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/src/RsTooltip.css +104 -26
- package/dist/components/tooltip/src/RsTooltip.d.ts +38 -16
- package/dist/components/tooltip/src/RsTooltip.impl.js +420 -51
- package/dist/components/tooltip/src/RsTooltip.js +2 -1
- package/dist/components/tooltip/src/RsTooltipProvider.d.ts +4 -4
- package/dist/components/tooltip/src/RsTooltipProvider.impl.js +51 -14
- package/dist/components/tooltip/src/tooltip-utils.d.ts +30 -0
- package/dist/components/tooltip/src/tooltip-utils.js +23 -0
- package/dist/components/tree/index.d.ts +2 -2
- package/dist/components/tree/src/RsTree.css +84 -75
- package/dist/components/tree/src/RsTree.d.ts +20 -20
- package/dist/components/tree/src/RsTree.impl.js +292 -66
- package/dist/components/tree/src/RsTree.js +1 -1
- package/dist/components/tree/src/tree-utils.d.ts +22 -0
- package/dist/components/tree/src/tree-utils.js +18 -4
- package/dist/components/tree-select/src/RsTreeSelect.d.ts +1 -1
- package/dist/components/virtual-list/index.d.ts +1 -1
- package/dist/components/virtual-list/src/RsVirtualList.css +64 -9
- package/dist/components/virtual-list/src/RsVirtualList.d.ts +31 -5
- package/dist/components/virtual-list/src/RsVirtualList.impl.js +425 -76
- package/dist/components/virtual-list/src/RsVirtualList.js +1 -1
- package/dist/components/virtual-list/src/virtual-list-utils.d.ts +64 -1
- package/dist/components/virtual-list/src/virtual-list-utils.js +215 -1
- package/dist/composables/useRsLoadingBar.d.ts +2 -5
- package/dist/composables/useRsLoadingBar.js +21 -5
- package/dist/composables/useRsTabsNav.d.ts +3 -1
- package/dist/composables/useRsTabsNav.js +96 -28
- package/dist/composables/useRsToast.d.ts +11 -13
- package/dist/composables/useRsToast.js +66 -17
- package/dist/index.d.ts +30 -21
- package/dist/index.js +14 -0
- package/dist/locale/apply.js +6 -1
- package/dist/locale/messages.js +128 -2
- package/dist/styles.css +460 -797
- package/dist/theme/brand.example.css +2 -1
- package/dist/vite-plugins/niuma-ui-host.js +1 -1
- package/package.json +2 -3
|
@@ -1,16 +1,72 @@
|
|
|
1
|
+
export type RsMenuMode = 'vertical' | 'horizontal';
|
|
2
|
+
export type RsMenuTriggerAction = 'click' | 'hover';
|
|
3
|
+
export type RsMenuGetPopupContainer = () => HTMLElement | null | undefined;
|
|
1
4
|
export interface RsMenuItem {
|
|
2
5
|
key: string;
|
|
3
6
|
label: string;
|
|
4
7
|
icon?: string;
|
|
5
8
|
disabled?: boolean;
|
|
6
9
|
children?: RsMenuItem[];
|
|
10
|
+
/** 叶子可写成原生 a[href]。优先于 to。 */
|
|
11
|
+
href?: string;
|
|
12
|
+
/** 未传 href 时写到 a[href]。Vue Router 请在 click 里 preventDefault 后 push。 */
|
|
13
|
+
to?: string;
|
|
14
|
+
target?: string;
|
|
15
|
+
rel?: string;
|
|
16
|
+
/** 右侧辅助文案(折叠时隐藏) */
|
|
17
|
+
extra?: string;
|
|
18
|
+
type?: 'item' | 'divider';
|
|
7
19
|
}
|
|
8
20
|
export interface RsMenuItemGroup {
|
|
9
21
|
label: string;
|
|
10
22
|
children: RsMenuItem[];
|
|
11
23
|
}
|
|
12
24
|
export type RsMenuItems = RsMenuItem[] | RsMenuItemGroup[];
|
|
25
|
+
export interface RsMenuItemSlot {
|
|
26
|
+
item: RsMenuItem;
|
|
27
|
+
active: boolean;
|
|
28
|
+
parentActive: boolean;
|
|
29
|
+
open: boolean;
|
|
30
|
+
collapsed: boolean;
|
|
31
|
+
depth: number;
|
|
32
|
+
}
|
|
33
|
+
export interface RsMenuExpose {
|
|
34
|
+
focus: () => void;
|
|
35
|
+
blur: () => void;
|
|
36
|
+
}
|
|
37
|
+
export type RsMenuInstance = RsMenuExpose & {
|
|
38
|
+
$el: HTMLElement;
|
|
39
|
+
};
|
|
13
40
|
export declare function isMenuItemGroup(item: RsMenuItem | RsMenuItemGroup): item is RsMenuItemGroup;
|
|
41
|
+
export declare function isMenuDivider(item: RsMenuItem): boolean;
|
|
42
|
+
export declare function menuEntryKey(entry: RsMenuItem | RsMenuItemGroup, index: number): string;
|
|
43
|
+
export type RsMenuRenderBlock = {
|
|
44
|
+
type: 'group';
|
|
45
|
+
entry: RsMenuItemGroup;
|
|
46
|
+
key: string;
|
|
47
|
+
} | {
|
|
48
|
+
type: 'items';
|
|
49
|
+
items: RsMenuItem[];
|
|
50
|
+
key: string;
|
|
51
|
+
};
|
|
52
|
+
/** 连续叶子收成一块,分组单独一块,便于同一 ul 内方向键走动。 */
|
|
53
|
+
export declare function partitionMenuEntries(items: RsMenuItems): RsMenuRenderBlock[];
|
|
54
|
+
export declare function collectRootMenuItems(items: RsMenuItems): RsMenuItem[];
|
|
14
55
|
export declare function findMenuParentKeys(items: RsMenuItems, key: string): string[];
|
|
15
56
|
/** 判断菜单项自身或其任意后代是否匹配 key(用于父级高亮) */
|
|
16
57
|
export declare function menuItemContainsKey(item: RsMenuItem, key: string): boolean;
|
|
58
|
+
/** 与 key 同层的子菜单 key(含自身),供 accordion 关兄弟。 */
|
|
59
|
+
export declare function findMenuSiblingKeys(items: RsMenuItems, key: string): string[];
|
|
60
|
+
export declare function collectMenuDescendantKeys(items: RsMenuItems, key: string): string[];
|
|
61
|
+
/** 选中叶子时并入祖先。已全部打开则返回原数组引用,避免多余 emit。 */
|
|
62
|
+
export declare function mergeOpenKeysWithParents(current: string[], parents: string[]): string[];
|
|
63
|
+
export declare function toggleMenuOpenKeys(current: string[], key: string, open: boolean, items: RsMenuItems, accordion: boolean): string[];
|
|
64
|
+
export declare function resolveMenuItemHref(item: RsMenuItem): string | undefined;
|
|
65
|
+
/** `_blank` 时补 noopener / noreferrer,并保留调用方已有 rel。 */
|
|
66
|
+
export declare function mergeMenuLinkRel(rel: string | undefined, target: string | undefined): string | undefined;
|
|
67
|
+
export declare function menuArrowKeys(vertical: boolean, rtl: boolean): {
|
|
68
|
+
next: string;
|
|
69
|
+
prev: string;
|
|
70
|
+
open: string;
|
|
71
|
+
};
|
|
72
|
+
export declare function resolveMenuPortalTarget(getPopupContainer?: RsMenuGetPopupContainer): string | HTMLElement;
|
|
@@ -2,6 +2,51 @@
|
|
|
2
2
|
function isMenuItemGroup(item) {
|
|
3
3
|
return !("key" in item) && "children" in item;
|
|
4
4
|
}
|
|
5
|
+
function isMenuDivider(item) {
|
|
6
|
+
return item.type === "divider";
|
|
7
|
+
}
|
|
8
|
+
function menuEntryKey(entry, index) {
|
|
9
|
+
if (isMenuItemGroup(entry)) return `group:${entry.label}:${index}`;
|
|
10
|
+
return entry.key || `item:${index}`;
|
|
11
|
+
}
|
|
12
|
+
/** 连续叶子收成一块,分组单独一块,便于同一 ul 内方向键走动。 */
|
|
13
|
+
function partitionMenuEntries(items) {
|
|
14
|
+
const out = [];
|
|
15
|
+
let batch = [];
|
|
16
|
+
let batchIndex = 0;
|
|
17
|
+
items.forEach((entry, index) => {
|
|
18
|
+
if (isMenuItemGroup(entry)) {
|
|
19
|
+
if (batch.length) {
|
|
20
|
+
out.push({
|
|
21
|
+
type: "items",
|
|
22
|
+
items: batch,
|
|
23
|
+
key: `items:${batchIndex}`
|
|
24
|
+
});
|
|
25
|
+
batch = [];
|
|
26
|
+
batchIndex += 1;
|
|
27
|
+
}
|
|
28
|
+
out.push({
|
|
29
|
+
type: "group",
|
|
30
|
+
entry,
|
|
31
|
+
key: menuEntryKey(entry, index)
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
batch.push(entry);
|
|
36
|
+
});
|
|
37
|
+
if (batch.length) out.push({
|
|
38
|
+
type: "items",
|
|
39
|
+
items: batch,
|
|
40
|
+
key: `items:${batchIndex}`
|
|
41
|
+
});
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
function collectRootMenuItems(items) {
|
|
45
|
+
const out = [];
|
|
46
|
+
for (const entry of items) if (isMenuItemGroup(entry)) out.push(...entry.children);
|
|
47
|
+
else out.push(entry);
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
5
50
|
function findMenuParentKeys(items, key) {
|
|
6
51
|
function walk(list, ancestors) {
|
|
7
52
|
for (const item of list) {
|
|
@@ -13,11 +58,7 @@ function findMenuParentKeys(items, key) {
|
|
|
13
58
|
}
|
|
14
59
|
return null;
|
|
15
60
|
}
|
|
16
|
-
|
|
17
|
-
const found = isMenuItemGroup(entry) ? walk(entry.children, []) : walk([entry], []);
|
|
18
|
-
if (found) return found;
|
|
19
|
-
}
|
|
20
|
-
return [];
|
|
61
|
+
return walk(collectRootMenuItems(items), []) ?? [];
|
|
21
62
|
}
|
|
22
63
|
/** 判断菜单项自身或其任意后代是否匹配 key(用于父级高亮) */
|
|
23
64
|
function menuItemContainsKey(item, key) {
|
|
@@ -25,5 +66,97 @@ function menuItemContainsKey(item, key) {
|
|
|
25
66
|
if (!item.children?.length) return false;
|
|
26
67
|
return item.children.some((child) => menuItemContainsKey(child, key));
|
|
27
68
|
}
|
|
69
|
+
/** 与 key 同层的子菜单 key(含自身),供 accordion 关兄弟。 */
|
|
70
|
+
function findMenuSiblingKeys(items, key) {
|
|
71
|
+
function walk(list) {
|
|
72
|
+
const keys = list.filter((item) => !isMenuDivider(item) && Boolean(item.children?.length)).map((item) => item.key);
|
|
73
|
+
if (keys.includes(key)) return keys;
|
|
74
|
+
for (const item of list) if (item.children?.length) {
|
|
75
|
+
const found = walk(item.children);
|
|
76
|
+
if (found) return found;
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return walk(collectRootMenuItems(items)) ?? [];
|
|
81
|
+
}
|
|
82
|
+
function collectMenuDescendantKeys(items, key) {
|
|
83
|
+
function find(list) {
|
|
84
|
+
for (const item of list) {
|
|
85
|
+
if (item.key === key) return item;
|
|
86
|
+
if (item.children?.length) {
|
|
87
|
+
const found = find(item.children);
|
|
88
|
+
if (found) return found;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
function collect(item, acc) {
|
|
94
|
+
if (!item.children?.length) return acc;
|
|
95
|
+
for (const child of item.children) if (child.children?.length && !isMenuDivider(child)) {
|
|
96
|
+
acc.push(child.key);
|
|
97
|
+
collect(child, acc);
|
|
98
|
+
}
|
|
99
|
+
return acc;
|
|
100
|
+
}
|
|
101
|
+
const node = find(collectRootMenuItems(items));
|
|
102
|
+
return node ? collect(node, []) : [];
|
|
103
|
+
}
|
|
104
|
+
/** 选中叶子时并入祖先。已全部打开则返回原数组引用,避免多余 emit。 */
|
|
105
|
+
function mergeOpenKeysWithParents(current, parents) {
|
|
106
|
+
if (!parents.length) return current;
|
|
107
|
+
if (parents.every((key) => current.includes(key))) return current;
|
|
108
|
+
const next = new Set(current);
|
|
109
|
+
for (const key of parents) next.add(key);
|
|
110
|
+
return [...next];
|
|
111
|
+
}
|
|
112
|
+
function toggleMenuOpenKeys(current, key, open, items, accordion) {
|
|
113
|
+
if (!open) {
|
|
114
|
+
const drop = /* @__PURE__ */ new Set([key, ...collectMenuDescendantKeys(items, key)]);
|
|
115
|
+
return current.filter((item) => !drop.has(item));
|
|
116
|
+
}
|
|
117
|
+
if (!accordion) {
|
|
118
|
+
if (current.includes(key)) return current;
|
|
119
|
+
return [...current, key];
|
|
120
|
+
}
|
|
121
|
+
const siblings = findMenuSiblingKeys(items, key);
|
|
122
|
+
const drop = /* @__PURE__ */ new Set();
|
|
123
|
+
for (const sibling of siblings) {
|
|
124
|
+
if (sibling === key) continue;
|
|
125
|
+
drop.add(sibling);
|
|
126
|
+
for (const descendant of collectMenuDescendantKeys(items, sibling)) drop.add(descendant);
|
|
127
|
+
}
|
|
128
|
+
const next = current.filter((item) => !drop.has(item));
|
|
129
|
+
if (!next.includes(key)) next.push(key);
|
|
130
|
+
return next;
|
|
131
|
+
}
|
|
132
|
+
function resolveMenuItemHref(item) {
|
|
133
|
+
if (item.href) return item.href;
|
|
134
|
+
if (item.to) return item.to;
|
|
135
|
+
}
|
|
136
|
+
/** `_blank` 时补 noopener / noreferrer,并保留调用方已有 rel。 */
|
|
137
|
+
function mergeMenuLinkRel(rel, target) {
|
|
138
|
+
const parts = (rel ?? "").split(/\s+/).map((item) => item.trim()).filter(Boolean);
|
|
139
|
+
if (target === "_blank") {
|
|
140
|
+
if (!parts.includes("noopener")) parts.push("noopener");
|
|
141
|
+
if (!parts.includes("noreferrer")) parts.push("noreferrer");
|
|
142
|
+
}
|
|
143
|
+
return parts.length > 0 ? parts.join(" ") : void 0;
|
|
144
|
+
}
|
|
145
|
+
function menuArrowKeys(vertical, rtl) {
|
|
146
|
+
if (vertical) return {
|
|
147
|
+
next: "ArrowDown",
|
|
148
|
+
prev: "ArrowUp",
|
|
149
|
+
open: rtl ? "ArrowLeft" : "ArrowRight"
|
|
150
|
+
};
|
|
151
|
+
return {
|
|
152
|
+
next: rtl ? "ArrowLeft" : "ArrowRight",
|
|
153
|
+
prev: rtl ? "ArrowRight" : "ArrowLeft",
|
|
154
|
+
open: "ArrowDown"
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function resolveMenuPortalTarget(getPopupContainer) {
|
|
158
|
+
if (typeof document === "undefined") return "body";
|
|
159
|
+
return getPopupContainer?.() ?? document.body;
|
|
160
|
+
}
|
|
28
161
|
//#endregion
|
|
29
|
-
export { findMenuParentKeys, isMenuItemGroup, menuItemContainsKey };
|
|
162
|
+
export { collectMenuDescendantKeys, collectRootMenuItems, findMenuParentKeys, findMenuSiblingKeys, isMenuDivider, isMenuItemGroup, menuArrowKeys, menuEntryKey, menuItemContainsKey, mergeMenuLinkRel, mergeOpenKeysWithParents, partitionMenuEntries, resolveMenuItemHref, resolveMenuPortalTarget, toggleMenuOpenKeys };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { default as RsMonacoEditor } from './src/RsMonacoEditor.js';
|
|
2
|
-
export type { MonacoCompletionContext, MonacoCompletionPrefixResolver, MonacoCompletionRequest, MonacoCompletionSnippet, RsMonacoEditorExpose, } from './src/RsMonacoEditor.js';
|
|
2
|
+
export type { MonacoCompletionContext, MonacoCompletionPrefixResolver, MonacoCompletionRequest, MonacoCompletionSnippet, RsMonacoEditorContextMenu, RsMonacoEditorExpose, RsMonacoEditorInstance, RsMonacoEditorTheme, } from './src/RsMonacoEditor.js';
|
|
@@ -1,28 +1,40 @@
|
|
|
1
1
|
|
|
2
|
-
.rs-monaco[data-v-
|
|
3
|
-
/* hover tooltip 的定位上下文;勿加 overflow:hidden,否则会裁剪 Find Widget 的 tooltip */
|
|
2
|
+
.rs-monaco[data-v-b3d8e08a] {
|
|
4
3
|
position: relative;
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
box-sizing: border-box;
|
|
5
7
|
width: 100%;
|
|
6
|
-
|
|
7
|
-
border
|
|
8
|
-
|
|
8
|
+
overflow: hidden;
|
|
9
|
+
border: 1px solid var(--rs-monaco-border, var(--rs-border));
|
|
10
|
+
border-radius: var(--rs-monaco-radius, var(--rs-radius));
|
|
11
|
+
background: var(--rs-monaco-bg, var(--rs-surface-elevated));
|
|
12
|
+
color: var(--rs-monaco-fg, var(--rs-text-primary));
|
|
13
|
+
}
|
|
14
|
+
.rs-monaco[data-v-b3d8e08a]:not(.rs-monaco--embedded):focus-within {
|
|
15
|
+
outline: var(--rs-focus-ring-width, 2px) solid var(--rs-focus-border);
|
|
16
|
+
outline-offset: 1px;
|
|
9
17
|
}
|
|
10
|
-
.rs-monaco--embedded[data-v-
|
|
18
|
+
.rs-monaco--embedded[data-v-b3d8e08a] {
|
|
11
19
|
border: 0;
|
|
12
|
-
|
|
20
|
+
background: transparent;
|
|
13
21
|
flex: 1 1 auto;
|
|
14
|
-
min-
|
|
15
|
-
height: 100%;
|
|
22
|
+
min-block-size: 0;
|
|
16
23
|
}
|
|
17
|
-
[data-v-
|
|
18
|
-
|
|
24
|
+
.rs-monaco--disabled[data-v-b3d8e08a] {
|
|
25
|
+
opacity: var(--rs-monaco-disabled-opacity, 0.72);
|
|
19
26
|
}
|
|
20
|
-
[data-v-
|
|
27
|
+
[data-v-b3d8e08a] .monaco-editor,[data-v-b3d8e08a] .monaco-editor .overflow-guard,[data-v-b3d8e08a] .monaco-editor .monaco-scrollable-element {
|
|
21
28
|
border-radius: inherit;
|
|
29
|
+
}
|
|
30
|
+
[data-v-b3d8e08a] .monaco-editor .overflow-guard {
|
|
22
31
|
overflow: hidden;
|
|
23
32
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
33
|
+
[data-v-b3d8e08a] .monaco-editor .find-widget {
|
|
34
|
+
z-index: var(--rs-z-dropdown);
|
|
35
|
+
}
|
|
36
|
+
@media (prefers-reduced-motion: reduce) {
|
|
37
|
+
.rs-monaco[data-v-b3d8e08a]:not(.rs-monaco--embedded):focus-within {
|
|
38
|
+
outline-offset: 0;
|
|
39
|
+
}
|
|
28
40
|
}
|
|
@@ -1,45 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RsRadius } from '../../../theme/types';
|
|
2
2
|
/** VS Code 式调试装饰样式(断点 / 当前行);业务组件勿再自定义 glyph CSS */
|
|
3
3
|
import '../../../monaco/debug-decorations.css';
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
label: string;
|
|
7
|
-
insertText: string;
|
|
8
|
-
detail?: string;
|
|
9
|
-
documentation?: string;
|
|
10
|
-
filterText?: string;
|
|
11
|
-
sortText?: string;
|
|
12
|
-
kind?: 'snippet' | 'keyword' | 'property' | 'field' | 'function' | 'value';
|
|
13
|
-
preselect?: boolean;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* RsMonacoEditor 模板 ref 请用此类型。
|
|
17
|
-
* 不要写 `InstanceType<typeof RsMonacoEditor>`:组件实例类型过深,vue-tsc 会报 Excessive stack depth。
|
|
18
|
-
*/
|
|
19
|
-
export interface RsMonacoEditorExpose {
|
|
20
|
-
format: () => void;
|
|
21
|
-
getEditor: () => import('monaco-editor').editor.IStandaloneCodeEditor | null;
|
|
22
|
-
revealLine: (line: number) => void;
|
|
23
|
-
}
|
|
24
|
-
/** MonacoCompletionContext 描述一次补全请求的编辑器上下文。 */
|
|
25
|
-
export interface MonacoCompletionContext {
|
|
26
|
-
text: string;
|
|
27
|
-
offset: number;
|
|
28
|
-
line: number;
|
|
29
|
-
column: number;
|
|
30
|
-
prefix: string;
|
|
31
|
-
triggerCharacter?: string;
|
|
32
|
-
}
|
|
33
|
-
/** MonacoCompletionRequest 按当前文本和光标位置返回实例级候选。 */
|
|
34
|
-
export type MonacoCompletionRequest = (context: MonacoCompletionContext) => MonacoCompletionSnippet[] | Promise<MonacoCompletionSnippet[]>;
|
|
35
|
-
/** 补全前缀解析:由业务侧按方言注入,默认按标识符切词。 */
|
|
36
|
-
export type MonacoCompletionPrefixResolver = (linePrefix: string) => string;
|
|
4
|
+
import { type MonacoCompletionSnippet, type RsMonacoEditorContextMenu, type RsMonacoEditorExpose } from './monaco-editor-utils';
|
|
5
|
+
export type { MonacoCompletionContext, MonacoCompletionPrefixResolver, MonacoCompletionRequest, MonacoCompletionSnippet, RsMonacoEditorContextMenu, RsMonacoEditorExpose, RsMonacoEditorInstance, RsMonacoEditorTheme, } from './monaco-editor-utils';
|
|
37
6
|
type __VLS_Props = {
|
|
38
|
-
language?: MonacoLanguage;
|
|
7
|
+
language?: import('../../../monaco/languages').MonacoLanguage;
|
|
39
8
|
/** px 整数或 CSS 字符串如 '100%' / '20rem' */
|
|
40
9
|
height?: number | string;
|
|
41
10
|
readonly?: boolean;
|
|
42
|
-
/**
|
|
11
|
+
/** 不可编辑,且不再弹出只读提示。与 readonly 可同时开,disabled 优先锁 DOM。 */
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
/** 深色/浅色:auto 跟随 documentElement 的 data-rs-theme。Monaco 主题是进程级的。 */
|
|
43
14
|
theme?: 'auto' | 'vs-dark' | 'light';
|
|
44
15
|
/** 是否显示 minimap */
|
|
45
16
|
minimap?: boolean;
|
|
@@ -54,47 +25,74 @@ type __VLS_Props = {
|
|
|
54
25
|
debugCurrentLine?: number;
|
|
55
26
|
/** 调试:断点行号列表(1-based,编辑器行号) */
|
|
56
27
|
debugBreakpoints?: number[];
|
|
57
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* 嵌入面板:去掉自己的边框和底色,圆角跟父级,铺满父级。
|
|
30
|
+
* height 仍生效;父级是 flex 时也会 flex: 1。
|
|
31
|
+
*/
|
|
58
32
|
embedded?: boolean;
|
|
33
|
+
/** 外框圆角。embedded 时忽略,改跟父级。 */
|
|
34
|
+
radius?: RsRadius;
|
|
59
35
|
/**
|
|
60
36
|
* JSON Schema 对象(仅 language="json" 有效)。
|
|
61
37
|
* 每个编辑器实例使用独立的 Model URI,schema 通过 fileMatch 精确绑定,
|
|
62
38
|
* 不会污染其他 JSON 编辑器。
|
|
63
39
|
*/
|
|
64
40
|
jsonSchema?: object;
|
|
65
|
-
/** 实例级补全片段(
|
|
41
|
+
/** 实例级补全片段(Ctrl+Space / 触发字符生效)。 */
|
|
66
42
|
snippets?: MonacoCompletionSnippet[];
|
|
67
43
|
/** 按光标上下文动态生成候选;设置后与 snippets 合并。 */
|
|
68
|
-
completionRequest?: MonacoCompletionRequest;
|
|
44
|
+
completionRequest?: import('./monaco-editor-utils').MonacoCompletionRequest;
|
|
69
45
|
/** 自动触发动态补全的字符。 */
|
|
70
46
|
completionTriggerCharacters?: string[];
|
|
71
47
|
/**
|
|
72
48
|
* 自定义补全前缀(决定替换范围)。
|
|
73
49
|
* 默认按标识符字符切词;Mongo Shell / SQL 等方言由业务 composable 注入,勿写进本组件。
|
|
74
50
|
*/
|
|
75
|
-
completionPrefixResolver?: MonacoCompletionPrefixResolver;
|
|
51
|
+
completionPrefixResolver?: import('./monaco-editor-utils').MonacoCompletionPrefixResolver;
|
|
76
52
|
/**
|
|
77
53
|
* 覆盖/合并 Monaco Editor 构造选项(如 automaticLayout、suggest)。
|
|
78
54
|
* 浅合并顶层;`suggest` 会与默认 suggest 再浅合并一层。
|
|
55
|
+
* 请保持对象引用稳定,不要在模板里每次新建。
|
|
79
56
|
*/
|
|
80
57
|
options?: Record<string, unknown>;
|
|
58
|
+
/** 空文档时的占位。不进 v-model。 */
|
|
59
|
+
placeholder?: string;
|
|
60
|
+
/** 传给 Monaco 文本框的可访问名称。缺省走 monaco.label。 */
|
|
61
|
+
ariaLabel?: string;
|
|
62
|
+
/** 根节点 id。不传时用 useId。 */
|
|
63
|
+
id?: string;
|
|
64
|
+
/**
|
|
65
|
+
* 原生右键菜单。默认开。
|
|
66
|
+
* 关掉后不再弹出 Monaco 菜单,contextmenu 仍给出行、列和指针坐标。
|
|
67
|
+
*/
|
|
68
|
+
contextMenu?: boolean;
|
|
81
69
|
};
|
|
82
70
|
type __VLS_ModelProps = {
|
|
83
71
|
modelValue?: string;
|
|
84
72
|
};
|
|
85
73
|
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
86
74
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, RsMonacoEditorExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
75
|
+
blur: () => any;
|
|
76
|
+
contextmenu: (event: RsMonacoEditorContextMenu) => any;
|
|
77
|
+
focus: () => any;
|
|
87
78
|
"update:modelValue": (value: string) => any;
|
|
79
|
+
ready: () => any;
|
|
88
80
|
glyphMarginClick: (line: number) => any;
|
|
89
81
|
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
82
|
+
onBlur?: (() => any) | undefined;
|
|
83
|
+
onContextmenu?: ((event: RsMonacoEditorContextMenu) => any) | undefined;
|
|
84
|
+
onFocus?: (() => any) | undefined;
|
|
90
85
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
86
|
+
onReady?: (() => any) | undefined;
|
|
91
87
|
onGlyphMarginClick?: ((line: number) => any) | undefined;
|
|
92
88
|
}>, {
|
|
93
89
|
theme: "auto" | "vs-dark" | "light";
|
|
94
90
|
height: number | string;
|
|
91
|
+
disabled: boolean;
|
|
95
92
|
readonly: boolean;
|
|
93
|
+
contextMenu: boolean;
|
|
96
94
|
embedded: boolean;
|
|
97
|
-
language: MonacoLanguage;
|
|
95
|
+
language: import("../../../monaco/languages").MonacoLanguage;
|
|
98
96
|
minimap: boolean;
|
|
99
97
|
glyphMargin: boolean;
|
|
100
98
|
debugCurrentLine: number;
|