@wordpress/components
Version:
UI components for WordPress.
8 lines (7 loc) • 6.9 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/guide/index.tsx"],
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, Children, useRef } from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport Modal from '../modal';\nimport Button from '../button';\nimport PageControl from './page-control';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * `Guide` is a React component that renders a _user guide_ in a modal. The guide consists of several pages which the user can step through one by one. The guide is finished when the modal is closed or when the user clicks _Finish_ on the last page of the guide.\n *\n * ```jsx\n * function MyTutorial() {\n * \tconst [ isOpen, setIsOpen ] = useState( true );\n *\n * \tif ( ! isOpen ) {\n * \t\treturn null;\n * \t}\n *\n * \treturn (\n * \t\t<Guide\n * \t\t\tonFinish={ () => setIsOpen( false ) }\n * \t\t\tpages={ [\n * \t\t\t\t{\n * \t\t\t\t\tcontent: <p>Welcome to the ACME Store!</p>,\n * \t\t\t\t},\n * \t\t\t\t{\n * \t\t\t\t\timage: <img src=\"https://acmestore.com/add-to-cart.png\" />,\n * \t\t\t\t\tcontent: (\n * \t\t\t\t\t\t<p>\n * \t\t\t\t\t\t\tClick <i>Add to Cart</i> to buy a product.\n * \t\t\t\t\t\t</p>\n * \t\t\t\t\t),\n * \t\t\t\t},\n * \t\t\t] }\n * \t\t/>\n * \t);\n * }\n * ```\n */\nfunction Guide({\n children,\n className,\n contentLabel,\n finishButtonText = __('Finish'),\n nextButtonText = __('Next'),\n previousButtonText = __('Previous'),\n onFinish,\n pages = []\n}) {\n const ref = useRef(null);\n const [currentPage, setCurrentPage] = useState(0);\n useEffect(() => {\n // Place focus at the top of the guide on mount and when the page changes.\n const frame = ref.current?.querySelector('.components-guide');\n if (frame instanceof HTMLElement) {\n frame.focus();\n }\n }, [currentPage]);\n useEffect(() => {\n if (Children.count(children)) {\n deprecated('Passing children to <Guide>', {\n since: '5.5',\n alternative: 'the `pages` prop'\n });\n }\n }, [children]);\n if (Children.count(children)) {\n pages = Children.map(children, child => ({\n content: child\n })) ?? [];\n }\n const canGoBack = currentPage > 0;\n const canGoForward = currentPage < pages.length - 1;\n const goBack = () => {\n if (canGoBack) {\n setCurrentPage(currentPage - 1);\n }\n };\n const goForward = () => {\n if (canGoForward) {\n setCurrentPage(currentPage + 1);\n }\n };\n if (pages.length === 0) {\n return null;\n }\n return /*#__PURE__*/_jsx(Modal, {\n className: clsx('components-guide', className),\n contentLabel: contentLabel,\n isDismissible: pages.length > 1,\n onRequestClose: onFinish,\n onKeyDown: event => {\n if (event.code === 'ArrowLeft') {\n goBack();\n // Do not scroll the modal's contents.\n event.preventDefault();\n } else if (event.code === 'ArrowRight') {\n goForward();\n // Do not scroll the modal's contents.\n event.preventDefault();\n }\n },\n ref: ref,\n children: /*#__PURE__*/_jsxs(\"div\", {\n className: \"components-guide__container\",\n children: [/*#__PURE__*/_jsxs(\"div\", {\n className: \"components-guide__page\",\n children: [pages[currentPage].image, pages.length > 1 && /*#__PURE__*/_jsx(PageControl, {\n currentPage: currentPage,\n numberOfPages: pages.length,\n setCurrentPage: setCurrentPage\n }), pages[currentPage].content]\n }), /*#__PURE__*/_jsxs(\"div\", {\n className: \"components-guide__footer\",\n children: [canGoBack && /*#__PURE__*/_jsx(Button, {\n className: \"components-guide__back-button\",\n variant: \"tertiary\",\n onClick: goBack,\n __next40pxDefaultSize: true,\n children: previousButtonText\n }), canGoForward && /*#__PURE__*/_jsx(Button, {\n className: \"components-guide__forward-button\",\n variant: \"primary\",\n onClick: goForward,\n __next40pxDefaultSize: true,\n children: nextButtonText\n }), !canGoForward && /*#__PURE__*/_jsx(Button, {\n className: \"components-guide__finish-button\",\n variant: \"primary\",\n onClick: onFinish,\n __next40pxDefaultSize: true,\n children: finishButtonText\n })]\n })]\n })\n });\n}\nexport default Guide;"],
"mappings": "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",
"names": ["deprecated", "_jsx", "Modal", "clsx", "_jsxs", "PageControl", "Button"]
}