mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-12-06 13:34:13 +03:00
* Translation module init
* Add more i18n keys
* fix: fix string wrong
* refactor: use namespace translation file
* chore: add more translation key
* fix: fix some page name error
* refactor: change Trans tag for t function
* chore: fix some key not work
* chore: fix SearchFilterDialog i18n key error
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* chore: fix en i18n file filter missing some keys
* chore: add some i18n keys
* chore: add more i18n keys again
* feat: add search page i18n
* feat: add explore model i18n keys
* Update web/src/components/menu/GeneralSettings.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update web/src/components/menu/GeneralSettings.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update web/src/components/menu/GeneralSettings.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* feat: add more live i18n keys
* feat: add more search setting i18n keys
* fix: remove some comment
* fix: fix some setting page url error
* Update web/src/views/settings/SearchSettingsView.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* fix: add system missing keys
* fix: update password update i18n keys
* chore: remove outdate translation.json file
* fix: fix exploreSettings error
* chore: add object setting i18n keys
* Update web/src/views/recording/RecordingView.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update web/public/locales/en/components/filter.json
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update web/src/components/overlay/ExportDialog.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* feat: add more i18n keys
* fix: fix motionDetectionTuner html node
* feat: add more page i18n keys
* fix: cameraStream i18n keys error
* feat: add Player i18n keys
* feat: add more toast i18n keys
* feat: change explore setting name
* feat: add more document title i18n keys
* feat: add more search i18n keys
* fix: fix accessDenied i18n keys error
* chore: add objectType i18n
* chore: add inputWithTags i18n
* chore: add SearchFilterDialog i18n
* Update web/src/views/settings/ObjectSettingsView.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update web/src/views/settings/ObjectSettingsView.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update web/src/views/settings/ObjectSettingsView.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update web/src/views/settings/ObjectSettingsView.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update web/src/views/settings/ObjectSettingsView.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* chore: add some missing i18n keys
* chore: remove most import { t } from "i18next";
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import { useState } from "react";
|
|
import { Drawer, DrawerContent, DrawerTrigger } from "../ui/drawer";
|
|
import { Button } from "../ui/button";
|
|
import { FaVideo } from "react-icons/fa";
|
|
import { isMobile } from "react-device-detect";
|
|
import { useTranslation } from "react-i18next";
|
|
|
|
type MobileCameraDrawerProps = {
|
|
allCameras: string[];
|
|
selected: string;
|
|
onSelectCamera: (cam: string) => void;
|
|
};
|
|
export default function MobileCameraDrawer({
|
|
allCameras,
|
|
selected,
|
|
onSelectCamera,
|
|
}: MobileCameraDrawerProps) {
|
|
const { t } = useTranslation(["common"]);
|
|
const [cameraDrawer, setCameraDrawer] = useState(false);
|
|
|
|
if (!isMobile) {
|
|
return;
|
|
}
|
|
|
|
return (
|
|
<Drawer open={cameraDrawer} onOpenChange={setCameraDrawer}>
|
|
<DrawerTrigger asChild>
|
|
<Button
|
|
className="rounded-lg capitalize"
|
|
aria-label={t("menu.live.cameras")}
|
|
size="sm"
|
|
>
|
|
<FaVideo className="text-secondary-foreground" />
|
|
</Button>
|
|
</DrawerTrigger>
|
|
<DrawerContent className="mx-1 max-h-[75dvh] overflow-hidden rounded-t-2xl px-4">
|
|
<div className="scrollbar-container flex h-auto w-full flex-col items-center gap-2 overflow-y-auto overflow-x-hidden py-4">
|
|
{allCameras.map((cam) => (
|
|
<div
|
|
key={cam}
|
|
className={`mx-4 w-full py-2 text-center capitalize ${cam == selected ? "rounded-lg bg-secondary" : ""}`}
|
|
onClick={() => {
|
|
onSelectCamera(cam);
|
|
setCameraDrawer(false);
|
|
}}
|
|
>
|
|
{cam.replaceAll("_", " ")}
|
|
</div>
|
|
))}
|
|
</div>
|
|
</DrawerContent>
|
|
</Drawer>
|
|
);
|
|
}
|