@datarobot/design-system 29.7.3 → 29.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/cjs/code-editor/code-editor.d.ts +0 -16
  2. package/cjs/code-editor/code-editor.js +1 -15
  3. package/cjs/datetime-range-picker/datetime-range-picker-panel.d.ts +5 -3
  4. package/cjs/datetime-range-picker/datetime-range-picker-panel.js +18 -8
  5. package/cjs/datetime-range-picker/datetime-range-picker.d.ts +3 -2
  6. package/cjs/datetime-range-picker/datetime-range-picker.js +2 -0
  7. package/cjs/datetime-range-picker/helpers.d.ts +21 -0
  8. package/cjs/datetime-range-picker/helpers.js +84 -0
  9. package/cjs/full-screen-drawer/header/full-screen-drawer-header.d.ts +3 -3
  10. package/cjs/full-screen-drawer/header/full-screen-drawer-header.js +4 -3
  11. package/esm/code-editor/code-editor.d.ts +0 -16
  12. package/esm/code-editor/code-editor.js +0 -14
  13. package/esm/datetime-range-picker/datetime-range-picker-panel.d.ts +5 -3
  14. package/esm/datetime-range-picker/datetime-range-picker-panel.js +19 -9
  15. package/esm/datetime-range-picker/datetime-range-picker.d.ts +3 -2
  16. package/esm/datetime-range-picker/datetime-range-picker.js +2 -0
  17. package/esm/datetime-range-picker/helpers.d.ts +21 -0
  18. package/esm/datetime-range-picker/helpers.js +83 -0
  19. package/esm/full-screen-drawer/header/full-screen-drawer-header.d.ts +3 -3
  20. package/esm/full-screen-drawer/header/full-screen-drawer-header.js +4 -3
  21. package/js/139/139.min.js +1 -1
  22. package/js/244/244.min.js +1 -1
  23. package/js/633/633.min.js +1 -1
  24. package/js/784/784.min.js +1 -1
  25. package/js/86/86.min.js +1 -1
  26. package/js/bundle/bundle.js +1812 -77
  27. package/js/bundle/bundle.min.js +1 -1
  28. package/js/bundle/index.d.ts +32 -25
  29. package/js/src_locales_es_419_translation_json/src_locales_es_419_translation_json.js +1 -1
  30. package/js/src_locales_fr_translation_json/src_locales_fr_translation_json.js +1 -1
  31. package/js/src_locales_ja_translation_json/src_locales_ja_translation_json.js +1 -1
  32. package/js/src_locales_ko_translation_json/src_locales_ko_translation_json.js +1 -1
  33. package/js/src_locales_pt_BR_translation_json/src_locales_pt_BR_translation_json.js +1 -1
  34. package/locales/es_419/translation.json +8 -4
  35. package/locales/fr/translation.json +8 -4
  36. package/locales/ja/translation.json +6 -4
  37. package/locales/ko/translation.json +8 -4
  38. package/locales/pt_BR/translation.json +8 -4
  39. package/package.json +1 -1
@@ -1,5 +1,4 @@
1
1
  import { ReactElement } from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import { ValueOf } from '../types';
4
3
  import 'codemirror/mode/sql/sql';
5
4
  import 'codemirror/mode/javascript/javascript';
@@ -57,21 +56,6 @@ export type CodeEditorOptions = {
57
56
  readOnly?: string | boolean;
58
57
  theme?: CodeEditorTheme;
59
58
  };
