@comet/admin 8.18.0 → 8.19.0-canary-20260305114550

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/lib/dateTime/datePicker/DatePicker.d.ts +2 -0
  2. package/lib/dateTime/datePicker/DatePicker.d.ts.map +1 -1
  3. package/lib/dateTime/datePicker/DatePicker.js +17 -3
  4. package/lib/dateTime/datePickerField/__stories__/DatePickerField.stories.js +61 -1
  5. package/lib/dateTime/dateRangePicker/DateRangePicker.d.ts +2 -0
  6. package/lib/dateTime/dateRangePicker/DateRangePicker.d.ts.map +1 -1
  7. package/lib/dateTime/dateRangePicker/DateRangePicker.js +17 -3
  8. package/lib/dateTime/dateRangePickerField/__stories__/DateRangePickerField.stories.js +62 -1
  9. package/lib/dateTime/dateTimePicker/DateTimePicker.d.ts +2 -0
  10. package/lib/dateTime/dateTimePicker/DateTimePicker.d.ts.map +1 -1
  11. package/lib/dateTime/dateTimePicker/DateTimePicker.js +17 -3
  12. package/lib/dateTime/dateTimePickerField/__stories__/DateTimePickerField.stories.js +61 -1
  13. package/lib/dateTime/dateTimeRangePicker/DateTimeRangePicker.d.ts +2 -0
  14. package/lib/dateTime/dateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
  15. package/lib/dateTime/dateTimeRangePicker/DateTimeRangePicker.js +17 -3
  16. package/lib/dateTime/dateTimeRangePickerField/__stories__/DateTimeRangePickerField.stories.js +61 -1
  17. package/lib/dateTime/timePicker/TimePicker.d.ts +2 -0
  18. package/lib/dateTime/timePicker/TimePicker.d.ts.map +1 -1
  19. package/lib/dateTime/timePicker/TimePicker.js +17 -3
  20. package/lib/dateTime/timePickerField/__stories__/TimePickerField.stories.js +70 -1
  21. package/lib/utils/test-utils.d.ts.map +1 -1
  22. package/lib/utils/test-utils.js +11 -4
  23. package/package.json +5 -5
