react-asc 25.2.13 → 25.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,5 +2,8 @@ import React from 'react';
2
2
  export interface ITooltipProps extends React.ComponentProps<'div'> {
3
3
  placement?: 'top' | 'bottom' | 'right' | 'left';
4
4
  text?: string;
5
+ delay?: number;
6
+ isOpen?: boolean;
7
+ isShowClose?: boolean;
5
8
  }
6
9
  export declare const Tooltip: (props: ITooltipProps) => JSX.Element;
package/index.es.js CHANGED
@@ -2019,13 +2019,25 @@ var styles$l = {"tooltipContainer":"Tooltip-module_tooltipContainer__9ZWx3","too
2019
2019
  styleInject(css_248z$l);
2020
2020
 
2021
2021
  const Tooltip = (props) => {
2022
- const { children, text, placement = 'bottom' } = props;
2023
- const [show, setShow] = useState(false);
2022
+ const { children, text, placement = 'bottom', isOpen = false, isShowClose = false, delay = 0 } = props;
2023
+ const [debounce, setDebounce] = useState(delay);
2024
+ const [open, setOpen] = useState(isOpen);
2025
+ const [show, setShow] = useState(isOpen);
2026
+ const [showClose, setShowClose] = useState(isShowClose);
2024
2027
  const refChild = useRef();
2025
2028
  const refTooltip = useRef();
2029
+ useDebounce(() => { setOpen(show); }, debounce, [show]);
2026
2030
  useEffect(() => {
2027
- if (show === true && refChild && refChild.current && refTooltip && refTooltip.current) {
2028
- // TODO - extract to own component?
2031
+ setShow(isOpen);
2032
+ }, [isOpen]);
2033
+ useEffect(() => {
2034
+ setShowClose(isShowClose);
2035
+ }, [isShowClose]);
2036
+ useEffect(() => {
2037
+ setDebounce(delay);
2038
+ }, [delay]);
2039
+ useEffect(() => {
2040
+ if (open === true && refChild && refChild.current && refTooltip && refTooltip.current) {
2029
2041
  createPopper(refChild.current, refTooltip.current, {
2030
2042
  placement: placement,
2031
2043
  modifiers: [
@@ -2036,21 +2048,31 @@ const Tooltip = (props) => {
2036
2048
  ]
2037
2049
  });
2038
2050
  }
2039
- }, [show]);
2051
+ }, [open]);
2040
2052
  const handleMouseOver = () => {
2041
2053
  setShow(true);
2042
2054
  };
2043
2055
  const handleMouseLeave = () => {
2044
2056
  setShow(false);
2045
2057
  };
2058
+ const handleFocus = () => {
2059
+ setShow(true);
2060
+ };
2061
+ const handleBlur = () => {
2062
+ setShow(false);
2063
+ };
2064
+ const handleClickClose = () => {
2065
+ setShow(false);
2066
+ };
2046
2067
  return (React.createElement(React.Fragment, null,
2047
- React.createElement("div", { className: styles$l.tooltipContainer, ref: refChild, id: "tooltip-container" }, cloneElement(children, {
2048
- onMouseOver: handleMouseOver,
2049
- onMouseLeave: handleMouseLeave,
2050
- })),
2051
- show && text &&
2068
+ React.createElement("div", { ref: refChild, className: styles$l.tooltipContainer, onMouseOver: handleMouseOver, onMouseLeave: handleMouseLeave, onFocus: handleFocus, onBlur: handleBlur }, children),
2069
+ open && text &&
2052
2070
  React.createElement("div", { className: styles$l.tooltip, ref: refTooltip, id: "tooltip" },
2053
- text,
2071
+ React.createElement("div", { className: 'd-flex align-items-center' },
2072
+ text,
2073
+ showClose &&
2074
+ React.createElement(Icon, { className: 'ml-1', onClick: handleClickClose },
2075
+ React.createElement(TimesSolidIcon, null))),
2054
2076
  React.createElement("div", { id: "arrow", "data-popper-arrow": true }))));
2055
2077
  };
2056
2078
 
package/index.js CHANGED
@@ -2028,13 +2028,25 @@ var styles$l = {"tooltipContainer":"Tooltip-module_tooltipContainer__9ZWx3","too
2028
2028
  styleInject(css_248z$l);
2029
2029
 
2030
2030
  const Tooltip = (props) => {
2031
- const { children, text, placement = 'bottom' } = props;
2032
- const [show, setShow] = React.useState(false);
2031
+ const { children, text, placement = 'bottom', isOpen = false, isShowClose = false, delay = 0 } = props;
2032
+ const [debounce, setDebounce] = React.useState(delay);
2033
+ const [open, setOpen] = React.useState(isOpen);
2034
+ const [show, setShow] = React.useState(isOpen);
2035
+ const [showClose, setShowClose] = React.useState(isShowClose);
2033
2036
  const refChild = React.useRef();
2034
2037
  const refTooltip = React.useRef();
2038
+ useDebounce(() => { setOpen(show); }, debounce, [show]);
2035
2039
  React.useEffect(() => {
2036
- if (show === true && refChild && refChild.current && refTooltip && refTooltip.current) {
2037
- // TODO - extract to own component?
2040
+ setShow(isOpen);
2041
+ }, [isOpen]);
2042
+ React.useEffect(() => {
2043
+ setShowClose(isShowClose);
2044
+ }, [isShowClose]);
2045
+ React.useEffect(() => {
2046
+ setDebounce(delay);
2047
+ }, [delay]);
2048
+ React.useEffect(() => {
2049
+ if (open === true && refChild && refChild.current && refTooltip && refTooltip.current) {
2038
2050
  core.createPopper(refChild.current, refTooltip.current, {
2039
2051
  placement: placement,
2040
2052
  modifiers: [
@@ -2045,21 +2057,31 @@ const Tooltip = (props) => {
2045
2057
  ]
2046
2058
  });
2047
2059
  }
2048
- }, [show]);
2060
+ }, [open]);
2049
2061
  const handleMouseOver = () => {
2050
2062
  setShow(true);
2051
2063
  };
2052
2064
  const handleMouseLeave = () => {
2053
2065
  setShow(false);
2054
2066
  };
2067
+ const handleFocus = () => {
2068
+ setShow(true);
2069
+ };
2070
+ const handleBlur = () => {
2071
+ setShow(false);
2072
+ };
2073
+ const handleClickClose = () => {
2074
+ setShow(false);
2075
+ };
2055
2076
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
2056
- React__default["default"].createElement("div", { className: styles$l.tooltipContainer, ref: refChild, id: "tooltip-container" }, React.cloneElement(children, {
2057
- onMouseOver: handleMouseOver,
2058
- onMouseLeave: handleMouseLeave,
2059
- })),
2060
- show && text &&
2077
+ React__default["default"].createElement("div", { ref: refChild, className: styles$l.tooltipContainer, onMouseOver: handleMouseOver, onMouseLeave: handleMouseLeave, onFocus: handleFocus, onBlur: handleBlur }, children),
2078
+ open && text &&
2061
2079
  React__default["default"].createElement("div", { className: styles$l.tooltip, ref: refTooltip, id: "tooltip" },
2062
- text,
2080
+ React__default["default"].createElement("div", { className: 'd-flex align-items-center' },
2081
+ text,
2082
+ showClose &&
2083
+ React__default["default"].createElement(Icon, { className: 'ml-1', onClick: handleClickClose },
2084
+ React__default["default"].createElement(TimesSolidIcon, null))),
2063
2085
  React__default["default"].createElement("div", { id: "arrow", "data-popper-arrow": true }))));
2064
2086
  };
2065
2087
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-asc",
3
- "version": "25.2.13",
3
+ "version": "25.3.0",
4
4
  "description": "handcrafted react components",
5
5
  "main": "index.js",
6
6
  "module": "index.es.js",