@tecsinapse/react-web-kit 2.1.0 → 2.1.2

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 (68) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/atoms/Accordion/Accordion.js +4 -3
  3. package/dist/cjs/components/atoms/Accordion/Accordion.js.map +1 -1
  4. package/dist/cjs/components/atoms/Dropdown/index.d.ts +1 -0
  5. package/dist/cjs/components/atoms/Dropdown/index.js +3 -2
  6. package/dist/cjs/components/atoms/Dropdown/index.js.map +1 -1
  7. package/dist/cjs/components/atoms/Modal/Modal.js +3 -1
  8. package/dist/cjs/components/atoms/Modal/Modal.js.map +1 -1
  9. package/dist/cjs/components/atoms/Overlay/Overlay.js +4 -2
  10. package/dist/cjs/components/atoms/Overlay/Overlay.js.map +1 -1
  11. package/dist/cjs/components/atoms/Switch/Switch.js +2 -1
  12. package/dist/cjs/components/atoms/Switch/Switch.js.map +1 -1
  13. package/dist/cjs/components/atoms/Tooltip/Tooltip.d.ts +2 -0
  14. package/dist/cjs/components/atoms/Tooltip/Tooltip.js +2 -0
  15. package/dist/cjs/components/atoms/Tooltip/Tooltip.js.map +1 -1
  16. package/dist/cjs/components/atoms/Tooltip/styled.js +4 -1
  17. package/dist/cjs/components/atoms/Tooltip/styled.js.map +1 -1
  18. package/dist/cjs/components/molecules/DatePicker/DatePicker.d.ts +2 -1
  19. package/dist/cjs/components/molecules/DatePicker/DatePicker.js +28 -7
  20. package/dist/cjs/components/molecules/DatePicker/DatePicker.js.map +1 -1
  21. package/dist/cjs/components/molecules/Drawer/Drawer.js +3 -1
  22. package/dist/cjs/components/molecules/Drawer/Drawer.js.map +1 -1
  23. package/dist/cjs/components/molecules/Menubar/Menubar.js +38 -22
  24. package/dist/cjs/components/molecules/Menubar/Menubar.js.map +1 -1
  25. package/dist/cjs/components/molecules/Select/Dropdown/Dropdown.d.ts +8 -3
  26. package/dist/cjs/components/molecules/Select/Dropdown/Dropdown.js +5 -3
  27. package/dist/cjs/components/molecules/Select/Dropdown/Dropdown.js.map +1 -1
  28. package/dist/cjs/components/molecules/Select/Select.js +3 -1
  29. package/dist/cjs/components/molecules/Select/Select.js.map +1 -1
  30. package/dist/cjs/components/molecules/Select/functions.d.ts +1 -1
  31. package/dist/cjs/components/molecules/Select/functions.js.map +1 -1
  32. package/dist/cjs/hooks/useClickAwayListener.d.ts +1 -1
  33. package/dist/cjs/hooks/useClickAwayListener.js +3 -2
  34. package/dist/cjs/hooks/useClickAwayListener.js.map +1 -1
  35. package/dist/esm/components/atoms/Accordion/Accordion.js +4 -3
  36. package/dist/esm/components/atoms/Accordion/Accordion.js.map +1 -1
  37. package/dist/esm/components/atoms/Dropdown/index.d.ts +1 -0
  38. package/dist/esm/components/atoms/Dropdown/index.js +3 -2
  39. package/dist/esm/components/atoms/Dropdown/index.js.map +1 -1
  40. package/dist/esm/components/atoms/Modal/Modal.js +4 -2
  41. package/dist/esm/components/atoms/Modal/Modal.js.map +1 -1
  42. package/dist/esm/components/atoms/Overlay/Overlay.js +5 -3
  43. package/dist/esm/components/atoms/Overlay/Overlay.js.map +1 -1
  44. package/dist/esm/components/atoms/Switch/Switch.js +3 -2
  45. package/dist/esm/components/atoms/Switch/Switch.js.map +1 -1
  46. package/dist/esm/components/atoms/Tooltip/Tooltip.d.ts +2 -0
  47. package/dist/esm/components/atoms/Tooltip/Tooltip.js +2 -0
  48. package/dist/esm/components/atoms/Tooltip/Tooltip.js.map +1 -1
  49. package/dist/esm/components/atoms/Tooltip/styled.js +4 -1
  50. package/dist/esm/components/atoms/Tooltip/styled.js.map +1 -1
  51. package/dist/esm/components/molecules/DatePicker/DatePicker.d.ts +2 -1
  52. package/dist/esm/components/molecules/DatePicker/DatePicker.js +28 -7
  53. package/dist/esm/components/molecules/DatePicker/DatePicker.js.map +1 -1
  54. package/dist/esm/components/molecules/Drawer/Drawer.js +4 -2
  55. package/dist/esm/components/molecules/Drawer/Drawer.js.map +1 -1
  56. package/dist/esm/components/molecules/Menubar/Menubar.js +38 -22
  57. package/dist/esm/components/molecules/Menubar/Menubar.js.map +1 -1
  58. package/dist/esm/components/molecules/Select/Dropdown/Dropdown.d.ts +8 -3
  59. package/dist/esm/components/molecules/Select/Dropdown/Dropdown.js +5 -3
  60. package/dist/esm/components/molecules/Select/Dropdown/Dropdown.js.map +1 -1
  61. package/dist/esm/components/molecules/Select/Select.js +3 -1
  62. package/dist/esm/components/molecules/Select/Select.js.map +1 -1
  63. package/dist/esm/components/molecules/Select/functions.d.ts +1 -1
  64. package/dist/esm/components/molecules/Select/functions.js.map +1 -1
  65. package/dist/esm/hooks/useClickAwayListener.d.ts +1 -1
  66. package/dist/esm/hooks/useClickAwayListener.js +3 -2
  67. package/dist/esm/hooks/useClickAwayListener.js.map +1 -1
  68. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Tooltip/styled.ts"],"sourcesContent":["import { css } from '@emotion/react';\nimport { StyleProps, ThemeProp } from '@tecsinapse/react-core';\nimport styled from '@emotion/styled';\nimport { ComputedType, Position } from './Tooltip';\n\ntype InjectedProps = { computed?: ComputedType; position?: Position };\n\n/** Bottom/Top commons */\nconst bottomOrTopStylesCommon = (width: number, position) =>\n ['top', 'bottom'].includes(position as Position) &&\n css`\n left: 50%;\n margin-left: -${width / 2}px;\n `;\n\nconst bottomOrTopArrowCommon = (position?: Position) =>\n ['top', 'bottom'].includes(position as Position) &&\n css`\n left: 50%;\n margin-left: -5px;\n `;\n\n/** Top */\nconst topStyles = (theme: ThemeProp, position?: Position) =>\n position === 'top' &&\n css`\n bottom: 100%;\n margin-bottom: ${theme.spacing.centi};\n transform: translateY(10%);\n `;\n\nconst topArrow = (theme: ThemeProp, position?: Position) =>\n position === 'top' &&\n css`\n top: 100%;\n border-color: ${theme.color.secondary.xdark} transparent transparent\n transparent;\n `;\n\n/** Bottom */\nconst bottomStyles = (theme: ThemeProp, position?: Position) =>\n position === 'bottom' &&\n css`\n top: 100%;\n margin-top: ${theme.spacing.centi};\n transform: translateY(-10%);\n `;\n\nconst bottomArrow = (theme: ThemeProp, position?: Position) =>\n position === 'bottom' &&\n css`\n bottom: 100%;\n border-color: transparent transparent ${theme.color.secondary.xdark}\n transparent;\n `;\n\n/** Bottom/Top commons */\nconst leftAndRightCommonStyles = (height: number, position?: Position) =>\n ['right', 'left'].includes(position as Position) &&\n css`\n top: 50%;\n margin-top: -${height / 2}px;\n `;\n\nconst leftOrRightArrowCommon = (position?: Position) =>\n ['right', 'left'].includes(position as Position) &&\n css`\n top: 50%;\n margin-top: -5px;\n `;\n\n/** Left */\nconst leftStyles = (theme: ThemeProp, position?: Position) =>\n position === 'left' &&\n css`\n right: 100%;\n margin-right: ${theme.spacing.centi};\n transform: translateX(10%);\n `;\n\nconst leftArrow = (theme: ThemeProp, position?: Position) =>\n position === 'left' &&\n css`\n left: 100%;\n border-color: transparent transparent transparent\n ${theme.color.secondary.xdark};\n `;\n\n/** Right */\nconst rightStyles = (theme: ThemeProp, position?: Position) =>\n position === 'right' &&\n css`\n left: 100%;\n margin-left: ${theme.spacing.centi};\n transform: translateX(-10%);\n `;\n\nconst rightArrow = (theme: ThemeProp, position?: Position) =>\n position === 'right' &&\n css`\n right: 100%;\n border-color: transparent ${theme.color.secondary.xdark} transparent\n transparent;\n `;\n\nexport const TooltipSpan = styled('span')<Partial<StyleProps> & InjectedProps>(\n ({ theme, computed, position }) => {\n const { width = 0, height = 0 } = computed || {};\n return css`\n position: absolute;\n width: max-content;\n padding: ${theme.spacing.micro} ${theme.spacing.centi};\n border-radius: ${theme.borderRadius.mili};\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.3s, visibility 0.3s, transform 0.3s;\n background-color: ${theme.color.secondary.xdark};\n z-index: ${theme.zIndex.absolute};\n\n ${bottomOrTopStylesCommon(width, position)}\n ${bottomStyles(theme, position)}\n ${topStyles(theme, position)}\n \n ${leftAndRightCommonStyles(height, position)}\n ${leftStyles(theme, position)}\n ${rightStyles(theme, position)}\n\n &::after {\n content: '';\n position: absolute;\n border-style: solid;\n border-width: 5px;\n\n ${bottomOrTopArrowCommon(position)}\n ${bottomArrow(theme, position)}\n ${topArrow(theme, position)}\n \n ${leftOrRightArrowCommon(position)}\n ${leftArrow(theme, position)}\n ${rightArrow(theme, position)}\n }\n `;\n }\n);\n\nexport const Container = styled('div')<{ position?: Position }>`\n position: relative;\n &:hover {\n & > span {\n opacity: 1;\n visibility: visible;\n display: flex;\n transform: ${({ position }) =>\n position === 'left' || position === 'right'\n ? 'translateX(0%)'\n : 'translateY(0%)'};\n }\n }\n`;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"styled.js","sources":["../../../../../src/components/atoms/Tooltip/styled.ts"],"sourcesContent":["import { css } from '@emotion/react';\nimport { StyleProps, ThemeProp } from '@tecsinapse/react-core';\nimport styled from '@emotion/styled';\nimport { ComputedType, MaxWidth, Position } from './Tooltip';\n\ntype InjectedProps = {\n computed?: ComputedType;\n position?: Position;\n maxWidth?: MaxWidth;\n};\n\n/** Bottom/Top commons */\nconst bottomOrTopStylesCommon = (width: number, position) =>\n ['top', 'bottom'].includes(position as Position) &&\n css`\n left: 50%;\n margin-left: -${width / 2}px;\n `;\n\nconst bottomOrTopArrowCommon = (position?: Position) =>\n ['top', 'bottom'].includes(position as Position) &&\n css`\n left: 50%;\n margin-left: -5px;\n `;\n\n/** Top */\nconst topStyles = (theme: ThemeProp, position?: Position) =>\n position === 'top' &&\n css`\n bottom: 100%;\n margin-bottom: ${theme.spacing.centi};\n transform: translateY(10%);\n `;\n\nconst topArrow = (theme: ThemeProp, position?: Position) =>\n position === 'top' &&\n css`\n top: 100%;\n border-color: ${theme.color.secondary.xdark} transparent transparent\n transparent;\n `;\n\n/** Bottom */\nconst bottomStyles = (theme: ThemeProp, position?: Position) =>\n position === 'bottom' &&\n css`\n top: 100%;\n margin-top: ${theme.spacing.centi};\n transform: translateY(-10%);\n `;\n\nconst bottomArrow = (theme: ThemeProp, position?: Position) =>\n position === 'bottom' &&\n css`\n bottom: 100%;\n border-color: transparent transparent ${theme.color.secondary.xdark}\n transparent;\n `;\n\n/** Bottom/Top commons */\nconst leftAndRightCommonStyles = (height: number, position?: Position) =>\n ['right', 'left'].includes(position as Position) &&\n css`\n top: 50%;\n margin-top: -${height / 2}px;\n `;\n\nconst leftOrRightArrowCommon = (position?: Position) =>\n ['right', 'left'].includes(position as Position) &&\n css`\n top: 50%;\n margin-top: -5px;\n `;\n\n/** Left */\nconst leftStyles = (theme: ThemeProp, position?: Position) =>\n position === 'left' &&\n css`\n right: 100%;\n margin-right: ${theme.spacing.centi};\n transform: translateX(10%);\n `;\n\nconst leftArrow = (theme: ThemeProp, position?: Position) =>\n position === 'left' &&\n css`\n left: 100%;\n border-color: transparent transparent transparent\n ${theme.color.secondary.xdark};\n `;\n\n/** Right */\nconst rightStyles = (theme: ThemeProp, position?: Position) =>\n position === 'right' &&\n css`\n left: 100%;\n margin-left: ${theme.spacing.centi};\n transform: translateX(-10%);\n `;\n\nconst rightArrow = (theme: ThemeProp, position?: Position) =>\n position === 'right' &&\n css`\n right: 100%;\n border-color: transparent ${theme.color.secondary.xdark} transparent\n transparent;\n `;\n\nexport const TooltipSpan = styled('span')<Partial<StyleProps> & InjectedProps>(\n ({ theme, computed, position, maxWidth }) => {\n const { width = 0, height = 0 } = computed || {};\n return css`\n max-width: ${maxWidth ? `${maxWidth}px` : 'auto'};\n position: absolute;\n width: max-content;\n line-break: anywhere;\n padding: ${theme.spacing.micro} ${theme.spacing.centi};\n border-radius: ${theme.borderRadius.mili};\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.3s, visibility 0.3s, transform 0.3s;\n background-color: ${theme.color.secondary.xdark};\n z-index: ${theme.zIndex.absolute};\n\n ${bottomOrTopStylesCommon(width, position)}\n ${bottomStyles(theme, position)}\n ${topStyles(theme, position)}\n \n ${leftAndRightCommonStyles(height, position)}\n ${leftStyles(theme, position)}\n ${rightStyles(theme, position)}\n\n &::after {\n content: '';\n position: absolute;\n border-style: solid;\n border-width: 5px;\n\n ${bottomOrTopArrowCommon(position)}\n ${bottomArrow(theme, position)}\n ${topArrow(theme, position)}\n \n ${leftOrRightArrowCommon(position)}\n ${leftArrow(theme, position)}\n ${rightArrow(theme, position)}\n }\n `;\n }\n);\n\nexport const Container = styled('div')<{\n position?: Position;\n}>`\n position: relative;\n width: auto;\n &:hover {\n & > span {\n opacity: 1;\n visibility: visible;\n display: flex;\n transform: ${({ position }) =>\n position === 'left' || position === 'right'\n ? 'translateX(0%)'\n : 'translateY(0%)'};\n }\n }\n`;\n"],"names":[],"mappings":";;;AAYA,MAAM,uBAAA,GAA0B,CAAC,KAAA,EAAe,QAC9C,KAAA,CAAC,OAAO,QAAQ,CAAA,CAAE,QAAS,CAAA,QAAoB,CAC/C,IAAA,GAAA,CAAA;AAAA;AAAA,kBAAA,EAEkB,QAAQ,CAAC,CAAA;AAAA,EAAA,CAAA,CAAA;AAG7B,MAAM,sBAAA,GAAyB,CAAC,QAC9B,KAAA,CAAC,OAAO,QAAQ,CAAA,CAAE,QAAS,CAAA,QAAoB,CAC/C,IAAA,GAAA,CAAA;AAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAMF,MAAM,SAAY,GAAA,CAAC,KAAkB,EAAA,QAAA,KACnC,aAAa,KACb,IAAA,GAAA,CAAA;AAAA;AAAA,mBAEmB,EAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAIxC,MAAM,QAAW,GAAA,CAAC,KAAkB,EAAA,QAAA,KAClC,aAAa,KACb,IAAA,GAAA,CAAA;AAAA;AAAA,kBAEkB,EAAA,KAAA,CAAM,KAAM,CAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAK/C,MAAM,YAAe,GAAA,CAAC,KAAkB,EAAA,QAAA,KACtC,aAAa,QACb,IAAA,GAAA,CAAA;AAAA;AAAA,gBAEgB,EAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAIrC,MAAM,WAAc,GAAA,CAAC,KAAkB,EAAA,QAAA,KACrC,aAAa,QACb,IAAA,GAAA,CAAA;AAAA;AAAA,0CAE0C,EAAA,KAAA,CAAM,KAAM,CAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAKvE,MAAM,wBAAA,GAA2B,CAAC,MAAA,EAAgB,QAChD,KAAA,CAAC,SAAS,MAAM,CAAA,CAAE,QAAS,CAAA,QAAoB,CAC/C,IAAA,GAAA,CAAA;AAAA;AAAA,iBAAA,EAEiB,SAAS,CAAC,CAAA;AAAA,EAAA,CAAA,CAAA;AAG7B,MAAM,sBAAA,GAAyB,CAAC,QAC9B,KAAA,CAAC,SAAS,MAAM,CAAA,CAAE,QAAS,CAAA,QAAoB,CAC/C,IAAA,GAAA,CAAA;AAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAMF,MAAM,UAAa,GAAA,CAAC,KAAkB,EAAA,QAAA,KACpC,aAAa,MACb,IAAA,GAAA,CAAA;AAAA;AAAA,kBAEkB,EAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAIvC,MAAM,SAAY,GAAA,CAAC,KAAkB,EAAA,QAAA,KACnC,aAAa,MACb,IAAA,GAAA,CAAA;AAAA;AAAA;AAAA,MAGM,EAAA,KAAA,CAAM,KAAM,CAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EAAA,CAAA,CAAA;AAInC,MAAM,WAAc,GAAA,CAAC,KAAkB,EAAA,QAAA,KACrC,aAAa,OACb,IAAA,GAAA,CAAA;AAAA;AAAA,iBAEiB,EAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAItC,MAAM,UAAa,GAAA,CAAC,KAAkB,EAAA,QAAA,KACpC,aAAa,OACb,IAAA,GAAA,CAAA;AAAA;AAAA,8BAE8B,EAAA,KAAA,CAAM,KAAM,CAAA,SAAA,CAAU,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAI9C,MAAA,WAAA,GAAc,OAAO,MAAM,CAAA;AAAA,EACtC,CAAC,EAAE,KAAA,EAAO,QAAU,EAAA,QAAA,EAAU,UAAe,KAAA;AAC3C,IAAA,MAAM,EAAE,KAAQ,GAAA,CAAA,EAAG,SAAS,CAAE,EAAA,GAAI,YAAY,EAAC,CAAA;AAC/C,IAAO,OAAA,GAAA,CAAA;AAAA,iBAAA,EACQ,QAAW,GAAA,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAA,GAAO,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA,eAAA,EAIrC,MAAM,OAAQ,CAAA,KAAK,CAAI,CAAA,EAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA,qBACpC,EAAA,KAAA,CAAM,aAAa,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA,wBAIpB,EAAA,KAAA,CAAM,KAAM,CAAA,SAAA,CAAU,KAAK,CAAA;AAAA,eACpC,EAAA,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA;AAAA,MAE9B,EAAA,uBAAA,CAAwB,KAAO,EAAA,QAAQ,CAAC,CAAA;AAAA,MACxC,EAAA,YAAA,CAAa,KAAO,EAAA,QAAQ,CAAC,CAAA;AAAA,MAC7B,EAAA,SAAA,CAAU,KAAO,EAAA,QAAQ,CAAC,CAAA;AAAA;AAAA,MAE1B,EAAA,wBAAA,CAAyB,MAAQ,EAAA,QAAQ,CAAC,CAAA;AAAA,MAC1C,EAAA,UAAA,CAAW,KAAO,EAAA,QAAQ,CAAC,CAAA;AAAA,MAC3B,EAAA,WAAA,CAAY,KAAO,EAAA,QAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAQ1B,EAAA,sBAAA,CAAuB,QAAQ,CAAC,CAAA;AAAA,QAChC,EAAA,WAAA,CAAY,KAAO,EAAA,QAAQ,CAAC,CAAA;AAAA,QAC5B,EAAA,QAAA,CAAS,KAAO,EAAA,QAAQ,CAAC,CAAA;AAAA;AAAA,QAEzB,EAAA,sBAAA,CAAuB,QAAQ,CAAC,CAAA;AAAA,QAChC,EAAA,SAAA,CAAU,KAAO,EAAA,QAAQ,CAAC,CAAA;AAAA,QAC1B,EAAA,UAAA,CAAW,KAAO,EAAA,QAAQ,CAAC,CAAA;AAAA;AAAA,IAAA,CAAA,CAAA;AAAA,GAGnC;AACF,EAAA;AAEa,MAAA,SAAA,GAAY,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAUlB,EAAA,CAAC,EAAE,QAAS,EAAA,KACvB,aAAa,MAAU,IAAA,QAAA,KAAa,OAChC,GAAA,gBAAA,GACA,gBAAgB,CAAA;AAAA;AAAA;AAAA;;;;"}
