app/FieldControls/TagField.tsx (38 lines of code) (raw):
import React, { useState, useEffect } from "react";
import { FieldControlProps } from "./FieldControlsCommon";
import { FormControl, Typography } from "@material-ui/core";
import ChipInput from "material-ui-chip-input";
const TagField: React.FC<FieldControlProps> = (props) => {
return (
<FormControl classes={{ root: props.classes.inputField }}>
<ChipInput
value={props.maybeValues ?? []}
readOnly={
props.ignoreHintsReadonly
? false
: props.viewHints.readonly || props.parentReadonly
}
onAdd={(newtext) => {
props.valueDidChange(
props.fieldname,
props.maybeValues ? props.maybeValues.concat(newtext) : [newtext]
);
}}
onDelete={(newtext) =>
props.valueDidChange(
props.fieldname,
props.maybeValues
? props.maybeValues.filter((v) => v != newtext)
: []
)
}
label={props.viewHints.name}
/>
{props.viewHints.readonly &&
!props.parentReadonly &&
!props.ignoreHintsReadonly ? (
<Typography variant="caption">
You can't edit this, it's read-only
</Typography>
) : null}
</FormControl>
);
};
export default TagField;