@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.
Files changed (42) hide show
  1. package/dist/cjs/components/DatePicker/DateField.js +20 -3
  2. package/dist/cjs/components/DatePicker/DatePickerInput.js +17 -4
  3. package/dist/cjs/components/DatePicker/DatePickerInputBase.js +4 -2
  4. package/dist/cjs/components/DatePicker/DateRangePickerInput.js +17 -5
  5. package/dist/cjs/components/ProgressBar/ProgressBar.js +1 -1
  6. package/dist/cjs/components/TimeField/TimeField.js +15 -3
  7. package/dist/cjs/components/TimeField/TimeFieldInput.js +22 -2
  8. package/dist/cjs/components/Uploader/Dropzone.js +6 -4
  9. package/dist/cjs/components/Uploader/Upload.js +17 -1
  10. package/dist/cjs/hooks/useCalendar.js +1 -1
  11. package/dist/cjs/hooks/useDatePickerInput.js +1 -1
  12. package/dist/cjs/hooks/useDateRangePickerInput.js +2 -2
  13. package/dist/cjs/hooks/useFileUpload.js +3 -1
  14. package/dist/cjs/hooks/useRangeCalendar.js +2 -2
  15. package/dist/cjs/utils/date.js +12 -4
  16. package/dist/esm/components/DatePicker/DateField.js +21 -4
  17. package/dist/esm/components/DatePicker/DatePickerInput.js +18 -5
  18. package/dist/esm/components/DatePicker/DatePickerInputBase.js +4 -2
  19. package/dist/esm/components/DatePicker/DateRangePickerInput.js +18 -6
  20. package/dist/esm/components/ProgressBar/ProgressBar.js +1 -1
  21. package/dist/esm/components/TimeField/TimeField.js +15 -3
  22. package/dist/esm/components/TimeField/TimeFieldInput.js +22 -2
  23. package/dist/esm/components/Uploader/Dropzone.js +6 -4
  24. package/dist/esm/components/Uploader/Upload.js +17 -1
  25. package/dist/esm/hooks/useCalendar.js +2 -2
  26. package/dist/esm/hooks/useDatePickerInput.js +2 -2
  27. package/dist/esm/hooks/useDateRangePickerInput.js +3 -3
  28. package/dist/esm/hooks/useFileUpload.js +3 -1
  29. package/dist/esm/hooks/useRangeCalendar.js +3 -3
  30. package/dist/esm/utils/date.js +12 -5
  31. package/dist/types/components/DatePicker/DateField.d.ts +3 -2
  32. package/dist/types/components/DatePicker/DatePickerInput.d.ts +3 -0
  33. package/dist/types/components/DatePicker/DateRangePickerInput.d.ts +3 -0
  34. package/dist/types/components/DatePicker/DateSegment.d.ts +2 -2
  35. package/dist/types/components/TimeField/TimeField.d.ts +4 -5
  36. package/dist/types/components/TimeField/TimeFieldInput.d.ts +6 -6
  37. package/dist/types/components/Uploader/types.d.ts +3 -1
  38. package/dist/types/utils/date.d.ts +5 -3
  39. package/package.json +2 -2
  40. package/dist/cjs/hooks/useTimeField.js +0 -32
  41. package/dist/esm/hooks/useTimeField.js +0 -30
  42. 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 = ({ onClick, ...props }) => {
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(DateSegment.DateSegment, { key: i, segment, state }))
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 { onChange, value, label, variants, disabled } = props;
22
- const { fieldProps, state, ref } = useDatePickerInput.useDatePickerInput({ value, onChange });
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.setDateValue(date.dateToCalendarDate(value2));
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
- onClick: handleTogglePopover
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 { onChange, value, label, variants, disabled = false } = props;
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.dateToCalendarDate(value2?.start),
27
- end: date.dateToCalendarDate(value2?.end)
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
- onClick: handleTogglePopover
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
- onClick: handleTogglePopover
74
+ onClickDate: handleTogglePopover,
75
+ hourCycle,
76
+ granularity
65
77
  }
66
78
  ))
67
79
  )), /* @__PURE__ */ React.createElement(
@@ -4,7 +4,7 @@ var React = require('react');
4
4
  var Progress = require('./Progress.js');
5
5
 
6
6
  const ProgressBar = ({
7
- value = 50,
7
+ value = 100,
8
8
  intent = "default",
9
9
  infinite = false
10
10
  }) => {
@@ -1,11 +1,23 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var useTimeField = require('../../hooks/useTimeField.js');
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 { fieldProps, ref, state } = useTimeField.useTimeField(props);
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 { onChange, value, label, variants } = props;
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(TimeField.TimeField, { onChange, value }))
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
- ...dropzoneProps.getRootProps(),
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": dropzoneProps.isDragActive
23
+ "border-success-medium bg-gray-100": isDragActive
22
24
  }
23
25
  )
24
26
  },
