From 4d3b92d418f7b3b60757ac04197e7a8643d2c4c4 Mon Sep 17 00:00:00 2001 From: redallen Date: Wed, 5 May 2021 11:28:09 -0400 Subject: [PATCH 1/3] fix(tooltip): change default entry and exit delay --- .../src/components/CodeEditor/CodeEditor.tsx | 2 +- .../components/CodeEditor/CodeEditorControl.tsx | 4 ++-- .../src/components/ClipboardCopy/ClipboardCopy.tsx | 2 +- .../ClipboardCopy/ClipboardCopyButton.tsx | 4 ++-- .../react-core/src/components/Tooltip/Tooltip.tsx | 4 ++-- packages/react-docs/src/pages/icons.js | 2 +- .../react-table/src/components/Table/TableText.tsx | 2 +- .../src/components/DefaultRemoveConnector.tsx | 7 ++++++- .../TopologyControlBar/TopologyControlBar.tsx | 6 +++++- .../__snapshots__/TopologyControlBar.test.tsx.snap | 14 ++++++++++++++ 10 files changed, 35 insertions(+), 12 deletions(-) diff --git a/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx b/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx index 6ac9b4c3c95..881b3087b0c 100644 --- a/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx +++ b/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx @@ -137,7 +137,7 @@ export class CodeEditor extends React.Component className, 'aria-label': ariaLabel, toolTipText, - exitDelay = 100, - entryDelay = 100, + exitDelay = 0, + entryDelay = 0, maxWidth = '100px', position = 'top', onClick = () => {}, diff --git a/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx b/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx index 4f7e91004c3..7548dce834d 100644 --- a/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx +++ b/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx @@ -95,7 +95,7 @@ export class ClipboardCopy extends React.Component undefined, diff --git a/packages/react-core/src/components/ClipboardCopy/ClipboardCopyButton.tsx b/packages/react-core/src/components/ClipboardCopy/ClipboardCopyButton.tsx index 295c6a71908..f4b4a8caa1c 100644 --- a/packages/react-core/src/components/ClipboardCopy/ClipboardCopyButton.tsx +++ b/packages/react-core/src/components/ClipboardCopy/ClipboardCopyButton.tsx @@ -31,8 +31,8 @@ export interface ClipboardCopyButtonProps export const ClipboardCopyButton: React.FunctionComponent = ({ onClick, - exitDelay = 100, - entryDelay = 100, + exitDelay = 0, + entryDelay = 0, maxWidth = '100px', position = 'top', 'aria-label': ariaLabel = 'Copyable input', diff --git a/packages/react-core/src/components/Tooltip/Tooltip.tsx b/packages/react-core/src/components/Tooltip/Tooltip.tsx index 0048628e2da..809092f95c2 100644 --- a/packages/react-core/src/components/Tooltip/Tooltip.tsx +++ b/packages/react-core/src/components/Tooltip/Tooltip.tsx @@ -105,8 +105,8 @@ export const Tooltip: React.FunctionComponent = ({ isContentLeftAligned = false, enableFlip = true, className = '', - entryDelay = 0, - exitDelay = 0, + entryDelay = 1000, + exitDelay = 500, appendTo = () => document.body, zIndex = 9999, maxWidth = tooltipMaxWidth.value, diff --git a/packages/react-docs/src/pages/icons.js b/packages/react-docs/src/pages/icons.js index d74e467bb4e..2e58ce140a6 100644 --- a/packages/react-docs/src/pages/icons.js +++ b/packages/react-docs/src/pages/icons.js @@ -51,7 +51,7 @@ const iconsPage = () => { .filter(([id]) => id !== 'AnsibeTowerIcon') .map(([id, Icon]) => ( - {id}}> + {id}}>
{getLabel(id)}
diff --git a/packages/react-table/src/components/Table/TableText.tsx b/packages/react-table/src/components/Table/TableText.tsx index cbdd8a69cc0..240f6d5f400 100644 --- a/packages/react-table/src/components/Table/TableText.tsx +++ b/packages/react-table/src/components/Table/TableText.tsx @@ -39,7 +39,7 @@ export const TableText: React.FunctionComponent = ({ variant = 'span', wrapModifier = null, tooltip: tooltipProp = '', - tooltipProps = { entryDelay: 1000 }, + tooltipProps = {}, onMouseEnter: onMouseEnterProp = () => {}, ...props }: TableTextProps) => { diff --git a/packages/react-topology/src/components/DefaultRemoveConnector.tsx b/packages/react-topology/src/components/DefaultRemoveConnector.tsx index 8d0f514f4a6..4c7f53b27ec 100644 --- a/packages/react-topology/src/components/DefaultRemoveConnector.tsx +++ b/packages/react-topology/src/components/DefaultRemoveConnector.tsx @@ -31,7 +31,12 @@ const DefaultRemoveConnector: React.FC = ({ onRemove, size = 14 }) => ( - + {renderedButton}; + return ( + + {renderedButton} + + ); } return renderedButton; diff --git a/packages/react-topology/src/components/TopologyControlBar/__snapshots__/TopologyControlBar.test.tsx.snap b/packages/react-topology/src/components/TopologyControlBar/__snapshots__/TopologyControlBar.test.tsx.snap index 1fe3ecf496c..d0692b8f2d8 100644 --- a/packages/react-topology/src/components/TopologyControlBar/__snapshots__/TopologyControlBar.test.tsx.snap +++ b/packages/react-topology/src/components/TopologyControlBar/__snapshots__/TopologyControlBar.test.tsx.snap @@ -118,6 +118,8 @@ exports[`TopologyControlBar should accept button options correctly 1`] = ` > Date: Wed, 5 May 2021 13:12:35 -0400 Subject: [PATCH 2/3] check if children is a button or icon --- .../ClipboardCopy/ClipboardCopy.tsx | 2 +- .../src/components/Tooltip/Tooltip.tsx | 20 ++++++++++++++++--- .../components/Tooltip/examples/Tooltip.md | 8 +++++--- packages/react-docs/src/pages/icons.js | 2 +- .../TopologyControlBar/TopologyControlBar.tsx | 6 +----- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx b/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx index 7548dce834d..7dbc945ac25 100644 --- a/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx +++ b/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx @@ -95,7 +95,7 @@ export class ClipboardCopy extends React.Component undefined, diff --git a/packages/react-core/src/components/Tooltip/Tooltip.tsx b/packages/react-core/src/components/Tooltip/Tooltip.tsx index 809092f95c2..c63e4dcd890 100644 --- a/packages/react-core/src/components/Tooltip/Tooltip.tsx +++ b/packages/react-core/src/components/Tooltip/Tooltip.tsx @@ -9,6 +9,7 @@ import tooltipMaxWidth from '@patternfly/react-tokens/dist/js/c_tooltip_MaxWidth import { ReactElement } from 'react'; import { Popper, getOpacityTransition } from '../../helpers/Popper/Popper'; import { Props as TippyProps } from '../../helpers/Popper/DeprecatedTippyTypes'; +import { Button } from '../Button'; export enum TooltipPosition { auto = 'auto', @@ -97,6 +98,19 @@ export interface TooltipProps extends Omit, 'con // id for associating trigger with the content aria-describedby or aria-labelledby let pfTooltipIdCounter = 1; +function isButtonOrIcon(children: React.ReactNode) { + if (React.isValidElement(children)) { + if (['button', Button as any, 'svg', 'g'].includes(children.type)) { + return true; + } + const displayName = (children.type as React.FunctionComponent).displayName; + if (typeof displayName === 'string' && displayName.includes('Icon')) { + return true; + } + } + return false; +} + export const Tooltip: React.FunctionComponent = ({ content: bodyContent, position = 'top', @@ -105,8 +119,9 @@ export const Tooltip: React.FunctionComponent = ({ isContentLeftAligned = false, enableFlip = true, className = '', - entryDelay = 1000, - exitDelay = 500, + children, + entryDelay = isButtonOrIcon(children) ? 0 : 1000, + exitDelay = isButtonOrIcon(children) ? 0 : 500, appendTo = () => document.body, zIndex = 9999, maxWidth = tooltipMaxWidth.value, @@ -115,7 +130,6 @@ export const Tooltip: React.FunctionComponent = ({ // For every initial starting position, there are 3 escape positions flipBehavior = ['top', 'right', 'bottom', 'left', 'top', 'right', 'bottom'], id = `pf-tooltip-${pfTooltipIdCounter++}`, - children, animationDuration = 300, reference, boundary, diff --git a/packages/react-core/src/components/Tooltip/examples/Tooltip.md b/packages/react-core/src/components/Tooltip/examples/Tooltip.md index 79d149d58db..e31ade9102d 100644 --- a/packages/react-core/src/components/Tooltip/examples/Tooltip.md +++ b/packages/react-core/src/components/Tooltip/examples/Tooltip.md @@ -37,6 +37,8 @@ TooltipReactRef = () => {
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id feugiat augue, nec fringilla turpis.
} @@ -55,6 +57,8 @@ import { Tooltip } from '@patternfly/react-core';
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id feugiat augue, nec fringilla turpis.
} @@ -76,9 +80,7 @@ import OutlinedQuestionCircleIcon from '@patternfly/react-icons/dist/js/icons/ou
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id feugiat augue, nec fringilla turpis.
} > - - - +
``` diff --git a/packages/react-docs/src/pages/icons.js b/packages/react-docs/src/pages/icons.js index 2e58ce140a6..d74e467bb4e 100644 --- a/packages/react-docs/src/pages/icons.js +++ b/packages/react-docs/src/pages/icons.js @@ -51,7 +51,7 @@ const iconsPage = () => { .filter(([id]) => id !== 'AnsibeTowerIcon') .map(([id, Icon]) => ( - {id}}> + {id}}>
{getLabel(id)}
diff --git a/packages/react-topology/src/components/TopologyControlBar/TopologyControlBar.tsx b/packages/react-topology/src/components/TopologyControlBar/TopologyControlBar.tsx index d75965ba3cb..349924d6360 100644 --- a/packages/react-topology/src/components/TopologyControlBar/TopologyControlBar.tsx +++ b/packages/react-topology/src/components/TopologyControlBar/TopologyControlBar.tsx @@ -276,11 +276,7 @@ export const TopologyControlBar: React.FunctionComponent - {renderedButton} -
- ); + return {renderedButton}; } return renderedButton; From 792d3b820fcdaddb28640e1227f9ba2d86e27b1d Mon Sep 17 00:00:00 2001 From: redallen Date: Tue, 25 May 2021 14:30:39 -0400 Subject: [PATCH 3/3] use 500ms per-design --- .../src/components/CodeEditor/CodeEditor.tsx | 2 +- .../CodeEditor/CodeEditorControl.tsx | 2 +- .../ClipboardCopy/ClipboardCopy.tsx | 2 +- .../ClipboardCopy/ClipboardCopyButton.tsx | 2 +- .../src/components/Tooltip/Tooltip.tsx | 20 +++---------------- .../components/Tooltip/examples/Tooltip.md | 4 ---- .../src/components/DefaultRemoveConnector.tsx | 7 +------ .../TopologyControlBar.test.tsx.snap | 14 ------------- 8 files changed, 8 insertions(+), 45 deletions(-) diff --git a/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx b/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx index 881b3087b0c..1e92430aa6f 100644 --- a/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx +++ b/packages/react-code-editor/src/components/CodeEditor/CodeEditor.tsx @@ -137,7 +137,7 @@ export class CodeEditor extends React.Component 'aria-label': ariaLabel, toolTipText, exitDelay = 0, - entryDelay = 0, + entryDelay = 300, maxWidth = '100px', position = 'top', onClick = () => {}, diff --git a/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx b/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx index 7dbc945ac25..3af63c9c106 100644 --- a/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx +++ b/packages/react-core/src/components/ClipboardCopy/ClipboardCopy.tsx @@ -95,7 +95,7 @@ export class ClipboardCopy extends React.Component undefined, diff --git a/packages/react-core/src/components/ClipboardCopy/ClipboardCopyButton.tsx b/packages/react-core/src/components/ClipboardCopy/ClipboardCopyButton.tsx index f4b4a8caa1c..512e870b43a 100644 --- a/packages/react-core/src/components/ClipboardCopy/ClipboardCopyButton.tsx +++ b/packages/react-core/src/components/ClipboardCopy/ClipboardCopyButton.tsx @@ -32,7 +32,7 @@ export interface ClipboardCopyButtonProps export const ClipboardCopyButton: React.FunctionComponent = ({ onClick, exitDelay = 0, - entryDelay = 0, + entryDelay = 300, maxWidth = '100px', position = 'top', 'aria-label': ariaLabel = 'Copyable input', diff --git a/packages/react-core/src/components/Tooltip/Tooltip.tsx b/packages/react-core/src/components/Tooltip/Tooltip.tsx index c63e4dcd890..ce70eb44340 100644 --- a/packages/react-core/src/components/Tooltip/Tooltip.tsx +++ b/packages/react-core/src/components/Tooltip/Tooltip.tsx @@ -9,7 +9,6 @@ import tooltipMaxWidth from '@patternfly/react-tokens/dist/js/c_tooltip_MaxWidth import { ReactElement } from 'react'; import { Popper, getOpacityTransition } from '../../helpers/Popper/Popper'; import { Props as TippyProps } from '../../helpers/Popper/DeprecatedTippyTypes'; -import { Button } from '../Button'; export enum TooltipPosition { auto = 'auto', @@ -98,19 +97,6 @@ export interface TooltipProps extends Omit, 'con // id for associating trigger with the content aria-describedby or aria-labelledby let pfTooltipIdCounter = 1; -function isButtonOrIcon(children: React.ReactNode) { - if (React.isValidElement(children)) { - if (['button', Button as any, 'svg', 'g'].includes(children.type)) { - return true; - } - const displayName = (children.type as React.FunctionComponent).displayName; - if (typeof displayName === 'string' && displayName.includes('Icon')) { - return true; - } - } - return false; -} - export const Tooltip: React.FunctionComponent = ({ content: bodyContent, position = 'top', @@ -119,9 +105,8 @@ export const Tooltip: React.FunctionComponent = ({ isContentLeftAligned = false, enableFlip = true, className = '', - children, - entryDelay = isButtonOrIcon(children) ? 0 : 1000, - exitDelay = isButtonOrIcon(children) ? 0 : 500, + entryDelay = 300, + exitDelay = 0, appendTo = () => document.body, zIndex = 9999, maxWidth = tooltipMaxWidth.value, @@ -130,6 +115,7 @@ export const Tooltip: React.FunctionComponent = ({ // For every initial starting position, there are 3 escape positions flipBehavior = ['top', 'right', 'bottom', 'left', 'top', 'right', 'bottom'], id = `pf-tooltip-${pfTooltipIdCounter++}`, + children, animationDuration = 300, reference, boundary, diff --git a/packages/react-core/src/components/Tooltip/examples/Tooltip.md b/packages/react-core/src/components/Tooltip/examples/Tooltip.md index e31ade9102d..0069b82d9af 100644 --- a/packages/react-core/src/components/Tooltip/examples/Tooltip.md +++ b/packages/react-core/src/components/Tooltip/examples/Tooltip.md @@ -37,8 +37,6 @@ TooltipReactRef = () => {
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id feugiat augue, nec fringilla turpis.
} @@ -57,8 +55,6 @@ import { Tooltip } from '@patternfly/react-core';
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id feugiat augue, nec fringilla turpis.
} diff --git a/packages/react-topology/src/components/DefaultRemoveConnector.tsx b/packages/react-topology/src/components/DefaultRemoveConnector.tsx index 4c7f53b27ec..8d0f514f4a6 100644 --- a/packages/react-topology/src/components/DefaultRemoveConnector.tsx +++ b/packages/react-topology/src/components/DefaultRemoveConnector.tsx @@ -31,12 +31,7 @@ const DefaultRemoveConnector: React.FC = ({ onRemove, size = 14 }) => ( - +