/** * External dependencies */ import { __ } from '@wordpress/i18n'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import { ButtonGroup, Button } from '@wordpress/components'; import { useState } from '@wordpress/element'; import { withInstanceId } from '@wordpress/compose'; /** * Internal dependencies */ import './editor.scss'; const ViewSwitcher = ( { className, label = __( 'View', 'woo-gutenberg-products-block' ), views, defaultView, instanceId, render, } ) => { const [ currentView, setCurrentView ] = useState( defaultView ); const classes = classnames( className, 'wc-block-view-switch-control' ); const htmlId = 'wc-block-view-switch-control-' + instanceId; return ( <>
{ views.map( ( view ) => ( ) ) }
{ render( currentView ) } ); }; ViewSwitcher.propTypes = { /** * Custom class name to add to component. */ className: PropTypes.string, /** * List of views. */ views: PropTypes.arrayOf( PropTypes.shape( { name: PropTypes.string.isRequired, value: PropTypes.string.isRequired, } ) ).isRequired, /** * The default selected view. */ defaultView: PropTypes.string.isRequired, /** * Render prop for selected views. */ render: PropTypes.func.isRequired, // from withInstanceId instanceId: PropTypes.number.isRequired, }; export default withInstanceId( ViewSwitcher );