60
- export declare const CodeEditorOptionsShape: PropTypes.Requireable<PropTypes.InferProps<{
61
- lineWrapping: PropTypes.Requireable<boolean>;
62
- tabSize: PropTypes.Requireable<number>;
63
- value: PropTypes.Requireable<string>;
64
- mode: PropTypes.Requireable<"r" | "python" | "text/plain" | "text/x-sparksql" | "javascript" | "shell" | "htmlmixed" | "clike" | "yaml" | "xml" | {
65
- name: "javascript";
66
- json: boolean;
67
- }>;
68
- lineNumbers: PropTypes.Requireable<boolean>;
69
- indentWithTabs: PropTypes.Requireable<boolean>;
70
- smartIndent: PropTypes.Requireable<boolean>;
71
- matchBrackets: PropTypes.Requireable<boolean>;
72
- readOnly: PropTypes.Requireable<NonNullable<string | boolean | null | undefined>>;
73
- theme: PropTypes.Requireable<"default" | "dracula">;
74
- }>>;
75
59
  export type CodeEditorControls = {
76
60
  placement?: CORNER_PLACEMENTS_TYPES;
77
61
  element?: ReactElement;
@@ -3,9 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.JSON_MODE = exports.CodeEditorOptionsShape = exports.CodeEditor = exports.CORNER_PLACEMENTS_TYPES = exports.CORNER_PLACEMENTS = exports.CODE_EDITOR_THEMES = exports.CODE_EDITOR_MODES = void 0;
6
+ exports.JSON_MODE = exports.CodeEditor = exports.CORNER_PLACEMENTS_TYPES = exports.CORNER_PLACEMENTS = exports.CODE_EDITOR_THEMES = exports.CODE_EDITOR_MODES = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
8
  var _classnames = _interopRequireDefault(require("classnames"));
10
9
  var _hintWrapper = _interopRequireDefault(require("./utils/hint-wrapper"));
11
10
  var _searchWrapper = require("./utils/search-wrapper");
@@ -65,19 +64,6 @@ const DefaultOptions = {
65
64
  matchBrackets: true,
66
65
  theme: CODE_EDITOR_THEMES.DARK
67
66
  };
68
- // Keeping this for backwards compatiblity
69
- const CodeEditorOptionsShape = exports.CodeEditorOptionsShape = _propTypes.default.shape({
70
- lineWrapping: _propTypes.default.bool,
71
- tabSize: _propTypes.default.number,
72
- value: _propTypes.default.string,
73
- mode: _propTypes.default.oneOf([...Object.values(CODE_EDITOR_MODES), JSON_MODE]),
74
- lineNumbers: _propTypes.default.bool,
75
- indentWithTabs: _propTypes.default.bool,
76
- smartIndent: _propTypes.default.bool,
77
- matchBrackets: _propTypes.default.bool,
78
- readOnly: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.string]),
79
- theme: _propTypes.default.oneOf(Object.values(CODE_EDITOR_THEMES))
80
- });
81
67
 
82
68
  // We need this to ignore an error when defaultProps are defined but the linters throws an error
83
69
 
@@ -36,8 +36,9 @@ type ValidateOnClickProps = {
36
36
  dateTimeFormat: string;
37
37
  minStart?: Moment;
38
38
  maxEnd?: Moment;
39
+ sameDateError?: boolean;
39
40
  };
40
- export type ValidateOnClick = ({ start, end, viewMode, dateTimeFormat, minStart, maxEnd, }: ValidateOnClickProps) => {
41
+ export type ValidateOnClick = ({ start, end, viewMode, dateTimeFormat, minStart, maxEnd, sameDateError, }: ValidateOnClickProps) => {
41
42
  startErrors: DateRangeErrors;
42
43
  endErrors: DateRangeErrors;
43
44
  };
@@ -53,16 +54,17 @@ export type DateRangePickerPanelProps = {
53
54
  initialTargetInput?: DateRangeInputType;
54
55
  maxEnd?: Moment;
55
56
  minStart?: Moment;
57
+ sameDateError?: boolean;
56
58
  onSubmit: (start: Moment, end: Moment) => void;
57
59
  onDismiss: () => void;
58
60
  resetText?: string;
59
61
  timeFormat: string | boolean;
60
62
  utcSuffix?: string;
61
- validateOnClick: ValidateOnClick;
63
+ validateOnClick?: ValidateOnClick;
62
64
  validateOnChange: ValidateOnChange;
63
65
  dateStartInputAriaLabel: string;
64
66
  dateEndInputAriaLabel: string;
65
67
  };
66
68
  /** Represents the panel used to select two datetimes that make up a range. */
67
- declare function DateRangePickerPanel({ buttonText, cancelButtonText, dateFormat, defaultEnd, defaultStart, initialDirection, initialViewMode, initialTargetInput, maxEnd, minStart, onSubmit, onDismiss, resetText, timeFormat, utcSuffix, validateOnClick, validateOnChange, dateStartInputAriaLabel, dateEndInputAriaLabel, }: DateRangePickerPanelProps): import("react/jsx-runtime").JSX.Element;
69
+ declare function DateRangePickerPanel({ buttonText, cancelButtonText, dateFormat, defaultEnd, defaultStart, initialDirection, initialViewMode, initialTargetInput, maxEnd, minStart, sameDateError, onSubmit, onDismiss, resetText, timeFormat, utcSuffix, validateOnClick: propValidateOnClick, validateOnChange, dateStartInputAriaLabel, dateEndInputAriaLabel, }: DateRangePickerPanelProps): import("react/jsx-runtime").JSX.Element;
68
70
  export default DateRangePickerPanel;
@@ -91,16 +91,19 @@ function DateRangePickerPanel({
91
91
  initialTargetInput,
92
92
  maxEnd,
93
93
  minStart,
94
+ sameDateError,
94
95
  onSubmit,
95
96
  onDismiss,
96
97
  resetText,
97
98
  timeFormat,
98
99
  utcSuffix,
99
- validateOnClick,
100
+ validateOnClick: propValidateOnClick,
100
101
  validateOnChange,
101
102
  dateStartInputAriaLabel,
102
103
  dateEndInputAriaLabel
103
104
  }) {
105
+ const defaultValidateOnClick = (0, _helpers.useValidateOnClick)();
106
+ const validateOnClick = propValidateOnClick || defaultValidateOnClick;
104
107
  const dateTimeFormat = (0, _helpers.getDateTimeFormat)(dateFormat, timeFormat);
105
108
 
106
109
  // Developer-provided datetimes might not always follow the exact date and time format they want to use.
@@ -164,7 +167,8 @@ function DateRangePickerPanel({
164
167
  viewMode: initialViewMode,
165
168
  dateTimeFormat,
166
169
  minStart,
167
- maxEnd
170
+ maxEnd,
171
+ sameDateError
168
172
  })
169
173
  });
