1
0
mirror of synced 2026-10-23 07:08:55 +03:00

Preserve explicit 24-hour mode in date-time picker popups. #10584 (#10596)

This commit is contained in:
Sanskar Kharya
2026-10-15 10:36:29 +01:00
committed by Dave Page
parent 607c9eccbf
commit 5063c76a06
2 changed files with 50 additions and 1 deletions

View File

@@ -354,7 +354,8 @@ export function InputDateTimePicker({ value, onChange, readonly, controlProps, e
format: format.replace('xxx', timeZoneString),
label: '',
variant: 'inline',
ampm: controlProps.ampm ? controlProps.ampm : undefined,
// DatePicker has no clock and passes unknown props through to the DOM.
ampm: controlProps?.pickerType === 'Date' ? undefined : controlProps.ampm,
disablePast: controlProps.disablePast || false,
onChange: handleChange,
slotProps: {textField: {placeholder:placeholder, error: error}}

View File

@@ -0,0 +1,48 @@
/////////////////////////////////////////////////////////////
//
// pgAdmin 4 - PostgreSQL Tools
//
// Copyright (C) 2013 - 2026, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
import {render} from '@testing-library/react';
import {DatePicker, DateTimePicker, TimePicker} from '@mui/x-date-pickers';
import {InputDateTimePicker} from '../../../pgadmin/static/js/components/FormComponents';
jest.mock('@mui/x-date-pickers', () => ({
DatePicker: jest.fn(() => null),
DateTimePicker: jest.fn(() => null),
TimePicker: jest.fn(() => null),
}));
describe('InputDateTimePicker clock mode', () => {
beforeEach(() => jest.clearAllMocks());
const renderPicker = (pickerType, ampm) => {
const controlProps = {pickerType};
if (ampm !== undefined) {
controlProps.ampm = ampm;
}
render(<InputDateTimePicker value={null} onChange={jest.fn()}
controlProps={controlProps} />);
};
it.each([false, true, undefined])('does not pass ampm=%s to the Date picker', (ampm) => {
renderPicker('Date', ampm);
expect(DatePicker).toHaveBeenCalled();
expect(DatePicker.mock.calls[0][0].ampm).toBeUndefined();
});
describe.each([
['Time', TimePicker],
['DateTime', DateTimePicker],
])('%s picker', (pickerType, Picker) => {
it.each([false, true, undefined])('forwards ampm=%s unchanged', (ampm) => {
renderPicker(pickerType, ampm);
expect(Picker).toHaveBeenCalled();
expect(Picker.mock.calls[0][0].ampm).toBe(ampm);
});
});
});