/**
* 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;