@@ -27,6 +27,8 @@ export type Future_DatePickerProps = ThemedComponentBaseProps<{
27
27
  * @param date - The new date value in ISO 8601 format (YYYY-MM-DD), or `undefined` if cleared.
28
28
  */
29
29
  onChange?: (date: string | undefined) => void;
30
+ onBlur?: () => void;
31
+ onFocus?: () => void;
30
32
  /**
31
33
  * Custom icons for the picker.
32
34
  *
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/dateTime/datePicker/DatePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,KAAK,KAAK,EAAiB,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,KAAK,eAAe,IAAI,kBAAkB,EAA2B,MAAM,qBAAqB,CAAC;AACvI,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAEjD,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,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAErH,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;IAC1D,IAAI,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,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;;;;OAIG;IACH,WAAW,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,SAAS,CAAC;KAC1B,CAAC;CACL,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,sBAAsB,4CAsFhE,CAAC;AAoBF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,mBAAmB;QACzB,0BAA0B,EAAE,sBAAsB,CAAC;KACtD;IAED,UAAU,uBAAuB;QAC7B,0BAA0B,EAAE,yBAAyB,CAAC;KACzD;IAED,UAAU,UAAU;QAChB,0BAA0B,CAAC,EAAE;YACzB,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAC1E,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC,CAAC;SAC7E,CAAC;KACL;CACJ"}
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/dateTime/datePicker/DatePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,KAAK,KAAK,EAAiB,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,KAAK,eAAe,IAAI,kBAAkB,EAA2B,MAAM,qBAAqB,CAAC;AACvI,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;AAGvF,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAErH,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;IAC1D,IAAI,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,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,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,sBAAsB,4CAqGhE,CAAC;AAoBF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,mBAAmB;QACzB,0BAA0B,EAAE,sBAAsB,CAAC;KACtD;IAED,UAAU,uBAAuB;QAC7B,0BAA0B,EAAE,yBAAyB,CAAC;KACzD;IAED,UAAU,UAAU;QAChB,0BAA0B,CAAC,EAAE;YACzB,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAC1E,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC,CAAC;SAC7E,CAAC;KACL;CACJ"}
@@ -9,6 +9,7 @@ var _adminIcons = require("@comet/admin-icons");
9
9
  var _material = require("@mui/material");
10
10
  var _xDatePickers = require("@mui/x-date-pickers");
11
11
  var _react = require("react");
12
+ var _reactIntl = require("react-intl");
12
13
  var _ClearInputAdornment = require("../../common/ClearInputAdornment");
13
14
  var _OpenPickerAdornment = require("../../common/OpenPickerAdornment");
14
15
  var _ReadOnlyAdornment = require("../../common/ReadOnlyAdornment");
@@ -16,7 +17,7 @@ var _createComponentSlot = require("../../helpers/createComponentSlot");
16
17
  var _utils = require("../utils");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
19
  var _templateObject;
19
- var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "readOnly"];
20
+ var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "onBlur", "onFocus", "readOnly"];
20
21
  function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
21
22
  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; }
22
23
  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; }
@@ -53,12 +54,15 @@ var Future_DatePicker = exports.Future_DatePicker = function Future_DatePicker(i
53
54
  disabled = _useThemeProps.disabled,
54
55
  stringValue = _useThemeProps.value,
55
56
  _onChange = _useThemeProps.onChange,
57
+ onBlur = _useThemeProps.onBlur,
58
+ onFocus = _useThemeProps.onFocus,
56
59
  readOnly = _useThemeProps.readOnly,
57
60
  restProps = _objectWithoutProperties(_useThemeProps, _excluded);
58
61
  var _useState = (0, _react.useState)(false),
59
62
  _useState2 = _slicedToArray(_useState, 2),
60
63
  open = _useState2[0],
61
64
  setOpen = _useState2[1];
65
+ var intl = (0, _reactIntl.useIntl)();
62
66
  var dateValue = (0, _utils.getDateValue)(stringValue);
63
67
  var _iconMapping$openPick = iconMapping.openPicker,
64
68
  openPickerIcon = _iconMapping$openPick === void 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Calendar, {
@@ -87,13 +91,15 @@ var Future_DatePicker = exports.Future_DatePicker = function Future_DatePicker(i
87
91
  }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), restProps), {}, {
88
92
  slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root = slotProps.root) === null || _slotProps$root === void 0 ? void 0 : _slotProps$root.slotProps), {}, {
89
93
  textField: function textField(ownerState) {
90
- var _slotProps$root2, _textFieldProps$Input, _textFieldProps$Input2;
94
+ var _slotProps$root2, _slotProps$openPicker, _slotProps$openPicker2, _textFieldProps$Input, _textFieldProps$Input2;
91
95
  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), {}, {
92
96
  ownerState: ownerState
93
97
  });
94
98
  return _objectSpread(_objectSpread({
95
99
  fullWidth: fullWidth,
96
- required: required
100
+ required: required,
101
+ onBlur: onBlur,
102
+ onFocus: onFocus
97
103
  }, textFieldProps), {}, {
98
104
  InputProps: _objectSpread(_objectSpread({}, textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.InputProps), {}, {
99
105
  startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
@@ -104,6 +110,14 @@ var Future_DatePicker = exports.Future_DatePicker = function Future_DatePicker(i
104
110
  return setOpen(true);
105
111
  }
106
112
  }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.openPickerAdornment), {}, {
113
+ slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker = slotProps.openPickerAdornment) === null || _slotProps$openPicker === void 0 ? void 0 : _slotProps$openPicker.slotProps), {}, {
114
+ openPickerButton: _objectSpread({
115
+ "aria-label": intl.formatMessage({
116
+ id: "comet.datePicker.openPicker",
117
+ defaultMessage: "Open date picker"
118
+ })
119
+ }, 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)
120
+ }),
107
121
  children: openPickerIcon
108
122
  })), textFieldProps === null || textFieldProps === void 0 || (_textFieldProps$Input = textFieldProps.InputProps) === null || _textFieldProps$Input === void 0 ? void 0 : _textFieldProps$Input.startAdornment]
109
123
  }),
@@ -3,11 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.MinMaxDate = exports.Disabled = exports.Default = exports.Clearable = void 0;
6
+ exports["default"] = exports.MinMaxDate = exports.Disabled = exports.Default = exports.CustomValidation = exports.Clearable = void 0;
7
7
  var _FinalForm = require("../../../FinalForm");
8
8
  var _FinalFormDebug = require("../../../form/FinalFormDebug");
9
9
  var _DatePickerField = require("../DatePickerField");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
+ 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 }; })(); }
12
+ 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); }
13
+ 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); }
14
+ 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); }); }; }
11
15
  var config = {
12
16
  component: _DatePickerField.Future_DatePickerField,
13
17
  title: "components/dateTime/DatePickerField"
@@ -162,4 +166,60 @@ var Disabled = exports.Disabled = {
162
166
  }
163
167
  });
164
168
  }
169
+ };
170
+
171
+ /**
172
+ * Before implementing custom validation, try to disable certain values using the props provided by MUI's DatePicker, such as `shouldDisableDate`, `disableFuture`, `disablePast`.
173
+ *
174
+ * Use this when:
175
+ * - You need to validate the date against a custom rule, which cannot be achieved using the props provided by MUI's DatePicker
176
+ * - You want to provide a custom error message
177
+ * - You want to validate the date asynchronously
178
+ */
179
+ var CustomValidation = exports.CustomValidation = {
180
+ render: function render() {
181
+ var validateIsWeekday = /*#__PURE__*/function () {
182
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(value) {
183
+ var day, isWeekday;
184
+ return _regenerator().w(function (_context) {
185
+ while (1) switch (_context.n) {
186
+ case 0:
187
+ if (value) {
188
+ _context.n = 1;
189
+ break;
190
+ }
191
+ return _context.a(2, undefined);
192
+ case 1:
193
+ day = new Date(value).getDay();
194
+ isWeekday = day !== 0 && day !== 6;
195
+ return _context.a(2, isWeekday ? undefined : "Please select a weekday");
196
+ }
197
+ }, _callee);
198
+ }));
199
+ return function validateIsWeekday(_x) {
200
+ return _ref5.apply(this, arguments);
201
+ };
202
+ }();
203
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FinalForm.FinalForm, {
204
+ mode: "edit",
205
+ onSubmit: function onSubmit() {
206
+ // not handled
207
+ },
208
+ subscription: {
209
+ values: true
210
+ },
211
+ children: function children() {
212
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
213
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DatePickerField.Future_DatePickerField, {
214
+ name: "value",
215
+ label: "Date Picker",
216
+ helperText: "Only weekdays are valid",
217
+ fullWidth: true,
218
+ variant: "horizontal",
219
+ validate: validateIsWeekday
220
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FinalFormDebug.FinalFormDebug, {})]
221
+ });
222
+ }
223
+ });
224
+ }
165
225
  };
