gitscope
← marzneshin / v0.3.0-alpha11 / dashboard/src/features/users/dialogs/mutation/sections/data-limit.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/users/dialogs/mutation/sections/data-limit.tsx · TypeScript
Blame Raw
 1
 2import { FC, useEffect, useState } from "react";
 3import {
 4    Tabs,
 5    TabsTrigger,
 6    TabsContent,
 7    FormLabel
 8} from '@marzneshin/components';
 9import { useTranslation } from 'react-i18next';
10import {
11    DataLimitField,
12    DataLimitResetStrategyField,
13} from "../fields";
14import { TabsList } from "@radix-ui/react-tabs";
15import { useFormContext } from 'react-hook-form';
16
17export const DataLimitFields: FC = () => {
18    const form = useFormContext()
19
20    const { t } = useTranslation()
21    const [
22        selectedDataLimitTab,
23        setSelectedDataLimitTab
24    ] = useState<'limited' | 'unlimited' | string>('limited');
25    useEffect(() => {
26        if (selectedDataLimitTab === 'limited') {
27            form.setValue("data_limit", 1)
28            form.setValue("data_limit_reset_strategy", "no_reset");
29        } else {
30            form.setValue("data_limit", 0)
31            form.setValue("data_limit_reset_strategy", "no_reset");
32        }
33        // eslint-disable-next-line
34    }, [selectedDataLimitTab]);
35
36    return (
37        <>
38
39            <FormLabel>
40                {t('page.users.data_limit_method')}
41            </FormLabel>
42            <div className="flex gap-2 items-center w-full sm:flex-row md:flex-col">
43                <Tabs defaultValue="limited" onValueChange={setSelectedDataLimitTab} className="mt-2 w-full">
44                    <TabsList className="flex flex-row items-center p-1 w-full rounded-md bg-accent">
45                        <TabsTrigger
46                            className="w-full"
47                            value="limited">
48                            {t('page.users.limited')}
49                        </TabsTrigger>
50                        <TabsTrigger
51                            className="w-full"
52                            value="unlimited">
53                            {t('page.users.unlimited')}
54                        </TabsTrigger>
55                    </TabsList>
56                    <TabsContent value="limited">
57                        <DataLimitField />
58                        {form.watch().data_limit !== 0 && <DataLimitResetStrategyField />}
59                    </TabsContent>
60                </Tabs>
61            </div>
62        </>
63    )
64}