From 56009fddde68d31c5efd2a65b3e21e0283b84ff7 Mon Sep 17 00:00:00 2001 From: djbuckley Date: Mon, 3 Jul 2017 09:32:32 +0100 Subject: [PATCH] DatePicker - surfaced the disable escape dismiss of dialogs (issue #48) added top level disableDismissWithEscapeOnDialog property to date picker which cascades through date picker dialog to dialog so that the escape key can be disabled for dismissing the popup --- src/DatePicker/DatePicker.js | 7 +++++++ src/DatePicker/DatePickerDialog.js | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/DatePicker/DatePicker.js b/src/DatePicker/DatePicker.js index 6b116a383441e0..a4b6557247f8fd 100644 --- a/src/DatePicker/DatePicker.js +++ b/src/DatePicker/DatePicker.js @@ -46,6 +46,10 @@ class DatePicker extends Component { * Override the inline-styles of DatePickerDialog's Container element. */ dialogContainerStyle: PropTypes.object, + /** + * Disable the ability to use the escape key to dismiss the date picker when opened in dialog mode. + */ + disableDismissWithEscapeOnDialog: PropTypes.bool, /** * Disables the year selection in the date picker. */ @@ -162,6 +166,7 @@ class DatePicker extends Component { autoOk: false, container: 'dialog', disabled: false, + disableDismissWithEscapeOnDialog: false, disableYearSelection: false, firstDayOfWeek: 1, hideCalendarDate: false, @@ -303,6 +308,7 @@ class DatePicker extends Component { container, defaultDate, // eslint-disable-line no-unused-vars dialogContainerStyle, + disableDismissWithEscapeOnDialog, disableYearSelection, firstDayOfWeek, formatDate: formatDateProp, @@ -340,6 +346,7 @@ class DatePicker extends Component { cancelLabel={cancelLabel} container={container} containerStyle={dialogContainerStyle} + disableEscapeKeyForDialogs={disableDismissWithEscapeOnDialog} disableYearSelection={disableYearSelection} firstDayOfWeek={firstDayOfWeek} initialDate={this.state.dialogDate} diff --git a/src/DatePicker/DatePickerDialog.js b/src/DatePicker/DatePickerDialog.js index 99c74cbaba4074..4d1b1c98f2ab3d 100644 --- a/src/DatePicker/DatePickerDialog.js +++ b/src/DatePicker/DatePickerDialog.js @@ -16,6 +16,7 @@ class DatePickerDialog extends Component { cancelLabel: PropTypes.node, container: PropTypes.oneOf(['dialog', 'inline']), containerStyle: PropTypes.object, + disableEscapeKeyForDialogs: PropTypes.bool, disableYearSelection: PropTypes.bool, firstDayOfWeek: PropTypes.number, hideCalendarDate: PropTypes.bool, @@ -37,6 +38,7 @@ class DatePickerDialog extends Component { static defaultProps = { DateTimeFormat: dateTimeFormat, + disableEscapeKeyForDialogs: false, cancelLabel: 'Cancel', container: 'dialog', locale: 'en-US', @@ -123,6 +125,7 @@ class DatePickerDialog extends Component { cancelLabel, container, containerStyle, + disableEscapeKeyForDialogs, disableYearSelection, initialDate, firstDayOfWeek, @@ -162,6 +165,7 @@ class DatePickerDialog extends Component { const containerId = `${componentId}-${container}Container`; const calendarId = `${componentId}-calendar`; const eventTarget = modal ? divId : 'window'; + const escOverride = modal ? disableEscapeKeyForDialogs : null return (
@@ -174,6 +178,7 @@ class DatePickerDialog extends Component { repositionOnUpdate={true} open={open} onRequestClose={this.handleRequestClose} + overrideModalEscKey={escOverride} style={Object.assign(styles.dialogBodyContent, containerStyle)} id={containerId} modal={modal}