@@ -2,5 +2,6 @@
2
2
  import { DatePickerProps, SelectionType } from '@tecsinapse/react-core';
3
3
  export type WebDatePickerProps<T extends SelectionType> = Omit<DatePickerProps<T>, 'CalendarComponent' | 'renderCalendar' | 'requestCloseCalendar' | 'requestShowCalendar'> & {
4
4
  callbackAfterValidated?: (valid: boolean, message?: string) => void;
5
+ invalidDateLabel?: string;
5
6
  };
6
- export declare const DatePicker: <T extends SelectionType>({ value, type, locale, onChange, callbackAfterValidated, ...rest }: WebDatePickerProps<T>) => JSX.Element;
7
+ export declare const DatePicker: <T extends SelectionType>({ value, type, locale, onChange, callbackAfterValidated, placeholder, label, invalidDateLabel, ...rest }: WebDatePickerProps<T>) => JSX.Element;
@@ -10,6 +10,9 @@ const DatePicker = ({
10
10
  locale,
11
11
  onChange,
12
12
  callbackAfterValidated,
13
+ placeholder,
14
+ label,
15
+ invalidDateLabel = "Invalid date",
13
16
  ...rest
14
17
  }) => {
15
18
  const [visible, setVisible] = useState(false);
@@ -39,6 +42,10 @@ const DatePicker = ({
39
42
  }
40
43
  return void 0;
41
44
  }, [value]);
