acl view done

This commit is contained in:
2024-03-27 16:27:26 +01:00
parent aa51380055
commit a8f4c84f60
5 changed files with 119 additions and 17 deletions

View File

@@ -7,7 +7,7 @@ import {
DialogContent,
DialogContentText,
DialogTitle,
Input, List, ListItem, TextField
List, ListItem, TextField
} from "@mui/material";
export default function Dialog(props) {
@@ -24,7 +24,9 @@ export default function Dialog(props) {
if (props.inputs) {
let initialData = {};
for (const input of props.inputs) {
initialData[input.name] = input.value || "";
if (input.type !== "label") {
initialData[input.name] = input.value || "";
}
}
setInputData(initialData);
}
@@ -47,6 +49,9 @@ export default function Dialog(props) {
delete inputProps.type;
switch (input.type) {
case 'label':
inputElements.push(<span {...inputProps}>{input.value}</span>);
break;
case 'text':
case 'password':
inputElements.push(<TextField
@@ -56,6 +61,7 @@ export default function Dialog(props) {
size={"small"} fullWidth={true}
key={"input-" + input.name}
value={inputData[input.name] || ""}
defaultValue={input.defaultValue || ""}
onChange={e => setInputData({ ...inputData, [input.name]: e.target.value })}
/>)
break;

View File

@@ -5,6 +5,7 @@ export default function useAsyncSearch(callback, minLength = 1) {
const [searchString, setSearchString] = useState("");
const [results, setResults] = useState(null);
const [isSearching, setSearching] = useState(false);
useEffect(() => {
if (minLength > 0 && (!searchString || searchString.length < minLength)) {
@@ -12,9 +13,13 @@ export default function useAsyncSearch(callback, minLength = 1) {
return;
}
callback(searchString).then(results => {
setResults(results || null);
});
if (!isSearching) {
setSearching(true);
callback(searchString).then(results => {
setResults(results || null);
setSearching(false);
});
}
}, [searchString]);
return [searchString, setSearchString, results];