import './BlacklistForm.scss'; import AddButton from '../ui/AddButton'; import DeleteButton from '../ui/DeleteButton'; import React from 'react'; import { BlacklistJSON } from '../../../shared/settings/Blacklist'; interface Props { value: BlacklistJSON; onChange: (value: BlacklistJSON) => void; onBlur: () => void; } class BlacklistForm extends React.Component { public static defaultProps: Props = { value: [], onChange: () => {}, onBlur: () => {}, }; render() { return
{ this.props.value .map((item, index) => { if (typeof item !== 'string') { // TODO support partial blacklist; return null; } return
; }) }
; } bindValue(e: any) { let name = e.target.name; let index = e.target.getAttribute('data-index'); let next = this.props.value.slice(); if (name === 'url') { next[index] = e.target.value; } else if (name === 'add') { next.push(''); } else if (name === 'delete') { next.splice(index, 1); } this.props.onChange(next); if (name === 'delete') { this.props.onBlur(); } } } export default BlacklistForm;