From a587c33d57da79d85a1a6867e660416501ea3954 Mon Sep 17 00:00:00 2001
From: sakurayinfei <970412446@qq.com>
Date: Wed, 15 Oct 2025 15:24:40 +0800
Subject: [PATCH] =?UTF-8?q?doc(menu):=20=E6=96=B0=E5=A2=9E=E6=96=87?=
=?UTF-8?q?=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/docs/icons/svgs/fill/menu.svg | 4 ++
.../src/menu/__docs__/__case__/CustomIcon.vue | 36 +++++++++++
.../menu/__docs__/__case__/MenuAccordion.vue | 33 +++++++++++
.../src/menu/__docs__/__case__/MenuSize.vue | 59 +++++++++++++++++++
.../src/menu/__docs__/index.en-US.md | 18 ++++++
.../src/menu/__docs__/index.zh-CN.md | 18 ++++++
packages/opendesign/src/menu/types.ts | 53 +++++++++++++----
7 files changed, 211 insertions(+), 10 deletions(-)
create mode 100644 packages/docs/icons/svgs/fill/menu.svg
create mode 100644 packages/opendesign/src/menu/__docs__/__case__/CustomIcon.vue
create mode 100644 packages/opendesign/src/menu/__docs__/__case__/MenuAccordion.vue
create mode 100644 packages/opendesign/src/menu/__docs__/__case__/MenuSize.vue
create mode 100644 packages/opendesign/src/menu/__docs__/index.en-US.md
create mode 100644 packages/opendesign/src/menu/__docs__/index.zh-CN.md
diff --git a/packages/docs/icons/svgs/fill/menu.svg b/packages/docs/icons/svgs/fill/menu.svg
new file mode 100644
index 00000000..49c3c0c5
--- /dev/null
+++ b/packages/docs/icons/svgs/fill/menu.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/packages/opendesign/src/menu/__docs__/__case__/CustomIcon.vue b/packages/opendesign/src/menu/__docs__/__case__/CustomIcon.vue
new file mode 100644
index 00000000..4203cd27
--- /dev/null
+++ b/packages/opendesign/src/menu/__docs__/__case__/CustomIcon.vue
@@ -0,0 +1,36 @@
+
+
+
+### 自定义图标
+
+
+
+### Custom Icons
+
+
+
+
+
+
+ Home
+
+
+ Edit
+ Undo
+ Redo
+
+
+ Calendar
+ Today
+ Yesterday
+
+
+
+
diff --git a/packages/opendesign/src/menu/__docs__/__case__/MenuAccordion.vue b/packages/opendesign/src/menu/__docs__/__case__/MenuAccordion.vue
new file mode 100644
index 00000000..8731a338
--- /dev/null
+++ b/packages/opendesign/src/menu/__docs__/__case__/MenuAccordion.vue
@@ -0,0 +1,33 @@
+
+
+
+### 手风琴
+
+
+
+### Accordion
+
+
+
+
+
+ Sub menu 1
+ Item 1-1
+ Item 1-2
+
+
+ Sub menu 2
+ Item 2-1
+
+ Sub menu 2-2
+ Item 2-2-1
+
+
+ Sub menu 2-3
+ Item 2-3-1
+
+
+
+
diff --git a/packages/opendesign/src/menu/__docs__/__case__/MenuSize.vue b/packages/opendesign/src/menu/__docs__/__case__/MenuSize.vue
new file mode 100644
index 00000000..0d5fcf01
--- /dev/null
+++ b/packages/opendesign/src/menu/__docs__/__case__/MenuSize.vue
@@ -0,0 +1,59 @@
+
+
+
+### 不同尺寸
+
+**注意**:在 `small` 尺寸下
+
+- 展开/收起图标移至左侧,并增加左侧分割线以增强层级区分。
+- 不再支持自定义左侧图标(即 `icon` 属性及 `icon` 插槽无效)。
+
+
+
+### Different Sizes
+
+**Note**: In the `small` size
+
+- The expand/collapse icon is moved to the left and a left divider is added to enhance hierarchical distinction.
+- Custom left icons are no longer supported (i.e., the `icon` prop and `icon` slot are invalid).
+
+
+
+
+
+
diff --git a/packages/opendesign/src/menu/__docs__/index.en-US.md b/packages/opendesign/src/menu/__docs__/index.en-US.md
new file mode 100644
index 00000000..b6ce1cea
--- /dev/null
+++ b/packages/opendesign/src/menu/__docs__/index.en-US.md
@@ -0,0 +1,18 @@
+---
+sidebar: OMenu
+kind: nav
+---
+
+# OMenu
+
+## Demo
+
+
+
+
+
+## API
+
+
+
+
diff --git a/packages/opendesign/src/menu/__docs__/index.zh-CN.md b/packages/opendesign/src/menu/__docs__/index.zh-CN.md
new file mode 100644
index 00000000..447e98b7
--- /dev/null
+++ b/packages/opendesign/src/menu/__docs__/index.zh-CN.md
@@ -0,0 +1,18 @@
+---
+sidebar: OMenu 菜单
+kind: nav
+---
+
+# OMenu 菜单
+
+## 示例
+
+
+
+
+
+## API
+
+
+
+
diff --git a/packages/opendesign/src/menu/types.ts b/packages/opendesign/src/menu/types.ts
index 45c05a13..e265ed95 100644
--- a/packages/opendesign/src/menu/types.ts
+++ b/packages/opendesign/src/menu/types.ts
@@ -8,46 +8,57 @@ export const menuProps = {
/**
* @zh-CN 菜单尺寸
* @en-US Menu size
+ * @default 'medium'
*/
size: {
type: String as PropType,
- default: 'medium'
+ default: 'medium',
},
/**
- * 是否开启手风琴模式
+ * @zh-CN 是否开启手风琴模式
+ * @en-US Whether to enable accordion mode
+ * @default false
*/
accordion: {
type: Boolean,
default: false,
},
/**
- * 层级缩进
+ * @zh-CN 层级缩进距离
+ * @en-US Nested Indentation Distance
+ * @default 20
*/
levelIndent: {
type: Number,
default: 20,
},
/**
- * 默认选中值 v-model
+ * @zh-CN 选中值
+ * @en-US Selected value
*/
modelValue: {
type: String,
},
/**
- * 非受控模式时,默认选中值
+ * @zh-CN 非受控模式时,默认选中值
+ * @en-US Default selected value when not controlled
+ * @default ''
*/
defaultValue: {
type: String,
default: '',
},
/**
- * 默认展开的子菜单值 v-model
+ * @zh-CN 展开节点值
+ * @en-US Expanded node value
*/
expanded: {
type: Array as PropType>,
},
/**
- * 非受控模式时,默认展开的子菜单值
+ * @zh-CN 非受控模式时,默认展开节点值
+ * @en-US Default expanded node value when not controlled
+ * @default []
*/
defaultExpanded: {
type: Array as PropType>,
@@ -59,13 +70,25 @@ export type MenuPropsT = ExtractPropTypes;
// SubMenuProps
export const subMenuProps = {
+ /**
+ * @zh-CN 菜单项值
+ * @en-US Menu item value
+ */
value: {
type: String,
- required: true,
+ required: true as const,
},
+ /**
+ * @zh-CN 菜单项是否可选
+ * @en-US Whether the menu item is selectable
+ */
selectable: {
type: Boolean,
},
+ /**
+ * @zh-CN 前缀图标
+ * @en-US Prefix icon
+ */
icon: {
type: Object as PropType,
},
@@ -74,16 +97,26 @@ export type SubMenuPropsT = ExtractPropTypes;
// MenuItemProps
export const menuItemProps = {
+ /**
+ * @zh-CN 菜单项值
+ * @en-US Menu item value
+ */
value: {
type: String,
- required: true,
+ required: true as const,
},
/**
- * 前缀图标
+ * @zh-CN 前缀图标
+ * @en-US Prefix icon
*/
icon: {
type: Object as PropType,
},
+ /**
+ * @zh-CN 禁用
+ * @en-US Disabled
+ * @default false
+ */
disabled: {
type: Boolean,
default: false,
--
Gitee