64 lines
1.2 KiB
JavaScript
64 lines
1.2 KiB
JavaScript
|
/**
|
||
|
* External dependencies
|
||
|
*/
|
||
|
import PropTypes from 'prop-types';
|
||
|
import RadioControl, {
|
||
|
RadioControlOptionLayout,
|
||
|
} from '@woocommerce/base-components/radio-control';
|
||
|
|
||
|
const PackageOptions = ( {
|
||
|
className,
|
||
|
noResultsMessage,
|
||
|
onChange,
|
||
|
options,
|
||
|
renderOption,
|
||
|
selected,
|
||
|
} ) => {
|
||
|
if ( options.length === 0 ) {
|
||
|
return (
|
||
|
<p className="wc-block-shipping-rates-control__no-results">
|
||
|
{ noResultsMessage }
|
||
|
</p>
|
||
|
);
|
||
|
}
|
||
|
|
||
|
if ( options.length > 1 ) {
|
||
|
return (
|
||
|
<RadioControl
|
||
|
className={ className }
|
||
|
onChange={ onChange }
|
||
|
selected={ selected }
|
||
|
options={ options.map( renderOption ) }
|
||
|
/>
|
||
|
);
|
||
|
}
|
||
|
|
||
|
const {
|
||
|
label,
|
||
|
secondaryLabel,
|
||
|
description,
|
||
|
secondaryDescription,
|
||
|
} = renderOption( selected );
|
||
|
|
||
|
return (
|
||
|
<RadioControlOptionLayout
|
||
|
className={ className }
|
||
|
label={ label }
|
||
|
secondaryLabel={ secondaryLabel }
|
||
|
description={ description }
|
||
|
secondaryDescription={ secondaryDescription }
|
||
|
/>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
PackageOptions.propTypes = {
|
||
|
noResultsMessage: PropTypes.string.isRequired,
|
||
|
onChange: PropTypes.func.isRequired,
|
||
|
options: PropTypes.arrayOf( PropTypes.object ).isRequired,
|
||
|
renderOption: PropTypes.func.isRequired,
|
||
|
className: PropTypes.string,
|
||
|
selected: PropTypes.string,
|
||
|
};
|
||
|
|
||
|
export default PackageOptions;
|