Sha256: 285f515a31b77c31206217292c01f8dd62919b2e1d3208753ea9cc1a889730e9

Contents?: true

Size: 911 Bytes

Versions: 1

Compression:

Stored size: 911 Bytes

Contents

import * as Tree from "./tree";
import { visibleChildNodes } from "./usePageTree";
import usePageTreeContext from "./usePageTreeContext";

type Props = {
  id: Tree.Id;
};

export default function CollapseArrow({ id }: Props) {
  const { state, dispatch } = usePageTreeContext();
  const node = state.nodes[id];
  const classNames = ["collapse fa-solid fa-caret-right"];

  classNames.push(node.collapsed ? "collapsed" : "open");

  const handleClick = (evt: React.MouseEvent) => {
    evt.stopPropagation();
    dispatch({ type: "setCollapsed", id: id, payload: !node.collapsed });
  };

  const preventDrag = (evt: React.MouseEvent | React.TouchEvent) => {
    evt.stopPropagation();
  };

  if (!("root" in node) && visibleChildNodes(state, id).length > 0) {
    return (
      <i
        className={classNames.join(" ")}
        onMouseDown={preventDrag}
        onClick={handleClick}
      />
    );
  }
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pages_core-3.15.5 app/javascript/components/PageTree/CollapseArrow.tsx