@@ -34,6 +34,8 @@ export type Future_DateRangePickerProps = ThemedComponentBaseProps<{
34
34
  * @param date - The new date range value, or `undefined` if cleared.
35
35
  */
36
36
  onChange?: (date: DateRange | undefined) => void;
37
+ onBlur?: () => void;
38
+ onFocus?: () => void;
37
39
  /**
38
40
  * Custom icons for the picker.
39
41
  *
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangePicker.d.ts","sourceRoot":"","sources":["../../../src/dateTime/dateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,KAAK,KAAK,EAAiB,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,KAAK,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,KAAK,aAAa,EAAQ,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAC;AAErF,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,SAAS,GAAG;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAE1H,MAAM,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;IAC/D,IAAI,EAAE,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,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,SAAS,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACjD;;;;OAIG;IACH,WAAW,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,SAAS,CAAC;KAC1B,CAAC;CACL,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAMpE;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,2BAA2B,4CA4F1E,CAAC;AA8BF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,mBAAmB;QACzB,+BAA+B,EAAE,2BAA2B,CAAC;KAChE;IAED,UAAU,uBAAuB;QAC7B,+BAA+B,EAAE,8BAA8B,CAAC;KACnE;IAED,UAAU,UAAU;QAChB,+BAA+B,CAAC,EAAE;YAC9B,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC/E,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,iCAAiC,CAAC,CAAC;SAClF,CAAC;KACL;CACJ"}
1
+ {"version":3,"file":"DateRangePicker.d.ts","sourceRoot":"","sources":["../../../src/dateTime/dateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,KAAK,KAAK,EAAiB,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,KAAK,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,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,SAAS,GAAG;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAE1H,MAAM,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;IAC/D,IAAI,EAAE,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,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,SAAS,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACjD,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,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAMpE;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,2BAA2B,4CA4G1E,CAAC;AA8BF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,mBAAmB;QACzB,+BAA+B,EAAE,2BAA2B,CAAC;KAChE;IAED,UAAU,uBAAuB;QAC7B,+BAA+B,EAAE,8BAA8B,CAAC;KACnE;IAED,UAAU,UAAU;QAChB,+BAA+B,CAAC,EAAE;YAC9B,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC/E,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,iCAAiC,CAAC,CAAC;SAClF,CAAC;KACL;CACJ"}
@@ -8,6 +8,7 @@ exports.Future_DateRangePicker = void 0;
8
8
  var _adminIcons = require("@comet/admin-icons");
9
9
  var _material = require("@mui/material");
10
10
  var _react = require("react");
11
+ var _reactIntl = require("react-intl");
11
12
  var _ClearInputAdornment = require("../../common/ClearInputAdornment");
12
13
  var _OpenPickerAdornment = require("../../common/OpenPickerAdornment");
13
14
  var _ReadOnlyAdornment = require("../../common/ReadOnlyAdornment");
@@ -15,7 +16,7 @@ var _createComponentSlot = require("../../helpers/createComponentSlot");
15
16
  var _utils = require("../utils");
16
17
  var _jsxRuntime = require("react/jsx-runtime");
17
18
  var _templateObject;
18
- var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "readOnly"];
19
+ var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "onBlur", "onFocus", "readOnly"];
19
20
  /**
20
21
  * Represents a date range with start and end dates in ISO 8601 format (YYYY-MM-DD).
21
22
  */
@@ -64,8 +65,11 @@ var Future_DateRangePicker = exports.Future_DateRangePicker = function Future_Da
64
65
  disabled = _useThemeProps.disabled,
65
66
  stringDateRangeValue = _useThemeProps.value,
66
67
  _onChange = _useThemeProps.onChange,
68
+ onBlur = _useThemeProps.onBlur,
69
+ onFocus = _useThemeProps.onFocus,
67
70
  readOnly = _useThemeProps.readOnly,
68
71
  restProps = _objectWithoutProperties(_useThemeProps, _excluded);
72
+ var intl = (0, _reactIntl.useIntl)();
69
73
  var _useState = (0, _react.useState)(false),
70
74
  _useState2 = _slicedToArray(_useState, 2),
71
75
  open = _useState2[0],
@@ -108,13 +112,15 @@ var Future_DateRangePicker = exports.Future_DateRangePicker = function Future_Da
108
112
  }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), restProps), {}, {
109
113
  slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root = slotProps.root) === null || _slotProps$root === void 0 ? void 0 : _slotProps$root.slotProps), {}, {
110
114
  textField: function textField(ownerState) {
111
- var _slotProps$root2, _textFieldProps$Input, _textFieldProps$Input2;
115
+ var _slotProps$root2, _slotProps$openPicker, _slotProps$openPicker2, _textFieldProps$Input, _textFieldProps$Input2;
112
116
  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), {}, {
113
117
  ownerState: ownerState
114
118
  });
115
119
  return _objectSpread(_objectSpread({
116
120
  fullWidth: fullWidth,
117
- required: required
121
+ required: required,
122
+ onBlur: onBlur,
123
+ onFocus: onFocus
118
124
  }, textFieldProps), {}, {
119
125
  InputProps: _objectSpread(_objectSpread({}, textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.InputProps), {}, {
120
126
  startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
@@ -125,6 +131,14 @@ var Future_DateRangePicker = exports.Future_DateRangePicker = function Future_Da
125
131
  return setOpen(true);
126
132
  }
127
133
  }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.openPickerAdornment), {}, {
134
+ slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker = slotProps.openPickerAdornment) === null || _slotProps$openPicker === void 0 ? void 0 : _slotProps$openPicker.slotProps), {}, {
135
+ openPickerButton: _objectSpread({
136
+ "aria-label": intl.formatMessage({
137
+ id: "comet.dateRangePicker.openPicker",
138
+ defaultMessage: "Open date range picker"
139
+ })
140
+ }, 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)
141
+ }),
128
142
  children: openPickerIcon
129
143
  })), textFieldProps === null || textFieldProps === void 0 || (_textFieldProps$Input = textFieldProps.InputProps) === null || _textFieldProps$Input === void 0 ? void 0 : _textFieldProps$Input.startAdornment]
130
144
  }),
@@ -3,11 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.MinMaxDate = exports.Disabled = exports.Default = exports.Clearable = void 0;
6
+ exports["default"] = exports.MinMaxDate = exports.Disabled = exports.Default = exports.CustomValidation = exports.Clearable = void 0;
7
7
  var _FinalForm = require("../../../FinalForm");
8
8
  var _FinalFormDebug = require("../../../form/FinalFormDebug");
9
9
  var _DateRangePickerField = require("../DateRangePickerField");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
+ 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 }; })(); }
12
+ 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); }
13
+ 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); }
14
+ 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); }); }; }
11
15
  var config = {
12
16
  component: _DateRangePickerField.Future_DateRangePickerField,
13
17
  title: "components/dateTime/DateRangePickerField"
@@ -165,4 +169,61 @@ var Disabled = exports.Disabled = {
165
169
  }
166
170
  });
167
171
  }
172
+ };
173
+
174
+ /**
175
+ * Before implementing custom validation, try to disable certain values using the props provided by MUI's DateRangePicker, such as `shouldDisableDate`, `disableFuture`, `disablePast`.
176
+ *
177
+ * Use this when:
178
+ * - You need to validate the date range against a custom rule, which cannot be achieved using the props provided by MUI's DateRangePicker
179
+ * - You want to provide a custom error message
180
+ * - You want to validate the date range asynchronously
181
+ */
182
+ var CustomValidation = exports.CustomValidation = {
183
+ render: function render() {
184
+ var validateMaxThirtyDayRange = /*#__PURE__*/function () {
185
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(value) {
186
+ var startDate, endDate, differenceInDays;
187
+ return _regenerator().w(function (_context) {
188
+ while (1) switch (_context.n) {
189
+ case 0:
190
+ if (!(!(value !== null && value !== void 0 && value.start) || !(value !== null && value !== void 0 && value.end))) {
191
+ _context.n = 1;
192
+ break;
193
+ }
194
+ return _context.a(2, undefined);
195
+ case 1:
196
+ startDate = new Date(value.start);
197
+ endDate = new Date(value.end);
198
+ differenceInDays = (endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24);
199
+ return _context.a(2, differenceInDays <= 30 ? undefined : "Please select a range no longer than 30 days");
200
+ }
201
+ }, _callee);
202
+ }));
203
+ return function validateMaxThirtyDayRange(_x) {
204
+ return _ref5.apply(this, arguments);
205
+ };
206
+ }();
207
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FinalForm.FinalForm, {
208
+ mode: "edit",
209
+ onSubmit: function onSubmit() {
210
+ // not handled
211
+ },
212
+ subscription: {
213
+ values: true
214
+ },
215
+ children: function children() {
216
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
217
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DateRangePickerField.Future_DateRangePickerField, {
218
+ name: "value",
219
+ label: "Date Range Picker",
220
+ helperText: "The selected range must not exceed 30 days",
221
+ fullWidth: true,
222
+ variant: "horizontal",
223
+ validate: validateMaxThirtyDayRange
224
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FinalFormDebug.FinalFormDebug, {})]
225
+ });
226
+ }
227
+ });
228
+ }
168
229
  };
@@ -32,6 +32,8 @@ export type Future_DateTimePickerProps = ThemedComponentBaseProps<{
32
32
  *
33
33
  * - `openPicker`: Icon to display in the adornment that opens the picker (default: Calendar icon)
34
34
  */
35
+ onBlur?: () => void;
36
+ onFocus?: () => void;
35
37
  iconMapping?: {
36
38
  openPicker?: ReactNode;
37
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker.d.ts","sourceRoot":"","sources":["../../../src/dateTime/dateTimePicker/DateTimePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,KAAK,KAAK,EAAiB,MAAM,eAAe,CAAC;AAC5G,OAAO,EACH,cAAc,IAAI,iBAAiB,EACnC,KAAK,mBAAmB,IAAI,sBAAsB,EAErD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAEjD,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,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAEzH,MAAM,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;IAC9D,IAAI,EAAE,OAAO,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,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,IAAI,CAAC;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAChD;;;;OAIG;IACH,WAAW,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,SAAS,CAAC;KAC1B,CAAC;CACL,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,0BAA0B,4CAoFxE,CAAC;AAoBF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,mBAAmB;QACzB,8BAA8B,EAAE,0BAA0B,CAAC;KAC9D;IAED,UAAU,uBAAuB;QAC7B,8BAA8B,EAAE,6BAA6B,CAAC;KACjE;IAED,UAAU,UAAU;QAChB,8BAA8B,CAAC,EAAE;YAC7B,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC9E,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,gCAAgC,CAAC,CAAC;SACjF,CAAC;KACL;CACJ"}
1
+ {"version":3,"file":"DateTimePicker.d.ts","sourceRoot":"","sources":["../../../src/dateTime/dateTimePicker/DateTimePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAA0B,KAAK,KAAK,EAAiB,MAAM,eAAe,CAAC;AAC5G,OAAO,EACH,cAAc,IAAI,iBAAiB,EACnC,KAAK,mBAAmB,IAAI,sBAAsB,EAErD,MAAM,qBAAqB,CAAC;AAC7B,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;AAGvF,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAEzH,MAAM,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;IAC9D,IAAI,EAAE,OAAO,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,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,IAAI,CAAC;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;IAChD;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,SAAS,CAAC;KAC1B,CAAC;CACL,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,0BAA0B,4CAmGxE,CAAC;AAoBF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,mBAAmB;QACzB,8BAA8B,EAAE,0BAA0B,CAAC;KAC9D;IAED,UAAU,uBAAuB;QAC7B,8BAA8B,EAAE,6BAA6B,CAAC;KACjE;IAED,UAAU,UAAU;QAChB,8BAA8B,CAAC,EAAE;YAC7B,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC9E,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,gCAAgC,CAAC,CAAC;SACjF,CAAC;KACL;CACJ"}
@@ -9,6 +9,7 @@ var _adminIcons = require("@comet/admin-icons");
9
9
  var _material = require("@mui/material");
10
10
  var _xDatePickers = require("@mui/x-date-pickers");
11
11
  var _react = require("react");
12
+ var _reactIntl = require("react-intl");
12
13
  var _ClearInputAdornment = require("../../common/ClearInputAdornment");
13
14
  var _OpenPickerAdornment = require("../../common/OpenPickerAdornment");
14
15
  var _ReadOnlyAdornment = require("../../common/ReadOnlyAdornment");
@@ -16,7 +17,7 @@ var _createComponentSlot = require("../../helpers/createComponentSlot");
16
17
  var _utils = require("../utils");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
19
  var _templateObject;
19
- var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "readOnly"];
20
+ var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "onBlur", "onFocus", "readOnly"];
20
21
  function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
21
22
  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; }
22
23
  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; }
@@ -54,12 +55,15 @@ var Future_DateTimePicker = exports.Future_DateTimePicker = function Future_Date
54
55
  _useThemeProps$value = _useThemeProps.value,
55
56
  value = _useThemeProps$value === void 0 ? null : _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);
59
62
  var _useState = (0, _react.useState)(false),
60
63
  _useState2 = _slicedToArray(_useState, 2),
61
64
  open = _useState2[0],
62
65
  setOpen = _useState2[1];
66
+ var intl = (0, _reactIntl.useIntl)();
63
67
  var _iconMapping$openPick = iconMapping.openPicker,
