refactor: Update TextModal to use TextEditorArea for text input
This commit is contained in:
parent
370f2dff6b
commit
cd02755f7d
5 changed files with 31 additions and 24 deletions
|
|
@ -1,14 +1,17 @@
|
||||||
|
import { ColDef, Column } from "ag-grid-community";
|
||||||
import TextModal from "../../modals/textModal";
|
import TextModal from "../../modals/textModal";
|
||||||
|
|
||||||
export default function StringReader({
|
export default function StringReader({
|
||||||
string,
|
string,
|
||||||
setValue,
|
setValue,
|
||||||
|
editable=false,
|
||||||
}: {
|
}: {
|
||||||
string: string;
|
string: string;
|
||||||
setValue: (value: string) => void;
|
setValue: (value: string) => void;
|
||||||
|
editable: boolean;
|
||||||
}): JSX.Element {
|
}): JSX.Element {
|
||||||
return (
|
return (
|
||||||
<TextModal setValue={setValue} value={string}>
|
<TextModal editable={editable} setValue={setValue} value={string}>
|
||||||
<span className="truncate">{string}</span>
|
<span className="truncate">{string}</span>
|
||||||
</TextModal>
|
</TextModal>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import { Badge } from "../../../ui/badge";
|
||||||
export default function TableAutoCellRender({
|
export default function TableAutoCellRender({
|
||||||
value,
|
value,
|
||||||
setValue,
|
setValue,
|
||||||
|
colDef,
|
||||||
}: CustomCellRendererProps) {
|
}: CustomCellRendererProps) {
|
||||||
function getCellType() {
|
function getCellType() {
|
||||||
switch (typeof value) {
|
switch (typeof value) {
|
||||||
|
|
@ -50,7 +51,7 @@ export default function TableAutoCellRender({
|
||||||
</Badge>
|
</Badge>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return <StringReader setValue={setValue!} string={value} />;
|
return <StringReader editable={!!colDef?.onCellValueChanged} setValue={setValue!} string={value} />;
|
||||||
}
|
}
|
||||||
case "number":
|
case "number":
|
||||||
return <NumberReader number={value} />;
|
return <NumberReader number={value} />;
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,19 @@
|
||||||
import { Textarea } from "../../../../components/ui/textarea";
|
import { Textarea } from "../../../../components/ui/textarea";
|
||||||
|
|
||||||
const TextEditorArea = ({ left, value,onChange }:{left:boolean|undefined,value:any,onChange?:(string)=>void;}) => {
|
const TextEditorArea = ({ left, value, onChange,readonly }: { left: boolean | undefined, value: any, onChange?: (string) => void; readonly:boolean}) => {
|
||||||
if (typeof value === "object" && Object.keys(value).includes("text")) {
|
if (typeof value === "object" && Object.keys(value).includes("text")) {
|
||||||
value = value.text;
|
value = value.text;
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<Textarea
|
<Textarea
|
||||||
className={`w-full custom-scroll ${left ? "min-h-32" : "h-full"}`}
|
readOnly={readonly}
|
||||||
placeholder={"Empty"}
|
className={`w-full custom-scroll ${left ? "min-h-32" : "h-full"}`}
|
||||||
// update to real value on flowPool
|
placeholder={"Empty"}
|
||||||
value={value}
|
// update to real value on flowPool
|
||||||
onChange={(e) => {if(onChange) onChange(e.target.value)}}
|
value={value}
|
||||||
/>
|
onChange={(e) => { if (onChange) onChange(e.target.value) }}
|
||||||
);
|
/>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default TextEditorArea;
|
export default TextEditorArea;
|
||||||
|
|
|
||||||
|
|
@ -24,10 +24,12 @@ export default function TextModal({
|
||||||
children,
|
children,
|
||||||
value,
|
value,
|
||||||
setValue,
|
setValue,
|
||||||
|
editable = false
|
||||||
}: {
|
}: {
|
||||||
children: JSX.Element;
|
children: JSX.Element;
|
||||||
value: string;
|
value: string;
|
||||||
setValue: (value: string) => void;
|
setValue: (value: string) => void;
|
||||||
|
editable?: boolean;
|
||||||
}): JSX.Element {
|
}): JSX.Element {
|
||||||
const [open, setOpen] = useState(false);
|
const [open, setOpen] = useState(false);
|
||||||
const [internalValue, setInternalValue] = useState(value);
|
const [internalValue, setInternalValue] = useState(value);
|
||||||
|
|
@ -46,18 +48,18 @@ export default function TextModal({
|
||||||
<BaseModal.Content>
|
<BaseModal.Content>
|
||||||
<div className="flex h-full w-full flex-col transition-all">
|
<div className="flex h-full w-full flex-col transition-all">
|
||||||
<div className="h-[370px]">
|
<div className="h-[370px]">
|
||||||
<TextEditorArea onChange={(text)=>setInternalValue(text)} value={internalValue} left={false} />
|
<TextEditorArea readonly={!editable} onChange={(text) => setInternalValue(text)} value={internalValue} left={false} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</BaseModal.Content>
|
</BaseModal.Content>
|
||||||
<BaseModal.Footer>
|
<BaseModal.Footer>
|
||||||
<div className="flex w-full justify-end gap-2 pt-2">
|
<div className="flex w-full justify-end gap-2 pt-2">
|
||||||
<Button className="flex gap-2 px-3" onClick={() => {
|
{editable && <Button className="flex gap-2 px-3" onClick={() => {
|
||||||
setValue(internalValue);
|
setValue(internalValue);
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
}}>
|
}}>
|
||||||
Save
|
Save
|
||||||
</Button>
|
</Button>}
|
||||||
<Button className="flex gap-2 px-3" onClick={() => setOpen(false)}>
|
<Button className="flex gap-2 px-3" onClick={() => setOpen(false)}>
|
||||||
Close
|
Close
|
||||||
</Button>
|
</Button>
|
||||||
|
|
|
||||||
|
|
@ -12,14 +12,14 @@ const useUpdateMessage = (setSuccessData, setErrorData) => {
|
||||||
updateMessage(data);
|
updateMessage(data);
|
||||||
|
|
||||||
// Set success message
|
// Set success message
|
||||||
// setSuccessData({
|
setSuccessData({
|
||||||
// title: "Messages updated successfully.",
|
title: "Messages updated successfully.",
|
||||||
// });
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Set error message
|
// Set error message
|
||||||
// setErrorData({
|
setErrorData({
|
||||||
// title: "Error updating messages.",
|
title: "Error updating messages.",
|
||||||
// });
|
});
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue