diff --git a/packages/react-core/src/components/ToggleGroup/examples/ToggleGroup.md b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroup.md index ba0723bb5c2..c9ae050331a 100644 --- a/packages/react-core/src/components/ToggleGroup/examples/ToggleGroup.md +++ b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroup.md @@ -14,207 +14,21 @@ import ShareSquareIcon from '@patternfly/react-icons/dist/esm/icons/share-square ## Examples ### Default with multiple selectable -```js -import React from 'react'; -import { ToggleGroup, ToggleGroupItem, Button, Stack, StackItem } from '@patternfly/react-core'; - -class DefaultToggleGroupExample extends React.Component { - constructor(props) { - super(props); - this.state = { - isSelected: { - first: false, - second: false, - disableAll: false - } - }; - this.handleItemClick = (isSelected, event) => { - const id = event.currentTarget.id; - this.setState(prevState => { - prevState.isSelected[id] = isSelected; - return { - isSelected: prevState.isSelected - }; - }); - }; - this.disableAllClick = () => { - this.setState(prevState => ({ disableAll: !prevState.disableAll })); - }; - } - - render() { - const { isSelected } = this.state; - - return ( - - - - - - - - - - - - - ); - } -} +```ts file="./ToggleGroupDefaultMultiple.tsx" ``` ### Default with single selectable -```js -import React from 'react'; -import { ToggleGroup, ToggleGroupItem } from '@patternfly/react-core'; - -class DefaultAsRadioToggleGroupExample extends React.Component { - constructor(props) { - super(props); - this.state = { - isSelected: "" - }; - this.handleItemClick = (isSelected, event) => { - const id = event.currentTarget.id; - this.setState({ isSelected: id }); - }; - } - - render() { - const { isSelected } = this.state; - - return ( - - - - - - ); - } -} +```ts file="./ToggleGroupDefaultSingle.tsx" ``` ### Icons -```js -import React from 'react'; -import { ToggleGroup, ToggleGroupItem } from '@patternfly/react-core'; -import UndoIcon from '@patternfly/react-icons/dist/esm/icons/undo-icon'; -import CopyIcon from '@patternfly/react-icons/dist/esm/icons/copy-icon'; -import ShareSquareIcon from '@patternfly/react-icons/dist/esm/icons/share-square-icon'; - -class IconToggleGroupExample extends React.Component { - constructor(props) { - super(props); - this.state = { - isSelected: { - "icons-1": false, - "icons-2": false, - "icons-3": true - } - }; - this.handleItemClick = (isSelected, event) => { - const id = event.currentTarget.id; - this.setState(prevState => { - prevState.isSelected[id] = isSelected; - return { - isSelected: prevState.isSelected - }; - }); - }; - } - - render() { - const { isSelected } = this.state; - return ( - - } aria-label="copy icon button" buttonId="icons-1" isSelected={isSelected["icons-1"]} onChange={this.handleItemClick} /> - } aria-label="undo icon button" buttonId="icons-2" isSelected={isSelected["icons-2"]} onChange={this.handleItemClick} /> - } aria-label="share square icon button" buttonId="icons-3" isSelected={isSelected["icons-3"]} onChange={this.handleItemClick} /> - - ); - } -} +```ts file="./ToggleGroupIcon.tsx" ``` ### Text and icons -```js -import React from 'react'; -import { ToggleGroup, ToggleGroupItem } from '@patternfly/react-core'; -import UndoIcon from '@patternfly/react-icons/dist/esm/icons/undo-icon'; -import CopyIcon from '@patternfly/react-icons/dist/esm/icons/copy-icon'; -import ShareSquareIcon from '@patternfly/react-icons/dist/esm/icons/share-square-icon'; - -class TextIconToggleGroupExample extends React.Component { - constructor(props) { - super(props); - this.state = { - isSelected: { - "text-icons-1": false, - "text-icons-2": false, - "text-icons-3": true - } - }; - this.handleItemClick = (isSelected, event) => { - const id = event.currentTarget.id; - this.setState(prevState => { - prevState.isSelected[id] = isSelected; - return { - isSelected: prevState.isSelected - }; - }); - }; - } - - render() { - const { isSelected } = this.state; - return ( - - } text="Copy" aria-label="copy icon button" buttonId="text-icons-1" isSelected={isSelected["text-icons-1"]} onChange={this.handleItemClick} /> - } text="Undo" aria-label="undo icon button" buttonId="text-icons-2" isSelected={isSelected["text-icons-2"]} onChange={this.handleItemClick} /> - } text="Share" aria-label="share square icon button" buttonId="text-icons-3" isSelected={isSelected["text-icons-3"]} onChange={this.handleItemClick} /> - - ); - } -} +```ts file="./ToggleGroupTextIcon.tsx" ``` ### Compact variant -```js -import React from 'react'; -import { ToggleGroup, ToggleGroupItem, ToggleGroupVariant } from '@patternfly/react-core'; - -class CompactToggleGroupExample extends React.Component { -constructor(props) { - super(props); - this.state = { - isSelected: { - "compact-1": false, - "compact-2": false - } - }; - this.handleItemClick = (isSelected, event) => { - const id = event.currentTarget.id; - this.setState(prevState => { - prevState.isSelected[id] = isSelected; - return { - isSelected: prevState.isSelected - }; - }); - }; - } - - render() { - const { isSelected } = this.state; - - return ( - - - - - - ); - } -} +```ts file="./ToggleGroupCompact.tsx" ``` diff --git a/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupCompact.tsx b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupCompact.tsx new file mode 100644 index 00000000000..ea64b90b02b --- /dev/null +++ b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupCompact.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { ToggleGroup, ToggleGroupItem } from '@patternfly/react-core'; + +export const ToggleGroupCompact: React.FunctionComponent = () => { + const [isSelected, setIsSelected] = React.useState({ + 'toggle-group-compact-1': false, + 'toggle-group-compact-2': false + }); + const handleItemClick = (isSelected: boolean, event: React.MouseEvent | React.KeyboardEvent | MouseEvent) => { + const id = event.currentTarget.id; + setIsSelected(prevIsSelected => ({ ...prevIsSelected, [id]: isSelected })); + }; + return ( + + + + + + ); +}; diff --git a/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupDefaultMultiple.tsx b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupDefaultMultiple.tsx new file mode 100644 index 00000000000..aa05d672585 --- /dev/null +++ b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupDefaultMultiple.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { ToggleGroup, ToggleGroupItem, Button, Stack, StackItem } from '@patternfly/react-core'; + +export const ToggleGroupDefaultMultiple: React.FunctionComponent = () => { + const [isSelected, setIsSelected] = React.useState({ + 'toggle-group-multiple-1': false, + 'toggle-group-multiple-2': false + }); + const [disableAll, setDisableAll] = React.useState(false); + const handleItemClick = (isSelected: boolean, event: React.MouseEvent | React.KeyboardEvent | MouseEvent) => { + const id = event.currentTarget.id; + setIsSelected(prevIsSelected => ({ ...prevIsSelected, [id]: isSelected })); + }; + const disableAllClick = () => { + setDisableAll(!disableAll); + }; + return ( + + + + + + + + + + + + + ); +}; diff --git a/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupDefaultSingle.tsx b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupDefaultSingle.tsx new file mode 100644 index 00000000000..608c8d93503 --- /dev/null +++ b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupDefaultSingle.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { ToggleGroup, ToggleGroupItem } from '@patternfly/react-core'; + +export const ToggleGroupDefaultSingle: React.FunctionComponent = () => { + const [isSelected, setIsSelected] = React.useState(''); + const handleItemClick = (isSelected: boolean, event: React.MouseEvent | React.KeyboardEvent | MouseEvent) => { + const id = event.currentTarget.id; + setIsSelected(id); + }; + return ( + + + + + + ); +}; diff --git a/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupIcon.tsx b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupIcon.tsx new file mode 100644 index 00000000000..7bb0eef13f1 --- /dev/null +++ b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupIcon.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { ToggleGroup, ToggleGroupItem } from '@patternfly/react-core'; +import UndoIcon from '@patternfly/react-icons/dist/esm/icons/undo-icon'; +import CopyIcon from '@patternfly/react-icons/dist/esm/icons/copy-icon'; +import ShareSquareIcon from '@patternfly/react-icons/dist/esm/icons/share-square-icon'; + +export const ToggleGroupIcon: React.FunctionComponent = () => { + const [isSelected, setIsSelected] = React.useState({ + 'toggle-group-icons-1': false, + 'toggle-group-icons-2': false, + 'toggle-group-icons-3': true + }); + const handleItemClick = (isSelected: boolean, event: React.MouseEvent | React.KeyboardEvent | MouseEvent) => { + const id = event.currentTarget.id; + setIsSelected(prevIsSelected => ({ ...prevIsSelected, [id]: isSelected })); + }; + return ( + + } + aria-label="copy" + buttonId="toggle-group-icons-1" + isSelected={isSelected['toggle-group-icons-1']} + onChange={handleItemClick} + /> + } + aria-label="undo" + buttonId="toggle-group-icons-2" + isSelected={isSelected['toggle-group-icons-2']} + onChange={handleItemClick} + /> + } + aria-label="share square" + buttonId="toggle-group-icons-3" + isSelected={isSelected['toggle-group-icons-3']} + onChange={handleItemClick} + /> + + ); +}; diff --git a/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupTextIcon.tsx b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupTextIcon.tsx new file mode 100644 index 00000000000..2755727da5f --- /dev/null +++ b/packages/react-core/src/components/ToggleGroup/examples/ToggleGroupTextIcon.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { ToggleGroup, ToggleGroupItem } from '@patternfly/react-core'; +import UndoIcon from '@patternfly/react-icons/dist/esm/icons/undo-icon'; +import CopyIcon from '@patternfly/react-icons/dist/esm/icons/copy-icon'; +import ShareSquareIcon from '@patternfly/react-icons/dist/esm/icons/share-square-icon'; + +export const ToggleGroupIcon: React.FunctionComponent = () => { + const [isSelected, setIsSelected] = React.useState({ + 'text-icons-1': false, + 'text-icons-2': false, + 'text-icons-3': true + }); + const handleItemClick = (isSelected: boolean, event: React.MouseEvent | React.KeyboardEvent | MouseEvent) => { + const id = event.currentTarget.id; + setIsSelected(prevIsSelected => ({ ...prevIsSelected, [id]: isSelected })); + }; + return ( + + } + text="Copy" + buttonId="toggle-group-text-icons-1" + isSelected={isSelected['toggle-group-text-icons-1']} + onChange={handleItemClick} + /> + } + text="Undo" + buttonId="toggle-group-text-icons-2" + isSelected={isSelected['toggle-group-text-icons-2']} + onChange={handleItemClick} + /> + } + text="Share" + buttonId="toggle-group-text-icons-3" + isSelected={isSelected['toggle-group-text-icons-3']} + onChange={handleItemClick} + /> + + ); +};