Adding Signature link, need a destination

This commit is contained in:
2025-05-15 01:52:58 +02:00
parent f0b241f37d
commit d2bea9180a

View File

@@ -1,7 +1,10 @@
import React from "react"; import React from "react";
import { getDefaultRegistry } from "@rjsf/core"; import { getDefaultRegistry } from "@rjsf/core";
import { FormContextType, RJSFSchema, WidgetProps } from "@rjsf/utils"; import { FormContextType, RJSFSchema, WidgetProps } from "@rjsf/utils";
import { Button, InputAdornment } from "@mui/material";
import Typography from "@mui/material/Typography"; import Typography from "@mui/material/Typography";
import TextField from "@mui/material/TextField";
import CopyAllIcon from '@mui/icons-material/CopyAll';
import ForeignKeyWidget from "./foreign-key"; import ForeignKeyWidget from "./foreign-key";
import RichtextWidget from "./richtext"; import RichtextWidget from "./richtext";
@@ -18,8 +21,37 @@ export default function CrudTextWidget<T = any, S extends CrudTextRJSFSchema = C
return <Typography >{schema.const as string}</Typography>; return <Typography >{schema.const as string}</Typography>;
} else if (schema.props?.hasOwnProperty("richtext")) { } else if (schema.props?.hasOwnProperty("richtext")) {
return <RichtextWidget {...props} />; return <RichtextWidget {...props} />;
} else if (schema.props?.hasOwnProperty("display") && schema.props.display == "signature-link") {
return <SignatureLink {...props} />
} else { } else {
const { widgets: { TextWidget } } = getDefaultRegistry<T,S,F>(); const { widgets: { TextWidget } } = getDefaultRegistry<T,S,F>();
return <TextWidget {...props} />; return <TextWidget {...props} />;
} }
} }
const SignatureLink = <T = any, S extends CrudTextRJSFSchema = CrudTextRJSFSchema, F extends FormContextType = any>(props: WidgetProps<T, S, F> )=> {
const { label, value } = props;
const basePath = "/contracts/signature/";
const url = location.origin + basePath + value
return <TextField
label={ label }
variant="outlined"
disabled={true}
value={url}
slotProps={{
input: {
endAdornment: (
<InputAdornment position="end">
<Button
variant="outlined"
onClick={() => navigator.clipboard.writeText(url)}
color="primary"
>
<CopyAllIcon />
</Button>
</InputAdornment>),
},
}}
/>
}