import React, { Component } from 'react'; import PropTypes from 'prop-types'; import VariantViewComponent from './variant-view-component'; import styles from './variant.scss'; import { UPDATE_FEATURE } from '../../../permissions'; import AddVariant from './add-variant'; const initalState = { showDialog: false, editVariant: undefined, editIndex: -1 }; class UpdateVariantComponent extends Component { constructor(props) { super(props); this.state = { ...initalState }; } closeDialog = () => { this.setState({ ...initalState }); }; openAddVariant = e => { e.preventDefault(); this.setState({ showDialog: true, editVariant: undefined, editIndex: undefined, title: 'Add variant', }); }; openEditVariant = (e, index, variant) => { e.preventDefault(); if (this.props.hasPermission(UPDATE_FEATURE)) { this.setState({ showDialog: true, editVariant: variant, editIndex: index, title: 'Edit variant', }); } }; validateName = name => { if (!name) { return { name: 'Name is required' }; } }; onRemoveVariant = (e, index) => { e.preventDefault(); this.props.removeVariant(index); }; renderVariant = (variant, index) => ( this.openEditVariant(e, index, variant)} removeVariant={e => this.onRemoveVariant(e, index)} hasPermission={this.props.hasPermission} /> ); renderVariants = variants => ( {variants.map(this.renderVariant)}
Variant name Weight
); render() { const { showDialog, editVariant, editIndex, title } = this.state; const { variants, addVariant, updateVariant } = this.props; const saveVariant = editVariant ? updateVariant.bind(null, editIndex) : addVariant; return (

Variants allows you to return a variant object if the feature toggle is considered enabled for the current request. When using variants you should use the{' '} getVariant() method in the Client SDK.

{this.renderVariants(variants)}
{this.props.hasPermission(UPDATE_FEATURE) ? (

Add variant

) : null}
); } } UpdateVariantComponent.propTypes = { variants: PropTypes.array.isRequired, addVariant: PropTypes.func.isRequired, removeVariant: PropTypes.func.isRequired, updateVariant: PropTypes.func.isRequired, hasPermission: PropTypes.func.isRequired, }; export default UpdateVariantComponent;