import './PartialBlacklistForm.scss'; import AddButton from '../ui/AddButton'; import DeleteButton from '../ui/DeleteButton'; import React from 'react'; import Blacklist, { BlacklistItem } from '../../../shared/settings/Blacklist'; interface Props { value: Blacklist; onChange: (value: Blacklist) => void; onBlur: () => void; } class PartialBlacklistForm extends React.Component { public static defaultProps: Props = { value: new Blacklist([]), onChange: () => {}, onBlur: () => {}, }; render() { return
URL
Keys
{ this.props.value.items.map((item, index) => { if (!item.partial) { return null; } return
; }) }
; } bindValue(e: any) { const name = e.target.name; const index = e.target.getAttribute('data-index'); const items = this.props.value.items; if (name === 'url') { const current = items[index]; items[index] = new BlacklistItem(e.target.value, true, current.keys); } else if (name === 'keys') { const current = items[index]; items[index] = new BlacklistItem( current.pattern, true, e.target.value.split(',')); } else if (name === 'add') { items.push(new BlacklistItem('', true, [])); } else if (name === 'delete') { items.splice(index, 1); } this.props.onChange(new Blacklist(items)); if (name === 'delete') { this.props.onBlur(); } } } export default PartialBlacklistForm;