64
68
  openPickerIcon = _iconMapping$openPick === void 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Calendar, {
65
69
  color: "inherit"
@@ -87,13 +91,15 @@ var Future_DateTimePicker = exports.Future_DateTimePicker = function Future_Date
87
91
  }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), restProps), {}, {
88
92
  slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root = slotProps.root) === null || _slotProps$root === void 0 ? void 0 : _slotProps$root.slotProps), {}, {
89
93
  textField: function textField(ownerState) {
90
- var _slotProps$root2, _textFieldProps$Input, _textFieldProps$Input2;
94
+ var _slotProps$root2, _slotProps$openPicker, _slotProps$openPicker2, _textFieldProps$Input, _textFieldProps$Input2;
91
95
  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), {}, {
92
96
  ownerState: ownerState
93
97
  });
94
98
  return _objectSpread(_objectSpread({
95
99
  fullWidth: fullWidth,
96
- required: required
100
+ required: required,
101
+ onBlur: onBlur,
102
+ onFocus: onFocus
97
103
  }, textFieldProps), {}, {
98
104
  InputProps: _objectSpread(_objectSpread({}, textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.InputProps), {}, {
99
105
  startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
@@ -104,6 +110,14 @@ var Future_DateTimePicker = exports.Future_DateTimePicker = function Future_Date
104
110
  return setOpen(true);
105
111
  }
106
112
  }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.openPickerAdornment), {}, {
113
+ slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker = slotProps.openPickerAdornment) === null || _slotProps$openPicker === void 0 ? void 0 : _slotProps$openPicker.slotProps), {}, {
114
+ openPickerButton: _objectSpread({
115
+ "aria-label": intl.formatMessage({
116
+ id: "comet.dateTimePicker.openPicker",
117
+ defaultMessage: "Open date time picker"
118
+ })
119
+ }, 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)
120
+ }),
107
121
  children: openPickerIcon
108
122
  })), textFieldProps === null || textFieldProps === void 0 || (_textFieldProps$Input = textFieldProps.InputProps) === null || _textFieldProps$Input === void 0 ? void 0 : _textFieldProps$Input.startAdornment]
109
123
  }),
@@ -3,11 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.MinMaxDate = exports.Disabled = exports.Default = exports.Clearable = void 0;
6
+ exports["default"] = exports.MinMaxDate = exports.Disabled = exports.Default = exports.CustomValidation = exports.Clearable = void 0;
7
7
  var _FinalForm = require("../../../FinalForm");
8
8
  var _FinalFormDebug = require("../../../form/FinalFormDebug");
9
9
  var _DateTimePickerField = require("../DateTimePickerField");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
+ 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 }; })(); }
12
+ 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); }
13
+ 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); }
14
+ 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); }); }; }
11
15
  var config = {
12
16
  component: _DateTimePickerField.Future_DateTimePickerField,
13
17
  title: "components/dateTime/DateTimePickerField"
@@ -162,4 +166,60 @@ var Disabled = exports.Disabled = {
162
166
  }
163
167
  });
164
168
  }
169
+ };
170
+
171
+ /**
172
+ * Before implementing custom validation, try to disable certain values using the props provided by MUI's DateTimePicker, such as `shouldDisableDate`, `shouldDisableTime`, `disableFuture`, `disablePast`.
173
+ *
174
+ * Use this when:
175
+ * - You need to validate the date against a custom rule, which cannot be achieved using the props provided by MUI's DateTimePicker
176
+ * - You want to provide a custom error message
177
+ * - You want to validate the date asynchronously
178
+ */
179
+ var CustomValidation = exports.CustomValidation = {
180
+ render: function render() {
181
+ var validateIsWeekday = /*#__PURE__*/function () {
182
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(value) {
183
+ var day, isWeekday;
184
+ return _regenerator().w(function (_context) {
185
+ while (1) switch (_context.n) {
186
+ case 0:
187
+ if (value) {
188
+ _context.n = 1;
189
+ break;
190
+ }
191
+ return _context.a(2, undefined);
192
+ case 1:
193
+ day = value.getDay();
194
+ isWeekday = day !== 0 && day !== 6;
195
+ return _context.a(2, isWeekday ? undefined : "Please select a weekday");
196
+ }
197
+ }, _callee);
198
+ }));
199
+ return function validateIsWeekday(_x) {
200
+ return _ref5.apply(this, arguments);
201
+ };
202
+ }();
203
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FinalForm.FinalForm, {
204
+ mode: "edit",
205
+ onSubmit: function onSubmit() {
206
+ // not handled
207
+ },
208
+ subscription: {
209
+ values: true
210
+ },
211
+ children: function children() {
212
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
213
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DateTimePickerField.Future_DateTimePickerField, {
214
+ name: "value",
215
+ label: "Date Time Picker",
216
+ helperText: "Only weekdays are valid",
217
+ fullWidth: true,
218
+ variant: "horizontal",
219
+ validate: validateIsWeekday
220
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FinalFormDebug.FinalFormDebug, {})]
221
+ });
222
+ }
223
+ });
224
+ }
165
225
  };
@@ -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
  *
@@ -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;AAErF,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,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7D,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;;;;OAIG;IACH,WAAW,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,SAAS,CAAC;KAC1B,CAAC;CACL,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAExE;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,wBAAwB,4CAiGpE,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
+ {"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,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7D,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,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;AAExE;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,wBAAwB,4CAiHpE,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"}
@@ -8,6 +8,7 @@ exports.DateTimeRangePicker = void 0;
8
8
  var _adminIcons = require("@comet/admin-icons");
9
9
  var _material = require("@mui/material");
10
10
  var _react = require("react");
11
+ var _reactIntl = require("react-intl");
11
12
  var _ClearInputAdornment = require("../../common/ClearInputAdornment");
12
13
  var _OpenPickerAdornment = require("../../common/OpenPickerAdornment");
13
14
  var _ReadOnlyAdornment = require("../../common/ReadOnlyAdornment");
@@ -15,7 +16,7 @@ var _createComponentSlot = require("../../helpers/createComponentSlot");
15
16
  var _utils = require("../utils");
16
17
  var _jsxRuntime = require("react/jsx-runtime");
17
18
  var _templateObject;
18
- var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "readOnly"];
19
+ var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "onBlur", "onFocus", "readOnly"];
19
20
  /**
20
21
  * Represents a date-time range with start and end dates as Date objects.
21
22
  */
