function getTreeActionFromKey()

in src/draft-components/tree-actions/tree-actions.tsx [11:53]


function getTreeActionFromKey(event: KeyboardEvent, item: TreeItem, expanded: boolean, level: number): TreeActions {
  const { key } = event;

  switch(key) {
    case Keys.Down:
      event.preventDefault();
      event.stopPropagation();
      return TreeActions.Next;
    case Keys.Up:
      event.preventDefault();
      event.stopPropagation();
      return TreeActions.Previous;
    case Keys.Right:
      event.preventDefault();
      event.stopPropagation();
      if (item.children) {
        return expanded ? TreeActions.Next : TreeActions.Open;
      }
      break;
    case Keys.Left:
      event.preventDefault();
      event.stopPropagation();
      if (expanded) {
        return TreeActions.Close;
      }
      else if (level > 1) {
        return TreeActions.UpLevel;
      }
      break;
    case Keys.Home:
      event.preventDefault();
      event.stopPropagation();
      return TreeActions.First;
    case Keys.End:
      event.preventDefault();
      event.stopPropagation();
      return TreeActions.Last;
    case Keys.Enter:
    case Keys.Space:
      event.stopPropagation();
      return TreeActions.Select;
  }
}