From 8099de59c089c8d17156f88c0197c4a9b9aa981b Mon Sep 17 00:00:00 2001 From: Bang <15622356989@163.com> Date: Wed, 22 Feb 2023 11:13:16 +0800 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20=E6=A0=BC=E5=BC=8F=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/docs/tag.md | 4 ++-- packages/opendesign/src/components/checkbox/OCheckbox.vue | 2 +- packages/opendesign/src/components/radio/ORadio.vue | 2 +- packages/portal/src/components/TheAside.vue | 2 ++ 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/docs/tag.md b/packages/docs/tag.md index 3eddd8bf..53dd9197 100644 --- a/packages/docs/tag.md +++ b/packages/docs/tag.md @@ -6,8 +6,8 @@ | :--------------- | :--------------------------------------------- | :------- | ------------------------------------------------------- | | status | 'normal' \| 'success' \| 'warning' \| 'danger' | 'normal' | 标签状态 | | bordered | boolean | false | 是否有边框 | -| size | 'large' \| 'normal' \| 'small' | 'normal' | 标签形状 | -| shape | 'normal' \| 'round' | 'normal' | 尺寸 | +| size | 'large' \| 'normal' \| 'small' | 'normal' | 标签尺寸 | +| shape | 'normal' \| 'round' | 'normal' | 标签形状 | | closable | boolean | false | 是否可关闭 | | checkable | boolean | false | 是否可选中 | | checked(v-model) | boolean | false | 是否被选中(仅 checkable 为 true 生效) | diff --git a/packages/opendesign/src/components/checkbox/OCheckbox.vue b/packages/opendesign/src/components/checkbox/OCheckbox.vue index ab1113f5..5242f95e 100644 --- a/packages/opendesign/src/components/checkbox/OCheckbox.vue +++ b/packages/opendesign/src/components/checkbox/OCheckbox.vue @@ -38,9 +38,9 @@ const emits = defineEmits<{ }>(); const checkboxGroupInjection = inject(checkboxGroupInjectKey, null); + // 监听modelValue改变 const isModelValueChanged = ref(false); - watch( () => props.modelValue, () => { diff --git a/packages/opendesign/src/components/radio/ORadio.vue b/packages/opendesign/src/components/radio/ORadio.vue index 333a337b..5db632cc 100644 --- a/packages/opendesign/src/components/radio/ORadio.vue +++ b/packages/opendesign/src/components/radio/ORadio.vue @@ -21,6 +21,7 @@ interface RadioPropT { */ disabled?: boolean; } + const props = withDefaults(defineProps(), { modelValue: undefined, defaultChecked: false, @@ -36,7 +37,6 @@ const radioGroupInjection = inject(radioGroupInjectKey, null); // 监听modelValue改变 const isModelValueChanged = ref(false); - watch( () => props.modelValue, () => { diff --git a/packages/portal/src/components/TheAside.vue b/packages/portal/src/components/TheAside.vue index 66203d4e..eb47250e 100644 --- a/packages/portal/src/components/TheAside.vue +++ b/packages/portal/src/components/TheAside.vue @@ -46,6 +46,8 @@ const navClick = (item: typeof navList[0]) => { background-color: var(--o-color-bg3); color: var(--o-color-text1); border-right: 1px solid var(--o-color-border2); + overflow: auto; + height: calc(100vh - 48px); } .aside-title { padding: 8px; -- Gitee From 182f750b4cc96a52884269616d1cb70ba43eda89 Mon Sep 17 00:00:00 2001 From: Bang <15622356989@163.com> Date: Wed, 22 Feb 2023 23:46:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9Erate=E8=AF=84?= =?UTF-8?q?=E5=88=86=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/docs/rate.md | 27 ++++++ .../opendesign/src/components/rate/ORate.vue | 95 +++++++++++++++++++ .../components/rate/__demo__/IndexRate.vue | 23 +++++ .../rate/__demo__/RateAllowHalf.vue | 16 ++++ .../components/rate/__demo__/RateBasic.vue | 26 +++++ .../rate/__demo__/RateClearable.vue | 16 ++++ .../components/rate/__demo__/RateColor.vue | 23 +++++ .../components/rate/__demo__/RateCount.vue | 14 +++ .../src/components/rate/__demo__/RateIcon.vue | 32 +++++++ .../src/components/rate/__demo__/RateSize.vue | 22 +++++ .../opendesign/src/components/rate/index.ts | 13 +++ .../src/components/rate/style/index.scss | 44 +++++++++ .../src/components/rate/style/index.ts | 2 + .../src/components/rate/style/var.scss | 30 ++++++ .../opendesign/src/components/rate/types.ts | 64 +++++++++++++ .../opendesign/src/icons/svgs/fill/star.svg | 4 + 16 files changed, 451 insertions(+) create mode 100644 packages/docs/rate.md create mode 100644 packages/opendesign/src/components/rate/ORate.vue create mode 100644 packages/opendesign/src/components/rate/__demo__/IndexRate.vue create mode 100644 packages/opendesign/src/components/rate/__demo__/RateAllowHalf.vue create mode 100644 packages/opendesign/src/components/rate/__demo__/RateBasic.vue create mode 100644 packages/opendesign/src/components/rate/__demo__/RateClearable.vue create mode 100644 packages/opendesign/src/components/rate/__demo__/RateColor.vue create mode 100644 packages/opendesign/src/components/rate/__demo__/RateCount.vue create mode 100644 packages/opendesign/src/components/rate/__demo__/RateIcon.vue create mode 100644 packages/opendesign/src/components/rate/__demo__/RateSize.vue create mode 100644 packages/opendesign/src/components/rate/index.ts create mode 100644 packages/opendesign/src/components/rate/style/index.scss create mode 100644 packages/opendesign/src/components/rate/style/index.ts create mode 100644 packages/opendesign/src/components/rate/style/var.scss create mode 100644 packages/opendesign/src/components/rate/types.ts create mode 100644 packages/opendesign/src/icons/svgs/fill/star.svg diff --git a/packages/docs/rate.md b/packages/docs/rate.md new file mode 100644 index 00000000..de58c481 --- /dev/null +++ b/packages/docs/rate.md @@ -0,0 +1,27 @@ +# Rate 评分 + +## props + +| name | type | 默认值 | 说明 | +| :------------------ | :--------------------------------------------- | :------- | -------------------------- | +| count | number | 5 | 可选,评分数量 | +| modelValue(v-model) | number | - | 可选,双向绑定值 | +| defaultValue | number | 0 | 可选,非受控状态时,默认值 | +| size | 'large' \| 'normal' \| 'small' | 'normal' | 标签尺寸 | +| color | 'normal' \| 'primary' \| 'warning' \| 'danger' | 'normal' | 标签颜色 | +| readonly | boolean | false | 可选,是否只读 | +| allowHalf | boolean | false | 可选,是否支持半选 | +| clearable | boolean | false | 可选,是否支持可清 | +| 空 | + +## event + +| name | 参数 | 说明 | +| :----- | :---------- | :------------------- | +| change | val: number | 双向绑定值改变时触发 | + +## slot + +| name | 参数 | 说明 | +| :--- | :--- | :------------- | +| icon | - | 自定义评分图标 | diff --git a/packages/opendesign/src/components/rate/ORate.vue b/packages/opendesign/src/components/rate/ORate.vue new file mode 100644 index 00000000..69aac911 --- /dev/null +++ b/packages/opendesign/src/components/rate/ORate.vue @@ -0,0 +1,95 @@ + + + diff --git a/packages/opendesign/src/components/rate/__demo__/IndexRate.vue b/packages/opendesign/src/components/rate/__demo__/IndexRate.vue new file mode 100644 index 00000000..cf400f88 --- /dev/null +++ b/packages/opendesign/src/components/rate/__demo__/IndexRate.vue @@ -0,0 +1,23 @@ + + + diff --git a/packages/opendesign/src/components/rate/__demo__/RateAllowHalf.vue b/packages/opendesign/src/components/rate/__demo__/RateAllowHalf.vue new file mode 100644 index 00000000..66fd1820 --- /dev/null +++ b/packages/opendesign/src/components/rate/__demo__/RateAllowHalf.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/opendesign/src/components/rate/__demo__/RateBasic.vue b/packages/opendesign/src/components/rate/__demo__/RateBasic.vue new file mode 100644 index 00000000..9cc0ed61 --- /dev/null +++ b/packages/opendesign/src/components/rate/__demo__/RateBasic.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/packages/opendesign/src/components/rate/__demo__/RateClearable.vue b/packages/opendesign/src/components/rate/__demo__/RateClearable.vue new file mode 100644 index 00000000..afe1d64f --- /dev/null +++ b/packages/opendesign/src/components/rate/__demo__/RateClearable.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/opendesign/src/components/rate/__demo__/RateColor.vue b/packages/opendesign/src/components/rate/__demo__/RateColor.vue new file mode 100644 index 00000000..a4c4e956 --- /dev/null +++ b/packages/opendesign/src/components/rate/__demo__/RateColor.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/packages/opendesign/src/components/rate/__demo__/RateCount.vue b/packages/opendesign/src/components/rate/__demo__/RateCount.vue new file mode 100644 index 00000000..cf45b736 --- /dev/null +++ b/packages/opendesign/src/components/rate/__demo__/RateCount.vue @@ -0,0 +1,14 @@ + + + diff --git a/packages/opendesign/src/components/rate/__demo__/RateIcon.vue b/packages/opendesign/src/components/rate/__demo__/RateIcon.vue new file mode 100644 index 00000000..c36d0b2e --- /dev/null +++ b/packages/opendesign/src/components/rate/__demo__/RateIcon.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/packages/opendesign/src/components/rate/__demo__/RateSize.vue b/packages/opendesign/src/components/rate/__demo__/RateSize.vue new file mode 100644 index 00000000..a7d0b654 --- /dev/null +++ b/packages/opendesign/src/components/rate/__demo__/RateSize.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/packages/opendesign/src/components/rate/index.ts b/packages/opendesign/src/components/rate/index.ts new file mode 100644 index 00000000..04a152fa --- /dev/null +++ b/packages/opendesign/src/components/rate/index.ts @@ -0,0 +1,13 @@ +import type { App } from 'vue'; + +import _ORate from './ORate.vue'; + +export * from './types'; + +const ORate = Object.assign(_ORate, { + install(app: App) { + app.component(_ORate.name, _ORate); + }, +}); + +export { ORate }; diff --git a/packages/opendesign/src/components/rate/style/index.scss b/packages/opendesign/src/components/rate/style/index.scss new file mode 100644 index 00000000..6be90c31 --- /dev/null +++ b/packages/opendesign/src/components/rate/style/index.scss @@ -0,0 +1,44 @@ +@use './var.scss'; + +.o-rate { + display: inline-flex; + align-items: center; + user-select: none; + font-size: var(--rate-height); + cursor: pointer; +} + +.o-rate-item { + position: relative; + + & + .o-rate-item { + margin-left: 8px; + } + + &.is-half-active { + .o-rate-icon-top { + opacity: 1; + } + } + + &.is-full-active { + .o-rate-icon-bottom { + color: var(--rate-color-active); + } + } +} + +.o-rate-icon { + color: var(--rate-color); + transition: all var(--o-duration-m1) var(--o-easing-standard); +} + +.o-rate-icon-top { + position: absolute; + top: 0; + left: 0; + width: 50%; + opacity: 0; + overflow: hidden; + color: var(--rate-color-active); +} diff --git a/packages/opendesign/src/components/rate/style/index.ts b/packages/opendesign/src/components/rate/style/index.ts new file mode 100644 index 00000000..591b2fbd --- /dev/null +++ b/packages/opendesign/src/components/rate/style/index.ts @@ -0,0 +1,2 @@ +import '../../style'; +import './index.scss'; diff --git a/packages/opendesign/src/components/rate/style/var.scss b/packages/opendesign/src/components/rate/style/var.scss new file mode 100644 index 00000000..f8b3c464 --- /dev/null +++ b/packages/opendesign/src/components/rate/style/var.scss @@ -0,0 +1,30 @@ +.o-rate { + --rate-color: var(--o-color-info1); + --rate-color-active: var(--o-color-major1); + + --rate-height: var(--o-font_size-h1); +} + +.o-rate-size-large { + --rate-height: var(--o-font_size-display3); +} + +.o-rate-size-small { + --rate-height: var(--o-font_size-h4); +} + +.o-rate-primary { + --rate-color-active: var(--o-color-primary1); +} + +.o-rate-success { + --rate-color-active: var(--o-color-success1); +} + +.o-rate-warning { + --rate-color-active: var(--o-color-warning1); +} + +.o-rate-danger { + --rate-color-active: var(--o-color-danger1); +} diff --git a/packages/opendesign/src/components/rate/types.ts b/packages/opendesign/src/components/rate/types.ts new file mode 100644 index 00000000..d5e17431 --- /dev/null +++ b/packages/opendesign/src/components/rate/types.ts @@ -0,0 +1,64 @@ +import type { ExtractPropTypes, PropType } from 'vue'; +import type { ColorT, SizeT } from '../_shared/global'; + +export const rateProps = { + /** + * 评分数量 + */ + count: { + type: Number, + default: 5, + }, + /** + * 双向绑定值 + */ + modelValue: { + type: Number, + }, + /** + * 非受控状态时,默认值 + */ + defaultValue: { + type: Number, + default: 0, + }, + /** + * 尺寸 + * "normal" | "small" | "large" + */ + size: { + type: String as PropType, + default: 'normal', + }, + /** + * 颜色类型 + * 'normal' | 'primary' | 'success' | 'warning' | 'danger' + */ + color: { + type: String as PropType, + default: 'normal', + }, + /** + * 是否只读 + */ + readonly: { + type: Boolean, + default: false, + }, + /** + * 是否支持半选 + */ + allowHalf: { + type: Boolean, + default: false, + }, + /** + * 是否支持可清空 + */ + clearable: { + type: Boolean, + default: false, + }, +}; + +export type RatePropsT = ExtractPropTypes; diff --git a/packages/opendesign/src/icons/svgs/fill/star.svg b/packages/opendesign/src/icons/svgs/fill/star.svg new file mode 100644 index 00000000..6deab4a7 --- /dev/null +++ b/packages/opendesign/src/icons/svgs/fill/star.svg @@ -0,0 +1,4 @@ + +star + + -- Gitee From f961320260ce42e16125b4855383eb8aafb62466 Mon Sep 17 00:00:00 2001 From: Bang <15622356989@163.com> Date: Wed, 22 Feb 2023 23:47:35 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9Ebadge=E5=BE=BD?= =?UTF-8?q?=E6=A0=87=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/docs/badge.md | 8 ++++ .../src/components/badge/OBadge.vue | 37 ++++++++++++++++ .../components/badge/__demo__/BadgeBasic.vue | 20 +++++++++ .../components/badge/__demo__/BadgeColor.vue | 20 +++++++++ .../components/badge/__demo__/BadgeDot.vue | 21 +++++++++ .../components/badge/__demo__/BadgeOffset.vue | 26 +++++++++++ .../components/badge/__demo__/BadgeOnly.vue | 15 +++++++ .../components/badge/__demo__/BadgeSlot.vue | 16 +++++++ .../components/badge/__demo__/IndexBadge.vue | 20 +++++++++ .../opendesign/src/components/badge/index.ts | 13 ++++++ .../src/components/badge/style/index.scss | 44 +++++++++++++++++++ .../src/components/badge/style/index.ts | 2 + .../src/components/badge/style/var.scss | 27 ++++++++++++ .../opendesign/src/components/badge/types.ts | 43 ++++++++++++++++++ .../src/components/dropdown/ODropdown.vue | 17 +++++++ packages/portal/src/router.ts | 12 +++++ 16 files changed, 341 insertions(+) create mode 100644 packages/docs/badge.md create mode 100644 packages/opendesign/src/components/badge/OBadge.vue create mode 100644 packages/opendesign/src/components/badge/__demo__/BadgeBasic.vue create mode 100644 packages/opendesign/src/components/badge/__demo__/BadgeColor.vue create mode 100644 packages/opendesign/src/components/badge/__demo__/BadgeDot.vue create mode 100644 packages/opendesign/src/components/badge/__demo__/BadgeOffset.vue create mode 100644 packages/opendesign/src/components/badge/__demo__/BadgeOnly.vue create mode 100644 packages/opendesign/src/components/badge/__demo__/BadgeSlot.vue create mode 100644 packages/opendesign/src/components/badge/__demo__/IndexBadge.vue create mode 100644 packages/opendesign/src/components/badge/index.ts create mode 100644 packages/opendesign/src/components/badge/style/index.scss create mode 100644 packages/opendesign/src/components/badge/style/index.ts create mode 100644 packages/opendesign/src/components/badge/style/var.scss create mode 100644 packages/opendesign/src/components/badge/types.ts create mode 100644 packages/opendesign/src/components/dropdown/ODropdown.vue diff --git a/packages/docs/badge.md b/packages/docs/badge.md new file mode 100644 index 00000000..b0e72ebf --- /dev/null +++ b/packages/docs/badge.md @@ -0,0 +1,8 @@ +# Badge 徽标 + +| name | type | 默认值 | 说明 | +| :----- | :--------------- | :----- | -------------------------------------------------------------------- | +| value | string \| number | '' | 可选,显示值 | +| max | number | 99 | 可选,最大值,超过最大值显示${max}+(仅当 value 类型为 number 时生效) | +| offset | number [] | [] | 可选,徽标位置偏移量 | +| dot | boolean | fasle | 可选,是否显示为小红点 | diff --git a/packages/opendesign/src/components/badge/OBadge.vue b/packages/opendesign/src/components/badge/OBadge.vue new file mode 100644 index 00000000..35b1aff4 --- /dev/null +++ b/packages/opendesign/src/components/badge/OBadge.vue @@ -0,0 +1,37 @@ + + + diff --git a/packages/opendesign/src/components/badge/__demo__/BadgeBasic.vue b/packages/opendesign/src/components/badge/__demo__/BadgeBasic.vue new file mode 100644 index 00000000..7d7da99d --- /dev/null +++ b/packages/opendesign/src/components/badge/__demo__/BadgeBasic.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/opendesign/src/components/badge/__demo__/BadgeColor.vue b/packages/opendesign/src/components/badge/__demo__/BadgeColor.vue new file mode 100644 index 00000000..f367ad5c --- /dev/null +++ b/packages/opendesign/src/components/badge/__demo__/BadgeColor.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/opendesign/src/components/badge/__demo__/BadgeDot.vue b/packages/opendesign/src/components/badge/__demo__/BadgeDot.vue new file mode 100644 index 00000000..3cd80fe2 --- /dev/null +++ b/packages/opendesign/src/components/badge/__demo__/BadgeDot.vue @@ -0,0 +1,21 @@ + + + diff --git a/packages/opendesign/src/components/badge/__demo__/BadgeOffset.vue b/packages/opendesign/src/components/badge/__demo__/BadgeOffset.vue new file mode 100644 index 00000000..c65059e8 --- /dev/null +++ b/packages/opendesign/src/components/badge/__demo__/BadgeOffset.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/packages/opendesign/src/components/badge/__demo__/BadgeOnly.vue b/packages/opendesign/src/components/badge/__demo__/BadgeOnly.vue new file mode 100644 index 00000000..0340a7bb --- /dev/null +++ b/packages/opendesign/src/components/badge/__demo__/BadgeOnly.vue @@ -0,0 +1,15 @@ + + + diff --git a/packages/opendesign/src/components/badge/__demo__/BadgeSlot.vue b/packages/opendesign/src/components/badge/__demo__/BadgeSlot.vue new file mode 100644 index 00000000..9c84d405 --- /dev/null +++ b/packages/opendesign/src/components/badge/__demo__/BadgeSlot.vue @@ -0,0 +1,16 @@ + + + diff --git a/packages/opendesign/src/components/badge/__demo__/IndexBadge.vue b/packages/opendesign/src/components/badge/__demo__/IndexBadge.vue new file mode 100644 index 00000000..279380bc --- /dev/null +++ b/packages/opendesign/src/components/badge/__demo__/IndexBadge.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/opendesign/src/components/badge/index.ts b/packages/opendesign/src/components/badge/index.ts new file mode 100644 index 00000000..8df45745 --- /dev/null +++ b/packages/opendesign/src/components/badge/index.ts @@ -0,0 +1,13 @@ +import type { App } from 'vue'; + +import _OBadge from './OBadge.vue'; + +export * from './types'; + +const OBadge = Object.assign(_OBadge, { + install(app: App) { + app.component(_OBadge.name, _OBadge); + }, +}); + +export { OBadge }; diff --git a/packages/opendesign/src/components/badge/style/index.scss b/packages/opendesign/src/components/badge/style/index.scss new file mode 100644 index 00000000..871e247f --- /dev/null +++ b/packages/opendesign/src/components/badge/style/index.scss @@ -0,0 +1,44 @@ +@use './var.scss'; + +.o-badge { + position: relative; + display: inline-block; +} + +.o-badge-content { + position: absolute; + top: 0; + right: 0; + transform: translate(50%, -50%); + transform-origin: 100% 0; + color: var(--badge-color); + background-color: var(--badge-bg); + min-width: 20px; + font-size: var(--badge-text-size); + line-height: var(--badge-text-height); + text-align: center; + height: var(--badge-text-height); + padding-left: 4px; + padding-right: 4px; + border-radius: var(--badge-border); +} + +.o-badge-dot { + .o-badge-content { + height: 8px; + width: 8px; + padding: 0; + border-radius: 50%; + min-width: unset; + } +} + +.o-badge-only { + .o-badge-content { + position: relative; + top: unset; + right: unset; + transform: none; + display: inline-block; + } +} diff --git a/packages/opendesign/src/components/badge/style/index.ts b/packages/opendesign/src/components/badge/style/index.ts new file mode 100644 index 00000000..591b2fbd --- /dev/null +++ b/packages/opendesign/src/components/badge/style/index.ts @@ -0,0 +1,2 @@ +import '../../style'; +import './index.scss'; diff --git a/packages/opendesign/src/components/badge/style/var.scss b/packages/opendesign/src/components/badge/style/var.scss new file mode 100644 index 00000000..ef9b2432 --- /dev/null +++ b/packages/opendesign/src/components/badge/style/var.scss @@ -0,0 +1,27 @@ +.o-badge { + --badge-text-size: var(--o-font_size-tip1); + --badge-text-height: var(--o-line_height-tip1); + + --badge-border: var(--o-radius-l); + --badge-color: var(--o-color-text1-inverse); + + --badge-bg: var(--o-color-danger1); + + --badge-padding: 20px; +} + +.o-badge-primary { + --badge-bg: var(--o-color-primary1); +} + +.o-badge-success { + --badge-bg: var(--o-color-success1); +} + +.o-badge-warning { + --badge-bg: var(--o-color-warning1); +} + +.o-badge-danger { + --badge-bg: var(--o-color-danger1); +} diff --git a/packages/opendesign/src/components/badge/types.ts b/packages/opendesign/src/components/badge/types.ts new file mode 100644 index 00000000..315ef0af --- /dev/null +++ b/packages/opendesign/src/components/badge/types.ts @@ -0,0 +1,43 @@ +import type { ExtractPropTypes, PropType } from 'vue'; +import type { ColorT } from '../_shared/global'; + +export const badgeProps = { + /** + * 显示值 + */ + value: { + type: [String, Number] as PropType, + default: '', + }, + /** + * 最大值,超过最大值显示${max}+(仅当 value 类型为 number 时生效) + */ + max: { + type: Number, + default: 99, + }, + /** + * 颜色类型 + * 'normal' | 'primary' | 'success' | 'warning' | 'danger' + */ + color: { + type: String as PropType, + default: 'normal', + }, + /** + * 是否显示为小红点 + */ + dot: { + type: Boolean, + default: false, + } + /** + * 徽标位置偏移量 + */, + offset: { + type: Array as PropType>, + default: () => [], + }, +}; + +export type BadgePropsT = ExtractPropTypes; diff --git a/packages/opendesign/src/components/dropdown/ODropdown.vue b/packages/opendesign/src/components/dropdown/ODropdown.vue new file mode 100644 index 00000000..ee5c145d --- /dev/null +++ b/packages/opendesign/src/components/dropdown/ODropdown.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/portal/src/router.ts b/packages/portal/src/router.ts index 7a7b8261..8a6366b4 100644 --- a/packages/portal/src/router.ts +++ b/packages/portal/src/router.ts @@ -129,6 +129,18 @@ export const routes = [ label: '标签', component: () => import('@components/tag/__demo__/IndexTag.vue'), }, + { + path: '/badge', + name: 'Badge', + label: '徽标', + component: () => import('@components/badge/__demo__/IndexBadge.vue'), + }, + { + path: '/rate', + name: 'Rate', + label: '评分', + component: () => import('@components/rate/__demo__/IndexRate.vue'), + }, ]; export const router = createRouter({ -- Gitee