@datarobot/design-system 29.7.4 → 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.
- package/cjs/code-editor/code-editor.d.ts +0 -16
- package/cjs/code-editor/code-editor.js +1 -15
- package/cjs/datetime-range-picker/datetime-range-picker-panel.d.ts +5 -3
- package/cjs/datetime-range-picker/datetime-range-picker-panel.js +18 -8
- package/cjs/datetime-range-picker/datetime-range-picker.d.ts +3 -2
- package/cjs/datetime-range-picker/datetime-range-picker.js +2 -0
- package/cjs/datetime-range-picker/helpers.d.ts +21 -0
- package/cjs/datetime-range-picker/helpers.js +84 -0
- package/esm/code-editor/code-editor.d.ts +0 -16
- package/esm/code-editor/code-editor.js +0 -14
- package/esm/datetime-range-picker/datetime-range-picker-panel.d.ts +5 -3
- package/esm/datetime-range-picker/datetime-range-picker-panel.js +19 -9
- package/esm/datetime-range-picker/datetime-range-picker.d.ts +3 -2
- package/esm/datetime-range-picker/datetime-range-picker.js +2 -0
- package/esm/datetime-range-picker/helpers.d.ts +21 -0
- package/esm/datetime-range-picker/helpers.js +83 -0
- package/js/139/139.min.js +1 -1
- package/js/244/244.min.js +1 -1
- package/js/633/633.min.js +1 -1
- package/js/784/784.min.js +1 -1
- package/js/86/86.min.js +1 -1
- package/js/bundle/bundle.js +1802 -74
- package/js/bundle/bundle.min.js +1 -1
- package/js/bundle/index.d.ts +29 -22
- package/js/src_locales_es_419_translation_json/src_locales_es_419_translation_json.js +1 -1
- package/js/src_locales_fr_translation_json/src_locales_fr_translation_json.js +1 -1
- package/js/src_locales_ja_translation_json/src_locales_ja_translation_json.js +1 -1
- package/js/src_locales_ko_translation_json/src_locales_ko_translation_json.js +1 -1
- package/js/src_locales_pt_BR_translation_json/src_locales_pt_BR_translation_json.js +1 -1
- package/locales/es_419/translation.json +8 -4
- package/locales/fr/translation.json +8 -4
- package/locales/ja/translation.json +6 -4
- package/locales/ko/translation.json +8 -4
- package/locales/pt_BR/translation.json +8 -4
- 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.
|
|
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
|
|
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
|
|
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)) {
|
|
@@ -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
|
|
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
|
|
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;
|