@datarobot/design-system 29.7.5 → 29.7.6
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/datetime-range-picker/datetime-range-picker-panel.d.ts +2 -2
- package/cjs/datetime-range-picker/datetime-range-picker-panel.js +3 -1
- package/cjs/datetime-range-picker/datetime-range-picker.d.ts +1 -1
- package/cjs/datetime-range-picker/helpers.d.ts +8 -0
- package/cjs/datetime-range-picker/helpers.js +40 -1
- package/esm/datetime-range-picker/datetime-range-picker-panel.d.ts +2 -2
- package/esm/datetime-range-picker/datetime-range-picker-panel.js +4 -2
- package/esm/datetime-range-picker/datetime-range-picker.d.ts +1 -1
- package/esm/datetime-range-picker/helpers.d.ts +8 -0
- package/esm/datetime-range-picker/helpers.js +38 -1
- package/js/bundle/bundle.js +43 -2
- package/js/bundle/bundle.min.js +1 -1
- package/js/bundle/index.d.ts +11 -3
- package/package.json +1 -1
|
@@ -61,10 +61,10 @@ export type DateRangePickerPanelProps = {
|
|
|
61
61
|
timeFormat: string | boolean;
|
|
62
62
|
utcSuffix?: string;
|
|
63
63
|
validateOnClick?: ValidateOnClick;
|
|
64
|
-
validateOnChange
|
|
64
|
+
validateOnChange?: ValidateOnChange;
|
|
65
65
|
dateStartInputAriaLabel: string;
|
|
66
66
|
dateEndInputAriaLabel: string;
|
|
67
67
|
};
|
|
68
68
|
/** Represents the panel used to select two datetimes that make up a range. */
|
|
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;
|
|
69
|
+
declare function DateRangePickerPanel({ buttonText, cancelButtonText, dateFormat, defaultEnd, defaultStart, initialDirection, initialViewMode, initialTargetInput, maxEnd, minStart, sameDateError, onSubmit, onDismiss, resetText, timeFormat, utcSuffix, validateOnClick: propValidateOnClick, validateOnChange: propValidateOnChange, dateStartInputAriaLabel, dateEndInputAriaLabel, }: DateRangePickerPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
70
70
|
export default DateRangePickerPanel;
|
|
@@ -98,12 +98,14 @@ function DateRangePickerPanel({
|
|
|
98
98
|
timeFormat,
|
|
99
99
|
utcSuffix,
|
|
100
100
|
validateOnClick: propValidateOnClick,
|
|
101
|
-
validateOnChange,
|
|
101
|
+
validateOnChange: propValidateOnChange,
|
|
102
102
|
dateStartInputAriaLabel,
|
|
103
103
|
dateEndInputAriaLabel
|
|
104
104
|
}) {
|
|
105
105
|
const defaultValidateOnClick = (0, _helpers.useValidateOnClick)();
|
|
106
|
+
const defaultValidateOnChange = (0, _helpers.useGetDateTimeValidityError)();
|
|
106
107
|
const validateOnClick = propValidateOnClick || defaultValidateOnClick;
|
|
108
|
+
const validateOnChange = propValidateOnChange || defaultValidateOnChange;
|
|
107
109
|
const dateTimeFormat = (0, _helpers.getDateTimeFormat)(dateFormat, timeFormat);
|
|
108
110
|
|
|
109
111
|
// Developer-provided datetimes might not always follow the exact date and time format they want to use.
|
|
@@ -24,7 +24,7 @@ export type InitialDirection = ValueOf<typeof INITIAL_DIRECTION>;
|
|
|
24
24
|
export type DateRangePickerProps = {
|
|
25
25
|
onUpdate: (updatedStart: Moment, updatedEnd: Moment) => void;
|
|
26
26
|
validateOnClick?: ValidateOnClick;
|
|
27
|
-
validateOnChange
|
|
27
|
+
validateOnChange?: ValidateOnChange;
|
|
28
28
|
start: Moment;
|
|
29
29
|
end: Moment;
|
|
30
30
|
minStart?: Moment;
|
|
@@ -23,6 +23,14 @@ export declare function useValidateOnClick(): ({ start, end, minStart, maxEnd, v
|
|
|
23
23
|
END_AFTER_MAX?: string | undefined;
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
+
/** Checks whether a string can be strictly parsed as a moment object following a provided datetime format
|
|
27
|
+
*
|
|
28
|
+
* @param {string} proposedDateTime
|
|
29
|
+
* @param {string} dateTimeFormat
|
|
30
|
+
* @returns {boolean}
|
|
31
|
+
*/
|
|
32
|
+
export declare function isValidDateTime(proposedDateTime: string, dateTimeFormat: string): boolean;
|
|
33
|
+
export declare function useGetDateTimeValidityError(): (dateTime: string, dateTimeFormat: string) => string | undefined;
|
|
26
34
|
export interface StringToMomentParams {
|
|
27
35
|
dateTimeFormat?: string;
|
|
28
36
|
strictParse?: boolean;
|
|
@@ -13,7 +13,9 @@ exports.getValidityFromErrors = getValidityFromErrors;
|
|
|
13
13
|
exports.isMonthRelatedToTimePicker = isMonthRelatedToTimePicker;
|
|
14
14
|
exports.isNavigationAvailableForMonthsView = isNavigationAvailableForMonthsView;
|
|
15
15
|
exports.isNavigationAvailableForYearsView = isNavigationAvailableForYearsView;
|
|
16
|
+
exports.isValidDateTime = isValidDateTime;
|
|
16
17
|
exports.truncateDateTimeToFormat = truncateDateTimeToFormat;
|
|
18
|
+
exports.useGetDateTimeValidityError = useGetDateTimeValidityError;
|
|
17
19
|
exports.useValidateOnClick = useValidateOnClick;
|
|
18
20
|
var _react = _interopRequireDefault(require("react"));
|
|
19
21
|
var _moment = _interopRequireDefault(require("moment"));
|
|
@@ -93,7 +95,7 @@ function useValidateOnClick() {
|
|
|
93
95
|
fieldName: VALIDATION_ENTITY[viewMode].end
|
|
94
96
|
});
|
|
95
97
|
}
|
|
96
|
-
if (start && end) {
|
|
98
|
+
if (start && end && end.isValid()) {
|
|
97
99
|
endErrors = (0, _omit.default)(endErrors, [_datetimeRangePickerPanel.DATE_RANGE_ERROR_TYPES.INVALID_END_DATE]);
|
|
98
100
|
}
|
|
99
101
|
if (sameDateError && start?.isSame(end)) {
|
|
@@ -108,6 +110,43 @@ function useValidateOnClick() {
|
|
|
108
110
|
};
|
|
109
111
|
};
|
|
110
112
|
}
|
|
113
|
+
|
|
114
|
+
/** Checks whether a string can be strictly parsed as a moment object following a provided datetime format
|
|
115
|
+
*
|
|
116
|
+
* @param {string} proposedDateTime
|
|
117
|
+
* @param {string} dateTimeFormat
|
|
118
|
+
* @returns {boolean}
|
|
119
|
+
*/
|
|
120
|
+
function isValidDateTime(proposedDateTime, dateTimeFormat) {
|
|
121
|
+
try {
|
|
122
|
+
convertStringToMoment(proposedDateTime, {
|
|
123
|
+
dateTimeFormat
|
|
124
|
+
})?.isValid();
|
|
125
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
126
|
+
} catch (err) {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
function useGetDateTimeValidityError() {
|
|
132
|
+
const {
|
|
133
|
+
t
|
|
134
|
+
} = (0, _useTranslation.useTranslation)();
|
|
135
|
+
return function getDateTimeValidityError(dateTime, dateTimeFormat) {
|
|
136
|
+
if (_moment.default.isMoment(dateTime)) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (typeof dateTime === 'string') {
|
|
140
|
+
if (isValidDateTime(dateTime, dateTimeFormat)) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
return t('Must follow {{dateTimeFormat}} format', {
|
|
144
|
+
dateTimeFormat
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
return t('Expected a datetime');
|
|
148
|
+
};
|
|
149
|
+
}
|
|
111
150
|
function getValidityFromErrors(errorMapping) {
|
|
112
151
|
let validityValues;
|
|
113
152
|
if ((0, _isEmpty.default)(errorMapping)) {
|
|
@@ -61,10 +61,10 @@ export type DateRangePickerPanelProps = {
|
|
|
61
61
|
timeFormat: string | boolean;
|
|
62
62
|
utcSuffix?: string;
|
|
63
63
|
validateOnClick?: ValidateOnClick;
|
|
64
|
-
validateOnChange
|
|
64
|
+
validateOnChange?: ValidateOnChange;
|
|
65
65
|
dateStartInputAriaLabel: string;
|
|
66
66
|
dateEndInputAriaLabel: string;
|
|
67
67
|
};
|
|
68
68
|
/** Represents the panel used to select two datetimes that make up a range. */
|
|
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;
|
|
69
|
+
declare function DateRangePickerPanel({ buttonText, cancelButtonText, dateFormat, defaultEnd, defaultStart, initialDirection, initialViewMode, initialTargetInput, maxEnd, minStart, sameDateError, onSubmit, onDismiss, resetText, timeFormat, utcSuffix, validateOnClick: propValidateOnClick, validateOnChange: propValidateOnChange, dateStartInputAriaLabel, dateEndInputAriaLabel, }: DateRangePickerPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
70
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, useValidateOnClick } from './helpers';
|
|
10
|
+
import { getValidityFromErrors, customizeCalendarView, customizeRenderCalendarView, isMonthRelatedToTimePicker, isNavigationAvailableForMonthsView, isNavigationAvailableForYearsView, getLeftCalendarInitialView, getRightCalendarInitialView, truncateDateTimeToFormat, convertStringToMoment, getDateTimeFormat, useValidateOnClick, useGetDateTimeValidityError } 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";
|
|
@@ -90,12 +90,14 @@ function DateRangePickerPanel({
|
|
|
90
90
|
timeFormat,
|
|
91
91
|
utcSuffix,
|
|
92
92
|
validateOnClick: propValidateOnClick,
|
|
93
|
-
validateOnChange,
|
|
93
|
+
validateOnChange: propValidateOnChange,
|
|
94
94
|
dateStartInputAriaLabel,
|
|
95
95
|
dateEndInputAriaLabel
|
|
96
96
|
}) {
|
|
97
97
|
const defaultValidateOnClick = useValidateOnClick();
|
|
98
|
+
const defaultValidateOnChange = useGetDateTimeValidityError();
|
|
98
99
|
const validateOnClick = propValidateOnClick || defaultValidateOnClick;
|
|
100
|
+
const validateOnChange = propValidateOnChange || defaultValidateOnChange;
|
|
99
101
|
const dateTimeFormat = getDateTimeFormat(dateFormat, timeFormat);
|
|
100
102
|
|
|
101
103
|
// Developer-provided datetimes might not always follow the exact date and time format they want to use.
|
|
@@ -24,7 +24,7 @@ export type InitialDirection = ValueOf<typeof INITIAL_DIRECTION>;
|
|
|
24
24
|
export type DateRangePickerProps = {
|
|
25
25
|
onUpdate: (updatedStart: Moment, updatedEnd: Moment) => void;
|
|
26
26
|
validateOnClick?: ValidateOnClick;
|
|
27
|
-
validateOnChange
|
|
27
|
+
validateOnChange?: ValidateOnChange;
|
|
28
28
|
start: Moment;
|
|
29
29
|
end: Moment;
|
|
30
30
|
minStart?: Moment;
|
|
@@ -23,6 +23,14 @@ export declare function useValidateOnClick(): ({ start, end, minStart, maxEnd, v
|
|
|
23
23
|
END_AFTER_MAX?: string | undefined;
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
+
/** Checks whether a string can be strictly parsed as a moment object following a provided datetime format
|
|
27
|
+
*
|
|
28
|
+
* @param {string} proposedDateTime
|
|
29
|
+
* @param {string} dateTimeFormat
|
|
30
|
+
* @returns {boolean}
|
|
31
|
+
*/
|
|
32
|
+
export declare function isValidDateTime(proposedDateTime: string, dateTimeFormat: string): boolean;
|
|
33
|
+
export declare function useGetDateTimeValidityError(): (dateTime: string, dateTimeFormat: string) => string | undefined;
|
|
26
34
|
export interface StringToMomentParams {
|
|
27
35
|
dateTimeFormat?: string;
|
|
28
36
|
strictParse?: boolean;
|
|
@@ -75,7 +75,7 @@ export function useValidateOnClick() {
|
|
|
75
75
|
fieldName: VALIDATION_ENTITY[viewMode].end
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
|
-
if (start && end) {
|
|
78
|
+
if (start && end && end.isValid()) {
|
|
79
79
|
endErrors = omit(endErrors, [DATE_RANGE_ERROR_TYPES.INVALID_END_DATE]);
|
|
80
80
|
}
|
|
81
81
|
if (sameDateError && start?.isSame(end)) {
|
|
@@ -90,6 +90,43 @@ export function useValidateOnClick() {
|
|
|
90
90
|
};
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
|
+
|
|
94
|
+
/** Checks whether a string can be strictly parsed as a moment object following a provided datetime format
|
|
95
|
+
*
|
|
96
|
+
* @param {string} proposedDateTime
|
|
97
|
+
* @param {string} dateTimeFormat
|
|
98
|
+
* @returns {boolean}
|
|
99
|
+
*/
|
|
100
|
+
export function isValidDateTime(proposedDateTime, dateTimeFormat) {
|
|
101
|
+
try {
|
|
102
|
+
convertStringToMoment(proposedDateTime, {
|
|
103
|
+
dateTimeFormat
|
|
104
|
+
})?.isValid();
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
106
|
+
} catch (err) {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
export function useGetDateTimeValidityError() {
|
|
112
|
+
const {
|
|
113
|
+
t
|
|
114
|
+
} = useTranslation();
|
|
115
|
+
return function getDateTimeValidityError(dateTime, dateTimeFormat) {
|
|
116
|
+
if (moment.isMoment(dateTime)) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (typeof dateTime === 'string') {
|
|
120
|
+
if (isValidDateTime(dateTime, dateTimeFormat)) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
return t('Must follow {{dateTimeFormat}} format', {
|
|
124
|
+
dateTimeFormat
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return t('Expected a datetime');
|
|
128
|
+
};
|
|
129
|
+
}
|
|
93
130
|
export function getValidityFromErrors(errorMapping) {
|
|
94
131
|
let validityValues;
|
|
95
132
|
if (isEmpty(errorMapping)) {
|
package/js/bundle/bundle.js
CHANGED
|
@@ -49883,11 +49883,13 @@ function DateRangePickerPanel(_ref2) {
|
|
|
49883
49883
|
timeFormat = _ref2.timeFormat,
|
|
49884
49884
|
utcSuffix = _ref2.utcSuffix,
|
|
49885
49885
|
propValidateOnClick = _ref2.validateOnClick,
|
|
49886
|
-
|
|
49886
|
+
propValidateOnChange = _ref2.validateOnChange,
|
|
49887
49887
|
dateStartInputAriaLabel = _ref2.dateStartInputAriaLabel,
|
|
49888
49888
|
dateEndInputAriaLabel = _ref2.dateEndInputAriaLabel;
|
|
49889
49889
|
var defaultValidateOnClick = (0,_helpers__WEBPACK_IMPORTED_MODULE_8__.useValidateOnClick)();
|
|
49890
|
+
var defaultValidateOnChange = (0,_helpers__WEBPACK_IMPORTED_MODULE_8__.useGetDateTimeValidityError)();
|
|
49890
49891
|
var validateOnClick = propValidateOnClick || defaultValidateOnClick;
|
|
49892
|
+
var validateOnChange = propValidateOnChange || defaultValidateOnChange;
|
|
49891
49893
|
var dateTimeFormat = (0,_helpers__WEBPACK_IMPORTED_MODULE_8__.getDateTimeFormat)(dateFormat, timeFormat);
|
|
49892
49894
|
|
|
49893
49895
|
// Developer-provided datetimes might not always follow the exact date and time format they want to use.
|
|
@@ -50499,8 +50501,10 @@ function DateRangePicker(_ref) {
|
|
|
50499
50501
|
/* harmony export */ isNavigationAvailableForMonthsView: () => (/* binding */ isNavigationAvailableForMonthsView),
|
|
50500
50502
|
/* harmony export */ isNavigationAvailableForYearsView: () => (/* binding */ isNavigationAvailableForYearsView),
|
|
50501
50503
|
/* harmony export */ truncateDateTimeToFormat: () => (/* binding */ truncateDateTimeToFormat),
|
|
50504
|
+
/* harmony export */ useGetDateTimeValidityError: () => (/* binding */ useGetDateTimeValidityError),
|
|
50502
50505
|
/* harmony export */ useValidateOnClick: () => (/* binding */ useValidateOnClick)
|
|
50503
50506
|
/* harmony export */ });
|
|
50507
|
+
/* unused harmony export isValidDateTime */
|
|
50504
50508
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
50505
50509
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
50506
50510
|
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "moment");
|
|
@@ -50598,7 +50602,7 @@ function useValidateOnClick() {
|
|
|
50598
50602
|
fieldName: VALIDATION_ENTITY[viewMode].end
|
|
50599
50603
|
});
|
|
50600
50604
|
}
|
|
50601
|
-
if (start && end) {
|
|
50605
|
+
if (start && end && end.isValid()) {
|
|
50602
50606
|
endErrors = (0,lodash_es_omit__WEBPACK_IMPORTED_MODULE_8__["default"])(endErrors, [_datetime_range_picker_panel__WEBPACK_IMPORTED_MODULE_7__.DATE_RANGE_ERROR_TYPES.INVALID_END_DATE]);
|
|
50603
50607
|
}
|
|
50604
50608
|
if (sameDateError && start !== null && start !== void 0 && start.isSame(end)) {
|
|
@@ -50613,6 +50617,43 @@ function useValidateOnClick() {
|
|
|
50613
50617
|
};
|
|
50614
50618
|
};
|
|
50615
50619
|
}
|
|
50620
|
+
|
|
50621
|
+
/** Checks whether a string can be strictly parsed as a moment object following a provided datetime format
|
|
50622
|
+
*
|
|
50623
|
+
* @param {string} proposedDateTime
|
|
50624
|
+
* @param {string} dateTimeFormat
|
|
50625
|
+
* @returns {boolean}
|
|
50626
|
+
*/
|
|
50627
|
+
function isValidDateTime(proposedDateTime, dateTimeFormat) {
|
|
50628
|
+
try {
|
|
50629
|
+
var _convertStringToMomen;
|
|
50630
|
+
(_convertStringToMomen = convertStringToMoment(proposedDateTime, {
|
|
50631
|
+
dateTimeFormat: dateTimeFormat
|
|
50632
|
+
})) === null || _convertStringToMomen === void 0 || _convertStringToMomen.isValid();
|
|
50633
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
50634
|
+
} catch (err) {
|
|
50635
|
+
return false;
|
|
50636
|
+
}
|
|
50637
|
+
return true;
|
|
50638
|
+
}
|
|
50639
|
+
function useGetDateTimeValidityError() {
|
|
50640
|
+
var _useTranslation2 = (0,_hooks_use_translation__WEBPACK_IMPORTED_MODULE_6__.useTranslation)(),
|
|
50641
|
+
t = _useTranslation2.t;
|
|
50642
|
+
return function getDateTimeValidityError(dateTime, dateTimeFormat) {
|
|
50643
|
+
if (moment__WEBPACK_IMPORTED_MODULE_1___default().isMoment(dateTime)) {
|
|
50644
|
+
return;
|
|
50645
|
+
}
|
|
50646
|
+
if (typeof dateTime === 'string') {
|
|
50647
|
+
if (isValidDateTime(dateTime, dateTimeFormat)) {
|
|
50648
|
+
return;
|
|
50649
|
+
}
|
|
50650
|
+
return t('Must follow {{dateTimeFormat}} format', {
|
|
50651
|
+
dateTimeFormat: dateTimeFormat
|
|
50652
|
+
});
|
|
50653
|
+
}
|
|
50654
|
+
return t('Expected a datetime');
|
|
50655
|
+
};
|
|
50656
|
+
}
|
|
50616
50657
|
function getValidityFromErrors(errorMapping) {
|
|
50617
50658
|
var validityValues;
|
|
50618
50659
|
if ((0,lodash_es_isEmpty__WEBPACK_IMPORTED_MODULE_9__["default"])(errorMapping)) {
|