From 665aee397f3b46a8ce85e2a1896e3d040afb0026 Mon Sep 17 00:00:00 2001 From: Jeff <19850462+jeff-fe@users.noreply.github.com> Date: Tue, 9 Dec 2025 13:01:59 +0800 Subject: [PATCH] fix(components): [data-picker] the panel `disabled` state should the same as component (#23029) * fix(components): [DatePickerPanel] fix disabled * add import * fix style * test: dataPicker add case * Update packages/components/date-picker/src/date-picker.tsx Co-authored-by: rzzf * Remove unused useFormDisabled import Remove unused import of useFormDisabled from form components. * test: update name --------- Co-authored-by: huangjunfeng Co-authored-by: rzzf --- .../date-picker/__tests__/date-picker.test.ts | 23 ++++++++++++++++++- .../date-picker/src/date-picker.tsx | 7 ++++-- 2 files changed, 27 insertions(+), 3 deletions(-) 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} ),