Page almost done

This commit is contained in:
Maxime Lalo 2023-04-17 16:49:00 +02:00
parent 0df26d7c9d
commit d500973316
9 changed files with 110 additions and 22 deletions

View File

@ -28,14 +28,12 @@
&:focus {
~ .fake-placeholder {
transform: translateY(-35px);
transition: transform 0.3s ease-in-out;
}
}
&:not([value=""]) {
&:not([data-value=""]) {
~ .fake-placeholder {
transform: translateY(-35px);
transition: transform;
}
}
@ -43,14 +41,12 @@
&:focus {
~ .fake-placeholder {
transform: translateY(-35px);
transition: transform 0.3s ease-in-out;
}
}
&:not([value=""]) {
&:not([data-value=""]) {
~ .fake-placeholder {
transform: translateY(-35px);
transition: transform;
}
}
@ -75,10 +71,9 @@
}
}
&:not([value=""]) {
&:not([data-value=""]) {
~ .fake-placeholder {
transform: translateY(-35px);
transition: transform 0.3s ease-in-out;
}
}
@ -90,6 +85,7 @@
pointer-events: none;
position: absolute;
background: $white;
transition: transform 0.3s ease-in-out;
}
}
}
@ -114,6 +110,19 @@
pointer-events: none;
position: absolute;
background: $white;
// transform: translateY(-35px);
transform: translateY(35px);
transition: transform 0.3s ease-in-out;
}
&:focus {
~ .fake-placeholder {
transform: translateY(0px);
}
}
&:not([data-value=""]) {
~ .fake-placeholder {
transform: translateY(0px);
}
}
}

View File

@ -40,7 +40,7 @@ export default class InputField extends BaseField<IProps> {
required={this.props.required}
ref={this.props.fieldRef}
rows={4}
value={value}
data-value={value}
onChange={this.onChange}
data-has-validation-errors={this.state.errors.length > 0}
className={
@ -61,7 +61,7 @@ export default class InputField extends BaseField<IProps> {
pattern={pattern}
onChange={this.onChange}
onBlur={this.onBlur}
value={value}
data-value={value}
data-has-validation-errors={this.state.errors.length > 0}
className={
this.props.className ? [classes["input"], classes[this.props.className]].join(" ") : classes["input"]

View File

@ -14,7 +14,7 @@ type IProps = {
export default class RadioBox extends React.Component<IProps> {
public override render(): JSX.Element {
return (
<Typography typo={ITypo.P_ERR_16} color={ITypoColor.BLACK}>
<Typography typo={ITypo.P_ERR_18} color={ITypoColor.BLACK}>
<label className={classes["root"]}>
<input type="radio" name={this.props.name} defaultChecked={this.props.defaultChecked} onChange={this.props.onChange} />
{this.props.children}

View File

@ -125,4 +125,8 @@
&.black {
color: $black;
}
&.purple-flash {
color: var(--purple-flash);
}
}

View File

@ -6,6 +6,7 @@ type IProps = {
typo: ITypo;
children: React.ReactNode;
color?: ITypoColor;
className?: string;
};
type IState = {};
@ -33,12 +34,19 @@ export enum ITypoColor {
RE_HOVER = "re-hover",
GREY = "grey",
BLACK = "black",
PURPLE_FLASH = "purple-flash",
}
export default class Typography extends React.Component<IProps, IState> {
public override render(): JSX.Element {
return (
<div className={classNames(classes["root"], classes[this.props.typo], classes[this.props.color ?? ""])}>
<div
className={classNames(
classes["root"],
classes[this.props.typo],
classes[this.props.color ?? ""],
this.props.className ?? "",
)}>
{this.props.children}
</div>
);

View File

@ -9,6 +9,10 @@
display: flex;
height: calc(100vh - 83px);
.side-left {
max-height: 100vh;
overflow: auto;
}
.sides {
width: 50%;

View File

@ -29,7 +29,7 @@ export default class DefaultDoubleSidePage extends React.Component<IProps, IStat
<div className={classes["root"]}>
<Header isUserConnected={false} />
<div className={classes["content"]}>
<div className={classes["sides"]}>{this.props.children}</div>
<div className={classNames(classes["sides"], classes["side-left"])}>{this.props.children}</div>
{this.props.type === "image" && (
<div className={classNames(classes["sides"], classes["image-container"])}>
<Image alt={"right side image"} src={this.props.image} className={classes["image"]} />

View File

@ -1,3 +1,29 @@
.root {
margin: 64px 0 0 64px;
width: 530px;
.title {
margin-top: 24px;
}
.subtitle {
margin-top: 32px;
}
.form-container {
margin-top: 16px;
display: flex;
flex-direction: column;
gap: 24px;
}
.access-container {
margin-top: 16px;
.radio-container {
margin-top: 16px;
display: flex;
flex-direction: column;
gap: 16px;
}
}
}

View File

@ -4,6 +4,10 @@ import classes from "./classes.module.scss";
import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage";
import RightImage from "@Front/Assets/images/create-folder/right-image.png";
import BackArrow from "@Front/Components/Elements/BackArrow";
import Form from "@Front/Components/DesignSystem/Form";
import InputField from "@Front/Components/DesignSystem/Form/Elements/InputField";
import Select from "@Front/Components/DesignSystem/Select";
import RadioBox from "@Front/Components/DesignSystem/RadioBox";
type IProps = {};
type IState = {};
@ -18,6 +22,39 @@ export default class CreateFolder extends BasePage<IProps, IState> {
<DefaultDoubleSidePage title={"Dossier"} image={RightImage} type="image">
<div className={classes["root"]}>
<BackArrow url="/" />
<Typography typo={ITypo.H1} color={ITypoColor.BLACK} className={classes["title"]}>
Créer un dossier
</Typography>
<Typography typo={ITypo.H3} color={ITypoColor.PURPLE_FLASH} className={classes["subtitle"]}>
Informations dossier
</Typography>
<Form>
<div className={classes["form-container"]}>
<InputField name="folder_number" fakeplaceholder="Numéro de dossier" type="number" />
<InputField name="entitled" fakeplaceholder="Intitulé" />
<Select
options={[
{ label: "Divorce", value: "divorce" },
{ label: "Succession", value: "succession" },
{ label: "Vente immobilière", value: "vente_immobiliere" },
]}
onChange={() => {}}
placeholder={"Type dacte"}
/>
<InputField name="personal_note" fakeplaceholder="Note personnelle" textarea />
</div>
<div className={classes["access-container"]}>
<Typography typo={ITypo.H3} color={ITypoColor.PURPLE_FLASH}>
Accès au dossier
</Typography>
<div className={classes["radio-container"]}>
<RadioBox name="file_access" defaultChecked>
Sélectionner tout l'office
</RadioBox>
<RadioBox name="file_access">Sélectionner certains collaborateurs</RadioBox>
</div>
</div>
</Form>
</div>
</DefaultDoubleSidePage>
);