Files
flipper/src/ui/components/PathBreadcrumbs.js
Daniel Büchele fbbf8cf16b Initial commit 🎉
fbshipit-source-id: b6fc29740c6875d2e78953b8a7123890a67930f2
Co-authored-by: Sebastian McKenzie <sebmck@fb.com>
Co-authored-by: John Knox <jknox@fb.com>
Co-authored-by: Emil Sjölander <emilsj@fb.com>
Co-authored-by: Pritesh Nandgaonkar <prit91@fb.com>
2018-06-01 11:03:58 +01:00

54 lines
1.3 KiB
JavaScript

/**
* Copyright 2018-present Facebook.
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
* @format
*/
import ButtonGroup from './ButtonGroup.js';
import {Component} from 'react';
import Button from './Button.js';
const path = require('path');
class PathBreadcrumbsItem extends Component<{
name: string,
path: string,
isFolder: boolean,
onClick: (path: string) => void,
}> {
onClick = () => {
this.props.onClick(this.props.path);
};
render() {
return <Button onClick={this.onClick}>{this.props.name}</Button>;
}
}
export default function PathBreadcrumbs(props: {|
path: string,
isFile?: boolean,
onClick: (path: string) => void,
|}) {
const parts = props.path === path.sep ? [''] : props.path.split(path.sep);
const {onClick} = props;
return (
<ButtonGroup>
{parts.map((part, i) => {
const fullPath = parts.slice(0, i + 1).join(path.sep) || path.sep;
return (
<PathBreadcrumbsItem
key={`${i}:${part}`}
name={part || fullPath}
path={fullPath}
isFolder={!(props.isFile === true && i === parts.length - 1)}
onClick={onClick}
/>
);
})}
</ButtonGroup>
);
}