mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-31 20:34:53 +03:00
parent
f29ee53fb4
commit
614a6b39d4
@ -125,17 +125,23 @@ export default function ClassificationSelectionDialog({
|
|||||||
isMobile && "gap-2 pb-4",
|
isMobile && "gap-2 pb-4",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{classes.sort().map((category) => (
|
{classes
|
||||||
<SelectorItem
|
.sort((a, b) => {
|
||||||
key={category}
|
if (a === "none") return 1;
|
||||||
className="flex cursor-pointer gap-2 smart-capitalize"
|
if (b === "none") return -1;
|
||||||
onClick={() => onCategorizeImage(category)}
|
return a.localeCompare(b);
|
||||||
>
|
})
|
||||||
{category === "none"
|
.map((category) => (
|
||||||
? t("details.none")
|
<SelectorItem
|
||||||
: category.replaceAll("_", " ")}
|
key={category}
|
||||||
</SelectorItem>
|
className="flex cursor-pointer gap-2 smart-capitalize"
|
||||||
))}
|
onClick={() => onCategorizeImage(category)}
|
||||||
|
>
|
||||||
|
{category === "none"
|
||||||
|
? t("details.none")
|
||||||
|
: category.replaceAll("_", " ")}
|
||||||
|
</SelectorItem>
|
||||||
|
))}
|
||||||
<Separator />
|
<Separator />
|
||||||
<SelectorItem
|
<SelectorItem
|
||||||
className="flex cursor-pointer gap-2 smart-capitalize"
|
className="flex cursor-pointer gap-2 smart-capitalize"
|
||||||
|
|||||||
@ -700,66 +700,72 @@ function LibrarySelector({
|
|||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{Object.keys(dataset).map((id) => (
|
{Object.keys(dataset)
|
||||||
<DropdownMenuItem
|
.sort((a, b) => {
|
||||||
key={id}
|
if (a === "none") return 1;
|
||||||
className="group flex items-center justify-between"
|
if (b === "none") return -1;
|
||||||
>
|
return a.localeCompare(b);
|
||||||
<div
|
})
|
||||||
className="flex-grow cursor-pointer capitalize"
|
.map((id) => (
|
||||||
onClick={() => setPageToggle(id)}
|
<DropdownMenuItem
|
||||||
|
key={id}
|
||||||
|
className="group flex items-center justify-between"
|
||||||
>
|
>
|
||||||
{id === "none" ? t("details.none") : id.replaceAll("_", " ")}
|
<div
|
||||||
<span className="ml-2 text-muted-foreground">
|
className="flex-grow cursor-pointer capitalize"
|
||||||
({dataset?.[id].length})
|
onClick={() => setPageToggle(id)}
|
||||||
</span>
|
>
|
||||||
</div>
|
{id === "none" ? t("details.none") : id.replaceAll("_", " ")}
|
||||||
{id != "none" && (
|
<span className="ml-2 text-muted-foreground">
|
||||||
<div className="flex gap-0.5">
|
({dataset?.[id].length})
|
||||||
<Tooltip>
|
</span>
|
||||||
<TooltipTrigger asChild>
|
|
||||||
<Button
|
|
||||||
variant="ghost"
|
|
||||||
size="icon"
|
|
||||||
className="size-7 lg:opacity-0 lg:transition-opacity lg:group-hover:opacity-100"
|
|
||||||
onClick={(e) => {
|
|
||||||
e.stopPropagation();
|
|
||||||
setRenameClass(id);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<LuPencil className="size-4 text-primary" />
|
|
||||||
</Button>
|
|
||||||
</TooltipTrigger>
|
|
||||||
<TooltipPortal>
|
|
||||||
<TooltipContent>
|
|
||||||
{t("button.renameCategory")}
|
|
||||||
</TooltipContent>
|
|
||||||
</TooltipPortal>
|
|
||||||
</Tooltip>
|
|
||||||
<Tooltip>
|
|
||||||
<TooltipTrigger asChild>
|
|
||||||
<Button
|
|
||||||
variant="ghost"
|
|
||||||
size="icon"
|
|
||||||
className="size-7 lg:opacity-0 lg:transition-opacity lg:group-hover:opacity-100"
|
|
||||||
onClick={(e) => {
|
|
||||||
e.stopPropagation();
|
|
||||||
setConfirmDelete(id);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<LuTrash2 className="size-4 text-destructive" />
|
|
||||||
</Button>
|
|
||||||
</TooltipTrigger>
|
|
||||||
<TooltipPortal>
|
|
||||||
<TooltipContent>
|
|
||||||
{t("button.deleteCategory")}
|
|
||||||
</TooltipContent>
|
|
||||||
</TooltipPortal>
|
|
||||||
</Tooltip>
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
{id != "none" && (
|
||||||
</DropdownMenuItem>
|
<div className="flex gap-0.5">
|
||||||
))}
|
<Tooltip>
|
||||||
|
<TooltipTrigger asChild>
|
||||||
|
<Button
|
||||||
|
variant="ghost"
|
||||||
|
size="icon"
|
||||||
|
className="size-7 lg:opacity-0 lg:transition-opacity lg:group-hover:opacity-100"
|
||||||
|
onClick={(e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
setRenameClass(id);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<LuPencil className="size-4 text-primary" />
|
||||||
|
</Button>
|
||||||
|
</TooltipTrigger>
|
||||||
|
<TooltipPortal>
|
||||||
|
<TooltipContent>
|
||||||
|
{t("button.renameCategory")}
|
||||||
|
</TooltipContent>
|
||||||
|
</TooltipPortal>
|
||||||
|
</Tooltip>
|
||||||
|
<Tooltip>
|
||||||
|
<TooltipTrigger asChild>
|
||||||
|
<Button
|
||||||
|
variant="ghost"
|
||||||
|
size="icon"
|
||||||
|
className="size-7 lg:opacity-0 lg:transition-opacity lg:group-hover:opacity-100"
|
||||||
|
onClick={(e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
setConfirmDelete(id);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<LuTrash2 className="size-4 text-destructive" />
|
||||||
|
</Button>
|
||||||
|
</TooltipTrigger>
|
||||||
|
<TooltipPortal>
|
||||||
|
<TooltipContent>
|
||||||
|
{t("button.deleteCategory")}
|
||||||
|
</TooltipContent>
|
||||||
|
</TooltipPortal>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</DropdownMenuItem>
|
||||||
|
))}
|
||||||
</DropdownMenuContent>
|
</DropdownMenuContent>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
</>
|
</>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user