improve tag editor

pull/1898/head
Mikael Finstad 2 years ago
parent 9ea438052f
commit 3ec3384760
No known key found for this signature in database
GPG Key ID: 25AB36E3E81CBC26

@ -44,19 +44,21 @@ function TagEditor({ existingTags = emptyObject, customTags = emptyObject, editi
} }
}, [onTagsChange]); }, [onTagsChange]);
const onEditClick = useCallback((tag?: string) => { const saveTag = useCallback(() => {
if (newTag) {
invariant(editingTag != null); invariant(editingTag != null);
invariant(editingTagVal != null); invariant(editingTagVal != null);
onTagsChange({ [editingTag]: editingTagVal }); const editingValTransformed = editingTag === 'language' ? editingTagVal.toLowerCase() : editingTagVal;
onTagsChange({ [editingTag]: editingValTransformed });
setEditingTag(undefined); setEditingTag(undefined);
}, [editingTag, editingTagVal, onTagsChange, setEditingTag]);
const onEditClick = useCallback((tag?: string) => {
if (newTag) {
saveTag();
setNewTag(undefined); setNewTag(undefined);
} else if (editingTag != null) { } else if (editingTag != null) {
if (editingTagVal !== existingTags[editingTag]) { if (editingTagVal !== existingTags[editingTag]) {
invariant(editingTag != null); saveTag();
invariant(editingTagVal != null);
onTagsChange({ [editingTag]: editingTagVal });
setEditingTag(undefined);
} else { // If not actually changed, no need to update } else { // If not actually changed, no need to update
onResetClick(); onResetClick();
} }
@ -64,7 +66,7 @@ function TagEditor({ existingTags = emptyObject, customTags = emptyObject, editi
setEditingTag(tag); setEditingTag(tag);
setEditingTagVal(tag && String(mergedTags[tag])); setEditingTagVal(tag && String(mergedTags[tag]));
} }
}, [editingTag, editingTagVal, existingTags, mergedTags, newTag, onResetClick, onTagsChange, setEditingTag]); }, [editingTag, editingTagVal, existingTags, mergedTags, newTag, onResetClick, saveTag, setEditingTag]);
function onSubmit(e) { function onSubmit(e) {
e.preventDefault(); e.preventDefault();
@ -108,7 +110,7 @@ function TagEditor({ existingTags = emptyObject, customTags = emptyObject, editi
<td style={{ display: 'flex', alignItems: 'center' }}> <td style={{ display: 'flex', alignItems: 'center' }}>
{editingThis ? ( {editingThis ? (
<form style={{ display: 'inline' }} onSubmit={onSubmit}> <form style={{ display: 'inline' }} onSubmit={onSubmit}>
<TextInput ref={ref} placeholder={t('Enter value')} value={editingTagVal || ''} onChange={(e) => setEditingTagVal(e.target.value)} /> <TextInput ref={ref} placeholder={t('Enter value')} value={editingTagVal || ''} onChange={(e) => setEditingTagVal(e.target.value)} style={{ textTransform: editingTag === 'language' ? 'lowercase' : undefined }} />
</form> </form>
) : ( ) : (
<span style={{ padding: '.5em 0', color: thisTagCustom ? activeColor : undefined, fontWeight: thisTagCustom ? 'bold' : undefined }}>{mergedTags[tag] ? String(mergedTags[tag]) : `<${t('empty')}>`}</span> <span style={{ padding: '.5em 0', color: thisTagCustom ? activeColor : undefined, fontWeight: thisTagCustom ? 'bold' : undefined }}>{mergedTags[tag] ? String(mergedTags[tag]) : `<${t('empty')}>`}</span>

Loading…
Cancel
Save