fix(code/frontend): should not attach href to the last breadcrumb (#41332) (#41433)

This commit is contained in:
WangQianliang 2019-07-18 21:56:08 +08:00 committed by GitHub
parent cec670aa05
commit 90d3596641
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 121 additions and 3 deletions

View file

@ -0,0 +1,10 @@
{
"routeParams": {
"org": "elastic",
"path": "src/public/css/lib/bootstrap/mixins/_alerts.scss",
"pathType": "blob",
"repo": "TypeScript-Node-Starter",
"resource": "github.com",
"revision": "master"
}
}

View file

@ -0,0 +1,89 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`render correctly 1`] = `
<nav
aria-label="breadcrumb"
className="euiBreadcrumbs euiBreadcrumbs--truncate euiBreadcrumbs--responsive"
>
<a
className="euiLink euiLink--subdued euiBreadcrumb codeNoMinWidth"
data-test-subj="codeFileBreadcrumb-src"
href="#github.com/elastic/TypeScript-Node-Starter/tree/master/src"
rel="noreferrer"
title="src"
>
src
</a>
<div
className="euiBreadcrumbSeparator"
/>
<a
className="euiLink euiLink--subdued euiBreadcrumb codeNoMinWidth"
data-test-subj="codeFileBreadcrumb-public"
href="#github.com/elastic/TypeScript-Node-Starter/tree/master/src/public"
rel="noreferrer"
title="public"
>
public
</a>
<div
className="euiBreadcrumbSeparator"
/>
<a
className="euiLink euiLink--subdued euiBreadcrumb codeNoMinWidth"
data-test-subj="codeFileBreadcrumb-css"
href="#github.com/elastic/TypeScript-Node-Starter/tree/master/src/public/css"
rel="noreferrer"
title="css"
>
css
</a>
<div
className="euiBreadcrumbSeparator"
/>
<a
className="euiLink euiLink--subdued euiBreadcrumb codeNoMinWidth"
data-test-subj="codeFileBreadcrumb-lib"
href="#github.com/elastic/TypeScript-Node-Starter/tree/master/src/public/css/lib"
rel="noreferrer"
title="lib"
>
lib
</a>
<div
className="euiBreadcrumbSeparator"
/>
<a
className="euiLink euiLink--subdued euiBreadcrumb codeNoMinWidth"
data-test-subj="codeFileBreadcrumb-bootstrap"
href="#github.com/elastic/TypeScript-Node-Starter/tree/master/src/public/css/lib/bootstrap"
rel="noreferrer"
title="bootstrap"
>
bootstrap
</a>
<div
className="euiBreadcrumbSeparator"
/>
<a
className="euiLink euiLink--subdued euiBreadcrumb codeNoMinWidth"
data-test-subj="codeFileBreadcrumb-mixins"
href="#github.com/elastic/TypeScript-Node-Starter/tree/master/src/public/css/lib/bootstrap/mixins"
rel="noreferrer"
title="mixins"
>
mixins
</a>
<div
className="euiBreadcrumbSeparator"
/>
<span
aria-current="page"
className="euiBreadcrumb codeNoMinWidth euiBreadcrumb--last"
data-test-subj="codeFileBreadcrumb-_alerts.scss"
title="_alerts.scss"
>
_alerts.scss
</span>
</nav>
`;

View file

@ -0,0 +1,15 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import React from 'react';
import renderer from 'react-test-renderer';
import { Breadcrumb } from './breadcrumb';
import props from './__fixtures__/breadcrumb_props.json';
test('render correctly', () => {
const tree = renderer.create(<Breadcrumb routeParams={props.routeParams} />).toJSON();
expect(tree).toMatchSnapshot();
});

View file

@ -26,15 +26,19 @@ export class Breadcrumb extends React.PureComponent<Props> {
}> = [];
const pathSegments = path ? path.split('/') : [];
pathSegments.forEach((p, index) => {
pathSegments.forEach((p, index, array) => {
const paths = pathSegments.slice(0, index + 1);
const href = `#${repoUri}/tree/${encodeRevisionString(revision)}/${paths.join('/')}`;
breadcrumbs.push({
const breadcrumb = {
text: p,
href,
className: 'codeNoMinWidth',
['data-test-subj']: `codeFileBreadcrumb-${p}`,
});
};
if (index === array.length - 1) {
delete breadcrumb.href;
}
breadcrumbs.push(breadcrumb);
});
return <EuiBreadcrumbs max={Number.MAX_VALUE} breadcrumbs={breadcrumbs} />;
}