@dextinity/admin-date-time 2.0.0-canary-20260729062014

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 (71) hide show
  1. package/LICENSE +24 -0
  2. package/lib/DatePickerNavigation.d.ts +35 -0
  3. package/lib/DatePickerNavigation.d.ts.map +1 -0
  4. package/lib/DatePickerNavigation.js +167 -0
  5. package/lib/datePicker/DateField.d.ts +8 -0
  6. package/lib/datePicker/DateField.d.ts.map +1 -0
  7. package/lib/datePicker/DateField.js +20 -0
  8. package/lib/datePicker/DatePicker.d.ts +36 -0
  9. package/lib/datePicker/DatePicker.d.ts.map +1 -0
  10. package/lib/datePicker/DatePicker.js +93 -0
  11. package/lib/datePicker/DatePicker.slots.d.ts +28 -0
  12. package/lib/datePicker/DatePicker.slots.d.ts.map +1 -0
  13. package/lib/datePicker/DatePicker.slots.js +92 -0
  14. package/lib/datePicker/FinalFormDatePicker.d.ts +14 -0
  15. package/lib/datePicker/FinalFormDatePicker.d.ts.map +1 -0
  16. package/lib/datePicker/FinalFormDatePicker.js +24 -0
  17. package/lib/dateRangePicker/DateRangeField.d.ts +9 -0
  18. package/lib/dateRangePicker/DateRangeField.d.ts.map +1 -0
  19. package/lib/dateRangePicker/DateRangeField.js +20 -0
  20. package/lib/dateRangePicker/DateRangePicker.d.ts +44 -0
  21. package/lib/dateRangePicker/DateRangePicker.d.ts.map +1 -0
  22. package/lib/dateRangePicker/DateRangePicker.js +145 -0
  23. package/lib/dateRangePicker/DateRangePicker.slots.d.ts +28 -0
  24. package/lib/dateRangePicker/DateRangePicker.slots.d.ts.map +1 -0
  25. package/lib/dateRangePicker/DateRangePicker.slots.js +116 -0
  26. package/lib/dateRangePicker/FinalFormDateRangePicker.d.ts +14 -0
  27. package/lib/dateRangePicker/FinalFormDateRangePicker.d.ts.map +1 -0
  28. package/lib/dateRangePicker/FinalFormDateRangePicker.js +24 -0
  29. package/lib/dateTimePicker/DateTimeField.d.ts +8 -0
  30. package/lib/dateTimePicker/DateTimeField.d.ts.map +1 -0
  31. package/lib/dateTimePicker/DateTimeField.js +20 -0
  32. package/lib/dateTimePicker/DateTimePicker.d.ts +39 -0
  33. package/lib/dateTimePicker/DateTimePicker.d.ts.map +1 -0
  34. package/lib/dateTimePicker/DateTimePicker.js +149 -0
  35. package/lib/dateTimePicker/FinalFormDateTimePicker.d.ts +14 -0
  36. package/lib/dateTimePicker/FinalFormDateTimePicker.d.ts.map +1 -0
  37. package/lib/dateTimePicker/FinalFormDateTimePicker.js +24 -0
  38. package/lib/index.d.ts +22 -0
  39. package/lib/index.d.ts.map +1 -0
  40. package/lib/index.js +16 -0
  41. package/lib/timePicker/FinalFormTimePicker.d.ts +14 -0
  42. package/lib/timePicker/FinalFormTimePicker.d.ts.map +1 -0
  43. package/lib/timePicker/FinalFormTimePicker.js +24 -0
  44. package/lib/timePicker/TimeField.d.ts +8 -0
  45. package/lib/timePicker/TimeField.d.ts.map +1 -0
  46. package/lib/timePicker/TimeField.js +20 -0
  47. package/lib/timePicker/TimePicker.d.ts +41 -0
  48. package/lib/timePicker/TimePicker.d.ts.map +1 -0
  49. package/lib/timePicker/TimePicker.js +141 -0
  50. package/lib/timeRangePicker/FinalFormTimeRangePicker.d.ts +14 -0
  51. package/lib/timeRangePicker/FinalFormTimeRangePicker.d.ts.map +1 -0
  52. package/lib/timeRangePicker/FinalFormTimeRangePicker.js +24 -0
  53. package/lib/timeRangePicker/TimeRangeField.d.ts +9 -0
  54. package/lib/timeRangePicker/TimeRangeField.d.ts.map +1 -0
  55. package/lib/timeRangePicker/TimeRangeField.js +20 -0
  56. package/lib/timeRangePicker/TimeRangePicker.d.ts +49 -0
  57. package/lib/timeRangePicker/TimeRangePicker.d.ts.map +1 -0
  58. package/lib/timeRangePicker/TimeRangePicker.js +184 -0
  59. package/lib/utils/DateFnsLocaleProvider.d.ts +13 -0
  60. package/lib/utils/DateFnsLocaleProvider.d.ts.map +1 -0
  61. package/lib/utils/DateFnsLocaleProvider.js +18 -0
  62. package/lib/utils/datePickerHelpers.d.ts +4 -0
  63. package/lib/utils/datePickerHelpers.d.ts.map +1 -0
  64. package/lib/utils/datePickerHelpers.js +8 -0
  65. package/lib/utils/getReactDateRangeStyles.d.ts +4 -0
  66. package/lib/utils/getReactDateRangeStyles.d.ts.map +1 -0
  67. package/lib/utils/getReactDateRangeStyles.js +78 -0
  68. package/lib/utils/timePickerHelpers.d.ts +6 -0
  69. package/lib/utils/timePickerHelpers.d.ts.map +1 -0
  70. package/lib/utils/timePickerHelpers.js +74 -0
  71. package/package.json +83 -0
