@tecsinapse/react-web-kit 1.23.9 → 1.23.11

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 (27) hide show
  1. package/dist/cjs/components/atoms/Dropdown/index.d.ts +1 -0
  2. package/dist/cjs/components/atoms/Dropdown/index.js +2 -1
  3. package/dist/cjs/components/atoms/Dropdown/index.js.map +1 -1
  4. package/dist/cjs/components/atoms/Tooltip/Tooltip.d.ts +2 -0
  5. package/dist/cjs/components/atoms/Tooltip/Tooltip.js +2 -0
  6. package/dist/cjs/components/atoms/Tooltip/Tooltip.js.map +1 -1
  7. package/dist/cjs/components/atoms/Tooltip/styled.js +4 -1
  8. package/dist/cjs/components/atoms/Tooltip/styled.js.map +1 -1
  9. package/dist/cjs/components/molecules/DatePicker/DatePicker.js +10 -2
  10. package/dist/cjs/components/molecules/DatePicker/DatePicker.js.map +1 -1
  11. package/dist/cjs/hooks/useClickAwayListener.d.ts +1 -1
  12. package/dist/cjs/hooks/useClickAwayListener.js +3 -2
  13. package/dist/cjs/hooks/useClickAwayListener.js.map +1 -1
  14. package/dist/esm/components/atoms/Dropdown/index.d.ts +1 -0
  15. package/dist/esm/components/atoms/Dropdown/index.js +2 -1
  16. package/dist/esm/components/atoms/Dropdown/index.js.map +1 -1
  17. package/dist/esm/components/atoms/Tooltip/Tooltip.d.ts +2 -0
  18. package/dist/esm/components/atoms/Tooltip/Tooltip.js +2 -0
  19. package/dist/esm/components/atoms/Tooltip/Tooltip.js.map +1 -1
  20. package/dist/esm/components/atoms/Tooltip/styled.js +4 -1
  21. package/dist/esm/components/atoms/Tooltip/styled.js.map +1 -1
  22. package/dist/esm/components/molecules/DatePicker/DatePicker.js +10 -2
  23. package/dist/esm/components/molecules/DatePicker/DatePicker.js.map +1 -1
  24. package/dist/esm/hooks/useClickAwayListener.d.ts +1 -1
  25. package/dist/esm/hooks/useClickAwayListener.js +3 -2
  26. package/dist/esm/hooks/useClickAwayListener.js.map +1 -1
  27. package/package.json +3 -3
@@ -2,6 +2,7 @@ import React, { Dispatch, SetStateAction } from 'react';
2
2
  export interface DropdownProps {
3
3
  visible: boolean;
4
4
  setVisible: Dispatch<SetStateAction<boolean>>;
5
+ onClickAway?: () => void;
5
6
  }