170
174
  }
@@ -184,7 +188,8 @@ function DateRangePickerPanel({
184
188
  viewMode: initialViewMode,
185
189
  dateTimeFormat,
186
190
  minStart,
187
- maxEnd
191
+ maxEnd,
192
+ sameDateError
188
193
  })
189
194
  });
190
195
  }
@@ -206,7 +211,8 @@ function DateRangePickerPanel({
206
211
  viewMode: initialViewMode,
207
212
  dateTimeFormat,
208
213
  minStart,
209
- maxEnd
214
+ maxEnd,
215
+ sameDateError
210
216
  })
211
217
  });
212
218
  }
@@ -352,7 +358,8 @@ function DateRangePickerPanel({
352
358
  viewMode: initialViewMode,
353
359
  dateTimeFormat,
354
360
  minStart,
355
- maxEnd
361
+ maxEnd,
362
+ sameDateError
356
363
  })
357
364
  });
358
365
  }
@@ -365,7 +372,8 @@ function DateRangePickerPanel({
365
372
  viewMode: initialViewMode,
366
373
  dateTimeFormat,
367
374
  minStart,
368
- maxEnd
375
+ maxEnd,
376
+ sameDateError
369
377
  })
370
378
  });
371
379
  }
@@ -392,7 +400,8 @@ function DateRangePickerPanel({
392
400
  viewMode: initialViewMode,
393
401
  dateTimeFormat,
394
402
  minStart,
395
- maxEnd
403
+ maxEnd,
404
+ sameDateError
396
405
  })
397
406
  });
398
407
  }
@@ -405,7 +414,8 @@ function DateRangePickerPanel({
405
414
  viewMode: initialViewMode,
406
415
  dateTimeFormat,
407
416
  minStart,
408
- maxEnd
417
+ maxEnd,
418
+ sameDateError
409
419
  })
410
420
  });
411
421
  }
