public/video-ui/src/components/Flags/index.jsx (89 lines of code) (raw):

import React from 'react'; import PropTypes from 'prop-types'; import { ManagedField, ManagedForm } from '../ManagedForm'; import CheckBox from '../FormFields/CheckBox'; import VideoUtils from '../../util/video'; import { formNames } from '../../constants/formNames'; class Flags extends React.Component { static propTypes = { video: PropTypes.object.isRequired, editable: PropTypes.bool.isRequired, updateVideo: PropTypes.func.isRequired, updateErrors: PropTypes.func.isRequired, updateWarnings: PropTypes.func.isRequired }; render() { const { video, editable, updateVideo, updateErrors, updateWarnings } = this.props; const isYoutubeAtom = VideoUtils.isYoutube(video); const isCommercialType = VideoUtils.isCommercialType(video); const isEligibleForAds = VideoUtils.isEligibleForAds(video); return ( <ManagedForm data={video} updateData={updateVideo} editable={editable} updateErrors={updateErrors} updateWarnings={updateWarnings} formName={formNames.flags} formClass="atom__edit__form" > <ManagedField fieldLocation="blockAds" name="Block ads" fieldDetails={ isCommercialType ? 'Block ads on Composer page' : 'Ads will not be displayed with this video' } disabled={!isYoutubeAtom || !isEligibleForAds} tooltip={!isEligibleForAds ? `Not eligible for pre-roll.` : ''} > {/* use a different field identifier to `fieldLocation` to ensure ad blockers don't remove it from the DOM */} <CheckBox fieldId="what-a-time-to-be-alive"/> </ManagedField> <ManagedField fieldLocation="composerCommentsEnabled" name="Comments" fieldDetails="Allow comments on Guardian video page (does not change YouTube)" > <CheckBox /> </ManagedField> <ManagedField fieldLocation="optimisedForWeb" name="Optimised for Web" fieldDetails="Optimised for Web" > <CheckBox /> </ManagedField> <ManagedField fieldLocation="sensitive" name="Sensitive" fieldDetails="Contains sensitive content" > <CheckBox /> </ManagedField> <ManagedField fieldLocation="legallySensitive" name="Legally Sensitive" fieldDetails="This content involves active criminal proceedings" > <CheckBox /> </ManagedField> <ManagedField fieldLocation="suppressRelatedContent" name="Suppress related content" fieldDetails="Suppress related content" > <CheckBox /> </ManagedField> </ManagedForm> ); } } export default Flags;