6
7
  export declare const Dropdown: React.FC<DropdownProps & {
7
8
  children: JSX.Element;
@@ -16,10 +16,11 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
16
16
  const Component = ({
17
17
  visible,
18
18
  setVisible,
19
+ onClickAway,
19
20
  children
20
21
  }) => {
21
22
  const refDropDown = React__default["default"].useRef(null);
22
- useClickAwayListener.useClickAwayListener(refDropDown, setVisible);
23
+ useClickAwayListener.useClickAwayListener(refDropDown, setVisible, "mousedown", onClickAway);
23
24
  return /* @__PURE__ */ React__default["default"].createElement(reactTransitionGroup.Transition, {
24
25
  in: visible,
25
26
  timeout: 300
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/atoms/Dropdown/index.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction } from 'react';\nimport { StyledContainerDropdown } from './styled';\nimport { Transition } from 'react-transition-group';\nimport { defaultStyles, transition } from '../../molecules/Select/animations';\nimport { useClickAwayListener } from '../../../hooks';\n\nexport interface DropdownProps {\n visible: boolean;\n setVisible: Dispatch<SetStateAction<boolean>>;\n}\n\nconst Component: React.FC<DropdownProps & { children: JSX.Element }> = ({\n visible,\n setVisible,\n children,\n}): JSX.Element => {\n const refDropDown = React.useRef(null);\n useClickAwayListener(refDropDown, setVisible);\n\n return (\n <Transition in={visible} timeout={300}>\n {state => (\n <StyledContainerDropdown\n style={{ ...defaultStyles, ...transition['bottom'][state] }}\n ref={refDropDown}\n >\n {children}\n </StyledContainerDropdown>\n )}\n </Transition>\n );\n};\n\nexport const Dropdown = Component;\n"],"names":["React","useClickAwayListener","Transition","StyledContainerDropdown","defaultStyles","transition"],"mappings":";;;;;;;;;;;;;;;AAWA,MAAM,YAAiE,CAAC;AAAA,EACtE,OAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AACF,CAAmB,KAAA;AACjB,EAAM,MAAA,WAAA,GAAcA,yBAAM,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACrC,EAAAC,yCAAA,CAAqB,aAAa,UAAU,CAAA,CAAA;AAE5C,EAAA,uBACGD,yBAAA,CAAA,aAAA,CAAAE,+BAAA,EAAA;AAAA,IAAW,EAAI,EAAA,OAAA;AAAA,IAAS,OAAS,EAAA,GAAA;AAAA,GAAA,EAC/B,2BACEF,yBAAA,CAAA,aAAA,CAAAG,8BAAA,EAAA;AAAA,IACC,OAAO,EAAE,GAAGC,0BAAe,GAAGC,qBAAA,CAAW,UAAU,KAAO,CAAA,EAAA;AAAA,IAC1D,GAAK,EAAA,WAAA;AAAA,GAAA,EAEJ,QACH,CAEJ,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,QAAW,GAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/atoms/Dropdown/index.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction } from 'react';\nimport { StyledContainerDropdown } from './styled';\nimport { Transition } from 'react-transition-group';\nimport { defaultStyles, transition } from '../../molecules/Select/animations';\nimport { useClickAwayListener } from '../../../hooks';\n\nexport interface DropdownProps {\n visible: boolean;\n setVisible: Dispatch<SetStateAction<boolean>>;\n onClickAway?: () => void;\n}\n\nconst Component: React.FC<DropdownProps & { children: JSX.Element }> = ({\n visible,\n setVisible,\n onClickAway,\n children,\n}): JSX.Element => {\n const refDropDown = React.useRef(null);\n useClickAwayListener(refDropDown, setVisible, 'mousedown', onClickAway);\n\n return (\n <Transition in={visible} timeout={300}>\n {state => (\n <StyledContainerDropdown\n style={{ ...defaultStyles, ...transition['bottom'][state] }}\n ref={refDropDown}\n >\n {children}\n </StyledContainerDropdown>\n )}\n </Transition>\n );\n};\n\nexport const Dropdown = Component;\n"],"names":["React","useClickAwayListener","Transition","StyledContainerDropdown","defaultStyles","transition"],"mappings":";;;;;;;;;;;;;;;AAYA,MAAM,YAAiE,CAAC;AAAA,EACtE,OAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AACF,CAAmB,KAAA;AACjB,EAAM,MAAA,WAAA,GAAcA,yBAAM,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACrC,EAAqBC,yCAAA,CAAA,WAAA,EAAa,UAAY,EAAA,WAAA,EAAa,WAAW,CAAA,CAAA;AAEtE,EAAA,uBACGD,yBAAA,CAAA,aAAA,CAAAE,+BAAA,EAAA;AAAA,IAAW,EAAI,EAAA,OAAA;AAAA,IAAS,OAAS,EAAA,GAAA;AAAA,GAAA,EAC/B,2BACEF,yBAAA,CAAA,aAAA,CAAAG,8BAAA,EAAA;AAAA,IACC,OAAO,EAAE,GAAGC,0BAAe,GAAGC,qBAAA,CAAW,UAAU,KAAO,CAAA,EAAA;AAAA,IAC1D,GAAK,EAAA,WAAA;AAAA,GAAA,EAEJ,QACH,CAEJ,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,QAAW,GAAA;;;;"}
@@ -4,10 +4,12 @@ export declare type ComputedType = {
4
4
  height?: number;
5
5
  };
6
6
  export declare type Position = 'top' | 'bottom' | 'right' | 'left';
7
+ export declare type MaxWidth = number;
7
8
  export interface ITooltip {
8
9
  title: string;
9
10
  position?: Position;
10
11
  children?: React.ReactNode;
12
+ maxWidht?: MaxWidth;
11
13
  }
12
14
  declare const Tooltip: React.FC<ITooltip>;
13
15
  export default Tooltip;
@@ -11,6 +11,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
11
11
  const Tooltip = ({
12
12
  children,
13
13
  title,
14
+ maxWidht,
14
15
  position = "bottom"
15
16
  }) => {
16
17
  const spanRef = React__default["default"].useRef();
@@ -26,6 +27,7 @@ const Tooltip = ({
26
27
  return /* @__PURE__ */ React__default["default"].createElement(styled.Container, {
27
28
  position
28
29
  }, children, /* @__PURE__ */ React__default["default"].createElement(styled.TooltipSpan, {
30
+ maxWidth: maxWidht,
29
31
  computed,
30
32
  position,
31
33
  ref: (ref) => spanRef.current = ref
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sources":["../../../../../src/components/atoms/Tooltip/Tooltip.tsx"],"sourcesContent":["import React from 'react';\nimport { Text } from '@tecsinapse/react-core';\nimport { Container, TooltipSpan } from './styled';\n\nexport type ComputedType = { width?: number; height?: number };\nexport type Position = 'top' | 'bottom' | 'right' | 'left';\n\nexport interface ITooltip {\n title: string;\n position?: Position;\n children?: React.ReactNode;\n}\n\nconst Tooltip: React.FC<ITooltip> = ({\n children,\n title,\n position = 'bottom',\n}) => {\n const spanRef = React.useRef<HTMLSpanElement | null>();\n const [computed, setComputed] = React.useState<ComputedType | undefined>(\n undefined\n );\n\n React.useLayoutEffect(() => {\n setComputed({\n width: spanRef.current?.clientWidth,\n height: spanRef.current?.clientHeight,\n });\n }, []);\n\n return (\n <Container position={position}>\n {children}\n <TooltipSpan\n computed={computed}\n position={position}\n ref={ref => (spanRef.current = ref)}\n >\n <Text\n fontWeight=\"bold\"\n typography=\"base\"\n colorVariant=\"secondary\"\n colorTone=\"xlight\"\n >\n {title}\n </Text>\n </TooltipSpan>\n </Container>\n );\n};\n\nexport default Tooltip;\n"],"names":["React","Container","TooltipSpan","Text"],"mappings":";;;;;;;;;;AAaA,MAAM,UAA8B,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAW,GAAA,QAAA;AACb,CAAM,KAAA;AACJ,EAAM,MAAA,OAAA,GAAUA,0BAAM,MAA+B,EAAA,CAAA;AACrD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,yBAAM,CAAA,QAAA;AAAA,IACpC,KAAA,CAAA;AAAA,GACF,CAAA;AAEA,EAAAA,yBAAA,CAAM,gBAAgB,MAAM;AAC1B,IAAY,WAAA,CAAA;AAAA,MACV,KAAA,EAAO,QAAQ,OAAS,EAAA,WAAA;AAAA,MACxB,MAAA,EAAQ,QAAQ,OAAS,EAAA,YAAA;AAAA,KAC1B,CAAA,CAAA;AAAA,GACH,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,uBACGA,yBAAA,CAAA,aAAA,CAAAC,gBAAA,EAAA;AAAA,IAAU,QAAA;AAAA,GAAA,EACR,0BACAD,yBAAA,CAAA,aAAA,CAAAE,kBAAA,EAAA;AAAA,IACC,QAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA,EAAK,CAAQ,GAAA,KAAA,OAAA,CAAQ,OAAU,GAAA,GAAA;AAAA,GAAA,kBAE9BF,yBAAA,CAAA,aAAA,CAAAG,cAAA,EAAA;AAAA,IACC,UAAW,EAAA,MAAA;AAAA,IACX,UAAW,EAAA,MAAA;AAAA,IACX,YAAa,EAAA,WAAA;AAAA,IACb,SAAU,EAAA,QAAA;AAAA,GAET,EAAA,KACH,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../../../src/components/atoms/Tooltip/Tooltip.tsx"],"sourcesContent":["import React from 'react';\nimport { Text } from '@tecsinapse/react-core';\nimport { Container, TooltipSpan } from './styled';\n\nexport type ComputedType = { width?: number; height?: number };\nexport type Position = 'top' | 'bottom' | 'right' | 'left';\nexport type MaxWidth = number;\n\nexport interface ITooltip {\n title: string;\n position?: Position;\n children?: React.ReactNode;\n maxWidht?: MaxWidth;\n}\n\nconst Tooltip: React.FC<ITooltip> = ({\n children,\n title,\n maxWidht,\n position = 'bottom',\n}) => {\n const spanRef = React.useRef<HTMLSpanElement | null>();\n const [computed, setComputed] = React.useState<ComputedType | undefined>(\n undefined\n );\n\n React.useLayoutEffect(() => {\n setComputed({\n width: spanRef.current?.clientWidth,\n height: spanRef.current?.clientHeight,\n });\n }, []);\n\n return (\n <Container position={position}>\n {children}\n <TooltipSpan\n maxWidth={maxWidht}\n computed={computed}\n position={position}\n ref={ref => (spanRef.current = ref)}\n >\n <Text\n fontWeight=\"bold\"\n typography=\"base\"\n colorVariant=\"secondary\"\n colorTone=\"xlight\"\n >\n {title}\n </Text>\n </TooltipSpan>\n </Container>\n );\n};\n\nexport default Tooltip;\n"],"names":["React","Container","TooltipSpan","Text"],"mappings":";;;;;;;;;;AAeA,MAAM,UAA8B,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAW,GAAA,QAAA;AACb,CAAM,KAAA;AACJ,EAAM,MAAA,OAAA,GAAUA,0BAAM,MAA+B,EAAA,CAAA;AACrD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,yBAAM,CAAA,QAAA;AAAA,IACpC,KAAA,CAAA;AAAA,GACF,CAAA;AAEA,EAAAA,yBAAA,CAAM,gBAAgB,MAAM;AAC1B,IAAY,WAAA,CAAA;AAAA,MACV,KAAA,EAAO,QAAQ,OAAS,EAAA,WAAA;AAAA,MACxB,MAAA,EAAQ,QAAQ,OAAS,EAAA,YAAA;AAAA,KAC1B,CAAA,CAAA;AAAA,GACH,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,uBACGA,yBAAA,CAAA,aAAA,CAAAC,gBAAA,EAAA;AAAA,IAAU,QAAA;AAAA,GAAA,EACR,0BACAD,yBAAA,CAAA,aAAA,CAAAE,kBAAA,EAAA;AAAA,IACC,QAAU,EAAA,QAAA;AAAA,IACV,QAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA,EAAK,CAAQ,GAAA,KAAA,OAAA,CAAQ,OAAU,GAAA,GAAA;AAAA,GAAA,kBAE9BF,yBAAA,CAAA,aAAA,CAAAG,cAAA,EAAA;AAAA,IACC,UAAW,EAAA,MAAA;AAAA,IACX,UAAW,EAAA,MAAA;AAAA,IACX,YAAa,EAAA,WAAA;AAAA,IACb,SAAU,EAAA,QAAA;AAAA,GAET,EAAA,KACH,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
@@ -66,11 +66,13 @@ const rightArrow = (theme, position) => position === "right" && react.css`
66
66
  transparent;
67
67
  `;
68
68
  const TooltipSpan = styled__default["default"]("span")(
69
- ({ theme, computed, position }) => {
69
+ ({ theme, computed, position, maxWidth }) => {
70
70
  const { width = 0, height = 0 } = computed || {};
71
71
  return react.css`
72
+ max-width: ${maxWidth ? `${maxWidth}px` : "auto"};
72
73
  position: absolute;
73
74
  width: max-content;
75
+ line-break: anywhere;
74
76
  padding: ${theme.spacing.micro} ${theme.spacing.centi};
75
77
  border-radius: ${theme.borderRadius.mili};
76
78
  opacity: 0;
@@ -106,6 +108,7 @@ const TooltipSpan = styled__default["default"]("span")(
106
108
  );
107
109
  const Container = styled__default["default"]("div")`
108
110
  position: relative;
111
+ width: auto;
109
112
  &:hover {
110
113
  & > span {
111
114
  opacity: 1;
@@ -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":["css","styled"],"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":["css","styled"],"mappings":"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"}
@@ -47,6 +47,10 @@ const DatePicker = ({
47
47
  }
48
48
  return void 0;
49
49
  }, [value]);
50
+ const checksFullRange = React.useCallback(() => {
51
+ if (type === "range" && !value?.highest)
52
+ onChange?.(void 0);
53
+ }, [value]);
50
54
  const controlComponent = (onPress, displayValue) => {
51
55
  return /* @__PURE__ */ React__default["default"].createElement(InputMask, {
52
56
  onBlur: () => {
@@ -126,9 +130,13 @@ const DatePicker = ({
126
130
  month: getMonth,
127
131
  requestShowCalendar: show,
128
132
  requestCloseCalendar: close,
129
- renderCalendar: (calendar) => /* @__PURE__ */ React__default["default"].createElement(index.Dropdown, {
133
+ renderCalendar: (calendar, handleBlur) => /* @__PURE__ */ React__default["default"].createElement(index.Dropdown, {
130
134
  visible,
131
- setVisible
135
+ setVisible,
136
+ onClickAway: () => {
137
+ handleBlur?.();
138
+ checksFullRange();
139
+ }
132
140
  }, calendar)
133
141
  });
134
142
  }
@@ -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":["useState","useCallback","useMemo","React","parse","isValid","Masks","Button","CalendarIcon","DatePickerCore","Calendar","Dropdown"],"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};\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 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, '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, handleBlur) =>\n <Dropdown visible={visible} setVisible={setVisible}\n onClickAway={() => {\n handleBlur?.()\n checksFullRange()\n }}\n >\n {calendar}\n </Dropdown>\n }\n />\n );\n }\n};\n"],"names":["useState","useCallback","useMemo","React","parse","isValid","Masks","Button","CalendarIcon","DatePickerCore","Calendar","Dropdown"],"mappings":"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"}
@@ -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;
@@ -8,10 +8,11 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
8
8
 
9
9
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
10
 
11
- const useClickAwayListener = (ref, setVisible, event = "mousedown") => {
11
+ const useClickAwayListener = (ref, setVisible, event = "mousedown", onClickAway) => {
12
12
  React__default["default"].useEffect(() => {
13
13
  const handleClickOutside = (event2) => {
14
14
  if (ref.current && !ref.current.contains(event2.target)) {
15
+ onClickAway?.();
15
16
  setVisible(false);
16
17
  }
17
18
  };
@@ -19,7 +20,7 @@ const useClickAwayListener = (ref, setVisible, event = "mousedown") => {
19
20
  return () => {
20
21
  document.removeEventListener(event, handleClickOutside);
21
22
  };
22
- }, [ref]);
23
+ }, [ref, onClickAway]);
23
24
  };
24
25
 
25
26
  exports.useClickAwayListener = 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":["React","event"],"mappings":";;;;;;;;;;AAEO,MAAM,oBAAuB,GAAA,CAClC,GACA,EAAA,UAAA,EACA,QAA6C,WACpC,KAAA;AACT,EAAAA,yBAAA,CAAM,UAAU,MAAM;AACpB,IAAM,MAAA,kBAAA,GAAqB,CAAAC,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":["React","event"],"mappings":";;;;;;;;;;AAEO,MAAM,uBAAuB,CAClC,GAAA,EACA,UACA,EAAA,KAAA,GAA6C,aAC7C,WACS,KAAA;AACT,EAAAA,yBAAA,CAAM,UAAU,MAAM;AACpB,IAAM,MAAA,kBAAA,GAAqB,CAAAC,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;;;;"}
@@ -2,6 +2,7 @@ import React, { Dispatch, SetStateAction } from 'react';
2
2
  export interface DropdownProps {
3
3
  visible: boolean;
4
4
  setVisible: Dispatch<SetStateAction<boolean>>;
5
+ onClickAway?: () => void;
5
6
  }
6
7
  export declare const Dropdown: React.FC<DropdownProps & {
7
8
  children: JSX.Element;
@@ -8,10 +8,11 @@ import { useClickAwayListener } from '../../../hooks/useClickAwayListener.js';
8
8
  const Component = ({
9
9
  visible,
10
10
  setVisible,
11
+ onClickAway,
11
12
  children
12
13
  }) => {
13
14
  const refDropDown = React.useRef(null);
14
- useClickAwayListener(refDropDown, setVisible);
15
+ useClickAwayListener(refDropDown, setVisible, "mousedown", onClickAway);
15
16
  return /* @__PURE__ */ React.createElement(Transition, {
16
17
  in: visible,
17
18
  timeout: 300
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/atoms/Dropdown/index.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction } from 'react';\nimport { StyledContainerDropdown } from './styled';\nimport { Transition } from 'react-transition-group';\nimport { defaultStyles, transition } from '../../molecules/Select/animations';\nimport { useClickAwayListener } from '../../../hooks';\n\nexport interface DropdownProps {\n visible: boolean;\n setVisible: Dispatch<SetStateAction<boolean>>;\n}\n\nconst Component: React.FC<DropdownProps & { children: JSX.Element }> = ({\n visible,\n setVisible,\n children,\n}): JSX.Element => {\n const refDropDown = React.useRef(null);\n useClickAwayListener(refDropDown, setVisible);\n\n return (\n <Transition in={visible} timeout={300}>\n {state => (\n <StyledContainerDropdown\n style={{ ...defaultStyles, ...transition['bottom'][state] }}\n ref={refDropDown}\n >\n {children}\n </StyledContainerDropdown>\n )}\n </Transition>\n );\n};\n\nexport const Dropdown = Component;\n"],"names":[],"mappings":";;;;;;;AAWA,MAAM,YAAiE,CAAC;AAAA,EACtE,OAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AACF,CAAmB,KAAA;AACjB,EAAM,MAAA,WAAA,GAAc,KAAM,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACrC,EAAA,oBAAA,CAAqB,aAAa,UAAU,CAAA,CAAA;AAE5C,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA;AAAA,IAAW,EAAI,EAAA,OAAA;AAAA,IAAS,OAAS,EAAA,GAAA;AAAA,GAAA,EAC/B,2BACE,KAAA,CAAA,aAAA,CAAA,uBAAA,EAAA;AAAA,IACC,OAAO,EAAE,GAAG,eAAe,GAAG,UAAA,CAAW,UAAU,KAAO,CAAA,EAAA;AAAA,IAC1D,GAAK,EAAA,WAAA;AAAA,GAAA,EAEJ,QACH,CAEJ,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,QAAW,GAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/atoms/Dropdown/index.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction } from 'react';\nimport { StyledContainerDropdown } from './styled';\nimport { Transition } from 'react-transition-group';\nimport { defaultStyles, transition } from '../../molecules/Select/animations';\nimport { useClickAwayListener } from '../../../hooks';\n\nexport interface DropdownProps {\n visible: boolean;\n setVisible: Dispatch<SetStateAction<boolean>>;\n onClickAway?: () => void;\n}\n\nconst Component: React.FC<DropdownProps & { children: JSX.Element }> = ({\n visible,\n setVisible,\n onClickAway,\n children,\n}): JSX.Element => {\n const refDropDown = React.useRef(null);\n useClickAwayListener(refDropDown, setVisible, 'mousedown', onClickAway);\n\n return (\n <Transition in={visible} timeout={300}>\n {state => (\n <StyledContainerDropdown\n style={{ ...defaultStyles, ...transition['bottom'][state] }}\n ref={refDropDown}\n >\n {children}\n </StyledContainerDropdown>\n )}\n </Transition>\n );\n};\n\nexport const Dropdown = Component;\n"],"names":[],"mappings":";;;;;;;AAYA,MAAM,YAAiE,CAAC;AAAA,EACtE,OAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AACF,CAAmB,KAAA;AACjB,EAAM,MAAA,WAAA,GAAc,KAAM,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACrC,EAAqB,oBAAA,CAAA,WAAA,EAAa,UAAY,EAAA,WAAA,EAAa,WAAW,CAAA,CAAA;AAEtE,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA;AAAA,IAAW,EAAI,EAAA,OAAA;AAAA,IAAS,OAAS,EAAA,GAAA;AAAA,GAAA,EAC/B,2BACE,KAAA,CAAA,aAAA,CAAA,uBAAA,EAAA;AAAA,IACC,OAAO,EAAE,GAAG,eAAe,GAAG,UAAA,CAAW,UAAU,KAAO,CAAA,EAAA;AAAA,IAC1D,GAAK,EAAA,WAAA;AAAA,GAAA,EAEJ,QACH,CAEJ,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,QAAW,GAAA;;;;"}
@@ -4,10 +4,12 @@ export declare type ComputedType = {
4
4
  height?: number;
5
5
  };
6
6
  export declare type Position = 'top' | 'bottom' | 'right' | 'left';
7
+ export declare type MaxWidth = number;
7
8
  export interface ITooltip {
8
9
  title: string;
9
10
  position?: Position;
10
11
  children?: React.ReactNode;
12
+ maxWidht?: MaxWidth;
11
13
  }
12
14
  declare const Tooltip: React.FC<ITooltip>;
13
15
  export default Tooltip;
@@ -5,6 +5,7 @@ import { Container, TooltipSpan } from './styled.js';
5
5
  const Tooltip = ({
6
6
  children,
7
7
  title,
8
+ maxWidht,
8
9
  position = "bottom"
9
10
  }) => {
10
11
  const spanRef = React.useRef();
@@ -20,6 +21,7 @@ const Tooltip = ({
20
21
  return /* @__PURE__ */ React.createElement(Container, {
21
22
  position
22
23
  }, children, /* @__PURE__ */ React.createElement(TooltipSpan, {
24
+ maxWidth: maxWidht,
23
25
  computed,
24
26
  position,
25
27
  ref: (ref) => spanRef.current = ref
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sources":["../../../../../src/components/atoms/Tooltip/Tooltip.tsx"],"sourcesContent":["import React from 'react';\nimport { Text } from '@tecsinapse/react-core';\nimport { Container, TooltipSpan } from './styled';\n\nexport type ComputedType = { width?: number; height?: number };\nexport type Position = 'top' | 'bottom' | 'right' | 'left';\n\nexport interface ITooltip {\n title: string;\n position?: Position;\n children?: React.ReactNode;\n}\n\nconst Tooltip: React.FC<ITooltip> = ({\n children,\n title,\n position = 'bottom',\n}) => {\n const spanRef = React.useRef<HTMLSpanElement | null>();\n const [computed, setComputed] = React.useState<ComputedType | undefined>(\n undefined\n );\n\n React.useLayoutEffect(() => {\n setComputed({\n width: spanRef.current?.clientWidth,\n height: spanRef.current?.clientHeight,\n });\n }, []);\n\n return (\n <Container position={position}>\n {children}\n <TooltipSpan\n computed={computed}\n position={position}\n ref={ref => (spanRef.current = ref)}\n >\n <Text\n fontWeight=\"bold\"\n typography=\"base\"\n colorVariant=\"secondary\"\n colorTone=\"xlight\"\n >\n {title}\n </Text>\n </TooltipSpan>\n </Container>\n );\n};\n\nexport default Tooltip;\n"],"names":[],"mappings":";;;;AAaA,MAAM,UAA8B,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAW,GAAA,QAAA;AACb,CAAM,KAAA;AACJ,EAAM,MAAA,OAAA,GAAU,MAAM,MAA+B,EAAA,CAAA;AACrD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,KAAM,CAAA,QAAA;AAAA,IACpC,KAAA,CAAA;AAAA,GACF,CAAA;AAEA,EAAA,KAAA,CAAM,gBAAgB,MAAM;AAC1B,IAAY,WAAA,CAAA;AAAA,MACV,KAAA,EAAO,QAAQ,OAAS,EAAA,WAAA;AAAA,MACxB,MAAA,EAAQ,QAAQ,OAAS,EAAA,YAAA;AAAA,KAC1B,CAAA,CAAA;AAAA,GACH,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA;AAAA,IAAU,QAAA;AAAA,GAAA,EACR,0BACA,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA;AAAA,IACC,QAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA,EAAK,CAAQ,GAAA,KAAA,OAAA,CAAQ,OAAU,GAAA,GAAA;AAAA,GAAA,kBAE9B,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA;AAAA,IACC,UAAW,EAAA,MAAA;AAAA,IACX,UAAW,EAAA,MAAA;AAAA,IACX,YAAa,EAAA,WAAA;AAAA,IACb,SAAU,EAAA,QAAA;AAAA,GAET,EAAA,KACH,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../../../src/components/atoms/Tooltip/Tooltip.tsx"],"sourcesContent":["import React from 'react';\nimport { Text } from '@tecsinapse/react-core';\nimport { Container, TooltipSpan } from './styled';\n\nexport type ComputedType = { width?: number; height?: number };\nexport type Position = 'top' | 'bottom' | 'right' | 'left';\nexport type MaxWidth = number;\n\nexport interface ITooltip {\n title: string;\n position?: Position;\n children?: React.ReactNode;\n maxWidht?: MaxWidth;\n}\n\nconst Tooltip: React.FC<ITooltip> = ({\n children,\n title,\n maxWidht,\n position = 'bottom',\n}) => {\n const spanRef = React.useRef<HTMLSpanElement | null>();\n const [computed, setComputed] = React.useState<ComputedType | undefined>(\n undefined\n );\n\n React.useLayoutEffect(() => {\n setComputed({\n width: spanRef.current?.clientWidth,\n height: spanRef.current?.clientHeight,\n });\n }, []);\n\n return (\n <Container position={position}>\n {children}\n <TooltipSpan\n maxWidth={maxWidht}\n computed={computed}\n position={position}\n ref={ref => (spanRef.current = ref)}\n >\n <Text\n fontWeight=\"bold\"\n typography=\"base\"\n colorVariant=\"secondary\"\n colorTone=\"xlight\"\n >\n {title}\n </Text>\n </TooltipSpan>\n </Container>\n );\n};\n\nexport default Tooltip;\n"],"names":[],"mappings":";;;;AAeA,MAAM,UAA8B,CAAC;AAAA,EACnC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAW,GAAA,QAAA;AACb,CAAM,KAAA;AACJ,EAAM,MAAA,OAAA,GAAU,MAAM,MAA+B,EAAA,CAAA;AACrD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,KAAM,CAAA,QAAA;AAAA,IACpC,KAAA,CAAA;AAAA,GACF,CAAA;AAEA,EAAA,KAAA,CAAM,gBAAgB,MAAM;AAC1B,IAAY,WAAA,CAAA;AAAA,MACV,KAAA,EAAO,QAAQ,OAAS,EAAA,WAAA;AAAA,MACxB,MAAA,EAAQ,QAAQ,OAAS,EAAA,YAAA;AAAA,KAC1B,CAAA,CAAA;AAAA,GACH,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA;AAAA,IAAU,QAAA;AAAA,GAAA,EACR,0BACA,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA;AAAA,IACC,QAAU,EAAA,QAAA;AAAA,IACV,QAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA,EAAK,CAAQ,GAAA,KAAA,OAAA,CAAQ,OAAU,GAAA,GAAA;AAAA,GAAA,kBAE9B,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA;AAAA,IACC,UAAW,EAAA,MAAA;AAAA,IACX,UAAW,EAAA,MAAA;AAAA,IACX,YAAa,EAAA,WAAA;AAAA,IACb,SAAU,EAAA,QAAA;AAAA,GAET,EAAA,KACH,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
@@ -58,11 +58,13 @@ const rightArrow = (theme, position) => position === "right" && css`
58
58
  transparent;
59
59
  `;
60
60
  const TooltipSpan = styled("span")(
61
- ({ theme, computed, position }) => {
61
+ ({ theme, computed, position, maxWidth }) => {
62
62
  const { width = 0, height = 0 } = computed || {};
63
63
  return css`
64
+ max-width: ${maxWidth ? `${maxWidth}px` : "auto"};
64
65
  position: absolute;
65
66
  width: max-content;
67
+ line-break: anywhere;
66
68
  padding: ${theme.spacing.micro} ${theme.spacing.centi};
67
69
  border-radius: ${theme.borderRadius.mili};
68
70
  opacity: 0;
@@ -98,6 +100,7 @@ const TooltipSpan = styled("span")(
98
100
  );
99
101
  const Container = styled("div")`
100
102
  position: relative;
103
+ width: auto;
101
104
  &:hover {
102
105
  & > span {
103
106
  opacity: 1;
@@ -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":";;;AAQA,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,KAAQ,GAAA,CAAA,CAAA;AAAA,EAAA,CAAA,CAAA;AAG5B,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,mBAAA,EAEmB,MAAM,OAAQ,CAAA,KAAA,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAInC,MAAM,QAAW,GAAA,CAAC,KAAkB,EAAA,QAAA,KAClC,aAAa,KACb,IAAA,GAAA,CAAA;AAAA;AAAA,kBAEkB,EAAA,KAAA,CAAM,MAAM,SAAU,CAAA,KAAA,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAK1C,MAAM,YAAe,GAAA,CAAC,KAAkB,EAAA,QAAA,KACtC,aAAa,QACb,IAAA,GAAA,CAAA;AAAA;AAAA,gBAAA,EAEgB,MAAM,OAAQ,CAAA,KAAA,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAIhC,MAAM,WAAc,GAAA,CAAC,KAAkB,EAAA,QAAA,KACrC,aAAa,QACb,IAAA,GAAA,CAAA;AAAA;AAAA,0CAE0C,EAAA,KAAA,CAAM,MAAM,SAAU,CAAA,KAAA,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAKlE,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,MAAS,GAAA,CAAA,CAAA;AAAA,EAAA,CAAA,CAAA;AAG5B,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,kBAAA,EAEkB,MAAM,OAAQ,CAAA,KAAA,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAIlC,MAAM,SAAY,GAAA,CAAC,KAAkB,EAAA,QAAA,KACnC,aAAa,MACb,IAAA,GAAA,CAAA;AAAA;AAAA;AAAA,MAGM,EAAA,KAAA,CAAM,MAAM,SAAU,CAAA,KAAA,CAAA;AAAA,EAAA,CAAA,CAAA;AAI9B,MAAM,WAAc,GAAA,CAAC,KAAkB,EAAA,QAAA,KACrC,aAAa,OACb,IAAA,GAAA,CAAA;AAAA;AAAA,iBAAA,EAEiB,MAAM,OAAQ,CAAA,KAAA,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAIjC,MAAM,UAAa,GAAA,CAAC,KAAkB,EAAA,QAAA,KACpC,aAAa,OACb,IAAA,GAAA,CAAA;AAAA;AAAA,8BAE8B,EAAA,KAAA,CAAM,MAAM,SAAU,CAAA,KAAA,CAAA;AAAA;AAAA,EAAA,CAAA,CAAA;AAIzC,MAAA,WAAA,GAAc,OAAO,MAAM,CAAA;AAAA,EACtC,CAAC,EAAE,KAAO,EAAA,QAAA,EAAU,UAAe,KAAA;AACjC,IAAA,MAAM,EAAE,KAAQ,GAAA,CAAA,EAAG,SAAS,CAAE,EAAA,GAAI,YAAY,EAAC,CAAA;AAC/C,IAAO,OAAA,GAAA,CAAA;AAAA;AAAA;AAAA,eAAA,EAGM,KAAM,CAAA,OAAA,CAAQ,KAAS,CAAA,CAAA,EAAA,KAAA,CAAM,OAAQ,CAAA,KAAA,CAAA;AAAA,qBAAA,EAC/B,MAAM,YAAa,CAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA,wBAIhB,EAAA,KAAA,CAAM,MAAM,SAAU,CAAA,KAAA,CAAA;AAAA,eAAA,EAC/B,MAAM,MAAO,CAAA,QAAA,CAAA;AAAA;AAAA,MAEtB,EAAA,uBAAA,CAAwB,OAAO,QAAQ,CAAA,CAAA;AAAA,MACvC,EAAA,YAAA,CAAa,OAAO,QAAQ,CAAA,CAAA;AAAA,MAC5B,EAAA,SAAA,CAAU,OAAO,QAAQ,CAAA,CAAA;AAAA;AAAA,MAEzB,EAAA,wBAAA,CAAyB,QAAQ,QAAQ,CAAA,CAAA;AAAA,MACzC,EAAA,UAAA,CAAW,OAAO,QAAQ,CAAA,CAAA;AAAA,MAC1B,EAAA,WAAA,CAAY,OAAO,QAAQ,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAA,EAQzB,uBAAuB,QAAQ,CAAA,CAAA;AAAA,QAC/B,EAAA,WAAA,CAAY,OAAO,QAAQ,CAAA,CAAA;AAAA,QAC3B,EAAA,QAAA,CAAS,OAAO,QAAQ,CAAA,CAAA;AAAA;AAAA,QAAA,EAExB,uBAAuB,QAAQ,CAAA,CAAA;AAAA,QAC/B,EAAA,SAAA,CAAU,OAAO,QAAQ,CAAA,CAAA;AAAA,QACzB,EAAA,UAAA,CAAW,OAAO,QAAQ,CAAA,CAAA;AAAA;AAAA,IAAA,CAAA,CAAA;AAAA,GAGlC;AACF,EAAA;AAEa,MAAA,SAAA,GAAY,OAAO,KAAK,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAOlB,EAAA,CAAC,EAAE,QAAS,EAAA,KACvB,aAAa,MAAU,IAAA,QAAA,KAAa,UAChC,gBACA,GAAA,gBAAA,CAAA;AAAA;AAAA;AAAA;;;;"}
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":"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"}
@@ -39,6 +39,10 @@ const DatePicker = ({
39
39
  }
40
40
  return void 0;
41
41
  }, [value]);
42
+ const checksFullRange = useCallback(() => {
43
+ if (type === "range" && !value?.highest)
44
+ onChange?.(void 0);
45
+ }, [value]);
42
46
  const controlComponent = (onPress, displayValue) => {
43
47
  return /* @__PURE__ */ React.createElement(InputMask, {
44
48
  onBlur: () => {
@@ -118,9 +122,13 @@ const DatePicker = ({
118
122
  month: getMonth,
119
123
  requestShowCalendar: show,
120
124
  requestCloseCalendar: close,
121
- renderCalendar: (calendar) => /* @__PURE__ */ React.createElement(Dropdown, {
125
+ renderCalendar: (calendar, handleBlur) => /* @__PURE__ */ React.createElement(Dropdown, {
122
126
  visible,
123
- setVisible
127
+ setVisible,
128
+ onClickAway: () => {
129
+ handleBlur?.();
130
+ checksFullRange();
131
+ }
124
132
  }, calendar)
125
133
  });
126
134
  }
@@ -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};\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 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, '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, handleBlur) =>\n <Dropdown visible={visible} 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,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": "1.23.9",
4
+ "version": "1.23.11",
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": "1.22.8",
26
+ "@tecsinapse/react-core": "1.22.9",
27
27
  "@types/react-native": "^0.64.4",
28
28
  "date-fns": "~2.29.1",
29
29
  "react-native-vector-icons": "~9.2.0",
@@ -43,5 +43,5 @@
43
43
  "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
44
44
  "react-native-web": "^0.17.1 || ^0.18.0"
45
45
  },
46
- "gitHead": "a08c6d59df46114986d1bce5916e56f48321ad3e"
46
+ "gitHead": "d157332babc1ce4727f3cf2a68da2461aad511a9"
47
47
  }