@@ -60,8 +61,11 @@ var DateTimeRangePicker = exports.DateTimeRangePicker = function DateTimeRangePi
60
61
  disabled = _useThemeProps.disabled,
61
62
  valueObject = _useThemeProps.value,
62
63
  _onChange = _useThemeProps.onChange,
64
+ onBlur = _useThemeProps.onBlur,
65
+ onFocus = _useThemeProps.onFocus,
63
66
  readOnly = _useThemeProps.readOnly,
64
67
  restProps = _objectWithoutProperties(_useThemeProps, _excluded);
68
+ var intl = (0, _reactIntl.useIntl)();
65
69
  var _useState = (0, _react.useState)(false),
66
70
  _useState2 = _slicedToArray(_useState, 2),
67
71
  open = _useState2[0],
@@ -106,13 +110,15 @@ var DateTimeRangePicker = exports.DateTimeRangePicker = function DateTimeRangePi
106
110
  }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), restProps), {}, {
107
111
  slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root = slotProps.root) === null || _slotProps$root === void 0 ? void 0 : _slotProps$root.slotProps), {}, {
108
112
  textField: function textField(ownerState) {
109
- var _slotProps$root2, _textFieldProps$Input, _textFieldProps$Input2;
113
+ var _slotProps$root2, _slotProps$openPicker, _slotProps$openPicker2, _textFieldProps$Input, _textFieldProps$Input2;
110
114
  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), {}, {
111
115
  ownerState: ownerState
112
116
  });
113
117
  return _objectSpread(_objectSpread({
114
118
  fullWidth: fullWidth,
115
- required: required
119
+ required: required,
120
+ onBlur: onBlur,
121
+ onFocus: onFocus
116
122
  }, textFieldProps), {}, {
117
123
  InputProps: _objectSpread(_objectSpread({}, textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.InputProps), {}, {
118
124
  startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
@@ -123,6 +129,14 @@ var DateTimeRangePicker = exports.DateTimeRangePicker = function DateTimeRangePi
123
129
  return setOpen(true);
124
130
  }
125
131
  }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.openPickerAdornment), {}, {
132
+ slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker = slotProps.openPickerAdornment) === null || _slotProps$openPicker === void 0 ? void 0 : _slotProps$openPicker.slotProps), {}, {
133
+ openPickerButton: _objectSpread({
134
+ "aria-label": intl.formatMessage({
135
+ id: "comet.dateTimeRangePicker.openPicker",
136
+ defaultMessage: "Open date time range picker"
137
+ })
138
+ }, 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)
139
+ }),
126
140
  children: openPickerIcon
127
141
  })), textFieldProps === null || textFieldProps === void 0 || (_textFieldProps$Input = textFieldProps.InputProps) === null || _textFieldProps$Input === void 0 ? void 0 : _textFieldProps$Input.startAdornment]
128
142
  }),
@@ -3,11 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.MinMaxDate = exports.Disabled = exports.Default = exports.Clearable = void 0;
6
+ exports["default"] = exports.MinMaxDate = exports.Disabled = exports.Default = exports.CustomValidation = exports.Clearable = void 0;
7
7
  var _FinalForm = require("../../../FinalForm");
8
8
  var _FinalFormDebug = require("../../../form/FinalFormDebug");
9
9
  var _DateTimeRangePickerField = require("../DateTimeRangePickerField");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
+ 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 }; })(); }
12
+ 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); }
13
+ 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); }
14
+ 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); }); }; }
11
15
  var config = {
12
16
  component: _DateTimeRangePickerField.DateTimeRangePickerField,
13
17
  title: "components/dateTime/DateTimeRangePickerField"
@@ -165,4 +169,60 @@ var Disabled = exports.Disabled = {
165
169
  }
166
170
  });
167
171
  }
172
+ };
173
+
174
+ /**
175
+ * Before implementing custom validation, try to disable certain values using the props provided by MUI's DateTimeRangePicker, such as `shouldDisableDate`, `shouldDisableTime`, `disableFuture`, `disablePast`.
176
+ *
177
+ * Use this when:
178
+ * - You need to validate the date time range against a custom rule, which cannot be achieved using the props provided by MUI's DateTimeRangePicker
179
+ * - You want to provide a custom error message
180
+ * - You want to validate the date time range asynchronously
181
+ */
182
+ var CustomValidation = exports.CustomValidation = {
183
+ render: function render() {
184
+ var validateMaxThirtyDayRange = /*#__PURE__*/function () {
185
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(value) {
186
+ var millisecondsDifference, daysDifference;
187
+ return _regenerator().w(function (_context) {
188
+ while (1) switch (_context.n) {
189
+ case 0:
190
+ if (!(!(value !== null && value !== void 0 && value.start) || !(value !== null && value !== void 0 && value.end))) {
191
+ _context.n = 1;
192
+ break;
193
+ }
194
+ return _context.a(2, undefined);
195
+ case 1:
196
+ millisecondsDifference = value.end.getTime() - value.start.getTime();
197
+ daysDifference = millisecondsDifference / (1000 * 60 * 60 * 24);
198
+ return _context.a(2, daysDifference <= 30 ? undefined : "Please select a range no longer than 30 days");
199
+ }
200
+ }, _callee);
201
+ }));
202
+ return function validateMaxThirtyDayRange(_x) {
203
+ return _ref5.apply(this, arguments);
204
+ };
205
+ }();
206
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FinalForm.FinalForm, {
207
+ mode: "edit",
208
+ onSubmit: function onSubmit() {
209
+ // not handled
210
+ },
211
+ subscription: {
212
+ values: true
213
+ },
214
+ children: function children() {
215
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
216
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DateTimeRangePickerField.DateTimeRangePickerField, {
217
+ name: "value",
218
+ label: "Date Time Range Picker",
219
+ helperText: "The selected range must not exceed 30 days",
220
+ fullWidth: true,
221
+ variant: "horizontal",
222
+ validate: validateMaxThirtyDayRange
223
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FinalFormDebug.FinalFormDebug, {})]
224
+ });
225
+ }
226
+ });
227
+ }
168
228
  };
@@ -27,6 +27,8 @@ export type Future_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
  *
