1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-08-02 12:25:22 +02:00

refactor(app): move react components to react codebase [EE-3179] (#6971)

This commit is contained in:
Chaim Lev-Ari 2022-06-17 19:18:42 +03:00 committed by GitHub
parent 212400c283
commit 18252ab854
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
346 changed files with 642 additions and 644 deletions

View file

@ -0,0 +1,3 @@
.breadcrumb-links {
font-size: 10px;
}

View file

@ -0,0 +1,31 @@
import { Meta } from '@storybook/react';
import { UIRouter, pushStateLocationPlugin } from '@uirouter/react';
import { Breadcrumbs } from './Breadcrumbs';
const meta: Meta = {
title: 'Components/PageHeader/Breadcrumbs',
component: Breadcrumbs,
};
export default meta;
export { Example };
function Example() {
return (
<UIRouter plugins={[pushStateLocationPlugin]}>
<Breadcrumbs
breadcrumbs={[
{ link: 'portainer.endpoints', label: 'Environments' },
{
label: 'endpointName',
link: 'portainer.endpoints.endpoint',
linkParams: { id: 5 },
},
{ label: 'String item' },
]}
/>
</UIRouter>
);
}

View file

@ -0,0 +1,15 @@
import { render } from '@/react-tools/test-utils';
import { Breadcrumbs } from './Breadcrumbs';
test('should display a Breadcrumbs, breadcrumbs should be separated by >', async () => {
const breadcrumbs = [
{ label: 'bread1' },
{ label: 'bread2' },
{ label: 'bread3' },
];
const { queryByText } = render(<Breadcrumbs breadcrumbs={breadcrumbs} />);
const heading = queryByText(breadcrumbs.map((b) => b.label).join(' > '));
expect(heading).toBeVisible();
});

View file

@ -0,0 +1,39 @@
import { Fragment } from 'react';
import { Link } from '@@/Link';
import './Breadcrumbs.css';
export interface Crumb {
label: string;
link?: string;
linkParams?: Record<string, unknown>;
}
interface Props {
breadcrumbs: Crumb[];
}
export function Breadcrumbs({ breadcrumbs }: Props) {
return (
<div className="breadcrumb-links">
{breadcrumbs.map((crumb, index) => (
<Fragment key={index}>
{renderCrumb(crumb)}
{index !== breadcrumbs.length - 1 ? ' > ' : ''}
</Fragment>
))}
</div>
);
}
function renderCrumb(crumb: Crumb) {
if (crumb.link) {
return (
<Link to={crumb.link} params={crumb.linkParams}>
{crumb.label}
</Link>
);
}
return crumb.label;
}

View file

@ -0,0 +1 @@
export { Breadcrumbs } from './Breadcrumbs';