@tecsinapse/cortex-react 1.3.0-beta.26 → 1.3.0-beta.28

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 (29) hide show
  1. package/dist/cjs/components/DatePicker/Content.js +21 -0
  2. package/dist/cjs/components/DatePicker/DatePickerInput.js +11 -8
  3. package/dist/cjs/components/DatePicker/DatePickerInputBase.js +1 -3
  4. package/dist/cjs/components/DatePicker/DateRangePickerInput.js +11 -9
  5. package/dist/cjs/components/Input/Mask.js +13 -33
  6. package/dist/cjs/components/Input/index.js +1 -3
  7. package/dist/cjs/components/Input/masks.js +43 -0
  8. package/dist/cjs/components/Menubar/MostUsedList.js +1 -1
  9. package/dist/cjs/components/Select/Root.js +1 -1
  10. package/dist/cjs/index.js +5 -0
  11. package/dist/cjs/service/SnackbarSonner.js +1 -1
  12. package/dist/esm/components/DatePicker/Content.js +19 -0
  13. package/dist/esm/components/DatePicker/DatePickerInput.js +11 -8
  14. package/dist/esm/components/DatePicker/DatePickerInputBase.js +1 -3
  15. package/dist/esm/components/DatePicker/DateRangePickerInput.js +11 -9
  16. package/dist/esm/components/Input/Mask.js +13 -31
  17. package/dist/esm/components/Input/index.js +2 -4
  18. package/dist/esm/components/Input/masks.js +38 -0
  19. package/dist/esm/components/Menubar/MostUsedList.js +1 -1
  20. package/dist/esm/components/Select/Root.js +1 -1
  21. package/dist/esm/index.js +1 -0
  22. package/dist/esm/service/SnackbarSonner.js +1 -1
  23. package/dist/types/components/DatePicker/Content.d.ts +5 -0
  24. package/dist/types/components/DatePicker/DatePickerInputBase.d.ts +1 -2
  25. package/dist/types/components/Input/Mask.d.ts +2 -4
  26. package/dist/types/components/Input/index.d.ts +2 -3
  27. package/dist/types/components/Input/masks.d.ts +39 -0
  28. package/dist/types/components/Input/types.d.ts +9 -5
  29. package/package.json +2 -2
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ require('@internationalized/date');
5
+ require('react-aria');
6
+ require('react-stately');
7
+ require('@floating-ui/react');
8
+ var useOutsideClickListener = require('../../hooks/useOutsideClickListener.js');
9
+ var Context = require('../Popover/Context.js');
10
+
11
+ const Content = ({ children }) => {
12
+ const { setIsOpen } = Context.usePopoverContext();
13
+ const ref = React.useRef(null);
14
+ useOutsideClickListener.useOutsideClickListener({
15
+ ref,
16
+ onClickOutside: () => setIsOpen(false)
17
+ });
18
+ return /* @__PURE__ */ React.createElement("div", { ref }, children);
19
+ };
20
+
21
+ exports.Content = Content;
@@ -10,40 +10,43 @@ require('@floating-ui/react');
10
10
  var Calendar = require('../Calendar/Calendar.js');
11
11
  var DateField = require('./DateField.js');
12
12
  var DatePickerInputBase = require('./DatePickerInputBase.js');
13
+ var index = require('../Popover/index.js');
14
+ var Context = require('../Popover/Context.js');
15
+ var Content = require('./Content.js');
13
16
 
