diff --git a/core/api.txt b/core/api.txt
index e1f3e7a519..dde4b430fe 100644
--- a/core/api.txt
+++ b/core/api.txt
@@ -691,19 +691,16 @@ ion-datetime,event,ionFocus,void,true
ion-datetime,css-prop,--background,ionic
ion-datetime,css-prop,--background,ios
ion-datetime,css-prop,--background,md
-ion-datetime,css-prop,--background-rgb,ionic
ion-datetime,css-prop,--background-rgb,ios
ion-datetime,css-prop,--background-rgb,md
-ion-datetime,css-prop,--title-color,ionic
+ion-datetime,css-prop,--focus-ring-color,ionic
+ion-datetime,css-prop,--focus-ring-width,ionic
ion-datetime,css-prop,--title-color,ios
ion-datetime,css-prop,--title-color,md
-ion-datetime,css-prop,--wheel-fade-background-rgb,ionic
ion-datetime,css-prop,--wheel-fade-background-rgb,ios
ion-datetime,css-prop,--wheel-fade-background-rgb,md
-ion-datetime,css-prop,--wheel-highlight-background,ionic
ion-datetime,css-prop,--wheel-highlight-background,ios
ion-datetime,css-prop,--wheel-highlight-background,md
-ion-datetime,css-prop,--wheel-highlight-border-radius,ionic
ion-datetime,css-prop,--wheel-highlight-border-radius,ios
ion-datetime,css-prop,--wheel-highlight-border-radius,md
ion-datetime,part,calendar-day
diff --git a/core/src/components/datetime/datetime.scss b/core/src/components/datetime/datetime.common.scss
similarity index 73%
rename from core/src/components/datetime/datetime.scss
rename to core/src/components/datetime/datetime.common.scss
index 30d1f5bedc..a1c0b6a17e 100644
--- a/core/src/components/datetime/datetime.scss
+++ b/core/src/components/datetime/datetime.common.scss
@@ -1,23 +1,12 @@
@import "../../themes/native/native.globals";
-// Datetime
+// Datetime: Common Styles
// --------------------------------------------------
:host {
/**
* @prop --background: The primary background of the datetime component.
- * @prop --background-rgb: The primary background of the datetime component in RGB format.
- * @prop --title-color: The text color of the title.
- *
- * @prop --wheel-highlight-background: The background of the highlight under the selected
- * item when using a wheel style layout, or in the month/year picker for grid style layouts.
- * @prop --wheel-highlight-border-radius: The border radius of the highlight under the selected
- * item when using a wheel style layout, or in the month/year picker for grid style layouts.
- * @prop --wheel-fade-background-rgb: The color of the gradient covering non-selected items
- * when using a wheel style layout, or in the month/year picker for grid style layouts. Must
- * be in RGB format, e.g. `255, 255, 255`.
*/
-
display: flex;
flex-flow: column;
@@ -32,19 +21,6 @@
height: auto;
}
-:host(.datetime-size-fixed:not(.datetime-prefer-wheel)) {
- max-width: 350px;
-}
-
-/**
- * This ensures that the picker is appropriately
- * sized and never truncates the text.
- */
-:host(.datetime-size-fixed.datetime-prefer-wheel) {
- min-width: 350px;
- max-width: max-content;
-}
-
:host(.datetime-size-cover) {
width: 100%;
}
@@ -68,6 +44,7 @@
opacity: 1;
}
+
/**
* Changing the physical order of the
* picker columns in the DOM is added
@@ -157,7 +134,6 @@
* Disabled buttons should have full opacity
* in readonly mode
*/
-
.calendar-day[disabled]:not(.calendar-day-constrained),
.datetime-action-buttons ion-button[disabled] {
opacity: 1;
@@ -213,12 +189,9 @@
justify-content: space-between;
}
-:host .calendar-action-buttons ion-button {
- --background: transparent;
-}
-
// Calendar / Header / Days of Week
// -----------------------------------
+
:host .calendar-days-of-week {
display: grid;
grid-template-columns: repeat(7, 1fr);
@@ -237,6 +210,7 @@
// Calendar / Body
// -----------------------------------
+
:host .calendar-body {
/**
* Show all calendar months inline
@@ -330,7 +304,6 @@
* and horizontally within its grid cell.
*/
.calendar-day {
- @include border-radius(50%);
@include padding(0px);
@include margin(0px);
@@ -348,8 +321,6 @@
background: none;
color: currentColor;
- font-family: $font-family-base;
-
cursor: pointer;
appearance: none;
@@ -357,16 +328,8 @@
z-index: 0;
}
-:host .calendar-day[disabled] {
+.calendar-day[disabled] {
pointer-events: none;
-
- opacity: 0.4;
-}
-
-.calendar-day:focus {
- background: current-color(base, 0.2);
-
- box-shadow: 0px 0px 0px 4px current-color(base, 0.2);
}
// Time / Header
@@ -378,14 +341,6 @@
justify-content: space-between;
}
-:host(.datetime-presentation-time) .datetime-time {
- @include padding(0);
-}
-
-:host ion-popover {
- --height: 200px;
-}
-
:host .time-header {
display: flex;
@@ -393,17 +348,10 @@
}
:host .time-body {
- @include border-radius(8px);
- @include padding(6px, 12px, 6px, 12px);
-
display: flex;
border: none;
- background: var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));
-
- color: $text-color;
-
font-family: inherit;
font-size: inherit;
@@ -412,19 +360,12 @@
appearance: none;
}
-:host .time-body-active {
- color: current-color(base);
-}
-
:host(.in-item) {
position: static;
}
// Year Picker
// -----------------------------------
-:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle {
- color: #{current-color(base)};
-}
.calendar-month-year {
min-width: 0;
@@ -444,28 +385,9 @@
cursor: pointer;
z-index: 1;
-
- &::after {
- @include button-state();
-
- transition: opacity 15ms linear, background-color 15ms linear;
-
- z-index: -1;
- }
-
- &.ion-focused::after {
- background: currentColor;
- }
-
- &:disabled {
- opacity: 0.3;
- pointer-events: none;
- }
}
.calendar-month-year-toggle ion-icon {
- @include padding(0, 0, 0, 4px);
-
flex-shrink: 0;
}
@@ -474,12 +396,3 @@
align-items: center;
}
-
-// Picker Custom Variables
-// -----------------------------------
-
-ion-picker {
- --highlight-background: var(--wheel-highlight-background);
- --highlight-border-radius: var(--wheel-highlight-border-radius);
- --fade-background-rgb: var(--wheel-fade-background-rgb);
-}
diff --git a/core/src/components/datetime/datetime.ionic.scss b/core/src/components/datetime/datetime.ionic.scss
new file mode 100644
index 0000000000..3518ccec20
--- /dev/null
+++ b/core/src/components/datetime/datetime.ionic.scss
@@ -0,0 +1,140 @@
+@use "../../themes/ionic/ionic.globals.scss" as globals;
+@use "./datetime.common";
+
+// Ionic Datetime
+// --------------------------------------------------
+
+:host {
+ /**
+ * @prop --focus-ring-color: The color of the ring around the focused element.
+ * @prop --focus-ring-width: The width of the ring around the focused element.
+ */
+ --background: #{globals.$ionic-color-base-white};
+ --focus-ring-color: #{globals.$ionic-state-focus-1};
+ --focus-ring-width: #{globals.$ionic-border-radius-050};
+}
+
+// Calendar Header
+// -----------------------------------
+
+.calendar-action-buttons {
+ @include globals.padding(globals.$ionic-space-200, null);
+
+ align-items: center;
+
+ height: globals.$ionic-scale-1400;
+
+ box-sizing: border-box;
+}
+
+.calendar-month-year {
+ flex: 1 0 0;
+}
+
+// Month year toggle should match the
+// default round clear button style
+.calendar-month-year-toggle {
+ @include globals.border-radius(globals.$ionic-border-radius-full);
+ @include globals.typography(globals.$ionic-action-lg);
+ @include globals.padding(globals.$ionic-space-200, globals.$ionic-space-400);
+
+ min-width: globals.$ionic-scale-1600;
+ min-height: globals.$ionic-scale-1000;
+
+ border: var(--focus-ring-width) globals.$ionic-border-style-solid transparent;
+
+ color: globals.$ionic-color-primary-base;
+}
+
+// Hovered Month Year Toggle
+@media (any-hover: hover) {
+ .calendar-month-year-toggle:hover {
+ background: globals.$ionic-color-neutral-200;
+ }
+}
+
+// Focused Month Year Toggle
+.calendar-month-year-toggle.ion-focused {
+ border-color: var(--focus-ring-color);
+}
+
+// Activated Month Year Toggle
+.calendar-month-year-toggle.ion-activated {
+ background: globals.$ionic-color-neutral-200;
+}
+
+// TODO(ROU-11119): Rewrite this when we replace the ion-button with a native button
+.calendar-next-prev ion-button.button-has-icon-only {
+ --color: #{globals.$ionic-color-neutral-1000};
+ --background-activated: #{globals.$ionic-color-neutral-200};
+ --background-hover: #{globals.$ionic-color-neutral-200};
+ --background-hover-opacity: 1;
+}
+
+// TODO(ROU-11119): Rewrite this when we replace the ion-button with a native button
+.calendar-next-prev ion-button.button-has-icon-only.ion-focused::part(native) {
+ border: globals.$ionic-border-size-050 globals.$ionic-border-style-solid globals.$ionic-state-focus-1;
+
+ outline: none;
+}
+
+// Calendar Days of Week
+// -----------------------------------
+
+.calendar-days-of-week {
+ @include globals.typography(globals.$ionic-overline-medium);
+
+ align-content: center;
+
+ height: globals.$ionic-scale-1200;
+
+ color: globals.$ionic-color-neutral-800;
+}
+
+// Calendar Day
+// -----------------------------------
+
+.calendar-day {
+ @include globals.border-radius(globals.$ionic-border-radius-full);
+ @include globals.padding(globals.$ionic-space-100);
+ @include globals.typography(globals.$ionic-action-md);
+
+ width: globals.$ionic-scale-1200;
+ min-width: globals.$ionic-scale-1200;
+
+ height: globals.$ionic-scale-1200;
+
+ color: globals.$ionic-color-neutral-1200;
+}
+
+// Disabled Day
+.calendar-day[disabled]:not(.calendar-day-constrained) {
+ color: globals.$ionic-color-neutral-500;
+}
+
+// Current Day
+.calendar-day.calendar-day-today {
+ color: globals.$ionic-color-primary-base;
+}
+
+// Selected Day
+.calendar-day.calendar-day-active {
+ background: globals.$ionic-color-primary-100;
+}
+
+// Focused Day
+.calendar-day:focus-visible {
+ border: var(--focus-ring-width) globals.$ionic-border-style-solid var(--focus-ring-color);
+}
+
+// Hovered Day
+@media (any-hover: hover) {
+ .calendar-day:not([disabled]):not(:active):hover {
+ background: globals.$ionic-color-primary-200;
+ }
+}
+
+// Pressed Day
+.calendar-day:active {
+ background: globals.$ionic-color-primary-300;
+}
diff --git a/core/src/components/datetime/datetime.ios.scss b/core/src/components/datetime/datetime.ios.scss
index b03e56cb5a..52dc10b5f6 100644
--- a/core/src/components/datetime/datetime.ios.scss
+++ b/core/src/components/datetime/datetime.ios.scss
@@ -1,7 +1,10 @@
-@import "./datetime.scss";
+@import "./datetime.native.scss";
@import "./datetime.ios.vars.scss";
@import "../../themes/native/native.globals.ios";
+// iOS Datetime
+// --------------------------------------------------
+
:host {
--background: #{ion-color(light, base)};
--background-rgb: #{ion-color(light, base, null, true)};
diff --git a/core/src/components/datetime/datetime.ios.vars.scss b/core/src/components/datetime/datetime.ios.vars.scss
index 74b711645f..c89e767482 100644
--- a/core/src/components/datetime/datetime.ios.vars.scss
+++ b/core/src/components/datetime/datetime.ios.vars.scss
@@ -1,8 +1,10 @@
+@use "../../themes/native/native.globals" as globals;
+
// iOS Datetime
// --------------------------------------------------
/// @prop - Border color for dividers between header and footer
-$datetime-ios-border-color: 0.55px solid $background-color-step-200;
+$datetime-ios-border-color: 0.55px solid globals.$background-color-step-200;
/// @prop - Padding for content
$datetime-ios-padding: 16px;
diff --git a/core/src/components/datetime/datetime.md.scss b/core/src/components/datetime/datetime.md.scss
index 3cd263f72e..04cc197e5f 100644
--- a/core/src/components/datetime/datetime.md.scss
+++ b/core/src/components/datetime/datetime.md.scss
@@ -1,7 +1,10 @@
-@import "./datetime.scss";
+@import "./datetime.native.scss";
@import "./datetime.md.vars.scss";
@import "../../themes/native/native.globals.md";
+// Material Design Datetime
+// --------------------------------------------------
+
:host {
--background: var(--ion-color-step-100, var(--ion-background-color-step-100, #ffffff));
--title-color: #{current-color(contrast)};
diff --git a/core/src/components/datetime/datetime.md.vars.scss b/core/src/components/datetime/datetime.md.vars.scss
index 3f6aeaa9f7..8b2fd6e564 100644
--- a/core/src/components/datetime/datetime.md.vars.scss
+++ b/core/src/components/datetime/datetime.md.vars.scss
@@ -1,14 +1,16 @@
+@use "../../themes/native/native.globals" as globals;
+
// MD Datetime
// --------------------------------------------------
/// @prop - Font size for title in header
-$datetime-md-title-font-size: dynamic-font(12px);
+$datetime-md-title-font-size: globals.dynamic-font(12px);
/// @prop - Font size for selected date in header
-$datetime-md-selected-date-font-size: dynamic-font(34px);
+$datetime-md-selected-date-font-size: globals.dynamic-font(34px);
/// @prop - Font size for calendar day button
-$datetime-md-calendar-item-font-size: dynamic-font(14px);
+$datetime-md-calendar-item-font-size: globals.dynamic-font(14px);
/// @prop - Padding for content in header
$datetime-md-header-padding: 20px;
diff --git a/core/src/components/datetime/datetime.native.scss b/core/src/components/datetime/datetime.native.scss
new file mode 100644
index 0000000000..a431feec1a
--- /dev/null
+++ b/core/src/components/datetime/datetime.native.scss
@@ -0,0 +1,120 @@
+@use "../../themes/native/native.globals" as globals;
+@use "./datetime.common";
+
+// Datetime: Native Styles
+// --------------------------------------------------
+
+:host {
+ /**
+ * @prop --background-rgb: The primary background of the datetime component in RGB format.
+ * @prop --title-color: The text color of the title.
+ *
+ * @prop --wheel-highlight-background: The background of the highlight under the selected
+ * item when using a wheel style layout, or in the month/year picker for grid style layouts.
+ * @prop --wheel-highlight-border-radius: The border radius of the highlight under the selected
+ * item when using a wheel style layout, or in the month/year picker for grid style layouts.
+ * @prop --wheel-fade-background-rgb: The color of the gradient covering non-selected items
+ * when using a wheel style layout, or in the month/year picker for grid style layouts. Must
+ * be in RGB format, e.g. `255, 255, 255`.
+ */
+}
+
+:host(.datetime-size-fixed:not(.datetime-prefer-wheel)) {
+ max-width: 350px;
+}
+
+/**
+ * This ensures that the picker is appropriately
+ * sized and never truncates the text.
+ */
+:host(.datetime-size-fixed.datetime-prefer-wheel) {
+ min-width: 350px;
+ max-width: max-content;
+}
+
+:host .calendar-action-buttons ion-button {
+ --background: transparent;
+}
+
+/**
+ * Center the day text vertically
+ * and horizontally within its grid cell.
+ */
+.calendar-day {
+ @include globals.border-radius(50%);
+
+ font-family: globals.$font-family-base;
+}
+
+:host .calendar-day[disabled] {
+ opacity: 0.4;
+}
+
+.calendar-day:focus {
+ background: globals.current-color(base, 0.2);
+
+ box-shadow: 0px 0px 0px 4px globals.current-color(base, 0.2);
+}
+
+// Time / Header
+// -----------------------------------
+
+:host(.datetime-presentation-time) .datetime-time {
+ @include globals.padding(0);
+}
+
+:host ion-popover {
+ --height: 200px;
+}
+
+:host .time-body {
+ @include globals.border-radius(8px);
+ @include globals.padding(6px, 12px, 6px, 12px);
+
+ background: var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));
+
+ color: globals.$text-color;
+}
+
+:host .time-body-active {
+ color: globals.current-color(base);
+}
+
+// Year Picker
+// -----------------------------------
+
+:host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle {
+ color: globals.current-color(base);
+}
+
+.calendar-month-year-toggle {
+ &::after {
+ @include globals.button-state();
+
+ transition: opacity 15ms linear, background-color 15ms linear;
+
+ z-index: -1;
+ }
+
+ &.ion-focused::after {
+ background: currentColor;
+ }
+
+ &:disabled {
+ opacity: 0.3;
+ pointer-events: none;
+ }
+}
+
+.calendar-month-year-toggle ion-icon {
+ @include globals.padding(0, 0, 0, 4px);
+}
+
+// Picker Custom Variables
+// -----------------------------------
+
+ion-picker {
+ --highlight-background: var(--wheel-highlight-background);
+ --highlight-border-radius: var(--wheel-highlight-border-radius);
+ --fade-background-rgb: var(--wheel-fade-background-rgb);
+}
diff --git a/core/src/components/datetime/datetime.tsx b/core/src/components/datetime/datetime.tsx
index 75b10e7118..d00eb711ff 100644
--- a/core/src/components/datetime/datetime.tsx
+++ b/core/src/components/datetime/datetime.tsx
@@ -1,7 +1,5 @@
-import caretDownRegular from '@phosphor-icons/core/assets/regular/caret-down.svg';
import caretLeftRegular from '@phosphor-icons/core/assets/regular/caret-left.svg';
import caretRightRegular from '@phosphor-icons/core/assets/regular/caret-right.svg';
-import caretUpRegular from '@phosphor-icons/core/assets/regular/caret-up.svg';
import type { ComponentInterface, EventEmitter } from '@stencil/core';
import { Component, Element, Event, Host, Method, Prop, State, Watch, h, writeTask } from '@stencil/core';
import { startFocusVisible } from '@utils/focus-visible';
@@ -106,7 +104,7 @@ import { checkForPresentationFormatMismatch, warnIfTimeZoneProvided } from './ut
styleUrls: {
ios: 'datetime.ios.scss',
md: 'datetime.md.scss',
- ionic: 'datetime.md.scss',
+ ionic: 'datetime.ionic.scss',
},
shadow: true,
})
@@ -2145,12 +2143,14 @@ export class Datetime implements ComponentInterface {
>
{getMonthAndYear(this.locale, this.workingParts)}
-
+ {theme !== 'ionic' && (
+
+ )}
{theme === 'md' && }
@@ -2643,12 +2643,13 @@ export class Datetime implements ComponentInterface {
* Otherwise, use the icon set in the config.
* If no icon is set in the config, use the default icon.
*/
- get datetimeCollapsedIcon(): string {
+ get datetimeCollapsedIcon(): string | undefined {
// Determine the theme and map to default icons
const theme = getIonTheme(this);
+
const defaultIcons = {
ios: chevronForward,
- ionic: caretDownRegular,
+ ionic: undefined,
md: caretDownSharp,
};
@@ -2664,12 +2665,13 @@ export class Datetime implements ComponentInterface {
* Otherwise, use the icon set in the config.
* If no icon is set in the config, use the default icon.
*/
- get datetimeExpandedIcon(): string {
+ get datetimeExpandedIcon(): string | undefined {
// Determine the theme and map to default icons
const theme = getIonTheme(this);
+
const defaultIcons = {
ios: chevronDown,
- ionic: caretUpRegular,
+ ionic: undefined,
md: caretUpSharp,
};
diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts b/core/src/components/datetime/test/basic/datetime.e2e.ts
index eb025b41bc..a7ff644f53 100644
--- a/core/src/components/datetime/test/basic/datetime.e2e.ts
+++ b/core/src/components/datetime/test/basic/datetime.e2e.ts
@@ -2,9 +2,38 @@ import { expect } from '@playwright/test';
import type { E2EPage } from '@utils/test/playwright';
import { configs, test } from '@utils/test/playwright';
+configs({ modes: ['ios', 'md', 'ionic-md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
+ test.describe(title('datetime: basic'), () => {
+ test('should render inline datetime', async ({ page }) => {
+ await page.setContent(
+ `
+
+
+
+ `,
+ config
+ );
+
+ const datetime = page.locator('ion-datetime');
+
+ await expect(datetime).toHaveScreenshot(screenshot(`datetime-basic`));
+ });
+ });
+});
+
/**
- * This behavior does not differ across
- * modes/directions.
+ * This behavior does not differ across modes/directions.
*/
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('datetime: closing time popover'), () => {
@@ -41,8 +70,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
});
/**
- * This behavior does not differ across
- * modes/directions.
+ * This behavior does not differ across modes/directions.
*/
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('datetime: selecting a day'), () => {
@@ -125,8 +153,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
});
/**
- * This behavior does not differ across
- * modes/directions.
+ * This behavior does not differ across modes/directions.
*/
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('datetime: confirm date'), () => {
@@ -242,8 +269,7 @@ configs().forEach(({ title, screenshot, config }) => {
});
/**
- * This behavior does not differ across
- * modes/directions.
+ * This behavior does not differ across modes/directions.
*/
configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('datetime: swiping'), () => {
@@ -318,8 +344,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
});
/**
- * This behavior does not differ across
- * modes/directions.
+ * This behavior does not differ across modes/directions.
*/
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('datetime: visibility'), () => {
@@ -363,10 +388,8 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
});
/**
- * We are setting RTL on the component
- * instead, so we don't need to test
- * both directions. Also, this behavior
- * does not vary across modes.
+ * We are setting RTL on the component instead, so we don't need to test
+ * both directions. Also, this behavior does not vary across modes.
*/
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('datetime: RTL set on component'), () => {
@@ -386,8 +409,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
});
/**
- * This behavior does not differ across
- * modes/directions.
+ * This behavior does not differ across modes/directions.
*/
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('datetime: clear button'), () => {
@@ -420,8 +442,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
});
/**
- * This behavior does not differ across
- * modes/directions.
+ * This behavior does not differ across modes/directions.
*/
configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('datetime: ionChange'), () => {
@@ -535,8 +556,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co
});
/**
- * This behavior does not differ across
- * directions.
+ * This behavior does not differ across directions.
*/
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
test.describe(title('datetime: focus'), () => {
@@ -588,8 +608,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
});
/**
- * This behavior does not differ across
- * directions.
+ * This behavior does not differ across directions.
*/
configs({ directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('datetime: formatOptions'), () => {
@@ -622,8 +641,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, config }) => {
});
/**
- * This behavior does not differ across
- * modes/directions.
+ * This behavior does not differ across modes/directions.
*/
configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
test.describe(title('datetime: formatOptions misconfiguration errors'), () => {
diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ionic-md-ltr-light-Mobile-Chrome-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ionic-md-ltr-light-Mobile-Chrome-linux.png
new file mode 100644
index 0000000000..37606b989e
Binary files /dev/null and b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ionic-md-ltr-light-Mobile-Chrome-linux.png differ
diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ionic-md-ltr-light-Mobile-Firefox-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ionic-md-ltr-light-Mobile-Firefox-linux.png
new file mode 100644
index 0000000000..75d40149c2
Binary files /dev/null and b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ionic-md-ltr-light-Mobile-Firefox-linux.png differ
diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ionic-md-ltr-light-Mobile-Safari-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ionic-md-ltr-light-Mobile-Safari-linux.png
new file mode 100644
index 0000000000..cfc666ef5d
Binary files /dev/null and b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ionic-md-ltr-light-Mobile-Safari-linux.png differ
diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ios-ltr-Mobile-Chrome-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ios-ltr-Mobile-Chrome-linux.png
new file mode 100644
index 0000000000..6716580a34
Binary files /dev/null and b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ios-ltr-Mobile-Chrome-linux.png differ
diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ios-ltr-Mobile-Firefox-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ios-ltr-Mobile-Firefox-linux.png
new file mode 100644
index 0000000000..0b48bf4af4
Binary files /dev/null and b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ios-ltr-Mobile-Firefox-linux.png differ
diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ios-ltr-Mobile-Safari-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ios-ltr-Mobile-Safari-linux.png
new file mode 100644
index 0000000000..9a7dec3c38
Binary files /dev/null and b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-ios-ltr-Mobile-Safari-linux.png differ
diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-md-ltr-Mobile-Chrome-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-md-ltr-Mobile-Chrome-linux.png
new file mode 100644
index 0000000000..7d59c60b96
Binary files /dev/null and b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-md-ltr-Mobile-Chrome-linux.png differ
diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-md-ltr-Mobile-Firefox-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-md-ltr-Mobile-Firefox-linux.png
new file mode 100644
index 0000000000..fddbe4ad93
Binary files /dev/null and b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-md-ltr-Mobile-Firefox-linux.png differ
diff --git a/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-md-ltr-Mobile-Safari-linux.png b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-md-ltr-Mobile-Safari-linux.png
new file mode 100644
index 0000000000..556b71a326
Binary files /dev/null and b/core/src/components/datetime/test/basic/datetime.e2e.ts-snapshots/datetime-basic-md-ltr-Mobile-Safari-linux.png differ