diff --git a/packages/docs/icons/svgs/fill/menu.svg b/packages/docs/icons/svgs/fill/menu.svg
new file mode 100644
index 0000000000000000000000000000000000000000..49c3c0c52ff8f4e8090d206231425f926f82946c
--- /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 0000000000000000000000000000000000000000..4203cd27807653d64bdb277844ff94917a966e20
--- /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 0000000000000000000000000000000000000000..8731a338a8e69bf9247646cc87f31e4c5f7ae974
--- /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 0000000000000000000000000000000000000000..0d5fcf011705172711b332d6239f57121d29e588
--- /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 0000000000000000000000000000000000000000..b6ce1cea6aed08b449d2615839965e4db62f8ed0
--- /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 0000000000000000000000000000000000000000..447e98b71cb1c05437333b0d25579a5e4b2e7bf3
--- /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 45c05a13f964dd7ca3e9d742ff88c64c8cdf908e..e265ed95ba31fe18ab3469acd7aff8823c2cb4a7 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,