diff --git a/src/select/option.tsx b/src/select/option.tsx
index a2f034428..80812c282 100644
--- a/src/select/option.tsx
+++ b/src/select/option.tsx
@@ -10,7 +10,6 @@ import {
reactive,
} from '@vue/composition-api';
import Vue, { PropType } from 'vue';
-
import { ScopedSlotReturnValue } from 'vue/types/vnode';
import { renderContent } from '../utils/render-tnode';
import Ripple from '../utils/ripple';
@@ -24,6 +23,7 @@ import { TScroll } from '../common';
import { getNewMultipleValue } from './util';
import { useConfig } from '../config-provider/useConfig';
import useCommonClassName from '../hooks/useCommonClassName';
+import useFormDisabled from '../hooks/useFormDisabled';
const keepAnimationMixins = getKeepAnimationMixins();
export interface OptionInstance extends Vue {
@@ -78,11 +78,15 @@ export default defineComponent({
);
const isHover = ref(false);
- const formDisabled = ref(undefined);
- const isDisabled = computed(() => formDisabled.value || disabled.value || selectProvider.isReachMaxLimit.value);
+ const { formDisabled } = useFormDisabled();
const isSelected = computed(() => multiple.value
? (selectProvider.selectValue.value as SelectValue[])?.includes(props.value)
: selectProvider.selectValue.value === props.value);
+ const isDisabled = computed(
+ () => disabled.value
+ || formDisabled.value
+ || (multiple.value && !isSelected.value && selectProvider.isReachMaxLimit.value),
+ );
const mouseEvent = (v: boolean) => {
isHover.value = v;
};
@@ -148,6 +152,7 @@ export default defineComponent({
return {
isHover,
isSelected,
+ isDisabled,
mouseEvent,
classes,
selectProvider,
@@ -161,7 +166,7 @@ export default defineComponent({
render() {
const {
- classes, multiple, labelText, isSelected, disabled, selectProvider, mouseEvent,
+ classes, multiple, labelText, isSelected, isDisabled, mouseEvent,
} = this;
const children: ScopedSlotReturnValue = renderContent(this, 'default', 'content');
const optionChild = children || {labelText};
@@ -190,7 +195,7 @@ export default defineComponent({
v-ripple={(this.keepAnimation as any).ripple}
>
{multiple ? (
-
+
{optionChild}
) : (