const WIDTH_OF_BREADCRUMB_DROPDOWN = 32;
interface Props {
+ actions?: React.ReactNode;
ariaLabel?: string;
breadcrumbLimit?: number;
children: React.ReactNode;
children,
expandButtonLabel,
innerRef,
+ actions,
maxWidth = LAYOUT_VIEWPORT_MAX_WIDTH_LARGE,
} = props;
const [lengthOfChildren, setLengthOfChildren] = React.useState<number[]>([]);
</Dropdown>
)}
<ul className="sw-truncate sw-leading-6 sw-flex">{[...breadcrumbsToShow].reverse()}</ul>
+ {actions && <div className="sw-ml-2">{actions}</div>}
</BreadcrumbWrapper>
);
}
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-import { Breadcrumbs, HoverLink } from 'design-system';
+import classNames from 'classnames';
+import { Breadcrumbs, ClipboardIconButton, HoverLink } from 'design-system';
import * as React from 'react';
import { getBreadcrumbs } from '../../../api/components';
import { getBranchLikeQuery, isSameBranchLike } from '../../../helpers/branch-like';
import { translate } from '../../../helpers/l10n';
import { collapsePath, limitComponentName } from '../../../helpers/path';
import { BranchLike } from '../../../types/branch-like';
-import { ComponentQualifier } from '../../../types/component';
+import { ComponentQualifier, isProject } from '../../../types/component';
import { ComponentMeasure, ComponentMeasureIntern } from '../../../types/types';
interface Props {
render() {
const { breadcrumbs } = this.state;
+ const lastBreadcrumb = breadcrumbs[breadcrumbs.length - 1];
if (breadcrumbs.length <= 0) {
return null;
return (
<Breadcrumbs
ariaLabel={translate('breadcrumbs')}
- className={this.props.className}
+ className={classNames(this.props.className)}
maxWidth={500}
+ actions={
+ !isProject(lastBreadcrumb.qualifier) &&
+ lastBreadcrumb.path && <ClipboardIconButton copyValue={lastBreadcrumb.path} />
+ }
>
{breadcrumbs.map((component) => (
<HoverLink
import './styles.css';
export interface Props {
+ hideHeader?: boolean;
aroundLine?: number;
branchLike: BranchLike | undefined;
component: string;
render() {
const { component, loading, sources, notAccessible, sourceRemoved } = this.state;
+ const { hideHeader } = this.props;
if (loading) {
return null;
return (
<SourceViewerContext.Provider value={{ branchLike: this.props.branchLike, file: component }}>
<div className="source-viewer">
- {this.renderHeader(component)}
+ {!hideHeader && this.renderHeader(component)}
{sourceRemoved && (
<Alert className="spacer-top" variant="warning">
{translate('code_viewer.no_source_code_displayed_due_to_source_removed')}