diff --git a/packages/react-core/src/components/Pagination/examples/Pagination.md b/packages/react-core/src/components/Pagination/examples/Pagination.md index e64119588b6..c11bd37a2e4 100644 --- a/packages/react-core/src/components/Pagination/examples/Pagination.md +++ b/packages/react-core/src/components/Pagination/examples/Pagination.md @@ -10,389 +10,42 @@ ouia: true ### Top -```js -import React from 'react'; -import { Pagination, PaginationVariant } from '@patternfly/react-core'; - -class PaginationTop extends React.Component { - constructor(props) { - super(props); - this.state = { - page: 1, - perPage: 20 - }; - - this.onSetPage = (_event, pageNumber) => { - this.setState({ - page: pageNumber - }); - }; - - this.onPerPageSelect = (_event, perPage, page) => { - this.setState({ - page, perPage - }); - }; - } - - render() { - return ( - - ); - } -} +```ts file="./PaginationTop.tsx" ``` ### Bottom -```js -import React from 'react'; -import { Pagination, PaginationVariant } from '@patternfly/react-core'; - -class PaginationBottom extends React.Component { - constructor(props) { - super(props); - this.state = { - page: 1 - }; - this.onSetPage = (_event, pageNumber) => { - this.setState({ - page: pageNumber - }); - }; - this.onPerPageSelect = (_event, perPage, page) => { - this.setState({ - page, perPage - }); - }; - } - - render() { - return ( - - ); - } -} +```ts file="./PaginationBottom.tsx" ``` ### Indeterminate By not passing `itemCount` and passing `toggleTemplate` you can customize the toggle with text. -```js -import React from 'react'; -import { Pagination } from '@patternfly/react-core'; - -PaginationIndeterminate = () => { - const [page, setPage] = React.useState(1); - const [perPage, setPerPage] = React.useState(20); - - const onSetPage = (_event, pageNumber) => setPage(pageNumber); - const onPerPageSelect = (_event, perPage) => setPerPage(perPage); - - return ( - ( - - - {firstIndex} - {lastIndex} - - of - many - - )} - widgetId="pagination-indeterminate" - perPage={perPage} - page={page} - onSetPage={onSetPage} - onPerPageSelect={onPerPageSelect} - /> - ); -}; +```ts file="./PaginationIndeterminate.tsx" ``` ### Disabled -```js -import React from 'react'; -import { Pagination, PaginationVariant } from '@patternfly/react-core'; - -class PaginationDisabled extends React.Component { - constructor(props) { - super(props); - this.state = { - page: 1, - perPage: 20 - }; - - this.onSetPage = (_event, pageNumber) => { - this.setState({ - page: pageNumber - }); - }; - - this.onPerPageSelect = (_event, perPage, page) => { - this.setState({ - page, perPage - }); - }; - } - - render() { - return ( - - ); - } -} +```ts file="./PaginationDisabled.tsx" ``` ### No items -```js -import React from 'react'; -import { Pagination, PaginationVariant } from '@patternfly/react-core'; - -class PaginationTop extends React.Component { - constructor(props) { - super(props); - this.state = { - page: 1, - perPage: 20 - }; - - this.onSetPage = (_event, pageNumber) => { - this.setState({ - page: pageNumber - }); - }; - - this.onPerPageSelect = (_event, perPage, page) => { - this.setState({ - page, perPage - }); - }; - } - - render() { - return ( - - ); - } -} +```ts file="./PaginationNoItems.tsx" ``` ### One page -```js -import React from 'react'; -import { Pagination, PaginationVariant } from '@patternfly/react-core'; - -class PaginationTop extends React.Component { - constructor(props) { - super(props); - this.state = { - page: 1, - perPage: 20 - }; - - this.onSetPage = (_event, pageNumber) => { - this.setState({ - page: pageNumber - }); - }; - - this.onPerPageSelect = (_event, perPage, page) => { - this.setState({ - page, perPage - }); - }; - } - - render() { - return ( - - ); - } -} +```ts file="./PaginationOnePage.tsx" ``` ### Compact -```js -import React from 'react'; -import { Pagination, PaginationVariant } from '@patternfly/react-core'; - -class PaginationTop extends React.Component { - constructor(props) { - super(props); - this.state = { - page: 1, - perPage: 20 - }; - - this.onSetPage = (_event, pageNumber) => { - this.setState({ - page: pageNumber - }); - }; - - this.onPerPageSelect = (_event, perPage, page) => { - this.setState({ - page, perPage - }); - }; - } - - render() { - return ( - - ); - } -} +```ts file="./PaginationCompact.tsx" ``` ### Sticky -```js isFullscreen -import React from 'react'; -import { Pagination, PaginationVariant, Gallery, GalleryItem, Card, CardBody } from '@patternfly/react-core'; - -class PaginationSticky extends React.Component { - constructor(props) { - super(props); - this.state = { - page: 1, - perPage: 20, - isTopSticky: true - }; - - this.onToggleSticky = () => { - this.setState({ - isTopSticky: !this.state.isTopSticky - }); - }; - - this.onSetPage = (_event, pageNumber) => { - this.setState({ - page: pageNumber - }); - }; - - this.onPerPageSelect = (_event, perPage, page) => { - this.setState({ - page, perPage - }); - }; - } - - render() { - return ( -
- {this.state.isTopSticky && ( - - - - - - {Array.apply(0, Array(40)).map((x, i) => ( - - - This is a card - - - ))} - - - )} - {!this.state.isTopSticky && ( - - - {Array.apply(0, Array(40)).map((x, i) => ( - - - This is a card - - - ))} - - - - - - )} -
- ); - } -} +```ts isFullscreen file="./PaginationSticky.tsx" ``` diff --git a/packages/react-core/src/components/Pagination/examples/PaginationBottom.tsx b/packages/react-core/src/components/Pagination/examples/PaginationBottom.tsx new file mode 100644 index 00000000000..051c1cfa19b --- /dev/null +++ b/packages/react-core/src/components/Pagination/examples/PaginationBottom.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { Pagination, PaginationVariant } from '@patternfly/react-core'; + +export const PaginationBottom: React.FunctionComponent = () => { + const [page, setPage] = React.useState(1); + const [perPage, setPerPage] = React.useState(10); + + const onSetPage = (_event: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPage: number) => { + setPage(newPage); + }; + + const onPerPageSelect = ( + _event: React.MouseEvent | React.KeyboardEvent | MouseEvent, + newPerPage: number, + newPage: number + ) => { + setPerPage(newPerPage); + setPage(newPage); + }; + + return ( + + ); +}; diff --git a/packages/react-core/src/components/Pagination/examples/PaginationCompact.tsx b/packages/react-core/src/components/Pagination/examples/PaginationCompact.tsx new file mode 100644 index 00000000000..7d28387b425 --- /dev/null +++ b/packages/react-core/src/components/Pagination/examples/PaginationCompact.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { Pagination } from '@patternfly/react-core'; + +export const PaginationCompact: React.FunctionComponent = () => { + const [page, setPage] = React.useState(1); + const [perPage, setPerPage] = React.useState(20); + + const onSetPage = (_event: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPage: number) => { + setPage(newPage); + }; + + const onPerPageSelect = ( + _event: React.MouseEvent | React.KeyboardEvent | MouseEvent, + newPerPage: number, + newPage: number + ) => { + setPerPage(newPerPage); + setPage(newPage); + }; + + return ( + + ); +}; diff --git a/packages/react-core/src/components/Pagination/examples/PaginationDisabled.tsx b/packages/react-core/src/components/Pagination/examples/PaginationDisabled.tsx new file mode 100644 index 00000000000..a105a8d2d98 --- /dev/null +++ b/packages/react-core/src/components/Pagination/examples/PaginationDisabled.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { Pagination } from '@patternfly/react-core'; + +export const PaginationDisabled: React.FunctionComponent = () => { + const [page, setPage] = React.useState(1); + const [perPage, setPerPage] = React.useState(20); + + const onSetPage = (_event: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPage: number) => { + setPage(newPage); + }; + + const onPerPageSelect = ( + _event: React.MouseEvent | React.KeyboardEvent | MouseEvent, + newPerPage: number, + newPage: number + ) => { + setPerPage(newPerPage); + setPage(newPage); + }; + + return ( + + ); +}; diff --git a/packages/react-core/src/components/Pagination/examples/PaginationIndeterminate.tsx b/packages/react-core/src/components/Pagination/examples/PaginationIndeterminate.tsx new file mode 100644 index 00000000000..6b26fd0ac0d --- /dev/null +++ b/packages/react-core/src/components/Pagination/examples/PaginationIndeterminate.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { Pagination } from '@patternfly/react-core'; + +export const PaginationIndeterminate: React.FunctionComponent = () => { + const [page, setPage] = React.useState(1); + const [perPage, setPerPage] = React.useState(20); + + const onSetPage = (_event: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPage: number) => { + setPage(newPage); + }; + + const onPerPageSelect = ( + _event: React.MouseEvent | React.KeyboardEvent | MouseEvent, + newPerPage: number, + newPage: number + ) => { + setPerPage(newPerPage); + setPage(newPage); + }; + + return ( + ( + + + {firstIndex} - {lastIndex} + + of + many + + )} + widgetId="pagination-indeterminate" + perPage={perPage} + page={page} + onSetPage={onSetPage} + onPerPageSelect={onPerPageSelect} + /> + ); +}; diff --git a/packages/react-core/src/components/Pagination/examples/PaginationNoItems.tsx b/packages/react-core/src/components/Pagination/examples/PaginationNoItems.tsx new file mode 100644 index 00000000000..0b4fa6f94c8 --- /dev/null +++ b/packages/react-core/src/components/Pagination/examples/PaginationNoItems.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Pagination } from '@patternfly/react-core'; + +export const PaginationNoItems: React.FunctionComponent = () => { + const [page, setPage] = React.useState(1); + const [perPage, setPerPage] = React.useState(20); + + const onSetPage = (_event: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPage: number) => { + setPage(newPage); + }; + + const onPerPageSelect = ( + _event: React.MouseEvent | React.KeyboardEvent | MouseEvent, + newPerPage: number, + newPage: number + ) => { + setPerPage(newPerPage); + setPage(newPage); + }; + + return ( + + ); +}; diff --git a/packages/react-core/src/components/Pagination/examples/PaginationOnePage.tsx b/packages/react-core/src/components/Pagination/examples/PaginationOnePage.tsx new file mode 100644 index 00000000000..ed8d11569e8 --- /dev/null +++ b/packages/react-core/src/components/Pagination/examples/PaginationOnePage.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Pagination } from '@patternfly/react-core'; + +export const PaginationOnePage: React.FunctionComponent = () => { + const [page, setPage] = React.useState(1); + const [perPage, setPerPage] = React.useState(20); + + const onSetPage = (_event: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPage: number) => { + setPage(newPage); + }; + + const onPerPageSelect = ( + _event: React.MouseEvent | React.KeyboardEvent | MouseEvent, + newPerPage: number, + newPage: number + ) => { + setPerPage(newPerPage); + setPage(newPage); + }; + + return ( + + ); +}; diff --git a/packages/react-core/src/components/Pagination/examples/PaginationSticky.tsx b/packages/react-core/src/components/Pagination/examples/PaginationSticky.tsx new file mode 100644 index 00000000000..45affd06b1d --- /dev/null +++ b/packages/react-core/src/components/Pagination/examples/PaginationSticky.tsx @@ -0,0 +1,81 @@ +import React from 'react'; +import { Pagination, PaginationVariant, Gallery, GalleryItem, Card, CardBody } from '@patternfly/react-core'; + +export const PaginationSticky: React.FunctionComponent = () => { + const [page, setPage] = React.useState(1); + const [perPage, setPerPage] = React.useState(20); + const [isTopSticky, setIsTopSticky] = React.useState(true); + + const onToggleSticky = () => { + setIsTopSticky(prev => !prev); + }; + + const onSetPage = (_event: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPage: number) => { + setPage(newPage); + }; + + const onPerPageSelect = ( + _event: React.MouseEvent | React.KeyboardEvent | MouseEvent, + newPerPage: number, + newPage: number + ) => { + setPerPage(newPerPage); + setPage(newPage); + }; + + return ( +
+ {isTopSticky && ( + + + + + + {Array.apply(0, Array(40)).map((x, i) => ( + + + This is a card + + + ))} + + + )} + {!isTopSticky && ( + + + {Array.apply(0, Array(40)).map((x, i) => ( + + + This is a card + + + ))} + + + + + + )} +
+ ); +}; diff --git a/packages/react-core/src/components/Pagination/examples/PaginationTop.tsx b/packages/react-core/src/components/Pagination/examples/PaginationTop.tsx new file mode 100644 index 00000000000..fdd3c7891d3 --- /dev/null +++ b/packages/react-core/src/components/Pagination/examples/PaginationTop.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Pagination } from '@patternfly/react-core'; + +export const PaginationTop: React.FunctionComponent = () => { + const [page, setPage] = React.useState(1); + const [perPage, setPerPage] = React.useState(20); + + const onSetPage = (_event: React.MouseEvent | React.KeyboardEvent | MouseEvent, newPage: number) => { + setPage(newPage); + }; + + const onPerPageSelect = ( + _event: React.MouseEvent | React.KeyboardEvent | MouseEvent, + newPerPage: number, + newPage: number + ) => { + setPerPage(newPerPage); + setPage(newPage); + }; + + return ( + + ); +};