@@ -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;AAEjD,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,yBAAyB,GAAG,MAAM,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAErH,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;IAC1D,IAAI,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,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;;;;OAIG;IACH,WAAW,CAAC,EAAE;QACV,UAAU,CAAC,EAAE,SAAS,CAAC;KAC1B,CAAC;CACL,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC;AAqB7E;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,sBAAsB,4CAqFhE,CAAC;AAoBF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,mBAAmB;QACzB,0BAA0B,EAAE,sBAAsB,CAAC;KACtD;IAED,UAAU,uBAAuB;QAC7B,0BAA0B,EAAE,yBAAyB,CAAC;KACzD;IAED,UAAU,UAAU;QAChB,0BAA0B,CAAC,EAAE;YACzB,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAC1E,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC,CAAC;SAC7E,CAAC;KACL;CACJ"}
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,yBAAyB,GAAG,MAAM,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAErH,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;IAC1D,IAAI,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,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,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC;AAqB7E;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,sBAAsB,4CAoGhE,CAAC;AAoBF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,mBAAmB;QACzB,0BAA0B,EAAE,sBAAsB,CAAC;KACtD;IAED,UAAU,uBAAuB;QAC7B,0BAA0B,EAAE,yBAAyB,CAAC;KACzD;IAED,UAAU,UAAU;QAChB,0BAA0B,CAAC,EAAE;YACzB,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAC1E,cAAc,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC,CAAC;SAC7E,CAAC;KACL;CACJ"}
@@ -10,13 +10,14 @@ var _material = require("@mui/material");
10
10
  var _xDatePickers = require("@mui/x-date-pickers");
11
11
  var _dateFns = require("date-fns");
12
12
  var _react = require("react");
13
+ var _reactIntl = require("react-intl");
13
14
  var _ClearInputAdornment = require("../../common/ClearInputAdornment");
14
15
  var _OpenPickerAdornment = require("../../common/OpenPickerAdornment");
15
16
  var _ReadOnlyAdornment = require("../../common/ReadOnlyAdornment");
16
17
  var _createComponentSlot = require("../../helpers/createComponentSlot");
17
18
  var _jsxRuntime = require("react/jsx-runtime");
18
19
  var _templateObject;
19
- var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "readOnly"];
20
+ var _excluded = ["iconMapping", "fullWidth", "required", "slotProps", "disabled", "value", "onChange", "onBlur", "onFocus", "readOnly"];
20
21
  function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
21
22
  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; }
22
23
  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; }
@@ -68,12 +69,15 @@ var Future_TimePicker = exports.Future_TimePicker = function Future_TimePicker(i
68
69
  disabled = _useThemeProps.disabled,
69
70
  stringValue = _useThemeProps.value,
70
71
  _onChange = _useThemeProps.onChange,
72
+ onBlur = _useThemeProps.onBlur,
73
+ onFocus = _useThemeProps.onFocus,
71
74
  readOnly = _useThemeProps.readOnly,
72
75
  restProps = _objectWithoutProperties(_useThemeProps, _excluded);
73
76
  var _useState = (0, _react.useState)(false),
74
77
  _useState2 = _slicedToArray(_useState, 2),
75
78
  open = _useState2[0],
76
79
  setOpen = _useState2[1];
80
+ var intl = (0, _reactIntl.useIntl)();
77
81
  var dateValue = getDateFromTimeString(stringValue);
78
82
  var _iconMapping$openPick = iconMapping.openPicker,
79
83
  openPickerIcon = _iconMapping$openPick === void 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_adminIcons.Time, {
@@ -102,13 +106,15 @@ var Future_TimePicker = exports.Future_TimePicker = function Future_TimePicker(i
102
106
  }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), restProps), {}, {
103
107
  slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$root = slotProps.root) === null || _slotProps$root === void 0 ? void 0 : _slotProps$root.slotProps), {}, {
104
108
  textField: function textField(ownerState) {
105
- var _slotProps$root2, _textFieldProps$Input, _textFieldProps$Input2;
109
+ var _slotProps$root2, _slotProps$openPicker, _slotProps$openPicker2, _textFieldProps$Input, _textFieldProps$Input2;
106
110
  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), {}, {
107
111
  ownerState: ownerState
108
112
  });
109
113
  return _objectSpread(_objectSpread({
110
114
  fullWidth: fullWidth,
111
- required: required
115
+ required: required,
116
+ onBlur: onBlur,
117
+ onFocus: onFocus
112
118
  }, textFieldProps), {}, {
113
119
  InputProps: _objectSpread(_objectSpread({}, textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.InputProps), {}, {
114
120
  startAdornment: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
@@ -119,6 +125,14 @@ var Future_TimePicker = exports.Future_TimePicker = function Future_TimePicker(i
119
125
  return setOpen(true);
120
126
  }
121
127
  }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.openPickerAdornment), {}, {
128
+ slotProps: _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 || (_slotProps$openPicker = slotProps.openPickerAdornment) === null || _slotProps$openPicker === void 0 ? void 0 : _slotProps$openPicker.slotProps), {}, {
129
+ openPickerButton: _objectSpread({
130
+ "aria-label": intl.formatMessage({
131
+ id: "comet.timePicker.openPicker",
132
+ defaultMessage: "Open time picker"
133
+ })
134
+ }, 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)
135
+ }),
122
136
  children: openPickerIcon
123
137
  })), textFieldProps === null || textFieldProps === void 0 || (_textFieldProps$Input = textFieldProps.InputProps) === null || _textFieldProps$Input === void 0 ? void 0 : _textFieldProps$Input.startAdornment]
124
138
  }),
@@ -3,11 +3,21 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = exports.MinMaxTime = exports.Disabled = exports.Default = exports.Clearable = void 0;
6
+ exports["default"] = exports.MinMaxTime = exports.Disabled = exports.Default = exports.CustomValidation = exports.Clearable = void 0;
7
7
  var _FinalForm = require("../../../FinalForm");
8
8
  var _FinalFormDebug = require("../../../form/FinalFormDebug");
9
9
  var _TimePickerField = require("../TimePickerField");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