14
- const DatePickerInput = (props) => {
17
+ const DatePickerInputWithPopover = (props) => {
18
+ const { setIsOpen } = Context.usePopoverContext();
15
19
  const { onChange, value, label, variants } = props;
16
20
  const { fieldProps, state, ref } = useDatePickerInput.useDatePickerInput({ value, onChange });
17
- return /* @__PURE__ */ React.createElement("div", { "data-testid": "date-picker-input" }, /* @__PURE__ */ React.createElement(
21
+ return /* @__PURE__ */ React.createElement("div", { ref, "data-testid": "date-picker-input" }, /* @__PURE__ */ React.createElement(index.Popover.Trigger, null, /* @__PURE__ */ React.createElement(
18
22
  DatePickerInputBase.DatePickerInputBase,
19
23
  {
20
- onClickCalendar: () => state.isOpen ? state.close() : state.open(),
21
24
  variants: {
22
25
  ...variants,
23
26
  intent: state.isInvalid ? "error" : variants?.intent
24
27
  },
25
28
  label
26
29
  },
27
- /* @__PURE__ */ React.createElement("div", { ref }, /* @__PURE__ */ React.createElement(
30
+ /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(
28
31
  DateField.DateField,
29
32
  {
30
33
  ...fieldProps,
31
34
  onChange: (value2) => {
32
35
  state.setDateValue(value2);
33
- state.close();
34
36
  }
35
37
  }
36
38
  ))
37
- ), state.isOpen ? /* @__PURE__ */ React.createElement("div", { className: "absolute" }, /* @__PURE__ */ React.createElement(
39
+ )), /* @__PURE__ */ React.createElement(index.Popover.Content, { className: "bg-inherit shadow-none border-none" }, /* @__PURE__ */ React.createElement(
38
40
  Calendar.Calendar,
39
41
  {
40
42
  value,
41
43
  onChange: (value2) => {
44
+ setIsOpen(false);
42
45
  state.setDateValue(utils.dateToCalendarDate(value2));
43
- state.close();
44
46
  }
45
47
  }
46
- )) : /* @__PURE__ */ React.createElement(React.Fragment, null));
48
+ )));
47
49
  };
50
+ const DatePickerInput = (props) => /* @__PURE__ */ React.createElement(index.Popover.Root, { placement: "bottom-start", trigger: "click" }, /* @__PURE__ */ React.createElement(Content.Content, null, /* @__PURE__ */ React.createElement(DatePickerInputWithPopover, { ...props })));
48
51
 
49
52
  exports.DatePickerInput = DatePickerInput;
@@ -8,14 +8,12 @@ var index = require('../Input/index.js');
8
8
  const DatePickerInputBase = ({
9
9
  children,
10
10
  variants,
11
- label,
12
- onClickCalendar
11
+ label
13
12
  }) => {
14
13
  return /* @__PURE__ */ React.createElement(index.Input.Face, { variants, "data-testid": "date-picker-input-base" }, /* @__PURE__ */ React.createElement("span", { className: cortexCore.labelStyle({}) }, label), /* @__PURE__ */ React.createElement("div", { className: cortexCore.inputBox("", label, "w-full flex flex-row") }, children), /* @__PURE__ */ React.createElement(index.Input.Right, { className: "" }, /* @__PURE__ */ React.createElement(
15
14
  lia.LiaCalendar,
16
15
  {
17
16
  className: "cursor-pointer mt-centi",
18
- onClick: onClickCalendar,
19
17
  "data-testid": "date-picker-input-base-calendar"
20
18
  }
21
19
  )));
@@ -10,28 +10,30 @@ require('@floating-ui/react');
10
10
  var RangeCalendar = require('../Calendar/RangeCalendar.js');
11
11
  var DateField = require('./DateField.js');
12
12
  var DatePickerInputBase = require('./DatePickerInputBase.js');
13
+ var index = require('../Popover/index.js');
14
+ var Context = require('../Popover/Context.js');
15
+ var Content = require('./Content.js');
13
16
 
14
- const DateRangePickerInput = (props) => {
17
+ const DateRangePickerInputWithPopover = (props) => {
18
+ const { setIsOpen } = Context.usePopoverContext();
15
19
  const { onChange, value, label, variants } = props;
16
20
  const { endFieldProps, startFieldProps, ref, state } = useDateRangePickerInput.useDateRangePickerInput({ value, onChange });
17
- return /* @__PURE__ */ React.createElement("div", { "data-testid": "date-range-picker-input" }, /* @__PURE__ */ React.createElement(
21
+ return /* @__PURE__ */ React.createElement("div", { ref, "data-testid": "date-range-picker-input" }, /* @__PURE__ */ React.createElement(index.Popover.Trigger, null, /* @__PURE__ */ React.createElement(
18
22
  DatePickerInputBase.DatePickerInputBase,
19
23
  {
20
- onClickCalendar: () => state.isOpen ? state.close() : state.open(),
21
24
  variants: {
22
25
  ...variants,
23
26
  intent: state.isInvalid ? "error" : variants?.intent
24
27
  },
25
28
  label
26
29
  },
27
- /* @__PURE__ */ React.createElement("div", { ref, className: "flex flex-row gap-x-micro items-center" }, /* @__PURE__ */ React.createElement(
30
+ /* @__PURE__ */ React.createElement("div", { className: "flex flex-row gap-x-micro items-center" }, /* @__PURE__ */ React.createElement(
28
31
  DateField.DateField,
29
32
  {
30
33
  ...startFieldProps,
31
34
  value: utils.dateToCalendarDate(value?.start),
32
35
  onChange: (value2) => {
33
36
  state.setDate("start", value2);
34
- state.close();
35
37
  }
36
38
  }
37
39
  ), /* @__PURE__ */ React.createElement("span", null, "-"), /* @__PURE__ */ React.createElement(
@@ -41,23 +43,23 @@ const DateRangePickerInput = (props) => {
41
43
  value: utils.dateToCalendarDate(value?.end),
42
44
  onChange: (value2) => {
43
45
  state.setDate("end", value2);
44
- state.close();
45
46
  }
46
47
  }
47
48
  ))
48
- ), state.isOpen ? /* @__PURE__ */ React.createElement("div", { className: "absolute" }, /* @__PURE__ */ React.createElement(
49
+ )), /* @__PURE__ */ React.createElement(index.Popover.Content, { className: "bg-inherit shadow-none border-none" }, /* @__PURE__ */ React.createElement(
49
50
  RangeCalendar.RangeCalendar,
50
51
  {
51
52
  value,
52
53
  onChange: (value2) => {
54
+ setIsOpen?.(false);
53
55
  state.setDateRange({
54
56
  start: utils.dateToCalendarDate(value2.start),
55
57
  end: utils.dateToCalendarDate(value2.end)
56
58
  });
57
- state.close();
58
59
  }
59
60
  }
60
- )) : /* @__PURE__ */ React.createElement(React.Fragment, null));
61
+ )));
61
62
  };
63
+ const DateRangePickerInput = (props) => /* @__PURE__ */ React.createElement(index.Popover.Root, { placement: "bottom-start", trigger: "click" }, /* @__PURE__ */ React.createElement(Content.Content, null, /* @__PURE__ */ React.createElement(DateRangePickerInputWithPopover, { ...props })));
62
64
 
63
65
  exports.DateRangePickerInput = DateRangePickerInput;
@@ -4,11 +4,13 @@ var React = require('react');
4
4
  var reactImask = require('react-imask');
5
5
  var index = require('./index.js');
6
6
 
7
- const useIMaskLocal = (mask, inputProps, ref, unmaskedRef) => {
7
+ const useIMaskLocal = (mask, inputProps, ref, onChangeMask) => {
8
8
  const { ref: iMaskRef, maskRef } = reactImask.useIMask(mask, {
9
- onAccept: () => {
10
- if (unmaskedRef) unmaskedRef.current = maskRef.current.unmaskedValue;
11
- return inputProps.onChange?.(maskRef.current);
9
+ onAccept: (value, mask2) => {
10
+ onChangeMask?.({
11
+ unmaskedValue: mask2._unmaskedValue,
12
+ value
13
+ });
12
14
  },
13
15
  ref: ref ? ref : React.createRef()
14
16
  });
@@ -21,33 +23,11 @@ const useIMaskLocal = (mask, inputProps, ref, unmaskedRef) => {
21
23
  iMaskRef
22
24
  };
23
25
  };
24
- const InputMaskExpression = React.forwardRef(({ mask, unmaskedRef, ...rest }, ref) => {
25
- const { iMaskRef } = useIMaskLocal({ mask }, rest, ref, unmaskedRef);
26
- return /* @__PURE__ */ React.createElement(index.Input.Root, { ...rest, ref: iMaskRef });
27
- });
28
- const InputMaskNumber = React.forwardRef(({ unmaskedRef, ...rest }, ref) => {
29
- const mask = { mask: Number, scale: 2 };
30
- const { iMaskRef } = useIMaskLocal(mask, rest, ref, unmaskedRef);
31
- return /* @__PURE__ */ React.createElement(index.Input.Root, { ...rest, ref: iMaskRef });
32
- });
33
- const InputMaskCurrency = React.forwardRef(({ unmaskedRef, ...rest }, ref) => {
34
- const mask = {
35
- mask: "R$ num",
36
- blocks: {
37
- num: {
38
- mask: Number,
39
- scale: 2,
40
- thousandsSeparator: ".",
41
- padFractionalZeros: true,
42
- radix: ",",
43
- mapToRadix: ["."]
44
- }
45
- }
46
- };
47
- const { iMaskRef } = useIMaskLocal(mask, rest, ref, unmaskedRef);
48
- return /* @__PURE__ */ React.createElement(index.Input.Root, { ...rest, ref: iMaskRef });
49
- });
26
+ const InputMask = React.forwardRef(
27
+ ({ mask, onChange, ...rest }, ref) => {
28
+ const { iMaskRef } = useIMaskLocal(mask, rest, ref, onChange);
29
+ return /* @__PURE__ */ React.createElement(index.Input.Root, { ...rest, ref: iMaskRef });
30
+ }
31
+ );
50
32
 
51
- exports.InputMaskCurrency = InputMaskCurrency;
52
- exports.InputMaskExpression = InputMaskExpression;
53
- exports.InputMaskNumber = InputMaskNumber;
33
+ exports.InputMask = InputMask;
@@ -15,9 +15,7 @@ const Input = {
15
15
  Left: Left.InputLeft,
16
16
  Right: Right.InputRight,
17
17
  Search: Search.InputSearch,
18
- MaskCurrency: Mask.InputMaskCurrency,
19
- MaskNumber: Mask.InputMaskNumber,
20
- MaskExpression: Mask.InputMaskExpression
18
+ Mask: Mask.InputMask
21
19
  };
22
20
 
23
21
  exports.Input = Input;
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ const ExpressionMasks = {
4
+ CPF: "000.000.000-00",
5
+ CNPJ: "00.000.000/0000-00",
6
+ PHONE: "(00) 0000-0000",
7
+ PHONE_EXTENDED: "(00) 00000-0000",
8
+ DATE: "00/00/0000",
9
+ CEP: "00000-000"
10
+ };
11
+ const NumberIMask = { mask: Number, scale: 2 };
12
+ const CurrencyIMask = {
13
+ mask: "R$ num",
14
+ blocks: {
15
+ num: {
16
+ mask: Number,
17
+ scale: 2,
18
+ thousandsSeparator: ".",
19
+ padFractionalZeros: true,
20
+ radix: ",",
21
+ mapToRadix: ["."]
22
+ }
23
+ }
24
+ };
25
+ const PercentageIMask = {
26
+ mask: "num %",
27
+ lazy: false,
28
+ blocks: {
29
+ num: {
30
+ mask: Number,
31
+ scale: 2,
32
+ thousandsSeparator: ".",
33
+ padFractionalZeros: true,
34
+ radix: ",",
35
+ mapToRadix: ["."]
36
+ }
37
+ }
38
+ };
39
+
40
+ exports.CurrencyIMask = CurrencyIMask;
41
+ exports.ExpressionMasks = ExpressionMasks;
42
+ exports.NumberIMask = NumberIMask;
43
+ exports.PercentageIMask = PercentageIMask;
@@ -21,11 +21,11 @@ require('../Input/Mask.js');
21
21
  require('../Input/Right.js');
22
22
  require('../Input/Root.js');
23
23
  require('../Input/Search.js');
24
+ require('../Popover/Context.js');
24
25
  require('../GroupButton.js');
25
26
  require('../Hint.js');
26
27
  var index = require('./index.js');
27
28
  require('../Modal.js');
28
- require('../Popover/Context.js');
29
29
  require('../../styles/calendar-cell.js');
30
30
  require('../../styles/groupButton.js');
31
31
  require('../../styles/progressBar.js');
@@ -11,7 +11,7 @@ const SelectRoot = ({
11
11
  keyExtractor,
12
12
  labelExtractor
13
13
  }) => {
14
- return /* @__PURE__ */ React.createElement(index.Popover.Provider, null, /* @__PURE__ */ React.createElement(index.Popover.Root, { placement: "bottom", trigger: "click" }, /* @__PURE__ */ React.createElement(context.SelectContext.Provider, { value: { value, keyExtractor, labelExtractor } }, /* @__PURE__ */ React.createElement(Content.Content, null, children))));
14
+ return /* @__PURE__ */ React.createElement(index.Popover.Root, { placement: "bottom", trigger: "click" }, /* @__PURE__ */ React.createElement(context.SelectContext.Provider, { value: { value, keyExtractor, labelExtractor } }, /* @__PURE__ */ React.createElement(Content.Content, null, children)));
15
15
  };
16
16
 
17
17
  exports.SelectRoot = SelectRoot;
package/dist/cjs/index.js CHANGED
@@ -48,6 +48,7 @@ var useSelectOptions = require('./hooks/useSelectOptions.js');
48
48
  var SnackbarSonner = require('./service/SnackbarSonner.js');
49
49
  var MenubarProvider = require('./provider/MenubarProvider.js');
50
50
  var SnackbarProvider = require('./provider/SnackbarProvider.js');
51
+ var masks = require('./components/Input/masks.js');
51
52
 
52
53
 
53
54
 
@@ -109,3 +110,7 @@ exports.MenubarProvider = MenubarProvider.MenubarProvider;
109
110
  exports.useMenubar = MenubarProvider.useMenubar;
110
111
  exports.SnackbarProvider = SnackbarProvider.SnackbarProvider;
111
112
  exports.useSnackbar = SnackbarProvider.useSnackbar;
113
+ exports.CurrencyIMask = masks.CurrencyIMask;
114
+ exports.ExpressionMasks = masks.ExpressionMasks;
115
+ exports.NumberIMask = masks.NumberIMask;
116
+ exports.PercentageIMask = masks.PercentageIMask;
@@ -22,6 +22,7 @@ require('../components/Input/Mask.js');
22
22
  require('../components/Input/Right.js');
23
23
  require('../components/Input/Root.js');
24
24
  require('../components/Input/Search.js');
25
+ require('../components/Popover/Context.js');
25
26
  require('../components/GroupButton.js');
26
27
  require('../components/Hint.js');
27
28
  require('../provider/MenubarProvider.js');
@@ -36,7 +37,6 @@ require('../components/Menubar/Header.js');
36
37
  require('../components/Menubar/Item.js');
37
38
  require('../components/Menubar/SubItem.js');
38
39
  require('../components/Modal.js');
39
- require('../components/Popover/Context.js');
40
40
  require('../styles/calendar-cell.js');
41
41
  require('../styles/groupButton.js');
42
42
  require('../styles/progressBar.js');
@@ -0,0 +1,19 @@
1
+ import React__default, { useRef } from 'react';
2
+ import '@internationalized/date';
3
+ import 'react-aria';
4
+ import 'react-stately';
5
+ import '@floating-ui/react';
6
+ import { useOutsideClickListener } from '../../hooks/useOutsideClickListener.js';
7
+ import { usePopoverContext } from '../Popover/Context.js';
8
+
9
+ const Content = ({ children }) => {
10
+ const { setIsOpen } = usePopoverContext();
11
+ const ref = useRef(null);
12
+ useOutsideClickListener({
13
+ ref,
14
+ onClickOutside: () => setIsOpen(false)
15
+ });
16
+ return /* @__PURE__ */ React__default.createElement("div", { ref }, children);
17
+ };
18
+
19
+ export { Content };
@@ -8,40 +8,43 @@ import '@floating-ui/react';
8
8
  import { Calendar } from '../Calendar/Calendar.js';
9
9
  import { DateField } from './DateField.js';
10
10
  import { DatePickerInputBase } from './DatePickerInputBase.js';
11
+ import { Popover } from '../Popover/index.js';
12
+ import { usePopoverContext } from '../Popover/Context.js';
13
+ import { Content } from './Content.js';
11
14
 
12
- const DatePickerInput = (props) => {
15
+ const DatePickerInputWithPopover = (props) => {
16
+ const { setIsOpen } = usePopoverContext();
13
17
  const { onChange, value, label, variants } = props;
14
18
  const { fieldProps, state, ref } = useDatePickerInput({ value, onChange });
15
- return /* @__PURE__ */ React__default.createElement("div", { "data-testid": "date-picker-input" }, /* @__PURE__ */ React__default.createElement(
19
+ return /* @__PURE__ */ React__default.createElement("div", { ref, "data-testid": "date-picker-input" }, /* @__PURE__ */ React__default.createElement(Popover.Trigger, null, /* @__PURE__ */ React__default.createElement(
16
20
  DatePickerInputBase,
17
21
  {
18
- onClickCalendar: () => state.isOpen ? state.close() : state.open(),
19
22
  variants: {
20
23
  ...variants,
21
24
  intent: state.isInvalid ? "error" : variants?.intent
22
25
  },
23
26
  label
24
27
  },
25
- /* @__PURE__ */ React__default.createElement("div", { ref }, /* @__PURE__ */ React__default.createElement(
28
+ /* @__PURE__ */ React__default.createElement("div", null, /* @__PURE__ */ React__default.createElement(
26
29
  DateField,
27
30
  {
28
31
  ...fieldProps,
29
32
  onChange: (value2) => {
30
33
  state.setDateValue(value2);
31
- state.close();
32
34
  }
33
35
  }
34
36
  ))
35
- ), state.isOpen ? /* @__PURE__ */ React__default.createElement("div", { className: "absolute" }, /* @__PURE__ */ React__default.createElement(
37
+ )), /* @__PURE__ */ React__default.createElement(Popover.Content, { className: "bg-inherit shadow-none border-none" }, /* @__PURE__ */ React__default.createElement(
36
38
  Calendar,
37
39
  {
38
40
  value,
39
41
  onChange: (value2) => {
42
+ setIsOpen(false);
40
43
  state.setDateValue(dateToCalendarDate(value2));
41
- state.close();
42
44
  }
43
45
  }
44
- )) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null));
46
+ )));
45
47
  };
48
+ const DatePickerInput = (props) => /* @__PURE__ */ React__default.createElement(Popover.Root, { placement: "bottom-start", trigger: "click" }, /* @__PURE__ */ React__default.createElement(Content, null, /* @__PURE__ */ React__default.createElement(DatePickerInputWithPopover, { ...props })));
46
49
 
47
50
  export { DatePickerInput };
@@ -6,14 +6,12 @@ import { Input } from '../Input/index.js';
6
6
  const DatePickerInputBase = ({
7
7
  children,
8
8
  variants,
9
- label,
10
- onClickCalendar
9
+ label
11
10
  }) => {
12
11
  return /* @__PURE__ */ React__default.createElement(Input.Face, { variants, "data-testid": "date-picker-input-base" }, /* @__PURE__ */ React__default.createElement("span", { className: labelStyle({}) }, label), /* @__PURE__ */ React__default.createElement("div", { className: inputBox("", label, "w-full flex flex-row") }, children), /* @__PURE__ */ React__default.createElement(Input.Right, { className: "" }, /* @__PURE__ */ React__default.createElement(
13
12
  LiaCalendar,
14
13
  {
15
14
  className: "cursor-pointer mt-centi",
16
- onClick: onClickCalendar,
17
15
  "data-testid": "date-picker-input-base-calendar"
18
16
  }
19
17
  )));
@@ -8,28 +8,30 @@ import '@floating-ui/react';
8
8
  import { RangeCalendar } from '../Calendar/RangeCalendar.js';
9
9
  import { DateField } from './DateField.js';
10
10
  import { DatePickerInputBase } from './DatePickerInputBase.js';
11
+ import { Popover } from '../Popover/index.js';
12
+ import { usePopoverContext } from '../Popover/Context.js';
13
+ import { Content } from './Content.js';
11
14
 
12
- const DateRangePickerInput = (props) => {
15
+ const DateRangePickerInputWithPopover = (props) => {
16
+ const { setIsOpen } = usePopoverContext();
13
17
  const { onChange, value, label, variants } = props;
14
18
  const { endFieldProps, startFieldProps, ref, state } = useDateRangePickerInput({ value, onChange });
15
- return /* @__PURE__ */ React__default.createElement("div", { "data-testid": "date-range-picker-input" }, /* @__PURE__ */ React__default.createElement(
19
+ return /* @__PURE__ */ React__default.createElement("div", { ref, "data-testid": "date-range-picker-input" }, /* @__PURE__ */ React__default.createElement(Popover.Trigger, null, /* @__PURE__ */ React__default.createElement(
16
20
  DatePickerInputBase,
17
21
  {
18
- onClickCalendar: () => state.isOpen ? state.close() : state.open(),
19
22
  variants: {
20
23
  ...variants,
21
24
  intent: state.isInvalid ? "error" : variants?.intent
22
25
  },
23
26
  label
24
27
  },
25
- /* @__PURE__ */ React__default.createElement("div", { ref, className: "flex flex-row gap-x-micro items-center" }, /* @__PURE__ */ React__default.createElement(
28
+ /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-row gap-x-micro items-center" }, /* @__PURE__ */ React__default.createElement(
26
29
  DateField,
27
30
  {
28
31
  ...startFieldProps,
29
32
  value: dateToCalendarDate(value?.start),
30
33
  onChange: (value2) => {
31
34
  state.setDate("start", value2);
32
- state.close();
33
35
  }
34
36
  }
35
37
  ), /* @__PURE__ */ React__default.createElement("span", null, "-"), /* @__PURE__ */ React__default.createElement(
@@ -39,23 +41,23 @@ const DateRangePickerInput = (props) => {
39
41
  value: dateToCalendarDate(value?.end),
40
42
  onChange: (value2) => {
41
43
  state.setDate("end", value2);
42
- state.close();
43
44
  }
44
45
  }
45
46
  ))
46
- ), state.isOpen ? /* @__PURE__ */ React__default.createElement("div", { className: "absolute" }, /* @__PURE__ */ React__default.createElement(
47
+ )), /* @__PURE__ */ React__default.createElement(Popover.Content, { className: "bg-inherit shadow-none border-none" }, /* @__PURE__ */ React__default.createElement(
47
48
  RangeCalendar,
48
49
  {
49
50
  value,
50
51
  onChange: (value2) => {
52
+ setIsOpen?.(false);
51
53
  state.setDateRange({
52
54
  start: dateToCalendarDate(value2.start),
53
55
  end: dateToCalendarDate(value2.end)
54
56
  });
55
- state.close();
56
57
  }
57
58
  }
58
- )) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null));
59
+ )));
59
60
  };
61
+ const DateRangePickerInput = (props) => /* @__PURE__ */ React__default.createElement(Popover.Root, { placement: "bottom-start", trigger: "click" }, /* @__PURE__ */ React__default.createElement(Content, null, /* @__PURE__ */ React__default.createElement(DateRangePickerInputWithPopover, { ...props })));
60
62
 
61
63
  export { DateRangePickerInput };
@@ -2,11 +2,13 @@ import React__default, { createRef, useEffect } from 'react';
2
2
  import { useIMask } from 'react-imask';
3
3
  import { Input } from './index.js';
4
4
 
5
- const useIMaskLocal = (mask, inputProps, ref, unmaskedRef) => {
5
+ const useIMaskLocal = (mask, inputProps, ref, onChangeMask) => {
6
6
  const { ref: iMaskRef, maskRef } = useIMask(mask, {
7
- onAccept: () => {
8
- if (unmaskedRef) unmaskedRef.current = maskRef.current.unmaskedValue;
9
- return inputProps.onChange?.(maskRef.current);
7
+ onAccept: (value, mask2) => {
8
+ onChangeMask?.({
9
+ unmaskedValue: mask2._unmaskedValue,
10
+ value
11
+ });
10
12
  },
11
13
  ref: ref ? ref : createRef()
12
14
  });
@@ -19,31 +21,11 @@ const useIMaskLocal = (mask, inputProps, ref, unmaskedRef) => {
19
21
  iMaskRef
20
22
  };
21
23
  };
22
- const InputMaskExpression = React__default.forwardRef(({ mask, unmaskedRef, ...rest }, ref) => {
23
- const { iMaskRef } = useIMaskLocal({ mask }, rest, ref, unmaskedRef);
24
- return /* @__PURE__ */ React__default.createElement(Input.Root, { ...rest, ref: iMaskRef });
25
- });
26
- const InputMaskNumber = React__default.forwardRef(({ unmaskedRef, ...rest }, ref) => {
27
- const mask = { mask: Number, scale: 2 };
28
- const { iMaskRef } = useIMaskLocal(mask, rest, ref, unmaskedRef);
29
- return /* @__PURE__ */ React__default.createElement(Input.Root, { ...rest, ref: iMaskRef });
30
- });
31
- const InputMaskCurrency = React__default.forwardRef(({ unmaskedRef, ...rest }, ref) => {
32
- const mask = {
33
- mask: "R$ num",
34
- blocks: {
35
- num: {
36
- mask: Number,
37
- scale: 2,
38
- thousandsSeparator: ".",
39
- padFractionalZeros: true,
40
- radix: ",",
41
- mapToRadix: ["."]
42
- }
43
- }
44
- };
45
- const { iMaskRef } = useIMaskLocal(mask, rest, ref, unmaskedRef);
46
- return /* @__PURE__ */ React__default.createElement(Input.Root, { ...rest, ref: iMaskRef });
47
- });
24
+ const InputMask = React__default.forwardRef(
25
+ ({ mask, onChange, ...rest }, ref) => {
26
+ const { iMaskRef } = useIMaskLocal(mask, rest, ref, onChange);
27
+ return /* @__PURE__ */ React__default.createElement(Input.Root, { ...rest, ref: iMaskRef });
28
+ }
29
+ );
48
30
 
49
- export { InputMaskCurrency, InputMaskExpression, InputMaskNumber };
31
+ export { InputMask };
@@ -1,7 +1,7 @@
1
1
  import { InputBox } from './Box.js';
2
2
  import { InputFace } from './Face.js';
3
3
  import { InputLeft } from './Left.js';
4
- import { InputMaskCurrency, InputMaskNumber, InputMaskExpression } from './Mask.js';
4
+ import { InputMask } from './Mask.js';
5
5
  import { InputRight } from './Right.js';
6
6
  import { InputRoot } from './Root.js';
7
7
  import { InputSearch } from './Search.js';
@@ -13,9 +13,7 @@ const Input = {
13
13
  Left: InputLeft,
14
14
  Right: InputRight,
15
15
  Search: InputSearch,
16
- MaskCurrency: InputMaskCurrency,
17
- MaskNumber: InputMaskNumber,
18
- MaskExpression: InputMaskExpression
16
+ Mask: InputMask
19
17
  };
20
18
 
21
19
  export { Input };
@@ -0,0 +1,38 @@
1
+ const ExpressionMasks = {
2
+ CPF: "000.000.000-00",
3
+ CNPJ: "00.000.000/0000-00",
4
+ PHONE: "(00) 0000-0000",
5
+ PHONE_EXTENDED: "(00) 00000-0000",
6
+ DATE: "00/00/0000",
7
+ CEP: "00000-000"
8
+ };
9
+ const NumberIMask = { mask: Number, scale: 2 };
10
+ const CurrencyIMask = {
11
+ mask: "R$ num",
12
+ blocks: {
13
+ num: {
14
+ mask: Number,
15
+ scale: 2,
16
+ thousandsSeparator: ".",
17
+ padFractionalZeros: true,
18
+ radix: ",",
19
+ mapToRadix: ["."]
20
+ }
21
+ }
22
+ };
23
+ const PercentageIMask = {
24
+ mask: "num %",
25
+ lazy: false,
26
+ blocks: {
27
+ num: {
28
+ mask: Number,
29
+ scale: 2,
30
+ thousandsSeparator: ".",
31
+ padFractionalZeros: true,
32
+ radix: ",",
33
+ mapToRadix: ["."]
34
+ }
35
+ }
36
+ };
37
+
38
+ export { CurrencyIMask, ExpressionMasks, NumberIMask, PercentageIMask };
@@ -19,11 +19,11 @@ import '../Input/Mask.js';
19
19
  import '../Input/Right.js';
20
20
  import '../Input/Root.js';
21
21
  import '../Input/Search.js';
22
+ import '../Popover/Context.js';
22
23
  import '../GroupButton.js';
23
24
  import '../Hint.js';
24
25
  import { Menubar } from './index.js';
25
26
  import '../Modal.js';
26
- import '../Popover/Context.js';
27
27
  import '../../styles/calendar-cell.js';
28
28
  import '../../styles/groupButton.js';
29
29
  import '../../styles/progressBar.js';
@@ -9,7 +9,7 @@ const SelectRoot = ({
9
9
  keyExtractor,
10
10
  labelExtractor
11
11
  }) => {
12
- return /* @__PURE__ */ React__default.createElement(Popover.Provider, null, /* @__PURE__ */ React__default.createElement(Popover.Root, { placement: "bottom", trigger: "click" }, /* @__PURE__ */ React__default.createElement(SelectContext.Provider, { value: { value, keyExtractor, labelExtractor } }, /* @__PURE__ */ React__default.createElement(Content, null, children))));
12
+ return /* @__PURE__ */ React__default.createElement(Popover.Root, { placement: "bottom", trigger: "click" }, /* @__PURE__ */ React__default.createElement(SelectContext.Provider, { value: { value, keyExtractor, labelExtractor } }, /* @__PURE__ */ React__default.createElement(Content, null, children)));
13
13
  };
14
14
 
15
15
  export { SelectRoot };
package/dist/esm/index.js CHANGED
@@ -46,3 +46,4 @@ export { useSelectOptions } from './hooks/useSelectOptions.js';
46
46
  export { SnackbarSonner } from './service/SnackbarSonner.js';
47
47
  export { MenubarProvider, useMenubar } from './provider/MenubarProvider.js';
48
48
  export { SnackbarProvider, useSnackbar } from './provider/SnackbarProvider.js';
49
+ export { CurrencyIMask, ExpressionMasks, NumberIMask, PercentageIMask } from './components/Input/masks.js';
@@ -20,6 +20,7 @@ import '../components/Input/Mask.js';
20
20
  import '../components/Input/Right.js';
21
21
  import '../components/Input/Root.js';
22
22
  import '../components/Input/Search.js';
23
+ import '../components/Popover/Context.js';
23
24
  import '../components/GroupButton.js';
24
25
  import '../components/Hint.js';
25
26
  import '../provider/MenubarProvider.js';
@@ -34,7 +35,6 @@ import '../components/Menubar/Header.js';
34
35
  import '../components/Menubar/Item.js';
35
36
  import '../components/Menubar/SubItem.js';
36
37
  import '../components/Modal.js';
37
- import '../components/Popover/Context.js';
38
38
  import '../styles/calendar-cell.js';
39
39
  import '../styles/groupButton.js';
40
40
  import '../styles/progressBar.js';
@@ -0,0 +1,5 @@
1
+ import { ReactNode } from 'react';
2
+ export interface ContentProps {
3
+ children: ReactNode;
4
+ }
5
+ export declare const Content: ({ children }: ContentProps) => JSX.Element;
@@ -1,8 +1,7 @@
1
1
  import React from 'react';
2
2
  import { InputPropsBase } from '../Input';
3
3
  interface DatePickerInputBaseProps extends InputPropsBase {
4
- onClickCalendar: () => void;
5
4
  children: React.ReactElement;
6
5
  }
7
- export declare const DatePickerInputBase: ({ children, variants, label, onClickCalendar, }: DatePickerInputBaseProps) => JSX.Element;
6
+ export declare const DatePickerInputBase: ({ children, variants, label, }: DatePickerInputBaseProps) => JSX.Element;
8
7
  export {};
@@ -1,5 +1,3 @@
1
1
  import React from 'react';
2
- import { InputMaskExpressionProps, InputMaskProps } from './types';
3
- export declare const InputMaskExpression: React.ForwardRefExoticComponent<InputMaskExpressionProps & React.RefAttributes<HTMLInputElement>>;
4
- export declare const InputMaskNumber: React.ForwardRefExoticComponent<InputMaskProps & React.RefAttributes<HTMLInputElement>>;
5
- export declare const InputMaskCurrency: React.ForwardRefExoticComponent<InputMaskProps & React.RefAttributes<HTMLInputElement>>;
2
+ import { InputMaskProps } from './types';
3
+ export declare const InputMask: React.ForwardRefExoticComponent<InputMaskProps & React.RefAttributes<HTMLInputElement>>;
@@ -5,8 +5,7 @@ export declare const Input: {
5
5
  Left: import("react").ForwardRefExoticComponent<import("./types").InputLeftProps & import("react").RefAttributes<HTMLDivElement>>;
6
6
  Right: import("react").ForwardRefExoticComponent<import("./types").InputRightProps & import("react").RefAttributes<HTMLDivElement>>;
7
7
  Search: import("react").ForwardRefExoticComponent<import("./types").InputSearchProps & import("react").RefAttributes<HTMLInputElement>>;
8
- MaskCurrency: import("react").ForwardRefExoticComponent<import("./types").InputMaskProps & import("react").RefAttributes<HTMLInputElement>>;
9
- MaskNumber: import("react").ForwardRefExoticComponent<import("./types").InputMaskProps & import("react").RefAttributes<HTMLInputElement>>;
10
- MaskExpression: import("react").ForwardRefExoticComponent<import("./types").InputMaskExpressionProps & import("react").RefAttributes<HTMLInputElement>>;
8
+ Mask: import("react").ForwardRefExoticComponent<import("./types").InputMaskProps & import("react").RefAttributes<HTMLInputElement>>;
11
9
  };
10
+ export * from './masks';
12
11
  export * from './types';
@@ -0,0 +1,39 @@
1
+ export declare const ExpressionMasks: {
2
+ CPF: string;
3
+ CNPJ: string;
4
+ PHONE: string;
5
+ PHONE_EXTENDED: string;
6
+ DATE: string;
7
+ CEP: string;
8
+ };
9
+ export declare const NumberIMask: {
10
+ mask: NumberConstructor;
11
+ scale: number;
12
+ };
13
+ export declare const CurrencyIMask: {
14
+ mask: string;
15
+ blocks: {
16
+ num: {
17
+ mask: NumberConstructor;
18
+ scale: number;
19
+ thousandsSeparator: string;
20
+ padFractionalZeros: boolean;
21
+ radix: string;
22
+ mapToRadix: string[];
23
+ };
24
+ };
25
+ };
26
+ export declare const PercentageIMask: {
27
+ mask: string;
28
+ lazy: boolean;
29
+ blocks: {
30
+ num: {
31
+ mask: NumberConstructor;
32
+ scale: number;
33
+ thousandsSeparator: string;
34
+ padFractionalZeros: boolean;
35
+ radix: string;
36
+ mapToRadix: string[];
37
+ };
38
+ };
39
+ };
@@ -1,5 +1,4 @@
1
1
  import { InputBaseVariants } from '@tecsinapse/cortex-core';
2
- import { MutableRefObject } from 'react';
3
2
  export interface InputPropsBase {
4
3
  variants?: InputBaseVariants;
5
4
  label?: string;
@@ -19,9 +18,14 @@ export interface InputRightProps extends React.HTMLAttributes<HTMLDivElement> {
19
18
  export interface InputSearchProps extends InputProps {
20
19
  bounceTimeout?: number;
21
20
  }
22
- export interface InputMaskProps extends InputProps {
23
- unmaskedRef?: MutableRefObject<string>;
24
- }
25
- export interface InputMaskExpressionProps extends InputMaskProps {
21
+ export type InputMaskEvent = {
22
+ value: string;
23
+ unmaskedValue: string;
24
+ };
25
+ export interface Mask extends Record<string, any> {
26
26
  mask: any;
27
27
  }
28
+ export interface InputMaskProps extends Omit<InputProps, 'onChange'> {
29
+ onChange?: (e: InputMaskEvent) => void;
30
+ mask: Mask;
31
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tecsinapse/cortex-react",
3
- "version": "1.3.0-beta.26",
3
+ "version": "1.3.0-beta.28",
4
4
  "description": "React components based in @tecsinapse/cortex-core",
5
5
  "license": "MIT",
6
6
  "main": "dist/esm/index.js",
@@ -43,5 +43,5 @@
43
43
  "react-dom": ">=18.0.0",
44
44
  "tailwind": ">=3.3.0"
45
45
  },
46
- "gitHead": "4a75bfc17fd179e230c266d71cd7b1d7d82d2df5"
46
+ "gitHead": "0c95385ad94b9ac5268fabd1f3b4d9c3c7e9ee87"
47
47
  }