@tecsinapse/cortex-react 1.9.16 → 1.9.17
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/components/DatePicker/DateField.js +20 -3
- package/dist/cjs/components/DatePicker/DatePickerInput.js +17 -4
- package/dist/cjs/components/DatePicker/DatePickerInputBase.js +4 -2
- package/dist/cjs/components/DatePicker/DateRangePickerInput.js +17 -5
- package/dist/cjs/components/TimeField/TimeField.js +15 -3
- package/dist/cjs/components/TimeField/TimeFieldInput.js +22 -2
- package/dist/cjs/hooks/useCalendar.js +1 -1
- package/dist/cjs/hooks/useDatePickerInput.js +1 -1
- package/dist/cjs/hooks/useDateRangePickerInput.js +2 -2
- package/dist/cjs/hooks/useRangeCalendar.js +2 -2
- package/dist/cjs/utils/date.js +12 -4
- package/dist/esm/components/DatePicker/DateField.js +21 -4
- package/dist/esm/components/DatePicker/DatePickerInput.js +18 -5
- package/dist/esm/components/DatePicker/DatePickerInputBase.js +4 -2
- package/dist/esm/components/DatePicker/DateRangePickerInput.js +18 -6
- package/dist/esm/components/TimeField/TimeField.js +15 -3
- package/dist/esm/components/TimeField/TimeFieldInput.js +22 -2
- package/dist/esm/hooks/useCalendar.js +2 -2
- package/dist/esm/hooks/useDatePickerInput.js +2 -2
- package/dist/esm/hooks/useDateRangePickerInput.js +3 -3
- package/dist/esm/hooks/useRangeCalendar.js +3 -3
- package/dist/esm/utils/date.js +12 -5
- package/dist/types/components/DatePicker/DateField.d.ts +3 -2
- package/dist/types/components/DatePicker/DatePickerInput.d.ts +3 -0
- package/dist/types/components/DatePicker/DateRangePickerInput.d.ts +3 -0
- package/dist/types/components/DatePicker/DateSegment.d.ts +2 -2
- package/dist/types/components/TimeField/TimeField.d.ts +4 -5
- package/dist/types/components/TimeField/TimeFieldInput.d.ts +6 -6
- package/dist/types/utils/date.d.ts +5 -3
- package/package.json +2 -2
- package/dist/cjs/hooks/useTimeField.js +0 -32
- package/dist/esm/hooks/useTimeField.js +0 -30
- package/dist/types/hooks/useTimeField.d.ts +0 -7
|
@@ -6,7 +6,11 @@ var reactAria = require('react-aria');
|
|
|
6
6
|
var reactStately = require('react-stately');
|
|
7
7
|
var DateSegment = require('./DateSegment.js');
|
|
8
8
|
|
|
9
|
-
const DateField = ({
|
|
9
|
+
const DateField = ({
|
|
10
|
+
onClickDate,
|
|
11
|
+
onClickTime,
|
|
12
|
+
...props
|
|
13
|
+
}) => {
|
|
10
14
|
const { locale } = reactAria.useLocale();
|
|
11
15
|
const state = reactStately.useDateFieldState({
|
|
12
16
|
...props,
|
|
@@ -19,16 +23,29 @@ const DateField = ({ onClick, ...props }) => {
|
|
|
19
23
|
state,
|
|
20
24
|
ref
|
|
21
25
|
);
|
|
26
|
+
const handleOnClickSegment = React.useCallback((segment) => {
|
|
27
|
+
if (!segment.isEditable || state.isDisabled) return;
|
|
28
|
+
if (["hour", "minute", "second"].includes(segment.type)) onClickTime?.();
|
|
29
|
+
if (["year", "month", "day"].includes(segment.type)) onClickDate?.();
|
|
30
|
+
}, []);
|
|
22
31
|
return /* @__PURE__ */ React.createElement(
|
|
23
32
|
"div",
|
|
24
33
|
{
|
|
25
34
|
...fieldProps,
|
|
26
35
|
ref,
|
|
27
36
|
className: "flex flex-row",
|
|
28
|
-
onClick,
|
|
29
37
|
"data-testid": "date-field-div"
|
|
30
38
|
},
|
|
31
|
-
state.segments.map((segment, i) => /* @__PURE__ */ React.createElement(
|
|
39
|
+
state.segments.map((segment, i) => /* @__PURE__ */ React.createElement(
|
|
40
|
+
"div",
|
|
41
|
+
{
|
|
42
|
+
key: i,
|
|
43
|
+
onClick: () => {
|
|
44
|
+
handleOnClickSegment(segment);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
/* @__PURE__ */ React.createElement(DateSegment.DateSegment, { segment, state })
|
|
48
|
+
))
|
|
32
49
|
);
|
|
33
50
|
};
|
|
34
51
|
|
|
@@ -18,11 +18,22 @@ var DateField = require('./DateField.js');
|
|
|
18
18
|
var DatePickerInputBase = require('./DatePickerInputBase.js');
|
|
19
19
|
|
|
20
20
|
const DatePickerInputWithPopover = (props) => {
|
|
21
|
-
const {
|
|
22
|
-
|
|
21
|
+
const {
|
|
22
|
+
onChange,
|
|
23
|
+
value,
|
|
24
|
+
label,
|
|
25
|
+
variants,
|
|
26
|
+
disabled,
|
|
27
|
+
hourCycle = 24,
|
|
28
|
+
granularity = "day"
|
|
29
|
+
} = props;
|
|
30
|
+
const { fieldProps, state, ref } = useDatePickerInput.useDatePickerInput({
|
|
31
|
+
value,
|
|
32
|
+
onChange
|
|
33
|
+
});
|
|
23
34
|
const { handleTogglePopover, handleChangeCalendar, handleCloseCalendar } = useDatePickerInputCommon.useDatePickerInputCommon({
|
|
24
35
|
onChangeCalendar: (value2) => {
|
|
25
|
-
state.
|
|
36
|
+
state.setValue(date.dateToCalendarDateTime(value2));
|
|
26
37
|
}
|
|
27
38
|
});
|
|
28
39
|
return /* @__PURE__ */ React.createElement("div", { ref, "data-testid": "date-picker-input" }, /* @__PURE__ */ React.createElement(index.Popover.Trigger, { disabled: true }, /* @__PURE__ */ React.createElement(
|
|
@@ -47,7 +58,9 @@ const DatePickerInputWithPopover = (props) => {
|
|
|
47
58
|
handleCloseCalendar();
|
|
48
59
|
},
|
|
49
60
|
isDisabled: disabled,
|
|
50
|
-
|
|
61
|
+
onClickDate: handleTogglePopover,
|
|
62
|
+
hourCycle,
|
|
63
|
+
granularity
|
|
51
64
|
}
|
|
52
65
|
)
|
|
53
66
|
)), /* @__PURE__ */ React.createElement(
|
|
@@ -33,7 +33,8 @@ const DatePickerInputBase = ({
|
|
|
33
33
|
{
|
|
34
34
|
onClick: onClean,
|
|
35
35
|
disabled,
|
|
36
|
-
"data-testid": "date-picker-input-base-clean-button"
|
|
36
|
+
"data-testid": "date-picker-input-base-clean-button",
|
|
37
|
+
type: "button"
|
|
37
38
|
},
|
|
38
39
|
/* @__PURE__ */ React.createElement(
|
|
39
40
|
io.IoMdClose,
|
|
@@ -47,7 +48,8 @@ const DatePickerInputBase = ({
|
|
|
47
48
|
{
|
|
48
49
|
onClick: onToggle,
|
|
49
50
|
disabled,
|
|
50
|
-
"data-testid": "date-picker-input-base-calendar-button"
|
|
51
|
+
"data-testid": "date-picker-input-base-calendar-button",
|
|
52
|
+
type: "button"
|
|
51
53
|
},
|
|
52
54
|
/* @__PURE__ */ React.createElement(
|
|
53
55
|
lia.LiaCalendar,
|
|
@@ -18,13 +18,21 @@ var DateField = require('./DateField.js');
|
|
|
18
18
|
var DatePickerInputBase = require('./DatePickerInputBase.js');
|
|
19
19
|
|
|
20
20
|
const DateRangePickerInputWithPopover = (props) => {
|
|
21
|
-
const {
|
|
21
|
+
const {
|
|
22
|
+
onChange,
|
|
23
|
+
value,
|
|
24
|
+
label,
|
|
25
|
+
variants,
|
|
26
|
+
disabled = false,
|
|
27
|
+
hourCycle = 24,
|
|
28
|
+
granularity = "day"
|
|
29
|
+
} = props;
|
|
22
30
|
const { endFieldProps, startFieldProps, ref, state } = useDateRangePickerInput.useDateRangePickerInput({ value, onChange });
|
|
23
31
|
const { handleTogglePopover, handleChangeCalendar, handleCloseCalendar } = useDatePickerInputCommon.useDatePickerInputCommon({
|
|
24
32
|
onChangeRangeCalendar: (value2) => {
|
|
25
33
|
state.setDateRange({
|
|
26
|
-
start: date.
|
|
27
|
-
end: date.
|
|
34
|
+
start: date.dateToCalendarDateTime(value2?.start),
|
|
35
|
+
end: date.dateToCalendarDateTime(value2?.end)
|
|
28
36
|
});
|
|
29
37
|
}
|
|
30
38
|
});
|
|
@@ -50,7 +58,9 @@ const DateRangePickerInputWithPopover = (props) => {
|
|
|
50
58
|
handleCloseCalendar();
|
|
51
59
|
},
|
|
52
60
|
isDisabled: disabled,
|
|
53
|
-
|
|
61
|
+
onClickDate: handleTogglePopover,
|
|
62
|
+
hourCycle,
|
|
63
|
+
granularity
|
|
54
64
|
}
|
|
55
65
|
), /* @__PURE__ */ React.createElement("span", null, "-"), /* @__PURE__ */ React.createElement(
|
|
56
66
|
DateField.DateField,
|
|
@@ -61,7 +71,9 @@ const DateRangePickerInputWithPopover = (props) => {
|
|
|
61
71
|
handleCloseCalendar();
|
|
62
72
|
},
|
|
63
73
|
isDisabled: disabled,
|
|
64
|
-
|
|
74
|
+
onClickDate: handleTogglePopover,
|
|
75
|
+
hourCycle,
|
|
76
|
+
granularity
|
|
65
77
|
}
|
|
66
78
|
))
|
|
67
79
|
)), /* @__PURE__ */ React.createElement(
|
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
-
var
|
|
4
|
+
var reactAria = require('react-aria');
|
|
5
|
+
var reactStately = require('react-stately');
|
|
5
6
|
var DateSegment = require('../DatePicker/DateSegment.js');
|
|
6
7
|
|
|
7
|
-
const TimeField = (props) => {
|
|
8
|
-
const {
|
|
8
|
+
const TimeField = ({ disabled, ...props }) => {
|
|
9
|
+
const { locale } = reactAria.useLocale();
|
|
10
|
+
const state = reactStately.useTimeFieldState({
|
|
11
|
+
...props,
|
|
12
|
+
locale,
|
|
13
|
+
isDisabled: disabled
|
|
14
|
+
});
|
|
15
|
+
const ref = React.useRef(null);
|
|
16
|
+
const { fieldProps } = reactAria.useTimeField(
|
|
17
|
+
{ "aria-label": "time-field" },
|
|
18
|
+
state,
|
|
19
|
+
ref
|
|
20
|
+
);
|
|
9
21
|
return /* @__PURE__ */ React.createElement("div", { ...fieldProps, ref, className: "flex flex-row" }, state.segments.map((segment, i) => /* @__PURE__ */ React.createElement(DateSegment.DateSegment, { key: i, segment, state })));
|
|
10
22
|
};
|
|
11
23
|
|
|
@@ -2,11 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
var cortexCore = require('@tecsinapse/cortex-core');
|
|
4
4
|
var React = require('react');
|
|
5
|
+
var date = require('../../utils/date.js');
|
|
5
6
|
var index = require('../Input/index.js');
|
|
6
7
|
var TimeField = require('./TimeField.js');
|
|
7
8
|
|
|
8
9
|
const TimeFieldInput = (props) => {
|
|
9
|
-
const {
|
|
10
|
+
const {
|
|
11
|
+
onChange,
|
|
12
|
+
value,
|
|
13
|
+
label,
|
|
14
|
+
variants,
|
|
15
|
+
hourCycle = 24,
|
|
16
|
+
granularity = "minute",
|
|
17
|
+
disabled = false
|
|
18
|
+
} = props;
|
|
10
19
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
11
20
|
index.Input.Face,
|
|
12
21
|
{
|
|
@@ -15,7 +24,18 @@ const TimeFieldInput = (props) => {
|
|
|
15
24
|
"data-testid": "time-field-input"
|
|
16
25
|
},
|
|
17
26
|
/* @__PURE__ */ React.createElement("span", { className: cortexCore.labelStyle({}) }, label),
|
|
18
|
-
/* @__PURE__ */ React.createElement("div", { className: cortexCore.inputBox("", label) }, /* @__PURE__ */ React.createElement(
|
|
27
|
+
/* @__PURE__ */ React.createElement("div", { className: cortexCore.inputBox("", label) }, /* @__PURE__ */ React.createElement(
|
|
28
|
+
TimeField.TimeField,
|
|
29
|
+
{
|
|
30
|
+
onChange: (value2) => {
|
|
31
|
+
onChange(date.timeFromTimeValue(value2));
|
|
32
|
+
},
|
|
33
|
+
value,
|
|
34
|
+
hourCycle,
|
|
35
|
+
granularity,
|
|
36
|
+
isDisabled: disabled
|
|
37
|
+
}
|
|
38
|
+
))
|
|
19
39
|
));
|
|
20
40
|
};
|
|
21
41
|
|
|
@@ -11,7 +11,7 @@ const useCalendar = ({ value, onChange }) => {
|
|
|
11
11
|
const state = reactStately.useCalendarState({
|
|
12
12
|
locale,
|
|
13
13
|
createCalendar: date.createCalendar,
|
|
14
|
-
defaultValue: value ? date$1.
|
|
14
|
+
defaultValue: value ? date$1.dateToCalendarDateTime(value) : null,
|
|
15
15
|
onChange: (value2) => onChange(date$1.calendarDateToDate(value2))
|
|
16
16
|
});
|
|
17
17
|
const { calendarProps, title } = reactAria.useCalendar({}, state);
|
|
@@ -10,7 +10,7 @@ const useDatePickerInput = ({
|
|
|
10
10
|
onChange
|
|
11
11
|
}) => {
|
|
12
12
|
const state = reactStately.useDatePickerState({
|
|
13
|
-
defaultValue: value ? date.
|
|
13
|
+
defaultValue: value ? date.dateToCalendarDateTime(value) : null,
|
|
14
14
|
onChange: (value2) => {
|
|
15
15
|
onChange(date.calendarDateToDate(value2));
|
|
16
16
|
}
|
|
@@ -11,8 +11,8 @@ const useDateRangePickerInput = ({
|
|
|
11
11
|
}) => {
|
|
12
12
|
const state = reactStately.useDateRangePickerState({
|
|
13
13
|
defaultValue: value ? {
|
|
14
|
-
start: date.
|
|
15
|
-
end: date.
|
|
14
|
+
start: date.dateToCalendarDateTime(value?.start),
|
|
15
|
+
end: date.dateToCalendarDateTime(value?.end)
|
|
16
16
|
} : null,
|
|
17
17
|
onChange: (value2) => {
|
|
18
18
|
onChange({
|
|
@@ -15,8 +15,8 @@ const useRangeCalendar = ({
|
|
|
15
15
|
locale,
|
|
16
16
|
createCalendar: date.createCalendar,
|
|
17
17
|
defaultValue: {
|
|
18
|
-
start: date$1.
|
|
19
|
-
end: date$1.
|
|
18
|
+
start: date$1.dateToCalendarDateTime(value?.start),
|
|
19
|
+
end: date$1.dateToCalendarDateTime(value?.end)
|
|
20
20
|
},
|
|
21
21
|
onChange: (value2) => onChange({
|
|
22
22
|
start: date$1.calendarDateToDate(value2.start),
|
package/dist/cjs/utils/date.js
CHANGED
|
@@ -2,17 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
var date = require('@internationalized/date');
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
return new date.
|
|
5
|
+
const dateToCalendarDateTime = (value) => {
|
|
6
|
+
return new date.CalendarDateTime(
|
|
7
7
|
value?.getFullYear() ?? (/* @__PURE__ */ new Date()).getFullYear(),
|
|
8
8
|
value?.getMonth() !== void 0 ? value.getMonth() + 1 : (/* @__PURE__ */ new Date()).getMonth() + 1,
|
|
9
|
-
value?.getDate() ?? (/* @__PURE__ */ new Date()).getDate()
|
|
9
|
+
value?.getDate() ?? (/* @__PURE__ */ new Date()).getDate(),
|
|
10
|
+
value?.getHours() ?? (/* @__PURE__ */ new Date()).getHours(),
|
|
11
|
+
value?.getMinutes() ?? (/* @__PURE__ */ new Date()).getMinutes(),
|
|
12
|
+
value?.getSeconds() ?? (/* @__PURE__ */ new Date()).getSeconds()
|
|
10
13
|
);
|
|
11
14
|
};
|
|
12
15
|
const calendarDateToDate = (value) => {
|
|
13
16
|
if (!value) return void 0;
|
|
14
17
|
return value.toDate(date.getLocalTimeZone());
|
|
15
18
|
};
|
|
19
|
+
const timeFromTimeValue = (value) => {
|
|
20
|
+
if (!value) return void 0;
|
|
21
|
+
return new date.Time(value.hour, value.minute, value.second, value.millisecond);
|
|
22
|
+
};
|
|
16
23
|
|
|
17
24
|
exports.calendarDateToDate = calendarDateToDate;
|
|
18
|
-
exports.
|
|
25
|
+
exports.dateToCalendarDateTime = dateToCalendarDateTime;
|
|
26
|
+
exports.timeFromTimeValue = timeFromTimeValue;
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { createCalendar } from '@internationalized/date';
|
|
2
|
-
import React__default from 'react';
|
|
2
|
+
import React__default, { useCallback } from 'react';
|
|
3
3
|
import { useLocale, useDateField } from 'react-aria';
|
|
4
4
|
import { useDateFieldState } from 'react-stately';
|
|
5
5
|
import { DateSegment } from './DateSegment.js';
|
|
6
6
|
|
|
7
|
-
const DateField = ({
|
|
7
|
+
const DateField = ({
|
|
8
|
+
onClickDate,
|
|
9
|
+
onClickTime,
|
|
10
|
+
...props
|
|
11
|
+
}) => {
|
|
8
12
|
const { locale } = useLocale();
|
|
9
13
|
const state = useDateFieldState({
|
|
10
14
|
...props,
|
|
@@ -17,16 +21,29 @@ const DateField = ({ onClick, ...props }) => {
|
|
|
17
21
|
state,
|
|
18
22
|
ref
|
|
19
23
|
);
|
|
24
|
+
const handleOnClickSegment = useCallback((segment) => {
|
|
25
|
+
if (!segment.isEditable || state.isDisabled) return;
|
|
26
|
+
if (["hour", "minute", "second"].includes(segment.type)) onClickTime?.();
|
|
27
|
+
if (["year", "month", "day"].includes(segment.type)) onClickDate?.();
|
|
28
|
+
}, []);
|
|
20
29
|
return /* @__PURE__ */ React__default.createElement(
|
|
21
30
|
"div",
|
|
22
31
|
{
|
|
23
32
|
...fieldProps,
|
|
24
33
|
ref,
|
|
25
34
|
className: "flex flex-row",
|
|
26
|
-
onClick,
|
|
27
35
|
"data-testid": "date-field-div"
|
|
28
36
|
},
|
|
29
|
-
state.segments.map((segment, i) => /* @__PURE__ */ React__default.createElement(
|
|
37
|
+
state.segments.map((segment, i) => /* @__PURE__ */ React__default.createElement(
|
|
38
|
+
"div",
|
|
39
|
+
{
|
|
40
|
+
key: i,
|
|
41
|
+
onClick: () => {
|
|
42
|
+
handleOnClickSegment(segment);
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
/* @__PURE__ */ React__default.createElement(DateSegment, { segment, state })
|
|
46
|
+
))
|
|
30
47
|
);
|
|
31
48
|
};
|
|
32
49
|
|
|
@@ -2,7 +2,7 @@ import React__default from 'react';
|
|
|
2
2
|
import '@internationalized/date';
|
|
3
3
|
import 'react-aria';
|
|
4
4
|
import 'react-stately';
|
|
5
|
-
import {
|
|
5
|
+
import { dateToCalendarDateTime } from '../../utils/date.js';
|
|
6
6
|
import { useDatePickerInput } from '../../hooks/useDatePickerInput.js';
|
|
7
7
|
import { useDatePickerInputCommon } from '../../hooks/useDatePickerInputCommon.js';
|
|
8
8
|
import 'react-dropzone';
|
|
@@ -16,11 +16,22 @@ import { DateField } from './DateField.js';
|
|
|
16
16
|
import { DatePickerInputBase } from './DatePickerInputBase.js';
|
|
17
17
|
|
|
18
18
|
const DatePickerInputWithPopover = (props) => {
|
|
19
|
-
const {
|
|
20
|
-
|
|
19
|
+
const {
|
|
20
|
+
onChange,
|
|
21
|
+
value,
|
|
22
|
+
label,
|
|
23
|
+
variants,
|
|
24
|
+
disabled,
|
|
25
|
+
hourCycle = 24,
|
|
26
|
+
granularity = "day"
|
|
27
|
+
} = props;
|
|
28
|
+
const { fieldProps, state, ref } = useDatePickerInput({
|
|
29
|
+
value,
|
|
30
|
+
onChange
|
|
31
|
+
});
|
|
21
32
|
const { handleTogglePopover, handleChangeCalendar, handleCloseCalendar } = useDatePickerInputCommon({
|
|
22
33
|
onChangeCalendar: (value2) => {
|
|
23
|
-
state.
|
|
34
|
+
state.setValue(dateToCalendarDateTime(value2));
|
|
24
35
|
}
|
|
25
36
|
});
|
|
26
37
|
return /* @__PURE__ */ React__default.createElement("div", { ref, "data-testid": "date-picker-input" }, /* @__PURE__ */ React__default.createElement(Popover.Trigger, { disabled: true }, /* @__PURE__ */ React__default.createElement(
|
|
@@ -45,7 +56,9 @@ const DatePickerInputWithPopover = (props) => {
|
|
|
45
56
|
handleCloseCalendar();
|
|
46
57
|
},
|
|
47
58
|
isDisabled: disabled,
|
|
48
|
-
|
|
59
|
+
onClickDate: handleTogglePopover,
|
|
60
|
+
hourCycle,
|
|
61
|
+
granularity
|
|
49
62
|
}
|
|
50
63
|
)
|
|
51
64
|
)), /* @__PURE__ */ React__default.createElement(
|
|
@@ -31,7 +31,8 @@ const DatePickerInputBase = ({
|
|
|
31
31
|
{
|
|
32
32
|
onClick: onClean,
|
|
33
33
|
disabled,
|
|
34
|
-
"data-testid": "date-picker-input-base-clean-button"
|
|
34
|
+
"data-testid": "date-picker-input-base-clean-button",
|
|
35
|
+
type: "button"
|
|
35
36
|
},
|
|
36
37
|
/* @__PURE__ */ React__default.createElement(
|
|
37
38
|
IoMdClose,
|
|
@@ -45,7 +46,8 @@ const DatePickerInputBase = ({
|
|
|
45
46
|
{
|
|
46
47
|
onClick: onToggle,
|
|
47
48
|
disabled,
|
|
48
|
-
"data-testid": "date-picker-input-base-calendar-button"
|
|
49
|
+
"data-testid": "date-picker-input-base-calendar-button",
|
|
50
|
+
type: "button"
|
|
49
51
|
},
|
|
50
52
|
/* @__PURE__ */ React__default.createElement(
|
|
51
53
|
LiaCalendar,
|
|
@@ -2,7 +2,7 @@ import React__default from 'react';
|
|
|
2
2
|
import '@internationalized/date';
|
|
3
3
|
import 'react-aria';
|
|
4
4
|
import 'react-stately';
|
|
5
|
-
import {
|
|
5
|
+
import { dateToCalendarDateTime } from '../../utils/date.js';
|
|
6
6
|
import { useDatePickerInputCommon } from '../../hooks/useDatePickerInputCommon.js';
|
|
7
7
|
import { useDateRangePickerInput } from '../../hooks/useDateRangePickerInput.js';
|
|
8
8
|
import 'react-dropzone';
|
|
@@ -16,13 +16,21 @@ import { DateField } from './DateField.js';
|
|
|
16
16
|
import { DatePickerInputBase } from './DatePickerInputBase.js';
|
|
17
17
|
|
|
18
18
|
const DateRangePickerInputWithPopover = (props) => {
|
|
19
|
-
const {
|
|
19
|
+
const {
|
|
20
|
+
onChange,
|
|
21
|
+
value,
|
|
22
|
+
label,
|
|
23
|
+
variants,
|
|
24
|
+
disabled = false,
|
|
25
|
+
hourCycle = 24,
|
|
26
|
+
granularity = "day"
|
|
27
|
+
} = props;
|
|
20
28
|
const { endFieldProps, startFieldProps, ref, state } = useDateRangePickerInput({ value, onChange });
|
|
21
29
|
const { handleTogglePopover, handleChangeCalendar, handleCloseCalendar } = useDatePickerInputCommon({
|
|
22
30
|
onChangeRangeCalendar: (value2) => {
|
|
23
31
|
state.setDateRange({
|
|
24
|
-
start:
|
|
25
|
-
end:
|
|
32
|
+
start: dateToCalendarDateTime(value2?.start),
|
|
33
|
+
end: dateToCalendarDateTime(value2?.end)
|
|
26
34
|
});
|
|
27
35
|
}
|
|
28
36
|
});
|
|
@@ -48,7 +56,9 @@ const DateRangePickerInputWithPopover = (props) => {
|
|
|
48
56
|
handleCloseCalendar();
|
|
49
57
|
},
|
|
50
58
|
isDisabled: disabled,
|
|
51
|
-
|
|
59
|
+
onClickDate: handleTogglePopover,
|
|
60
|
+
hourCycle,
|
|
61
|
+
granularity
|
|
52
62
|
}
|
|
53
63
|
), /* @__PURE__ */ React__default.createElement("span", null, "-"), /* @__PURE__ */ React__default.createElement(
|
|
54
64
|
DateField,
|
|
@@ -59,7 +69,9 @@ const DateRangePickerInputWithPopover = (props) => {
|
|
|
59
69
|
handleCloseCalendar();
|
|
60
70
|
},
|
|
61
71
|
isDisabled: disabled,
|
|
62
|
-
|
|
72
|
+
onClickDate: handleTogglePopover,
|
|
73
|
+
hourCycle,
|
|
74
|
+
granularity
|
|
63
75
|
}
|
|
64
76
|
))
|
|
65
77
|
)), /* @__PURE__ */ React__default.createElement(
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
|
-
import { useTimeField } from '
|
|
2
|
+
import { useLocale, useTimeField } from 'react-aria';
|
|
3
|
+
import { useTimeFieldState } from 'react-stately';
|
|
3
4
|
import { DateSegment } from '../DatePicker/DateSegment.js';
|
|
4
5
|
|
|
5
|
-
const TimeField = (props) => {
|
|
6
|
-
const {
|
|
6
|
+
const TimeField = ({ disabled, ...props }) => {
|
|
7
|
+
const { locale } = useLocale();
|
|
8
|
+
const state = useTimeFieldState({
|
|
9
|
+
...props,
|
|
10
|
+
locale,
|
|
11
|
+
isDisabled: disabled
|
|
12
|
+
});
|
|
13
|
+
const ref = React__default.useRef(null);
|
|
14
|
+
const { fieldProps } = useTimeField(
|
|
15
|
+
{ "aria-label": "time-field" },
|
|
16
|
+
state,
|
|
17
|
+
ref
|
|
18
|
+
);
|
|
7
19
|
return /* @__PURE__ */ React__default.createElement("div", { ...fieldProps, ref, className: "flex flex-row" }, state.segments.map((segment, i) => /* @__PURE__ */ React__default.createElement(DateSegment, { key: i, segment, state })));
|
|
8
20
|
};
|
|
9
21
|
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { labelStyle, inputBox } from '@tecsinapse/cortex-core';
|
|
2
2
|
import React__default from 'react';
|
|
3
|
+
import { timeFromTimeValue } from '../../utils/date.js';
|
|
3
4
|
import { Input } from '../Input/index.js';
|
|
4
5
|
import { TimeField } from './TimeField.js';
|
|
5
6
|
|
|
6
7
|
const TimeFieldInput = (props) => {
|
|
7
|
-
const {
|
|
8
|
+
const {
|
|
9
|
+
onChange,
|
|
10
|
+
value,
|
|
11
|
+
label,
|
|
12
|
+
variants,
|
|
13
|
+
hourCycle = 24,
|
|
14
|
+
granularity = "minute",
|
|
15
|
+
disabled = false
|
|
16
|
+
} = props;
|
|
8
17
|
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
|
|
9
18
|
Input.Face,
|
|
10
19
|
{
|
|
@@ -13,7 +22,18 @@ const TimeFieldInput = (props) => {
|
|
|
13
22
|
"data-testid": "time-field-input"
|
|
14
23
|
},
|
|
15
24
|
/* @__PURE__ */ React__default.createElement("span", { className: labelStyle({}) }, label),
|
|
16
|
-
/* @__PURE__ */ React__default.createElement("div", { className: inputBox("", label) }, /* @__PURE__ */ React__default.createElement(
|
|
25
|
+
/* @__PURE__ */ React__default.createElement("div", { className: inputBox("", label) }, /* @__PURE__ */ React__default.createElement(
|
|
26
|
+
TimeField,
|
|
27
|
+
{
|
|
28
|
+
onChange: (value2) => {
|
|
29
|
+
onChange(timeFromTimeValue(value2));
|
|
30
|
+
},
|
|
31
|
+
value,
|
|
32
|
+
hourCycle,
|
|
33
|
+
granularity,
|
|
34
|
+
isDisabled: disabled
|
|
35
|
+
}
|
|
36
|
+
))
|
|
17
37
|
));
|
|
18
38
|
};
|
|
19
39
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createCalendar } from '@internationalized/date';
|
|
2
2
|
import { useLocale, useCalendar as useCalendar$1 } from 'react-aria';
|
|
3
3
|
import { useCalendarState } from 'react-stately';
|
|
4
|
-
import {
|
|
4
|
+
import { dateToCalendarDateTime, calendarDateToDate } from '../utils/date.js';
|
|
5
5
|
import 'react';
|
|
6
6
|
|
|
7
7
|
const useCalendar = ({ value, onChange }) => {
|
|
@@ -9,7 +9,7 @@ const useCalendar = ({ value, onChange }) => {
|
|
|
9
9
|
const state = useCalendarState({
|
|
10
10
|
locale,
|
|
11
11
|
createCalendar,
|
|
12
|
-
defaultValue: value ?
|
|
12
|
+
defaultValue: value ? dateToCalendarDateTime(value) : null,
|
|
13
13
|
onChange: (value2) => onChange(calendarDateToDate(value2))
|
|
14
14
|
});
|
|
15
15
|
const { calendarProps, title } = useCalendar$1({}, state);
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { useRef } from 'react';
|
|
2
2
|
import { useDatePicker } from 'react-aria';
|
|
3
3
|
import { useDatePickerState } from 'react-stately';
|
|
4
|
-
import {
|
|
4
|
+
import { dateToCalendarDateTime, calendarDateToDate } from '../utils/date.js';
|
|
5
5
|
|
|
6
6
|
const useDatePickerInput = ({
|
|
7
7
|
value,
|
|
8
8
|
onChange
|
|
9
9
|
}) => {
|
|
10
10
|
const state = useDatePickerState({
|
|
11
|
-
defaultValue: value ?
|
|
11
|
+
defaultValue: value ? dateToCalendarDateTime(value) : null,
|
|
12
12
|
onChange: (value2) => {
|
|
13
13
|
onChange(calendarDateToDate(value2));
|
|
14
14
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useRef } from 'react';
|
|
2
2
|
import { useDateRangePicker } from 'react-aria';
|
|
3
3
|
import { useDateRangePickerState } from 'react-stately';
|
|
4
|
-
import {
|
|
4
|
+
import { dateToCalendarDateTime, calendarDateToDate } from '../utils/date.js';
|
|
5
5
|
|
|
6
6
|
const useDateRangePickerInput = ({
|
|
7
7
|
value,
|
|
@@ -9,8 +9,8 @@ const useDateRangePickerInput = ({
|
|
|
9
9
|
}) => {
|
|
10
10
|
const state = useDateRangePickerState({
|
|
11
11
|
defaultValue: value ? {
|
|
12
|
-
start:
|
|
13
|
-
end:
|
|
12
|
+
start: dateToCalendarDateTime(value?.start),
|
|
13
|
+
end: dateToCalendarDateTime(value?.end)
|
|
14
14
|
} : null,
|
|
15
15
|
onChange: (value2) => {
|
|
16
16
|
onChange({
|
|
@@ -2,7 +2,7 @@ import { createCalendar } from '@internationalized/date';
|
|
|
2
2
|
import { useRef } from 'react';
|
|
3
3
|
import { useLocale, useRangeCalendar as useRangeCalendar$1 } from 'react-aria';
|
|
4
4
|
import { useRangeCalendarState } from 'react-stately';
|
|
5
|
-
import {
|
|
5
|
+
import { dateToCalendarDateTime, calendarDateToDate } from '../utils/date.js';
|
|
6
6
|
|
|
7
7
|
const useRangeCalendar = ({
|
|
8
8
|
value,
|
|
@@ -13,8 +13,8 @@ const useRangeCalendar = ({
|
|
|
13
13
|
locale,
|
|
14
14
|
createCalendar,
|
|
15
15
|
defaultValue: {
|
|
16
|
-
start:
|
|
17
|
-
end:
|
|
16
|
+
start: dateToCalendarDateTime(value?.start),
|
|
17
|
+
end: dateToCalendarDateTime(value?.end)
|
|
18
18
|
},
|
|
19
19
|
onChange: (value2) => onChange({
|
|
20
20
|
start: calendarDateToDate(value2.start),
|
package/dist/esm/utils/date.js
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CalendarDateTime, getLocalTimeZone, Time } from '@internationalized/date';
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
return new
|
|
3
|
+
const dateToCalendarDateTime = (value) => {
|
|
4
|
+
return new CalendarDateTime(
|
|
5
5
|
value?.getFullYear() ?? (/* @__PURE__ */ new Date()).getFullYear(),
|
|
6
6
|
value?.getMonth() !== void 0 ? value.getMonth() + 1 : (/* @__PURE__ */ new Date()).getMonth() + 1,
|
|
7
|
-
value?.getDate() ?? (/* @__PURE__ */ new Date()).getDate()
|
|
7
|
+
value?.getDate() ?? (/* @__PURE__ */ new Date()).getDate(),
|
|
8
|
+
value?.getHours() ?? (/* @__PURE__ */ new Date()).getHours(),
|
|
9
|
+
value?.getMinutes() ?? (/* @__PURE__ */ new Date()).getMinutes(),
|
|
10
|
+
value?.getSeconds() ?? (/* @__PURE__ */ new Date()).getSeconds()
|
|
8
11
|
);
|
|
9
12
|
};
|
|
10
13
|
const calendarDateToDate = (value) => {
|
|
11
14
|
if (!value) return void 0;
|
|
12
15
|
return value.toDate(getLocalTimeZone());
|
|
13
16
|
};
|
|
17
|
+
const timeFromTimeValue = (value) => {
|
|
18
|
+
if (!value) return void 0;
|
|
19
|
+
return new Time(value.hour, value.minute, value.second, value.millisecond);
|
|
20
|
+
};
|
|
14
21
|
|
|
15
|
-
export { calendarDateToDate,
|
|
22
|
+
export { calendarDateToDate, dateToCalendarDateTime, timeFromTimeValue };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { AriaDateFieldProps, DateValue } from 'react-aria';
|
|
3
3
|
interface DateFieldProps extends AriaDateFieldProps<DateValue> {
|
|
4
|
-
|
|
4
|
+
onClickDate?: () => void;
|
|
5
|
+
onClickTime?: () => void;
|
|
5
6
|
}
|
|
6
|
-
export declare const DateField: ({
|
|
7
|
+
export declare const DateField: ({ onClickDate, onClickTime, ...props }: DateFieldProps) => JSX.Element;
|
|
7
8
|
export {};
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { Granularity } from '@react-types/datepicker';
|
|
2
3
|
import { InputProps } from '../Input';
|
|
3
4
|
export interface DatePickerInputProps extends Omit<InputProps, 'value' | 'onChange'> {
|
|
4
5
|
value?: Date;
|
|
5
6
|
onChange: (date?: Date) => void;
|
|
7
|
+
hourCycle?: 12 | 24;
|
|
8
|
+
granularity?: Granularity;
|
|
6
9
|
}
|
|
7
10
|
export declare const DatePickerInput: (props: DatePickerInputProps) => JSX.Element;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { Granularity } from '@react-types/datepicker';
|
|
2
3
|
import { DateRange } from '../Calendar/RangeCalendar';
|
|
3
4
|
import { InputProps } from '../Input';
|
|
4
5
|
export interface DateRangePickerInputProps extends Omit<InputProps, 'value' | 'onChange'> {
|
|
5
6
|
value?: DateRange;
|
|
6
7
|
onChange: (date?: DateRange) => void;
|
|
8
|
+
hourCycle?: 12 | 24;
|
|
9
|
+
granularity?: Granularity;
|
|
7
10
|
}
|
|
8
11
|
export declare const DateRangePickerInput: (props: DateRangePickerInputProps) => JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
2
|
import { DateFieldState, DateSegment as DateSegmentType } from 'react-stately';
|
|
3
|
-
interface DateSegmentProps
|
|
3
|
+
interface DateSegmentProps {
|
|
4
4
|
segment: DateSegmentType;
|
|
5
5
|
state: DateFieldState;
|
|
6
6
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
3
|
-
export interface TimeFieldProps {
|
|
4
|
-
|
|
5
|
-
onChange: (number: TimeValueType) => void;
|
|
2
|
+
import { AriaTimeFieldProps, TimeValue } from 'react-aria';
|
|
3
|
+
export interface TimeFieldProps extends AriaTimeFieldProps<TimeValue> {
|
|
4
|
+
disabled?: boolean;
|
|
6
5
|
}
|
|
7
|
-
export declare const TimeField: (props: TimeFieldProps) => JSX.Element;
|
|
6
|
+
export declare const TimeField: ({ disabled, ...props }: TimeFieldProps) => JSX.Element;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { Time } from '@internationalized/date';
|
|
2
3
|
import { InputPropsBase } from '../Input';
|
|
3
|
-
export type TimeValueType = {
|
|
4
|
-
hour: number;
|
|
5
|
-
minute: number;
|
|
6
|
-
};
|
|
7
4
|
export interface TimeFieldInputProps extends InputPropsBase {
|
|
8
|
-
value?:
|
|
9
|
-
onChange: (
|
|
5
|
+
value?: Time;
|
|
6
|
+
onChange: (value?: Time) => void;
|
|
7
|
+
hourCycle?: 12 | 24;
|
|
8
|
+
granularity?: 'hour' | 'minute' | 'second';
|
|
9
|
+
disabled?: boolean;
|
|
10
10
|
}
|
|
11
11
|
export declare const TimeFieldInput: (props: TimeFieldInputProps) => JSX.Element;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare const
|
|
1
|
+
import { CalendarDateTime, Time } from '@internationalized/date';
|
|
2
|
+
import { TimeValue } from 'react-aria';
|
|
3
|
+
export declare const dateToCalendarDateTime: (value?: Date) => CalendarDateTime;
|
|
4
|
+
export declare const calendarDateToDate: (value?: CalendarDateTime) => Date | undefined;
|
|
5
|
+
export declare const timeFromTimeValue: (value?: TimeValue) => Time | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tecsinapse/cortex-react",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.17",
|
|
4
4
|
"description": "React components based in @tecsinapse/cortex-core",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/esm/index.js",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"react-dom": ">=18.0.0",
|
|
49
49
|
"tailwind": ">=3.3.0"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "54a3803d3508ab42402e82c1a459173ad7d03579"
|
|
52
52
|
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
var reactAria = require('react-aria');
|
|
5
|
-
var reactStately = require('react-stately');
|
|
6
|
-
var date = require('@internationalized/date');
|
|
7
|
-
|
|
8
|
-
const useTimeField = (props) => {
|
|
9
|
-
const { value, onChange } = props;
|
|
10
|
-
const { locale } = reactAria.useLocale();
|
|
11
|
-
const state = reactStately.useTimeFieldState({
|
|
12
|
-
value: new date.Time(value?.hour, value?.minute),
|
|
13
|
-
onChange: (timeValue) => onChange({ hour: timeValue.hour, minute: timeValue.minute }),
|
|
14
|
-
locale
|
|
15
|
-
});
|
|
16
|
-
const ref = React.useRef(null);
|
|
17
|
-
const { fieldProps } = reactAria.useTimeField(
|
|
18
|
-
{
|
|
19
|
-
"aria-label": "time-field",
|
|
20
|
-
hourCycle: 24
|
|
21
|
-
},
|
|
22
|
-
state,
|
|
23
|
-
ref
|
|
24
|
-
);
|
|
25
|
-
return {
|
|
26
|
-
fieldProps,
|
|
27
|
-
ref,
|
|
28
|
-
state
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
exports.useTimeField = useTimeField;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import React__default from 'react';
|
|
2
|
-
import { useLocale, useTimeField as useTimeField$1 } from 'react-aria';
|
|
3
|
-
import { useTimeFieldState } from 'react-stately';
|
|
4
|
-
import { Time } from '@internationalized/date';
|
|
5
|
-
|
|
6
|
-
const useTimeField = (props) => {
|
|
7
|
-
const { value, onChange } = props;
|
|
8
|
-
const { locale } = useLocale();
|
|
9
|
-
const state = useTimeFieldState({
|
|
10
|
-
value: new Time(value?.hour, value?.minute),
|
|
11
|
-
onChange: (timeValue) => onChange({ hour: timeValue.hour, minute: timeValue.minute }),
|
|
12
|
-
locale
|
|
13
|
-
});
|
|
14
|
-
const ref = React__default.useRef(null);
|
|
15
|
-
const { fieldProps } = useTimeField$1(
|
|
16
|
-
{
|
|
17
|
-
"aria-label": "time-field",
|
|
18
|
-
hourCycle: 24
|
|
19
|
-
},
|
|
20
|
-
state,
|
|
21
|
-
ref
|
|
22
|
-
);
|
|
23
|
-
return {
|
|
24
|
-
fieldProps,
|
|
25
|
-
ref,
|
|
26
|
-
state
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export { useTimeField };
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { TimeFieldProps } from '../components/TimeField';
|
|
3
|
-
export declare const useTimeField: (props: TimeFieldProps) => {
|
|
4
|
-
fieldProps: import("@react-types/shared").GroupDOMAttributes;
|
|
5
|
-
ref: React.MutableRefObject<null>;
|
|
6
|
-
state: import("react-stately").TimeFieldState;
|
|
7
|
-
};
|