0.6.5 • Published 4 years ago

@tce/rush v0.6.5

Weekly downloads
5
License
Apache-2.0
Repository
-
Last release
4 years ago

⚡️rush

Primitives to create responsive popovers in web apps.

React example

import * as React from 'react';
import { FC, useLayoutEffect } from 'react';
import { Constraint, solveFor } from 'rush';

export const ToolTip: FC<{
  constraints: Constraint[],
  for:
}> = props => {
  let [style, setStyle] = useState({});
  let [rect, setRect] = useState<DOMRect | null>(null);
  let ref = useRef();

  useEffect(() => {
    let change = () => {
      let selection = document.getSelection();
      if (selection) {
        setRect(selection.getRangeAt(0).getBoundingClientRect());
      }
    };
    document.addEventListener('selectionchange', change);

    return () => {
      document.removeEventListener('selectionchange', change);
    };
  }, []);

  useLayoutEffect(function () {
    let position = solveFor(
      props.constraints,
      ref.current,
      anchor: selection
    });
  }, [constraints]);

  return (
    <div ref={ref} style={position}>{children}</div>
  );
}
0.6.5

4 years ago

0.6.4

5 years ago

0.6.3

5 years ago

0.6.2

5 years ago