/** * External dependencies */ import { __ } from '@wordpress/i18n'; import { settings } from '@wordpress/icons'; import { ToolbarGroup, Dropdown, ToolbarButton, BaseControl, // @ts-expect-error Using experimental features // eslint-disable-next-line @wordpress/no-unsafe-wp-apis __experimentalNumberControl as NumberControl, } from '@wordpress/components'; /** * Internal dependencies */ import { ProductCollectionQuery } from '../types'; interface DisplaySettingsToolbarProps { query: ProductCollectionQuery; setQueryAttribute: ( value: Partial< ProductCollectionQuery > ) => void; } interface ToggleButtonProps { onToggle?: () => void; } const ToggleButton = ( { onToggle }: ToggleButtonProps ) => ( ); const DisplaySettingsToolbar = ( { query, setQueryAttribute, }: DisplaySettingsToolbarProps ) => { const handlePerPageChange = ( value: string | undefined ) => { const parsedValue = Number( value ); if ( ! isNaN( parsedValue ) && parsedValue >= 1 && parsedValue <= 100 ) { setQueryAttribute( { perPage: parsedValue } ); } }; const handleOffsetChange = ( value: string | undefined ) => { const parsedValue = Number( value ); if ( ! isNaN( parsedValue ) && parsedValue >= 0 && parsedValue <= 100 ) { setQueryAttribute( { offset: parsedValue } ); } }; const handlePagesChange = ( value: string | undefined ) => { const parsedValue = Number( value ); if ( ! isNaN( parsedValue ) && parsedValue >= 0 ) { setQueryAttribute( { pages: parsedValue } ); } }; const numberControlProps = { __unstableInputWidth: '60px', labelPosition: 'edge', step: '1', isDragEnabled: false, }; return ( ( ) } renderContent={ () => ( <> ) } /> ); }; export default DisplaySettingsToolbar;