diff --git a/packages/components/date-picker/__tests__/date-picker.test.ts b/packages/components/date-picker/__tests__/date-picker.test.ts
index 38f39f2bf0..c3025a7167 100644
--- a/packages/components/date-picker/__tests__/date-picker.test.ts
+++ b/packages/components/date-picker/__tests__/date-picker.test.ts
@@ -16,7 +16,7 @@ import zhCn from '@element-plus/locale/lang/zh-cn'
import enUs from '@element-plus/locale/lang/en'
import 'dayjs/locale/zh-cn'
import { EVENT_CODE } from '@element-plus/constants'
-import { ElFormItem } from '@element-plus/components/form'
+import { ElForm, ElFormItem } from '@element-plus/components/form'
import DatePicker from '../src/date-picker'
import DatePickerRange from '@element-plus/components/date-picker-panel/src/date-picker-com/panel-date-range.vue'
@@ -25,6 +25,7 @@ const _mount = (template: string, data = () => ({}), otherObj?) =>
{
components: {
'el-date-picker': DatePicker,
+ 'el-form': ElForm,
'el-form-item': ElFormItem,
'el-config-provider': ConfigProvider,
},
@@ -2672,6 +2673,26 @@ describe('MonthRange', () => {
const formItem = wrapper.find('[data-test-ref="item"]')
expect(formItem.attributes().role).toBe('group')
})
+
+ it('should give its own disabled prop higher priority within a form', async () => {
+ const wrapper = _mount(
+ `
+
+
+
+ `,
+ () => ({ value: '' })
+ )
+
+ await nextTick()
+ const datePickerInput = wrapper.find('.el-input__inner')
+ expect(datePickerInput.attributes('disabled')).toBeUndefined()
+
+ datePickerInput.trigger('focus')
+ await nextTick()
+ const panel = document.querySelector('.el-picker-panel')
+ expect(panel?.classList.contains('is-disabled')).toBeFalsy()
+ })
})
it('The year which is disabled should not be selectable', async () => {
diff --git a/packages/components/date-picker/src/date-picker.tsx b/packages/components/date-picker/src/date-picker.tsx
index 6855415faa..8c822b7a89 100644
--- a/packages/components/date-picker/src/date-picker.tsx
+++ b/packages/components/date-picker/src/date-picker.tsx
@@ -32,7 +32,6 @@ export default defineComponent({
PICKER_POPPER_OPTIONS_INJECTION_KEY,
reactive(toRef(props, 'popperOptions'))
)
-
const commonPicker = ref>()
const refProps: DatePickerExpose = {
focus: () => {
@@ -72,7 +71,11 @@ export default defineComponent({
>
{{
default: (scopedProps: /**FIXME: remove any type */ any) => (
-
+
{slots}
),