← marzneshin
/
v0.4.0
/
dashboard/src/features/users/components/dialogs/mutation/sections/expiration-method/use-expiration-method-tabs.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/users/components/dialogs/mutation/sections/expiration-method/use-expiration-method-tabs.ts
· TypeScript
Blame
Raw
1import { UserMutationType, ExpireStrategy } from "@marzneshin/features/users";
2import { useState, useEffect } from "react";
3import { useFormContext } from "react-hook-form";
4import { strategies } from "./expiration-method.strategy"
5
6
7export const useExpirationMethodTabs = (entity: UserMutationType | null) => {
8 const form = useFormContext();
9
10 const [
11 selectedExpirationMethodTab,
12 setSelectedExpirationMethodTab
13 ] = useState<ExpireStrategy>(entity ? entity.expire_strategy : 'fixed_date');
14 useEffect(() => {
15 strategies[selectedExpirationMethodTab as ExpireStrategy].apply(form);
16 // eslint-disable-next-line react-hooks/exhaustive-deps
17 }, [selectedExpirationMethodTab]);
18
19 const handleTabChange = (value: string) => {
20 setSelectedExpirationMethodTab(value as ExpireStrategy);
21 };
22
23 return {
24 selectedExpirationMethodTab,
25 setSelectedExpirationMethodTab,
26 handleTabChange,
27 };
28};