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