@@ -0,0 +1,49 @@
1
+ import { type ThemedComponentBaseProps } from "@dextinity/admin";
2
+ import { type ComponentsOverrides, FormControl, type Theme, Typography } from "@mui/material";
3
+ import { type ReactNode } from "react";
4
+ import { type FormatDateOptions } from "react-intl";
5
+ import { TimePicker as TimePickerBase } from "../timePicker/TimePicker";
6
+ export type TimeRangePickerClassKey = "root" | "startFormControl" | "endFormControl" | "timePicker" | "startTimePicker" | "endTimePicker" | "separator";
7
+ /**
8
+ * @deprecated Use `TimeRange` from `@dextinity/admin` instead.
9
+ */
10
+ export type TimeRange = {
11
+ start: string;
12
+ end: string;
13
+ };
14
+ export interface TimeRangePickerProps extends ThemedComponentBaseProps<{
15
+ root: "div";
16
+ startFormControl: typeof FormControl;
17
+ endFormControl: typeof FormControl;
18
+ startTimePicker: typeof TimePickerBase;
19
+ endTimePicker: typeof TimePickerBase;
20
+ separator: typeof Typography;
21
+ }> {
22
+ onChange?: (timeRange?: TimeRange) => void;
23
+ value?: TimeRange;
24
+ formatOptions?: FormatDateOptions;
25
+ minuteStep?: number;
26
+ min?: string;
27
+ max?: string;
28
+ required?: boolean;
29
+ separatorText?: ReactNode;
30
+ }
31
+ /**
32
+ * @deprecated Use `TimeRangePicker` from `@dextinity/admin` instead.
33
+ */
34
+ export declare const TimeRangePicker: (inProps: TimeRangePickerProps) => import("react/jsx-runtime").JSX.Element;
35
+ declare module "@mui/material/styles" {
36
+ interface ComponentNameToClassKey {
37
+ CometAdminLegacyTimeRangePicker: TimeRangePickerClassKey;
38
+ }
39
+ interface ComponentsPropsList {
40
+ CometAdminLegacyTimeRangePicker: TimeRangePickerProps;
41
+ }
42
+ interface Components {
43
+ CometAdminLegacyTimeRangePicker?: {
44
+ defaultProps?: Partial<ComponentsPropsList["CometAdminLegacyTimeRangePicker"]>;
45
+ styleOverrides?: ComponentsOverrides<Theme>["CometAdminLegacyTimeRangePicker"];
46
+ };
47
+ }
48
+ }
49
+ //# sourceMappingURL=TimeRangePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeRangePicker.d.ts","sourceRoot":"","sources":["../../src/timeRangePicker/TimeRangePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,KAAK,mBAAmB,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,EAAE,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AACjF,OAAO,EAAE,KAAK,iBAAiB,EAA6B,MAAM,YAAY,CAAC;AAE/E,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAExE,MAAM,MAAM,uBAAuB,GAC7B,MAAM,GACN,kBAAkB,GAClB,gBAAgB,GAChB,YAAY,GACZ,iBAAiB,GACjB,eAAe,GACf,WAAW,CAAC;AA4ClB;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,oBACb,SAAQ,wBAAwB,CAAC;IAC7B,IAAI,EAAE,KAAK,CAAC;IACZ,gBAAgB,EAAE,OAAO,WAAW,CAAC;IACrC,cAAc,EAAE,OAAO,WAAW,CAAC;IACnC,eAAe,EAAE,OAAO,cAAc,CAAC;IACvC,aAAa,EAAE,OAAO,cAAc,CAAC;IACrC,SAAS,EAAE,OAAO,UAAU,CAAC;CAChC,CAAC;IACF,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAC3C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC7B;AAID;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,oBAAoB,4CA6F5D,CAAC;AAEF,OAAO,QAAQ,sBAAsB,CAAC;IAClC,UAAU,uBAAuB;QAC7B,+BAA+B,EAAE,uBAAuB,CAAC;KAC5D;IAED,UAAU,mBAAmB;QACzB,+BAA+B,EAAE,oBAAoB,CAAC;KACzD;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"}
@@ -0,0 +1,184 @@
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
+ var _excluded = ["onChange", "value", "separatorText", "className", "sx", "required", "slotProps"];
3
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
4
+ 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; }
5
+ 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; }
6
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
7
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
8
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
10
+ 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."); }
11
+ 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; } }
12
+ 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; }
13
+ 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; } }
14
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
15
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
16
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
17
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
18
+ import { createComponentSlot } from "@dextinity/admin";
19
+ import { FormControl, Typography } from "@mui/material";
20
+ import { css, useThemeProps } from "@mui/material/styles";
21
+ import { useCallback, useEffect, useRef, useState } from "react";
22
+ import { FormattedMessage, useIntl } from "react-intl";
23
+ import { TimePicker as TimePickerBase } from "../timePicker/TimePicker";
24
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
+ var Root = createComponentSlot("div")({
26
+ componentName: "LegacyTimeRangePicker",
27
+ slotName: "root"
28
+ })(css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n"]))));
29
+ var StartFormControl = createComponentSlot(FormControl)({
30
+ componentName: "LegacyTimeRangePicker",
31
+ slotName: "startFormControl"
32
+ })(css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n flex-grow: 1;\n"]))));
33
+ var EndFormControl = createComponentSlot(FormControl)({
34
+ componentName: "LegacyTimeRangePicker",
35
+ slotName: "endFormControl"
36
+ })(css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n flex-grow: 1;\n"]))));
37
+ var StartTimePicker = createComponentSlot(TimePickerBase)({
38
+ componentName: "LegacyTimeRangePicker",
39
+ slotName: "startTimePicker"
40
+ })();
41
+ var EndTimePicker = createComponentSlot(TimePickerBase)({
42
+ componentName: "LegacyTimeRangePicker",
43
+ slotName: "endTimePicker"
44
+ })();
45
+ var Separator = createComponentSlot(Typography)({
46
+ componentName: "LegacyTimeRangePicker",
47
+ slotName: "separator"
48
+ })(function (_ref) {
49
+ var theme = _ref.theme;
50
+ return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n margin-left: ", ";\n margin-right: ", ";\n "])), theme.spacing(2), theme.spacing(2));
51
+ });
52
+
53
+ /**
54
+ * @deprecated Use `TimeRange` from `@dextinity/admin` instead.
55
+ */
56
+
57
+ /**
58
+ * @deprecated Use `TimeRangePicker` from `@dextinity/admin` instead.
59
+ */
60
+ export var TimeRangePicker = function TimeRangePicker(inProps) {
61
+ var _useThemeProps = useThemeProps({
62
+ props: inProps,
63
+ name: "CometAdminLegacyTimeRangePicker"
64
+ }),
65
+ onChange = _useThemeProps.onChange,
66
+ value = _useThemeProps.value,
67
+ _useThemeProps$separa = _useThemeProps.separatorText,
68
+ separatorText = _useThemeProps$separa === void 0 ? /*#__PURE__*/_jsx(FormattedMessage, {
69
+ id: "comet.dateTime.fromToSeparatorText",
70
+ defaultMessage: "to"
71
+ }) : _useThemeProps$separa,
72
+ className = _useThemeProps.className,
73
+ sx = _useThemeProps.sx,
74
+ required = _useThemeProps.required,
75
+ slotProps = _useThemeProps.slotProps,
76
+ propsForBothTimePickers = _objectWithoutProperties(_useThemeProps, _excluded);
77
+ var intl = useIntl();
78
+ var _useState = useState(value === null || value === void 0 ? void 0 : value.start),
79
+ _useState2 = _slicedToArray(_useState, 2),
80
+ startTime = _useState2[0],
81
+ setStartTime = _useState2[1];
82
+ var _useState3 = useState(value === null || value === void 0 ? void 0 : value.end),
83
+ _useState4 = _slicedToArray(_useState3, 2),
84
+ endTime = _useState4[0],
85
+ setEndTime = _useState4[1];
86
+ var _useState5 = useState(false),
87
+ _useState6 = _slicedToArray(_useState5, 2),
88
+ startPickerIsOpen = _useState6[0],
89
+ setStartPickerIsOpen = _useState6[1];
90
+ var _useState7 = useState(false),
91
+ _useState8 = _slicedToArray(_useState7, 2),
92
+ endPickerIsOpen = _useState8[0],
93
+ setEndPickerIsOpen = _useState8[1];
94
+ var startPickerRef = useRef(null);
95
+ var endPickerRef = useRef(null);
96
+ var onChangeTimeValue = useCallback(function (newTimeValue, type) {
97
+ if (newTimeValue === undefined) {
98
+ onChange === null || onChange === void 0 || onChange(undefined);
99
+ setStartTime(undefined);
100
+ setEndTime(undefined);
101
+ } else if (type === "start") {
102
+ setStartTime(newTimeValue);
103
+ if (endTime) {
104
+ onChange === null || onChange === void 0 || onChange({
105
+ start: newTimeValue,
106
+ end: endTime
107
+ });
108
+ } else {
109
+ var _endPickerRef$current;
110
+ (_endPickerRef$current = endPickerRef.current) === null || _endPickerRef$current === void 0 || _endPickerRef$current.focus();
111
+ }
112
+ } else if (type === "end") {
113
+ setEndTime(newTimeValue);
114
+ if (startTime) {
115
+ onChange === null || onChange === void 0 || onChange({
116
+ start: startTime,
117
+ end: newTimeValue
118
+ });
119
+ } else {
120
+ var _startPickerRef$curre;
121
+ (_startPickerRef$curre = startPickerRef.current) === null || _startPickerRef$curre === void 0 || _startPickerRef$curre.focus();
122
+ }
123
+ }
124
+ }, [startTime, endTime, onChange]);
125
+
126
+ // Setting both values the same when closing the pickers and one value is undefined needs to be handled inside `useEffect`, as `setStartTime`/`setEndTime` might not be complete when calling `onClosePopper`.
127
+ useEffect(function () {
128
+ if (!startPickerIsOpen && !endPickerIsOpen) {
129
+ if (startTime !== undefined && endTime === undefined) {
130
+ onChangeTimeValue(startTime, "end");
131
+ } else if (startTime === undefined && endTime !== undefined) {
132
+ onChangeTimeValue(endTime, "start");
133
+ }
134
+ }
135
+ }, [onChangeTimeValue, startPickerIsOpen, endPickerIsOpen, startTime, endTime]);
136
+ return /*#__PURE__*/_jsxs(Root, _objectSpread(_objectSpread({
137
+ sx: sx,
138
+ className: className
139
+ }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), {}, {
140
+ children: [/*#__PURE__*/_jsx(StartFormControl, _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.startFormControl), {}, {
141
+ children: /*#__PURE__*/_jsx(StartTimePicker, _objectSpread(_objectSpread({
142
+ inputRef: startPickerRef,
143
+ value: startTime,
144
+ placeholder: intl.formatMessage({
145
+ id: "comet.timeRangePicker.start",
146
+ defaultMessage: "Start"
147
+ }),
148
+ onChange: function onChange(time) {
149
+ return onChangeTimeValue(time, "start");
150
+ },
151
+ onOpenPopper: function onOpenPopper() {
152
+ return setStartPickerIsOpen(true);
153
+ },
154
+ onClosePopper: function onClosePopper() {
155
+ return setStartPickerIsOpen(false);
156
+ },
157
+ fullWidth: true,
158
+ required: required
159
+ }, propsForBothTimePickers), slotProps === null || slotProps === void 0 ? void 0 : slotProps.startTimePicker))
160
+ })), /*#__PURE__*/_jsx(Separator, _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.separator), {}, {
161
+ children: separatorText
162
+ })), /*#__PURE__*/_jsx(EndFormControl, _objectSpread(_objectSpread({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.endFormControl), {}, {
163
+ children: /*#__PURE__*/_jsx(EndTimePicker, _objectSpread(_objectSpread({
164
+ inputRef: endPickerRef,
165
+ value: endTime,
166
+ placeholder: intl.formatMessage({
167
+ id: "comet.timeRangePicker.end",
168
+ defaultMessage: "End"
169
+ }),
170
+ onChange: function onChange(time) {
171
+ return onChangeTimeValue(time, "end");
172
+ },
173
+ onOpenPopper: function onOpenPopper() {
174
+ return setEndPickerIsOpen(true);
175
+ },
176
+ onClosePopper: function onClosePopper() {
177
+ return setEndPickerIsOpen(false);
178
+ },
179
+ fullWidth: true,
180
+ required: required
181
+ }, propsForBothTimePickers), slotProps === null || slotProps === void 0 ? void 0 : slotProps.endTimePicker))
182
+ }))]
183
+ }));
184
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @deprecated The `@dextinity/admin-date-time` package is deprecated. Provide the date-fns locale via MUI X's `LocalizationProvider` (`adapterLocale`) from `@mui/x-date-pickers` instead.
3
+ */
4
+ export declare const DateFnsLocaleContext: import("react").Context<globalThis.Locale | undefined>;
5
+ /**
6
+ * @deprecated The `@dextinity/admin-date-time` package is deprecated. Provide the date-fns locale via MUI X's `LocalizationProvider` (`adapterLocale`) from `@mui/x-date-pickers` instead.
7
+ */
8
+ export declare const DateFnsLocaleProvider: import("react").Provider<globalThis.Locale | undefined>;
9
+ /**
10
+ * @deprecated The `@dextinity/admin-date-time` package is deprecated. Provide the date-fns locale via MUI X's `LocalizationProvider` (`adapterLocale`) from `@mui/x-date-pickers` instead.
11
+ */
12
+ export declare function useDateFnsLocale(): globalThis.Locale | undefined;
13
+ //# sourceMappingURL=DateFnsLocaleProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFnsLocaleProvider.d.ts","sourceRoot":"","sources":["../../src/utils/DateFnsLocaleProvider.tsx"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,oBAAoB,wDAA+C,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,qBAAqB,yDAAgC,CAAC;AAEnE;;GAEG;AACH,wBAAgB,gBAAgB,kCAE/B"}
@@ -0,0 +1,18 @@
1
+ import { createContext, useContext } from "react";
2
+
3
+ /**
4
+ * @deprecated The `@dextinity/admin-date-time` package is deprecated. Provide the date-fns locale via MUI X's `LocalizationProvider` (`adapterLocale`) from `@mui/x-date-pickers` instead.
5
+ */
6
+ export var DateFnsLocaleContext = /*#__PURE__*/createContext(undefined);
7
+
8
+ /**
9
+ * @deprecated The `@dextinity/admin-date-time` package is deprecated. Provide the date-fns locale via MUI X's `LocalizationProvider` (`adapterLocale`) from `@mui/x-date-pickers` instead.
10
+ */
11
+ export var DateFnsLocaleProvider = DateFnsLocaleContext.Provider;
12
+
13
+ /**
14
+ * @deprecated The `@dextinity/admin-date-time` package is deprecated. Provide the date-fns locale via MUI X's `LocalizationProvider` (`adapterLocale`) from `@mui/x-date-pickers` instead.
15
+ */
16
+ export function useDateFnsLocale() {
17
+ return useContext(DateFnsLocaleContext);
18
+ }
@@ -0,0 +1,4 @@
1
+ export declare const defaultMinDate: Date;
2
+ export declare const defaultMaxDate: Date;
3
+ export declare const getIsoDateString: (date: Date) => string;
4
+ //# sourceMappingURL=datePickerHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datePickerHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/datePickerHelpers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,MAAa,CAAC;AAGzC,eAAO,MAAM,cAAc,MAAa,CAAC;AAGzC,eAAO,MAAM,gBAAgB,GAAI,MAAM,IAAI,WAE1C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { format } from "date-fns";
2
+ export var defaultMinDate = new Date();
3
+ defaultMinDate.setFullYear(defaultMinDate.getFullYear() - 120);
4
+ export var defaultMaxDate = new Date();
5
+ defaultMaxDate.setFullYear(defaultMaxDate.getFullYear() + 40);
6
+ export var getIsoDateString = function getIsoDateString(date) {
7
+ return format(date, "yyyy-MM-dd");
8
+ };
@@ -0,0 +1,4 @@
1
+ import type { Theme } from "@mui/material";
2
+ import type { CSSProperties } from "@mui/material/styles";
3
+ export declare const getReactDateRangeStyles: ({ palette, typography }: Theme) => CSSProperties;
4
+ //# sourceMappingURL=getReactDateRangeStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getReactDateRangeStyles.d.ts","sourceRoot":"","sources":["../../src/utils/getReactDateRangeStyles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,uBAAuB,GAAI,yBAAyB,KAAK,KAAG,aA+EvE,CAAC"}
@@ -0,0 +1,78 @@
1
+ export var getReactDateRangeStyles = function getReactDateRangeStyles(_ref) {
2
+ var palette = _ref.palette,
3
+ typography = _ref.typography;
4
+ return {
5
+ backgroundColor: "transparent",
6
+ "&.rdrCalendarWrapper:not(.rdrDateRangeWrapper) .rdrDayHovered .rdrDayNumber:after": {
7
+ display: "none"
8
+ },
9
+ "& .rdrMonth": {
10
+ paddingLeft: 8,
11
+ paddingRight: 8,
12
+ paddingBottom: 8,
13
+ "&:not(:last-child)": {
14
+ borderRight: "1px solid ".concat(palette.grey[50])
15
+ },
16
+ "& .rdrMonthName": {
17
+ textAlign: "center",
18
+ fontFamily: typography.fontFamily,
19
+ fontSize: 12,
20
+ lineHeight: "16px",
21
+ fontWeight: typography.fontWeightBold,
22
+ color: palette.grey[300],
23
+ marginTop: 16,
24
+ padding: 0
25
+ }
26
+ },
27
+ "& .rdrWeekDay": {
28
+ fontSize: typography.body2.fontSize,
29
+ lineHeight: typography.body2.lineHeight,
30
+ fontWeight: typography.fontWeightBold,
31
+ color: palette.grey[600],
32
+ marginTop: 16
33
+ },
34
+ "& .rdrDay": {
35
+ height: 36,
36
+ marginBottom: 2,
37
+ "&.rdrDayPassive .rdrDayNumber span": {
38
+ color: palette.grey[100],
39
+ "&:after": {
40
+ backgroundColor: "currentColor"
41
+ }
42
+ },
43
+ "& .rdrDayNumber": {
44
+ zIndex: 1,
45
+ fontFamily: typography.fontFamily,
46
+ fontSize: typography.body2.fontSize,
47
+ lineHeight: typography.body2.lineHeight,
48
+ fontWeight: typography.fontWeightRegular,
49
+ "& span:after": {
50
+ width: 12,
51
+ bottom: 1,
52
+ backgroundColor: palette.primary.main
53
+ }
54
+ },
55
+ "&.rdrDayToday": {
56
+ "& .rdrDayNumber span": {
57
+ fontWeight: typography.fontWeightRegular
58
+ }
59
+ },
60
+ "&.rdrDayPassive": {
61
+ "& .rdrDayStartPreview, & .rdrDayEndPreview": {
62
+ "& ~ .rdrDayNumber span": {
63
+ color: palette.grey[100]
64
+ }
65
+ }
66
+ },
67
+ "& .rdrDayStartPreview, & .rdrDayEndPreview": {
68
+ backgroundColor: palette.grey[50],
69
+ top: 0,
70
+ bottom: 0,
71
+ border: "none",
72
+ "& ~ .rdrDayNumber span": {
73
+ color: palette.text.primary
74
+ }
75
+ }
76
+ }
77
+ };
78
+ };
@@ -0,0 +1,6 @@
1
+ export declare const getDateRangeListByMinuteStep: (startTimeValue: string, endTimeValue: string, minuteStep: number) => Date[];
2
+ export declare const getTimeStringFromDate: (date: Date) => string;
3
+ export declare const getDateWithNewTime: (date: Date, time: string) => Date;
4
+ export declare const getDateFromTimeValue: (timeValue: string) => Date;
5
+ export declare const getClosestDateToDate: (dateList: Date[], target?: Date) => Date;
6
+ //# sourceMappingURL=timePickerHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timePickerHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/timePickerHelpers.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,4BAA4B,GAAI,gBAAgB,MAAM,EAAE,cAAc,MAAM,EAAE,YAAY,MAAM,KAAG,IAAI,EASnH,CAAC;AAoBF,eAAO,MAAM,qBAAqB,GAAI,MAAM,IAAI,KAAG,MAA+B,CAAC;AAEnF,eAAO,MAAM,kBAAkB,GAAI,MAAM,IAAI,EAAE,MAAM,MAAM,KAAG,IAQ7D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,KAAG,IAOxD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,UAAU,IAAI,EAAE,EAAE,SAAQ,IAAiB,KAAG,IAalF,CAAC"}
@@ -0,0 +1,74 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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; } }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
7
+ import { eachMinuteOfInterval, format } from "date-fns";
8
+ var today = new Date();
9
+ export var getDateRangeListByMinuteStep = function getDateRangeListByMinuteStep(startTimeValue, endTimeValue, minuteStep) {
10
+ var startDate = getDateFromTimeValue(startTimeValue);
11
+ var endDate = getDateFromTimeValue(endTimeValue);
12
+ if (endDate < startDate) {
13
+ throw new Error("End date must be bigger than start date.");
14
+ }
15
+ return eachMinuteOfInterval({
16
+ start: startDate,
17
+ end: endDate
18
+ }, {
19
+ step: minuteStep
20
+ });
21
+ };
22
+ var timeValueIsValid = function timeValueIsValid(timeValue) {
23
+ if (!/^([0-9]?[0-9]):[0-9]?[0-9]$/.test(timeValue)) {
24
+ return false;
25
+ }
26
+ var _timeValue$split = timeValue.split(":"),
27
+ _timeValue$split2 = _slicedToArray(_timeValue$split, 2),
28
+ hour = _timeValue$split2[0],
29
+ minute = _timeValue$split2[1];
30
+ if (Number(hour) > 23) {
31
+ return false;
32
+ }
33
+ if (Number(minute) > 59) {
34
+ return false;
35
+ }
36
+ return true;
37
+ };
38
+ export var getTimeStringFromDate = function getTimeStringFromDate(date) {
39
+ return format(date, "HH:mm");
40
+ };
41
+ export var getDateWithNewTime = function getDateWithNewTime(date, time) {
42
+ var _time$split = time.split(":"),
43
+ _time$split2 = _slicedToArray(_time$split, 2),
44
+ hours = _time$split2[0],
45
+ minutes = _time$split2[1];
46
+ var newDate = new Date(date);
47
+ newDate.setHours(parseInt(hours));
48
+ newDate.setMinutes(parseInt(minutes));
49
+ newDate.setSeconds(0);
50
+ newDate.setMilliseconds(0);
51
+ return newDate;
52
+ };
53
+ export var getDateFromTimeValue = function getDateFromTimeValue(timeValue) {
54
+ if (!timeValueIsValid(timeValue)) {
55
+ throw new Error("Time value ".concat(timeValue, " is not valid, must be in format HH:mm."));
56
+ }
57
+ var _timeValue$split3 = timeValue.split(":"),
58
+ _timeValue$split4 = _slicedToArray(_timeValue$split3, 2),
59
+ hour = _timeValue$split4[0],
60
+ minute = _timeValue$split4[1];
61
+ return new Date(today.getFullYear(), today.getMonth(), today.getDate(), Number(hour), Number(minute));
62
+ };
63
+ export var getClosestDateToDate = function getClosestDateToDate(dateList) {
64
+ var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();
65
+ var closestDate = dateList[0];
66
+ var targetTime = target.getTime();
67
+ dateList.forEach(function (date) {
68
+ var currentItemTime = date.getTime();
69
+ if (Math.abs(targetTime - currentItemTime) < Math.abs(targetTime - closestDate.getTime())) {
70
+ closestDate = date;
71
+ }
72
+ });
73
+ return closestDate;
74
+ };
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "@dextinity/admin-date-time",
3
+ "version": "2.0.0-canary-20260729062014",
4
+ "description": "Comet Admin Date Time component",
5
+ "repository": {
6
+ "directory": "packages/admin/admin-date-time",
7
+ "type": "git",
8
+ "url": "https://github.com/vivid-planet/comet"
9
+ },
10
+ "license": "BSD-2-Clause",
11
+ "sideEffects": [
12
+ "./lib/datePicker/DatePicker.js",
13
+ "./lib/dateRangePicker/DateRangePicker.js"
14
+ ],
15
+ "type": "module",
16
+ "exports": {
17
+ ".": {
18
+ "import": "./lib/index.js",
19
+ "types": "./lib/index.d.ts"
20
+ }
21
+ },
22
+ "files": [
23
+ "lib"
24
+ ],
25
+ "dependencies": {
26
+ "@mui/utils": "^7.3.11",
27
+ "date-fns": "^4.4.0",
28
+ "react-date-range": "^2.0.1",
29
+ "@dextinity/admin": "2.0.0-canary-20260729062014",
30
+ "@dextinity/admin-icons": "2.0.0-canary-20260729062014"
31
+ },
32
+ "devDependencies": {
33
+ "@babel/cli": "^7.29.7",
34
+ "@babel/core": "^7.29.7",
35
+ "@mui/material": "^7.3.11",
36
+ "@types/react": "^19.2.15",
37
+ "@types/react-date-range": "^1.4.10",
38
+ "@types/react-dom": "^19.2.3",
39
+ "eslint": "^9.39.4",
40
+ "final-form": "^4.20.10",
41
+ "npm-run-all2": "^8.0.4",
42
+ "prettier": "^3.6.2",
43
+ "react": "^19.2.6",
44
+ "react-dom": "^19.2.6",
45
+ "react-final-form": "^6.5.9",
46
+ "react-intl": "^7.1.11",
47
+ "rimraf": "^6.1.2",
48
+ "typescript": "^5.9.3",
49
+ "@dextinity/admin-babel-preset": "2.0.0-canary-20260729062014",
50
+ "@dextinity/eslint-config": "2.0.0-canary-20260729062014"
51
+ },
52
+ "peerDependencies": {
53
+ "@mui/material": "^7.0.0",
54
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
55
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0",
56
+ "react-final-form": "^6.3.1",
57
+ "react-intl": "^5.0.0 || ^6.0.0 || ^7.0.0"
58
+ },
59
+ "engines": {
60
+ "node": ">=22.0.0"
61
+ },
62
+ "publishConfig": {
63
+ "access": "public",
64
+ "registry": "https://registry.npmjs.org"
65
+ },
66
+ "scripts": {
67
+ "build": "pnpm run clean && run-p build:babel build:types",
68
+ "build:babel": "pnpm exec babel ./src -x \".ts,.tsx\" -d lib",
69
+ "build:types": "tsc --project ./tsconfig.json --emitDeclarationOnly",
70
+ "clean": "rimraf lib",
71
+ "lint": "run-p lint:prettier lint:eslint lint:tsc",
72
+ "lint:ci": "pnpm run lint",
73
+ "lint:eslint": "eslint --max-warnings 0 src/ '**/*.json' --no-warn-ignored",
74
+ "lint:fix": "run-p lint:fix:eslint lint:fix:prettier",
75
+ "lint:fix:eslint": "pnpm run lint:eslint --fix",
76
+ "lint:fix:prettier": "pnpm run lint:prettier --write",
77
+ "lint:prettier": "pnpm exec prettier --check '*.{ts,js,json,md,yml,yaml}'",
78
+ "lint:tsc": "tsc --noEmit",
79
+ "start": "run-p start:babel start:types",
80
+ "start:babel": "pnpm exec babel ./src -x \".ts,.tsx\" -d lib -w",
81
+ "start:types": "tsc --project ./tsconfig.json --emitDeclarationOnly --watch --preserveWatchOutput"
82
+ }
83
+ }