Implement SearchFilterCheckboxItem component
This commit is contained in:
parent
9a6ad1a74d
commit
b8b6f3231b
2 changed files with 75 additions and 0 deletions
41
components/SearchFilterCheckboxItem/index.scss
Normal file
41
components/SearchFilterCheckboxItem/index.scss
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
.Item {
|
||||
align-items: center;
|
||||
border-radius: calc($unit / 2);
|
||||
color: $grey-40;
|
||||
font-size: $font-regular;
|
||||
line-height: 1.2;
|
||||
min-width: 100px;
|
||||
position: relative;
|
||||
padding: $unit;
|
||||
padding-left: $unit * 3;
|
||||
|
||||
&:hover {
|
||||
background: $grey-90;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&[data-state="checked"] {
|
||||
background: $grey-90;
|
||||
|
||||
svg {
|
||||
fill: $grey-50;
|
||||
}
|
||||
}
|
||||
|
||||
.Indicator {
|
||||
$diameter: 18px;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
left: calc($unit / 2);
|
||||
height: $diameter;
|
||||
width: $diameter;
|
||||
|
||||
svg {
|
||||
height: $diameter;
|
||||
width: $diameter;
|
||||
}
|
||||
}
|
||||
}
|
||||
34
components/SearchFilterCheckboxItem/index.tsx
Normal file
34
components/SearchFilterCheckboxItem/index.tsx
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
import React from 'react'
|
||||
|
||||
import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
|
||||
|
||||
import CheckIcon from '~public/icons/Check.svg'
|
||||
import './index.scss'
|
||||
|
||||
interface Props {
|
||||
checked?: boolean
|
||||
valueKey: string
|
||||
onCheckedChange: (open: boolean, key: string) => void
|
||||
children: React.ReactNode
|
||||
}
|
||||
|
||||
const SearchFilterCheckboxItem = (props: Props) => {
|
||||
function handleCheckedChange(checked: boolean) {
|
||||
props.onCheckedChange(checked, props.valueKey)
|
||||
}
|
||||
|
||||
return (
|
||||
<DropdownMenu.CheckboxItem
|
||||
className="Item"
|
||||
checked={props.checked || false}
|
||||
onCheckedChange={handleCheckedChange}
|
||||
onSelect={ (event) => event.preventDefault() }>
|
||||
<DropdownMenu.ItemIndicator className="Indicator">
|
||||
<CheckIcon />
|
||||
</DropdownMenu.ItemIndicator>
|
||||
{props.children}
|
||||
</DropdownMenu.CheckboxItem>
|
||||
)
|
||||
}
|
||||
|
||||
export default SearchFilterCheckboxItem
|
||||
Loading…
Reference in a new issue