diff --git a/packages/opendesign/src/components/badge/OBadge.vue b/packages/opendesign/src/components/badge/OBadge.vue
index 35b1aff4f72d8d917bfea968dda93a6f1e060d7c..19a74e32086b7c2ea441554c3ff22900ee312a6a 100644
--- a/packages/opendesign/src/components/badge/OBadge.vue
+++ b/packages/opendesign/src/components/badge/OBadge.vue
@@ -1,8 +1,9 @@
diff --git a/packages/opendesign/src/components/breadcrumb/OBreadcrumbItem.vue b/packages/opendesign/src/components/breadcrumb/OBreadcrumbItem.vue
index 957b0e97117d1c26a600ef1f64b993ad22072c30..1be9187d1ee35fe6ad9ba82dc24ae8aaac0afee8 100644
--- a/packages/opendesign/src/components/breadcrumb/OBreadcrumbItem.vue
+++ b/packages/opendesign/src/components/breadcrumb/OBreadcrumbItem.vue
@@ -1,6 +1,5 @@
diff --git a/packages/opendesign/src/components/checkbox-group/index.ts b/packages/opendesign/src/components/checkbox-group/index.ts
index abc21ee4e8f16d504c9705e9a4ec677e7960a0d4..8c21b489b08cd7ec4028736108c3c7cff10efcba 100644
--- a/packages/opendesign/src/components/checkbox-group/index.ts
+++ b/packages/opendesign/src/components/checkbox-group/index.ts
@@ -8,4 +8,6 @@ const OCheckboxGroup = Object.assign(_OCheckboxGroup, {
},
});
+export * from './types';
+
export { OCheckboxGroup };
diff --git a/packages/opendesign/src/components/checkbox-group/types.ts b/packages/opendesign/src/components/checkbox-group/types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5bffd3e619e7db252e3d5af90f8cecf6a4c98c68
--- /dev/null
+++ b/packages/opendesign/src/components/checkbox-group/types.ts
@@ -0,0 +1,49 @@
+import type { DirectionT } from '../_shared/global';
+import type { ExtractPropTypes, PropType } from 'vue';
+
+export const checkboxGroupProps = {
+ /**
+ * 多选框组双向绑定值
+ */
+ modelValue: {
+ type: Array as PropType>,
+ },
+ /**
+ * 非受控状态时,多选框组默认值
+ */
+ defaultValue: {
+ type: Array as PropType>,
+ default: () => [],
+ },
+ /**
+ * 多选框组是否禁用
+ */
+ disabled: {
+ type: Boolean,
+ default: false,
+ },
+ /**
+ * 多选框组方向
+ * 'horizontal' | 'vertical'
+ */
+ direction: {
+ type: String as PropType,
+ default: 'horizontal',
+ },
+ /**
+ * 多选框组支持选中的最小多选框数量
+ */
+ min: {
+ type: Number,
+ default: undefined,
+ },
+ /**
+ * 多选框组支持选中的最大多选框数量
+ */
+ max: {
+ type: Number,
+ default: undefined,
+ },
+};
+
+export type CheckboxGroupPropsT = ExtractPropTypes;
diff --git a/packages/opendesign/src/components/checkbox/OCheckbox.vue b/packages/opendesign/src/components/checkbox/OCheckbox.vue
index 43e643881c1337df7bcb6b98e4893ac66beb8a60..20f45b0302d0e85446e00466385a856c314913b4 100644
--- a/packages/opendesign/src/components/checkbox/OCheckbox.vue
+++ b/packages/opendesign/src/components/checkbox/OCheckbox.vue
@@ -1,36 +1,11 @@
diff --git a/packages/opendesign/src/components/divider/index.ts b/packages/opendesign/src/components/divider/index.ts
index a1df53057a3d1c9503ef714f7b4ed65b9544ae61..d02d0ffab4dccaa4dcccf2817aba043af345f1e4 100644
--- a/packages/opendesign/src/components/divider/index.ts
+++ b/packages/opendesign/src/components/divider/index.ts
@@ -2,12 +2,12 @@ import type { App } from 'vue';
import _ODivider from './ODivider.vue';
-export * from './types';
-
const ODivider = Object.assign(_ODivider, {
install(app: App) {
app.component(_ODivider.name, _ODivider);
},
});
+export * from './types';
+
export { ODivider };
diff --git a/packages/opendesign/src/components/divider/types.ts b/packages/opendesign/src/components/divider/types.ts
index c277e8645b078e980e05fb96fb37fa147cc695da..7e84fbee615a34865a0615b1684e06e8492b2da8 100644
--- a/packages/opendesign/src/components/divider/types.ts
+++ b/packages/opendesign/src/components/divider/types.ts
@@ -1,2 +1,34 @@
+import { ExtractPropTypes, PropType } from 'vue';
+import type { DirectionT } from '../_shared/global';
+
export type DividerTypeT = 'solid' | 'dashed' | 'dotted';
export type DividerContentPositionT = 'left' | 'center' | 'right';
+
+export const dividerProps = {
+ /**
+ * 分割线类型
+ * 'solid' | 'dashed' | 'dotted'
+ */
+ type: {
+ type: String as PropType,
+ default: 'solid',
+ },
+ /**
+ * 分割线方向
+ * 'horizontal' | 'vertical'
+ */
+ direction: {
+ type: String as PropType,
+ default: 'horizontal',
+ },
+ /**
+ * 自定义内容位置
+ * 'left' | 'center' | 'right'
+ */
+ contentPosition: {
+ type: String as PropType,
+ default: 'center',
+ },
+};
+
+export type DividerPropsT = ExtractPropTypes;
diff --git a/packages/opendesign/src/components/menu/OMenu.vue b/packages/opendesign/src/components/menu/OMenu.vue
index a058cb7bb7d59f9e77f813c32995142428079695..32d5fbefe7d6c6333ff43c94bef47bf97376948a 100644
--- a/packages/opendesign/src/components/menu/OMenu.vue
+++ b/packages/opendesign/src/components/menu/OMenu.vue
@@ -47,7 +47,6 @@ onMounted(() => {
// 展开节点列表
const realExpanded = ref(expanded?.value ?? defaultExpanded.value);
-
watch(
() => expanded?.value,
(val) => {
diff --git a/packages/opendesign/src/components/menu/style/index.scss b/packages/opendesign/src/components/menu/style/index.scss
index f4fe0d6200ddd2a3d763857f44c0a26ffce8b241..9a5012006d403d91c5f1c314dbd5c930a60b4ce4 100644
--- a/packages/opendesign/src/components/menu/style/index.scss
+++ b/packages/opendesign/src/components/menu/style/index.scss
@@ -2,17 +2,17 @@
.o-menu {
list-style: none;
- width: var(--o-menu-width);
- color: var(--o-menu-color);
- background-color: var(--o-menu-bg);
+ width: var(--menu-width);
+ color: var(--menu-color);
+ background-color: var(--menu-bg);
margin: 0;
padding: 0;
}
// submenu
.o-sub-menu {
- font-size: var(--o-sub-menu-text-size);
- line-height: var(--o-sub-menu-text-height);
+ font-size: var(--sub-menu-text-size);
+ line-height: var(--sub-menu-text-height);
font-weight: 400;
}
@@ -41,13 +41,13 @@
transition: background-color var(--o-duration-m2) var(--o-easing-standard);
&:hover {
- background-color: var(--o-sub-menu-bg-hover);
+ background-color: var(--sub-menu-bg-hover);
}
}
.o-sub-menu-title-icon {
margin-right: 4px;
- font-size: var(--o-sub-menu-icon-height);
+ font-size: var(--sub-menu-icon-height);
}
.o-sub-menu-title-content {
@@ -60,7 +60,7 @@
position: absolute;
right: 16px;
transform: rotate(0);
- font-size: var(--o-sub-menu-icon-height);
+ font-size: var(--sub-menu-icon-height);
transition: transform var(--o-duration-m2) var(--o-easing-standard);
}
@@ -74,8 +74,8 @@
//menu-item
.o-menu-item {
- font-size: var(--o-menu-item-text-size);
- line-height: var(--o-menu-item-text-height);
+ font-size: var(--menu-item-text-size);
+ line-height: var(--menu-item-text-height);
border-radius: 8px;
padding: 12px 16px 12px 36px;
cursor: pointer;
@@ -85,7 +85,7 @@
transition: background-color var(--o-duration-s) var(--o-easing-standard);
&:not(.o-menu-item-disabled):hover {
- background-color: var(--o-menu-item-bg-hover);
+ background-color: var(--menu-item-bg-hover);
}
& + .o-menu-item {
@@ -94,10 +94,10 @@
}
.o-menu-item-active {
- background-color: var(--o-menu-item-bg-active);
+ background-color: var(--menu-item-bg-active);
}
.o-menu-item-disabled {
cursor: not-allowed;
- color: var(--o-menu-item-color-disabled);
+ color: var(--menu-item-color-disabled);
}
diff --git a/packages/opendesign/src/components/menu/style/var.scss b/packages/opendesign/src/components/menu/style/var.scss
index b97c4874532fb9d87787ba2ae71383224caafb6b..044682569be0fe5eb472919a493c487a8bdbdb71 100644
--- a/packages/opendesign/src/components/menu/style/var.scss
+++ b/packages/opendesign/src/components/menu/style/var.scss
@@ -1,20 +1,20 @@
.o-menu {
- --o-menu-width: 260px;
- --o-menu-bg: var(--o-color-fill2);
- --o-menu-color: var(--o-color-info1);
+ --menu-width: 260px;
+ --menu-bg: var(--o-color-fill2);
+ --menu-color: var(--o-color-info1);
}
.o-sub-menu {
- --o-sub-menu-bg-hover: var(--o-color-control2-light);
- --o-sub-menu-text-size: var(--o-font_size-h4);
- --o-sub-menu-text-height: var(--o-line_height-h4);
- --o-sub-menu-icon-height: var(--o-font_size-h1);
+ --sub-menu-bg-hover: var(--o-color-control2-light);
+ --sub-menu-text-size: var(--o-font_size-h4);
+ --sub-menu-text-height: var(--o-line_height-h4);
+ --sub-menu-icon-height: var(--o-font_size-h1);
}
.o-menu-item {
- --o-menu-item-text-size: var(--o-font_size-text);
- --o-menu-item-text-height: var(--o-line_height-text);
- --o-menu-item-bg-active: var(--o-color-control2);
- --o-menu-item-bg-hover: var(--o-color-control2-light);
- --o-menu-item-color-disabled: var(--o-color-info4);
+ --menu-item-text-size: var(--o-font_size-text);
+ --menu-item-text-height: var(--o-line_height-text);
+ --menu-item-bg-active: var(--o-color-control2);
+ --menu-item-bg-hover: var(--o-color-control2-light);
+ --menu-item-color-disabled: var(--o-color-info4);
}
diff --git a/packages/opendesign/src/components/radio-group/ORadioGroup.vue b/packages/opendesign/src/components/radio-group/ORadioGroup.vue
index 1d7c4161441bab721e9e111d8e60851b0b82b561..23ce853537566542e3b9bc739069fefc0eef66c7 100644
--- a/packages/opendesign/src/components/radio-group/ORadioGroup.vue
+++ b/packages/opendesign/src/components/radio-group/ORadioGroup.vue
@@ -1,47 +1,26 @@
diff --git a/packages/opendesign/src/components/radio-group/index.ts b/packages/opendesign/src/components/radio-group/index.ts
index 87fec21f05f79d8d04c89cfbb4f73d165bc7b111..2d876dff1e2ddc7d9f631d915f8e055d1692881a 100644
--- a/packages/opendesign/src/components/radio-group/index.ts
+++ b/packages/opendesign/src/components/radio-group/index.ts
@@ -8,4 +8,6 @@ const ORadioGroup = Object.assign(_ORadioGroup, {
},
});
+export * from './types';
+
export { ORadioGroup };
diff --git a/packages/opendesign/src/components/radio-group/types.ts b/packages/opendesign/src/components/radio-group/types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4ac84ac25694b3506aae4c80bd549ca9f618c395
--- /dev/null
+++ b/packages/opendesign/src/components/radio-group/types.ts
@@ -0,0 +1,35 @@
+import { ExtractPropTypes, PropType } from 'vue';
+import { DirectionT } from '../_shared/global';
+
+export const radioGroupProps = {
+ /**
+ * 单选框组双向绑定值
+ */
+ modelValue: {
+ type: [String, Number, Boolean],
+ },
+ /**
+ * 非受控状态时,单选框组默认值
+ */
+ defaultValue: {
+ type: [String, Number, Boolean],
+ default: '',
+ },
+ /**
+ * 单选框组是否禁用
+ */
+ disabled: {
+ type: Boolean,
+ default: false,
+ },
+ /**
+ * 单选框组方向
+ * 'horizontal' | 'vertical'
+ */
+ direction: {
+ type: String as PropType,
+ default: 'horizontal',
+ },
+};
+
+export type RadioGroupPropsT = ExtractPropTypes;
diff --git a/packages/opendesign/src/components/radio/ORadio.vue b/packages/opendesign/src/components/radio/ORadio.vue
index 7a28e6eee8000950284c7951b32018d81a45b3d5..f70bb37b03512d012b65e19cb6b564d89bfd2536 100644
--- a/packages/opendesign/src/components/radio/ORadio.vue
+++ b/packages/opendesign/src/components/radio/ORadio.vue
@@ -1,32 +1,10 @@