@comet/admin 9.0.0-beta.0 → 9.0.0-beta.2
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/lib/common/toolbar/DataGridToolbar.d.ts +3 -3
- package/lib/common/toolbar/DataGridToolbar.d.ts.map +1 -1
- package/lib/common/toolbar/DataGridToolbar.js +10 -18
- package/lib/dataGrid/DataGridPanel.d.ts.map +1 -1
- package/lib/dataGrid/DataGridPanel.js +31 -23
- package/lib/dataGrid/GridColDef.d.ts +2 -3
- package/lib/dataGrid/GridColDef.d.ts.map +1 -1
- package/lib/dataGrid/GridFilterButton.d.ts.map +1 -1
- package/lib/dataGrid/GridFilterButton.js +13 -2
- package/lib/dataGrid/GridToolbarQuickFilter.d.ts +10 -0
- package/lib/dataGrid/GridToolbarQuickFilter.d.ts.map +1 -0
- package/lib/dataGrid/GridToolbarQuickFilter.js +97 -0
- package/lib/dataGrid/columnsManagement/DataGridColumnsManagement.d.ts.map +1 -1
- package/lib/dataGrid/columnsManagement/DataGridColumnsManagement.js +1 -1
- package/lib/dataGrid/columnsManagement/DataGridColumnsManagementListItem.d.ts +2 -2
- package/lib/dataGrid/columnsManagement/DataGridColumnsManagementListItem.d.ts.map +1 -1
- package/lib/dataGrid/columnsManagement/DataGridColumnsManagementListItem.js +1 -1
- package/lib/dataGrid/excelExport/useDataGridExcelExport.js +2 -2
- package/lib/dataGrid/gridColumnTypes.d.ts.map +1 -1
- package/lib/dataGrid/gridColumnTypes.js +14 -11
- package/lib/dataGrid/muiGridFilterToGql.d.ts +4 -1
- package/lib/dataGrid/muiGridFilterToGql.d.ts.map +1 -1
- package/lib/dataGrid/pagination/DataGridPagination.js +1 -1
- package/lib/dataGrid/pagination/paginationActions/DataGridPaginationActions.js +1 -1
- package/lib/dataGrid/useDataGridUrlState.d.ts.map +1 -1
- package/lib/dataGrid/useDataGridUrlState.js +11 -3
- package/lib/dataGrid/usePersistentColumnState.d.ts.map +1 -1
- package/lib/dateTime/datePicker/DatePicker.d.ts +4 -2
- package/lib/dateTime/datePicker/DatePicker.d.ts.map +1 -1
- package/lib/dateTime/datePicker/DatePicker.js +29 -19
- package/lib/dateTime/datePickerField/__stories__/DatePickerField.stories.js +60 -0
- package/lib/dateTime/dateRangePicker/DateRangePicker.d.ts +4 -2
- package/lib/dateTime/dateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/lib/dateTime/dateRangePicker/DateRangePicker.js +30 -24
- package/lib/dateTime/dateRangePickerField/__stories__/DateRangePickerField.stories.js +61 -0
- package/lib/dateTime/dateTimePicker/DateTimePicker.d.ts +4 -2
- package/lib/dateTime/dateTimePicker/DateTimePicker.d.ts.map +1 -1
- package/lib/dateTime/dateTimePicker/DateTimePicker.js +29 -19
- package/lib/dateTime/dateTimePickerField/__stories__/DateTimePickerField.stories.js +60 -0
- package/lib/dateTime/dateTimeRangePicker/DateTimeRangePicker.d.ts +4 -2
- package/lib/dateTime/dateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
- package/lib/dateTime/dateTimeRangePicker/DateTimeRangePicker.js +34 -20
- package/lib/dateTime/dateTimeRangePickerField/__stories__/DateTimeRangePickerField.stories.js +60 -0
- package/lib/dateTime/timePicker/TimePicker.d.ts +4 -2
- package/lib/dateTime/timePicker/TimePicker.d.ts.map +1 -1
- package/lib/dateTime/timePicker/TimePicker.js +29 -19
- package/lib/dateTime/timePickerField/__stories__/TimePickerField.stories.js +69 -0
- package/lib/form/FieldContainer.d.ts.map +1 -1
- package/lib/form/FieldContainer.js +1 -1
- package/lib/helpers/downloadFile.d.ts +7 -0
- package/lib/helpers/downloadFile.d.ts.map +1 -0
- package/lib/helpers/downloadFile.js +22 -0
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/messages.d.ts +4 -0
- package/lib/messages.d.ts.map +1 -1
- package/lib/messages.js +4 -0
- package/lib/table/excelexport/createExcelExportDownload.js +2 -2
- package/lib/theme/componentsTheme/MuiDataGrid.d.ts.map +1 -1
- package/lib/theme/componentsTheme/MuiDataGrid.js +122 -94
- package/lib/theme/componentsTheme/MuiPickerPopper.d.ts +3 -0
- package/lib/theme/componentsTheme/MuiPickerPopper.d.ts.map +1 -0
- package/lib/theme/componentsTheme/{MuiPickersPopper.js → MuiPickerPopper.js} +1 -1
- package/lib/theme/componentsTheme/MuiPickersInputBase.d.ts.map +1 -1
- package/lib/theme/componentsTheme/MuiPickersInputBase.js +5 -1
- package/lib/theme/componentsTheme/getComponentsTheme.js +2 -2
- package/lib/theme/createCometTheme.d.ts.map +1 -1
- package/lib/theme/createCometTheme.js +5 -6
- package/lib/utils/test-utils.d.ts.map +1 -1
- package/lib/utils/test-utils.js +11 -4
- package/package.json +31 -29
- package/lib/theme/componentsTheme/MuiPickersPopper.d.ts +0 -3
- package/lib/theme/componentsTheme/MuiPickersPopper.d.ts.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
2
|
var _templateObject;
|
|
3
|
-
var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "readOnly"];
|
|
3
|
+
var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "onBlur", "onFocus", "readOnly"];
|
|
4
4
|
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
|
|
5
5
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
6
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -19,6 +19,7 @@ import { Calendar } from "@comet/admin-icons";
|
|
|
19
19
|
import { css, inputLabelClasses, useThemeProps } from "@mui/material";
|
|
20
20
|
import { DateTimePicker as MuiDateTimePicker, pickersInputBaseClasses } from "@mui/x-date-pickers";
|
|
21
21
|
import { useState } from "react";
|
|
22
|
+
import { useIntl } from "react-intl";
|
|
22
23
|
import { ClearInputAdornment as CometClearInputAdornment } from "../../common/ClearInputAdornment";
|
|
23
24
|
import { OpenPickerAdornment } from "../../common/OpenPickerAdornment";
|
|
24
25
|
import { ReadOnlyAdornment } from "../../common/ReadOnlyAdornment";
|
|
@@ -48,18 +49,20 @@ export var DateTimePicker = function DateTimePicker(inProps) {
|
|
|
48
49
|
_useThemeProps$value = _useThemeProps.value,
|
|
49
50
|
value = _useThemeProps$value === void 0 ? null : _useThemeProps$value,
|
|
50
51
|
_onChange = _useThemeProps.onChange,
|
|
52
|
+
onBlur = _useThemeProps.onBlur,
|
|
53
|
+
onFocus = _useThemeProps.onFocus,
|
|
51
54
|
readOnly = _useThemeProps.readOnly,
|
|
52
55
|
restProps = _objectWithoutProperties(_useThemeProps, _excluded);
|
|
53
56
|
var _useState = useState(false),
|
|
54
57
|
_useState2 = _slicedToArray(_useState, 2),
|
|
55
58
|
open = _useState2[0],
|
|
56
59
|
setOpen = _useState2[1];
|
|
60
|
+
var intl = useIntl();
|
|
57
61
|
var _iconMapping$openPick = iconMapping.openPicker,
|
|
58
62
|
openPickerIcon = _iconMapping$openPick === void 0 ? /*#__PURE__*/_jsx(Calendar, {
|
|
59
63
|
color: "inherit"
|
|
60
64
|
}) : _iconMapping$openPick;
|
|
61
65
|
return /*#__PURE__*/_jsx(Root, _objectSpread(_objectSpread(_objectSpread({
|
|
62
|
-
enableAccessibleFieldDOMStructure: true,
|
|
63
66
|
disabled: disabled,
|
|
64
67
|
readOnly: readOnly,
|
|
65
68
|
open: open,
|
|
@@ -69,7 +72,6 @@ export var DateTimePicker = function DateTimePicker(inProps) {
|
|
|
69
72
|
onClose: function onClose() {
|
|
70
73
|
return setOpen(false);
|
|
71
74
|
},
|
|
72
|
-
disableOpenPicker: true,
|
|
73
75
|
value: value,
|
|
74
76
|
onChange: function onChange(date) {
|
|
75
77
|
var dateIsInvalid = date !== null && !isValidDate(date);
|
|
@@ -81,28 +83,36 @@ export var DateTimePicker = function DateTimePicker(inProps) {
|
|
|
81
83
|
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), restProps), {}, {
|
|
82
84
|
slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root = slotProps.root) === null || _slotProps$root === void 0 ? void 0 : _slotProps$root.slotProps), {}, {
|
|
83
85
|
textField: function textField(ownerState) {
|
|
84
|
-
var _slotProps$root2,
|
|
86
|
+
var _slotProps$root2, _slotProps$openPicker, _slotProps$openPicker2;
|
|
85
87
|
var textFieldProps = _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root2 = slotProps.root) === null || _slotProps$root2 === void 0 || (_slotProps$root2 = _slotProps$root2.slotProps) === null || _slotProps$root2 === void 0 ? void 0 : _slotProps$root2.textField), {}, {
|
|
86
88
|
ownerState: ownerState
|
|
87
89
|
});
|
|
88
90
|
return _objectSpread(_objectSpread({
|
|
89
91
|
fullWidth: fullWidth,
|
|
90
|
-
required: required
|
|
92
|
+
required: required,
|
|
93
|
+
onBlur: onBlur,
|
|
94
|
+
onFocus: onFocus
|
|
91
95
|
}, textFieldProps), {}, {
|
|
92
|
-
InputProps:
|
|
93
|
-
startAdornment: /*#__PURE__*/
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
96
|
+
InputProps: {
|
|
97
|
+
startAdornment: /*#__PURE__*/_jsx(OpenPickerAdornment, _objectSpread(_objectSpread({
|
|
98
|
+
inputIsDisabled: disabled,
|
|
99
|
+
inputIsReadOnly: readOnly,
|
|
100
|
+
onClick: function onClick() {
|
|
101
|
+
return setOpen(true);
|
|
102
|
+
}
|
|
103
|
+
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.openPickerAdornment), {}, {
|
|
104
|
+
slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker = slotProps.openPickerAdornment) === null || _slotProps$openPicker === void 0 ? void 0 : _slotProps$openPicker.slotProps), {}, {
|
|
105
|
+
openPickerButton: _objectSpread({
|
|
106
|
+
"aria-label": intl.formatMessage({
|
|
107
|
+
id: "comet.dateTimePicker.openPicker",
|
|
108
|
+
defaultMessage: "Open date time picker"
|
|
109
|
+
})
|
|
110
|
+
}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker2 = slotProps.openPickerAdornment) === null || _slotProps$openPicker2 === void 0 || (_slotProps$openPicker2 = _slotProps$openPicker2.slotProps) === null || _slotProps$openPicker2 === void 0 ? void 0 : _slotProps$openPicker2.openPickerButton)
|
|
111
|
+
}),
|
|
112
|
+
children: openPickerIcon
|
|
113
|
+
})),
|
|
104
114
|
endAdornment: /*#__PURE__*/_jsxs(_Fragment, {
|
|
105
|
-
children: [
|
|
115
|
+
children: [/*#__PURE__*/_jsx(ReadOnlyAdornment, _objectSpread({
|
|
106
116
|
inputIsReadOnly: Boolean(readOnly)
|
|
107
117
|
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.readOnlyAdornment)), /*#__PURE__*/_jsx(ClearInputAdornment, _objectSpread({
|
|
108
118
|
position: "end",
|
|
@@ -112,7 +122,7 @@ export var DateTimePicker = function DateTimePicker(inProps) {
|
|
|
112
122
|
}
|
|
113
123
|
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.clearInputAdornment))]
|
|
114
124
|
})
|
|
115
|
-
}
|
|
125
|
+
}
|
|
116
126
|
});
|
|
117
127
|
}
|
|
118
128
|
})
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
2
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
3
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
4
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
1
5
|
import { FinalForm } from "../../../FinalForm";
|
|
2
6
|
import { FinalFormDebug } from "../../../form/FinalFormDebug";
|
|
3
7
|
import { DateTimePickerField } from "../DateTimePickerField";
|
|
@@ -157,4 +161,60 @@ export var Disabled = {
|
|
|
157
161
|
}
|
|
158
162
|
});
|
|
159
163
|
}
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Before implementing custom validation, try to disable certain values using the props provided by MUI's DateTimePicker, such as `shouldDisableDate`, `shouldDisableTime`, `disableFuture`, `disablePast`.
|
|
168
|
+
*
|
|
169
|
+
* Use this when:
|
|
170
|
+
* - You need to validate the date against a custom rule, which cannot be achieved using the props provided by MUI's DateTimePicker
|
|
171
|
+
* - You want to provide a custom error message
|
|
172
|
+
* - You want to validate the date asynchronously
|
|
173
|
+
*/
|
|
174
|
+
export var CustomValidation = {
|
|
175
|
+
render: function render() {
|
|
176
|
+
var validateIsWeekday = /*#__PURE__*/function () {
|
|
177
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(value) {
|
|
178
|
+
var day, isWeekday;
|
|
179
|
+
return _regenerator().w(function (_context) {
|
|
180
|
+
while (1) switch (_context.n) {
|
|
181
|
+
case 0:
|
|
182
|
+
if (value) {
|
|
183
|
+
_context.n = 1;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
return _context.a(2, undefined);
|
|
187
|
+
case 1:
|
|
188
|
+
day = value.getDay();
|
|
189
|
+
isWeekday = day !== 0 && day !== 6;
|
|
190
|
+
return _context.a(2, isWeekday ? undefined : "Please select a weekday");
|
|
191
|
+
}
|
|
192
|
+
}, _callee);
|
|
193
|
+
}));
|
|
194
|
+
return function validateIsWeekday(_x) {
|
|
195
|
+
return _ref5.apply(this, arguments);
|
|
196
|
+
};
|
|
197
|
+
}();
|
|
198
|
+
return /*#__PURE__*/_jsx(FinalForm, {
|
|
199
|
+
mode: "edit",
|
|
200
|
+
onSubmit: function onSubmit() {
|
|
201
|
+
// not handled
|
|
202
|
+
},
|
|
203
|
+
subscription: {
|
|
204
|
+
values: true
|
|
205
|
+
},
|
|
206
|
+
children: function children() {
|
|
207
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
208
|
+
children: [/*#__PURE__*/_jsx(DateTimePickerField, {
|
|
209
|
+
name: "value",
|
|
210
|
+
label: "Date Time Picker",
|
|
211
|
+
helperText: "Only weekdays are valid",
|
|
212
|
+
fullWidth: true,
|
|
213
|
+
variant: "horizontal",
|
|
214
|
+
validate: validateIsWeekday
|
|
215
|
+
}), /*#__PURE__*/_jsx(FinalFormDebug, {})]
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
160
220
|
};
|
|
@@ -14,7 +14,7 @@ export type DateTimeRange = {
|
|
|
14
14
|
};
|
|
15
15
|
export type DateTimeRangePickerClassKey = "root" | "clearInputAdornment" | "readOnlyAdornment" | "openPickerAdornment";
|
|
16
16
|
export type DateTimeRangePickerProps = ThemedComponentBaseProps<{
|
|
17
|
-
root: ComponentType<MuiDateTimeRangePickerProps
|
|
17
|
+
root: ComponentType<MuiDateTimeRangePickerProps>;
|
|
18
18
|
clearInputAdornment: typeof CometClearInputAdornment;
|
|
19
19
|
readOnlyAdornment: typeof ReadOnlyAdornment;
|
|
20
20
|
openPickerAdornment: typeof OpenPickerAdornment;
|
|
@@ -34,6 +34,8 @@ export type DateTimeRangePickerProps = ThemedComponentBaseProps<{
|
|
|
34
34
|
* @param date - The new date-time range value, or `undefined` if cleared.
|
|
35
35
|
*/
|
|
36
36
|
onChange?: (date: DateTimeRange | undefined) => void;
|
|
37
|
+
onBlur?: () => void;
|
|
38
|
+
onFocus?: () => void;
|
|
37
39
|
/**
|
|
38
40
|
* Custom icons for the picker.
|
|
39
41
|
*
|
|
@@ -42,7 +44,7 @@ export type DateTimeRangePickerProps = ThemedComponentBaseProps<{
|
|
|
42
44
|
iconMapping?: {
|
|
43
45
|
openPicker?: ReactNode;
|
|
44
46
|
};
|
|
45
|
-
} & Omit<MuiDateTimeRangePickerProps
|
|
47
|
+
} & Omit<MuiDateTimeRangePickerProps, "value" | "onChange">;
|
|
46
48
|
/**
|
|
47
49
|
* The DateTimeRangePicker component allows users to select a date-time range from a combined picker interface.
|
|
48
50
|
* It provides two text fields with a calendar icon that opens a date-time range picker dialog. The component handles
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeRangePicker.d.ts","sourceRoot":"","sources":["../../../src/dateTime/dateTimeRangePicker/DateTimeRangePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,KAAK,KAAK,EAAiB,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,KAAK,wBAAwB,IAAI,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAE,KAAK,aAAa,EAAQ,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DateTimeRangePicker.d.ts","sourceRoot":"","sources":["../../../src/dateTime/dateTimeRangePicker/DateTimeRangePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,KAAK,KAAK,EAAiB,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,KAAK,wBAAwB,IAAI,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAE,KAAK,aAAa,EAAQ,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAC;AAGrF,OAAO,EAAE,mBAAmB,IAAI,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAGvF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAEvH,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,CAAC;IAC5D,IAAI,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;IACjD,mBAAmB,EAAE,OAAO,wBAAwB,CAAC;IACrD,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;CACnD,CAAC,GAAG;IACD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,KAAK,IAAI,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,SAAS,CAAC;KAC1B,CAAC;CACL,GAAG,IAAI,CAAC,2BAA2B,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAE5D;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,wBAAwB,4CA0GpE,CAAC;AA4BF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,mBAAmB;QACzB,6BAA6B,EAAE,wBAAwB,CAAC;KAC3D;IAED,UAAU,uBAAuB;QAC7B,6BAA6B,EAAE,2BAA2B,CAAC;KAC9D;IAED,UAAU,UAAU;QAChB,6BAA6B,CAAC,EAAE;YAC5B,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,+BAA+B,CAAC,CAAC,CAAC;YAC7E,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,+BAA+B,CAAC,CAAC;SAChF,CAAC;KACL;CACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
2
|
var _templateObject;
|
|
3
|
-
var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "readOnly"];
|
|
3
|
+
var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "onBlur", "onFocus", "readOnly"];
|
|
4
4
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
5
5
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
6
6
|
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
|
|
@@ -22,6 +22,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
|
|
|
22
22
|
import { Calendar } from "@comet/admin-icons";
|
|
23
23
|
import { css, inputLabelClasses, useThemeProps } from "@mui/material";
|
|
24
24
|
import { lazy, Suspense, useState } from "react";
|
|
25
|
+
import { useIntl } from "react-intl";
|
|
25
26
|
import { ClearInputAdornment as CometClearInputAdornment } from "../../common/ClearInputAdornment";
|
|
26
27
|
import { OpenPickerAdornment } from "../../common/OpenPickerAdornment";
|
|
27
28
|
import { ReadOnlyAdornment } from "../../common/ReadOnlyAdornment";
|
|
@@ -54,8 +55,11 @@ export var DateTimeRangePicker = function DateTimeRangePicker(inProps) {
|
|
|
54
55
|
disabled = _useThemeProps.disabled,
|
|
55
56
|
valueObject = _useThemeProps.value,
|
|
56
57
|
_onChange = _useThemeProps.onChange,
|
|
58
|
+
onBlur = _useThemeProps.onBlur,
|
|
59
|
+
onFocus = _useThemeProps.onFocus,
|
|
57
60
|
readOnly = _useThemeProps.readOnly,
|
|
58
61
|
restProps = _objectWithoutProperties(_useThemeProps, _excluded);
|
|
62
|
+
var intl = useIntl();
|
|
59
63
|
var _useState = useState(false),
|
|
60
64
|
_useState2 = _slicedToArray(_useState, 2),
|
|
61
65
|
open = _useState2[0],
|
|
@@ -67,7 +71,6 @@ export var DateTimeRangePicker = function DateTimeRangePicker(inProps) {
|
|
|
67
71
|
}) : _iconMapping$openPick;
|
|
68
72
|
return /*#__PURE__*/_jsx(Suspense, {
|
|
69
73
|
children: /*#__PURE__*/_jsx(LazyRoot, _objectSpread(_objectSpread(_objectSpread({
|
|
70
|
-
enableAccessibleFieldDOMStructure: true,
|
|
71
74
|
disabled: disabled,
|
|
72
75
|
readOnly: readOnly,
|
|
73
76
|
open: open,
|
|
@@ -77,7 +80,6 @@ export var DateTimeRangePicker = function DateTimeRangePicker(inProps) {
|
|
|
77
80
|
onClose: function onClose() {
|
|
78
81
|
return setOpen(false);
|
|
79
82
|
},
|
|
80
|
-
disableOpenPicker: true,
|
|
81
83
|
value: arrayValue,
|
|
82
84
|
onChange: function onChange(_ref) {
|
|
83
85
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
@@ -100,28 +102,36 @@ export var DateTimeRangePicker = function DateTimeRangePicker(inProps) {
|
|
|
100
102
|
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), restProps), {}, {
|
|
101
103
|
slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root = slotProps.root) === null || _slotProps$root === void 0 ? void 0 : _slotProps$root.slotProps), {}, {
|
|
102
104
|
textField: function textField(ownerState) {
|
|
103
|
-
var _slotProps$root2,
|
|
105
|
+
var _slotProps$root2, _slotProps$openPicker, _slotProps$openPicker2;
|
|
104
106
|
var textFieldProps = _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root2 = slotProps.root) === null || _slotProps$root2 === void 0 || (_slotProps$root2 = _slotProps$root2.slotProps) === null || _slotProps$root2 === void 0 ? void 0 : _slotProps$root2.textField), {}, {
|
|
105
107
|
ownerState: ownerState
|
|
106
108
|
});
|
|
107
109
|
return _objectSpread(_objectSpread({
|
|
108
110
|
fullWidth: fullWidth,
|
|
109
|
-
required: required
|
|
111
|
+
required: required,
|
|
112
|
+
onBlur: onBlur,
|
|
113
|
+
onFocus: onFocus
|
|
110
114
|
}, textFieldProps), {}, {
|
|
111
|
-
InputProps:
|
|
112
|
-
startAdornment: /*#__PURE__*/
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
115
|
+
InputProps: {
|
|
116
|
+
startAdornment: /*#__PURE__*/_jsx(OpenPickerAdornment, _objectSpread(_objectSpread({
|
|
117
|
+
inputIsDisabled: disabled,
|
|
118
|
+
inputIsReadOnly: readOnly,
|
|
119
|
+
onClick: function onClick() {
|
|
120
|
+
return setOpen(true);
|
|
121
|
+
}
|
|
122
|
+
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.openPickerAdornment), {}, {
|
|
123
|
+
slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker = slotProps.openPickerAdornment) === null || _slotProps$openPicker === void 0 ? void 0 : _slotProps$openPicker.slotProps), {}, {
|
|
124
|
+
openPickerButton: _objectSpread({
|
|
125
|
+
"aria-label": intl.formatMessage({
|
|
126
|
+
id: "comet.dateTimeRangePicker.openPicker",
|
|
127
|
+
defaultMessage: "Open date time range picker"
|
|
128
|
+
})
|
|
129
|
+
}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker2 = slotProps.openPickerAdornment) === null || _slotProps$openPicker2 === void 0 || (_slotProps$openPicker2 = _slotProps$openPicker2.slotProps) === null || _slotProps$openPicker2 === void 0 ? void 0 : _slotProps$openPicker2.openPickerButton)
|
|
130
|
+
}),
|
|
131
|
+
children: openPickerIcon
|
|
132
|
+
})),
|
|
123
133
|
endAdornment: /*#__PURE__*/_jsxs(_Fragment, {
|
|
124
|
-
children: [
|
|
134
|
+
children: [/*#__PURE__*/_jsx(ReadOnlyAdornment, _objectSpread({
|
|
125
135
|
inputIsReadOnly: Boolean(readOnly)
|
|
126
136
|
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.readOnlyAdornment)), /*#__PURE__*/_jsx(ClearInputAdornment, _objectSpread({
|
|
127
137
|
position: "end",
|
|
@@ -133,7 +143,7 @@ export var DateTimeRangePicker = function DateTimeRangePicker(inProps) {
|
|
|
133
143
|
}
|
|
134
144
|
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.clearInputAdornment))]
|
|
135
145
|
})
|
|
136
|
-
}
|
|
146
|
+
}
|
|
137
147
|
});
|
|
138
148
|
}
|
|
139
149
|
})
|
|
@@ -155,7 +165,11 @@ var LazyRoot = /*#__PURE__*/lazy(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_re
|
|
|
155
165
|
})(css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n display: none;\n\n & + .", " {\n margin-top: 0;\n }\n }\n "])), inputLabelClasses.root, module.pickersInputBaseClasses.root));
|
|
156
166
|
return _context.a(2, {
|
|
157
167
|
"default": function _default(props) {
|
|
158
|
-
return /*#__PURE__*/_jsx(Root, _objectSpread({}, props)
|
|
168
|
+
return /*#__PURE__*/_jsx(Root, _objectSpread(_objectSpread({}, props), {}, {
|
|
169
|
+
slots: _objectSpread({
|
|
170
|
+
field: module.MultiInputDateTimeRangeField
|
|
171
|
+
}, props.slots)
|
|
172
|
+
}));
|
|
159
173
|
}
|
|
160
174
|
});
|
|
161
175
|
}
|
package/lib/dateTime/dateTimeRangePickerField/__stories__/DateTimeRangePickerField.stories.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
2
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
3
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
4
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
1
5
|
import { FinalForm } from "../../../FinalForm";
|
|
2
6
|
import { FinalFormDebug } from "../../../form/FinalFormDebug";
|
|
3
7
|
import { DateTimeRangePickerField } from "../DateTimeRangePickerField";
|
|
@@ -160,4 +164,60 @@ export var Disabled = {
|
|
|
160
164
|
}
|
|
161
165
|
});
|
|
162
166
|
}
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Before implementing custom validation, try to disable certain values using the props provided by MUI's DateTimeRangePicker, such as `shouldDisableDate`, `shouldDisableTime`, `disableFuture`, `disablePast`.
|
|
171
|
+
*
|
|
172
|
+
* Use this when:
|
|
173
|
+
* - You need to validate the date time range against a custom rule, which cannot be achieved using the props provided by MUI's DateTimeRangePicker
|
|
174
|
+
* - You want to provide a custom error message
|
|
175
|
+
* - You want to validate the date time range asynchronously
|
|
176
|
+
*/
|
|
177
|
+
export var CustomValidation = {
|
|
178
|
+
render: function render() {
|
|
179
|
+
var validateMaxThirtyDayRange = /*#__PURE__*/function () {
|
|
180
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(value) {
|
|
181
|
+
var millisecondsDifference, daysDifference;
|
|
182
|
+
return _regenerator().w(function (_context) {
|
|
183
|
+
while (1) switch (_context.n) {
|
|
184
|
+
case 0:
|
|
185
|
+
if (!(!(value !== null && value !== void 0 && value.start) || !(value !== null && value !== void 0 && value.end))) {
|
|
186
|
+
_context.n = 1;
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
return _context.a(2, undefined);
|
|
190
|
+
case 1:
|
|
191
|
+
millisecondsDifference = value.end.getTime() - value.start.getTime();
|
|
192
|
+
daysDifference = millisecondsDifference / (1000 * 60 * 60 * 24);
|
|
193
|
+
return _context.a(2, daysDifference <= 30 ? undefined : "Please select a range no longer than 30 days");
|
|
194
|
+
}
|
|
195
|
+
}, _callee);
|
|
196
|
+
}));
|
|
197
|
+
return function validateMaxThirtyDayRange(_x) {
|
|
198
|
+
return _ref5.apply(this, arguments);
|
|
199
|
+
};
|
|
200
|
+
}();
|
|
201
|
+
return /*#__PURE__*/_jsx(FinalForm, {
|
|
202
|
+
mode: "edit",
|
|
203
|
+
onSubmit: function onSubmit() {
|
|
204
|
+
// not handled
|
|
205
|
+
},
|
|
206
|
+
subscription: {
|
|
207
|
+
values: true
|
|
208
|
+
},
|
|
209
|
+
children: function children() {
|
|
210
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
211
|
+
children: [/*#__PURE__*/_jsx(DateTimeRangePickerField, {
|
|
212
|
+
name: "value",
|
|
213
|
+
label: "Date Time Range Picker",
|
|
214
|
+
helperText: "The selected range must not exceed 30 days",
|
|
215
|
+
fullWidth: true,
|
|
216
|
+
variant: "horizontal",
|
|
217
|
+
validate: validateMaxThirtyDayRange
|
|
218
|
+
}), /*#__PURE__*/_jsx(FinalFormDebug, {})]
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
163
223
|
};
|
|
@@ -7,7 +7,7 @@ import { ReadOnlyAdornment } from "../../common/ReadOnlyAdornment";
|
|
|
7
7
|
import { type ThemedComponentBaseProps } from "../../helpers/ThemedComponentBaseProps";
|
|
8
8
|
export type TimePickerClassKey = "root" | "clearInputAdornment" | "readOnlyAdornment" | "openPickerAdornment";
|
|
9
9
|
export type TimePickerProps = ThemedComponentBaseProps<{
|
|
10
|
-
root: typeof MuiTimePicker
|
|
10
|
+
root: typeof MuiTimePicker;
|
|
11
11
|
clearInputAdornment: typeof CometClearInputAdornment;
|
|
12
12
|
readOnlyAdornment: typeof ReadOnlyAdornment;
|
|
13
13
|
openPickerAdornment: typeof OpenPickerAdornment;
|
|
@@ -27,6 +27,8 @@ export type TimePickerProps = ThemedComponentBaseProps<{
|
|
|
27
27
|
* @param time - The new time value in 24-hour format (HH:mm), or `undefined` if cleared.
|
|
28
28
|
*/
|
|
29
29
|
onChange?: (time: string | undefined) => void;
|
|
30
|
+
onBlur?: () => void;
|
|
31
|
+
onFocus?: () => void;
|
|
30
32
|
/**
|
|
31
33
|
* Custom icons for the picker.
|
|
32
34
|
*
|
|
@@ -35,7 +37,7 @@ export type TimePickerProps = ThemedComponentBaseProps<{
|
|
|
35
37
|
iconMapping?: {
|
|
36
38
|
openPicker?: ReactNode;
|
|
37
39
|
};
|
|
38
|
-
} & Omit<MuiTimePickerProps
|
|
40
|
+
} & Omit<MuiTimePickerProps, "value" | "onChange" | "slotProps">;
|
|
39
41
|
/**
|
|
40
42
|
* The TimePicker component allows users to select a time from a time picker interface. It provides a text field
|
|
41
43
|
* with a time icon that opens a time picker dialog. The component handles time strings in 24-hour format (HH:mm)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../src/dateTime/timePicker/TimePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,KAAK,KAAK,EAAiB,MAAM,eAAe,CAAC;AAC5G,OAAO,EAA2B,UAAU,IAAI,aAAa,EAAE,KAAK,eAAe,IAAI,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEvI,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../src/dateTime/timePicker/TimePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,KAAK,KAAK,EAAiB,MAAM,eAAe,CAAC;AAC5G,OAAO,EAA2B,UAAU,IAAI,aAAa,EAAE,KAAK,eAAe,IAAI,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEvI,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAGjD,OAAO,EAAE,mBAAmB,IAAI,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAEvF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAE9G,MAAM,MAAM,eAAe,GAAG,wBAAwB,CAAC;IACnD,IAAI,EAAE,OAAO,aAAa,CAAC;IAC3B,mBAAmB,EAAE,OAAO,wBAAwB,CAAC;IACrD,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;CACnD,CAAC,GAAG;IACD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,SAAS,CAAC;KAC1B,CAAC;CACL,GAAG,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC;AAqBjE;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,eAAe,4CA6FlD,CAAC;AAoBF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,mBAAmB;QACzB,oBAAoB,EAAE,eAAe,CAAC;KACzC;IAED,UAAU,uBAAuB;QAC7B,oBAAoB,EAAE,kBAAkB,CAAC;KAC5C;IAED,UAAU,UAAU;QAChB,oBAAoB,CAAC,EAAE;YACnB,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACpE,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC;SACvE,CAAC;KACL;CACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
2
|
var _templateObject;
|
|
3
|
-
var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "readOnly"];
|
|
3
|
+
var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "onBlur", "onFocus", "readOnly"];
|
|
4
4
|
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
|
|
5
5
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
6
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -20,6 +20,7 @@ import { css, inputLabelClasses, useThemeProps } from "@mui/material";
|
|
|
20
20
|
import { pickersInputBaseClasses, TimePicker as MuiTimePicker } from "@mui/x-date-pickers";
|
|
21
21
|
import { format, parse } from "date-fns";
|
|
22
22
|
import { useState } from "react";
|
|
23
|
+
import { useIntl } from "react-intl";
|
|
23
24
|
import { ClearInputAdornment as CometClearInputAdornment } from "../../common/ClearInputAdornment";
|
|
24
25
|
import { OpenPickerAdornment } from "../../common/OpenPickerAdornment";
|
|
25
26
|
import { ReadOnlyAdornment } from "../../common/ReadOnlyAdornment";
|
|
@@ -62,19 +63,21 @@ export var TimePicker = function TimePicker(inProps) {
|
|
|
62
63
|
disabled = _useThemeProps.disabled,
|
|
63
64
|
stringValue = _useThemeProps.value,
|
|
64
65
|
_onChange = _useThemeProps.onChange,
|
|
66
|
+
onBlur = _useThemeProps.onBlur,
|
|
67
|
+
onFocus = _useThemeProps.onFocus,
|
|
65
68
|
readOnly = _useThemeProps.readOnly,
|
|
66
69
|
restProps = _objectWithoutProperties(_useThemeProps, _excluded);
|
|
67
70
|
var _useState = useState(false),
|
|
68
71
|
_useState2 = _slicedToArray(_useState, 2),
|
|
69
72
|
open = _useState2[0],
|
|
70
73
|
setOpen = _useState2[1];
|
|
74
|
+
var intl = useIntl();
|
|
71
75
|
var dateValue = getDateFromTimeString(stringValue);
|
|
72
76
|
var _iconMapping$openPick = iconMapping.openPicker,
|
|
73
77
|
openPickerIcon = _iconMapping$openPick === void 0 ? /*#__PURE__*/_jsx(Time, {
|
|
74
78
|
color: "inherit"
|
|
75
79
|
}) : _iconMapping$openPick;
|
|
76
80
|
return /*#__PURE__*/_jsx(Root, _objectSpread(_objectSpread(_objectSpread({
|
|
77
|
-
enableAccessibleFieldDOMStructure: true,
|
|
78
81
|
disabled: disabled,
|
|
79
82
|
readOnly: readOnly,
|
|
80
83
|
open: open,
|
|
@@ -84,7 +87,6 @@ export var TimePicker = function TimePicker(inProps) {
|
|
|
84
87
|
onClose: function onClose() {
|
|
85
88
|
return setOpen(false);
|
|
86
89
|
},
|
|
87
|
-
disableOpenPicker: true,
|
|
88
90
|
value: dateValue,
|
|
89
91
|
onChange: function onChange(date) {
|
|
90
92
|
if (!date) {
|
|
@@ -96,28 +98,36 @@ export var TimePicker = function TimePicker(inProps) {
|
|
|
96
98
|
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), restProps), {}, {
|
|
97
99
|
slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root = slotProps.root) === null || _slotProps$root === void 0 ? void 0 : _slotProps$root.slotProps), {}, {
|
|
98
100
|
textField: function textField(ownerState) {
|
|
99
|
-
var _slotProps$root2,
|
|
101
|
+
var _slotProps$root2, _slotProps$openPicker, _slotProps$openPicker2;
|
|
100
102
|
var textFieldProps = _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root2 = slotProps.root) === null || _slotProps$root2 === void 0 || (_slotProps$root2 = _slotProps$root2.slotProps) === null || _slotProps$root2 === void 0 ? void 0 : _slotProps$root2.textField), {}, {
|
|
101
103
|
ownerState: ownerState
|
|
102
104
|
});
|
|
103
105
|
return _objectSpread(_objectSpread({
|
|
104
106
|
fullWidth: fullWidth,
|
|
105
|
-
required: required
|
|
107
|
+
required: required,
|
|
108
|
+
onBlur: onBlur,
|
|
109
|
+
onFocus: onFocus
|
|
106
110
|
}, textFieldProps), {}, {
|
|
107
|
-
InputProps:
|
|
108
|
-
startAdornment: /*#__PURE__*/
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
111
|
+
InputProps: {
|
|
112
|
+
startAdornment: /*#__PURE__*/_jsx(OpenPickerAdornment, _objectSpread(_objectSpread({
|
|
113
|
+
inputIsDisabled: disabled,
|
|
114
|
+
inputIsReadOnly: readOnly,
|
|
115
|
+
onClick: function onClick() {
|
|
116
|
+
return setOpen(true);
|
|
117
|
+
}
|
|
118
|
+
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.openPickerAdornment), {}, {
|
|
119
|
+
slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker = slotProps.openPickerAdornment) === null || _slotProps$openPicker === void 0 ? void 0 : _slotProps$openPicker.slotProps), {}, {
|
|
120
|
+
openPickerButton: _objectSpread({
|
|
121
|
+
"aria-label": intl.formatMessage({
|
|
122
|
+
id: "comet.timePicker.openPicker",
|
|
123
|
+
defaultMessage: "Open time picker"
|
|
124
|
+
})
|
|
125
|
+
}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker2 = slotProps.openPickerAdornment) === null || _slotProps$openPicker2 === void 0 || (_slotProps$openPicker2 = _slotProps$openPicker2.slotProps) === null || _slotProps$openPicker2 === void 0 ? void 0 : _slotProps$openPicker2.openPickerButton)
|
|
126
|
+
}),
|
|
127
|
+
children: openPickerIcon
|
|
128
|
+
})),
|
|
119
129
|
endAdornment: /*#__PURE__*/_jsxs(_Fragment, {
|
|
120
|
-
children: [
|
|
130
|
+
children: [/*#__PURE__*/_jsx(ReadOnlyAdornment, _objectSpread({
|
|
121
131
|
inputIsReadOnly: Boolean(readOnly)
|
|
122
132
|
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.readOnlyAdornment)), /*#__PURE__*/_jsx(ClearInputAdornment, _objectSpread({
|
|
123
133
|
position: "end",
|
|
@@ -127,7 +137,7 @@ export var TimePicker = function TimePicker(inProps) {
|
|
|
127
137
|
}
|
|
128
138
|
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.clearInputAdornment))]
|
|
129
139
|
})
|
|
130
|
-
}
|
|
140
|
+
}
|
|
131
141
|
});
|
|
132
142
|
}
|
|
133
143
|
})
|