diff --git a/packages/opendesign/src/option/OOptionList.vue b/packages/opendesign/src/option/OOptionList.vue new file mode 100644 index 0000000000000000000000000000000000000000..bffdf5bd67942c80c3af3d0060ea6105ee6ba7c6 --- /dev/null +++ b/packages/opendesign/src/option/OOptionList.vue @@ -0,0 +1,16 @@ + + diff --git a/packages/opendesign/src/option/index.ts b/packages/opendesign/src/option/index.ts index 45c30c0fb8ec7cb807681e641a31a91cf4e094d0..fe2527d0443e08b4bb0e0db37c5616416b31db0b 100644 --- a/packages/opendesign/src/option/index.ts +++ b/packages/opendesign/src/option/index.ts @@ -1,4 +1,5 @@ import _OOption from './OOption.vue'; +import OOptionList from './OOptionList.vue'; import type { App } from 'vue'; const OOption = Object.assign(_OOption, { @@ -7,6 +8,4 @@ const OOption = Object.assign(_OOption, { }, }); -export { - OOption, -}; +export { OOption, OOptionList }; diff --git a/packages/opendesign/src/option/style/index.ts b/packages/opendesign/src/option/style/index.ts index 98ff894a052f7befcb69f3aaef90eb86fd33959e..76f1d2a853ed1d2185fd8245bd322fa1868eac6d 100644 --- a/packages/opendesign/src/option/style/index.ts +++ b/packages/opendesign/src/option/style/index.ts @@ -1,3 +1,4 @@ import '../../_styles'; import '../../checkbox/style'; +import '../../scroller/style'; import './index.scss'; diff --git a/packages/opendesign/src/option/style/style.scss b/packages/opendesign/src/option/style/style.scss index 963760e610cbbff65b4e79ec57f8f8c8d46a3936..4cd098a2b91e2b0a05bba522d91cc2429cd7edab 100644 --- a/packages/opendesign/src/option/style/style.scss +++ b/packages/opendesign/src/option/style/style.scss @@ -24,9 +24,11 @@ } } &.active { - font-weight: 500; - color: var(--option-color-active); - background-color: var(--option-bg-color-active); + @include me-hover { + font-weight: 500; + color: var(--option-color-active); + background-color: var(--option-bg-color-active); + } } } @@ -40,3 +42,13 @@ background-color: var(--option-bg-color-disabled); } } +// 列表容器 +.o-options-scroller { + max-height: var(--option-list-max-height); + --scroller-padding: 4px; +} +.o-options-container { + padding: 4px; + max-height: var(--option-list-max-height); + overflow: auto; +} diff --git a/packages/opendesign/src/option/style/var.scss b/packages/opendesign/src/option/style/var.scss index e69e398951129c44ff1e230dcf3364d64d8ba3c9..089faaeba6ecb6f0162ccdad58e9d4b5f9892542 100644 --- a/packages/opendesign/src/option/style/var.scss +++ b/packages/opendesign/src/option/style/var.scss @@ -19,3 +19,15 @@ .o-option-multiple { --option-bg-color-active: transparent; } + +.o-options-popup { + --popup-shadow: var(--o-shadow-2); + --popup-bg-color: var(--o-color-control-light); + --popup-radius: var(--o-radius_control-m); + --popup-bd: none; + --popup-padding: 0; + --popup-min-width: 64px; +} +.o-option-list { + --option-list-max-height: 200px; +} diff --git a/packages/opendesign/src/pagination/OPagination.vue b/packages/opendesign/src/pagination/OPagination.vue index 65af0d5eb4e2d464ea857e43ae78663d6ff336fe..6e10892c89bd10ef4963b28389433a324b0c2f18 100644 --- a/packages/opendesign/src/pagination/OPagination.vue +++ b/packages/opendesign/src/pagination/OPagination.vue @@ -9,6 +9,7 @@ import { IconChevronLeft, IconChevronRight, IconEllipsis } from '../_utils/icons import { paginationProps } from './types'; import { getRoundClass } from '../_utils/style-class'; import { OIcon } from '../icon'; +import { OOptionList } from '../option'; const props = defineProps(paginationProps); @@ -199,10 +200,17 @@ defineExpose({ > {{ item.value }}