forked from git.gladyson/openmonetis
- Adicionados ícones SVG para ChatGPT, Claude, Gemini e OpenRouter - Implementados ícones para modos claro e escuro do ChatGPT - Criado script de inicialização para PostgreSQL com extensão pgcrypto - Adicionado script de configuração de ambiente que faz backup do .env - Configurado tsconfig.json para TypeScript com opções de compilação
96 lines
3.0 KiB
TypeScript
96 lines
3.0 KiB
TypeScript
"use client";
|
|
|
|
import { Label } from "@/components/ui/label";
|
|
import {
|
|
Select,
|
|
SelectContent,
|
|
SelectItem,
|
|
SelectTrigger,
|
|
SelectValue,
|
|
} from "@/components/ui/select";
|
|
import { LANCAMENTO_CONDITIONS } from "@/lib/lancamentos/constants";
|
|
import { cn } from "@/lib/utils/ui";
|
|
import { ConditionSelectContent } from "../../select-items";
|
|
import type { ConditionSectionProps } from "./lancamento-dialog-types";
|
|
|
|
export function ConditionSection({
|
|
formState,
|
|
onFieldChange,
|
|
showInstallments,
|
|
showRecurrence,
|
|
}: ConditionSectionProps) {
|
|
return (
|
|
<div className="flex w-full flex-col gap-2 md:flex-row">
|
|
<div
|
|
className={cn(
|
|
"space-y-2 w-full",
|
|
showInstallments || showRecurrence ? "md:w-1/2" : "md:w-full"
|
|
)}
|
|
>
|
|
<Label htmlFor="condition">Condição</Label>
|
|
<Select
|
|
value={formState.condition}
|
|
onValueChange={(value) => onFieldChange("condition", value)}
|
|
>
|
|
<SelectTrigger id="condition" className="w-full">
|
|
<SelectValue placeholder="Selecione">
|
|
{formState.condition && (
|
|
<ConditionSelectContent label={formState.condition} />
|
|
)}
|
|
</SelectValue>
|
|
</SelectTrigger>
|
|
<SelectContent>
|
|
{LANCAMENTO_CONDITIONS.map((condition) => (
|
|
<SelectItem key={condition} value={condition}>
|
|
<ConditionSelectContent label={condition} />
|
|
</SelectItem>
|
|
))}
|
|
</SelectContent>
|
|
</Select>
|
|
</div>
|
|
|
|
{showInstallments ? (
|
|
<div className="space-y-2 w-full md:w-1/2">
|
|
<Label htmlFor="installmentCount">Parcelado em</Label>
|
|
<Select
|
|
value={formState.installmentCount}
|
|
onValueChange={(value) => onFieldChange("installmentCount", value)}
|
|
>
|
|
<SelectTrigger id="installmentCount" className="w-full">
|
|
<SelectValue placeholder="Selecione" />
|
|
</SelectTrigger>
|
|
<SelectContent>
|
|
{[...Array(24)].map((_, index) => (
|
|
<SelectItem key={index + 2} value={String(index + 2)}>
|
|
{index + 2}x
|
|
</SelectItem>
|
|
))}
|
|
</SelectContent>
|
|
</Select>
|
|
</div>
|
|
) : null}
|
|
|
|
{showRecurrence ? (
|
|
<div className="space-y-2 w-full md:w-1/2">
|
|
<Label htmlFor="recurrenceCount">Lançamento fixo</Label>
|
|
<Select
|
|
value={formState.recurrenceCount}
|
|
onValueChange={(value) => onFieldChange("recurrenceCount", value)}
|
|
>
|
|
<SelectTrigger id="recurrenceCount" className="w-full">
|
|
<SelectValue placeholder="Selecione" />
|
|
</SelectTrigger>
|
|
<SelectContent>
|
|
{[...Array(24)].map((_, index) => (
|
|
<SelectItem key={index + 2} value={String(index + 2)}>
|
|
Por {index + 2} meses
|
|
</SelectItem>
|
|
))}
|
|
</SelectContent>
|
|
</Select>
|
|
</div>
|
|
) : null}
|
|
</div>
|
|
);
|
|
}
|