Website text fields are implemented

This commit is contained in:
MuhammadKhalilzadeh
2024-05-07 17:32:35 +03:30
parent c4b4e567bd
commit d16b62a17e
3 changed files with 136 additions and 3 deletions

View File

@@ -1,8 +1,53 @@
import React from "react";
import React, { useState } from "react";
import "./websiteTextField.css";
import HelpOutlineIcon from "@mui/icons-material/HelpOutline";
import ContentCopyIcon from "@mui/icons-material/ContentCopy";
function WebsiteTextField() {
return <div>WebsiteTextField</div>;
function WebsiteTextField({
showHelp = true,
hasCopyButton = false,
hintText,
}) {
const [copied, setCopied] = useState(false);
const handleCopy = () => {
setCopied(true);
setTimeout(() => setCopied(false), 1000);
};
return (
<>
<div className="website-textfield">
<label className="website-label" htmlFor="website">
http://
</label>
<input
type="url"
name="website-url"
id="website-url"
className="website-url"
/>
{showHelp && (
<div
className={
`website-icon-holder ` + !hasCopyButton
? "with-no-copy-button"
: ""
}
>
<HelpOutlineIcon style={{ fill: "var(--icon-color)" }} />
</div>
)}
{hasCopyButton && (
<div className="copy-to-clipboard-button" onClick={handleCopy}>
<ContentCopyIcon className="copy-icon" />
<span>{copied ? " Copied " : " Copy "}</span>
</div>
)}
</div>
<label className="website-textfield-hint">{hintText}</label>
</>
);
}
export default WebsiteTextField;

View File

@@ -0,0 +1,78 @@
:root {
--border-color: #d0d5dd;
--label-font-color: #475467;
--icon-color: #98a2b3;
--text-field-margin-0: 10px 20px;
--text-field-margin-1: 10px 20px 5px;
--font-family: "Roboto", "Helvetica", "Arial", sans-serif;
}
.website-textfield {
font-family: var(--font-family);
display: flex;
align-items: center;
position: relative;
margin: var(--text-field-margin-1);
}
.website-textfield-hint {
margin: var(--text-field-margin-0);
font-family: var(--font-family);
font-size: 11px;
}
.website-label {
height: 33px;
padding: 5px 20px 5px 10px;
border: solid 1px var(--border-color);
border-right: none;
border-radius: 8px 0 0 8px;
font-size: 13px;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
color: var(--label-font-color);
}
.website-url {
width: 248px;
height: 33px;
padding: 5px 15px;
border: solid 1px var(--border-color);
}
.website-icon-holder {
width: 40px;
height: 33px;
padding: 5px;
border: solid 1px var(--border-color);
border-left: none;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
}
.copy-to-clipboard-button {
height: 33px;
padding: 5px 20px 5px 10px;
border: solid 1px var(--border-color);
border-left: none;
border-radius: 0 8px 8px 0;
font-size: 13px;
text-align: center;
display: flex;
justify-content: space-evenly;
align-items: center;
color: var(--label-font-color);
cursor: pointer;
}
.copy-icon {
margin-right: 10px;
}
.with-no-copy-button {
display: none;
}

View File

@@ -2,6 +2,7 @@ import React from "react";
import EmailTextField from "../../components/TextFields/Email/EmailTextField";
import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline";
import HelpOutlineIcon from "@mui/icons-material/HelpOutline";
import WebsiteTextField from "../../components/TextFields/Website/WebsiteTextField";
// This Component is just for the development and test
// purposes and just to see what my components look like while development
@@ -32,6 +33,15 @@ function PlayGround() {
icon={<HelpOutlineIcon />}
helperText="This is a hint text to help user."
/>
<br />
<hr />
{/* Now, illustration of the Website text fields */}
<br />
<WebsiteTextField hintText="This is a hint text to help user." />
<WebsiteTextField
hasCopyButton={true}
hintText="This is a hint text to help user."
/>
</div>
);
}