From 3d06d06debc9eb96a19a0c89e6c304033e086a46 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Fri, 9 Feb 2024 10:13:07 -0500 Subject: [PATCH 01/24] feat(datetime): formatOptions for time button and header revert example --- core/api.txt | 1 + core/src/components.d.ts | 8 ++ core/src/components/datetime/datetime.tsx | 54 ++++++++++-- .../datetime/test/basic/datetime.e2e.ts | 86 +++++++++++++++++++ .../components/datetime/test/format.spec.ts | 79 +++++++++++++++++ core/src/components/datetime/utils/format.ts | 39 ++++++--- packages/angular/src/directives/proxies.ts | 4 +- packages/vue/src/proxies.ts | 1 + 8 files changed, 253 insertions(+), 19 deletions(-) diff --git a/core/api.txt b/core/api.txt index fa3825d2903..e256b31222d 100644 --- a/core/api.txt +++ b/core/api.txt @@ -394,6 +394,7 @@ ion-datetime,prop,dayValues,number | number[] | string | undefined,undefined,fal ion-datetime,prop,disabled,boolean,false,false,false ion-datetime,prop,doneText,string,'Done',false,false ion-datetime,prop,firstDayOfWeek,number,0,false,false +ion-datetime,prop,formatOptions,undefined | { date?: DateTimeFormatOptions | undefined; time?: DateTimeFormatOptions | undefined; },undefined,false,false ion-datetime,prop,highlightedDates,((dateIsoString: string) => DatetimeHighlightStyle | undefined) | DatetimeHighlight[] | undefined,undefined,false,false ion-datetime,prop,hourCycle,"h11" | "h12" | "h23" | "h24" | undefined,undefined,false,false ion-datetime,prop,hourValues,number | number[] | string | undefined,undefined,false,false diff --git a/core/src/components.d.ts b/core/src/components.d.ts index bcea90eeb27..efbc4bcebe0 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -858,6 +858,10 @@ export namespace Components { * The first day of the week to use for `ion-datetime`. The default value is `0` and represents Sunday. */ "firstDayOfWeek": number; + /** + * Formatting options, separated by date and time. + */ + "formatOptions"?: { date?: Intl.DateTimeFormatOptions; time?: Intl.DateTimeFormatOptions }; /** * Used to apply custom text and background colors to specific dates. Can be either an array of objects containing ISO strings and colors, or a callback that receives an ISO string and returns the colors. Only applies to the `date`, `date-time`, and `time-date` presentations, with `preferWheel="false"`. */ @@ -5541,6 +5545,10 @@ declare namespace LocalJSX { * The first day of the week to use for `ion-datetime`. The default value is `0` and represents Sunday. */ "firstDayOfWeek"?: number; + /** + * Formatting options, separated by date and time. + */ + "formatOptions"?: { date?: Intl.DateTimeFormatOptions; time?: Intl.DateTimeFormatOptions }; /** * Used to apply custom text and background colors to specific dates. Can be either an array of objects containing ISO strings and colors, or a callback that receives an ISO string and returns the colors. Only applies to the `date`, `date-time`, and `time-date` presentations, with `preferWheel="false"`. */ diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index 57f275e25f0..b9c1afe6fac 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -171,6 +171,19 @@ export class Datetime implements ComponentInterface { */ @Prop() disabled = false; + /** + * Formatting options, separated by date and time. + */ + @Prop() formatOptions?: { date?: Intl.DateTimeFormatOptions; time?: Intl.DateTimeFormatOptions }; + + @Watch('formatOptions') + protected formatOptionsChanged(formatOptions: { + date?: Intl.DateTimeFormatOptions; + time?: Intl.DateTimeFormatOptions; + }) { + this.errorIfTimeZoneProvided(formatOptions); + } + /** * If `true`, the datetime appears normal but the selected date cannot be changed. */ @@ -1357,7 +1370,7 @@ export class Datetime implements ComponentInterface { }; componentWillLoad() { - const { el, highlightedDates, multiple, presentation, preferWheel } = this; + const { el, formatOptions, highlightedDates, multiple, presentation, preferWheel } = this; if (multiple) { if (presentation !== 'date') { @@ -1382,6 +1395,10 @@ export class Datetime implements ComponentInterface { } } + if (formatOptions) { + this.errorIfTimeZoneProvided(formatOptions); + } + const hourValues = (this.parsedHourValues = convertToArrayOfNumbers(this.hourValues)); const minuteValues = (this.parsedMinuteValues = convertToArrayOfNumbers(this.minuteValues)); const monthValues = (this.parsedMonthValues = convertToArrayOfNumbers(this.monthValues)); @@ -1409,6 +1426,20 @@ export class Datetime implements ComponentInterface { this.emitStyle(); } + private errorIfTimeZoneProvided(formatOptions: { + date?: Intl.DateTimeFormatOptions; + time?: Intl.DateTimeFormatOptions; + }) { + if ( + formatOptions?.date?.timeZone || + formatOptions?.time?.timeZone || + formatOptions?.date?.timeZoneName || + formatOptions?.time?.timeZoneName + ) { + printIonWarning('Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".'); + } + } + private emitStyle() { this.ionStyle.emit({ interactive: true, @@ -2354,10 +2385,16 @@ export class Datetime implements ComponentInterface { } private renderTimeOverlay() { - const { disabled, hourCycle, isTimePopoverOpen, locale } = this; + const { disabled, formatOptions, hourCycle, isTimePopoverOpen, locale } = this; const computedHourCycle = getHourCycle(locale, hourCycle); const activePart = this.getActivePartsWithFallback(); + const timeButtonFormatOptions = formatOptions?.time || { + hour: 'numeric', + minute: 'numeric', + computedHourCycle, + }; + return [
{this.renderTimeLabel()}
, , { }); }); }); + +/** + * This behavior does not differ across + * directions. + */ +configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { + test.describe(title('datetime: formatOptions'), () => { + test('should format header and time button', async ({ page }) => { + await page.setContent( + ` + + Select Date + + `, + config + ); + + await page.locator('.datetime-ready').waitFor(); + + const datetime = page.locator('ion-datetime'); + + await datetime.evaluate( + (el: HTMLIonDatetimeElement) => + (el.formatOptions = { + time: { hour: '2-digit', minute: '2-digit' }, + date: { day: '2-digit', month: 'long', era: 'short' }, + }) + ); + + await page.waitForChanges(); + + const headerDate = page.locator('ion-datetime .datetime-selected-date'); + await expect(headerDate).toHaveText('February 01 AD'); + + const timeBody = page.locator('ion-datetime .time-body'); + await expect(timeBody).toHaveText('04:30 PM'); + + await expect(datetime).toHaveScreenshot(screenshot('datetime-format-options')); + }); + }); +}); + +/** + * This behavior does not differ across + * modes/directions. + */ +configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { + test.describe(title('datetime: formatOptions timeZone error'), () => { + test('should throw a warning if time zone is provided', async ({ page }) => { + const logs: string[] = []; + + page.on('console', (msg) => { + if (msg.type() === 'warning') { + logs.push(msg.text()); + } + }); + + await page.setContent( + ` + + Select Date + + `, + config + ); + + const datetime = page.locator('ion-datetime'); + + await datetime.evaluate( + (el: HTMLIonDatetimeElement) => + (el.formatOptions = { + time: { timeZone: 'UTC' }, + }) + ); + + await page.locator('.datetime-ready').waitFor(); + + await page.waitForChanges(); + + expect(logs.length).toBe(1); + expect(logs[0]).toContain( + '[Ionic Warning]: Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".' + ); + }); + }); +}); diff --git a/core/src/components/datetime/test/format.spec.ts b/core/src/components/datetime/test/format.spec.ts index 5ff218167d4..7b595f687c6 100644 --- a/core/src/components/datetime/test/format.spec.ts +++ b/core/src/components/datetime/test/format.spec.ts @@ -53,6 +53,46 @@ describe('getMonthAndDay()', () => { it('should return sáb, 1 abr', () => { expect(getMonthAndDay('es-ES', { month: 4, day: 1, year: 2006 })).toEqual('sáb, 1 abr'); }); + + it('should use formatOptions', () => { + const datetimeParts: DatetimeParts = { + day: 1, + month: 1, + year: 2022, + hour: 9, + minute: 40, + }; + + const formatOptions: Intl.DateTimeFormatOptions = { + day: '2-digit', + weekday: 'long', + month: 'narrow', + hour: '2-digit', + minute: '2-digit', + }; + + // Even though this method is intended to be used for date, the time may be displayed as well when passing formatOptions + expect(getMonthAndDay('en-US', datetimeParts, formatOptions)).toEqual('Saturday, J 01, 09:40 AM'); + }); + + it('should override provided time zone with UTC', () => { + const datetimeParts: DatetimeParts = { + day: 1, + month: 1, + year: 2022, + hour: 23, + minute: 40, + }; + + const formatOptions: Intl.DateTimeFormatOptions = { + timeZone: 'Australia/Sydney', + weekday: 'short', + month: 'short', + day: 'numeric', + }; + + expect(getMonthAndDay('en-US', datetimeParts, formatOptions)).toEqual('Sat, Jan 1'); + }); }); describe('getFormattedHour()', () => { @@ -144,6 +184,7 @@ describe('getLocalizedTime', () => { expect(getLocalizedTime('en-GB', datetimeParts, 'h12')).toEqual('12:00 am'); }); + it('should parse time-only values correctly', () => { const datetimeParts: Partial = { hour: 22, @@ -153,4 +194,42 @@ describe('getLocalizedTime', () => { expect(getLocalizedTime('en-US', datetimeParts as DatetimeParts, 'h12')).toEqual('10:40 PM'); expect(getLocalizedTime('en-US', datetimeParts as DatetimeParts, 'h23')).toEqual('22:40'); }); + + it('should use formatOptions', () => { + const datetimeParts: DatetimeParts = { + day: 1, + month: 1, + year: 2022, + hour: 9, + minute: 40, + }; + + const formatOptions: Intl.DateTimeFormatOptions = { + hour: '2-digit', + minute: '2-digit', + dayPeriod: 'short', + day: '2-digit', + }; + + // Even though this method is intended to be used for time, the date may be displayed as well when passing formatOptions + expect(getLocalizedTime('en-US', datetimeParts, 'h12', formatOptions)).toEqual('01, 09:40 in the morning'); + }); + + it('should override provided time zone with UTC', () => { + const datetimeParts: DatetimeParts = { + day: 1, + month: 1, + year: 2022, + hour: 9, + minute: 40, + }; + + const formatOptions: Intl.DateTimeFormatOptions = { + timeZone: 'Australia/Sydney', + hour: 'numeric', + minute: 'numeric', + }; + + expect(getLocalizedTime('en-US', datetimeParts, 'h12', formatOptions)).toEqual('9:40 AM'); + }); }); diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index 0f70299dc52..6589c10e402 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -11,7 +11,12 @@ const getFormattedDayPeriod = (dayPeriod?: string) => { return dayPeriod.toUpperCase(); }; -export const getLocalizedTime = (locale: string, refParts: DatetimeParts, hourCycle: DatetimeHourCycle): string => { +export const getLocalizedTime = ( + locale: string, + refParts: DatetimeParts, + hourCycle: DatetimeHourCycle, + formatOptions?: Intl.DateTimeFormatOptions +): string => { const timeParts: Pick = { hour: refParts.hour, minute: refParts.minute, @@ -21,9 +26,18 @@ export const getLocalizedTime = (locale: string, refParts: DatetimeParts, hourCy return 'Invalid Time'; } + const defaultFormatOptions: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: 'numeric' }; + + // If any options are provided, don't use any of the defaults. + const options: Intl.DateTimeFormatOptions = formatOptions ?? defaultFormatOptions; + return new Intl.DateTimeFormat(locale, { - hour: 'numeric', - minute: 'numeric', + ...options, + /** + * We use hourCycle here instead of hour12 due to: + * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2 + */ + hourCycle, /** * Setting the timeZone to UTC prevents * new Intl.DatetimeFormat from subtracting @@ -31,11 +45,6 @@ export const getLocalizedTime = (locale: string, refParts: DatetimeParts, hourCy * when formatting the time. */ timeZone: 'UTC', - /** - * We use hourCycle here instead of hour12 due to: - * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2 - */ - hourCycle, /** * Setting Z at the end indicates that this * date string is in the UTC time zone. This @@ -150,11 +159,17 @@ export const generateDayAriaLabel = (locale: string, today: boolean, refParts: D * Gets the day of the week, month, and day * Used for the header in MD mode. */ -export const getMonthAndDay = (locale: string, refParts: DatetimeParts) => { +export const getMonthAndDay = (locale: string, refParts: DatetimeParts, formatOptions?: Intl.DateTimeFormatOptions) => { + const defaultFormatOptions: Intl.DateTimeFormatOptions = { weekday: 'short', month: 'short', day: 'numeric' }; + + // If any options are provided, don't use any of the defaults. This way the developer can (for example) choose to not have the weekday displayed at all. + const options: Intl.DateTimeFormatOptions = formatOptions ?? defaultFormatOptions; + const date = getNormalizedDate(refParts); - return new Intl.DateTimeFormat(locale, { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' }).format( - date - ); + return new Intl.DateTimeFormat(locale, { + ...options, + timeZone: 'UTC', + }).format(date); }; /** diff --git a/packages/angular/src/directives/proxies.ts b/packages/angular/src/directives/proxies.ts index be168ed8703..a592c55894b 100644 --- a/packages/angular/src/directives/proxies.ts +++ b/packages/angular/src/directives/proxies.ts @@ -635,7 +635,7 @@ Set `scrollEvents` to `true` to enable. @ProxyCmp({ - inputs: ['cancelText', 'clearText', 'color', 'dayValues', 'disabled', 'doneText', 'firstDayOfWeek', 'highlightedDates', 'hourCycle', 'hourValues', 'isDateEnabled', 'locale', 'max', 'min', 'minuteValues', 'mode', 'monthValues', 'multiple', 'name', 'preferWheel', 'presentation', 'readonly', 'showClearButton', 'showDefaultButtons', 'showDefaultTimeLabel', 'showDefaultTitle', 'size', 'titleSelectedDatesFormatter', 'value', 'yearValues'], + inputs: ['cancelText', 'clearText', 'color', 'dayValues', 'disabled', 'doneText', 'firstDayOfWeek', 'formatOptions', 'highlightedDates', 'hourCycle', 'hourValues', 'isDateEnabled', 'locale', 'max', 'min', 'minuteValues', 'mode', 'monthValues', 'multiple', 'name', 'preferWheel', 'presentation', 'readonly', 'showClearButton', 'showDefaultButtons', 'showDefaultTimeLabel', 'showDefaultTitle', 'size', 'titleSelectedDatesFormatter', 'value', 'yearValues'], methods: ['confirm', 'reset', 'cancel'] }) @Component({ @@ -643,7 +643,7 @@ Set `scrollEvents` to `true` to enable. changeDetection: ChangeDetectionStrategy.OnPush, template: '', // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['cancelText', 'clearText', 'color', 'dayValues', 'disabled', 'doneText', 'firstDayOfWeek', 'highlightedDates', 'hourCycle', 'hourValues', 'isDateEnabled', 'locale', 'max', 'min', 'minuteValues', 'mode', 'monthValues', 'multiple', 'name', 'preferWheel', 'presentation', 'readonly', 'showClearButton', 'showDefaultButtons', 'showDefaultTimeLabel', 'showDefaultTitle', 'size', 'titleSelectedDatesFormatter', 'value', 'yearValues'], + inputs: ['cancelText', 'clearText', 'color', 'dayValues', 'disabled', 'doneText', 'firstDayOfWeek', 'formatOptions', 'highlightedDates', 'hourCycle', 'hourValues', 'isDateEnabled', 'locale', 'max', 'min', 'minuteValues', 'mode', 'monthValues', 'multiple', 'name', 'preferWheel', 'presentation', 'readonly', 'showClearButton', 'showDefaultButtons', 'showDefaultTimeLabel', 'showDefaultTitle', 'size', 'titleSelectedDatesFormatter', 'value', 'yearValues'], }) export class IonDatetime { protected el: HTMLElement; diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 1ea101fb239..57380e47bde 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -274,6 +274,7 @@ export const IonDatetime = /*@__PURE__*/ defineContainer Date: Fri, 9 Feb 2024 12:18:33 -0500 Subject: [PATCH 02/24] partially improve types --- core/src/components.d.ts | 8 ++++---- core/src/components/datetime/datetime-interface.ts | 5 +++++ core/src/components/datetime/datetime.tsx | 13 ++++--------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index efbc4bcebe0..7dc8ec680f8 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -15,7 +15,7 @@ import { RouteID, RouterDirection, RouterEventDetail, RouteWrite } from "./compo import { BreadcrumbCollapsedClickEventDetail } from "./components/breadcrumb/breadcrumb-interface"; import { CheckboxChangeEventDetail } from "./components/checkbox/checkbox-interface"; import { ScrollBaseDetail, ScrollDetail } from "./components/content/content-interface"; -import { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; +import { DatetimeChangeEventDetail, DatetimeFormatOptions, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; import { SpinnerTypes } from "./components/spinner/spinner-configs"; import { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface"; import { CounterFormatter } from "./components/item/item-interface"; @@ -51,7 +51,7 @@ export { RouteID, RouterDirection, RouterEventDetail, RouteWrite } from "./compo export { BreadcrumbCollapsedClickEventDetail } from "./components/breadcrumb/breadcrumb-interface"; export { CheckboxChangeEventDetail } from "./components/checkbox/checkbox-interface"; export { ScrollBaseDetail, ScrollDetail } from "./components/content/content-interface"; -export { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; +export { DatetimeChangeEventDetail, DatetimeFormatOptions, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; export { SpinnerTypes } from "./components/spinner/spinner-configs"; export { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface"; export { CounterFormatter } from "./components/item/item-interface"; @@ -861,7 +861,7 @@ export namespace Components { /** * Formatting options, separated by date and time. */ - "formatOptions"?: { date?: Intl.DateTimeFormatOptions; time?: Intl.DateTimeFormatOptions }; + "formatOptions"?: DatetimeFormatOptions; /** * Used to apply custom text and background colors to specific dates. Can be either an array of objects containing ISO strings and colors, or a callback that receives an ISO string and returns the colors. Only applies to the `date`, `date-time`, and `time-date` presentations, with `preferWheel="false"`. */ @@ -5548,7 +5548,7 @@ declare namespace LocalJSX { /** * Formatting options, separated by date and time. */ - "formatOptions"?: { date?: Intl.DateTimeFormatOptions; time?: Intl.DateTimeFormatOptions }; + "formatOptions"?: DatetimeFormatOptions; /** * Used to apply custom text and background colors to specific dates. Can be either an array of objects containing ISO strings and colors, or a callback that receives an ISO string and returns the colors. Only applies to the `date`, `date-time`, and `time-date` presentations, with `preferWheel="false"`. */ diff --git a/core/src/components/datetime/datetime-interface.ts b/core/src/components/datetime/datetime-interface.ts index 255f39e22dc..962011e1f6e 100644 --- a/core/src/components/datetime/datetime-interface.ts +++ b/core/src/components/datetime/datetime-interface.ts @@ -36,3 +36,8 @@ export type DatetimeHighlight = { date: string } & DatetimeHighlightStyle; export type DatetimeHighlightCallback = (dateIsoString: string) => DatetimeHighlightStyle | undefined; export type DatetimeHourCycle = 'h11' | 'h12' | 'h23' | 'h24'; + +// export type TimeFormatOptions = { time: Intl.DateTimeFormatOptions }; +// export type DateFormatOptions = { date: Intl.DateTimeFormatOptions }; +// export type DatetimeFormatOptions = TimeFormatOptions | DateFormatOptions; +export type DatetimeFormatOptions = { date?: Intl.DateTimeFormatOptions; time?: Intl.DateTimeFormatOptions }; diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index b9c1afe6fac..b728c650917 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -20,6 +20,7 @@ import type { DatetimeHighlightStyle, DatetimeHighlightCallback, DatetimeHourCycle, + DatetimeFormatOptions, } from './datetime-interface'; import { isSameDay, warnIfValueOutOfBounds, isBefore, isAfter } from './utils/comparison'; import { @@ -174,13 +175,10 @@ export class Datetime implements ComponentInterface { /** * Formatting options, separated by date and time. */ - @Prop() formatOptions?: { date?: Intl.DateTimeFormatOptions; time?: Intl.DateTimeFormatOptions }; + @Prop() formatOptions?: DatetimeFormatOptions; @Watch('formatOptions') - protected formatOptionsChanged(formatOptions: { - date?: Intl.DateTimeFormatOptions; - time?: Intl.DateTimeFormatOptions; - }) { + protected formatOptionsChanged(formatOptions: DatetimeFormatOptions) { this.errorIfTimeZoneProvided(formatOptions); } @@ -1426,10 +1424,7 @@ export class Datetime implements ComponentInterface { this.emitStyle(); } - private errorIfTimeZoneProvided(formatOptions: { - date?: Intl.DateTimeFormatOptions; - time?: Intl.DateTimeFormatOptions; - }) { + private errorIfTimeZoneProvided(formatOptions: DatetimeFormatOptions) { if ( formatOptions?.date?.timeZone || formatOptions?.time?.timeZone || From b7261091aebeef307ff1a07decc14ad114582564 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Fri, 9 Feb 2024 14:52:35 -0500 Subject: [PATCH 03/24] improve types Co-authored by: Sean Perkins --- .../components/datetime/datetime-interface.ts | 7 ++-- core/src/components/datetime/datetime.tsx | 35 ++++++++++++------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/core/src/components/datetime/datetime-interface.ts b/core/src/components/datetime/datetime-interface.ts index 962011e1f6e..97102dbf9ee 100644 --- a/core/src/components/datetime/datetime-interface.ts +++ b/core/src/components/datetime/datetime-interface.ts @@ -37,7 +37,6 @@ export type DatetimeHighlightCallback = (dateIsoString: string) => DatetimeHighl export type DatetimeHourCycle = 'h11' | 'h12' | 'h23' | 'h24'; -// export type TimeFormatOptions = { time: Intl.DateTimeFormatOptions }; -// export type DateFormatOptions = { date: Intl.DateTimeFormatOptions }; -// export type DatetimeFormatOptions = TimeFormatOptions | DateFormatOptions; -export type DatetimeFormatOptions = { date?: Intl.DateTimeFormatOptions; time?: Intl.DateTimeFormatOptions }; +export type TimeFormatOptions = { time: Intl.DateTimeFormatOptions }; +export type DateFormatOptions = { date: Intl.DateTimeFormatOptions }; +export type DatetimeFormatOptions = TimeFormatOptions | DateFormatOptions; diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index b728c650917..5e361815570 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -21,6 +21,8 @@ import type { DatetimeHighlightCallback, DatetimeHourCycle, DatetimeFormatOptions, + TimeFormatOptions, + DateFormatOptions, } from './datetime-interface'; import { isSameDay, warnIfValueOutOfBounds, isBefore, isAfter } from './utils/comparison'; import { @@ -178,8 +180,16 @@ export class Datetime implements ComponentInterface { @Prop() formatOptions?: DatetimeFormatOptions; @Watch('formatOptions') - protected formatOptionsChanged(formatOptions: DatetimeFormatOptions) { - this.errorIfTimeZoneProvided(formatOptions); + protected formatOptionsChanged() { + this.errorIfTimeZoneProvided(); + } + + get dateFormatOptions(): Intl.DateTimeFormatOptions | undefined { + return (this.formatOptions as DateFormatOptions)?.date; + } + + get timeFormatOptions(): Intl.DateTimeFormatOptions | undefined { + return (this.formatOptions as TimeFormatOptions)?.time; } /** @@ -1394,7 +1404,7 @@ export class Datetime implements ComponentInterface { } if (formatOptions) { - this.errorIfTimeZoneProvided(formatOptions); + this.errorIfTimeZoneProvided(); } const hourValues = (this.parsedHourValues = convertToArrayOfNumbers(this.hourValues)); @@ -1424,12 +1434,13 @@ export class Datetime implements ComponentInterface { this.emitStyle(); } - private errorIfTimeZoneProvided(formatOptions: DatetimeFormatOptions) { + private errorIfTimeZoneProvided() { + const { dateFormatOptions, timeFormatOptions } = this; if ( - formatOptions?.date?.timeZone || - formatOptions?.time?.timeZone || - formatOptions?.date?.timeZoneName || - formatOptions?.time?.timeZoneName + dateFormatOptions?.timeZone || + dateFormatOptions?.timeZoneName || + timeFormatOptions?.timeZone || + timeFormatOptions?.timeZoneName ) { printIonWarning('Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".'); } @@ -2380,11 +2391,11 @@ export class Datetime implements ComponentInterface { } private renderTimeOverlay() { - const { disabled, formatOptions, hourCycle, isTimePopoverOpen, locale } = this; + const { disabled, hourCycle, isTimePopoverOpen, locale, timeFormatOptions } = this; const computedHourCycle = getHourCycle(locale, hourCycle); const activePart = this.getActivePartsWithFallback(); - const timeButtonFormatOptions = formatOptions?.time || { + const timeButtonFormatOptions = timeFormatOptions || { hour: 'numeric', minute: 'numeric', computedHourCycle, @@ -2456,7 +2467,7 @@ export class Datetime implements ComponentInterface { } private getHeaderSelectedDateText() { - const { activeParts, formatOptions, multiple, titleSelectedDatesFormatter } = this; + const { activeParts, dateFormatOptions, multiple, titleSelectedDatesFormatter } = this; const isArray = Array.isArray(activeParts); let headerText: string; @@ -2470,7 +2481,7 @@ export class Datetime implements ComponentInterface { } } } else { - const headerFormatOptions: Intl.DateTimeFormatOptions = formatOptions?.date ?? { + const headerFormatOptions: Intl.DateTimeFormatOptions = dateFormatOptions ?? { weekday: 'short', month: 'short', day: 'numeric', From 415bcb0021b7b76f3a0511d9a067dbf7e4f80b77 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Fri, 9 Feb 2024 14:57:18 -0500 Subject: [PATCH 04/24] build --- core/api.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/api.txt b/core/api.txt index e256b31222d..fec37a45e8b 100644 --- a/core/api.txt +++ b/core/api.txt @@ -394,7 +394,7 @@ ion-datetime,prop,dayValues,number | number[] | string | undefined,undefined,fal ion-datetime,prop,disabled,boolean,false,false,false ion-datetime,prop,doneText,string,'Done',false,false ion-datetime,prop,firstDayOfWeek,number,0,false,false -ion-datetime,prop,formatOptions,undefined | { date?: DateTimeFormatOptions | undefined; time?: DateTimeFormatOptions | undefined; },undefined,false,false +ion-datetime,prop,formatOptions,undefined | { date: DateTimeFormatOptions; } | { time: DateTimeFormatOptions; },undefined,false,false ion-datetime,prop,highlightedDates,((dateIsoString: string) => DatetimeHighlightStyle | undefined) | DatetimeHighlight[] | undefined,undefined,false,false ion-datetime,prop,hourCycle,"h11" | "h12" | "h23" | "h24" | undefined,undefined,false,false ion-datetime,prop,hourValues,number | number[] | string | undefined,undefined,false,false From dffebea56bc763382d371e74746c0e4f6628b367 Mon Sep 17 00:00:00 2001 From: ionitron Date: Fri, 9 Feb 2024 20:20:16 +0000 Subject: [PATCH 05/24] chore(): add updated snapshots --- ...rmat-options-ios-ltr-Mobile-Chrome-linux.png | Bin 0 -> 23161 bytes ...mat-options-ios-ltr-Mobile-Firefox-linux.png | Bin 0 -> 24683 bytes ...rmat-options-ios-ltr-Mobile-Safari-linux.png | Bin 0 -> 18970 bytes ...ormat-options-md-ltr-Mobile-Chrome-linux.png | Bin 0 -> 20216 bytes ...rmat-options-md-ltr-Mobile-Firefox-linux.png | Bin 0 -> 24459 bytes ...ormat-options-md-ltr-Mobile-Safari-linux.png | Bin 0 -> 18367 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Safari-linux.png create mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Chrome-linux.png create mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Firefox-linux.png create mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Safari-linux.png diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..77bf75ba00787c102f8dbba250929325af4b72fb GIT binary patch literal 23161 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 PULnv>)lsRqY!mfA=(BQY literal 0 HcmV?d00001 diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Safari-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..31e4ee69a1e59475a677d2cf6d7de237edca1be3 GIT binary patch literal 18970 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 literal 0 HcmV?d00001 diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Chrome-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..baa73690c3f42d1a544752abc95fe218918fd4dd GIT binary patch literal 20216 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�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ⅇ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 literal 0 HcmV?d00001 diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Safari-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Safari-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..671b99df6cac2ebe6b513ff13d23681b817be4bf GIT binary patch literal 18367 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 Dd0zNb literal 0 HcmV?d00001 From 3bc7b4c86a2c2008748c1ceff97f38f1e1800d98 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Mon, 12 Feb 2024 16:21:31 -0500 Subject: [PATCH 06/24] address PR feedback: tests --- .../datetime/test/basic/datetime.e2e.ts | 40 ++++++------------ ...at-options-ios-ltr-Mobile-Chrome-linux.png | Bin 23161 -> 0 bytes ...t-options-ios-ltr-Mobile-Firefox-linux.png | Bin 24683 -> 0 bytes ...at-options-ios-ltr-Mobile-Safari-linux.png | Bin 18970 -> 0 bytes ...mat-options-md-ltr-Mobile-Chrome-linux.png | Bin 20216 -> 0 bytes ...at-options-md-ltr-Mobile-Firefox-linux.png | Bin 24459 -> 0 bytes ...mat-options-md-ltr-Mobile-Safari-linux.png | Bin 18367 -> 0 bytes 7 files changed, 14 insertions(+), 26 deletions(-) delete mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Chrome-linux.png delete mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Firefox-linux.png delete mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Safari-linux.png delete mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Chrome-linux.png delete mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Firefox-linux.png delete mode 100644 core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Safari-linux.png diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts b/core/src/components/datetime/test/basic/datetime.e2e.ts index 11e16b38a8c..59808ba5dc4 100644 --- a/core/src/components/datetime/test/basic/datetime.e2e.ts +++ b/core/src/components/datetime/test/basic/datetime.e2e.ts @@ -570,7 +570,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { * This behavior does not differ across * directions. */ -configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { +configs({ directions: ['ltr'] }).forEach(({ title, config }) => { test.describe(title('datetime: formatOptions'), () => { test('should format header and time button', async ({ page }) => { await page.setContent( @@ -578,31 +578,24 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => { Select Date + `, config ); await page.locator('.datetime-ready').waitFor(); - const datetime = page.locator('ion-datetime'); - - await datetime.evaluate( - (el: HTMLIonDatetimeElement) => - (el.formatOptions = { - time: { hour: '2-digit', minute: '2-digit' }, - date: { day: '2-digit', month: 'long', era: 'short' }, - }) - ); - - await page.waitForChanges(); - const headerDate = page.locator('ion-datetime .datetime-selected-date'); await expect(headerDate).toHaveText('February 01 AD'); const timeBody = page.locator('ion-datetime .time-body'); await expect(timeBody).toHaveText('04:30 PM'); - - await expect(datetime).toHaveScreenshot(screenshot('datetime-format-options')); }); }); }); @@ -627,23 +620,18 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { Select Date + `, config ); - const datetime = page.locator('ion-datetime'); - - await datetime.evaluate( - (el: HTMLIonDatetimeElement) => - (el.formatOptions = { - time: { timeZone: 'UTC' }, - }) - ); - await page.locator('.datetime-ready').waitFor(); - await page.waitForChanges(); - expect(logs.length).toBe(1); expect(logs[0]).toContain( '[Ionic Warning]: Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".' diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Chrome-linux.png deleted file mode 100644 index 77bf75ba00787c102f8dbba250929325af4b72fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23161 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 PULnv>)lsRqY!mfA=(BQY diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Safari-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-ios-ltr-Mobile-Safari-linux.png deleted file mode 100644 index 31e4ee69a1e59475a677d2cf6d7de237edca1be3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18970 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 diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Chrome-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Chrome-linux.png deleted file mode 100644 index baa73690c3f42d1a544752abc95fe218918fd4dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20216 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�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ⅇ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 diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Safari-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-format-options-md-ltr-Mobile-Safari-linux.png deleted file mode 100644 index 671b99df6cac2ebe6b513ff13d23681b817be4bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18367 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 Dd0zNb From b8595a36c58c054ff8e51654e2a84a5ff680865a Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Mon, 12 Feb 2024 16:33:11 -0500 Subject: [PATCH 07/24] address PR feedback: types --- core/src/components/datetime/utils/format.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index 6589c10e402..860cf171c58 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -29,7 +29,7 @@ export const getLocalizedTime = ( const defaultFormatOptions: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: 'numeric' }; // If any options are provided, don't use any of the defaults. - const options: Intl.DateTimeFormatOptions = formatOptions ?? defaultFormatOptions; + const options = formatOptions ?? defaultFormatOptions; return new Intl.DateTimeFormat(locale, { ...options, @@ -163,7 +163,7 @@ export const getMonthAndDay = (locale: string, refParts: DatetimeParts, formatOp const defaultFormatOptions: Intl.DateTimeFormatOptions = { weekday: 'short', month: 'short', day: 'numeric' }; // If any options are provided, don't use any of the defaults. This way the developer can (for example) choose to not have the weekday displayed at all. - const options: Intl.DateTimeFormatOptions = formatOptions ?? defaultFormatOptions; + const options = formatOptions ?? defaultFormatOptions; const date = getNormalizedDate(refParts); return new Intl.DateTimeFormat(locale, { From a4fb2fcc2a3afb8917c2ea53b70326f8e69001d3 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Mon, 12 Feb 2024 19:20:36 -0500 Subject: [PATCH 08/24] remove redundant defaults --- core/src/components/datetime/datetime.tsx | 17 ++--------------- .../datetime/test/basic/datetime.e2e.ts | 2 +- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index 5e361815570..35a2ce69be7 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -2395,12 +2395,6 @@ export class Datetime implements ComponentInterface { const computedHourCycle = getHourCycle(locale, hourCycle); const activePart = this.getActivePartsWithFallback(); - const timeButtonFormatOptions = timeFormatOptions || { - hour: 'numeric', - minute: 'numeric', - computedHourCycle, - }; - return [

{this.renderTimeLabel()}
, , { */ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { test.describe(title('datetime: formatOptions timeZone error'), () => { - test('should throw a warning if time zone is provided', async ({ page }) => { + test('should log a warning if time zone is provided', async ({ page }) => { const logs: string[] = []; page.on('console', (msg) => { From 15c6c1d8321cb512ad56a1a5e72ffe2b8f12d167 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Mon, 12 Feb 2024 19:32:07 -0500 Subject: [PATCH 09/24] add some comments --- core/src/components.d.ts | 4 ++-- core/src/components/datetime/datetime.tsx | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 7dc8ec680f8..cbb455aafcd 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -859,7 +859,7 @@ export namespace Components { */ "firstDayOfWeek": number; /** - * Formatting options, separated by date and time. + * Formatting options, separated by date and time. Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). */ "formatOptions"?: DatetimeFormatOptions; /** @@ -5546,7 +5546,7 @@ declare namespace LocalJSX { */ "firstDayOfWeek"?: number; /** - * Formatting options, separated by date and time. + * Formatting options, separated by date and time. Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). */ "formatOptions"?: DatetimeFormatOptions; /** diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index 35a2ce69be7..b7b2598b903 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -176,6 +176,8 @@ export class Datetime implements ComponentInterface { /** * Formatting options, separated by date and time. + * Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). + * */ @Prop() formatOptions?: DatetimeFormatOptions; @@ -1434,6 +1436,11 @@ export class Datetime implements ComponentInterface { this.emitStyle(); } + /** + * If a time zone is provided in the format options, the rendered text could + * differ from what was selected in the Datetime, which could cause + * confusion. + */ private errorIfTimeZoneProvided() { const { dateFormatOptions, timeFormatOptions } = this; if ( From c411a50c2346d48ffc215bac1dece83fa2a5c4d8 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Mon, 12 Feb 2024 19:34:13 -0500 Subject: [PATCH 10/24] add some comments --- core/src/components.d.ts | 4 ++-- core/src/components/datetime/datetime.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index cbb455aafcd..0c8227cc62e 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -859,7 +859,7 @@ export namespace Components { */ "firstDayOfWeek": number; /** - * Formatting options, separated by date and time. Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). + * Formatting options for dates and times. Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). */ "formatOptions"?: DatetimeFormatOptions; /** @@ -5546,7 +5546,7 @@ declare namespace LocalJSX { */ "firstDayOfWeek"?: number; /** - * Formatting options, separated by date and time. Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). + * Formatting options for dates and times. Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). */ "formatOptions"?: DatetimeFormatOptions; /** diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index b7b2598b903..76f5ba3c09e 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -175,7 +175,7 @@ export class Datetime implements ComponentInterface { @Prop() disabled = false; /** - * Formatting options, separated by date and time. + * Formatting options for dates and times. * Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). * */ From c021dc59953cb29627cecdcb990ebc71037def53 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Tue, 13 Feb 2024 10:25:52 -0500 Subject: [PATCH 11/24] remove time zone name --- .../components/datetime/test/format.spec.ts | 40 +++++++++++++++ core/src/components/datetime/utils/format.ts | 49 +++++++++++-------- 2 files changed, 69 insertions(+), 20 deletions(-) diff --git a/core/src/components/datetime/test/format.spec.ts b/core/src/components/datetime/test/format.spec.ts index 7b595f687c6..c727e22e84b 100644 --- a/core/src/components/datetime/test/format.spec.ts +++ b/core/src/components/datetime/test/format.spec.ts @@ -93,6 +93,26 @@ describe('getMonthAndDay()', () => { expect(getMonthAndDay('en-US', datetimeParts, formatOptions)).toEqual('Sat, Jan 1'); }); + + it('should not include time zone name', () => { + const datetimeParts: DatetimeParts = { + day: 1, + month: 1, + year: 2022, + hour: 9, + minute: 40, + }; + + const formatOptions: Intl.DateTimeFormatOptions = { + timeZone: 'America/Los_Angeles', + timeZoneName: 'long', + weekday: 'short', + month: 'short', + day: 'numeric', + }; + + expect(getMonthAndDay('en-US', datetimeParts, formatOptions)).toEqual('Sat, Jan 1'); + }); }); describe('getFormattedHour()', () => { @@ -226,6 +246,26 @@ describe('getLocalizedTime', () => { const formatOptions: Intl.DateTimeFormatOptions = { timeZone: 'Australia/Sydney', + timeZoneName: 'long', + hour: 'numeric', + minute: 'numeric', + }; + + expect(getLocalizedTime('en-US', datetimeParts, 'h12', formatOptions)).toEqual('9:40 AM'); + }); + + it('should not include time zone name', () => { + const datetimeParts: DatetimeParts = { + day: 1, + month: 1, + year: 2022, + hour: 9, + minute: 40, + }; + + const formatOptions: Intl.DateTimeFormatOptions = { + timeZone: 'America/Los_Angeles', + timeZoneName: 'long', hour: 'numeric', minute: 'numeric', }; diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index 860cf171c58..db6dbd2224f 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -11,6 +11,29 @@ const getFormattedDayPeriod = (dayPeriod?: string) => { return dayPeriod.toUpperCase(); }; +/** + * Including time zone options may lead to the rendered text showing a + * different time from what was selected in the Datetime, which could cause + * confusion. + */ +const stripTimeZone = (formatOptions?: Intl.DateTimeFormatOptions): Intl.DateTimeFormatOptions | undefined => { + if (!formatOptions) return formatOptions; + + /** + * We do not want to display the time zone name + */ + delete formatOptions.timeZoneName; + + /** + * Setting the time zone to UTC ensures that the value shown is always the + * same as what was selected and safeguards against older Safari bugs with + * Intl.DateTimeFormat. + */ + formatOptions.timeZone = 'UTC'; + + return formatOptions; +}; + export const getLocalizedTime = ( locale: string, refParts: DatetimeParts, @@ -28,8 +51,10 @@ export const getLocalizedTime = ( const defaultFormatOptions: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: 'numeric' }; - // If any options are provided, don't use any of the defaults. - const options = formatOptions ?? defaultFormatOptions; + /** + * If any options are provided, don't use any of the defaults. + */ + const options = stripTimeZone(formatOptions ?? defaultFormatOptions); return new Intl.DateTimeFormat(locale, { ...options, @@ -38,19 +63,6 @@ export const getLocalizedTime = ( * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2 */ hourCycle, - /** - * Setting the timeZone to UTC prevents - * new Intl.DatetimeFormat from subtracting - * the user's current timezone offset - * when formatting the time. - */ - timeZone: 'UTC', - /** - * Setting Z at the end indicates that this - * date string is in the UTC time zone. This - * prevents new Date from adding the time zone - * offset when getting the ISO string. - */ }).format( new Date( convertDataToISO({ @@ -163,13 +175,10 @@ export const getMonthAndDay = (locale: string, refParts: DatetimeParts, formatOp const defaultFormatOptions: Intl.DateTimeFormatOptions = { weekday: 'short', month: 'short', day: 'numeric' }; // If any options are provided, don't use any of the defaults. This way the developer can (for example) choose to not have the weekday displayed at all. - const options = formatOptions ?? defaultFormatOptions; + const options = stripTimeZone(formatOptions ?? defaultFormatOptions); const date = getNormalizedDate(refParts); - return new Intl.DateTimeFormat(locale, { - ...options, - timeZone: 'UTC', - }).format(date); + return new Intl.DateTimeFormat(locale, options).format(date); }; /** From b771dde378bfb643196ebf0f9e186a4e1ca8ceb9 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Tue, 13 Feb 2024 17:58:23 -0500 Subject: [PATCH 12/24] clean up types --- core/api.txt | 2 +- core/src/components.d.ts | 8 ++--- .../components/datetime/datetime-interface.ts | 15 +++++++-- core/src/components/datetime/datetime.tsx | 32 +++++++------------ 4 files changed, 28 insertions(+), 29 deletions(-) diff --git a/core/api.txt b/core/api.txt index fec37a45e8b..acdcb8d0faf 100644 --- a/core/api.txt +++ b/core/api.txt @@ -394,7 +394,7 @@ ion-datetime,prop,dayValues,number | number[] | string | undefined,undefined,fal ion-datetime,prop,disabled,boolean,false,false,false ion-datetime,prop,doneText,string,'Done',false,false ion-datetime,prop,firstDayOfWeek,number,0,false,false -ion-datetime,prop,formatOptions,undefined | { date: DateTimeFormatOptions; } | { time: DateTimeFormatOptions; },undefined,false,false +ion-datetime,prop,formatOptions,undefined | { date: DateTimeFormatOptions; time?: DateTimeFormatOptions | undefined; } | { date?: DateTimeFormatOptions | undefined; time: DateTimeFormatOptions; },undefined,false,false ion-datetime,prop,highlightedDates,((dateIsoString: string) => DatetimeHighlightStyle | undefined) | DatetimeHighlight[] | undefined,undefined,false,false ion-datetime,prop,hourCycle,"h11" | "h12" | "h23" | "h24" | undefined,undefined,false,false ion-datetime,prop,hourValues,number | number[] | string | undefined,undefined,false,false diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 0c8227cc62e..ed6ed1192ea 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -15,7 +15,7 @@ import { RouteID, RouterDirection, RouterEventDetail, RouteWrite } from "./compo import { BreadcrumbCollapsedClickEventDetail } from "./components/breadcrumb/breadcrumb-interface"; import { CheckboxChangeEventDetail } from "./components/checkbox/checkbox-interface"; import { ScrollBaseDetail, ScrollDetail } from "./components/content/content-interface"; -import { DatetimeChangeEventDetail, DatetimeFormatOptions, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; +import { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, FormatOptions, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; import { SpinnerTypes } from "./components/spinner/spinner-configs"; import { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface"; import { CounterFormatter } from "./components/item/item-interface"; @@ -51,7 +51,7 @@ export { RouteID, RouterDirection, RouterEventDetail, RouteWrite } from "./compo export { BreadcrumbCollapsedClickEventDetail } from "./components/breadcrumb/breadcrumb-interface"; export { CheckboxChangeEventDetail } from "./components/checkbox/checkbox-interface"; export { ScrollBaseDetail, ScrollDetail } from "./components/content/content-interface"; -export { DatetimeChangeEventDetail, DatetimeFormatOptions, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; +export { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimePresentation, FormatOptions, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface"; export { SpinnerTypes } from "./components/spinner/spinner-configs"; export { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface"; export { CounterFormatter } from "./components/item/item-interface"; @@ -861,7 +861,7 @@ export namespace Components { /** * Formatting options for dates and times. Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). */ - "formatOptions"?: DatetimeFormatOptions; + "formatOptions"?: FormatOptions; /** * Used to apply custom text and background colors to specific dates. Can be either an array of objects containing ISO strings and colors, or a callback that receives an ISO string and returns the colors. Only applies to the `date`, `date-time`, and `time-date` presentations, with `preferWheel="false"`. */ @@ -5548,7 +5548,7 @@ declare namespace LocalJSX { /** * Formatting options for dates and times. Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). */ - "formatOptions"?: DatetimeFormatOptions; + "formatOptions"?: FormatOptions; /** * Used to apply custom text and background colors to specific dates. Can be either an array of objects containing ISO strings and colors, or a callback that receives an ISO string and returns the colors. Only applies to the `date`, `date-time`, and `time-date` presentations, with `preferWheel="false"`. */ diff --git a/core/src/components/datetime/datetime-interface.ts b/core/src/components/datetime/datetime-interface.ts index 97102dbf9ee..475a672d069 100644 --- a/core/src/components/datetime/datetime-interface.ts +++ b/core/src/components/datetime/datetime-interface.ts @@ -37,6 +37,15 @@ export type DatetimeHighlightCallback = (dateIsoString: string) => DatetimeHighl export type DatetimeHourCycle = 'h11' | 'h12' | 'h23' | 'h24'; -export type TimeFormatOptions = { time: Intl.DateTimeFormatOptions }; -export type DateFormatOptions = { date: Intl.DateTimeFormatOptions }; -export type DatetimeFormatOptions = TimeFormatOptions | DateFormatOptions; +/** + * FormatOptions must include date and/or time; it cannot be an empty object + */ +export type FormatOptions = + | { + date: Intl.DateTimeFormatOptions; + time?: Intl.DateTimeFormatOptions; + } + | { + date?: Intl.DateTimeFormatOptions; + time: Intl.DateTimeFormatOptions; + }; diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index 76f5ba3c09e..a6e4b51671e 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -20,9 +20,7 @@ import type { DatetimeHighlightStyle, DatetimeHighlightCallback, DatetimeHourCycle, - DatetimeFormatOptions, - TimeFormatOptions, - DateFormatOptions, + FormatOptions, } from './datetime-interface'; import { isSameDay, warnIfValueOutOfBounds, isBefore, isAfter } from './utils/comparison'; import { @@ -179,21 +177,13 @@ export class Datetime implements ComponentInterface { * Should include a 'date' and/or 'time' object, each of which is of type [Intl.DateTimeFormatOptions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options). * */ - @Prop() formatOptions?: DatetimeFormatOptions; + @Prop() formatOptions?: FormatOptions; @Watch('formatOptions') protected formatOptionsChanged() { this.errorIfTimeZoneProvided(); } - get dateFormatOptions(): Intl.DateTimeFormatOptions | undefined { - return (this.formatOptions as DateFormatOptions)?.date; - } - - get timeFormatOptions(): Intl.DateTimeFormatOptions | undefined { - return (this.formatOptions as TimeFormatOptions)?.time; - } - /** * If `true`, the datetime appears normal but the selected date cannot be changed. */ @@ -1442,12 +1432,12 @@ export class Datetime implements ComponentInterface { * confusion. */ private errorIfTimeZoneProvided() { - const { dateFormatOptions, timeFormatOptions } = this; + const { formatOptions } = this; if ( - dateFormatOptions?.timeZone || - dateFormatOptions?.timeZoneName || - timeFormatOptions?.timeZone || - timeFormatOptions?.timeZoneName + formatOptions?.date?.timeZone || + formatOptions?.date?.timeZoneName || + formatOptions?.time?.timeZone || + formatOptions?.time?.timeZoneName ) { printIonWarning('Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".'); } @@ -2398,7 +2388,7 @@ export class Datetime implements ComponentInterface { } private renderTimeOverlay() { - const { disabled, hourCycle, isTimePopoverOpen, locale, timeFormatOptions } = this; + const { disabled, hourCycle, isTimePopoverOpen, locale, formatOptions } = this; const computedHourCycle = getHourCycle(locale, hourCycle); const activePart = this.getActivePartsWithFallback(); @@ -2433,7 +2423,7 @@ export class Datetime implements ComponentInterface { } }} > - {getLocalizedTime(locale, activePart, computedHourCycle, timeFormatOptions)} + {getLocalizedTime(locale, activePart, computedHourCycle, formatOptions?.time)} , Date: Wed, 14 Feb 2024 05:04:55 -0500 Subject: [PATCH 13/24] tests for stripTimeZone --- .../components/datetime/test/format.spec.ts | 18 ++++++++++++++++++ core/src/components/datetime/utils/format.ts | 4 +--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/core/src/components/datetime/test/format.spec.ts b/core/src/components/datetime/test/format.spec.ts index c727e22e84b..e2912d36f0c 100644 --- a/core/src/components/datetime/test/format.spec.ts +++ b/core/src/components/datetime/test/format.spec.ts @@ -7,6 +7,7 @@ import { getMonthAndYear, getLocalizedDayPeriod, getLocalizedTime, + stripTimeZone, } from '../utils/format'; describe('generateDayAriaLabel()', () => { @@ -273,3 +274,20 @@ describe('getLocalizedTime', () => { expect(getLocalizedTime('en-US', datetimeParts, 'h12', formatOptions)).toEqual('9:40 AM'); }); }); + +describe('stripTimeZone', () => { + it('should remove the time zone name from the options and set the time zone to UTC', () => { + const formatOptions: Intl.DateTimeFormatOptions = { + timeZone: 'America/Los_Angeles', + timeZoneName: 'long', + hour: 'numeric', + minute: 'numeric', + }; + + expect(stripTimeZone(formatOptions)).toEqual({ + timeZone: 'UTC', + hour: 'numeric', + minute: 'numeric', + }); + }); +}); diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index db6dbd2224f..3ad4d056839 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -16,9 +16,7 @@ const getFormattedDayPeriod = (dayPeriod?: string) => { * different time from what was selected in the Datetime, which could cause * confusion. */ -const stripTimeZone = (formatOptions?: Intl.DateTimeFormatOptions): Intl.DateTimeFormatOptions | undefined => { - if (!formatOptions) return formatOptions; - +export const stripTimeZone = (formatOptions: Intl.DateTimeFormatOptions): Intl.DateTimeFormatOptions => { /** * We do not want to display the time zone name */ From c53a842ef6f8c374ea0a2f87916cf79d485122c4 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 05:43:02 -0500 Subject: [PATCH 14/24] use getLocalizedDateTime --- core/src/components/datetime/datetime.tsx | 8 ++- .../components/datetime/test/format.spec.ts | 60 ------------------- core/src/components/datetime/utils/format.ts | 11 ++-- 3 files changed, 10 insertions(+), 69 deletions(-) diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index a6e4b51671e..da143b560f0 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -34,7 +34,7 @@ import { getTimeColumnsData, getCombinedDateColumnData, } from './utils/data'; -import { formatValue, getLocalizedTime, getMonthAndDay, getMonthAndYear } from './utils/format'; +import { formatValue, getLocalizedDateTime, getLocalizedTime, getMonthAndYear } from './utils/format'; import { isLocaleDayPeriodRTL, isMonthFirstLocale, getNumDaysInMonth, getHourCycle } from './utils/helpers'; import { calculateHourFromAMPM, @@ -2473,7 +2473,11 @@ export class Datetime implements ComponentInterface { } } else { // for exactly 1 day selected (multiple set or not), show a formatted version of that - headerText = getMonthAndDay(this.locale, this.getActivePartsWithFallback(), formatOptions?.date); + headerText = getLocalizedDateTime( + this.locale, + this.getActivePartsWithFallback(), + formatOptions?.date ?? { weekday: 'short', month: 'short', day: 'numeric' } + ); } return headerText; diff --git a/core/src/components/datetime/test/format.spec.ts b/core/src/components/datetime/test/format.spec.ts index e2912d36f0c..a0ae34a9296 100644 --- a/core/src/components/datetime/test/format.spec.ts +++ b/core/src/components/datetime/test/format.spec.ts @@ -54,66 +54,6 @@ describe('getMonthAndDay()', () => { it('should return sáb, 1 abr', () => { expect(getMonthAndDay('es-ES', { month: 4, day: 1, year: 2006 })).toEqual('sáb, 1 abr'); }); - - it('should use formatOptions', () => { - const datetimeParts: DatetimeParts = { - day: 1, - month: 1, - year: 2022, - hour: 9, - minute: 40, - }; - - const formatOptions: Intl.DateTimeFormatOptions = { - day: '2-digit', - weekday: 'long', - month: 'narrow', - hour: '2-digit', - minute: '2-digit', - }; - - // Even though this method is intended to be used for date, the time may be displayed as well when passing formatOptions - expect(getMonthAndDay('en-US', datetimeParts, formatOptions)).toEqual('Saturday, J 01, 09:40 AM'); - }); - - it('should override provided time zone with UTC', () => { - const datetimeParts: DatetimeParts = { - day: 1, - month: 1, - year: 2022, - hour: 23, - minute: 40, - }; - - const formatOptions: Intl.DateTimeFormatOptions = { - timeZone: 'Australia/Sydney', - weekday: 'short', - month: 'short', - day: 'numeric', - }; - - expect(getMonthAndDay('en-US', datetimeParts, formatOptions)).toEqual('Sat, Jan 1'); - }); - - it('should not include time zone name', () => { - const datetimeParts: DatetimeParts = { - day: 1, - month: 1, - year: 2022, - hour: 9, - minute: 40, - }; - - const formatOptions: Intl.DateTimeFormatOptions = { - timeZone: 'America/Los_Angeles', - timeZoneName: 'long', - weekday: 'short', - month: 'short', - day: 'numeric', - }; - - expect(getMonthAndDay('en-US', datetimeParts, formatOptions)).toEqual('Sat, Jan 1'); - }); }); describe('getFormattedHour()', () => { diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index 3ad4d056839..376dafff566 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -169,14 +169,11 @@ export const generateDayAriaLabel = (locale: string, today: boolean, refParts: D * Gets the day of the week, month, and day * Used for the header in MD mode. */ -export const getMonthAndDay = (locale: string, refParts: DatetimeParts, formatOptions?: Intl.DateTimeFormatOptions) => { - const defaultFormatOptions: Intl.DateTimeFormatOptions = { weekday: 'short', month: 'short', day: 'numeric' }; - - // If any options are provided, don't use any of the defaults. This way the developer can (for example) choose to not have the weekday displayed at all. - const options = stripTimeZone(formatOptions ?? defaultFormatOptions); - +export const getMonthAndDay = (locale: string, refParts: DatetimeParts) => { const date = getNormalizedDate(refParts); - return new Intl.DateTimeFormat(locale, options).format(date); + return new Intl.DateTimeFormat(locale, { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' }).format( + date + ); }; /** From 3f61fe16b4badd144c3091b7b86505c0eedc2c7f Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 09:05:47 -0500 Subject: [PATCH 15/24] check for presentation-format mismatch --- core/src/components/datetime/datetime.tsx | 45 +++++++++++++++++++ .../datetime/test/basic/datetime.e2e.ts | 38 ++++++++++++++-- 2 files changed, 80 insertions(+), 3 deletions(-) diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index da143b560f0..ba18131282d 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -181,6 +181,7 @@ export class Datetime implements ComponentInterface { @Watch('formatOptions') protected formatOptionsChanged() { + this.checkForPresentationFormatMismatch(); this.errorIfTimeZoneProvided(); } @@ -248,6 +249,11 @@ export class Datetime implements ComponentInterface { */ @Prop() presentation: DatetimePresentation = 'date-time'; + @Watch('presentation') + protected presentationChanged() { + this.checkForPresentationFormatMismatch(); + } + private get isGridStyle() { const { presentation, preferWheel } = this; const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date'; @@ -1396,6 +1402,7 @@ export class Datetime implements ComponentInterface { } if (formatOptions) { + this.checkForPresentationFormatMismatch(); this.errorIfTimeZoneProvided(); } @@ -1443,6 +1450,44 @@ export class Datetime implements ComponentInterface { } } + private checkForPresentationFormatMismatch = () => { + const { formatOptions, presentation } = this; + + console.log('checkForPresentationFormatMismatch', formatOptions, presentation); + + // formatOptions is not required + if (!formatOptions) return; + + // If formatOptions is provided, the date and/or time objects are required, depending on the presentation + switch (presentation) { + case 'date': + case 'month-year': + case 'month': + case 'year': + if (formatOptions.date === undefined) { + printIonWarning( + `Datetime: The '${presentation}' presentation requires a date object in formatOptions.`, + this.el + ); + } + break; + case 'time': + if (formatOptions.time === undefined) { + printIonWarning(`Datetime: The 'time' presentation requires a time object in formatOptions.`, this.el); + } + break; + case 'date-time': + case 'time-date': + if (formatOptions.date === undefined || formatOptions.time === undefined) { + printIonWarning( + `Datetime: The '${presentation}' presentation requires both a date and time object in formatOptions.`, + this.el + ); + } + break; + } + }; + private emitStyle() { this.ionStyle.emit({ interactive: true, diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts b/core/src/components/datetime/test/basic/datetime.e2e.ts index 6cb197d81a3..4d054aab17a 100644 --- a/core/src/components/datetime/test/basic/datetime.e2e.ts +++ b/core/src/components/datetime/test/basic/datetime.e2e.ts @@ -605,7 +605,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, config }) => { * modes/directions. */ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { - test.describe(title('datetime: formatOptions timeZone error'), () => { + test.describe(title('datetime: formatOptions misconfiguration errors'), () => { test('should log a warning if time zone is provided', async ({ page }) => { const logs: string[] = []; @@ -617,13 +617,13 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { await page.setContent( ` - + Select Date `, @@ -637,5 +637,37 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { '[Ionic Warning]: Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".' ); }); + + test('should log a warning if the required formatOptions are not provided for a presentation', async ({ page }) => { + const logs: string[] = []; + + page.on('console', (msg) => { + if (msg.type() === 'warning') { + logs.push(msg.text()); + } + }); + + await page.setContent( + ` + + Select Date + + + `, + config + ); + + await page.locator('.datetime-ready').waitFor(); + + expect(logs.length).toBe(1); + expect(logs[0]).toContain( + "[Ionic Warning]: Datetime: The 'date-time' presentation requires both a date and time object in formatOptions." + ); + }); }); }); From 662a6d7d56ce9802ce9ff042423e9a84f9939cfc Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 10:00:08 -0500 Subject: [PATCH 16/24] remove console log --- core/src/components/datetime/datetime.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index ba18131282d..273d8d19445 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -1453,8 +1453,6 @@ export class Datetime implements ComponentInterface { private checkForPresentationFormatMismatch = () => { const { formatOptions, presentation } = this; - console.log('checkForPresentationFormatMismatch', formatOptions, presentation); - // formatOptions is not required if (!formatOptions) return; From affaed4be6bc5123799c09bbb56ba91a15345f2f Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 10:41:25 -0500 Subject: [PATCH 17/24] feat(datetime-button): formatOptions for Datetime Button --- .../datetime-button/datetime-button.tsx | 30 +++++-- .../test/basic/datetime-button.e2e.ts | 85 +++++++++++++++++++ .../datetime-button/test/basic/index.html | 18 ++++ core/src/components/datetime/utils/format.ts | 2 +- 4 files changed, 125 insertions(+), 10 deletions(-) diff --git a/core/src/components/datetime-button/datetime-button.tsx b/core/src/components/datetime-button/datetime-button.tsx index 7ce3ca4163d..519fb42da6a 100644 --- a/core/src/components/datetime-button/datetime-button.tsx +++ b/core/src/components/datetime-button/datetime-button.tsx @@ -8,7 +8,7 @@ import { getIonMode } from '../../global/ionic-global'; import type { Color } from '../../interface'; import type { DatetimePresentation } from '../datetime/datetime-interface'; import { getToday } from '../datetime/utils/data'; -import { getMonthAndYear, getMonthDayAndYear, getLocalizedDateTime, getLocalizedTime } from '../datetime/utils/format'; +import { getLocalizedDateTime, getLocalizedTime } from '../datetime/utils/format'; import { getHourCycle } from '../datetime/utils/helpers'; import { parseDate } from '../datetime/utils/parse'; /** @@ -196,7 +196,7 @@ export class DatetimeButton implements ComponentInterface { return; } - const { value, locale, hourCycle, preferWheel, multiple, titleSelectedDatesFormatter } = datetimeEl; + const { value, locale, formatOptions, hourCycle, preferWheel, multiple, titleSelectedDatesFormatter } = datetimeEl; const parsedValues = this.getParsedDateValues(value); @@ -225,8 +225,12 @@ export class DatetimeButton implements ComponentInterface { switch (datetimePresentation) { case 'date-time': case 'time-date': - const dateText = getMonthDayAndYear(locale, firstParsedDatetime); - const timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle); + const dateText = getLocalizedDateTime( + locale, + firstParsedDatetime, + formatOptions?.date ?? { month: 'short', day: 'numeric', year: 'numeric' } + ); + const timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle, formatOptions?.time); if (preferWheel) { this.dateText = `${dateText} ${timeText}`; } else { @@ -246,20 +250,28 @@ export class DatetimeButton implements ComponentInterface { } this.dateText = headerText; } else { - this.dateText = getMonthDayAndYear(locale, firstParsedDatetime); + this.dateText = getLocalizedDateTime( + locale, + firstParsedDatetime, + formatOptions?.date ?? { month: 'short', day: 'numeric', year: 'numeric' } + ); } break; case 'time': - this.timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle); + this.timeText = getLocalizedTime(locale, firstParsedDatetime, computedHourCycle, formatOptions?.time); break; case 'month-year': - this.dateText = getMonthAndYear(locale, firstParsedDatetime); + this.dateText = getLocalizedDateTime( + locale, + firstParsedDatetime, + formatOptions?.date ?? { month: 'long', year: 'numeric' } + ); break; case 'month': - this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, { month: 'long' }); + this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.time ?? { month: 'long' }); break; case 'year': - this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, { year: 'numeric' }); + this.dateText = getLocalizedDateTime(locale, firstParsedDatetime, formatOptions?.time ?? { year: 'numeric' }); break; } }; diff --git a/core/src/components/datetime-button/test/basic/datetime-button.e2e.ts b/core/src/components/datetime-button/test/basic/datetime-button.e2e.ts index 938ce976e54..943446125dc 100644 --- a/core/src/components/datetime-button/test/basic/datetime-button.e2e.ts +++ b/core/src/components/datetime-button/test/basic/datetime-button.e2e.ts @@ -244,4 +244,89 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { await expect(page.locator('#time-button')).not.toBeVisible(); }); }); + + test.describe(title('datetime-button: formatOptions'), () => { + test('should include date and time for presentation date-time', async ({ page }) => { + await page.setContent( + ` + + + + `, + config + ); + + await page.locator('.datetime-ready').waitFor(); + + await expect(page.locator('#date-button')).toContainText('Thu, November 02'); + await expect(page.locator('#time-button')).toContainText('01:22 AM'); + }); + + test('should include date for presentation date', async ({ page }) => { + await page.setContent( + ` + + + + `, + config + ); + + await page.locator('.datetime-ready').waitFor(); + + await expect(page.locator('#date-button')).toContainText('Thu, November 02'); + }); + + test('should include date and time in same button for preferWheel', async ({ page }) => { + await page.setContent( + ` + + + + `, + config + ); + + await page.locator('.datetime-ready').waitFor(); + + await page.pause(); + + await expect(page.locator('ion-datetime-button')).toContainText('Thu, November 02 01:22 AM'); + }); + }); }); diff --git a/core/src/components/datetime-button/test/basic/index.html b/core/src/components/datetime-button/test/basic/index.html index c446544a0a3..975cf7ca88d 100644 --- a/core/src/components/datetime-button/test/basic/index.html +++ b/core/src/components/datetime-button/test/basic/index.html @@ -218,5 +218,23 @@

preferWheel / date-time

+ + diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index 376dafff566..ef62a7c460a 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -254,7 +254,7 @@ export const getLocalizedDateTime = ( options: Intl.DateTimeFormatOptions ): string => { const date = getNormalizedDate(refParts); - return getDateTimeFormat(locale, options).format(date); + return getDateTimeFormat(locale, stripTimeZone(options)).format(date); }; /** From feca3ed25f24cfb64359c80e711783c522455b10 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 12:34:39 -0500 Subject: [PATCH 18/24] remove unused method --- .../components/datetime/test/format.spec.ts | 19 ------------------- core/src/components/datetime/utils/format.ts | 11 ----------- 2 files changed, 30 deletions(-) diff --git a/core/src/components/datetime/test/format.spec.ts b/core/src/components/datetime/test/format.spec.ts index a0ae34a9296..7161a1aeae3 100644 --- a/core/src/components/datetime/test/format.spec.ts +++ b/core/src/components/datetime/test/format.spec.ts @@ -1,7 +1,6 @@ import type { DatetimeParts } from '../datetime-interface'; import { generateDayAriaLabel, - getMonthAndDay, getFormattedHour, addTimePadding, getMonthAndYear, @@ -38,24 +37,6 @@ describe('generateDayAriaLabel()', () => { }); }); -describe('getMonthAndDay()', () => { - it('should return Tue, May 11', () => { - expect(getMonthAndDay('en-US', { month: 5, day: 11, year: 2021 })).toEqual('Tue, May 11'); - }); - - it('should return mar, 11 may', () => { - expect(getMonthAndDay('es-ES', { month: 5, day: 11, year: 2021 })).toEqual('mar, 11 may'); - }); - - it('should return Sat, Apr 1', () => { - expect(getMonthAndDay('en-US', { month: 4, day: 1, year: 2006 })).toEqual('Sat, Apr 1'); - }); - - it('should return sáb, 1 abr', () => { - expect(getMonthAndDay('es-ES', { month: 4, day: 1, year: 2006 })).toEqual('sáb, 1 abr'); - }); -}); - describe('getFormattedHour()', () => { it('should only add padding if using 24 hour time', () => { expect(getFormattedHour(1, 'h11')).toEqual('1'); diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index 376dafff566..226dc140518 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -165,17 +165,6 @@ export const generateDayAriaLabel = (locale: string, today: boolean, refParts: D return today ? `Today, ${labelString}` : labelString; }; -/** - * Gets the day of the week, month, and day - * Used for the header in MD mode. - */ -export const getMonthAndDay = (locale: string, refParts: DatetimeParts) => { - const date = getNormalizedDate(refParts); - return new Intl.DateTimeFormat(locale, { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' }).format( - date - ); -}; - /** * Given a locale and a date object, * return a formatted string that includes From 87cf73fb8ba43ede337d67b0e8fed89f7a42b280 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 12:37:10 -0500 Subject: [PATCH 19/24] revert removing comment --- core/src/components/datetime/utils/format.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index 226dc140518..5209836b473 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -61,6 +61,12 @@ export const getLocalizedTime = ( * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2 */ hourCycle, + /** + * Setting Z at the end indicates that this + * date string is in the UTC time zone. This + * prevents new Date from adding the time zone + * offset when getting the ISO string. + */ }).format( new Date( convertDataToISO({ From fe760bb06b7c1920ca0f7133f2119c39dd662f54 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 12:40:27 -0500 Subject: [PATCH 20/24] simplify default for formatOptions for getLocalizedTime --- core/src/components/datetime/utils/format.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index 5209836b473..1b498512c64 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -36,7 +36,7 @@ export const getLocalizedTime = ( locale: string, refParts: DatetimeParts, hourCycle: DatetimeHourCycle, - formatOptions?: Intl.DateTimeFormatOptions + formatOptions: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: 'numeric' } ): string => { const timeParts: Pick = { hour: refParts.hour, @@ -47,15 +47,8 @@ export const getLocalizedTime = ( return 'Invalid Time'; } - const defaultFormatOptions: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: 'numeric' }; - - /** - * If any options are provided, don't use any of the defaults. - */ - const options = stripTimeZone(formatOptions ?? defaultFormatOptions); - return new Intl.DateTimeFormat(locale, { - ...options, + ...stripTimeZone(formatOptions), /** * We use hourCycle here instead of hour12 due to: * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2 From b6b06fe4213e7e44a6d777ee2ceb6d9ad88f49df Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 12:42:27 -0500 Subject: [PATCH 21/24] rename method --- core/src/components/datetime/datetime.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index 273d8d19445..45736f6b22e 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -182,7 +182,7 @@ export class Datetime implements ComponentInterface { @Watch('formatOptions') protected formatOptionsChanged() { this.checkForPresentationFormatMismatch(); - this.errorIfTimeZoneProvided(); + this.warnIfTimeZoneProvided(); } /** @@ -1403,7 +1403,7 @@ export class Datetime implements ComponentInterface { if (formatOptions) { this.checkForPresentationFormatMismatch(); - this.errorIfTimeZoneProvided(); + this.warnIfTimeZoneProvided(); } const hourValues = (this.parsedHourValues = convertToArrayOfNumbers(this.hourValues)); @@ -1438,7 +1438,7 @@ export class Datetime implements ComponentInterface { * differ from what was selected in the Datetime, which could cause * confusion. */ - private errorIfTimeZoneProvided() { + private warnIfTimeZoneProvided() { const { formatOptions } = this; if ( formatOptions?.date?.timeZone || From a09c4b267df45e207bf8b3e94261dbe8134e1538 Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 12:51:48 -0500 Subject: [PATCH 22/24] Move methods to util file --- core/src/components/datetime/datetime.tsx | 66 +++------------------- core/src/components/datetime/utils/warn.ts | 52 +++++++++++++++++ 2 files changed, 60 insertions(+), 58 deletions(-) create mode 100644 core/src/components/datetime/utils/warn.ts diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx index 45736f6b22e..9ddd1cb4ecb 100644 --- a/core/src/components/datetime/datetime.tsx +++ b/core/src/components/datetime/datetime.tsx @@ -69,6 +69,7 @@ import { isNextMonthDisabled, isPrevMonthDisabled, } from './utils/state'; +import { checkForPresentationFormatMismatch, warnIfTimeZoneProvided } from './utils/warn'; /** * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use. @@ -181,8 +182,9 @@ export class Datetime implements ComponentInterface { @Watch('formatOptions') protected formatOptionsChanged() { - this.checkForPresentationFormatMismatch(); - this.warnIfTimeZoneProvided(); + const { formatOptions, presentation } = this; + checkForPresentationFormatMismatch(presentation, formatOptions); + warnIfTimeZoneProvided(formatOptions); } /** @@ -251,7 +253,8 @@ export class Datetime implements ComponentInterface { @Watch('presentation') protected presentationChanged() { - this.checkForPresentationFormatMismatch(); + const { formatOptions, presentation } = this; + checkForPresentationFormatMismatch(presentation, formatOptions); } private get isGridStyle() { @@ -1402,8 +1405,8 @@ export class Datetime implements ComponentInterface { } if (formatOptions) { - this.checkForPresentationFormatMismatch(); - this.warnIfTimeZoneProvided(); + checkForPresentationFormatMismatch(presentation, formatOptions); + warnIfTimeZoneProvided(formatOptions); } const hourValues = (this.parsedHourValues = convertToArrayOfNumbers(this.hourValues)); @@ -1433,59 +1436,6 @@ export class Datetime implements ComponentInterface { this.emitStyle(); } - /** - * If a time zone is provided in the format options, the rendered text could - * differ from what was selected in the Datetime, which could cause - * confusion. - */ - private warnIfTimeZoneProvided() { - const { formatOptions } = this; - if ( - formatOptions?.date?.timeZone || - formatOptions?.date?.timeZoneName || - formatOptions?.time?.timeZone || - formatOptions?.time?.timeZoneName - ) { - printIonWarning('Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".'); - } - } - - private checkForPresentationFormatMismatch = () => { - const { formatOptions, presentation } = this; - - // formatOptions is not required - if (!formatOptions) return; - - // If formatOptions is provided, the date and/or time objects are required, depending on the presentation - switch (presentation) { - case 'date': - case 'month-year': - case 'month': - case 'year': - if (formatOptions.date === undefined) { - printIonWarning( - `Datetime: The '${presentation}' presentation requires a date object in formatOptions.`, - this.el - ); - } - break; - case 'time': - if (formatOptions.time === undefined) { - printIonWarning(`Datetime: The 'time' presentation requires a time object in formatOptions.`, this.el); - } - break; - case 'date-time': - case 'time-date': - if (formatOptions.date === undefined || formatOptions.time === undefined) { - printIonWarning( - `Datetime: The '${presentation}' presentation requires both a date and time object in formatOptions.`, - this.el - ); - } - break; - } - }; - private emitStyle() { this.ionStyle.emit({ interactive: true, diff --git a/core/src/components/datetime/utils/warn.ts b/core/src/components/datetime/utils/warn.ts new file mode 100644 index 00000000000..22d2be29ced --- /dev/null +++ b/core/src/components/datetime/utils/warn.ts @@ -0,0 +1,52 @@ +import { printIonWarning } from '@utils/logging'; + +import type { DatetimePresentation, FormatOptions } from '../datetime-interface'; + +/** + * If a time zone is provided in the format options, the rendered text could + * differ from what was selected in the Datetime, which could cause + * confusion. + */ +export const warnIfTimeZoneProvided = (formatOptions?: FormatOptions) => { + if ( + formatOptions?.date?.timeZone || + formatOptions?.date?.timeZoneName || + formatOptions?.time?.timeZone || + formatOptions?.time?.timeZoneName + ) { + printIonWarning('Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".'); + } +}; + +export const checkForPresentationFormatMismatch = ( + presentation: DatetimePresentation, + formatOptions?: FormatOptions +) => { + // formatOptions is not required + if (!formatOptions) return; + + // If formatOptions is provided, the date and/or time objects are required, depending on the presentation + switch (presentation) { + case 'date': + case 'month-year': + case 'month': + case 'year': + if (formatOptions.date === undefined) { + printIonWarning(`Datetime: The '${presentation}' presentation requires a date object in formatOptions.`); + } + break; + case 'time': + if (formatOptions.time === undefined) { + printIonWarning(`Datetime: The 'time' presentation requires a time object in formatOptions.`); + } + break; + case 'date-time': + case 'time-date': + if (formatOptions.date === undefined || formatOptions.time === undefined) { + printIonWarning( + `Datetime: The '${presentation}' presentation requires both a date and time object in formatOptions.` + ); + } + break; + } +}; From 9f93c8f6178ee324e41bc16e2c0b3bc4b98aaf1d Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 14:34:03 -0500 Subject: [PATCH 23/24] change validation requirements --- core/src/components/datetime/test/basic/datetime.e2e.ts | 6 ++---- core/src/components/datetime/utils/warn.ts | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts b/core/src/components/datetime/test/basic/datetime.e2e.ts index 4d054aab17a..32b4ee4e7e7 100644 --- a/core/src/components/datetime/test/basic/datetime.e2e.ts +++ b/core/src/components/datetime/test/basic/datetime.e2e.ts @@ -654,9 +654,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
`, config @@ -666,7 +664,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => { expect(logs.length).toBe(1); expect(logs[0]).toContain( - "[Ionic Warning]: Datetime: The 'date-time' presentation requires both a date and time object in formatOptions." + "[Ionic Warning]: Datetime: The 'date-time' presentation requires either a date or time object (or both) in formatOptions." ); }); }); diff --git a/core/src/components/datetime/utils/warn.ts b/core/src/components/datetime/utils/warn.ts index 22d2be29ced..0b940d26c00 100644 --- a/core/src/components/datetime/utils/warn.ts +++ b/core/src/components/datetime/utils/warn.ts @@ -42,9 +42,9 @@ export const checkForPresentationFormatMismatch = ( break; case 'date-time': case 'time-date': - if (formatOptions.date === undefined || formatOptions.time === undefined) { + if (formatOptions.date === undefined && formatOptions.time === undefined) { printIonWarning( - `Datetime: The '${presentation}' presentation requires both a date and time object in formatOptions.` + `Datetime: The '${presentation}' presentation requires either a date or time object (or both) in formatOptions.` ); } break; From 611a3172693f37373089f60783b53dc09b9336df Mon Sep 17 00:00:00 2001 From: Shawn Taylor Date: Wed, 14 Feb 2024 14:39:56 -0500 Subject: [PATCH 24/24] remove now-unused function --- core/src/components/datetime/utils/format.ts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index ef62a7c460a..dd8b16ef077 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -187,16 +187,6 @@ export const getMonthAndYear = (locale: string, refParts: DatetimeParts) => { return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric', timeZone: 'UTC' }).format(date); }; -/** - * Given a locale and a date object, - * return a formatted string that includes - * the short month, numeric day, and full year. - * Example: Apr 22, 2021 - */ -export const getMonthDayAndYear = (locale: string, refParts: DatetimeParts) => { - return getLocalizedDateTime(locale, refParts, { month: 'short', day: 'numeric', year: 'numeric' }); -}; - /** * Given a locale and a date object, * return a formatted string that includes