diff --git a/packages/opendesign/src/components/button/__demo__/BtnLoading.vue b/packages/opendesign/src/components/button/__demo__/BtnLoading.vue index 479056e92365f40a795be7b22a48a62c74fb7649..d90811ebeda155f6ec8d7aaa9840b445a68db65d 100644 --- a/packages/opendesign/src/components/button/__demo__/BtnLoading.vue +++ b/packages/opendesign/src/components/button/__demo__/BtnLoading.vue @@ -22,7 +22,7 @@ const showLoading = (key: 'loading1' | 'loading2' | 'loading3', val: boolean) => Outline Button Text Button - Link Button + Link Button diff --git a/packages/opendesign/src/components/popover/OPopover.vue b/packages/opendesign/src/components/popover/OPopover.vue index 7a249cc0a5ff1e2a3fba97e896e1f3fa0745828e..dd13980a4640fba19d0127417ed50c921ed92c36 100644 --- a/packages/opendesign/src/components/popover/OPopover.vue +++ b/packages/opendesign/src/components/popover/OPopover.vue @@ -40,10 +40,16 @@ const props = defineProps({ type: [String, Object] as PropType, default: document.body, }, + /** + * 是否在隐藏时卸载 + */ unmountOnClose: { type: Boolean, default: true, }, + /** + * 距离触发元素的偏移量 + */ offset: { type: Number, default: 8, diff --git a/packages/opendesign/src/components/select/OSelect.vue b/packages/opendesign/src/components/select/OSelect.vue index 285ee01c7cd3e4c2fb0b99d6ff634f9fe8fae1c9..d707d32e482f65bbea0220c1a74fc393933b7bc6 100644 --- a/packages/opendesign/src/components/select/OSelect.vue +++ b/packages/opendesign/src/components/select/OSelect.vue @@ -3,20 +3,53 @@ import { provide, ref } from 'vue'; import { defaultSize, defaultShape } from '../_shared/global'; import type { SizeT, ShapeT } from '../_shared/global'; import { IconArrowTraingleDown } from '../icons'; -import { OPopup, PopupPositionT } from '../popup'; +import { OPopup, PopupPositionT, PopupTriggerT } from '../popup'; import { selectOptionInjectKey } from './provide'; import { SelectOptionT } from './types'; interface SelectPropT { + /** + * 下拉框的值 + * v-model + */ modelValue: string | number; + /** + * 大小 + */ size?: SizeT; + /** + * 形状 + */ shape?: ShapeT; + /** + * 提示文本 + */ placeholder?: string; + /** + * 下拉选项触发方式 + */ + trigger?: PopupTriggerT; + /** + * 是否禁用 + */ disabled?: boolean; - + /** + * 下拉选项位置 + */ optionPosition?: PopupPositionT; + /** + * 下拉选项宽度自适应规则 + * 'auto':自动 | 'min-width':最小宽度与选择框一致 | 'width': 宽度与选择框一致 + */ optionWidthMode?: 'auto' | 'min-width' | 'width'; + /** + * 下拉容器自定义类 + */ optionWrapClass?: string; + /** + * 是否在结束选择时,卸载下拉选项 + * v-model + */ unmountOnClose?: boolean; /** * 默认初始值对应的label显示,不传则使用modelValue @@ -29,6 +62,7 @@ const props = withDefaults(defineProps(), { size: undefined, shape: undefined, placeholder: 'please select...', + trigger: 'click', optionPosition: 'bl', optionWidthMode: 'min-width', optionWrapClass: '', @@ -84,7 +118,7 @@ provide(selectOptionInjectKey, { :unmount-on-close="props.unmountOnClose" :position="props.optionPosition" :target="selectRef" - trigger="click" + :trigger="props.trigger" :offset="4" :adjust-min-width="props.optionWidthMode === 'min-width'" :adjust-width="props.optionWidthMode === 'width'" diff --git a/packages/opendesign/src/components/select/__demo__/IndexSelect.vue b/packages/opendesign/src/components/select/__demo__/IndexSelect.vue index c9b842f0d166db282b8268473df479bc2e244f75..736151f7d54067994409454ffd004544cebbf4f6 100644 --- a/packages/opendesign/src/components/select/__demo__/IndexSelect.vue +++ b/packages/opendesign/src/components/select/__demo__/IndexSelect.vue @@ -2,13 +2,13 @@ import '../style'; import '../../option/style'; -import SelectSize from './SelectSize.vue'; +import SelectSizeShape from './SelectSizeShape.vue'; import SelectDisabled from './SelectDisabled.vue'; import SelectPopupposition from './SelectPopupposition.vue';