@react-fabric/date 1.0.0-beta.3 → 1.0.0-beta.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/display/DateDisplay.js +5 -1
- package/dist/cjs/superdate/EventPanel.js +15 -3
- package/dist/cjs/superdate/Superdate.js +10 -2
- package/dist/cjs/utils/dateUtil.js +3 -3
- package/dist/esm/display/DateDisplay.js +5 -1
- package/dist/esm/superdate/EventPanel.js +16 -4
- package/dist/esm/superdate/Superdate.js +10 -2
- package/dist/esm/utils/dateUtil.js +3 -3
- package/dist/types/display/DateDisplay.d.ts +2 -1
- package/dist/types/superdate/EventPanel.d.ts +1 -1
- package/dist/types/superdate/Superdate.d.ts +2 -2
- package/dist/types/types/index.d.ts +6 -1
- package/dist/types/utils/dateUtil.d.ts +1 -1
- package/package.json +7 -7
- package/src/display/DateDisplay.tsx +5 -1
- package/src/superdate/EventPanel.tsx +21 -3
- package/src/superdate/Superdate.tsx +13 -1
- package/src/types/index.ts +6 -1
- package/src/utils/dateUtil.ts +4 -6
|
@@ -6,7 +6,7 @@ var core = require('@react-fabric/core');
|
|
|
6
6
|
var dateUtil = require('../utils/dateUtil.js');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
8
|
|
|
9
|
-
var _excluded = ["date", "className", "format", "children"];
|
|
9
|
+
var _excluded = ["date", "className", "format", "children", "showAlternateDate"];
|
|
10
10
|
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; }
|
|
11
11
|
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; }
|
|
12
12
|
var DateDisplay = function DateDisplay(_ref) {
|
|
@@ -15,11 +15,13 @@ var DateDisplay = function DateDisplay(_ref) {
|
|
|
15
15
|
_ref$format = _ref.format,
|
|
16
16
|
format = _ref$format === void 0 ? "eee, PPpp" : _ref$format,
|
|
17
17
|
children = _ref.children,
|
|
18
|
+
showAlternateDate = _ref.showAlternateDate,
|
|
18
19
|
aria = _objectWithoutProperties(_ref, _excluded);
|
|
19
20
|
var _useGlobals = core.useGlobals(),
|
|
20
21
|
currentCalendar = _useGlobals.currentCalendar,
|
|
21
22
|
currentLocale = _useGlobals.currentLocale;
|
|
22
23
|
var dtLabel = /*#__PURE__*/jsxRuntime.jsx(core.Tooltip, {
|
|
24
|
+
disabled: !showAlternateDate,
|
|
23
25
|
content: dateUtil.DateUtil.format(date, format, currentLocale, currentCalendar !== "hijri"),
|
|
24
26
|
children: /*#__PURE__*/jsxRuntime.jsx("span", _objectSpread(_objectSpread({
|
|
25
27
|
className: className
|
|
@@ -28,6 +30,8 @@ var DateDisplay = function DateDisplay(_ref) {
|
|
|
28
30
|
}))
|
|
29
31
|
});
|
|
30
32
|
return children ? /*#__PURE__*/jsxRuntime.jsxs(core.Dropdown, {
|
|
33
|
+
showArrow: true,
|
|
34
|
+
closeOnClick: true,
|
|
31
35
|
children: [dtLabel, children]
|
|
32
36
|
}) : dtLabel;
|
|
33
37
|
};
|
|
@@ -19,8 +19,18 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
19
19
|
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; }
|
|
20
20
|
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; }
|
|
21
21
|
var makeList = function makeList(year) {
|
|
22
|
-
var
|
|
22
|
+
var recurring = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
23
|
+
var predefined = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
23
24
|
var list = _toConsumableArray(predefined);
|
|
25
|
+
recurring.forEach(function (evt) {
|
|
26
|
+
return list.push({
|
|
27
|
+
label: evt.label,
|
|
28
|
+
hijri: evt.hijri,
|
|
29
|
+
icon: evt.icon,
|
|
30
|
+
start: dateFns.setYear(dateUtil.DateUtil.parseDate(evt.start), year),
|
|
31
|
+
end: dateFns.setYear(dateUtil.DateUtil.parseDate(evt.end), year)
|
|
32
|
+
});
|
|
33
|
+
});
|
|
24
34
|
list.push({
|
|
25
35
|
label: "superdate:event.newYear",
|
|
26
36
|
start: dateFns.startOfDay(new Date("".concat(year - 1, "-12-31"))),
|
|
@@ -51,7 +61,9 @@ var EventPanel = function EventPanel(_ref) {
|
|
|
51
61
|
var isHijri = _ref.isHijri,
|
|
52
62
|
onChange = _ref.onChange,
|
|
53
63
|
_ref$events = _ref.events,
|
|
54
|
-
events = _ref$events === void 0 ? utilities.EMPTY_ARRAY : _ref$events
|
|
64
|
+
events = _ref$events === void 0 ? utilities.EMPTY_ARRAY : _ref$events,
|
|
65
|
+
_ref$recurringEvents = _ref.recurringEvents,
|
|
66
|
+
recurringEvents = _ref$recurringEvents === void 0 ? utilities.EMPTY_ARRAY : _ref$recurringEvents;
|
|
55
67
|
var _useTranslation = reactI18next.useTranslation(),
|
|
56
68
|
t = _useTranslation.t;
|
|
57
69
|
var _useState = react.useState({}),
|
|
@@ -77,7 +89,7 @@ var EventPanel = function EventPanel(_ref) {
|
|
|
77
89
|
if (resetList) {
|
|
78
90
|
var _predefined$year;
|
|
79
91
|
var year = state.pageDate.getFullYear();
|
|
80
|
-
state.events = makeList(year, (_predefined$year = predefined[year]) !== null && _predefined$year !== void 0 ? _predefined$year : []);
|
|
92
|
+
state.events = makeList(year, recurringEvents !== null && recurringEvents !== void 0 ? recurringEvents : [], (_predefined$year = predefined[year]) !== null && _predefined$year !== void 0 ? _predefined$year : []);
|
|
81
93
|
}
|
|
82
94
|
return _objectSpread({}, state);
|
|
83
95
|
}, {
|
|
@@ -16,13 +16,14 @@ var RelativePanel = require('./RelativePanel.js');
|
|
|
16
16
|
var SuperDate_module = require('./SuperDate.module.css');
|
|
17
17
|
var jsxRuntime = require('react/jsx-runtime');
|
|
18
18
|
|
|
19
|
-
var _excluded = ["as", "color", "variant", "onChange", "value"];
|
|
19
|
+
var _excluded = ["as", "color", "variant", "disabled", "onChange", "value", "data-test-value", "data-testid"];
|
|
20
20
|
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; }
|
|
21
21
|
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; }
|
|
22
22
|
var SuperDateTabs = function SuperDateTabs(_ref) {
|
|
23
23
|
var events = _ref.events,
|
|
24
24
|
value = _ref.value,
|
|
25
25
|
presets = _ref.presets,
|
|
26
|
+
recurringEvents = _ref.recurringEvents,
|
|
26
27
|
onChange = _ref.onChange;
|
|
27
28
|
var _useTranslation = reactI18next.useTranslation("superdate"),
|
|
28
29
|
t = _useTranslation.t;
|
|
@@ -97,7 +98,8 @@ var SuperDateTabs = function SuperDateTabs(_ref) {
|
|
|
97
98
|
children: /*#__PURE__*/jsxRuntime.jsx(EventPanel.EventPanel, {
|
|
98
99
|
isHijri: isHijri,
|
|
99
100
|
onChange: handleChange,
|
|
100
|
-
events: events
|
|
101
|
+
events: events,
|
|
102
|
+
recurringEvents: recurringEvents
|
|
101
103
|
})
|
|
102
104
|
})]
|
|
103
105
|
})
|
|
@@ -125,8 +127,11 @@ var SuperDate = function SuperDate(_ref4) {
|
|
|
125
127
|
_ref4$color = _ref4.color,
|
|
126
128
|
color = _ref4$color === void 0 ? "primary" : _ref4$color,
|
|
127
129
|
variant = _ref4.variant,
|
|
130
|
+
disabled = _ref4.disabled,
|
|
128
131
|
onChange = _ref4.onChange,
|
|
129
132
|
value = _ref4.value,
|
|
133
|
+
testValue = _ref4["data-test-value"],
|
|
134
|
+
testId = _ref4["data-testid"],
|
|
130
135
|
props = _objectWithoutProperties(_ref4, _excluded);
|
|
131
136
|
var _useGlobals2 = core.useGlobals(),
|
|
132
137
|
currentCalendar = _useGlobals2.currentCalendar,
|
|
@@ -155,7 +160,10 @@ var SuperDate = function SuperDate(_ref4) {
|
|
|
155
160
|
children: /*#__PURE__*/jsxRuntime.jsx(E, {
|
|
156
161
|
icon: core.CoreIcons.clock,
|
|
157
162
|
color: color,
|
|
163
|
+
disabled: disabled,
|
|
158
164
|
variant: variant,
|
|
165
|
+
"data-test-value": testValue,
|
|
166
|
+
"data-testid": testId,
|
|
159
167
|
children: (_DateUtil$relativeLab = dateUtil.DateUtil.relativeLabel(relValue, isHijri)) !== null && _DateUtil$relativeLab !== void 0 ? _DateUtil$relativeLab : ""
|
|
160
168
|
})
|
|
161
169
|
}), /*#__PURE__*/jsxRuntime.jsx(SuperDateTabs, _objectSpread(_objectSpread({}, props), {}, {
|
|
@@ -81,7 +81,7 @@ exports.DateUtil = void 0;
|
|
|
81
81
|
return formatted;
|
|
82
82
|
};
|
|
83
83
|
var isRelative = _DateUtil.isRelative = function (date) {
|
|
84
|
-
return utilities.isString(date) && date.match(/^(\$\w+)([+-])(\d+)?$/) !== null;
|
|
84
|
+
return utilities.isString(date) && date.match(/^(\$\w+)([+-])?(\d+)?$/) !== null;
|
|
85
85
|
};
|
|
86
86
|
_DateUtil.isRelativeRange = function (date) {
|
|
87
87
|
return utilities.isString(date) && date.match(/^(\$\w+)([+-])(\d+)?\|(\$\w+)([+-])(\d+)?$/) !== null;
|
|
@@ -375,6 +375,7 @@ exports.DateUtil = void 0;
|
|
|
375
375
|
};
|
|
376
376
|
var _parse = function _parse(dt, rounded) {
|
|
377
377
|
var _dt$match2;
|
|
378
|
+
if (!isRelative(dt)) return new Date(dt);
|
|
378
379
|
var _ref3 = (_dt$match2 = dt.match(/^(\$\w+)([+-]\d+)?$/)) !== null && _dt$match2 !== void 0 ? _dt$match2 : [],
|
|
379
380
|
_ref4 = _slicedToArray(_ref3, 3),
|
|
380
381
|
part = _ref4[1],
|
|
@@ -432,5 +433,4 @@ exports.DateUtil = void 0;
|
|
|
432
433
|
}
|
|
433
434
|
return new Date(dt);
|
|
434
435
|
};
|
|
435
|
-
})(exports.DateUtil || (exports.DateUtil = {}));
|
|
436
|
-
window.DateUtil = exports.DateUtil;
|
|
436
|
+
})(exports.DateUtil || (exports.DateUtil = {}));
|
|
@@ -6,7 +6,7 @@ import { useGlobals, Tooltip, Dropdown } from '@react-fabric/core';
|
|
|
6
6
|
import { DateUtil } from '../utils/dateUtil.js';
|
|
7
7
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
8
|
|
|
9
|
-
var _excluded = ["date", "className", "format", "children"];
|
|
9
|
+
var _excluded = ["date", "className", "format", "children", "showAlternateDate"];
|
|
10
10
|
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; }
|
|
11
11
|
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; }
|
|
12
12
|
var DateDisplay = function DateDisplay(_ref) {
|
|
@@ -15,11 +15,13 @@ var DateDisplay = function DateDisplay(_ref) {
|
|
|
15
15
|
_ref$format = _ref.format,
|
|
16
16
|
format = _ref$format === void 0 ? "eee, PPpp" : _ref$format,
|
|
17
17
|
children = _ref.children,
|
|
18
|
+
showAlternateDate = _ref.showAlternateDate,
|
|
18
19
|
aria = _objectWithoutProperties(_ref, _excluded);
|
|
19
20
|
var _useGlobals = useGlobals(),
|
|
20
21
|
currentCalendar = _useGlobals.currentCalendar,
|
|
21
22
|
currentLocale = _useGlobals.currentLocale;
|
|
22
23
|
var dtLabel = /*#__PURE__*/jsx(Tooltip, {
|
|
24
|
+
disabled: !showAlternateDate,
|
|
23
25
|
content: DateUtil.format(date, format, currentLocale, currentCalendar !== "hijri"),
|
|
24
26
|
children: /*#__PURE__*/jsx("span", _objectSpread(_objectSpread({
|
|
25
27
|
className: className
|
|
@@ -28,6 +30,8 @@ var DateDisplay = function DateDisplay(_ref) {
|
|
|
28
30
|
}))
|
|
29
31
|
});
|
|
30
32
|
return children ? /*#__PURE__*/jsxs(Dropdown, {
|
|
33
|
+
showArrow: true,
|
|
34
|
+
closeOnClick: true,
|
|
31
35
|
children: [dtLabel, children]
|
|
32
36
|
}) : dtLabel;
|
|
33
37
|
};
|
|
@@ -5,7 +5,7 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
|
5
5
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
6
6
|
import { Section, Content } from '@react-fabric/core';
|
|
7
7
|
import { EMPTY_ARRAY } from '@react-fabric/utilities';
|
|
8
|
-
import { startOfDay, endOfDay, isSameMonth } from 'date-fns';
|
|
8
|
+
import { startOfDay, endOfDay, isSameMonth, setYear } from 'date-fns';
|
|
9
9
|
import i18next from 'i18next';
|
|
10
10
|
import { useState, useReducer, useEffect } from 'react';
|
|
11
11
|
import { useTranslation } from 'react-i18next';
|
|
@@ -19,8 +19,18 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
19
19
|
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; }
|
|
20
20
|
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; }
|
|
21
21
|
var makeList = function makeList(year) {
|
|
22
|
-
var
|
|
22
|
+
var recurring = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
23
|
+
var predefined = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
23
24
|
var list = _toConsumableArray(predefined);
|
|
25
|
+
recurring.forEach(function (evt) {
|
|
26
|
+
return list.push({
|
|
27
|
+
label: evt.label,
|
|
28
|
+
hijri: evt.hijri,
|
|
29
|
+
icon: evt.icon,
|
|
30
|
+
start: setYear(DateUtil.parseDate(evt.start), year),
|
|
31
|
+
end: setYear(DateUtil.parseDate(evt.end), year)
|
|
32
|
+
});
|
|
33
|
+
});
|
|
24
34
|
list.push({
|
|
25
35
|
label: "superdate:event.newYear",
|
|
26
36
|
start: startOfDay(new Date("".concat(year - 1, "-12-31"))),
|
|
@@ -51,7 +61,9 @@ var EventPanel = function EventPanel(_ref) {
|
|
|
51
61
|
var isHijri = _ref.isHijri,
|
|
52
62
|
onChange = _ref.onChange,
|
|
53
63
|
_ref$events = _ref.events,
|
|
54
|
-
events = _ref$events === void 0 ? EMPTY_ARRAY : _ref$events
|
|
64
|
+
events = _ref$events === void 0 ? EMPTY_ARRAY : _ref$events,
|
|
65
|
+
_ref$recurringEvents = _ref.recurringEvents,
|
|
66
|
+
recurringEvents = _ref$recurringEvents === void 0 ? EMPTY_ARRAY : _ref$recurringEvents;
|
|
55
67
|
var _useTranslation = useTranslation(),
|
|
56
68
|
t = _useTranslation.t;
|
|
57
69
|
var _useState = useState({}),
|
|
@@ -77,7 +89,7 @@ var EventPanel = function EventPanel(_ref) {
|
|
|
77
89
|
if (resetList) {
|
|
78
90
|
var _predefined$year;
|
|
79
91
|
var year = state.pageDate.getFullYear();
|
|
80
|
-
state.events = makeList(year, (_predefined$year = predefined[year]) !== null && _predefined$year !== void 0 ? _predefined$year : []);
|
|
92
|
+
state.events = makeList(year, recurringEvents !== null && recurringEvents !== void 0 ? recurringEvents : [], (_predefined$year = predefined[year]) !== null && _predefined$year !== void 0 ? _predefined$year : []);
|
|
81
93
|
}
|
|
82
94
|
return _objectSpread({}, state);
|
|
83
95
|
}, {
|
|
@@ -16,13 +16,14 @@ import { RelativePanel } from './RelativePanel.js';
|
|
|
16
16
|
import classes from './SuperDate.module.css';
|
|
17
17
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
18
18
|
|
|
19
|
-
var _excluded = ["as", "color", "variant", "onChange", "value"];
|
|
19
|
+
var _excluded = ["as", "color", "variant", "disabled", "onChange", "value", "data-test-value", "data-testid"];
|
|
20
20
|
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; }
|
|
21
21
|
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; }
|
|
22
22
|
var SuperDateTabs = function SuperDateTabs(_ref) {
|
|
23
23
|
var events = _ref.events,
|
|
24
24
|
value = _ref.value,
|
|
25
25
|
presets = _ref.presets,
|
|
26
|
+
recurringEvents = _ref.recurringEvents,
|
|
26
27
|
onChange = _ref.onChange;
|
|
27
28
|
var _useTranslation = useTranslation("superdate"),
|
|
28
29
|
t = _useTranslation.t;
|
|
@@ -97,7 +98,8 @@ var SuperDateTabs = function SuperDateTabs(_ref) {
|
|
|
97
98
|
children: /*#__PURE__*/jsx(EventPanel, {
|
|
98
99
|
isHijri: isHijri,
|
|
99
100
|
onChange: handleChange,
|
|
100
|
-
events: events
|
|
101
|
+
events: events,
|
|
102
|
+
recurringEvents: recurringEvents
|
|
101
103
|
})
|
|
102
104
|
})]
|
|
103
105
|
})
|
|
@@ -125,8 +127,11 @@ var SuperDate = function SuperDate(_ref4) {
|
|
|
125
127
|
_ref4$color = _ref4.color,
|
|
126
128
|
color = _ref4$color === void 0 ? "primary" : _ref4$color,
|
|
127
129
|
variant = _ref4.variant,
|
|
130
|
+
disabled = _ref4.disabled,
|
|
128
131
|
onChange = _ref4.onChange,
|
|
129
132
|
value = _ref4.value,
|
|
133
|
+
testValue = _ref4["data-test-value"],
|
|
134
|
+
testId = _ref4["data-testid"],
|
|
130
135
|
props = _objectWithoutProperties(_ref4, _excluded);
|
|
131
136
|
var _useGlobals2 = useGlobals(),
|
|
132
137
|
currentCalendar = _useGlobals2.currentCalendar,
|
|
@@ -155,7 +160,10 @@ var SuperDate = function SuperDate(_ref4) {
|
|
|
155
160
|
children: /*#__PURE__*/jsx(E, {
|
|
156
161
|
icon: CoreIcons.clock,
|
|
157
162
|
color: color,
|
|
163
|
+
disabled: disabled,
|
|
158
164
|
variant: variant,
|
|
165
|
+
"data-test-value": testValue,
|
|
166
|
+
"data-testid": testId,
|
|
159
167
|
children: (_DateUtil$relativeLab = DateUtil.relativeLabel(relValue, isHijri)) !== null && _DateUtil$relativeLab !== void 0 ? _DateUtil$relativeLab : ""
|
|
160
168
|
})
|
|
161
169
|
}), /*#__PURE__*/jsx(SuperDateTabs, _objectSpread(_objectSpread({}, props), {}, {
|
|
@@ -81,7 +81,7 @@ var DateUtil;
|
|
|
81
81
|
return formatted;
|
|
82
82
|
};
|
|
83
83
|
var isRelative = _DateUtil.isRelative = function (date) {
|
|
84
|
-
return isString(date) && date.match(/^(\$\w+)([+-])(\d+)?$/) !== null;
|
|
84
|
+
return isString(date) && date.match(/^(\$\w+)([+-])?(\d+)?$/) !== null;
|
|
85
85
|
};
|
|
86
86
|
_DateUtil.isRelativeRange = function (date) {
|
|
87
87
|
return isString(date) && date.match(/^(\$\w+)([+-])(\d+)?\|(\$\w+)([+-])(\d+)?$/) !== null;
|
|
@@ -375,6 +375,7 @@ var DateUtil;
|
|
|
375
375
|
};
|
|
376
376
|
var _parse = function _parse(dt, rounded) {
|
|
377
377
|
var _dt$match2;
|
|
378
|
+
if (!isRelative(dt)) return new Date(dt);
|
|
378
379
|
var _ref3 = (_dt$match2 = dt.match(/^(\$\w+)([+-]\d+)?$/)) !== null && _dt$match2 !== void 0 ? _dt$match2 : [],
|
|
379
380
|
_ref4 = _slicedToArray(_ref3, 3),
|
|
380
381
|
part = _ref4[1],
|
|
@@ -432,7 +433,6 @@ var DateUtil;
|
|
|
432
433
|
}
|
|
433
434
|
return new Date(dt);
|
|
434
435
|
};
|
|
435
|
-
})(DateUtil || (DateUtil = {}));
|
|
436
|
-
window.DateUtil = DateUtil;
|
|
436
|
+
})(DateUtil || (DateUtil = {}));
|
|
437
437
|
|
|
438
438
|
export { DateUtil };
|
|
@@ -11,5 +11,6 @@ export interface Props extends CssProp, AriaProps, TestProps, Partial<ChildrenPr
|
|
|
11
11
|
* date format
|
|
12
12
|
*/
|
|
13
13
|
format?: string;
|
|
14
|
+
showAlternateDate?: boolean;
|
|
14
15
|
}
|
|
15
|
-
export declare const DateDisplay: ({ date, className, format, children, ...aria }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare const DateDisplay: ({ date, className, format, children, showAlternateDate, ...aria }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type SuperDateProps } from "../types";
|
|
2
|
-
export declare const EventPanel: ({ isHijri, onChange, events, }: {
|
|
2
|
+
export declare const EventPanel: ({ isHijri, onChange, events, recurringEvents, }: {
|
|
3
3
|
isHijri: boolean;
|
|
4
4
|
} & Partial<SuperDateProps>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type SuperDateProps } from "../types";
|
|
2
|
-
export declare const SuperDateTabs: ({ events, value, presets, onChange, }: SuperDateProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const SuperDateTabs: ({ events, value, presets, recurringEvents, onChange, }: SuperDateProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
/**
|
|
4
4
|
* Superdate panel provides ability to select relative and absolute dates
|
|
5
5
|
*
|
|
@@ -14,4 +14,4 @@ export declare const SuperDateTabs: ({ events, value, presets, onChange, }: Supe
|
|
|
14
14
|
* `$year`,
|
|
15
15
|
* `$decade`
|
|
16
16
|
*/
|
|
17
|
-
export declare const SuperDate: ({ as, color, variant, onChange, value, ...props }: SuperDateProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare const SuperDate: ({ as, color, variant, disabled, onChange, value, "data-test-value": testValue, "data-testid": testId, ...props }: SuperDateProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -45,10 +45,11 @@ export interface PresetType {
|
|
|
45
45
|
value: string;
|
|
46
46
|
label: string;
|
|
47
47
|
}
|
|
48
|
-
export interface SuperDateProps {
|
|
48
|
+
export interface SuperDateProps extends TestProps {
|
|
49
49
|
as?: "button" | "chip";
|
|
50
50
|
color?: ColorType;
|
|
51
51
|
variant?: "solid" | "outline" | "link";
|
|
52
|
+
disabled?: boolean;
|
|
52
53
|
/**
|
|
53
54
|
* relative date value
|
|
54
55
|
*/
|
|
@@ -61,6 +62,10 @@ export interface SuperDateProps {
|
|
|
61
62
|
* list of calendar events
|
|
62
63
|
*/
|
|
63
64
|
events?: EventType[];
|
|
65
|
+
/**
|
|
66
|
+
* list of calendar events
|
|
67
|
+
*/
|
|
68
|
+
recurringEvents?: EventType[];
|
|
64
69
|
/**
|
|
65
70
|
* list of relative presets
|
|
66
71
|
*
|
|
@@ -23,7 +23,7 @@ export declare namespace DateUtil {
|
|
|
23
23
|
const isSameMonth: (date: Date, compare: Date, isHijri?: boolean) => boolean;
|
|
24
24
|
const isSameYear: (date: Date, compare: Date, isHijri?: boolean) => boolean;
|
|
25
25
|
const isDisabled: (date: Date, page: PageType, min?: DateLike, max?: DateLike) => boolean;
|
|
26
|
-
const parseDate: (datelike:
|
|
26
|
+
const parseDate: (datelike: DateLike) => Date;
|
|
27
27
|
const parseRange: (datelike: string) => [Date, Date];
|
|
28
28
|
const relativeTooltip: (datelike?: string, isHijri?: boolean) => string;
|
|
29
29
|
const relativeLabel: (datelike?: string, isHijri?: boolean) => string | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-fabric/date",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.30",
|
|
4
4
|
"description": "RUF: Date package",
|
|
5
5
|
"author": "Adarsh Pastakia <adarshpastakia@outlook.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,17 +34,17 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@floating-ui/react": "^0.26.24",
|
|
37
|
-
"@react-fabric/core": "^1.0.0-beta.
|
|
38
|
-
"@react-fabric/form": "^1.0.0-beta.
|
|
39
|
-
"@react-fabric/utilities": "^1.0.0-beta.
|
|
37
|
+
"@react-fabric/core": "^1.0.0-beta.30",
|
|
38
|
+
"@react-fabric/form": "^1.0.0-beta.30",
|
|
39
|
+
"@react-fabric/utilities": "^1.0.0-beta.30",
|
|
40
40
|
"classnames": "^2.5.1",
|
|
41
41
|
"date-fns": "^4.0.0",
|
|
42
42
|
"resize-observer-polyfill": "^1.5.1"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"i18next": "^23.15.1",
|
|
46
|
-
"react": "
|
|
47
|
-
"react-dom": "
|
|
46
|
+
"react": "^19.0.0",
|
|
47
|
+
"react-dom": "^19.0.0",
|
|
48
48
|
"react-i18next": "^15.0.2"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"node": ">=18.12.0",
|
|
55
55
|
"npm": ">=8.19.0"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "5b10298b7627c2e56bcccf18100b6d85a02c9b06"
|
|
58
58
|
}
|
|
@@ -46,6 +46,8 @@ export interface Props
|
|
|
46
46
|
* date format
|
|
47
47
|
*/
|
|
48
48
|
format?: string;
|
|
49
|
+
|
|
50
|
+
showAlternateDate?: boolean;
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
export const DateDisplay = ({
|
|
@@ -53,12 +55,14 @@ export const DateDisplay = ({
|
|
|
53
55
|
className,
|
|
54
56
|
format = "eee, PPpp",
|
|
55
57
|
children,
|
|
58
|
+
showAlternateDate,
|
|
56
59
|
...aria
|
|
57
60
|
}: Props) => {
|
|
58
61
|
const { currentCalendar, currentLocale } = useGlobals();
|
|
59
62
|
|
|
60
63
|
const dtLabel = (
|
|
61
64
|
<Tooltip
|
|
65
|
+
disabled={!showAlternateDate}
|
|
62
66
|
content={DateUtil.format(
|
|
63
67
|
date,
|
|
64
68
|
format,
|
|
@@ -78,7 +82,7 @@ export const DateDisplay = ({
|
|
|
78
82
|
);
|
|
79
83
|
|
|
80
84
|
return children ? (
|
|
81
|
-
<Dropdown>
|
|
85
|
+
<Dropdown showArrow closeOnClick>
|
|
82
86
|
{dtLabel}
|
|
83
87
|
{children}
|
|
84
88
|
</Dropdown>
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
import { Content, Section } from "@react-fabric/core";
|
|
25
25
|
import { EMPTY_ARRAY } from "@react-fabric/utilities";
|
|
26
|
-
import { endOfDay, isSameMonth, startOfDay } from "date-fns";
|
|
26
|
+
import { endOfDay, isSameMonth, setYear, startOfDay } from "date-fns";
|
|
27
27
|
import i18next from "i18next";
|
|
28
28
|
import { useEffect, useReducer, useState } from "react";
|
|
29
29
|
import { useTranslation } from "react-i18next";
|
|
@@ -44,8 +44,21 @@ type EventActions =
|
|
|
44
44
|
| { type: "changePage"; page: PageType }
|
|
45
45
|
| { type: "changePageDate"; date: Date; changePage?: boolean };
|
|
46
46
|
|
|
47
|
-
const makeList = (
|
|
47
|
+
const makeList = (
|
|
48
|
+
year: number,
|
|
49
|
+
recurring: EventType[] = [],
|
|
50
|
+
predefined: Array<EventType<Date>> = [],
|
|
51
|
+
) => {
|
|
48
52
|
const list = [...predefined];
|
|
53
|
+
recurring.forEach((evt) =>
|
|
54
|
+
list.push({
|
|
55
|
+
label: evt.label,
|
|
56
|
+
hijri: evt.hijri,
|
|
57
|
+
icon: evt.icon,
|
|
58
|
+
start: setYear(DateUtil.parseDate(evt.start), year),
|
|
59
|
+
end: setYear(DateUtil.parseDate(evt.end), year),
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
49
62
|
list.push({
|
|
50
63
|
label: "superdate:event.newYear",
|
|
51
64
|
start: startOfDay(new Date(`${year - 1}-12-31`)),
|
|
@@ -81,6 +94,7 @@ export const EventPanel = ({
|
|
|
81
94
|
isHijri,
|
|
82
95
|
onChange,
|
|
83
96
|
events = EMPTY_ARRAY,
|
|
97
|
+
recurringEvents = EMPTY_ARRAY,
|
|
84
98
|
}: { isHijri: boolean } & Partial<SuperDateProps>) => {
|
|
85
99
|
const { t } = useTranslation();
|
|
86
100
|
const [predefined, setPredefined] = useState<
|
|
@@ -106,7 +120,11 @@ export const EventPanel = ({
|
|
|
106
120
|
}
|
|
107
121
|
if (resetList) {
|
|
108
122
|
const year = state.pageDate.getFullYear();
|
|
109
|
-
state.events = makeList(
|
|
123
|
+
state.events = makeList(
|
|
124
|
+
year,
|
|
125
|
+
recurringEvents ?? [],
|
|
126
|
+
predefined[year] ?? [],
|
|
127
|
+
);
|
|
110
128
|
}
|
|
111
129
|
return { ...state };
|
|
112
130
|
},
|
|
@@ -48,6 +48,7 @@ export const SuperDateTabs = ({
|
|
|
48
48
|
events,
|
|
49
49
|
value,
|
|
50
50
|
presets,
|
|
51
|
+
recurringEvents,
|
|
51
52
|
onChange,
|
|
52
53
|
}: SuperDateProps) => {
|
|
53
54
|
const { t } = useTranslation("superdate");
|
|
@@ -121,6 +122,7 @@ export const SuperDateTabs = ({
|
|
|
121
122
|
isHijri={isHijri}
|
|
122
123
|
onChange={handleChange}
|
|
123
124
|
events={events}
|
|
125
|
+
recurringEvents={recurringEvents}
|
|
124
126
|
/>
|
|
125
127
|
</Tab>
|
|
126
128
|
</TabPanel>
|
|
@@ -146,8 +148,11 @@ export const SuperDate = ({
|
|
|
146
148
|
as = "button",
|
|
147
149
|
color = "primary",
|
|
148
150
|
variant,
|
|
151
|
+
disabled,
|
|
149
152
|
onChange,
|
|
150
153
|
value,
|
|
154
|
+
"data-test-value": testValue,
|
|
155
|
+
"data-testid": testId,
|
|
151
156
|
...props
|
|
152
157
|
}: SuperDateProps) => {
|
|
153
158
|
const { currentCalendar, currentLocale } = useGlobals();
|
|
@@ -176,7 +181,14 @@ export const SuperDate = ({
|
|
|
176
181
|
return (
|
|
177
182
|
<Dropdown showArrow>
|
|
178
183
|
<Tooltip content={DateUtil.relativeTooltip(relValue, isHijri)}>
|
|
179
|
-
<E
|
|
184
|
+
<E
|
|
185
|
+
icon={CoreIcons.clock}
|
|
186
|
+
color={color}
|
|
187
|
+
disabled={disabled}
|
|
188
|
+
variant={variant as AnyObject}
|
|
189
|
+
data-test-value={testValue}
|
|
190
|
+
data-testid={testId}
|
|
191
|
+
>
|
|
180
192
|
{DateUtil.relativeLabel(relValue, isHijri) ?? ""}
|
|
181
193
|
</E>
|
|
182
194
|
</Tooltip>
|
package/src/types/index.ts
CHANGED
|
@@ -96,10 +96,11 @@ export interface PresetType {
|
|
|
96
96
|
label: string;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
export interface SuperDateProps {
|
|
99
|
+
export interface SuperDateProps extends TestProps {
|
|
100
100
|
as?: "button" | "chip";
|
|
101
101
|
color?: ColorType;
|
|
102
102
|
variant?: "solid" | "outline" | "link";
|
|
103
|
+
disabled?: boolean;
|
|
103
104
|
/**
|
|
104
105
|
* relative date value
|
|
105
106
|
*/
|
|
@@ -112,6 +113,10 @@ export interface SuperDateProps {
|
|
|
112
113
|
* list of calendar events
|
|
113
114
|
*/
|
|
114
115
|
events?: EventType[];
|
|
116
|
+
/**
|
|
117
|
+
* list of calendar events
|
|
118
|
+
*/
|
|
119
|
+
recurringEvents?: EventType[];
|
|
115
120
|
/**
|
|
116
121
|
* list of relative presets
|
|
117
122
|
*
|
package/src/utils/dateUtil.ts
CHANGED
|
@@ -157,7 +157,7 @@ export namespace DateUtil {
|
|
|
157
157
|
};
|
|
158
158
|
|
|
159
159
|
export const isRelative = (date: DateLike): date is string => {
|
|
160
|
-
return isString(date) && date.match(/^(\$\w+)([+-])(\d+)?$/) !== null;
|
|
160
|
+
return isString(date) && date.match(/^(\$\w+)([+-])?(\d+)?$/) !== null;
|
|
161
161
|
};
|
|
162
162
|
|
|
163
163
|
export const isRelativeRange = (date: DateLike): date is string => {
|
|
@@ -407,7 +407,7 @@ export namespace DateUtil {
|
|
|
407
407
|
);
|
|
408
408
|
};
|
|
409
409
|
|
|
410
|
-
export const parseDate = (datelike:
|
|
410
|
+
export const parseDate = (datelike: DateLike): Date => {
|
|
411
411
|
return _parse(datelike);
|
|
412
412
|
};
|
|
413
413
|
|
|
@@ -490,7 +490,8 @@ export namespace DateUtil {
|
|
|
490
490
|
}
|
|
491
491
|
};
|
|
492
492
|
|
|
493
|
-
const _parse = (dt:
|
|
493
|
+
const _parse = (dt: DateLike, rounded?: "start" | "end") => {
|
|
494
|
+
if (!isRelative(dt)) return new Date(dt);
|
|
494
495
|
const [, part, diff = "0"] = dt.match(/^(\$\w+)([+-]\d+)?$/) ?? [];
|
|
495
496
|
if (part) {
|
|
496
497
|
let date = startOfMinute(new Date());
|
|
@@ -546,6 +547,3 @@ export namespace DateUtil {
|
|
|
546
547
|
return new Date(dt);
|
|
547
548
|
};
|
|
548
549
|
}
|
|
549
|
-
|
|
550
|
-
// @ts-expect-error ignore
|
|
551
|
-
window.DateUtil = DateUtil;
|