@@ -23,12 +23,13 @@ export declare const INITIAL_DIRECTION: {
23
23
  export type InitialDirection = ValueOf<typeof INITIAL_DIRECTION>;
24
24
  export type DateRangePickerProps = {
25
25
  onUpdate: (updatedStart: Moment, updatedEnd: Moment) => void;
26
- validateOnClick: ValidateOnClick;
26
+ validateOnClick?: ValidateOnClick;
27
27
  validateOnChange: ValidateOnChange;
28
28
  start: Moment;
29
29
  end: Moment;
30
30
  minStart?: Moment;
31
31
  maxEnd?: Moment;
32
+ sameDateError?: boolean;
32
33
  labelFormat?: string;
33
34
  anchorType?: AnchorType;
34
35
  isDisabled?: boolean;
@@ -50,5 +51,5 @@ export type DateRangePickerProps = {
50
51
  * @midnight-gray-supported
51
52
  * @alpine-light-supported
52
53
  * */
53
- declare function DateRangePicker({ onUpdate, validateOnChange, validateOnClick, start, end, minStart, maxEnd, labelFormat, anchorType, buttonText, cancelButtonText, resetText, dateFormat, timeFormat, initialDirection, initialViewMode, placement, showTimeZoneSuffix, isDisabled, utcSuffix, dateStartInputAriaLabel, dateEndInputAriaLabel, }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
54
+ declare function DateRangePicker({ onUpdate, validateOnChange, validateOnClick, start, end, minStart, maxEnd, sameDateError, labelFormat, anchorType, buttonText, cancelButtonText, resetText, dateFormat, timeFormat, initialDirection, initialViewMode, placement, showTimeZoneSuffix, isDisabled, utcSuffix, dateStartInputAriaLabel, dateEndInputAriaLabel, }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
54
55
  export default DateRangePicker;
@@ -41,6 +41,7 @@ function DateRangePicker({
41
41
  end,
42
42
  minStart,
43
43
  maxEnd,
44
+ sameDateError,
44
45
  labelFormat,
45
46
  anchorType = ANCHOR_TYPES.BUTTON,
46
47
  buttonText,
@@ -120,6 +121,7 @@ function DateRangePicker({
120
121
  defaultEnd: end,
121
122
  minStart: minStart,
122
123
  maxEnd: maxEnd,
124
+ sameDateError: sameDateError,
123
125
  dateFormat: dateFormat,
124
126
  timeFormat: timeFormat,
125
127
  initialViewMode: initialViewMode,
@@ -2,6 +2,27 @@ import React, { RefObject } from 'react';
2
2
  import moment, { MomentInput, Moment, unitOfTime } from 'moment';
3
3
  import Datetime from 'react-datetime';
4
4
  import { InitialDirection } from './datetime-range-picker';
5
+ export declare function useValidateOnClick(): ({ start, end, minStart, maxEnd, viewMode, dateTimeFormat, sameDateError, }: {
6
+ start?: moment.Moment | null | undefined;
7
+ end?: moment.Moment | null | undefined;
8
+ viewMode: string;
9
+ dateTimeFormat: string;
10
+ minStart?: moment.Moment | undefined;
11
+ maxEnd?: moment.Moment | undefined;
12
+ sameDateError?: boolean | undefined;
13
+ }) => {
14
+ startErrors: {
15
+ START_BEFORE_MIN?: string | undefined;
16
+ START_AFTER_MAX?: string | undefined;
17
+ INVALID_START_DATE?: string | undefined;
18
+ START_END_SAME?: string | undefined;
19
+ };
20
+ endErrors: {
21
+ INVALID_END_DATE?: string | undefined;
22
+ END_AFTER_MIN?: string | undefined;
23
+ END_AFTER_MAX?: string | undefined;
24
+ };
25
+ };
5
26
  export interface StringToMomentParams {
6
27
  dateTimeFormat?: string;
7
28
  strictParse?: boolean;
@@ -14,16 +14,100 @@ exports.isMonthRelatedToTimePicker = isMonthRelatedToTimePicker;
14
14
  exports.isNavigationAvailableForMonthsView = isNavigationAvailableForMonthsView;
15
15
  exports.isNavigationAvailableForYearsView = isNavigationAvailableForYearsView;
16
16
  exports.truncateDateTimeToFormat = truncateDateTimeToFormat;
17
+ exports.useValidateOnClick = useValidateOnClick;
17
18
  var _react = _interopRequireDefault(require("react"));
18
19
  var _moment = _interopRequireDefault(require("moment"));
19
20
  var _isEmpty = _interopRequireDefault(require("lodash-es/isEmpty"));
21
+ var _omit = _interopRequireDefault(require("lodash-es/omit"));
20
22
  var _formField = require("../form-field");
21
23
  var _message = require("../message");
22
24
  var _button = require("../button");
23
25
  var _datetimeRangePicker = require("./datetime-range-picker");
26
+ var _useTranslation = require("../hooks/use-translation");
27
+ var _datetimeRangePickerPanel = require("./datetime-range-picker-panel");
24
28
  var _jsxRuntime = require("react/jsx-runtime");
25
29
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
30
  const DEFAULT_DATETIME_FORMAT = 'YYYY-MM-DDTHH:mm:ss.SSSSSSZ';
31
+ const VALIDATION_ENTITY = {
32
+ days: {
33
+ start: 'Start Date',
34
+ end: 'End Date'
35
+ },
36
+ months: {
37
+ start: 'Start Month',
38
+ end: 'End Month'
39
+ }
40
+ };
41
+ function useValidateOnClick() {
42
+ const {
43
+ t
44
+ } = (0, _useTranslation.useTranslation)();
45
+ return function validateOnClick({
46
+ start,
47
+ end,
48
+ minStart,
49
+ maxEnd,
50
+ viewMode,
51
+ dateTimeFormat,
52
+ sameDateError
53
+ }) {
54
+ const [minStartTrimmed, maxEndTrimmed] = [minStart, maxEnd].map(datetime => datetime ? truncateDateTimeToFormat(datetime, dateTimeFormat) : null);
55
+ const startErrors = {};
56
+ let endErrors = {};
57
+ if (minStartTrimmed && start?.isBefore(minStartTrimmed)) {
58
+ startErrors[_datetimeRangePickerPanel.DATE_RANGE_ERROR_TYPES.START_BEFORE_MIN] = t('{{fieldName}} cannot be before {{date}}.', {
59
+ fieldName: VALIDATION_ENTITY[viewMode].start,
60
+ date: minStartTrimmed.format(dateTimeFormat)
61
+ });
62
+ }
63
+ if (maxEndTrimmed && start?.isAfter(maxEndTrimmed)) {
64
+ startErrors[_datetimeRangePickerPanel.DATE_RANGE_ERROR_TYPES.START_AFTER_MAX] = t('{{fieldName}} cannot be after {{date}}.', {
65
+ fieldName: VALIDATION_ENTITY[viewMode].start,
66
+ date: maxEndTrimmed.format(dateTimeFormat)
67
+ });
68
+ }
69
+ if (maxEndTrimmed && end?.isAfter(maxEndTrimmed)) {
70
+ endErrors[_datetimeRangePickerPanel.DATE_RANGE_ERROR_TYPES.END_AFTER_MAX] = t('{{fieldName}} cannot be after {{date}}.', {
71
+ fieldName: VALIDATION_ENTITY[viewMode].end,
72
+ date: maxEndTrimmed.format(dateTimeFormat)
73
+ });
74
+ }
75
+ if (minStartTrimmed && end?.isBefore(minStartTrimmed)) {
76
+ endErrors[_datetimeRangePickerPanel.DATE_RANGE_ERROR_TYPES.END_AFTER_MIN] = t('{{fieldName}} cannot be before {{date}}.', {
77
+ fieldName: VALIDATION_ENTITY[viewMode].end,
78
+ date: minStartTrimmed.format(dateTimeFormat)
79
+ });
80
+ }
81
+ if (!start?.isValid()) {
82
+ startErrors[_datetimeRangePickerPanel.DATE_RANGE_ERROR_TYPES.INVALID_START_DATE] = t('You need to set {{fieldName}}', {
83
+ fieldName: VALIDATION_ENTITY[viewMode].start
84
+ });
85
+ }
86
+ if (!end?.isValid()) {
87
+ endErrors[_datetimeRangePickerPanel.DATE_RANGE_ERROR_TYPES.INVALID_END_DATE] = t('You need to set {{fieldName}}', {
88
+ fieldName: VALIDATION_ENTITY[viewMode].end
89
+ });
90
+ }
91
+ if (start && !end?.isValid()) {
92
+ endErrors[_datetimeRangePickerPanel.DATE_RANGE_ERROR_TYPES.INVALID_END_DATE] = t('You need to set {{fieldName}}', {
93
+ fieldName: VALIDATION_ENTITY[viewMode].end
94
+ });
95
+ }
96
+ if (start && end) {
97
+ endErrors = (0, _omit.default)(endErrors, [_datetimeRangePickerPanel.DATE_RANGE_ERROR_TYPES.INVALID_END_DATE]);
98
+ }
99
+ if (sameDateError && start?.isSame(end)) {
100
+ startErrors[_datetimeRangePickerPanel.DATE_RANGE_ERROR_TYPES.START_END_SAME] = t('{{startField}} and {{endField}} cannot be the same', {
101
+ startField: VALIDATION_ENTITY[viewMode].start,
102
+ endField: VALIDATION_ENTITY[viewMode].end
103
+ });
104
+ }
105
+ return {
106
+ startErrors,
107
+ endErrors
108
+ };
109
+ };
110
+ }
27
111
  function getValidityFromErrors(errorMapping) {
28
112
  let validityValues;
29
113
  if ((0, _isEmpty.default)(errorMapping)) {
@@ -14,9 +14,9 @@ export type FullScreenDrawerHeaderProps = {
14
14
  showUnsavedDataDialog?: boolean;
15
15
  setShowUnsavedDataDialog?: (value: boolean) => void;
16
16
  localizationText?: {
17
- cancelButton: string;
18
- keepDrawer: string;
19
- closeWithoutSaving: string;
17
+ cancelButton?: string;
18
+ keepDrawer?: string;
19
+ closeWithoutSaving?: string;
20
20
  };
21
21
  dismissWarningText?: string;
22
22
  };
@@ -23,16 +23,17 @@ function FullScreenDrawerHeader({
23
23
  showUnsavedDataDialog = false,
24
24
  setShowUnsavedDataDialog,
25
25
  dismissWarningText,
26
- localizationText: localizationTextParams,
26
+ localizationText: localizationTextParams = {},
27
27
  unsavedDataDialogButtons
28
28
  }) {
29
29
  const {
30
30
  t
31
31
  } = (0, _useTranslation.useTranslation)();
32
- const localizationText = localizationTextParams ?? {
32
+ const localizationText = {
33
33
  cancelButton: t('Close'),
34
34
  keepDrawer: t('Continue setup'),
35
- closeWithoutSaving: t('Exit without saving')
35
+ closeWithoutSaving: t('Exit without saving'),
36
+ ...localizationTextParams
36
37
  };
37
38
  const onContinueSetup = () => {
38
39
  setShowUnsavedDataDialog?.(false);
@@ -1,5 +1,4 @@
1
1
  import { ReactElement } from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import { ValueOf } from '../types';
4
3
  import 'codemirror/mode/sql/sql';
5
4
  import 'codemirror/mode/javascript/javascript';
@@ -57,21 +56,6 @@ export type CodeEditorOptions = {
57
56
  readOnly?: string | boolean;
58
57
  theme?: CodeEditorTheme;
59
58
  };
60
- export declare const CodeEditorOptionsShape: PropTypes.Requireable<PropTypes.InferProps<{
61
- lineWrapping: PropTypes.Requireable<boolean>;
62
- tabSize: PropTypes.Requireable<number>;
63
- value: PropTypes.Requireable<string>;
64
- mode: PropTypes.Requireable<"r" | "python" | "text/plain" | "text/x-sparksql" | "javascript" | "shell" | "htmlmixed" | "clike" | "yaml" | "xml" | {
65
- name: "javascript";
66
- json: boolean;
67
- }>;
68
- lineNumbers: PropTypes.Requireable<boolean>;
69
- indentWithTabs: PropTypes.Requireable<boolean>;
70
- smartIndent: PropTypes.Requireable<boolean>;
71
- matchBrackets: PropTypes.Requireable<boolean>;
72
- readOnly: PropTypes.Requireable<NonNullable<string | boolean | null | undefined>>;
73
- theme: PropTypes.Requireable<"default" | "dracula">;
74
- }>>;
75
59
  export type CodeEditorControls = {
76
60
  placement?: CORNER_PLACEMENTS_TYPES;
77
61
  element?: ReactElement;
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import classnames from 'classnames';
4
3
  import InjectCombinedHint from './utils/hint-wrapper';
5
4
  import { InjectSearch } from './utils/search-wrapper';
@@ -57,19 +56,6 @@ const DefaultOptions = {
57
56
  matchBrackets: true,
58
57
  theme: CODE_EDITOR_THEMES.DARK
59
58
  };
60
- // Keeping this for backwards compatiblity
61
- export const CodeEditorOptionsShape = PropTypes.shape({
62
- lineWrapping: PropTypes.bool,
63
- tabSize: PropTypes.number,
64
- value: PropTypes.string,
65
- mode: PropTypes.oneOf([...Object.values(CODE_EDITOR_MODES), JSON_MODE]),
66
- lineNumbers: PropTypes.bool,
67
- indentWithTabs: PropTypes.bool,
68
- smartIndent: PropTypes.bool,
69
- matchBrackets: PropTypes.bool,
70
- readOnly: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),
71
- theme: PropTypes.oneOf(Object.values(CODE_EDITOR_THEMES))
72
- });
73
59
 
74
60
  // We need this to ignore an error when defaultProps are defined but the linters throws an error
75
61
 
@@ -36,8 +36,9 @@ type ValidateOnClickProps = {
36
36
  dateTimeFormat: string;
37
37
  minStart?: Moment;
38
38
  maxEnd?: Moment;
39
+ sameDateError?: boolean;
39
40
  };
40
- export type ValidateOnClick = ({ start, end, viewMode, dateTimeFormat, minStart, maxEnd, }: ValidateOnClickProps) => {
41
+ export type ValidateOnClick = ({ start, end, viewMode, dateTimeFormat, minStart, maxEnd, sameDateError, }: ValidateOnClickProps) => {
41
42
  startErrors: DateRangeErrors;
42
43
  endErrors: DateRangeErrors;
43
44
  };
@@ -53,16 +54,17 @@ export type DateRangePickerPanelProps = {
53
54
  initialTargetInput?: DateRangeInputType;
54
55
  maxEnd?: Moment;
55
56
  minStart?: Moment;
57
+ sameDateError?: boolean;
56
58
  onSubmit: (start: Moment, end: Moment) => void;
57
59
  onDismiss: () => void;
58
60
  resetText?: string;
59
61
  timeFormat: string | boolean;
60
62
  utcSuffix?: string;
61
- validateOnClick: ValidateOnClick;
63
+ validateOnClick?: ValidateOnClick;
62
64
  validateOnChange: ValidateOnChange;
63
65
  dateStartInputAriaLabel: string;
64
66
  dateEndInputAriaLabel: string;
65
67
  };
66
68
  /** Represents the panel used to select two datetimes that make up a range. */
67
- declare function DateRangePickerPanel({ buttonText, cancelButtonText, dateFormat, defaultEnd, defaultStart, initialDirection, initialViewMode, initialTargetInput, maxEnd, minStart, onSubmit, onDismiss, resetText, timeFormat, utcSuffix, validateOnClick, validateOnChange, dateStartInputAriaLabel, dateEndInputAriaLabel, }: DateRangePickerPanelProps): import("react/jsx-runtime").JSX.Element;
69
+ declare function DateRangePickerPanel({ buttonText, cancelButtonText, dateFormat, defaultEnd, defaultStart, initialDirection, initialViewMode, initialTargetInput, maxEnd, minStart, sameDateError, onSubmit, onDismiss, resetText, timeFormat, utcSuffix, validateOnClick: propValidateOnClick, validateOnChange, dateStartInputAriaLabel, dateEndInputAriaLabel, }: DateRangePickerPanelProps): import("react/jsx-runtime").JSX.Element;
68
70
  export default DateRangePickerPanel;
@@ -7,7 +7,7 @@ import { ValidityMessages } from '../form-field';
7
7
  import DateRangeSingleDatePicker from './date-range-single-date-picker';
8
8
  import { VIEW_MODE_TYPE } from './datetime-range-picker';
9
9
  import DateRangeSingleDatePickerInput from './date-range-single-date-picker-input';
10
- import { getValidityFromErrors, customizeCalendarView, customizeRenderCalendarView, isMonthRelatedToTimePicker, isNavigationAvailableForMonthsView, isNavigationAvailableForYearsView, getLeftCalendarInitialView, getRightCalendarInitialView, truncateDateTimeToFormat, convertStringToMoment, getDateTimeFormat } from './helpers';
10
+ import { getValidityFromErrors, customizeCalendarView, customizeRenderCalendarView, isMonthRelatedToTimePicker, isNavigationAvailableForMonthsView, isNavigationAvailableForYearsView, getLeftCalendarInitialView, getRightCalendarInitialView, truncateDateTimeToFormat, convertStringToMoment, getDateTimeFormat, useValidateOnClick } from './helpers';
11
11
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
12
12
  export let DATE_RANGE_ERROR_TYPES = /*#__PURE__*/function (DATE_RANGE_ERROR_TYPES) {
13
13
  DATE_RANGE_ERROR_TYPES["INVALID_DATETIME"] = "INVALID_DATETIME";
@@ -83,16 +83,19 @@ function DateRangePickerPanel({
83
83
  initialTargetInput,
84
84
  maxEnd,
85
85
  minStart,
86
+ sameDateError,
86
87
  onSubmit,
87
88
  onDismiss,
88
89
  resetText,
89
90
  timeFormat,
90
91
  utcSuffix,
91
- validateOnClick,
92
+ validateOnClick: propValidateOnClick,
92
93
  validateOnChange,
93
94
  dateStartInputAriaLabel,
94
95
  dateEndInputAriaLabel
95
96
  }) {
97
+ const defaultValidateOnClick = useValidateOnClick();
98
+ const validateOnClick = propValidateOnClick || defaultValidateOnClick;
96
99
  const dateTimeFormat = getDateTimeFormat(dateFormat, timeFormat);
97
100
 
98
101
  // Developer-provided datetimes might not always follow the exact date and time format they want to use.
@@ -156,7 +159,8 @@ function DateRangePickerPanel({
156
159
  viewMode: initialViewMode,
157
160
  dateTimeFormat,
158
161
  minStart,
159
- maxEnd
162
+ maxEnd,
163
+ sameDateError
160
164
  })
161
165
  });
162
166
  }
@@ -176,7 +180,8 @@ function DateRangePickerPanel({
176
180
  viewMode: initialViewMode,
177
181
  dateTimeFormat,
178
182
  minStart,
179
- maxEnd
183
+ maxEnd,
184
+ sameDateError
180
185
  })
181
186
  });
182
187
  }
@@ -198,7 +203,8 @@ function DateRangePickerPanel({
198
203
  viewMode: initialViewMode,
199
204
  dateTimeFormat,
200
205
  minStart,
201
- maxEnd
206
+ maxEnd,
207
+ sameDateError
202
208
  })
203
209
  });
204
210
  }
@@ -344,7 +350,8 @@ function DateRangePickerPanel({
344
350
  viewMode: initialViewMode,
345
351
  dateTimeFormat,
346
352
  minStart,
347
- maxEnd
353
+ maxEnd,
354
+ sameDateError
348
355
  })
349
356
  });
350
357
  }
@@ -357,7 +364,8 @@ function DateRangePickerPanel({
357
364
  viewMode: initialViewMode,
358
365
  dateTimeFormat,
359
366
  minStart,
360
- maxEnd
367
+ maxEnd,
368
+ sameDateError
361
369
  })
362
370
  });
363
371
  }
@@ -384,7 +392,8 @@ function DateRangePickerPanel({
384
392
  viewMode: initialViewMode,
385
393
  dateTimeFormat,
386
394
  minStart,
387
- maxEnd
395
+ maxEnd,
396
+ sameDateError
388
397
  })
389
398
  });
390
399
  }
