0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-25 16:12:37 +00:00

Add click handler for readTags to open text input

Clicking on a readTag now converts that tag to a text input, and maintains the tag value.  It also closes any other open text inputs amongst the tags (but leaves the "new tag" input open).
This commit is contained in:
Gazook89
2024-09-17 23:50:59 -05:00
parent d5c5b4315b
commit 36aa4ea508

View File

@@ -7,13 +7,26 @@ const TagInput = ({unique = true, values = [], ...props})=>{
const [temporaryValue, setTemporaryValue] = useState('');
const [valueContext, setValueContext] = useState(values.map((value)=>({ value: value, editing : false })));
const readTag = (value)=>{
const editTag = (evt)=>{
setValueContext(valueContext.map((context)=>{
context.editing = context.value === evt.target.dataset.value ? true : false;
return context;
}))
}
const renderReadTag = (value)=>{
return (
<div className={`tag`}>{value}</div>
<div key={value}
data-value={value}
className={`tag`}
onClick={(evt)=>editTag(evt)}>
{value}
</div>
)
}
const writeTag = (value)=>{
const renderWriteTag = (value)=>{
return (
<input type='text' value={value} />
)
@@ -25,7 +38,7 @@ const TagInput = ({unique = true, values = [], ...props})=>{
<label>{props.label}</label>
<div className='list'>
{Object.values(valueContext).map((context, i)=>{ return context.editing ? writeTag(context.value) : readTag(context.value) })}
{Object.values(valueContext).map((context, i)=>{ return context.editing ? renderWriteTag(context.value) : renderReadTag(context.value) })}
<input type='text'
className={`value`}