+ 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 }; })(); }
12
+ 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); }
13
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
14
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
15
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
16
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
17
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
18
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
19
+ 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); }
20
+ 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); }); }; }
11
21
  var config = {
12
22
  component: _TimePickerField.Future_TimePickerField,
13
23
  title: "components/dateTime/TimePickerField"
@@ -162,4 +172,63 @@ var Disabled = exports.Disabled = {
162
172
  }
163
173
  });
164
174
  }
175
+ };
176
+
177
+ /**
178
+ * Before implementing custom validation, try to disable certain values using the props provided by MUI's TimePicker, such as `shouldDisableTime`, `minTime`, `maxTime`.
179
+ *
180
+ * Use this when:
181
+ * - You need to validate the time against a custom rule, which cannot be achieved using the props provided by MUI's TimePicker
182
+ * - You want to provide a custom error message
183
+ * - You want to validate the time asynchronously
184
+ */
185
+ var CustomValidation = exports.CustomValidation = {
186
+ render: function render() {
187
+ var validateIsNotLunchBreak = /*#__PURE__*/function () {
188
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(value) {
189
+ var _value$split$map, _value$split$map2, hours, minutes, totalMinutes, lunchStartMinutes, lunchEndMinutes, isDuringLunchBreak;
190
+ return _regenerator().w(function (_context) {
191
+ while (1) switch (_context.n) {
192
+ case 0:
193
+ if (value) {
194
+ _context.n = 1;
195
+ break;
196
+ }
197
+ return _context.a(2, undefined);
198
+ case 1:
199
+ _value$split$map = value.split(":").map(Number), _value$split$map2 = _slicedToArray(_value$split$map, 2), hours = _value$split$map2[0], minutes = _value$split$map2[1];
200
+ totalMinutes = hours * 60 + minutes;
201
+ lunchStartMinutes = 12 * 60;
202
+ lunchEndMinutes = 13 * 60;
203
+ isDuringLunchBreak = totalMinutes >= lunchStartMinutes && totalMinutes < lunchEndMinutes;
204
+ return _context.a(2, isDuringLunchBreak ? "Please select a time outside of lunch break (12:00-13:00)" : undefined);
205
+ }
206
+ }, _callee);
207
+ }));
208
+ return function validateIsNotLunchBreak(_x) {
209
+ return _ref5.apply(this, arguments);
210
+ };
211
+ }();
212
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FinalForm.FinalForm, {
213
+ mode: "edit",
214
+ onSubmit: function onSubmit() {
215
+ // not handled
216
+ },
217
+ subscription: {
218
+ values: true
219
+ },
220
+ children: function children() {
221
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
222
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TimePickerField.Future_TimePickerField, {
223
+ name: "value",
224
+ label: "Time Picker",
225
+ helperText: "Lunch break (12:00-13:00) is not allowed",
226
+ fullWidth: true,
227
+ variant: "horizontal",
228
+ validate: validateIsNotLunchBreak
229
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_FinalFormDebug.FinalFormDebug, {})]
230
+ });
231
+ }
232
+ });
233
+ }
165
234
  };
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/utils/test-utils.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAC;AAmB1D,iBAAS,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,YAAY,CAE9F;AAED,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/utils/test-utils.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAU,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEvF,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,OAAO,CAAC;AAqB1D,iBAAS,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,YAAY,CAE9F;AAED,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,CAAC"}
@@ -8,6 +8,8 @@ var _exportNames = {
8
8
  };
9
9
  exports.render = customRender;
10
10
  var _material = require("@mui/material");
11
+ var _xDatePickers = require("@mui/x-date-pickers");
12
+ var _AdapterDateFnsV = require("@mui/x-date-pickers/AdapterDateFnsV3");
11
13
  var _react = require("@testing-library/react");
12
14
  Object.keys(_react).forEach(function (key) {
13
15
  if (key === "default" || key === "__esModule") return;
@@ -20,6 +22,7 @@ Object.keys(_react).forEach(function (key) {
20
22
  }
21
23
  });
22
24
  });
25
+ var _locale = require("date-fns/locale");
23
26
  var _reactIntl = require("react-intl");
24
27
  var _ThemeProvider = require("../mui/ThemeProvider");
25
28
  var _MemoryRouter = require("../router/MemoryRouter");
@@ -37,10 +40,14 @@ function DefaultWrapper(_ref) {
37
40
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIntl.IntlProvider, {
38
41
  locale: "en",
39
42
  messages: messages,
40
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ThemeProvider.MuiThemeProvider, {
41
- theme: theme,
42
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_MemoryRouter.RouterMemoryRouter, {
43
- children: children
43
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_xDatePickers.LocalizationProvider, {
44
+ adapterLocale: _locale.enUS,
45
+ dateAdapter: _AdapterDateFnsV.AdapterDateFns,
46
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ThemeProvider.MuiThemeProvider, {
47
+ theme: theme,
48
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_MemoryRouter.RouterMemoryRouter, {
49
+ children: children
50
+ })
44
51
  })
45
52
  })
46
53
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comet/admin",
3
- "version": "8.18.0",
3
+ "version": "8.19.0-canary-20260305114550",
4
4
  "description": "Comet Admin package",
5
5
  "repository": {
6
6
  "directory": "packages/admin/admin",
@@ -28,7 +28,7 @@
28
28
  "react-dropzone": "^14.3.8",
29
29
  "use-constant": "^2.0.0",
30
30
  "uuid": "^11.1.0",
31
- "@comet/admin-icons": "8.18.0"
31
+ "@comet/admin-icons": "8.19.0-canary-20260305114550"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@apollo/client": "^3.14.0",
@@ -82,9 +82,9 @@
82
82
  "typescript": "^5.9.3",
83
83
  "vite-tsconfig-paths": "^6.0.4",
84
84
  "vitest": "^4.0.16",
85
- "@comet/admin-babel-preset": "8.18.0",
86
- "@comet/eslint-config": "8.18.0",
87
- "@comet/eslint-plugin": "8.18.0"
85
+ "@comet/admin-babel-preset": "8.19.0-canary-20260305114550",
86
+ "@comet/eslint-config": "8.19.0-canary-20260305114550",
87
+ "@comet/eslint-plugin": "8.19.0-canary-20260305114550"
88
88
  },
89
89
  "peerDependencies": {
90
90
  "@apollo/client": "^3.7.0",