UNPKG

ivt

Version:

Ivt Components Library

1 lines 5.08 kB
{"version":3,"file":"index.mjs","sources":["../../src/components/ui/date-picker/date-picker.tsx"],"sourcesContent":["\"use client\";\n\nimport { format } from \"date-fns\";\nimport { ptBR } from \"date-fns/locale\";\nimport { CalendarDaysIcon } from \"lucide-react\";\nimport React from \"react\";\nimport { Button, type ButtonProps } from \"@/components/ui/button\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { cn } from \"@/lib/utils\";\nimport { tryParseDate } from \"@/utils/date\";\n\nexport interface DatePickerProps\n\textends Omit<React.ComponentProps<typeof Calendar>, \"mode\" | \"selected\" | \"onSelect\"> {\n\t/** Data selecionada (pode ser Date ou string parseável) */\n\tdate: Date | string | undefined;\n\n\t/** Função chamada ao selecionar uma data */\n\tsetDate: (date: Date | undefined) => void;\n\n\t/** Texto exibido quando não há data selecionada */\n\tplaceholder?: string;\n\n\t/** ID opcional do botão */\n\tid?: string;\n\n\t/** Props extras para o botão */\n\tbuttonProps?: ButtonProps;\n\n\t/** Props extras para o popover */\n\tpopoverProps?: React.ComponentProps<typeof Popover>;\n\n\t/** Classe extra para o conteúdo do popover */\n\tpopoverContentClassName?: string;\n\n\t/** Classe extra para o botão */\n\tclassName?: string;\n\n\t/**\n\t * Permite desabilitar datas específicas (igual ao Calendar do shadcn)\n\t * Pode ser um boolean, ou uma função que recebe a data e retorna boolean\n\t */\n\tdisabled?: boolean | ((date: Date) => boolean);\n\n\t/**\n\t * Mês padrão a ser mostrado (caso nenhuma data esteja selecionada)\n\t * Por padrão, será o mês atual.\n\t */\n\tdefaultMonth?: Date;\n}\n\nexport function DatePicker({\n\tdate,\n\tsetDate,\n\tplaceholder = \"Selecione uma data\",\n\tid = \"date-picker\",\n\tbuttonProps,\n\tpopoverProps,\n\tpopoverContentClassName,\n\tclassName,\n\tdisabled,\n\tdefaultMonth,\n\t...props\n}: DatePickerProps) {\n\tconst validDate = tryParseDate(date);\n\n\treturn (\n\t\t<Popover {...popoverProps}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button\n\t\t\t\t\tid={id}\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"hover:text-foreground justify-start text-left font-normal\",\n\t\t\t\t\t\t!validDate && \"text-muted-foreground hover:text-muted-foreground\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\tdisabled={typeof disabled === \"boolean\" ? disabled : undefined}\n\t\t\t\t\t{...buttonProps}\n\t\t\t\t>\n\t\t\t\t\t<CalendarDaysIcon className=\"size-4\" />\n\t\t\t\t\t{validDate ? format(validDate, \"P\", { locale: ptBR }) : <span>{placeholder}</span>}\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\n\t\t\t<PopoverContent className={cn(\"w-auto p-0\", popoverContentClassName)} align=\"start\">\n\t\t\t\t<Calendar\n\t\t\t\t\tautoFocus\n\t\t\t\t\tcaptionLayout=\"dropdown\"\n\t\t\t\t\tselected={validDate}\n\t\t\t\t\tonSelect={setDate}\n\t\t\t\t\tlocale={ptBR}\n\t\t\t\t\tnumberOfMonths={1}\n\t\t\t\t\tfromYear={2010}\n\t\t\t\t\ttoYear={2040}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tdefaultMonth={validDate ?? defaultMonth ?? new Date()}\n\t\t\t\t\t{...props}\n\t\t\t\t\tmode=\"single\"\n\t\t\t\t/>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n"],"names":["DatePicker","date","setDate","placeholder","id","buttonProps","popoverProps","popoverContentClassName","className","disabled","defaultMonth","props","validDate","tryParseDate","React","Popover","PopoverTrigger","asChild","Button","variant","cn","undefined","CalendarDaysIcon","format","locale","ptBR","span","PopoverContent","align","Calendar","autoFocus","captionLayout","selected","onSelect","numberOfMonths","fromYear","toYear","Date","mode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDO,SAASA,UAAAA,CAAW,EAC1BC,IAAI,EACJC,OAAO,EACPC,WAAAA,GAAc,oBAAoB,EAClCC,EAAAA,GAAK,aAAa,EAClBC,WAAW,EACXC,YAAY,EACZC,uBAAuB,EACvBC,SAAS,EACTC,QAAQ,EACRC,YAAY,EACZ,GAAGC,KAAAA,EACc,EAAA;AACjB,IAAA,MAAMC,YAAYC,YAAAA,CAAaZ,IAAAA,CAAAA;IAE/B,qBACCa,cAAA,CAAA,aAAA,CAACC,OAAAA,EAAYT,YAAAA,gBACZQ,cAAA,CAAA,aAAA,CAACE,cAAAA,EAAAA;QAAeC,OAAAA,EAAAA;qBACfH,cAAA,CAAA,aAAA,CAACI,MAAAA,EAAAA;QACAd,EAAAA,EAAIA,EAAAA;QACJe,OAAAA,EAAQ,SAAA;AACRX,QAAAA,SAAAA,EAAWY,EAAAA,CACV,2DAAA,EACA,CAACR,SAAAA,IAAa,mDAAA,EACdJ,SAAAA,CAAAA;QAEDC,QAAAA,EAAU,OAAOA,QAAAA,KAAa,SAAA,GAAYA,QAAAA,GAAWY,SAAAA;AACpD,QAAA,GAAGhB;qBAEJS,cAAA,CAAA,aAAA,CAACQ,YAAAA,EAAAA;QAAiBd,SAAAA,EAAU;QAC3BI,SAAAA,GAAYW,MAAAA,CAAOX,WAAW,GAAA,EAAK;QAAEY,MAAAA,EAAQC;KAAK,CAAA,iBAAKX,cAAA,CAAA,aAAA,CAACY,MAAAA,EAAAA,IAAAA,EAAMvB,WAAAA,CAAAA,CAAAA,CAAAA,gBAIjEW,cAAA,CAAA,aAAA,CAACa,cAAAA,EAAAA;AAAenB,QAAAA,SAAAA,EAAWY,GAAG,YAAA,EAAcb,uBAAAA,CAAAA;QAA0BqB,KAAAA,EAAM;qBAC3Ed,cAAA,CAAA,aAAA,CAACe,QAAAA,EAAAA;QACAC,SAAAA,EAAAA,IAAAA;QACAC,aAAAA,EAAc,UAAA;QACdC,QAAAA,EAAUpB,SAAAA;QACVqB,QAAAA,EAAU/B,OAAAA;QACVsB,MAAAA,EAAQC,IAAAA;QACRS,cAAAA,EAAgB,CAAA;QAChBC,QAAAA,EAAU,IAAA;QACVC,MAAAA,EAAQ,IAAA;QACR3B,QAAAA,EAAUA,QAAAA;QACVC,YAAAA,EAAcE,SAAAA,IAAaF,gBAAgB,IAAI2B,IAAAA,EAAAA;AAC9C,QAAA,GAAG1B,KAAK;QACT2B,IAAAA,EAAK;;AAKV;;;;"}