25
- /* @__PURE__ */ React.createElement("input", { ...dropzoneProps.getInputProps() }),
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(ProgressBar.ProgressBar, { intent: "info", infinite: file.status !== "success" }));
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.dateToCalendarDate(value) : null,
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.dateToCalendarDate(value) : null,
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.dateToCalendarDate(value?.start),
15
- end: date.dateToCalendarDate(value?.end)
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.dateToCalendarDate(value?.start),
19
- end: date$1.dateToCalendarDate(value?.end)
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),
@@ -2,17 +2,25 @@
2
2
 
3
3
  var date = require('@internationalized/date');
4
4
 
5
- const dateToCalendarDate = (value) => {
6
- return new date.CalendarDate(
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.dateToCalendarDate = dateToCalendarDate;
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 = ({ onClick, ...props }) => {
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(DateSegment, { key: i, segment, state }))
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 { dateToCalendarDate } from '../../utils/date.js';
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 { onChange, value, label, variants, disabled } = props;
20
- const { fieldProps, state, ref } = useDatePickerInput({ value, onChange });
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.setDateValue(dateToCalendarDate(value2));
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
- onClick: handleTogglePopover
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 { dateToCalendarDate } from '../../utils/date.js';
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 { onChange, value, label, variants, disabled = false } = props;
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: dateToCalendarDate(value2?.start),
25
- end: dateToCalendarDate(value2?.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
- onClick: handleTogglePopover
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
- onClick: handleTogglePopover
72
+ onClickDate: handleTogglePopover,
73
+ hourCycle,
74
+ granularity
63
75
  }
64
76
  ))
65
77
  )), /* @__PURE__ */ React__default.createElement(
@@ -2,7 +2,7 @@ import React__default from 'react';
2
2
  import { Progress } from './Progress.js';
3
3
 
4
4
  const ProgressBar = ({
5
- value = 50,
5
+ value = 100,
6
6
  intent = "default",
7
7
  infinite = false
8
8
  }) => {
@@ -1,9 +1,21 @@
1
1
  import React__default from 'react';
2
- import { useTimeField } from '../../hooks/useTimeField.js';
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 { fieldProps, ref, state } = useTimeField(props);
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 { onChange, value, label, variants } = props;
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(TimeField, { onChange, value }))
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
- ...dropzoneProps.getRootProps(),
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": dropzoneProps.isDragActive
21
+ "border-success-medium bg-gray-100": isDragActive
20
22
  }
21
23
  )
22
24
  },
23
- /* @__PURE__ */ React__default.createElement("input", { ...dropzoneProps.getInputProps() }),
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(ProgressBar, { intent: "info", infinite: file.status !== "success" }));
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 { dateToCalendarDate, calendarDateToDate } from '../utils/date.js';
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 ? dateToCalendarDate(value) : null,
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 { dateToCalendarDate, calendarDateToDate } from '../utils/date.js';
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 ? dateToCalendarDate(value) : null,
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 { dateToCalendarDate, calendarDateToDate } from '../utils/date.js';
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: dateToCalendarDate(value?.start),
13
- end: dateToCalendarDate(value?.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 { dateToCalendarDate, calendarDateToDate } from '../utils/date.js';
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: dateToCalendarDate(value?.start),
17
- end: dateToCalendarDate(value?.end)
16
+ start: dateToCalendarDateTime(value?.start),
17
+ end: dateToCalendarDateTime(value?.end)
18
18
  },
19
19
  onChange: (value2) => onChange({
20
20
  start: calendarDateToDate(value2.start),
@@ -1,15 +1,22 @@
1
- import { CalendarDate, getLocalTimeZone } from '@internationalized/date';
1
+ import { CalendarDateTime, getLocalTimeZone, Time } from '@internationalized/date';
2
2
 
3
- const dateToCalendarDate = (value) => {
4
- return new CalendarDate(
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, dateToCalendarDate };
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
- onClick?: () => void;
4
+ onClickDate?: () => void;
5
+ onClickTime?: () => void;
5
6
  }
6
- export declare const DateField: ({ onClick, ...props }: DateFieldProps) => JSX.Element;
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
- import { HTMLAttributes } from 'react';
1
+ /// <reference types="react" />
2
2
  import { DateFieldState, DateSegment as DateSegmentType } from 'react-stately';
3
- interface DateSegmentProps extends HTMLAttributes<HTMLDivElement> {
3
+ interface DateSegmentProps {
4
4
  segment: DateSegmentType;
5
5
  state: DateFieldState;
6
6
  }
@@ -1,7 +1,6 @@
1
1
  /// <reference types="react" />
2
- import { TimeValueType } from './TimeFieldInput';
3
- export interface TimeFieldProps {
4
- value?: TimeValueType;
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?: TimeValueType;
9
- onChange: (number: TimeValueType) => void;
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: FileStatus;
45
+ status: 'success' | 'error' | 'uploading';
44
46
  };
45
47
  export interface RootUploaderProps<T> {
46
48
  open: boolean;
@@ -1,3 +1,5 @@
1
- import { CalendarDate } from '@internationalized/date';
2
- export declare const dateToCalendarDate: (value?: Date) => CalendarDate;
3
- export declare const calendarDateToDate: (value: CalendarDate) => Date | undefined;
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.16",
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": "533e8dc8a0f331d6d4ee09c0c3da7c02b6297c97"
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
- };