@tecsinapse/cortex-react 1.9.16 → 1.9.18-beta.0
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/ProgressBar/ProgressBar.js +1 -1
- package/dist/cjs/components/TimeField/TimeField.js +15 -3
- package/dist/cjs/components/TimeField/TimeFieldInput.js +22 -2
- package/dist/cjs/components/Uploader/Dropzone.js +6 -4
- package/dist/cjs/components/Uploader/Upload.js +17 -1
- 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/useFileUpload.js +3 -1
- 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/ProgressBar/ProgressBar.js +1 -1
- package/dist/esm/components/TimeField/TimeField.js +15 -3
- package/dist/esm/components/TimeField/TimeFieldInput.js +22 -2
- package/dist/esm/components/Uploader/Dropzone.js +6 -4
- package/dist/esm/components/Uploader/Upload.js +17 -1
- 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/useFileUpload.js +3 -1
- 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/components/Uploader/types.d.ts +3 -1
- 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
|
|
|
@@ -4,6 +4,7 @@ var React = require('react');
|
|
|
4
4
|
var hi2 = require('react-icons/hi2');
|
|
5
5
|
var cortexCore = require('@tecsinapse/cortex-core');
|
|
6
6
|
var clsx = require('clsx');
|
|
7
|
+
var Tooltip = require('../Tooltip.js');
|
|
7
8
|
|
|
8
9
|
const Dropzone = ({
|
|
9
10
|
dropzoneProps,
|
|
@@ -11,19 +12,20 @@ const Dropzone = ({
|
|
|
11
12
|
dropText = "By dragging and dropping it here or clicking the button below",
|
|
12
13
|
buttonText = "Select File"
|
|
13
14
|
}) => {
|
|
15
|
+
const { getRootProps, getInputProps, isDragActive, isFileLimitReached } = dropzoneProps;
|
|
14
16
|
return /* @__PURE__ */ React.createElement(
|
|
15
17
|
"div",
|
|
16
18
|
{
|
|
17
|
-
...
|
|
19
|
+
...getRootProps(),
|
|
18
20
|
className: clsx(
|
|
19
21
|
"bg-white w-full border-dashed border-2 p-deca flex flex-col justify-center rounded-mili",
|
|
20
22
|
{
|
|
21
|
-
"border-success-medium bg-gray-100":
|
|
23
|
+
"border-success-medium bg-gray-100": isDragActive
|
|
22
24
|
}
|
|
23
25
|
)
|
|
24
26
|
},
|
|
25
|
-
/* @__PURE__ */ React.createElement("input", { ...
|
|
26
|
-
/* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center text-center items-center gap-deca" }, /* @__PURE__ */ React.createElement(hi2.HiOutlineCloudArrowUp, { className: "text-primary-medium", size: 35 }), /* @__PURE__ */ React.createElement("div", { className: "gap-mili" }, /* @__PURE__ */ React.createElement("p", { className: "text-lg font-semibold", "data-testid": "select-dropzone" }, selectFileText), /* @__PURE__ */ React.createElement("p", { className: "text-sm text-secondary-medium" }, dropText)), /* @__PURE__ */ React.createElement("button", { className: cortexCore.button() }, buttonText))
|
|
27
|
+
/* @__PURE__ */ React.createElement("input", { ...getInputProps() }),
|
|
28
|
+
/* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center text-center items-center gap-deca" }, /* @__PURE__ */ React.createElement(hi2.HiOutlineCloudArrowUp, { className: "text-primary-medium", size: 35 }), /* @__PURE__ */ React.createElement("div", { className: "gap-mili" }, /* @__PURE__ */ React.createElement("p", { className: "text-lg font-semibold", "data-testid": "select-dropzone" }, selectFileText), /* @__PURE__ */ React.createElement("p", { className: "text-sm text-secondary-medium" }, dropText)), isFileLimitReached ? /* @__PURE__ */ React.createElement(Tooltip.Tooltip, { text: "Voc\xEA s\xF3 pode selecionar um \xFAnico arquivo." }, /* @__PURE__ */ React.createElement("button", { disabled: true, className: clsx(cortexCore.button(), "cursor-not-allowed") }, buttonText)) : /* @__PURE__ */ React.createElement("button", { className: cortexCore.button() }, buttonText))
|
|
27
29
|
);
|
|
28
30
|
};
|
|
29
31
|
|
|
@@ -7,6 +7,16 @@ var md = require('react-icons/md');
|
|
|
7
7
|
var ProgressBar = require('../ProgressBar/ProgressBar.js');
|
|
8
8
|
|
|
9
9
|
const File = ({ file, index, onDelete }) => {
|
|
10
|
+
function statusIntent(status) {
|
|
11
|
+
switch (status) {
|
|
12
|
+
case "success":
|
|
13
|
+
return "success";
|
|
14
|
+
case "error":
|
|
15
|
+
return "error";
|
|
16
|
+
default:
|
|
17
|
+
return "info";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
10
20
|
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col", key: index }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between border rounded-t-mili shadow p-mili" }, /* @__PURE__ */ React.createElement("div", { className: "flex gap-centi" }, file.file && file.file.type.startsWith("image/") ? /* @__PURE__ */ React.createElement(
|
|
11
21
|
"img",
|
|
12
22
|
{
|
|
@@ -25,7 +35,13 @@ const File = ({ file, index, onDelete }) => {
|
|
|
25
35
|
})
|
|
26
36
|
},
|
|
27
37
|
/* @__PURE__ */ React.createElement(md.MdClose, { size: 20 })
|
|
28
|
-
)), /* @__PURE__ */ React.createElement(
|
|
38
|
+
)), /* @__PURE__ */ React.createElement(
|
|
39
|
+
ProgressBar.ProgressBar,
|
|
40
|
+
{
|
|
41
|
+
intent: statusIntent(file.status),
|
|
42
|
+
infinite: file.status !== "success"
|
|
43
|
+
}
|
|
44
|
+
));
|
|
29
45
|
};
|
|
30
46
|
|
|
31
47
|
exports.File = File;
|
|
@@ -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({
|
|
@@ -68,6 +68,7 @@ const useFileUpload = ({
|
|
|
68
68
|
const handleRemoveFile = React.useCallback((index) => {
|
|
69
69
|
setFiles((prevFiles) => prevFiles.filter((_, i) => i !== index));
|
|
70
70
|
}, []);
|
|
71
|
+
const isFileLimitReached = !allowMultiple && files.length > 0;
|
|
71
72
|
return {
|
|
72
73
|
onOpen,
|
|
73
74
|
onClose,
|
|
@@ -75,7 +76,8 @@ const useFileUpload = ({
|
|
|
75
76
|
dropzoneProps: {
|
|
76
77
|
getInputProps,
|
|
77
78
|
getRootProps,
|
|
78
|
-
isDragActive
|
|
79
|
+
isDragActive,
|
|
80
|
+
isFileLimitReached
|
|
79
81
|
},
|
|
80
82
|
open: isOpen,
|
|
81
83
|
files
|
|
@@ -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
|
|
|
@@ -2,6 +2,7 @@ import React__default from 'react';
|
|
|
2
2
|
import { HiOutlineCloudArrowUp } from 'react-icons/hi2';
|
|
3
3
|
import { button } from '@tecsinapse/cortex-core';
|
|
4
4
|
import clsx from 'clsx';
|
|
5
|
+
import { Tooltip } from '../Tooltip.js';
|
|
5
6
|
|
|
6
7
|
const Dropzone = ({
|
|
7
8
|
dropzoneProps,
|
|
@@ -9,19 +10,20 @@ const Dropzone = ({
|
|
|
9
10
|
dropText = "By dragging and dropping it here or clicking the button below",
|
|
10
11
|
buttonText = "Select File"
|
|
11
12
|
}) => {
|
|
13
|
+
const { getRootProps, getInputProps, isDragActive, isFileLimitReached } = dropzoneProps;
|
|
12
14
|
return /* @__PURE__ */ React__default.createElement(
|
|
13
15
|
"div",
|
|
14
16
|
{
|
|
15
|
-
...
|
|
17
|
+
...getRootProps(),
|
|
16
18
|
className: clsx(
|
|
17
19
|
"bg-white w-full border-dashed border-2 p-deca flex flex-col justify-center rounded-mili",
|
|
18
20
|
{
|
|
19
|
-
"border-success-medium bg-gray-100":
|
|
21
|
+
"border-success-medium bg-gray-100": isDragActive
|
|
20
22
|
}
|
|
21
23
|
)
|
|
22
24
|
},
|
|
23
|
-
/* @__PURE__ */ React__default.createElement("input", { ...
|
|
24
|
-
/* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col justify-center text-center items-center gap-deca" }, /* @__PURE__ */ React__default.createElement(HiOutlineCloudArrowUp, { className: "text-primary-medium", size: 35 }), /* @__PURE__ */ React__default.createElement("div", { className: "gap-mili" }, /* @__PURE__ */ React__default.createElement("p", { className: "text-lg font-semibold", "data-testid": "select-dropzone" }, selectFileText), /* @__PURE__ */ React__default.createElement("p", { className: "text-sm text-secondary-medium" }, dropText)), /* @__PURE__ */ React__default.createElement("button", { className: button() }, buttonText))
|
|
25
|
+
/* @__PURE__ */ React__default.createElement("input", { ...getInputProps() }),
|
|
26
|
+
/* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col justify-center text-center items-center gap-deca" }, /* @__PURE__ */ React__default.createElement(HiOutlineCloudArrowUp, { className: "text-primary-medium", size: 35 }), /* @__PURE__ */ React__default.createElement("div", { className: "gap-mili" }, /* @__PURE__ */ React__default.createElement("p", { className: "text-lg font-semibold", "data-testid": "select-dropzone" }, selectFileText), /* @__PURE__ */ React__default.createElement("p", { className: "text-sm text-secondary-medium" }, dropText)), isFileLimitReached ? /* @__PURE__ */ React__default.createElement(Tooltip, { text: "Voc\xEA s\xF3 pode selecionar um \xFAnico arquivo." }, /* @__PURE__ */ React__default.createElement("button", { disabled: true, className: clsx(button(), "cursor-not-allowed") }, buttonText)) : /* @__PURE__ */ React__default.createElement("button", { className: button() }, buttonText))
|
|
25
27
|
);
|
|
26
28
|
};
|
|
27
29
|
|
|
@@ -5,6 +5,16 @@ import { MdClose } from 'react-icons/md';
|
|
|
5
5
|
import { ProgressBar } from '../ProgressBar/ProgressBar.js';
|
|
6
6
|
|
|
7
7
|
const File = ({ file, index, onDelete }) => {
|
|
8
|
+
function statusIntent(status) {
|
|
9
|
+
switch (status) {
|
|
10
|
+
case "success":
|
|
11
|
+
return "success";
|
|
12
|
+
case "error":
|
|
13
|
+
return "error";
|
|
14
|
+
default:
|
|
15
|
+
return "info";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
8
18
|
return /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col", key: index }, /* @__PURE__ */ React__default.createElement("div", { className: "flex items-center justify-between border rounded-t-mili shadow p-mili" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex gap-centi" }, file.file && file.file.type.startsWith("image/") ? /* @__PURE__ */ React__default.createElement(
|
|
9
19
|
"img",
|
|
10
20
|
{
|
|
@@ -23,7 +33,13 @@ const File = ({ file, index, onDelete }) => {
|
|
|
23
33
|
})
|
|
24
34
|
},
|
|
25
35
|
/* @__PURE__ */ React__default.createElement(MdClose, { size: 20 })
|
|
26
|
-
)), /* @__PURE__ */ React__default.createElement(
|
|
36
|
+
)), /* @__PURE__ */ React__default.createElement(
|
|
37
|
+
ProgressBar,
|
|
38
|
+
{
|
|
39
|
+
intent: statusIntent(file.status),
|
|
40
|
+
infinite: file.status !== "success"
|
|
41
|
+
}
|
|
42
|
+
));
|
|
27
43
|
};
|
|
28
44
|
|
|
29
45
|
export { File };
|
|
@@ -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({
|
|
@@ -66,6 +66,7 @@ const useFileUpload = ({
|
|
|
66
66
|
const handleRemoveFile = useCallback((index) => {
|
|
67
67
|
setFiles((prevFiles) => prevFiles.filter((_, i) => i !== index));
|
|
68
68
|
}, []);
|
|
69
|
+
const isFileLimitReached = !allowMultiple && files.length > 0;
|
|
69
70
|
return {
|
|
70
71
|
onOpen,
|
|
71
72
|
onClose,
|
|
@@ -73,7 +74,8 @@ const useFileUpload = ({
|
|
|
73
74
|
dropzoneProps: {
|
|
74
75
|
getInputProps,
|
|
75
76
|
getRootProps,
|
|
76
|
-
isDragActive
|
|
77
|
+
isDragActive,
|
|
78
|
+
isFileLimitReached
|
|
77
79
|
},
|
|
78
80
|
open: isOpen,
|
|
79
81
|
files
|
|
@@ -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;
|
|
@@ -18,12 +18,14 @@ export interface UseDropzoneProps {
|
|
|
18
18
|
getRootProps: <T extends DropzoneRootProps>(props?: T) => T;
|
|
19
19
|
getInputProps: <T extends DropzoneInputProps>(props?: T) => T;
|
|
20
20
|
isDragActive: boolean;
|
|
21
|
+
isFileLimitReached: boolean;
|
|
21
22
|
}
|
|
22
23
|
export interface DropzoneProps {
|
|
23
24
|
dropzoneProps: UseDropzoneProps;
|
|
24
25
|
selectFileText?: string;
|
|
25
26
|
dropText?: string;
|
|
26
27
|
buttonText?: string;
|
|
28
|
+
isFileLimitReached?: boolean;
|
|
27
29
|
}
|
|
28
30
|
export interface ModalProps {
|
|
29
31
|
open: boolean;
|
|
@@ -40,7 +42,7 @@ export type FileUpload<T> = {
|
|
|
40
42
|
file: File;
|
|
41
43
|
metadata?: T;
|
|
42
44
|
uid: string;
|
|
43
|
-
status:
|
|
45
|
+
status: 'success' | 'error' | 'uploading';
|
|
44
46
|
};
|
|
45
47
|
export interface RootUploaderProps<T> {
|
|
46
48
|
open: boolean;
|
|
@@ -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.18-beta.0",
|
|
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": "5727a77e217321612dfb73ea9bf72a9db88c4930"
|
|
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
|
-
};
|