react-asc 25.2.12 → 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.
@@ -1,7 +1,5 @@
1
- import type { ReactElement } from 'react';
2
- export interface ITableProps {
3
- children?: ReactElement | ReactElement[];
4
- className?: string;
1
+ import React from 'react';
2
+ export interface ITableProps extends React.ComponentProps<'table'> {
5
3
  striped?: boolean;
6
4
  bordered?: boolean;
7
5
  hover?: boolean;
@@ -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
 
@@ -2602,7 +2624,7 @@ var styles$5 = {"tableResponsive":"Table-module_tableResponsive__ykttB","table":
2602
2624
  styleInject(css_248z$5);
2603
2625
 
2604
2626
  const Table = (props) => {
2605
- const { children, className, bordered, striped, hover, responsive = false } = props;
2627
+ const { children, className, bordered, striped, hover, responsive = false, ...rest } = props;
2606
2628
  const getCssClasses = () => {
2607
2629
  const cssClasses = [];
2608
2630
  cssClasses.push(styles$5.table);
@@ -2613,7 +2635,7 @@ const Table = (props) => {
2613
2635
  return cssClasses.filter(css => css).join(' ');
2614
2636
  };
2615
2637
  return (React.createElement(ConditionalWrapper, { condition: responsive, wrapper: (children) => React.createElement("div", { className: styles$5.tableResponsive }, children) },
2616
- React.createElement("table", { className: getCssClasses() }, children)));
2638
+ React.createElement("table", { className: getCssClasses(), ...rest }, children)));
2617
2639
  };
2618
2640
 
2619
2641
  const TableRow = (props) => {
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
 
@@ -2611,7 +2633,7 @@ var styles$5 = {"tableResponsive":"Table-module_tableResponsive__ykttB","table":
2611
2633
  styleInject(css_248z$5);
2612
2634
 
2613
2635
  const Table = (props) => {
2614
- const { children, className, bordered, striped, hover, responsive = false } = props;
2636
+ const { children, className, bordered, striped, hover, responsive = false, ...rest } = props;
2615
2637
  const getCssClasses = () => {
2616
2638
  const cssClasses = [];
2617
2639
  cssClasses.push(styles$5.table);
@@ -2622,7 +2644,7 @@ const Table = (props) => {
2622
2644
  return cssClasses.filter(css => css).join(' ');
2623
2645
  };
2624
2646
  return (React__default["default"].createElement(ConditionalWrapper, { condition: responsive, wrapper: (children) => React__default["default"].createElement("div", { className: styles$5.tableResponsive }, children) },
2625
- React__default["default"].createElement("table", { className: getCssClasses() }, children)));
2647
+ React__default["default"].createElement("table", { className: getCssClasses(), ...rest }, children)));
2626
2648
  };
2627
2649
 
2628
2650
  const TableRow = (props) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-asc",
3
- "version": "25.2.12",
3
+ "version": "25.3.0",
4
4
  "description": "handcrafted react components",
5
5
  "main": "index.js",
6
6
  "module": "index.es.js",