review dropdown lolo

This commit is contained in:
Max S 2024-07-26 16:24:05 +02:00
parent 30af203045
commit d777d15db6
4 changed files with 77 additions and 48 deletions

View File

@ -1,45 +1,64 @@
@import "@Themes/constants.scss";
.root {
cursor: pointer;
height: 56px;
display: flex;
align-items: center;
padding: var(--spacing-2, 16px) var(--spacing-sm, 8px);
gap: var(--spacing-2, 16px);
border-radius: var(--input-radius, 0px);
border: 1px solid var(--dropdown-input-border-default, #d7dce0);
background: var(--dropdown-input-background, #fff);
.content {
width: 100%;
display: flex;
.label {
padding: 0px var(--spacing-2, 16px);
}
.container {
cursor: pointer;
display: flex;
align-items: center;
flex: 1 0 0;
}
height: 56px;
&:hover {
border-color: var(--dropdown-input-border-hovered);
}
padding: var(--spacing-2, 16px) var(--spacing-sm, 8px);
gap: var(--spacing-2, 16px);
&.active {
border-color: var(--dropdown-input-border-filled);
}
border-radius: var(--input-radius, 0px);
border: 1px solid var(--dropdown-input-border-default, #d7dce0);
background: var(--dropdown-input-background, #fff);
&.open {
border-color: var(--dropdown-input-border-expanded);
.content {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
height: 24px;
.value {
width: 100%;
display: flex;
padding: 0px var(--spacing-2, 16px);
align-items: center;
flex: 1 0 0;
}
svg {
transform: rotate(180deg);
svg {
width: 24px;
height: 24px;
cursor: pointer;
stroke: var(--button-icon-button-default-default);
}
}
&:hover {
border-color: var(--dropdown-input-border-hovered);
}
&.active {
border-color: var(--dropdown-input-border-filled);
}
&.open {
border-color: var(--dropdown-input-border-expanded);
svg {
transform: rotate(180deg);
}
}
&.disabled {
opacity: var(--opacity-disabled, 0.3);
pointer-events: none;
}
}
&.disabled {
opacity: var(--opacity-disabled, 0.3);
pointer-events: none;
}
}

View File

@ -3,7 +3,6 @@ import { ChevronDownIcon } from "@heroicons/react/24/outline";
import classNames from "classnames";
import { useCallback, useEffect, useState } from "react";
import IconButton from "../IconButton";
import Typography, { ETypo, ETypoColor } from "../Typography";
import classes from "./classes.module.scss";
import DropdownMenu from "./DropdownMenu";
@ -11,6 +10,7 @@ import { IOption } from "./DropdownMenu/DropdownOption";
type IProps = {
options: IOption[];
label?: string;
placeholder?: string;
disabled?: boolean;
onSelect?: (option: IOption) => void;
@ -36,22 +36,30 @@ export default function Dropdown(props: IProps) {
return (
<DropdownMenu options={options} openable={openable} onSelect={handleOnSelect} selectedOption={selectedOption}>
<div
className={classNames([
classes["root"],
openable.isOpen && classes["open"],
disabled && classes["disabled"],
!!selectedOption && classes["active"],
])}
onClick={openable.toggle}>
<div className={classes["content"]}>
<Typography
typo={ETypo.TEXT_MD_REGULAR}
color={!!selectedOption ? ETypoColor.DROPDOWN_CONTRAST_ACTIVE : ETypoColor.DROPDOWN_CONTRAST_DEFAULT}>
{getLabel(selectedOption) ?? placeholder}
<div className={classes["root"]}>
{props.label && (
<Typography className={classes["label"]} typo={ETypo.TEXT_MD_REGULAR} color={ETypoColor.CONTRAST_DEFAULT}>
{props.label}
</Typography>
)}
<div
className={classNames([
classes["container"],
openable.isOpen && classes["open"],
disabled && classes["disabled"],
!!selectedOption && classes["active"],
])}
onClick={openable.toggle}>
<div className={classes["content"]}>
<Typography
className={classes["value"]}
typo={!!selectedOption ? ETypo.TEXT_MD_SEMIBOLD : ETypo.TEXT_MD_REGULAR}
color={!!selectedOption ? ETypoColor.DROPDOWN_CONTRAST_ACTIVE : ETypoColor.DROPDOWN_CONTRAST_DEFAULT}>
{getLabel(selectedOption) ?? placeholder}
</Typography>
<ChevronDownIcon />
</div>
</div>
<IconButton icon={<ChevronDownIcon />} />
</div>
</DropdownMenu>
);

View File

@ -41,6 +41,7 @@
.input-container {
display: flex;
align-items: center;
flex: 1;
gap: 8px;
padding: 0px var(--spacing-2, 16px);

View File

@ -127,6 +127,7 @@ export default function DesignSystem() {
},
]}
placeholder="Placeholder"
label="Label"
/>
<Typography typo={ETypo.TEXT_LG_BOLD}>Navigation latérale</Typography>
<SearchBlockList