refactor: Update TextModal to use TextEditorArea for text input

This commit is contained in:
anovazzi1 2024-06-21 18:01:18 -03:00 • committed by Gabriel Luiz Freitas Almeida
commit cd02755f7d
5 changed files with 31 additions and 24 deletions

View file

@ -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>
); );

View file

@ -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} />;

View file

@ -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;

View file

@ -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>

View file

@ -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);
} }
}; };