45
+ const checksFullRange = useCallback(() => {
46
+ if (type === "range" && !value?.highest)
47
+ onChange?.(void 0);
48
+ }, [value]);
42
49
  const controlComponent = (onPress, displayValue) => {
43
50
  return /* @__PURE__ */ React.createElement(
44
51
  InputMask,
@@ -46,14 +53,14 @@ const DatePicker = ({
46
53
  onBlur: () => {
47
54
  if ((controlledInput ?? []).length < 8 && (controlledInput ?? []).length > 0) {
48
55
  setError(true);
49
- callbackAfterValidated?.(false, "Data inv\xE1lida");
56
+ callbackAfterValidated?.(false, invalidDateLabel);
50
57
  }
51
58
  if (controlledInput?.length === 8) {
52
59
  const auxData = parse(controlledInput, "ddMMyyyy", /* @__PURE__ */ new Date(), {
53
60
  locale
54
61
  });
55
62
  const isValidDate = isValid(auxData);
56
- callbackAfterValidated?.(isValidDate, "Data inv\xE1lida");
63
+ callbackAfterValidated?.(isValidDate, invalidDateLabel);
57
64
  if (isValidDate && auxData !== value) {
58
65
  setError(false);
59
66
  onChange?.(auxData);
@@ -61,12 +68,12 @@ const DatePicker = ({
61
68
  }
62
69
  if (controlledInput?.length === 0) {
63
70
  setError(true);
64
- callbackAfterValidated?.(false, "Data inv\xE1lida");
71
+ callbackAfterValidated?.(false, invalidDateLabel);
65
72
  }
66
73
  },
67
74
  mask: Masks.DATE,
68
- value: displayValue,
69
- hint: error ? "Data inv\xE1lida" : void 0,
75
+ value: displayValue ?? "",
76
+ hint: error ? invalidDateLabel : void 0,
70
77
  variant: error ? "error" : "default",
71
78
  onChange: (input) => {
72
79
  setControlledInput(input);
@@ -75,7 +82,8 @@ const DatePicker = ({
75
82
  setError(false);
76
83
  }
77
84
  },
78
- placeholder: "N\xE3o informada",
85
+ placeholder,
86
+ label,
79
87
  rightComponent: /* @__PURE__ */ React.createElement(
80
88
  Button,
81
89
  {
@@ -123,7 +131,20 @@ const DatePicker = ({
123
131
  month: getMonth,
124
132
  requestShowCalendar: show,
125
133
  requestCloseCalendar: close,
126
- renderCalendar: (calendar) => /* @__PURE__ */ React.createElement(Dropdown, { visible, setVisible }, calendar)
134
+ placeholder,
135
+ label,
136
+ renderCalendar: (calendar, handleBlur) => /* @__PURE__ */ React.createElement(
137
+ Dropdown,
138
+ {
139
+ visible,
140
+ setVisible,
141
+ onClickAway: () => {
142
+ handleBlur?.();
143
+ checksFullRange();
144
+ }
145
+ },
146
+ calendar
147
+ )
127
148
  }
128
149
  );
129
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"sourcesContent":["import {\n Button,\n Calendar,\n DatePicker as DatePickerCore,\n DatePickerProps,\n DateRange,\n Masks,\n SelectionType,\n CalendarIcon,\n} from '@tecsinapse/react-core';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Dropdown } from '../../atoms/Dropdown';\nimport { InputMask } from '../../atoms/InputMask';\nimport { parse, isValid } from 'date-fns';\n\nexport type WebDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n> & {\n callbackAfterValidated?: (valid: boolean, message?: string) => void;\n};\n\nexport const DatePicker = <T extends SelectionType>({\n value,\n type,\n locale,\n onChange,\n callbackAfterValidated,\n ...rest\n}: WebDatePickerProps<T>): JSX.Element => {\n const [visible, setVisible] = useState(false);\n const [controlledInput, setControlledInput] = useState<string>();\n const show = useCallback(() => setVisible(true), []);\n const close = useCallback(() => setVisible(false), []);\n const [error, setError] = useState<boolean>(false);\n\n const getYear = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getFullYear();\n } else {\n return new Date(value as Date).getFullYear();\n }\n }\n return undefined;\n }, [value]);\n\n const getMonth = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getMonth();\n } else {\n return new Date(value as Date).getMonth();\n }\n }\n return undefined;\n }, [value]);\n\n const controlComponent = (onPress, displayValue) => {\n return (\n <InputMask\n onBlur={() => {\n if (\n (controlledInput ?? []).length < 8 &&\n (controlledInput ?? []).length > 0\n ) {\n setError(true);\n callbackAfterValidated?.(false, 'Data inválida');\n }\n if (controlledInput?.length === 8) {\n const auxData = parse(controlledInput, 'ddMMyyyy', new Date(), {\n locale,\n });\n const isValidDate = isValid(auxData);\n callbackAfterValidated?.(isValidDate, 'Data inválida');\n\n if (isValidDate && auxData !== value) {\n setError(false);\n onChange?.(auxData as typeof value);\n }\n }\n if (controlledInput?.length === 0) {\n setError(true);\n callbackAfterValidated?.(false, 'Data inválida');\n }\n }}\n mask={Masks.DATE}\n value={displayValue}\n hint={error ? 'Data inválida' : undefined}\n variant={error ? 'error' : 'default'}\n onChange={input => {\n setControlledInput(input);\n if ((error && input.length < 8) || isValid(value)) {\n callbackAfterValidated?.(true);\n setError(false);\n }\n }}\n placeholder={'Não informada'}\n rightComponent={\n <Button\n effect={'none'}\n variant={'text'}\n style={{ padding: 0 }}\n onPress={onPress}\n >\n <CalendarIcon name=\"calendar-sharp\" type=\"ionicon\" size=\"centi\" />\n </Button>\n }\n />\n );\n };\n\n if (type === 'day') {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n renderCalendar={calendar => (\n <Dropdown visible={visible} setVisible={setVisible}>\n {calendar}\n </Dropdown>\n )}\n controlComponent={controlComponent}\n />\n );\n } else {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n renderCalendar={calendar => (\n <Dropdown visible={visible} setVisible={setVisible}>\n {calendar}\n </Dropdown>\n )}\n />\n );\n }\n};\n"],"names":["DatePickerCore"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"sourcesContent":["import {\n Button,\n Calendar,\n DatePicker as DatePickerCore,\n DatePickerProps,\n DateRange,\n Masks,\n SelectionType,\n CalendarIcon,\n} from '@tecsinapse/react-core';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Dropdown } from '../../atoms/Dropdown';\nimport { InputMask } from '../../atoms/InputMask';\nimport { parse, isValid } from 'date-fns';\n\nexport type WebDatePickerProps<T extends SelectionType> = Omit<\n DatePickerProps<T>,\n | 'CalendarComponent'\n | 'renderCalendar'\n | 'requestCloseCalendar'\n | 'requestShowCalendar'\n> & {\n callbackAfterValidated?: (valid: boolean, message?: string) => void;\n invalidDateLabel?: string;\n};\n\nexport const DatePicker = <T extends SelectionType>({\n value,\n type,\n locale,\n onChange,\n callbackAfterValidated,\n placeholder,\n label,\n invalidDateLabel = 'Invalid date',\n ...rest\n}: WebDatePickerProps<T>): JSX.Element => {\n const [visible, setVisible] = useState(false);\n const [controlledInput, setControlledInput] = useState<string>();\n const show = useCallback(() => setVisible(true), []);\n const close = useCallback(() => setVisible(false), []);\n const [error, setError] = useState<boolean>(false);\n\n const getYear = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getFullYear();\n } else {\n return new Date(value as Date).getFullYear();\n }\n }\n return undefined;\n }, [value]);\n\n const getMonth = useMemo(() => {\n if (value) {\n if (type === 'range') {\n if ((value as DateRange).lowest !== undefined)\n return new Date((value as DateRange).lowest).getMonth();\n } else {\n return new Date(value as Date).getMonth();\n }\n }\n return undefined;\n }, [value]);\n\n const checksFullRange = useCallback(() => {\n if (type === 'range' && !(value as DateRange)?.highest)\n onChange?.(undefined);\n }, [value]);\n\n const controlComponent = (onPress, displayValue) => {\n return (\n <InputMask\n onBlur={() => {\n if (\n (controlledInput ?? []).length < 8 &&\n (controlledInput ?? []).length > 0\n ) {\n setError(true);\n callbackAfterValidated?.(false, invalidDateLabel);\n }\n if (controlledInput?.length === 8) {\n const auxData = parse(controlledInput, 'ddMMyyyy', new Date(), {\n locale,\n });\n const isValidDate = isValid(auxData);\n callbackAfterValidated?.(isValidDate, invalidDateLabel);\n\n if (isValidDate && auxData !== value) {\n setError(false);\n onChange?.(auxData as typeof value);\n }\n }\n if (controlledInput?.length === 0) {\n setError(true);\n callbackAfterValidated?.(false, invalidDateLabel);\n }\n }}\n mask={Masks.DATE}\n value={displayValue ?? ''}\n hint={error ? invalidDateLabel : undefined}\n variant={error ? 'error' : 'default'}\n onChange={input => {\n setControlledInput(input);\n if ((error && input.length < 8) || isValid(value)) {\n callbackAfterValidated?.(true);\n setError(false);\n }\n }}\n placeholder={placeholder}\n label={label}\n rightComponent={\n <Button\n effect={'none'}\n variant={'text'}\n style={{ padding: 0 }}\n onPress={onPress}\n >\n <CalendarIcon name=\"calendar-sharp\" type=\"ionicon\" size=\"centi\" />\n </Button>\n }\n />\n );\n };\n\n if (type === 'day') {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n renderCalendar={calendar => (\n <Dropdown visible={visible} setVisible={setVisible}>\n {calendar}\n </Dropdown>\n )}\n controlComponent={controlComponent}\n />\n );\n } else {\n return (\n <DatePickerCore\n {...rest}\n CalendarComponent={Calendar}\n onChange={onChange}\n locale={locale}\n value={value}\n type={type}\n year={getYear}\n format={'dd/MM/yyyy'}\n month={getMonth}\n requestShowCalendar={show}\n requestCloseCalendar={close}\n placeholder={placeholder}\n label={label}\n renderCalendar={(calendar, handleBlur) => (\n <Dropdown\n visible={visible}\n setVisible={setVisible}\n onClickAway={() => {\n handleBlur?.();\n checksFullRange();\n }}\n >\n {calendar}\n </Dropdown>\n )}\n />\n );\n }\n};\n"],"names":["DatePickerCore"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useRef } from 'react';
2
2
  import { StyledContainerDrawer } from './styled.js';
3
3
  import { Transition } from 'react-transition-group';
4
4
  import Overlay from '../../atoms/Overlay/Overlay.js';
@@ -12,6 +12,7 @@ const Drawer = ({
12
12
  style,
13
13
  ...rest
14
14
  }) => {
15
+ const transitionRef = useRef(null);
15
16
  const getStyles = (anchorPosition2, state) => {
16
17
  const stylesLeftRight = defaultStylesLeftRight(anchorPosition2);
17
18
  const transitionLeftRight = transitionStylesLeftRight(anchorPosition2);
@@ -29,9 +30,10 @@ const Drawer = ({
29
30
  };
30
31
  }
31
32
  };
32
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Overlay, { timeout: 300, open, onClose, zIndex: "drawer" }), /* @__PURE__ */ React.createElement(Transition, { in: open, timeout: 300 }, (state) => /* @__PURE__ */ React.createElement(
33
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Overlay, { timeout: 300, open, onClose, zIndex: "drawer" }), /* @__PURE__ */ React.createElement(Transition, { in: open, timeout: 300, nodeRef: transitionRef }, (state) => /* @__PURE__ */ React.createElement(
33
34
  StyledContainerDrawer,
34
35
  {
36
+ ref: transitionRef,
35
37
  style: { ...style, ...getStyles(anchorPosition, state) },
36
38
  anchorPosition,
37
39
  onClose,
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.js","sources":["../../../../../src/components/molecules/Drawer/Drawer.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { StyledContainerDrawer } from './styled';\nimport { Transition, TransitionStatus } from 'react-transition-group';\nimport { Overlay } from '../../atoms/Overlay';\nimport {\n transitionStylesTopBottom,\n defaultStylesTopBottom,\n defaultStylesLeftRight,\n transitionStylesLeftRight,\n} from './animations';\n\ntype AnchorPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {\n open: boolean;\n onClose: () => void;\n anchorPosition: AnchorPosition;\n}\n\nconst Drawer: FC<DrawerProps> = ({\n open,\n anchorPosition = 'right',\n onClose,\n children,\n style,\n ...rest\n}) => {\n const getStyles = (\n anchorPosition: AnchorPosition,\n state: TransitionStatus\n ) => {\n const stylesLeftRight = defaultStylesLeftRight(anchorPosition);\n const transitionLeftRight = transitionStylesLeftRight(anchorPosition);\n const stylesTopBottom = defaultStylesTopBottom(anchorPosition);\n const transitionTopBottom = transitionStylesTopBottom(anchorPosition);\n\n if (['left', 'right'].includes(anchorPosition)) {\n return {\n ...stylesLeftRight,\n ...transitionLeftRight[state],\n };\n } else {\n return {\n ...stylesTopBottom,\n ...transitionTopBottom[state],\n };\n }\n };\n\n return (\n <>\n <Overlay timeout={300} open={open} onClose={onClose} zIndex=\"drawer\" />\n <Transition in={open} timeout={300}>\n {state => (\n <StyledContainerDrawer\n style={{ ...style, ...getStyles(anchorPosition, state) }}\n anchorPosition={anchorPosition}\n onClose={onClose}\n open={open}\n {...rest}\n >\n {children}\n </StyledContainerDrawer>\n )}\n </Transition>\n </>\n );\n};\n\nexport default Drawer;\n"],"names":["anchorPosition"],"mappings":";;;;;;AAmBA,MAAM,SAA0B,CAAC;AAAA,EAC/B,IAAA;AAAA,EACA,cAAiB,GAAA,OAAA;AAAA,EACjB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAM,KAAA;AACJ,EAAM,MAAA,SAAA,GAAY,CAChBA,eAAAA,EACA,KACG,KAAA;AACH,IAAM,MAAA,eAAA,GAAkB,uBAAuBA,eAAc,CAAA,CAAA;AAC7D,IAAM,MAAA,mBAAA,GAAsB,0BAA0BA,eAAc,CAAA,CAAA;AACpE,IAAM,MAAA,eAAA,GAAkB,uBAAuBA,eAAc,CAAA,CAAA;AAC7D,IAAM,MAAA,mBAAA,GAAsB,0BAA0BA,eAAc,CAAA,CAAA;AAEpE,IAAA,IAAI,CAAC,MAAQ,EAAA,OAAO,CAAE,CAAA,QAAA,CAASA,eAAc,CAAG,EAAA;AAC9C,MAAO,OAAA;AAAA,QACL,GAAG,eAAA;AAAA,QACH,GAAG,oBAAoB,KAAK,CAAA;AAAA,OAC9B,CAAA;AAAA,KACK,MAAA;AACL,MAAO,OAAA;AAAA,QACL,GAAG,eAAA;AAAA,QACH,GAAG,oBAAoB,KAAK,CAAA;AAAA,OAC9B,CAAA;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAA,iFAEK,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,OAAS,EAAA,GAAA,EAAK,MAAY,OAAkB,EAAA,MAAA,EAAO,QAAS,EAAA,CAAA,sCACpE,UAAW,EAAA,EAAA,EAAA,EAAI,IAAM,EAAA,OAAA,EAAS,OAC5B,CACC,KAAA,qBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,GAAG,KAAA,EAAO,GAAG,SAAU,CAAA,cAAA,EAAgB,KAAK,CAAE,EAAA;AAAA,MACvD,cAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACC,GAAG,IAAA;AAAA,KAAA;AAAA,IAEH,QAAA;AAAA,GAGP,CACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Drawer.js","sources":["../../../../../src/components/molecules/Drawer/Drawer.tsx"],"sourcesContent":["import React, { FC, useRef } from 'react';\nimport { StyledContainerDrawer } from './styled';\nimport { Transition, TransitionStatus } from 'react-transition-group';\nimport { Overlay } from '../../atoms/Overlay';\nimport {\n transitionStylesTopBottom,\n defaultStylesTopBottom,\n defaultStylesLeftRight,\n transitionStylesLeftRight,\n} from './animations';\n\ntype AnchorPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {\n open: boolean;\n onClose: () => void;\n anchorPosition: AnchorPosition;\n}\n\nconst Drawer: FC<DrawerProps> = ({\n open,\n anchorPosition = 'right',\n onClose,\n children,\n style,\n ...rest\n}) => {\n const transitionRef = useRef(null);\n const getStyles = (\n anchorPosition: AnchorPosition,\n state: TransitionStatus\n ) => {\n const stylesLeftRight = defaultStylesLeftRight(anchorPosition);\n const transitionLeftRight = transitionStylesLeftRight(anchorPosition);\n const stylesTopBottom = defaultStylesTopBottom(anchorPosition);\n const transitionTopBottom = transitionStylesTopBottom(anchorPosition);\n\n if (['left', 'right'].includes(anchorPosition)) {\n return {\n ...stylesLeftRight,\n ...transitionLeftRight[state],\n };\n } else {\n return {\n ...stylesTopBottom,\n ...transitionTopBottom[state],\n };\n }\n };\n\n return (\n <>\n <Overlay timeout={300} open={open} onClose={onClose} zIndex=\"drawer\" />\n <Transition in={open} timeout={300} nodeRef={transitionRef}>\n {state => (\n <StyledContainerDrawer\n ref={transitionRef}\n style={{ ...style, ...getStyles(anchorPosition, state) }}\n anchorPosition={anchorPosition}\n onClose={onClose}\n open={open}\n {...rest}\n >\n {children}\n </StyledContainerDrawer>\n )}\n </Transition>\n </>\n );\n};\n\nexport default Drawer;\n"],"names":["anchorPosition"],"mappings":";;;;;;AAmBA,MAAM,SAA0B,CAAC;AAAA,EAC/B,IAAA;AAAA,EACA,cAAiB,GAAA,OAAA;AAAA,EACjB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG,IAAA;AACL,CAAM,KAAA;AACJ,EAAM,MAAA,aAAA,GAAgB,OAAO,IAAI,CAAA,CAAA;AACjC,EAAM,MAAA,SAAA,GAAY,CAChBA,eAAAA,EACA,KACG,KAAA;AACH,IAAM,MAAA,eAAA,GAAkB,uBAAuBA,eAAc,CAAA,CAAA;AAC7D,IAAM,MAAA,mBAAA,GAAsB,0BAA0BA,eAAc,CAAA,CAAA;AACpE,IAAM,MAAA,eAAA,GAAkB,uBAAuBA,eAAc,CAAA,CAAA;AAC7D,IAAM,MAAA,mBAAA,GAAsB,0BAA0BA,eAAc,CAAA,CAAA;AAEpE,IAAA,IAAI,CAAC,MAAQ,EAAA,OAAO,CAAE,CAAA,QAAA,CAASA,eAAc,CAAG,EAAA;AAC9C,MAAO,OAAA;AAAA,QACL,GAAG,eAAA;AAAA,QACH,GAAG,oBAAoB,KAAK,CAAA;AAAA,OAC9B,CAAA;AAAA,KACK,MAAA;AACL,MAAO,OAAA;AAAA,QACL,GAAG,eAAA;AAAA,QACH,GAAG,oBAAoB,KAAK,CAAA;AAAA,OAC9B,CAAA;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAA,iFAEK,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,SAAS,GAAK,EAAA,IAAA,EAAY,SAAkB,MAAO,EAAA,QAAA,EAAS,CACrE,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,EAAI,EAAA,IAAA,EAAM,SAAS,GAAK,EAAA,OAAA,EAAS,iBAC1C,CACC,KAAA,qBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,aAAA;AAAA,MACL,KAAA,EAAO,EAAE,GAAG,KAAA,EAAO,GAAG,SAAU,CAAA,cAAA,EAAgB,KAAK,CAAE,EAAA;AAAA,MACvD,cAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACC,GAAG,IAAA;AAAA,KAAA;AAAA,IAEH,QAAA;AAAA,GAGP,CACF,CAAA,CAAA;AAEJ;;;;"}
@@ -25,6 +25,8 @@ const Menubar = ({
25
25
  const [input, setInput] = useDebouncedState("", setSearch);
26
26
  const [open, setOpen] = React.useState(false);
27
27
  const menuRef = useRef(null);
28
+ const transitionInputRef = useRef(null);
29
+ const transitionMenuRef = useRef(null);
28
30
  useClickAwayListener(menuRef, setOpen, "mouseup");
29
31
  const toggleOpen = React.useCallback(
30
32
  () => setOpen((state) => !state),
@@ -51,30 +53,44 @@ const Menubar = ({
51
53
  type: "material-community",
52
54
  fontColor: "light"
53
55
  }
54
- )), leftComponents, /* @__PURE__ */ React.createElement(Transition, { in: open, timeout: 250 }, (state) => /* @__PURE__ */ React.createElement(StyledInputContainer, { style: getInputContainerStyles(state) }, searchable && /* @__PURE__ */ React.createElement(
55
- StyledInput,
56
+ )), leftComponents, /* @__PURE__ */ React.createElement(Transition, { in: open, timeout: 250, nodeRef: transitionInputRef }, (state) => /* @__PURE__ */ React.createElement(
57
+ StyledInputContainer,
56
58
  {
57
- placeholder: searchPlaceholder,
58
- leftComponent: /* @__PURE__ */ React.createElement(StyledIconInput, null, /* @__PURE__ */ React.createElement(Icon, { name: "magnify", type: "material-community" })),
59
- value: input,
60
- onChange: setInput
61
- }
62
- ))), rightComponents), /* @__PURE__ */ React.createElement(Transition, { in: open, timeout: 250 }, (state) => /* @__PURE__ */ React.createElement(StyledContainerOpenMenu, { style: getContainerOpenMenuStyles(state) }, !search ? /* @__PURE__ */ React.createElement(React.Fragment, null, mostUsed && /* @__PURE__ */ React.createElement(
63
- MostUsed,
64
- {
65
- label: mostUsedLabel,
66
- data: mostUsed,
67
- toggle: toggleOpen
68
- }
69
- ), /* @__PURE__ */ React.createElement(MenuBlock, { options, toggle: toggleOpen })) : /* @__PURE__ */ React.createElement(StyledSearchResultsContainer, null, /* @__PURE__ */ React.createElement(StyledSearchTextContainer, null, /* @__PURE__ */ React.createElement(Text, { fontWeight: "bold" }, searchResultsLabel)), results.map((result) => /* @__PURE__ */ React.createElement(
70
- SearchResultItem,
59
+ style: getInputContainerStyles(state),
60
+ ref: transitionInputRef
61
+ },
62
+ searchable && /* @__PURE__ */ React.createElement(
63
+ StyledInput,
64
+ {
65
+ placeholder: searchPlaceholder,
66
+ leftComponent: /* @__PURE__ */ React.createElement(StyledIconInput, null, /* @__PURE__ */ React.createElement(Icon, { name: "magnify", type: "material-community" })),
67
+ value: input,
68
+ onChange: setInput
69
+ }
70
+ )
71
+ )), rightComponents), /* @__PURE__ */ React.createElement(Transition, { in: open, timeout: 250, nodeRef: transitionMenuRef }, (state) => /* @__PURE__ */ React.createElement(
72
+ StyledContainerOpenMenu,
71
73
  {
72
- key: `${result.title}-${result.category}`,
73
- data: result,
74
- searchTerm: search,
75
- toggle: toggleOpen
76
- }
77
- ))))));
74
+ style: getContainerOpenMenuStyles(state),
75
+ ref: transitionMenuRef
76
+ },
77
+ !search ? /* @__PURE__ */ React.createElement(React.Fragment, null, mostUsed && /* @__PURE__ */ React.createElement(
78
+ MostUsed,
79
+ {
80
+ label: mostUsedLabel,
81
+ data: mostUsed,
82
+ toggle: toggleOpen
83
+ }
84
+ ), /* @__PURE__ */ React.createElement(MenuBlock, { options, toggle: toggleOpen })) : /* @__PURE__ */ React.createElement(StyledSearchResultsContainer, null, /* @__PURE__ */ React.createElement(StyledSearchTextContainer, null, /* @__PURE__ */ React.createElement(Text, { fontWeight: "bold" }, searchResultsLabel)), results.map((result) => /* @__PURE__ */ React.createElement(
85
+ SearchResultItem,
86
+ {
87
+ key: `${result.title}-${result.category}`,
88
+ data: result,
89
+ searchTerm: search,
90
+ toggle: toggleOpen
91
+ }
92
+ )))
93
+ )));
78
94
  };
79
95
 
80
96
  export { Menubar as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Menubar.js","sources":["../../../../../src/components/molecules/Menubar/Menubar.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport { Icon, Text, useDebouncedState } from '@tecsinapse/react-core';\nimport { Transition } from 'react-transition-group';\nimport {\n StyledIconInput,\n StyledMenuBar,\n StyledMenuButton,\n StyledContainerOpenMenu,\n StyledInput,\n StyledInputContainer,\n StyledSearchResultsContainer,\n StyledSearchTextContainer,\n} from './styled';\nimport { MostUsedType, OptionsType } from './types';\nimport { MostUsed } from './MostUsed';\nimport { MenuBlock } from './MenuBlock';\nimport { SearchResultItem } from './SearchResultItem';\nimport { filterAndTransform } from './utils';\nimport {\n getContainerOpenMenuStyles,\n getInputContainerStyles,\n} from './animations';\nimport { useClickAwayListener } from '../../../hooks';\n\nexport interface MenubarProps extends React.HTMLAttributes<HTMLDivElement> {\n options: OptionsType[];\n leftComponents?: React.ReactNode;\n rightComponents?: React.ReactNode;\n /** Limited to first 4 elements */\n mostUsed?: MostUsedType[];\n mostUsedLabel?: string;\n searchable?: boolean;\n searchPlaceholder?: string;\n searchResultsLabel?: string;\n}\n\nconst Menubar: React.FC<MenubarProps> = ({\n leftComponents,\n rightComponents,\n searchPlaceholder = 'O quê você deseja buscar?',\n options,\n mostUsed,\n mostUsedLabel = 'Mais acessados',\n searchResultsLabel = 'Resultados da busca',\n searchable = true,\n ...rest\n}) => {\n const [search, setSearch] = React.useState<string>('');\n const [results, setResults] = React.useState<MostUsedType[]>([]);\n const [input, setInput] = useDebouncedState<string>('', setSearch);\n const [open, setOpen] = React.useState<boolean>(false);\n const menuRef = useRef<HTMLDivElement | null>(null);\n useClickAwayListener(menuRef, setOpen, 'mouseup');\n\n const toggleOpen = React.useCallback(\n () => setOpen(state => !state),\n [setOpen]\n );\n\n React.useEffect(() => {\n if (search === '') return;\n setResults(filterAndTransform(options, search));\n }, [search]);\n\n return (\n <div ref={ref => (menuRef.current = ref)} {...rest}>\n <StyledMenuBar>\n <StyledMenuButton variant=\"filled\" color=\"primary\" onPress={toggleOpen}>\n {!open ? (\n <Icon\n size=\"deca\"\n name=\"menu\"\n type=\"material-community\"\n fontColor=\"light\"\n />\n ) : (\n <Icon\n size=\"deca\"\n name=\"close\"\n type=\"material-community\"\n fontColor=\"light\"\n />\n )}\n </StyledMenuButton>\n {leftComponents}\n <Transition in={open} timeout={250}>\n {state => (\n <StyledInputContainer style={getInputContainerStyles(state)}>\n {searchable && (\n <StyledInput\n placeholder={searchPlaceholder}\n leftComponent={\n <StyledIconInput>\n <Icon name=\"magnify\" type=\"material-community\" />\n </StyledIconInput>\n }\n value={input}\n onChange={setInput}\n />\n )}\n </StyledInputContainer>\n )}\n </Transition>\n {rightComponents}\n </StyledMenuBar>\n <Transition in={open} timeout={250}>\n {state => (\n <StyledContainerOpenMenu style={getContainerOpenMenuStyles(state)}>\n {!search ? (\n <>\n {mostUsed && (\n <MostUsed\n label={mostUsedLabel}\n data={mostUsed}\n toggle={toggleOpen}\n />\n )}\n <MenuBlock options={options} toggle={toggleOpen} />\n </>\n ) : (\n <StyledSearchResultsContainer>\n <StyledSearchTextContainer>\n <Text fontWeight=\"bold\">{searchResultsLabel}</Text>\n </StyledSearchTextContainer>\n {results.map(result => (\n <SearchResultItem\n key={`${result.title}-${result.category}`}\n data={result}\n searchTerm={search}\n toggle={toggleOpen}\n />\n ))}\n </StyledSearchResultsContainer>\n )}\n </StyledContainerOpenMenu>\n )}\n </Transition>\n </div>\n );\n};\n\nexport default Menubar;\n"],"names":[],"mappings":";;;;;;;;;;;AAoCA,MAAM,UAAkC,CAAC;AAAA,EACvC,cAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAoB,GAAA,iCAAA;AAAA,EACpB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAgB,GAAA,gBAAA;AAAA,EAChB,kBAAqB,GAAA,qBAAA;AAAA,EACrB,UAAa,GAAA,IAAA;AAAA,EACb,GAAG,IAAA;AACL,CAAM,KAAA;AACJ,EAAA,MAAM,CAAC,MAAQ,EAAA,SAAS,CAAI,GAAA,KAAA,CAAM,SAAiB,EAAE,CAAA,CAAA;AACrD,EAAA,MAAM,CAAC,OAAS,EAAA,UAAU,IAAI,KAAM,CAAA,QAAA,CAAyB,EAAE,CAAA,CAAA;AAC/D,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,iBAAA,CAA0B,IAAI,SAAS,CAAA,CAAA;AACjE,EAAA,MAAM,CAAC,IAAM,EAAA,OAAO,CAAI,GAAA,KAAA,CAAM,SAAkB,KAAK,CAAA,CAAA;AACrD,EAAM,MAAA,OAAA,GAAU,OAA8B,IAAI,CAAA,CAAA;AAClD,EAAqB,oBAAA,CAAA,OAAA,EAAS,SAAS,SAAS,CAAA,CAAA;AAEhD,EAAA,MAAM,aAAa,KAAM,CAAA,WAAA;AAAA,IACvB,MAAM,OAAA,CAAQ,CAAS,KAAA,KAAA,CAAC,KAAK,CAAA;AAAA,IAC7B,CAAC,OAAO,CAAA;AAAA,GACV,CAAA;AAEA,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,MAAW,KAAA,EAAA;AAAI,MAAA,OAAA;AACnB,IAAW,UAAA,CAAA,kBAAA,CAAmB,OAAS,EAAA,MAAM,CAAC,CAAA,CAAA;AAAA,GAChD,EAAG,CAAC,MAAM,CAAC,CAAA,CAAA;AAEX,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,SAAI,GAAK,EAAA,CAAA,GAAA,KAAQ,QAAQ,OAAU,GAAA,GAAA,EAAO,GAAG,IAC5C,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,qCACE,KAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,EAAiB,SAAQ,QAAS,EAAA,KAAA,EAAM,WAAU,OAAS,EAAA,UAAA,EAAA,EACzD,CAAC,IACA,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,IAAK,EAAA,MAAA;AAAA,MACL,IAAK,EAAA,MAAA;AAAA,MACL,IAAK,EAAA,oBAAA;AAAA,MACL,SAAU,EAAA,OAAA;AAAA,KAAA;AAAA,GAGZ,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,IAAK,EAAA,MAAA;AAAA,MACL,IAAK,EAAA,OAAA;AAAA,MACL,IAAK,EAAA,oBAAA;AAAA,MACL,SAAU,EAAA,OAAA;AAAA,KAAA;AAAA,GAGhB,CACC,EAAA,cAAA,kBACA,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,IAAI,IAAM,EAAA,OAAA,EAAS,GAC5B,EAAA,EAAA,CAAA,KAAA,yCACE,oBAAqB,EAAA,EAAA,KAAA,EAAO,uBAAwB,CAAA,KAAK,KACvD,UACC,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,WAAa,EAAA,iBAAA;AAAA,MACb,aAAA,sCACG,eACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAK,EAAA,SAAA,EAAU,IAAK,EAAA,oBAAA,EAAqB,CACjD,CAAA;AAAA,MAEF,KAAO,EAAA,KAAA;AAAA,MACP,QAAU,EAAA,QAAA;AAAA,KAAA;AAAA,GAGhB,CAEJ,CACC,EAAA,eACH,mBACC,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,IAAI,IAAM,EAAA,OAAA,EAAS,OAC5B,CACC,KAAA,qBAAA,KAAA,CAAA,aAAA,CAAC,2BAAwB,KAAO,EAAA,0BAAA,CAA2B,KAAK,CAC7D,EAAA,EAAA,CAAC,MACA,mBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,QACC,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA,aAAA;AAAA,MACP,IAAM,EAAA,QAAA;AAAA,MACN,MAAQ,EAAA,UAAA;AAAA,KAAA;AAAA,GACV,sCAED,SAAU,EAAA,EAAA,OAAA,EAAkB,QAAQ,UAAY,EAAA,CACnD,oBAEC,KAAA,CAAA,aAAA,CAAA,4BAAA,EAAA,IAAA,sCACE,yBACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,UAAW,EAAA,MAAA,EAAA,EAAQ,kBAAmB,CAC9C,CAAA,EACC,OAAQ,CAAA,GAAA,CAAI,CACX,MAAA,qBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,KAAK,CAAG,EAAA,MAAA,CAAO,KAAK,CAAA,CAAA,EAAI,OAAO,QAAQ,CAAA,CAAA;AAAA,MACvC,IAAM,EAAA,MAAA;AAAA,MACN,UAAY,EAAA,MAAA;AAAA,MACZ,MAAQ,EAAA,UAAA;AAAA,KAAA;AAAA,GAEX,CACH,CAEJ,CAEJ,CACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Menubar.js","sources":["../../../../../src/components/molecules/Menubar/Menubar.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport { Icon, Text, useDebouncedState } from '@tecsinapse/react-core';\nimport { Transition } from 'react-transition-group';\nimport {\n StyledIconInput,\n StyledMenuBar,\n StyledMenuButton,\n StyledContainerOpenMenu,\n StyledInput,\n StyledInputContainer,\n StyledSearchResultsContainer,\n StyledSearchTextContainer,\n} from './styled';\nimport { MostUsedType, OptionsType } from './types';\nimport { MostUsed } from './MostUsed';\nimport { MenuBlock } from './MenuBlock';\nimport { SearchResultItem } from './SearchResultItem';\nimport { filterAndTransform } from './utils';\nimport {\n getContainerOpenMenuStyles,\n getInputContainerStyles,\n} from './animations';\nimport { useClickAwayListener } from '../../../hooks';\n\nexport interface MenubarProps extends React.HTMLAttributes<HTMLDivElement> {\n options: OptionsType[];\n leftComponents?: React.ReactNode;\n rightComponents?: React.ReactNode;\n /** Limited to first 4 elements */\n mostUsed?: MostUsedType[];\n mostUsedLabel?: string;\n searchable?: boolean;\n searchPlaceholder?: string;\n searchResultsLabel?: string;\n}\n\nconst Menubar: React.FC<MenubarProps> = ({\n leftComponents,\n rightComponents,\n searchPlaceholder = 'O quê você deseja buscar?',\n options,\n mostUsed,\n mostUsedLabel = 'Mais acessados',\n searchResultsLabel = 'Resultados da busca',\n searchable = true,\n ...rest\n}) => {\n const [search, setSearch] = React.useState<string>('');\n const [results, setResults] = React.useState<MostUsedType[]>([]);\n const [input, setInput] = useDebouncedState<string>('', setSearch);\n const [open, setOpen] = React.useState<boolean>(false);\n const menuRef = useRef<HTMLDivElement | null>(null);\n const transitionInputRef = useRef<HTMLDivElement | null>(null);\n const transitionMenuRef = useRef<HTMLDivElement | null>(null);\n useClickAwayListener(menuRef, setOpen, 'mouseup');\n\n const toggleOpen = React.useCallback(\n () => setOpen(state => !state),\n [setOpen]\n );\n\n React.useEffect(() => {\n if (search === '') return;\n setResults(filterAndTransform(options, search));\n }, [search]);\n\n return (\n <div ref={ref => (menuRef.current = ref)} {...rest}>\n <StyledMenuBar>\n <StyledMenuButton variant=\"filled\" color=\"primary\" onPress={toggleOpen}>\n {!open ? (\n <Icon\n size=\"deca\"\n name=\"menu\"\n type=\"material-community\"\n fontColor=\"light\"\n />\n ) : (\n <Icon\n size=\"deca\"\n name=\"close\"\n type=\"material-community\"\n fontColor=\"light\"\n />\n )}\n </StyledMenuButton>\n {leftComponents}\n <Transition in={open} timeout={250} nodeRef={transitionInputRef}>\n {state => (\n <StyledInputContainer\n style={getInputContainerStyles(state)}\n ref={transitionInputRef}\n >\n {searchable && (\n <StyledInput\n placeholder={searchPlaceholder}\n leftComponent={\n <StyledIconInput>\n <Icon name=\"magnify\" type=\"material-community\" />\n </StyledIconInput>\n }\n value={input}\n onChange={setInput}\n />\n )}\n </StyledInputContainer>\n )}\n </Transition>\n {rightComponents}\n </StyledMenuBar>\n <Transition in={open} timeout={250} nodeRef={transitionMenuRef}>\n {state => (\n <StyledContainerOpenMenu\n style={getContainerOpenMenuStyles(state)}\n ref={transitionMenuRef}\n >\n {!search ? (\n <>\n {mostUsed && (\n <MostUsed\n label={mostUsedLabel}\n data={mostUsed}\n toggle={toggleOpen}\n />\n )}\n <MenuBlock options={options} toggle={toggleOpen} />\n </>\n ) : (\n <StyledSearchResultsContainer>\n <StyledSearchTextContainer>\n <Text fontWeight=\"bold\">{searchResultsLabel}</Text>\n </StyledSearchTextContainer>\n {results.map(result => (\n <SearchResultItem\n key={`${result.title}-${result.category}`}\n data={result}\n searchTerm={search}\n toggle={toggleOpen}\n />\n ))}\n </StyledSearchResultsContainer>\n )}\n </StyledContainerOpenMenu>\n )}\n </Transition>\n </div>\n );\n};\n\nexport default Menubar;\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { SelectProps } from '../Select';
3
- declare const Dropdown: <Data, Type extends "single" | "multi">({ options, onSearch, type, hideSearchBar, onSelect, value, keyExtractor, labelExtractor, setDropDownVisible, style, anchor, selectAllLabel, searchBarPlaceholder, }: SelectProps<Data, Type> & {
3
+ declare const Component: <Data, Type extends "single" | "multi">({ options, onSearch, type, hideSearchBar, onSelect, value, keyExtractor, labelExtractor, setDropDownVisible, style, anchor, selectAllLabel, searchBarPlaceholder, }: SelectProps<Data, Type> & {
4
4
  setDropDownVisible: (t: boolean) => void;
5
- }) => JSX.Element;
5
+ }, ref: React.ForwardedRef<HTMLDivElement>) => JSX.Element;
6
+ declare const Dropdown: <Data, Type extends "single" | "multi">(props: SelectProps<Data, Type> & {
7
+ setDropDownVisible: (t: boolean) => void;
8
+ } & {
9
+ ref?: React.ForwardedRef<HTMLDivElement> | undefined;
10
+ }) => ReturnType<typeof Component>;
6
11
  export default Dropdown;
@@ -5,7 +5,7 @@ import { StyledContainerDropdown, StyledContainerCheckAll, SearchBarContainer, S
5
5
  import SearchInput from './components/SearchInput.js';
6
6
 
7
7
  const fullWidth = { width: "100%" };
8
- const Dropdown = ({
8
+ const Component = ({
9
9
  options,
10
10
  onSearch,
11
11
  type,
@@ -19,7 +19,7 @@ const Dropdown = ({
19
19
  anchor,
20
20
  selectAllLabel,
21
21
  searchBarPlaceholder
22
- }) => {
22
+ }, ref) => {
23
23
  const [searchArg, setSearchArg] = useDebouncedState("", onSearch);
24
24
  const lengthOptions = React.useMemo(() => options.length, [options]);
25
25
  const [checkedAll, setCheckedAll] = React.useState(
@@ -49,7 +49,8 @@ const Dropdown = ({
49
49
  {
50
50
  lengthOptions,
51
51
  style,
52
- anchor
52
+ anchor,
53
+ ref
53
54
  },
54
55
  type === "multi" && /* @__PURE__ */ React.createElement(
55
56
  StyledContainerCheckAll,
@@ -95,6 +96,7 @@ const Dropdown = ({
95
96
  )))
96
97
  );
97
98
  };
99
+ const Dropdown = React.forwardRef(Component);
98
100
 
99
101
  export { Dropdown as default };
100
102
  //# sourceMappingURL=Dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.js","sources":["../../../../../../src/components/molecules/Select/Dropdown/Dropdown.tsx"],"sourcesContent":["import React from 'react';\nimport { Checkbox, Text, useDebouncedState } from '@tecsinapse/react-core';\nimport { ItemSelect } from '../SelectItem';\nimport { SelectProps } from '../Select';\nimport {\n SearchBarContainer,\n StyledContainerCheckAll,\n StyledContainerDropdown,\n StyledContainerTextLabel,\n StyledSpan,\n OptionsContainer,\n PaddedContainer,\n} from './styled';\nimport { SearchInput } from './components';\n\nconst fullWidth = { width: '100%' };\n\nconst Dropdown = <Data, Type extends 'single' | 'multi'>({\n options,\n onSearch,\n type,\n hideSearchBar,\n onSelect,\n value,\n keyExtractor,\n labelExtractor,\n setDropDownVisible,\n style,\n anchor,\n selectAllLabel,\n searchBarPlaceholder,\n}: SelectProps<Data, Type> & {\n setDropDownVisible: (t: boolean) => void;\n}): JSX.Element => {\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const lengthOptions = React.useMemo(() => options.length, [options]);\n\n const [checkedAll, setCheckedAll] = React.useState<boolean>(\n type === 'multi' && (value as Data[])?.length === lengthOptions\n );\n\n React.useEffect(() => {\n if (type === 'multi') {\n lengthOptions === (value as Data[])?.length\n ? setCheckedAll(true)\n : setCheckedAll(false);\n }\n }, [value, type, lengthOptions]);\n\n const onClickCheckAll = React.useCallback(() => {\n const items = (options as Data[]).map(option => option);\n let aux;\n setCheckedAll(prev => {\n aux = !prev;\n return !prev;\n });\n type OnSelectArg = Parameters<typeof onSelect>[0];\n const auxArray: Data[] = [];\n !aux ? onSelect(auxArray as OnSelectArg) : onSelect(items as OnSelectArg);\n }, [options, setCheckedAll, onSelect]);\n\n const onChange = React.useCallback(\n text => setSearchArg(text),\n [setSearchArg]\n );\n\n return (\n <StyledContainerDropdown\n lengthOptions={lengthOptions}\n style={style}\n anchor={anchor}\n >\n {type === 'multi' && (\n <StyledContainerCheckAll\n onClick={hideSearchBar ? onClickCheckAll : undefined}\n >\n <Checkbox checked={checkedAll} onChange={onClickCheckAll} />\n {!hideSearchBar ? (\n <SearchBarContainer>\n <SearchInput\n searchArg={searchArg}\n onChange={onChange}\n fullWidth={fullWidth}\n placeholder={searchBarPlaceholder}\n />\n </SearchBarContainer>\n ) : (\n <StyledContainerTextLabel>\n <Text fontWeight=\"bold\">\n <StyledSpan>{selectAllLabel}</StyledSpan>\n </Text>\n </StyledContainerTextLabel>\n )}\n </StyledContainerCheckAll>\n )}\n {type === 'single' && !hideSearchBar && (\n <PaddedContainer>\n <SearchInput\n searchArg={searchArg}\n onChange={onChange}\n fullWidth={fullWidth}\n placeholder={searchBarPlaceholder}\n />\n </PaddedContainer>\n )}\n <OptionsContainer lengthOptions={options.length}>\n {(options as Data[]).map((item, index) => (\n <ItemSelect\n type={type}\n key={keyExtractor(item)}\n item={item}\n onSelect={onSelect}\n value={value}\n keyExtractor={keyExtractor}\n index={index}\n labelExtractor={labelExtractor}\n setDropDownVisible={setDropDownVisible}\n checkedAll={checkedAll}\n setCheckedAll={setCheckedAll}\n lenghtOptions={lengthOptions}\n />\n ))}\n </OptionsContainer>\n </StyledContainerDropdown>\n );\n};\n\nexport default Dropdown;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Dropdown.js","sources":["../../../../../../src/components/molecules/Select/Dropdown/Dropdown.tsx"],"sourcesContent":["import React from 'react';\nimport { Checkbox, Text, useDebouncedState } from '@tecsinapse/react-core';\nimport { ItemSelect } from '../SelectItem';\nimport { SelectProps } from '../Select';\nimport {\n SearchBarContainer,\n StyledContainerCheckAll,\n StyledContainerDropdown,\n StyledContainerTextLabel,\n StyledSpan,\n OptionsContainer,\n PaddedContainer,\n} from './styled';\nimport { SearchInput } from './components';\n\nconst fullWidth = { width: '100%' };\n\nconst Component = <Data, Type extends 'single' | 'multi'>(\n {\n options,\n onSearch,\n type,\n hideSearchBar,\n onSelect,\n value,\n keyExtractor,\n labelExtractor,\n setDropDownVisible,\n style,\n anchor,\n selectAllLabel,\n searchBarPlaceholder,\n }: SelectProps<Data, Type> & {\n setDropDownVisible: (t: boolean) => void;\n },\n ref: React.ForwardedRef<HTMLDivElement>\n): JSX.Element => {\n const [searchArg, setSearchArg] = useDebouncedState<string>('', onSearch);\n const lengthOptions = React.useMemo(() => options.length, [options]);\n\n const [checkedAll, setCheckedAll] = React.useState<boolean>(\n type === 'multi' && (value as Data[])?.length === lengthOptions\n );\n\n React.useEffect(() => {\n if (type === 'multi') {\n lengthOptions === (value as Data[])?.length\n ? setCheckedAll(true)\n : setCheckedAll(false);\n }\n }, [value, type, lengthOptions]);\n\n const onClickCheckAll = React.useCallback(() => {\n const items = (options as Data[]).map(option => option);\n let aux;\n setCheckedAll(prev => {\n aux = !prev;\n return !prev;\n });\n type OnSelectArg = Parameters<typeof onSelect>[0];\n const auxArray: Data[] = [];\n !aux ? onSelect(auxArray as OnSelectArg) : onSelect(items as OnSelectArg);\n }, [options, setCheckedAll, onSelect]);\n\n const onChange = React.useCallback(\n text => setSearchArg(text),\n [setSearchArg]\n );\n\n return (\n <StyledContainerDropdown\n lengthOptions={lengthOptions}\n style={style}\n anchor={anchor}\n ref={ref}\n >\n {type === 'multi' && (\n <StyledContainerCheckAll\n onClick={hideSearchBar ? onClickCheckAll : undefined}\n >\n <Checkbox checked={checkedAll} onChange={onClickCheckAll} />\n {!hideSearchBar ? (\n <SearchBarContainer>\n <SearchInput\n searchArg={searchArg}\n onChange={onChange}\n fullWidth={fullWidth}\n placeholder={searchBarPlaceholder}\n />\n </SearchBarContainer>\n ) : (\n <StyledContainerTextLabel>\n <Text fontWeight=\"bold\">\n <StyledSpan>{selectAllLabel}</StyledSpan>\n </Text>\n </StyledContainerTextLabel>\n )}\n </StyledContainerCheckAll>\n )}\n {type === 'single' && !hideSearchBar && (\n <PaddedContainer>\n <SearchInput\n searchArg={searchArg}\n onChange={onChange}\n fullWidth={fullWidth}\n placeholder={searchBarPlaceholder}\n />\n </PaddedContainer>\n )}\n <OptionsContainer lengthOptions={options.length}>\n {(options as Data[]).map((item, index) => (\n <ItemSelect\n type={type}\n key={keyExtractor(item)}\n item={item}\n onSelect={onSelect}\n value={value}\n keyExtractor={keyExtractor}\n index={index}\n labelExtractor={labelExtractor}\n setDropDownVisible={setDropDownVisible}\n checkedAll={checkedAll}\n setCheckedAll={setCheckedAll}\n lenghtOptions={lengthOptions}\n />\n ))}\n </OptionsContainer>\n </StyledContainerDropdown>\n );\n};\nconst Dropdown = React.forwardRef(Component) as <\n Data,\n Type extends 'single' | 'multi'\n>(\n props: SelectProps<Data, Type> & {\n setDropDownVisible: (t: boolean) => void;\n } & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof Component>;\n\nexport default Dropdown;\n"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ const Select = ({
28
28
  const [dropDownVisible, setDropDownVisible] = React.useState(false);
29
29
  const [selectOptions, setSelectOptions] = useState([]);
30
30
  const refDropDown = React.useRef(null);
31
+ const transitionRef = React.useRef(null);
31
32
  useClickAwayListener(refDropDown, setDropDownVisible);
32
33
  useEffect(() => {
33
34
  if (typeof options !== "function") {
@@ -105,9 +106,10 @@ const Select = ({
105
106
  rightComponent: RightComponent
106
107
  },
107
108
  /* @__PURE__ */ React.createElement(Text, { ...displayTextProps, fontWeight: "bold" }, displayValue)
108
- )), /* @__PURE__ */ React.createElement(Transition, { in: dropDownVisible, timeout: 300 }, (state) => /* @__PURE__ */ React.createElement(
109
+ )), /* @__PURE__ */ React.createElement(Transition, { in: dropDownVisible, timeout: 300, nodeRef: transitionRef }, (state) => /* @__PURE__ */ React.createElement(
109
110
  Dropdown,
110
111
  {
112
+ ref: transitionRef,
111
113
  options: selectOptions ?? [],
112
114
  onSelect,
113
115
  value,
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n PressableInputContainer,\n Text,\n TextProps,\n} from '@tecsinapse/react-core';\nimport React, { useEffect, useState } from 'react';\nimport { Transition } from 'react-transition-group';\nimport { useClickAwayListener } from '../../../hooks';\nimport { defaultStyles, transition } from './animations';\nimport { Dropdown } from './Dropdown';\nimport { getDisplayValue } from './functions';\nimport {\n RightComponent,\n StyledContainer,\n StyledInputContainer,\n} from './styled';\n\nexport interface SelectProps<Data, Type extends 'single' | 'multi'>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n options: ((searchInput?: string) => Promise<Data[]>) | Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | undefined : Data[];\n type: Type;\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n placeholder?: string;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n hideSearchBar?: boolean;\n selectAllLabel?: string;\n disabled?: boolean;\n label?: string;\n anchor?: 'top' | 'bottom';\n displayTextProps?: TextProps;\n}\n\n/** NOTE: For better performance, you should memoize options and handlers */\nconst Select = <Data, Type extends 'single' | 'multi'>({\n value,\n options,\n keyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onSearch,\n searchBarPlaceholder = 'Busque a opção desejada',\n hideSearchBar = true,\n label,\n disabled = false,\n anchor = 'bottom',\n displayTextProps,\n selectAllLabel = 'Selecionar todos',\n ...rest\n}: SelectProps<Data, Type>): JSX.Element => {\n const [dropDownVisible, setDropDownVisible] = React.useState<boolean>(false);\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const refDropDown = React.useRef(null);\n useClickAwayListener(refDropDown, setDropDownVisible);\n\n useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n // TODO: Add Skeleton to modal height when loading is true\n\n const onlyLabel = label && !placeholder;\n const hasValue =\n type === 'single' ? !!value : ((value || []) as []).length > 0;\n const _placeholder = onlyLabel ? label : placeholder;\n const _label = hasValue ? label : undefined;\n\n const displayValue = getDisplayValue<Data>(\n type,\n value,\n selectOptions,\n _placeholder,\n keyExtractor,\n labelExtractor\n );\n\n const handleLazyFocus = React.useCallback(async () => {\n if (!dropDownVisible && typeof options === 'function') {\n try {\n const result = await options();\n if (result) {\n setSelectOptions(result ?? []);\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n }, [options, setSelectOptions, dropDownVisible]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch && dropDownVisible) {\n try {\n //TODO: Remove code duplicated below (Select in react-native-kit)\n const result = await onSearch(searchInput);\n if (result) {\n if (type === 'single') {\n if (\n value &&\n !result.find(\n v => keyExtractor(value as Data) === keyExtractor(v)\n )\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n } else {\n if ((value as Data[]).length > 0) {\n const selectedValues =\n (value as Data[]).filter(\n v =>\n !result.find(\n current =>\n keyExtractor(v as Data) === keyExtractor(current)\n )\n ) || [];\n setSelectOptions([...selectedValues, ...result]);\n } else {\n setSelectOptions(result);\n }\n }\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n },\n [onSearch, value, keyExtractor, dropDownVisible, setSelectOptions]\n );\n\n const handlePressInput = async () => {\n await handleLazyFocus();\n };\n\n const onPress = React.useCallback(\n () => setDropDownVisible(prev => !prev),\n [setDropDownVisible]\n );\n //TODO: when component is wrapper by GridITem and Text of label has prop \"numberOfLines={1}\", this component incresing witht based on options selects, breaking layout of Grid, we must fix this problem.\n return (\n <StyledContainer ref={refDropDown} {...rest}>\n <StyledInputContainer onFocus={handlePressInput}>\n <PressableInputContainer\n label={_label}\n onPress={onPress}\n disabled={disabled}\n rightComponent={RightComponent}\n >\n <Text {...displayTextProps} fontWeight={'bold'}>\n {displayValue}\n </Text>\n </PressableInputContainer>\n </StyledInputContainer>\n <Transition in={dropDownVisible} timeout={300}>\n {state => (\n <Dropdown\n options={selectOptions ?? []}\n onSelect={onSelect}\n value={value}\n type={type}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n hideSearchBar={hideSearchBar}\n searchBarPlaceholder={searchBarPlaceholder}\n onSearch={handleOnSearch}\n style={{ ...defaultStyles, ...transition[anchor][state] }}\n setDropDownVisible={setDropDownVisible}\n anchor={anchor}\n selectAllLabel={selectAllLabel}\n />\n )}\n </Transition>\n </StyledContainer>\n );\n};\n\nexport default Select;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Select.js","sources":["../../../../../src/components/molecules/Select/Select.tsx"],"sourcesContent":["import {\n PressableInputContainer,\n Text,\n TextProps,\n} from '@tecsinapse/react-core';\nimport React, { useEffect, useState } from 'react';\nimport { Transition } from 'react-transition-group';\nimport { useClickAwayListener } from '../../../hooks';\nimport { defaultStyles, transition } from './animations';\nimport { Dropdown } from './Dropdown';\nimport { getDisplayValue } from './functions';\nimport {\n RightComponent,\n StyledContainer,\n StyledInputContainer,\n} from './styled';\n\nexport interface SelectProps<Data, Type extends 'single' | 'multi'>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n options: ((searchInput?: string) => Promise<Data[]>) | Data[];\n onSelect: (\n option: Type extends 'single' ? Data | undefined : Data[]\n ) => never | void;\n value: Type extends 'single' ? Data | undefined : Data[];\n type: Type;\n keyExtractor: (t: Data, index?: number) => string;\n labelExtractor: (t: Data) => string;\n placeholder?: string;\n onSearch?:\n | ((searchArg: string) => void)\n | ((searchInput?: string) => Promise<Data[]>)\n | never;\n searchBarPlaceholder?: string;\n hideSearchBar?: boolean;\n selectAllLabel?: string;\n disabled?: boolean;\n label?: string;\n anchor?: 'top' | 'bottom';\n displayTextProps?: TextProps;\n}\n\n/** NOTE: For better performance, you should memoize options and handlers */\nconst Select = <Data, Type extends 'single' | 'multi'>({\n value,\n options,\n keyExtractor,\n onSelect,\n type,\n labelExtractor,\n placeholder,\n onSearch,\n searchBarPlaceholder = 'Busque a opção desejada',\n hideSearchBar = true,\n label,\n disabled = false,\n anchor = 'bottom',\n displayTextProps,\n selectAllLabel = 'Selecionar todos',\n ...rest\n}: SelectProps<Data, Type>): JSX.Element => {\n const [dropDownVisible, setDropDownVisible] = React.useState<boolean>(false);\n const [selectOptions, setSelectOptions] = useState<Data[]>([]);\n const refDropDown = React.useRef(null);\n const transitionRef = React.useRef(null);\n useClickAwayListener(refDropDown, setDropDownVisible);\n\n useEffect(() => {\n if (typeof options !== 'function') {\n setSelectOptions(options);\n }\n }, [options]);\n\n // TODO: Add Skeleton to modal height when loading is true\n\n const onlyLabel = label && !placeholder;\n const hasValue =\n type === 'single' ? !!value : ((value || []) as []).length > 0;\n const _placeholder = onlyLabel ? label : placeholder;\n const _label = hasValue ? label : undefined;\n\n const displayValue = getDisplayValue<Data>(\n type,\n value,\n selectOptions,\n _placeholder,\n keyExtractor,\n labelExtractor\n );\n\n const handleLazyFocus = React.useCallback(async () => {\n if (!dropDownVisible && typeof options === 'function') {\n try {\n const result = await options();\n if (result) {\n setSelectOptions(result ?? []);\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n }, [options, setSelectOptions, dropDownVisible]);\n\n const handleOnSearch = React.useCallback(\n async (searchInput: string | undefined) => {\n if (searchInput !== undefined && onSearch && dropDownVisible) {\n try {\n //TODO: Remove code duplicated below (Select in react-native-kit)\n const result = await onSearch(searchInput);\n if (result) {\n if (type === 'single') {\n if (\n value &&\n !result.find(\n v => keyExtractor(value as Data) === keyExtractor(v)\n )\n ) {\n setSelectOptions([value as Data, ...result]);\n } else setSelectOptions(result);\n } else {\n if ((value as Data[]).length > 0) {\n const selectedValues =\n (value as Data[]).filter(\n v =>\n !result.find(\n current =>\n keyExtractor(v as Data) === keyExtractor(current)\n )\n ) || [];\n setSelectOptions([...selectedValues, ...result]);\n } else {\n setSelectOptions(result);\n }\n }\n }\n } catch (e) {\n // TODO: Catch error\n }\n }\n },\n [onSearch, value, keyExtractor, dropDownVisible, setSelectOptions]\n );\n\n const handlePressInput = async () => {\n await handleLazyFocus();\n };\n\n const onPress = React.useCallback(\n () => setDropDownVisible(prev => !prev),\n [setDropDownVisible]\n );\n //TODO: when component is wrapper by GridITem and Text of label has prop \"numberOfLines={1}\", this component incresing witht based on options selects, breaking layout of Grid, we must fix this problem.\n return (\n <StyledContainer ref={refDropDown} {...rest}>\n <StyledInputContainer onFocus={handlePressInput}>\n <PressableInputContainer\n label={_label}\n onPress={onPress}\n disabled={disabled}\n rightComponent={RightComponent}\n >\n <Text {...displayTextProps} fontWeight={'bold'}>\n {displayValue}\n </Text>\n </PressableInputContainer>\n </StyledInputContainer>\n <Transition in={dropDownVisible} timeout={300} nodeRef={transitionRef}>\n {state => (\n <Dropdown\n ref={transitionRef}\n options={selectOptions ?? []}\n onSelect={onSelect}\n value={value}\n type={type}\n keyExtractor={keyExtractor}\n labelExtractor={labelExtractor}\n hideSearchBar={hideSearchBar}\n searchBarPlaceholder={searchBarPlaceholder}\n onSearch={handleOnSearch}\n style={{ ...defaultStyles, ...transition[anchor][state] }}\n setDropDownVisible={setDropDownVisible}\n anchor={anchor}\n selectAllLabel={selectAllLabel}\n />\n )}\n </Transition>\n </StyledContainer>\n );\n};\n\nexport default Select;\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const getDisplayValue: <Data>(type: 'multi' | 'single', value: Data | Data[] | undefined, options: Data[], placeholder: string | undefined, keyExtractor: (option: Data, idx?: number) => string, labelExtractor: (option: Data) => string) => string | Data | Data[] | undefined;
1
+ export declare const getDisplayValue: <Data>(type: 'multi' | 'single', value: Data | Data[] | undefined, options: Data[], placeholder: string | undefined, keyExtractor: (option: Data, idx?: number) => string, labelExtractor: (option: Data) => string) => string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sources":["../../../../../src/components/molecules/Select/functions.ts"],"sourcesContent":["export const getDisplayValue = <Data>(\n type: 'multi' | 'single',\n value: Data | Data[] | undefined,\n options: Data[],\n placeholder: string | undefined,\n keyExtractor: (option: Data, idx?: number) => string,\n labelExtractor: (option: Data) => string\n): Data | Data[] | string | undefined => {\n if (type === 'multi') {\n if ((value as Data[]).length === 0) return placeholder;\n else {\n return (value as Data[])\n .reduce((acc, option) => acc + labelExtractor(option) + ', ', '')\n .slice(0, -2);\n }\n } else {\n if (value === undefined) return placeholder;\n const selectedOption = options.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return selectedOption ? labelExtractor(selectedOption) : placeholder;\n }\n};\n"],"names":[],"mappings":"AAAO,MAAM,kBAAkB,CAC7B,IAAA,EACA,OACA,OACA,EAAA,WAAA,EACA,cACA,cACuC,KAAA;AACvC,EAAA,IAAI,SAAS,OAAS,EAAA;AACpB,IAAA,IAAK,MAAiB,MAAW,KAAA,CAAA;AAAG,MAAO,OAAA,WAAA,CAAA;AAAA,SACtC;AACH,MAAA,OAAQ,KACL,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,WAAW,GAAM,GAAA,cAAA,CAAe,MAAM,CAAA,GAAI,IAAM,EAAA,EAAE,CAC/D,CAAA,KAAA,CAAM,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,KAChB;AAAA,GACK,MAAA;AACL,IAAA,IAAI,KAAU,KAAA,KAAA,CAAA;AAAW,MAAO,OAAA,WAAA,CAAA;AAChC,IAAA,MAAM,iBAAiB,OAAQ,CAAA,IAAA;AAAA,MAC7B,CAAC,QAAQ,KACP,KAAA,YAAA,CAAa,QAAQ,KAAK,CAAA,IAAK,YAAa,CAAA,KAAA,EAAe,KAAK,CAAA;AAAA,KACpE,CAAA;AACA,IAAO,OAAA,cAAA,GAAiB,cAAe,CAAA,cAAc,CAAI,GAAA,WAAA,CAAA;AAAA,GAC3D;AACF;;;;"}
1
+ {"version":3,"file":"functions.js","sources":["../../../../../src/components/molecules/Select/functions.ts"],"sourcesContent":["export const getDisplayValue = <Data>(\n type: 'multi' | 'single',\n value: Data | Data[] | undefined,\n options: Data[],\n placeholder: string | undefined,\n keyExtractor: (option: Data, idx?: number) => string,\n labelExtractor: (option: Data) => string\n): string | undefined => {\n if (type === 'multi') {\n if ((value as Data[]).length === 0) return placeholder;\n else {\n return (value as Data[])\n .reduce((acc, option) => acc + labelExtractor(option) + ', ', '')\n .slice(0, -2);\n }\n } else {\n if (value === undefined) return placeholder;\n const selectedOption = options.find(\n (option, index) =>\n keyExtractor(option, index) == keyExtractor(value as Data, index)\n );\n return selectedOption ? labelExtractor(selectedOption) : placeholder;\n }\n};\n"],"names":[],"mappings":"AAAO,MAAM,kBAAkB,CAC7B,IAAA,EACA,OACA,OACA,EAAA,WAAA,EACA,cACA,cACuB,KAAA;AACvB,EAAA,IAAI,SAAS,OAAS,EAAA;AACpB,IAAA,IAAK,MAAiB,MAAW,KAAA,CAAA;AAAG,MAAO,OAAA,WAAA,CAAA;AAAA,SACtC;AACH,MAAA,OAAQ,KACL,CAAA,MAAA,CAAO,CAAC,GAAA,EAAK,WAAW,GAAM,GAAA,cAAA,CAAe,MAAM,CAAA,GAAI,IAAM,EAAA,EAAE,CAC/D,CAAA,KAAA,CAAM,GAAG,CAAE,CAAA,CAAA,CAAA;AAAA,KAChB;AAAA,GACK,MAAA;AACL,IAAA,IAAI,KAAU,KAAA,KAAA,CAAA;AAAW,MAAO,OAAA,WAAA,CAAA;AAChC,IAAA,MAAM,iBAAiB,OAAQ,CAAA,IAAA;AAAA,MAC7B,CAAC,QAAQ,KACP,KAAA,YAAA,CAAa,QAAQ,KAAK,CAAA,IAAK,YAAa,CAAA,KAAA,EAAe,KAAK,CAAA;AAAA,KACpE,CAAA;AACA,IAAO,OAAA,cAAA,GAAiB,cAAe,CAAA,cAAc,CAAI,GAAA,WAAA,CAAA;AAAA,GAC3D;AACF;;;;"}
@@ -1,2 +1,2 @@
1
1
  import React from 'react';
2
- export declare const useClickAwayListener: (ref: React.MutableRefObject<any>, setVisible: React.Dispatch<React.SetStateAction<boolean>>, event?: 'mouseup' | 'mousedown' | undefined) => void;
2
+ export declare const useClickAwayListener: (ref: React.MutableRefObject<any>, setVisible: React.Dispatch<React.SetStateAction<boolean>>, event?: 'mouseup' | 'mousedown' | undefined, onClickAway?: () => void) => void;
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
 
3
- const useClickAwayListener = (ref, setVisible, event = "mousedown") => {
3
+ const useClickAwayListener = (ref, setVisible, event = "mousedown", onClickAway) => {
4
4
  React.useEffect(() => {
5
5
  const handleClickOutside = (event2) => {
6
6
  if (ref.current && !ref.current.contains(event2.target)) {
7
+ onClickAway?.();
7
8
  setVisible(false);
8
9
  }
9
10
  };
@@ -11,7 +12,7 @@ const useClickAwayListener = (ref, setVisible, event = "mousedown") => {
11
12
  return () => {
12
13
  document.removeEventListener(event, handleClickOutside);
13
14
  };
14
- }, [ref]);
15
+ }, [ref, onClickAway]);
15
16
  };
16
17
 
17
18
  export { useClickAwayListener };
@@ -1 +1 @@
1
- {"version":3,"file":"useClickAwayListener.js","sources":["../../../src/hooks/useClickAwayListener.ts"],"sourcesContent":["import React from 'react';\n\nexport const useClickAwayListener = (\n ref: React.MutableRefObject<any>,\n setVisible: React.Dispatch<React.SetStateAction<boolean>>,\n event: 'mouseup' | 'mousedown' | undefined = 'mousedown'\n): void => {\n React.useEffect(() => {\n const handleClickOutside = event => {\n if (ref.current && !ref.current.contains(event.target)) {\n setVisible(false);\n }\n };\n document.addEventListener(event, handleClickOutside);\n return () => {\n document.removeEventListener(event, handleClickOutside);\n };\n }, [ref]);\n};\n"],"names":["event"],"mappings":";;AAEO,MAAM,oBAAuB,GAAA,CAClC,GACA,EAAA,UAAA,EACA,QAA6C,WACpC,KAAA;AACT,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAM,MAAA,kBAAA,GAAqB,CAAAA,MAAS,KAAA;AAClC,MAAI,IAAA,GAAA,CAAI,WAAW,CAAC,GAAA,CAAI,QAAQ,QAASA,CAAAA,MAAAA,CAAM,MAAM,CAAG,EAAA;AACtD,QAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,OAClB;AAAA,KACF,CAAA;AACA,IAAS,QAAA,CAAA,gBAAA,CAAiB,OAAO,kBAAkB,CAAA,CAAA;AACnD,IAAA,OAAO,MAAM;AACX,MAAS,QAAA,CAAA,mBAAA,CAAoB,OAAO,kBAAkB,CAAA,CAAA;AAAA,KACxD,CAAA;AAAA,GACF,EAAG,CAAC,GAAG,CAAC,CAAA,CAAA;AACV;;;;"}
1
+ {"version":3,"file":"useClickAwayListener.js","sources":["../../../src/hooks/useClickAwayListener.ts"],"sourcesContent":["import React from 'react';\n\nexport const useClickAwayListener = (\n ref: React.MutableRefObject<any>,\n setVisible: React.Dispatch<React.SetStateAction<boolean>>,\n event: 'mouseup' | 'mousedown' | undefined = 'mousedown',\n onClickAway?: () => void\n): void => {\n React.useEffect(() => {\n const handleClickOutside = event => {\n if (ref.current && !ref.current.contains(event.target)) {\n onClickAway?.()\n setVisible(false);\n }\n };\n document.addEventListener(event, handleClickOutside);\n return () => {\n document.removeEventListener(event, handleClickOutside);\n };\n }, [ref, onClickAway]);\n};\n"],"names":["event"],"mappings":";;AAEO,MAAM,uBAAuB,CAClC,GAAA,EACA,UACA,EAAA,KAAA,GAA6C,aAC7C,WACS,KAAA;AACT,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAM,MAAA,kBAAA,GAAqB,CAAAA,MAAS,KAAA;AAClC,MAAI,IAAA,GAAA,CAAI,WAAW,CAAC,GAAA,CAAI,QAAQ,QAASA,CAAAA,MAAAA,CAAM,MAAM,CAAG,EAAA;AACtD,QAAc,WAAA,IAAA,CAAA;AACd,QAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,OAClB;AAAA,KACF,CAAA;AACA,IAAS,QAAA,CAAA,gBAAA,CAAiB,OAAO,kBAAkB,CAAA,CAAA;AACnD,IAAA,OAAO,MAAM;AACX,MAAS,QAAA,CAAA,mBAAA,CAAoB,OAAO,kBAAkB,CAAA,CAAA;AAAA,KACxD,CAAA;AAAA,GACC,EAAA,CAAC,GAAK,EAAA,WAAW,CAAC,CAAA,CAAA;AACvB;;;;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tecsinapse/react-web-kit",
3
3
  "description": "TecSinapse React components",
4
- "version": "2.1.0",
4
+ "version": "2.1.2",
5
5
  "license": "MIT",
6
6
  "main": "dist/cjs/index.js",
7
7
  "module": "dist/esm/index.js",
@@ -23,7 +23,7 @@
23
23
  "@emotion/native": "~11.10.0",
24
24
  "@emotion/react": "~11.10.0",
25
25
  "@emotion/styled": "~11.10.0",
26
- "@tecsinapse/react-core": "2.0.1",
26
+ "@tecsinapse/react-core": "2.0.4",
27
27
  "@types/react-native": "^0.71.0",
28
28
  "date-fns": "~2.29.3",
29
29
  "react-native-vector-icons": "~9.2.0",
@@ -43,5 +43,5 @@
43
43
  "react-dom": "^18.0.0",
44
44
  "react-native-web": ">=0.18.0 <1"
45
45
  },
46
- "gitHead": "ebaa6ff495bdd77c5cc811b05a1e7d62de5c30a7"
46
+ "gitHead": "490ebda1a93d15a4d55e651eb3f4091241f30f3c"
47
47
  }