UNPKG

@plone/volto

Version:
94 lines (87 loc) 2.53 kB
import React from 'react'; import { defineMessages, injectIntl } from 'react-intl'; import PropTypes from 'prop-types'; import { Button, Grid } from 'semantic-ui-react'; import FormFieldWrapper from '@plone/volto/components/manage/Widgets/FormFieldWrapper'; const messages = defineMessages({ small: { id: 'Small', defaultMessage: 'Small', }, medium: { id: 'Medium', defaultMessage: 'Medium', }, large: { id: 'Large', defaultMessage: 'Large', }, }); const ImageSizeWidget = (props) => { const { onChange, id, disabled, intl, value, isDisabled } = props; return ( <FormFieldWrapper {...props}> <Grid> <Grid.Row> <Grid.Column width="8" className="field-image_size"> <Button.Group> <Button icon basic aria-label={intl.formatMessage(messages.small)} onClick={() => onChange(id, 's')} active={value === 's'} disabled={disabled || isDisabled} > <div className="image-sizes-text">S</div> </Button> </Button.Group> <Button.Group> <Button icon basic aria-label={intl.formatMessage(messages.medium)} onClick={() => onChange(id, 'm')} active={value === 'm'} disabled={disabled || isDisabled} > <div className="image-sizes-text">M</div> </Button> </Button.Group> <Button.Group> <Button icon basic aria-label={intl.formatMessage(messages.large)} onClick={() => onChange(id, 'l')} active={value === 'l' || value === undefined} disabled={disabled || isDisabled} > <div className="image-sizes-text">L</div> </Button> </Button.Group> </Grid.Column> </Grid.Row> </Grid> </FormFieldWrapper> ); }; /** * Property types. * @property {Object} propTypes Property types. * @static */ ImageSizeWidget.propTypes = { onChange: PropTypes.func.isRequired, value: PropTypes.string, id: PropTypes.string.isRequired, }; /** * Default properties. * @property {Object} defaultProps Default properties. * @static */ ImageSizeWidget.defaultProps = { onChange: () => {}, }; export default injectIntl(ImageSizeWidget);