diff --git a/CHANGELOG.md b/CHANGELOG.md index 50aa6b9407c..304cdc6da8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ - Widened `EuiComboBox`'s `options[].value` / `EuiComboBoxOptionProps.value` TypeScript definition ([#2080](https://github.com/elastic/eui/pull/2080)) - Added TS defs for `EuiComboBox`'s props spreading onto a `div` ([#2080](https://github.com/elastic/eui/pull/2080)) +- Fixed responsive display of inline `EuiDatePicker` ([#1820](https://github.com/elastic/eui/pull/1820)) +- Removed time from default `dateFormat` of `EuiDatePicker` ([#1820](https://github.com/elastic/eui/pull/1820)) ## [`12.2.0`](https://github.com/elastic/eui/tree/v12.2.0) diff --git a/src-docs/src/views/date_picker/time_select.js b/src-docs/src/views/date_picker/time_select.js index 0f2968857c8..1a15a9ded77 100644 --- a/src-docs/src/views/date_picker/time_select.js +++ b/src-docs/src/views/date_picker/time_select.js @@ -33,17 +33,6 @@ export default class extends Component { showTimeSelect selected={this.state.startDate} onChange={this.handleChange} - dateFormat="MM/DD/YYYY HH:mm.ss.SSS" - /> - - - - - - @@ -69,6 +58,7 @@ export default class extends Component { selected={this.state.startDate} onChange={this.handleChange} dateFormat="hh:mm a" + timeFormat="hh:mm a" injectTimes={[ moment() .hours(0) diff --git a/src/components/date_picker/__snapshots__/date_picker.test.js.snap b/src/components/date_picker/__snapshots__/date_picker.test.js.snap index cdef94b8f47..3f66bdb6f4c 100644 --- a/src/components/date_picker/__snapshots__/date_picker.test.js.snap +++ b/src/components/date_picker/__snapshots__/date_picker.test.js.snap @@ -19,7 +19,7 @@ exports[`EuiDatePicker is rendered 1`] = ` aria-label="aria-label" className="euiDatePicker euiFieldText euiFieldText--withIcon testClass1 testClass2" data-test-subj="test subject string" - dateFormat="MM/DD/YYYY hh:mm A" + dateFormat="MM/DD/YYYY" dateFormatCalendar="MMMM YYYY" disabled={false} disabledKeyboardNavigation={false} diff --git a/src/components/date_picker/_date_picker.scss b/src/components/date_picker/_date_picker.scss index 814c7c1c975..e5e693ff171 100644 --- a/src/components/date_picker/_date_picker.scss +++ b/src/components/date_picker/_date_picker.scss @@ -217,7 +217,7 @@ &--next { @include datePicker__arrow; // Pixel value because of some padding on the icon - right: 10px; + right: 20px; height: $euiSize; width: $euiSize; transform: rotate(-90deg); @@ -635,7 +635,7 @@ .react-datepicker__month--accessible:focus { background: $euiFocusBackgroundColor; - .react-datepicker__day--in-range { + .react-datepicker__day--in-range:not(.react-datepicker__day--selected) { border-top-color: $euiFocusBackgroundColor; border-bottom-color: $euiFocusBackgroundColor; } @@ -661,6 +661,14 @@ // We drop the time picker on mobile. They can still type in the time directly. @include euiBreakpoint('xs','s') { + + // This resizes EUI's normal form control to be the width of the calendar + .euiDatePicker--inline { + max-width: $euiDatePickerCalendarWidth; + display: block; + } + + // This hides the time entirely .react-datepicker__time-container { display: none; } diff --git a/src/components/date_picker/_index.scss b/src/components/date_picker/_index.scss index 6ae886348b2..36875c07a21 100644 --- a/src/components/date_picker/_index.scss +++ b/src/components/date_picker/_index.scss @@ -1,4 +1,5 @@ // Uses some form mixins +@import 'variables'; @import 'date_picker'; @import 'date_picker_range'; @import 'super_date_picker/index'; diff --git a/src/components/date_picker/_variables.scss b/src/components/date_picker/_variables.scss new file mode 100644 index 00000000000..6a5abd4e528 --- /dev/null +++ b/src/components/date_picker/_variables.scss @@ -0,0 +1 @@ +$euiDatePickerCalendarWidth: 284px; \ No newline at end of file diff --git a/src/components/date_picker/date_picker.js b/src/components/date_picker/date_picker.js index 29ee78aaefb..cf53cbf7150 100644 --- a/src/components/date_picker/date_picker.js +++ b/src/components/date_picker/date_picker.js @@ -11,6 +11,9 @@ import { EuiValidatableControl } from '../form/validatable_control'; import { EuiErrorBoundary } from '../error_boundary'; +export const euiDatePickerDefaultDateFormat = 'MM/DD/YYYY'; +export const euiDatePickerDefaultTimeFormat = 'hh:mm A'; + export class EuiDatePicker extends Component { render() { const { @@ -75,6 +78,13 @@ export class EuiDatePicker extends Component { optionalIcon = 'calendar'; } + // In case the consumer did not alter the default date format but wants + // to add the time select, we append the default time format + let fullDateFormat = dateFormat; + if (showTimeSelect && dateFormat === euiDatePickerDefaultDateFormat) { + fullDateFormat = `${dateFormat} ${timeFormat}`; + } + // EuiDatePicker only supports a subset of props from react-datepicker. Using any of // the unsupported props below will spit out an error. const PropNotSupported = () => { @@ -124,7 +134,7 @@ export class EuiDatePicker extends Component { calendarClassName={calendarClassName} className={datePickerClasses} customInput={customInput} - dateFormat={dateFormat} + dateFormat={fullDateFormat} dayClassName={dayClassName} disabled={disabled} excludeDates={excludeDates} @@ -280,11 +290,12 @@ EuiDatePicker.propTypes = { EuiDatePicker.defaultProps = { adjustDateOnChange: true, - dateFormat: 'MM/DD/YYYY hh:mm A', + dateFormat: euiDatePickerDefaultDateFormat, fullWidth: false, isLoading: false, shadow: true, shouldCloseOnSelect: true, showIcon: true, - timeFormat: 'hh:mm A', + showTimeSelect: false, + timeFormat: euiDatePickerDefaultTimeFormat, }; diff --git a/src/components/date_picker/super_date_picker/date_popover/_date_popover_content.scss b/src/components/date_picker/super_date_picker/date_popover/_date_popover_content.scss index 3bc5a8dc391..a8079b3f859 100644 --- a/src/components/date_picker/super_date_picker/date_popover/_date_popover_content.scss +++ b/src/components/date_picker/super_date_picker/date_popover/_date_popover_content.scss @@ -10,3 +10,10 @@ .euiDatePopoverContent__padded--large { padding: $euiSize; } + +@include euiBreakpoint('xs', 's') { + .euiDatePopoverContent { + // Small screens drop the time selector + width: $euiDatePickerCalendarWidth; + } +}