@@ -397,7 +406,8 @@ function DateRangePickerPanel({
397
406
  viewMode: initialViewMode,
398
407
  dateTimeFormat,
399
408
  minStart,
400
- maxEnd
409
+ maxEnd,
410
+ sameDateError
401
411
  })
402
412
  });
403
413
  }
@@ -23,12 +23,13 @@ export declare const INITIAL_DIRECTION: {
23
23
  export type InitialDirection = ValueOf<typeof INITIAL_DIRECTION>;
24
24
  export type DateRangePickerProps = {
25
25
  onUpdate: (updatedStart: Moment, updatedEnd: Moment) => void;
26
- validateOnClick: ValidateOnClick;
26
+ validateOnClick?: ValidateOnClick;
27
27
  validateOnChange: ValidateOnChange;
28
28
  start: Moment;
29
29
  end: Moment;
30
30
  minStart?: Moment;
31
31
  maxEnd?: Moment;
32
+ sameDateError?: boolean;
32
33
  labelFormat?: string;
33
34
  anchorType?: AnchorType;
34
35
  isDisabled?: boolean;
@@ -50,5 +51,5 @@ export type DateRangePickerProps = {
50
51
  * @midnight-gray-supported
51
52
  * @alpine-light-supported
52
53
  * */
53
- declare function DateRangePicker({ onUpdate, validateOnChange, validateOnClick, start, end, minStart, maxEnd, labelFormat, anchorType, buttonText, cancelButtonText, resetText, dateFormat, timeFormat, initialDirection, initialViewMode, placement, showTimeZoneSuffix, isDisabled, utcSuffix, dateStartInputAriaLabel, dateEndInputAriaLabel, }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
54
+ declare function DateRangePicker({ onUpdate, validateOnChange, validateOnClick, start, end, minStart, maxEnd, sameDateError, labelFormat, anchorType, buttonText, cancelButtonText, resetText, dateFormat, timeFormat, initialDirection, initialViewMode, placement, showTimeZoneSuffix, isDisabled, utcSuffix, dateStartInputAriaLabel, dateEndInputAriaLabel, }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
54
55
  export default DateRangePicker;
@@ -33,6 +33,7 @@ function DateRangePicker({
33
33
  end,
34
34
  minStart,
35
35
  maxEnd,
36
+ sameDateError,
36
37
  labelFormat,
37
38
  anchorType = ANCHOR_TYPES.BUTTON,
38
39
  buttonText,
@@ -112,6 +113,7 @@ function DateRangePicker({
112
113
  defaultEnd: end,
113
114
  minStart: minStart,
114
115
  maxEnd: maxEnd,
116
+ sameDateError: sameDateError,
115
117
  dateFormat: dateFormat,
116
118
  timeFormat: timeFormat,
117
119
  initialViewMode: initialViewMode,
@@ -2,6 +2,27 @@ import React, { RefObject } from 'react';
2
2
  import moment, { MomentInput, Moment, unitOfTime } from 'moment';
3
3
  import Datetime from 'react-datetime';
4
4
  import { InitialDirection } from './datetime-range-picker';
5
+ export declare function useValidateOnClick(): ({ start, end, minStart, maxEnd, viewMode, dateTimeFormat, sameDateError, }: {
6
+ start?: moment.Moment | null | undefined;
7
+ end?: moment.Moment | null | undefined;
8
+ viewMode: string;
9
+ dateTimeFormat: string;
10
+ minStart?: moment.Moment | undefined;
11
+ maxEnd?: moment.Moment | undefined;
12
+ sameDateError?: boolean | undefined;
13
+ }) => {
14
+ startErrors: {
15
+ START_BEFORE_MIN?: string | undefined;
16
+ START_AFTER_MAX?: string | undefined;
17
+ INVALID_START_DATE?: string | undefined;
18
+ START_END_SAME?: string | undefined;
19
+ };
20
+ endErrors: {
21
+ INVALID_END_DATE?: string | undefined;
22
+ END_AFTER_MIN?: string | undefined;
23
+ END_AFTER_MAX?: string | undefined;
24
+ };
25
+ };
5
26
  export interface StringToMomentParams {
6
27
  dateTimeFormat?: string;
7
28
  strictParse?: boolean;