Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DetailsPage cleanup #42

Merged
merged 6 commits into from
Nov 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
/* eslint-disable no-console */
import React from 'react';
import { ActionMenu } from '@patternfly/react-component-groups';

export const BasicExample: React.FC = () => (
export const BasicExample: React.FunctionComponent = () => (
<ActionMenu
actions={[
{
children: 'Edit resource',
itemID: 'action-menu-example-1',
cta: {
// eslint-disable-next-line no-console
callback: () => console.log('Edit resource clicked'),
},
itemId: 'action-menu-example-1',
onClick: () => console.log('Edit resource clicked'),
},
{
children: 'Delete resource',
itemID: 'action-menu-example-2',
cta: {
// eslint-disable-next-line no-console
callback: () => console.log('Delete resource clicked'),
},
itemId: 'action-menu-example-2',
onClick: () => console.log('Delete resource clicked'),
isDisabled: true,
},
]}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* eslint-disable no-console */
import React from 'react';
import { ActionMenu } from '@patternfly/react-component-groups';

Expand All @@ -6,50 +7,38 @@ export const BasicExample: React.FunctionComponent = () => (
groupedActions={[
{
groupId: 'group1',
groupActions: [
actions: [
{
children: 'Edit resource',
itemID: 'action-menu-grouped-group-1-example-1',
cta: {
// eslint-disable-next-line no-console
callback: () => console.log('Edit resource clicked'),
},
itemId: 'action-menu-grouped-group-1-example-1',
onClick: () => console.log('Edit resource clicked')
},
{
children: 'Delete resource',
itemID: 'action-menu-grouped-group-1-example-2',
cta: {
// eslint-disable-next-line no-console
callback: () => console.log('Delete resource clicked'),
},
itemId: 'action-menu-grouped-group-1-example-2',
onClick: () => console.log('Delete resource clicked'),
isDisabled: true,
},
],
},
{
groupId: 'group2',
label: 'Links',
groupActions: [
actions: [
{
children: 'GitHub',
itemID: 'action-menu-grouped-group-2-example-1',
cta: {
href: 'https://github.com/',
external: true,
},
itemId: 'action-menu-grouped-group-2-example-1',
onClick: () => console.log('GitHub clicked'),
},
{
children: 'Link',
itemID: 'action-menu-grouped-group-2-example-2',
cta: {
href: '/#',
},
itemId: 'action-menu-grouped-group-2-example-2',
onClick: () => console.log('Link clicked'),
description: 'Description of link',
},
],
},
]}
displayLabelBeforeIcon
id='action-menu-grouped-example'
/>
);

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ propComponents: [
'DetailsPageHeader',
'PageHeading',
# 'PageHeadingLabel', # No output --> is a type and not an interface
'Breadcrumbs',
# 'Breadcrumb', # No output --> is a type and not an interface
'ActionButtons',
'ActionButton', # Incomplete output --> see https://github.com/patternfly/patternfly-org/issues/3423
# 'ActionCTA', # No output --> is a type and not an interface
'ActionMenu',
Expand All @@ -29,9 +26,7 @@ propComponents: [
beta: true
---

import { ActionButtons } from '@patternfly/react-component-groups';
import { ActionMenu } from '@patternfly/react-component-groups';
import { Breadcrumbs } from '@patternfly/react-component-groups';
import { BrowserRouter as Router } from 'react-router-dom';
import { CheckCircleIcon } from '@patternfly/react-icons';
import HorizontalNav from '@patternfly/react-component-groups/dist/dynamic/HorizontalNav';
Expand Down Expand Up @@ -60,24 +55,6 @@ The `pageHeader` for a details page contains the `breadcrumbs`, `pageHeading`, a

```

### Details page breadcrumbs

You can specify the `children` of the details page `breadcrumbs` and the pages that they point to.

```js file="./BreadcrumbsExample.tsx"

```

### Details page action buttons

The action buttons in a details page header can be customized to be any [button](/components/button) variant.

Include a [`tooltip`](/components/tooltip/) as appropriate.

```js file="./ActionButtonsExample.tsx"

```

### Details page action menu

The details page action menu contains multiple actions that users can take.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
/* eslint-disable no-console */
import React from 'react';
import { BrowserRouter as Router } from 'react-router-dom';
import { CheckCircleIcon } from '@patternfly/react-icons';
import { Breadcrumb, BreadcrumbItem } from '@patternfly/react-core';
import DetailsPage from '@patternfly/react-component-groups/dist/dynamic/DetailsPage';

export const BasicExample: React.FunctionComponent = () => (
<Router>
<DetailsPage
breadcrumbs={
[
{ children: 'Resources', to: '/resources' },
{ children: 'Resource details', to: '/resources/example-resource' },
]
<Breadcrumb>
<BreadcrumbItem
to="/resources"
key="resources"
>
Resources
</BreadcrumbItem>
<BreadcrumbItem
isActive
to="/resources/example-resource"
key="resources-example"
>
Resource details
</BreadcrumbItem>
</Breadcrumb>
}
pageHeading={{
title: 'example-resource',
Expand All @@ -32,19 +45,13 @@ export const BasicExample: React.FunctionComponent = () => (
actions: [
{
children: 'Edit resource',
itemID: 'details-page-action-menu-example-1',
cta: {
// eslint-disable-next-line no-console
callback: () => console.log('Edit resource clicked'),
},
itemId: 'details-page-action-menu-example-1',
onClick: () => console.log('Edit resource clicked')
},
{
children: 'Delete resource',
itemID: 'details-page-action-menu-example-2',
cta: {
// eslint-disable-next-line no-console
callback: () => console.log('Delete resource clicked'),
},
itemId: 'details-page-action-menu-example-2',
onClick: () => console.log('Delete resource clicked'),
isDisabled: true,
},
],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
/* eslint-disable no-console */
import React from 'react';
import { BrowserRouter as Router } from 'react-router-dom';
import { CheckCircleIcon } from '@patternfly/react-icons';
import DetailsPageHeader from '@patternfly/react-component-groups/dist/dynamic/DetailsPageHeader';
import { Breadcrumb, BreadcrumbItem } from '@patternfly/react-core';

export const BasicExample: React.FunctionComponent = () => (
<Router>
<DetailsPageHeader
breadcrumbs={
[
{ children: 'Resources', to: '/resources' },
{ children: 'Resource details', to: '/resources/example-resource' },
]
breadcrumbs={
<Breadcrumb>
<BreadcrumbItem
to="/resources"
key="resources"
>
Resources
</BreadcrumbItem>
<BreadcrumbItem
isActive
to="/resources/example-resource"
key="resources-example"
>
Resource details
</BreadcrumbItem>
</Breadcrumb>
}
pageHeading={{
title: 'example-resource',
Expand All @@ -32,19 +45,13 @@ export const BasicExample: React.FunctionComponent = () => (
actions: [
{
children: 'Edit resource',
itemID: 'details-page-header-action-menu-example-1',
cta: {
// eslint-disable-next-line no-console
callback: () => console.log('Edit resource clicked'),
},
itemId: 'details-page-header-action-menu-example-1',
onClick: () => console.log('Edit resource clicked'),
},
{
children: 'Delete resource',
itemID: 'details-page-header-action-menu-example-2',
cta: {
// eslint-disable-next-line no-console
callback: () => console.log('Delete resource clicked'),
},
itemId: 'details-page-header-action-menu-example-2',
onClick: () => console.log('Delete resource clicked'),
isDisabled: true,
},
],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import InvalidObject from '@patternfly/react-component-groups/dist/dynamic/InvalidObject';
import React from 'react';

const InvalidObjectExample: React.FunctionComponent = () => <InvalidObject />;

export default InvalidObjectExample;
export const BasicExample: React.FunctionComponent = () => <InvalidObject />;
28 changes: 28 additions & 0 deletions packages/module/src/ActionButton/ActionButton.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { Button, ButtonProps, Tooltip, TooltipProps } from '@patternfly/react-core';
import React from 'react';

export interface ActionButtonProps extends Omit<ButtonProps, 'innerRef'> {
/** Content for the action button tooltip */
tooltip?: React.ReactNode;
/** Tooltip props */
tooltipProps?: Omit<TooltipProps, 'triggerRef'>;
};

export const ActionButton: React.FunctionComponent<ActionButtonProps> = ({
tooltipProps,
...buttonProps
}: ActionButtonProps) => {
const tooltipRef = React.useRef();
return (
<>
<Button
aria-describedby={tooltipProps?.id}
innerRef={tooltipRef}
{...buttonProps}
/>
{tooltipProps ? <Tooltip {...tooltipProps} triggerRef={tooltipRef} /> : null}
</>
);
};

export default ActionButton;
2 changes: 2 additions & 0 deletions packages/module/src/ActionButton/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export { default } from './ActionButton';
export * from './ActionButton';
Loading
Loading