diff --git a/packages/eui/.loki/reference/chrome_desktop_Forms_EuiSuperDatePicker_EuiSuperDatePicker_Time_Window_Buttons_Compressed.png b/packages/eui/.loki/reference/chrome_desktop_Forms_EuiSuperDatePicker_EuiSuperDatePicker_Time_Window_Buttons_Compressed.png new file mode 100644 index 00000000000..33518b0ae08 Binary files /dev/null and b/packages/eui/.loki/reference/chrome_desktop_Forms_EuiSuperDatePicker_EuiSuperDatePicker_Time_Window_Buttons_Compressed.png differ diff --git a/packages/eui/.loki/reference/chrome_mobile_Forms_EuiSuperDatePicker_EuiSuperDatePicker_Time_Window_Buttons_Compressed.png b/packages/eui/.loki/reference/chrome_mobile_Forms_EuiSuperDatePicker_EuiSuperDatePicker_Time_Window_Buttons_Compressed.png new file mode 100644 index 00000000000..258acbb366a Binary files /dev/null and b/packages/eui/.loki/reference/chrome_mobile_Forms_EuiSuperDatePicker_EuiSuperDatePicker_Time_Window_Buttons_Compressed.png differ diff --git a/packages/eui/changelogs/upcoming/9245.md b/packages/eui/changelogs/upcoming/9245.md new file mode 100644 index 00000000000..fd30a83b328 --- /dev/null +++ b/packages/eui/changelogs/upcoming/9245.md @@ -0,0 +1,6 @@ +- Updated `EuiSuperDatePicker` to expose plain text `utcOffset` and `timeZoneName` in `timeZoneDisplayProps.customRender` render function + +**Bug fixes** + +- Fixed icon size in `EuiSuperDatePicker`'s time window buttons when `compressed={true}` + diff --git a/packages/eui/src/components/date_picker/super_date_picker/date_popover/timezone_display.test.tsx b/packages/eui/src/components/date_picker/super_date_picker/date_popover/timezone_display.test.tsx index 0c59ad07b35..dbf59fa0ee9 100644 --- a/packages/eui/src/components/date_picker/super_date_picker/date_popover/timezone_display.test.tsx +++ b/packages/eui/src/components/date_picker/super_date_picker/date_popover/timezone_display.test.tsx @@ -52,6 +52,8 @@ describe('EuiTimeZoneDisplay', () => { }); test('timeZoneCustomDisplayRender render function', () => { + jest.useFakeTimers().setSystemTime(new Date('2025-06-21T02:42:00Z')); + const customContent = ( { const { getByTestSubject } = render( ( + customRender={({ nameDisplay, utcOffset, timeZoneName }) => ( <> {nameDisplay} {customContent} + {utcOffset} + {timeZoneName} )} /> @@ -76,5 +80,9 @@ describe('EuiTimeZoneDisplay', () => { 'Helsinki' ); expect(getByTestSubject('customContent')).toBeInTheDocument(); + expect(getByTestSubject('utc')).toHaveTextContent('UTC+3'); + expect(getByTestSubject('name')).toHaveTextContent('Europe/Helsinki'); + + jest.useRealTimers(); }); }); diff --git a/packages/eui/src/components/date_picker/super_date_picker/date_popover/timezone_display.tsx b/packages/eui/src/components/date_picker/super_date_picker/date_popover/timezone_display.tsx index acd47c156c5..c06774680b7 100644 --- a/packages/eui/src/components/date_picker/super_date_picker/date_popover/timezone_display.tsx +++ b/packages/eui/src/components/date_picker/super_date_picker/date_popover/timezone_display.tsx @@ -21,7 +21,12 @@ import { EuiText } from '../../../text'; * `customRender` render function. */ type TimeZoneCustomDisplayRenderOptions = { + /** Name with UTC offset and an icon */ nameDisplay?: ReactNode; + /** UTC offset in hours, in plain text e.g. UTC+1 */ + utcOffset?: string; + /** Time zone name e.g. Europe/Brussels */ + timeZoneName?: string; }; export type EuiTimeZoneDisplayProps = ComponentPropsWithoutRef<'div'> & { @@ -84,7 +89,7 @@ export const EuiTimeZoneDisplay: React.FC = ({ {...rest} > {typeof customRender === 'function' - ? customRender({ nameDisplay }) + ? customRender({ nameDisplay, utcOffset: utc, timeZoneName: name }) : nameDisplay} ); diff --git a/packages/eui/src/components/date_picker/super_date_picker/super_date_picker.stories.tsx b/packages/eui/src/components/date_picker/super_date_picker/super_date_picker.stories.tsx index 6b867184162..27897f0dd09 100644 --- a/packages/eui/src/components/date_picker/super_date_picker/super_date_picker.stories.tsx +++ b/packages/eui/src/components/date_picker/super_date_picker/super_date_picker.stories.tsx @@ -328,6 +328,16 @@ export const OverflowingChildren: Story = { }, }; +export const TimeWindowButtonsCompressed: Story = { + tags: ['vrt-only'], + args: { + showTimeWindowButtons: true, + showUpdateButton: false, + compressed: true, + }, + render: (args) => , +}; + /** * Helpers */ diff --git a/packages/eui/src/components/date_picker/super_date_picker/time_window_buttons.tsx b/packages/eui/src/components/date_picker/super_date_picker/time_window_buttons.tsx index 9f8513c9703..58c659808ba 100644 --- a/packages/eui/src/components/date_picker/super_date_picker/time_window_buttons.tsx +++ b/packages/eui/src/components/date_picker/super_date_picker/time_window_buttons.tsx @@ -64,7 +64,7 @@ export const EuiTimeWindowButtons: React.FC = ({ }) => { const buttonColor = 'text'; const buttonSize = compressed ? 's' : 'm'; - const iconSize = compressed ? 's' : 'm'; + const iconSize = 'm'; const styles = useEuiMemoizedStyles(euiButtonGroupButtonsStyles); const {