mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-11-01 15:00:36 +01:00
sub menus
This commit is contained in:
1 parent
5df53458fd
commit
23fc2510da
3 files changed
+52
-23
No files matched your search
@@ -1,4 +1,5 @@
|
||||
.Content {
|
||||
.Content,
|
||||
.SubContent {
|
||||
--gutter: var(--space-5);
|
||||
|
||||
min-width: min(calc(100dvw - 2 * var(--space-4)), 16rem);
|
||||
@@ -13,8 +14,7 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
margin-top: var(--space-3);
|
||||
margin-right: var(--space-4);
|
||||
margin: var(--space-4);
|
||||
|
||||
box-shadow: var(--shadow-subtle);
|
||||
border-radius: var(--space-3);
|
||||
@@ -47,7 +47,8 @@
|
||||
|
||||
.Item,
|
||||
.CheckboxItem,
|
||||
.RadioItem {
|
||||
.RadioItem,
|
||||
.SubTrigger {
|
||||
position: relative;
|
||||
|
||||
background-color: var(--gray-3);
|
||||
@@ -70,8 +71,8 @@
|
||||
background-color: var(--gray-5);
|
||||
}
|
||||
|
||||
& + & {
|
||||
border-top: var(--space-1) solid var(--gray-2);
|
||||
&:not(:last-child) {
|
||||
border-bottom: var(--space-1) solid var(--gray-2);
|
||||
}
|
||||
|
||||
img,
|
||||
|
||||
@@ -10,7 +10,7 @@ import { useStrings } from "../../hooks/useStrings";
|
||||
import { TankFilters } from "../../stores/tankFilters";
|
||||
import type { MaybeSkeletonComponentProps } from "../../types/maybeSkeletonComponentProps";
|
||||
import { Flex } from "../Flex";
|
||||
import { Sort } from "../TankSearch/components/Sort";
|
||||
import { TankSearchSort } from "../TankSearchSort";
|
||||
import { TextField } from "../TextField";
|
||||
|
||||
type SearchBarProps = MaybeSkeletonComponentProps & {
|
||||
@@ -74,7 +74,7 @@ export function TankSearchBar({
|
||||
<MagnifyingGlassIcon />
|
||||
</TextField>
|
||||
|
||||
<Sort />
|
||||
<TankSearchSort />
|
||||
</Flex>
|
||||
);
|
||||
}
|
||||
+43
-15
@@ -1,12 +1,16 @@
|
||||
import { CaretDownIcon } from "@radix-ui/react-icons";
|
||||
import { characteristicsGroups } from "../../../config/characteristicsGroups";
|
||||
import { useStrings } from "../../../hooks/useStrings";
|
||||
import { TankopediaSortDirection } from "../../../stores/tankopediaPersistent";
|
||||
import { TankSort } from "../../../stores/tankopediaSort";
|
||||
import { sortableCharacteristics } from "../../../tankopedia/sortableCharacteristics";
|
||||
import type { CharacteristicName } from "../../../types/characteristics";
|
||||
import { Button } from "../../Button";
|
||||
import { DropdownMenu } from "../../DropdownMenu";
|
||||
import {
|
||||
CaretDownIcon,
|
||||
CaretRightIcon,
|
||||
DotFilledIcon,
|
||||
} from "@radix-ui/react-icons";
|
||||
import { characteristicsGroups } from "../config/characteristicsGroups";
|
||||
import { useStrings } from "../hooks/useStrings";
|
||||
import { TankopediaSortDirection } from "../stores/tankopediaPersistent";
|
||||
import { TankSort } from "../stores/tankopediaSort";
|
||||
import { sortableCharacteristics } from "../tankopedia/sortableCharacteristics";
|
||||
import type { CharacteristicName } from "../types/characteristics";
|
||||
import { Button } from "./Button";
|
||||
import { DropdownMenu } from "./DropdownMenu";
|
||||
|
||||
interface ItemProps {
|
||||
by: CharacteristicName;
|
||||
@@ -25,12 +29,16 @@ function Item({ by }: ItemProps) {
|
||||
});
|
||||
}}
|
||||
>
|
||||
<DropdownMenu.ItemIndicator>
|
||||
<DotFilledIcon />
|
||||
</DropdownMenu.ItemIndicator>
|
||||
|
||||
{strings.tanks.characteristics.items[by]}
|
||||
</DropdownMenu.CheckboxItem>
|
||||
);
|
||||
}
|
||||
|
||||
export function Sort() {
|
||||
export function TankSearchSort() {
|
||||
const by = TankSort.use((state) => state.by);
|
||||
const direction = TankSort.use((state) => state.direction);
|
||||
const strings = useStrings();
|
||||
@@ -46,7 +54,7 @@ export function Sort() {
|
||||
|
||||
<DropdownMenu.Content align="end">
|
||||
<DropdownMenu.Label>
|
||||
{strings.website.common.tank_search.sort.direction.label}
|
||||
{strings.website.common.tank_search.sort.by}
|
||||
</DropdownMenu.Label>
|
||||
|
||||
<DropdownMenu.CheckboxItem
|
||||
@@ -57,6 +65,10 @@ export function Sort() {
|
||||
});
|
||||
}}
|
||||
>
|
||||
<DropdownMenu.ItemIndicator>
|
||||
<DotFilledIcon />
|
||||
</DropdownMenu.ItemIndicator>
|
||||
|
||||
{strings.website.common.tank_search.sort.none}
|
||||
</DropdownMenu.CheckboxItem>
|
||||
|
||||
@@ -76,6 +88,8 @@ export function Sort() {
|
||||
>
|
||||
)[group.name]
|
||||
}
|
||||
|
||||
<CaretRightIcon />
|
||||
</DropdownMenu.SubTrigger>
|
||||
|
||||
<DropdownMenu.SubContent>
|
||||
@@ -93,8 +107,10 @@ export function Sort() {
|
||||
{strings.website.common.tank_search.sort.direction.label}
|
||||
</DropdownMenu.Label>
|
||||
<DropdownMenu.RadioGroup
|
||||
value={direction}
|
||||
onValueChange={(value) => {
|
||||
value={`${direction}`}
|
||||
onValueChange={(_value) => {
|
||||
const value = Number(_value);
|
||||
|
||||
if (
|
||||
value !== TankopediaSortDirection.Ascending &&
|
||||
value !== TankopediaSortDirection.Descending
|
||||
@@ -107,10 +123,22 @@ export function Sort() {
|
||||
});
|
||||
}}
|
||||
>
|
||||
<DropdownMenu.RadioItem value={TankopediaSortDirection.Ascending}>
|
||||
<DropdownMenu.RadioItem
|
||||
value={`${TankopediaSortDirection.Ascending}`}
|
||||
>
|
||||
<DropdownMenu.ItemIndicator>
|
||||
<DotFilledIcon />
|
||||
</DropdownMenu.ItemIndicator>
|
||||
|
||||
{strings.website.common.tank_search.sort.direction.ascending}
|
||||
</DropdownMenu.RadioItem>
|
||||
<DropdownMenu.RadioItem value={TankopediaSortDirection.Descending}>
|
||||
<DropdownMenu.RadioItem
|
||||
value={`${TankopediaSortDirection.Descending}`}
|
||||
>
|
||||
<DropdownMenu.ItemIndicator>
|
||||
<DotFilledIcon />
|
||||
</DropdownMenu.ItemIndicator>
|
||||
|
||||
{strings.website.common.tank_search.sort.direction.descending}
|
||||
</DropdownMenu.RadioItem>
|
||||
</DropdownMenu.RadioGroup>
|
||||
Reference in new issue
Block a user