woocommerce/plugins/woocommerce-blocks/assets/js/base/components/radio-control/option.js

73 lines
1.7 KiB
JavaScript
Raw Normal View History

Add Cart totals to Cart block (https://github.com/woocommerce/woocommerce-blocks/pull/1411) * Add Cart totals to Cart block * Accessibility improvements * Load vendors styles separately * Use same shipping placeholders for cart and checkout * Refactor how we import @wordpress/components styles so only panel styles are imported * Remove style-loader from vendors styles build process * Add htmlFor attribute to TotalsCouponCodeInput * Update totalItems shape to match API * Fix wrong total items shape using numbers instead of strings * Rename wc-blocks classes to wc-block * Remove unnecessary parseInt() * Add radix to parseInt() * Rename totalRows to totalRowsConfig * Move placeholder content out of the component * Use Card component for cart's sidebar (https://github.com/woocommerce/woocommerce-blocks/pull/1423) * Use Card component for cart's sidebar * Split RadioControl component * No need to use Label in RadioControlOption * Remove no longer valid @todo comment * Use 'checked' prop instead of 'selected' in RadioControlOption * Rename wc-blocks classes to wc-block * Rename wc-blocks classes to wc-block (II) * Make sure radio control ids are unique using withComponentId * Load PanelBody and PanelRow from last version of @wordpress/components * Create vendors-frontend.js file * Load wordpress-component instead of @wordpress/components from <Button> component * Only load 'withRestApiHydration' HOC * Make vendors-frontend a dependency of cart-frontend script * Revert "Only load 'withRestApiHydration' HOC" This reverts commit 9f9b9759a98047b26e7d8f04189ffe78c1d5bb06. * Fix fieldset background
2020-01-10 14:37:27 +00:00
/**
* External dependencies
*/
import classnames from 'classnames';
const Option = ( { checked, name, onChange, option } ) => {
const {
value,
label,
description,
secondaryLabel,
secondaryDescription,
} = option;
const onChangeValue = ( event ) => onChange( event.target.value );
return (
<label
className="wc-block-radio-control__option"
htmlFor={ `${ name }-${ value }` }
>
<input
id={ `${ name }-${ value }` }
className="wc-block-radio-control__input"
type="radio"
name={ name }
value={ value }
onChange={ onChangeValue }
checked={ checked }
aria-describedby={ classnames( {
[ `${ name }-${ value }__label` ]: label,
[ `${ name }-${ value }__secondary-label` ]: secondaryLabel,
[ `${ name }-${ value }__description` ]: description,
[ `${ name }-${ value }__secondary-description` ]: secondaryDescription,
} ) }
/>
{ label && (
<span
id={ `${ name }-${ value }__label` }
className="wc-block-radio-control__label"
>
{ label }
</span>
) }
{ secondaryLabel && (
<span
id={ `${ name }-${ value }__secondary-label` }
className="wc-block-radio-control__secondary-label"
>
{ secondaryLabel }
</span>
) }
{ description && (
<span
id={ `${ name }-${ value }__description` }
className="wc-block-radio-control__description"
>
{ description }
</span>
) }
{ secondaryDescription && (
<span
id={ `${ name }-${ value }__secondary-description` }
className="wc-block-radio-control__secondary-description"
>
{ secondaryDescription }
</span>
) }
</label>
);
};
export default Option;