Tag aliases (#1412)

* Add Tag Update/UpdateFull
* Tag alias implementation
* Refactor tag page
* Add aliases in UI
* Include tag aliases in q filter
* Include aliases in tag select
* Add aliases to auto-tagger
* Use aliases in scraper
* Add tag aliases for filename parser
This commit is contained in:
WithoutPants
2021-05-26 14:36:05 +10:00
committed by GitHub
parent 9b57fbbf50
commit c70faa2a53
48 changed files with 1303 additions and 315 deletions

View File

@@ -7,6 +7,7 @@ interface IStringListInputProps {
setValue: (value: string[]) => void;
defaultNewValue?: string;
className?: string;
errors?: string;
}
export const StringListInput: React.FC<IStringListInputProps> = (props) => {
@@ -32,29 +33,34 @@ export const StringListInput: React.FC<IStringListInputProps> = (props) => {
return (
<>
<Form.Group>
{props.value &&
props.value.map((v, i) => (
// eslint-disable-next-line react/no-array-index-key
<InputGroup className={props.className} key={i}>
<Form.Control
className="text-input"
value={v}
onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
valueChanged(i, e.currentTarget.value)
}
/>
<InputGroup.Append>
<Button variant="danger" onClick={() => removeValue(i)}>
<Icon icon="minus" />
</Button>
</InputGroup.Append>
</InputGroup>
))}
</Form.Group>
<Button className="minimal" onClick={() => addValue()}>
<Icon icon="plus" />
</Button>
<div className={props.errors && "is-invalid"}>
{props.value && props.value.length > 0 && (
<Form.Group>
{props.value &&
props.value.map((v, i) => (
// eslint-disable-next-line react/no-array-index-key
<InputGroup className={props.className} key={i}>
<Form.Control
className="text-input"
value={v}
onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
valueChanged(i, e.currentTarget.value)
}
/>
<InputGroup.Append>
<Button variant="danger" onClick={() => removeValue(i)}>
<Icon icon="minus" />
</Button>
</InputGroup.Append>
</InputGroup>
))}
</Form.Group>
)}
<Button className="minimal" size="sm" onClick={() => addValue()}>
<Icon icon="plus" />
</Button>
</div>
<div className="invalid-feedback">{props.errors}</div>
</>
);
};