ivt
Version:
Ivt Components Library
1 lines • 24.4 kB
Source Map (JSON)
{"version":3,"file":"CalendarPopover-DNS2oszG.mjs","sources":["../../node_modules/date-fns/isWeekend.js","../../src/components/default/base/AutoComplete.tsx","../../src/components/default/base/CalendarPopover.tsx"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link isWeekend} function options.\n */\n\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend? A weekend is either Saturday (`6`) or Sunday (`0`).\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date falls on a weekend\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * const result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nexport function isWeekend(date, options) {\n const day = toDate(date, options?.in).getDay();\n return day === 0 || day === 6;\n}\n\n// Fallback for modularized imports:\nexport default isWeekend;\n","\"use client\";\n\nimport { CheckIcon, ChevronsUpDownIcon, XIcon } from \"lucide-react\";\nimport React from \"react\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"@/components/ui/command\";\nimport { Label } from \"@/components/ui/label\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { cn } from \"@/lib/utils\";\n\ninterface AutoCompleteProps<T> {\n\tvalue: T | null;\n\tonChange: (value: T | null) => void;\n\tplaceholder?: string;\n\tsearchPlaceholder?: string;\n\topen: boolean;\n\tonOpenChange: (open: boolean) => void;\n\tdisabled?: boolean;\n\tmessageEmpty?: string;\n\tfetchOptions: (term: string) => Promise<T[]>;\n\tgetOptionLabel: (option: T) => string;\n\tgetOptionKey: (option: T) => string | number;\n\tonSelect?: (option: T) => void;\n\tclassName?: string;\n\tclearable?: boolean;\n\tlabel?: string | React.ReactNode;\n\tdescription?: string;\n\tid?: string;\n}\n\nexport function AutoComplete<T>({\n\tvalue,\n\tonChange,\n\tplaceholder = \"Selecione\",\n\tsearchPlaceholder = \"Buscar...\",\n\topen,\n\tonOpenChange,\n\tdisabled,\n\tmessageEmpty = \"Nenhum item encontrado.\",\n\tfetchOptions,\n\tgetOptionLabel,\n\tgetOptionKey,\n\tonSelect,\n\tclassName,\n\tclearable = false,\n\tlabel,\n\tdescription,\n\tid,\n}: AutoCompleteProps<T>) {\n\tconst [options, setOptions] = React.useState<T[]>([]);\n\tconst [loading, setLoading] = React.useState(false);\n\tconst [searchTerm, setSearchTerm] = React.useState(\"\");\n\n\tconst generatedId = React.useId();\n\tconst inputId = id || generatedId;\n\n\tconst sortedOptions = React.useMemo(() => {\n\t\tif (!value) return options;\n\t\treturn [...options].sort((a, b) => {\n\t\t\tif (getOptionLabel(a) === getOptionLabel(value)) return -1;\n\t\t\tif (getOptionLabel(b) === getOptionLabel(value)) return 1;\n\t\t\treturn getOptionLabel(a).localeCompare(getOptionLabel(b));\n\t\t});\n\t}, [options, value, getOptionLabel]);\n\n\tconst debouncedFetch = useDebouncedCallback(async (term: string) => {\n\t\ttry {\n\t\t\tconst result = await fetchOptions(term);\n\t\t\tsetOptions(result);\n\t\t} catch (err) {\n\t\t\tconsole.error(\"Erro ao buscar opções:\", err);\n\t\t\tsetOptions([]);\n\t\t} finally {\n\t\t\tsetLoading(false);\n\t\t}\n\t}, 500);\n\n\tconst handleInputChange = (val: string) => {\n\t\tsetSearchTerm(val);\n\n\t\tif (val.trim() === \"\") {\n\t\t\tsetOptions([]);\n\t\t\tsetLoading(false);\n\t\t\treturn;\n\t\t}\n\n\t\tsetLoading(true);\n\t\tdebouncedFetch(val);\n\t};\n\n\tconst handleSelect = (option: T) => {\n\t\tif (onSelect) {\n\t\t\tonSelect(option);\n\t\t} else {\n\t\t\tonChange(option);\n\t\t\tonOpenChange(false);\n\t\t}\n\t};\n\n\tconst handleClear = (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tonChange(null);\n\t};\n\n\treturn (\n\t\t<div className=\"font-lato space-y-2\">\n\t\t\t{label && (\n\t\t\t\t<Label htmlFor={inputId} className=\"text-foreground text-sm font-medium gap-0\">\n\t\t\t\t\t{label}\n\t\t\t\t</Label>\n\t\t\t)}\n\t\t\t<Popover open={open} onOpenChange={onOpenChange}>\n\t\t\t\t<PopoverTrigger asChild>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"flex h-auto min-h-9 w-full items-center justify-between rounded-md border bg-inherit px-3 py-2 hover:bg-inherit [&_svg]:pointer-events-auto\",\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"min-w-0 flex-1 truncate text-muted-foreground text-left\",\n\t\t\t\t\t\t\t\tvalue && \"text-foreground\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{value ? getOptionLabel(value) : placeholder}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t{clearable && value && !disabled ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<TooltipProvider>\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t\t\t\t\t\t{/* biome-ignore lint/a11y/useKeyWithClickEvents: clear button action */}\n\t\t\t\t\t\t\t\t\t\t\t\t{/* biome-ignore lint/a11y/noStaticElementInteractions: clear button action */}\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleClear(event);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<XIcon className=\"text-muted-foreground h-4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipContent>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-xs\">Limpar seleção</span>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t</TooltipProvider>\n\n\t\t\t\t\t\t\t\t\t<Separator orientation=\"vertical\" className=\"flex h-full min-h-6\" />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t<ChevronsUpDownIcon className=\"text-muted-foreground h-4 cursor-pointer\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Button>\n\t\t\t\t</PopoverTrigger>\n\t\t\t\t<PopoverContent\n\t\t\t\t\tclassName=\"max-h-[300px] w-[--radix-popover-trigger-width] overflow-auto p-0\"\n\t\t\t\t\tside=\"bottom\"\n\t\t\t\t\talign=\"start\"\n\t\t\t\t>\n\t\t\t\t\t<Command>\n\t\t\t\t\t\t<CommandInput\n\t\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\t\tclassName=\"h-9\"\n\t\t\t\t\t\t\tonValueChange={handleInputChange}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<CommandEmpty>\n\t\t\t\t\t\t\t{loading\n\t\t\t\t\t\t\t\t? \"Carregando...\"\n\t\t\t\t\t\t\t\t: searchTerm.trim() === \"\"\n\t\t\t\t\t\t\t\t\t? \"Digite algo para buscar...\"\n\t\t\t\t\t\t\t\t\t: messageEmpty}\n\t\t\t\t\t\t</CommandEmpty>\n\t\t\t\t\t\t<CommandList className=\"max-h-60 overflow-y-auto\">\n\t\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t\t{sortedOptions.map((item) => {\n\t\t\t\t\t\t\t\t\tconst label = getOptionLabel(item);\n\t\t\t\t\t\t\t\t\tconst key = getOptionKey(item);\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tvalue={label}\n\t\t\t\t\t\t\t\t\t\t\tonSelect={() => handleSelect(item)}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"flex items-center gap-2\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{value && getOptionLabel(value) === label ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<CheckIcon className=\"h-4 w-4 shrink-0 opacity-100\" />\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"h-4 w-4 shrink-0\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"min-w-0 flex-1 truncate\">{label}</span>\n\t\t\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t\t</CommandList>\n\t\t\t\t\t</Command>\n\t\t\t\t</PopoverContent>\n\t\t\t</Popover>\n\t\t\t{description && <p className=\"text-muted-foreground text-sm\">{description}</p>}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { format, isWeekend } from \"date-fns\";\nimport { ptBR } from \"date-fns/locale\";\nimport { CalendarDaysIcon, LoaderCircleIcon, X } 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 function normalizeDate(date: Date): string {\n\treturn format(date, \"yyyy-MM-dd\");\n}\n\nexport interface CalendarPopoverProps\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 | null;\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 * Exibe o estado de carregamento geral do componente\n\t * Quando true, mostra o ícone de loading e desabilita a interação\n\t */\n\tisLoading?: boolean;\n\n\t/**\n\t * Exibe o estado de carregamento específico da tabela (caso exista)\n\t * Quando true, impede a seleção de datas no calendário\n\t */\n\tisLoadingTable?: boolean;\n\n\t/**\n\t * Define um conjunto de datas desabilitadas (formato 'yyyy-MM-dd')\n\t * Cada data presente neste Set será bloqueada na seleção do calendário\n\t */\n\tdisabledDates?: Set<string>;\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\t/**\n\t * Se true, desabilita datas futuras.\n\t * @default true\n\t */\n\tdisableFuture?: boolean;\n\n\t/**\n\t * Se true, desabilita fins de semana.\n\t * @default true\n\t */\n\tdisableWeekends?: boolean;\n\n\t/**\n\t * Define se o botão de limpar (X) a data deve ser exibido.\n\t * @default true\n\t */\n\tclearable?: boolean;\n}\n\nexport const CalendarPopover: React.FC<CalendarPopoverProps> = ({\n\tdate,\n\tsetDate,\n\tplaceholder = \"Selecione uma data\",\n\tid = \"calendar-popover\",\n\tbuttonProps,\n\tpopoverProps,\n\tpopoverContentClassName,\n\tclassName,\n\tdisabled,\n\tisLoading,\n\tdisabledDates,\n\tisLoadingTable,\n\tdisableFuture = true,\n\tdisableWeekends = true,\n\tclearable = true,\n\t...props\n}) => {\n\tconst validDate = tryParseDate(date ?? undefined);\n\tconst [isOpen, setIsOpen] = React.useState(false);\n\tconst [month, setMonth] = React.useState(validDate || new Date());\n\n\tReact.useEffect(() => {\n\t\tif (isOpen) {\n\t\t\tsetMonth(validDate || new Date());\n\t\t}\n\t}, [isOpen, validDate]);\n\n\tconst handleClear = (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tsetDate(undefined);\n\t};\n\n\treturn (\n\t\t<Popover open={isOpen} onOpenChange={setIsOpen} {...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-between 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<div className=\"flex items-center\">\n\t\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t\t<LoaderCircleIcon className=\"size-4 animate-spin mr-2\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<CalendarDaysIcon className=\"size-4 mr-2\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{isLoading ? (\n\t\t\t\t\t\t\t<span>carregando...</span>\n\t\t\t\t\t\t) : validDate ? (\n\t\t\t\t\t\t\tformat(validDate, \"P\", { locale: ptBR })\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span>{placeholder}</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{validDate && !disabled && !isLoading && clearable && (\n\t\t\t\t\t\t// biome-ignore lint/a11y/useKeyWithClickEvents: clear button action\n\t\t\t\t\t\t// biome-ignore lint/a11y/noStaticElementInteractions: clear button action\n\t\t\t\t\t\t<div onClick={handleClear} className=\"cursor-pointer p-1\">\n\t\t\t\t\t\t\t<X className=\"h-4 w-4 opacity-50 hover:opacity-100\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\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 || undefined}\n\t\t\t\t\tonSelect={(d) => {\n\t\t\t\t\t\tsetDate(d);\n\t\t\t\t\t\tsetIsOpen(false);\n\t\t\t\t\t}}\n\t\t\t\t\tlocale={ptBR}\n\t\t\t\t\tnumberOfMonths={1}\n\t\t\t\t\tfromYear={1900}\n\t\t\t\t\ttoYear={2100}\n\t\t\t\t\tdisabled={(currentDate) => {\n\t\t\t\t\t\tif (isLoading || isLoadingTable) return true;\n\n\t\t\t\t\t\t// Se disabled for uma função, respeite-a\n\t\t\t\t\t\tif (typeof disabled === \"function\") {\n\t\t\t\t\t\t\tif (disabled(currentDate)) return true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst normalizedCurrentDate = normalizeDate(currentDate);\n\n\t\t\t\t\t\tconst isHoliday = disabledDates?.has(normalizedCurrentDate);\n\t\t\t\t\t\tconst isWeekendDay = disableWeekends && isWeekend(currentDate);\n\t\t\t\t\t\tconst isFutureDate = disableFuture && currentDate > new Date();\n\n\t\t\t\t\t\treturn isHoliday || isWeekendDay || isFutureDate || false;\n\t\t\t\t\t}}\n\t\t\t\t\tmonth={month}\n\t\t\t\t\tonMonthChange={setMonth}\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":["isWeekend","date","options","day","toDate","in","getDay","AutoComplete","value","onChange","placeholder","searchPlaceholder","open","onOpenChange","disabled","messageEmpty","fetchOptions","getOptionLabel","getOptionKey","onSelect","className","clearable","label","description","id","setOptions","React","useState","loading","setLoading","searchTerm","setSearchTerm","generatedId","useId","inputId","sortedOptions","useMemo","sort","a","b","localeCompare","debouncedFetch","useDebouncedCallback","term","result","err","console","error","handleInputChange","val","trim","handleSelect","option","handleClear","e","stopPropagation","div","Label","htmlFor","Popover","PopoverTrigger","asChild","Button","variant","cn","aria-expanded","span","TooltipProvider","Tooltip","TooltipTrigger","onClick","event","XIcon","TooltipContent","Separator","orientation","ChevronsUpDownIcon","PopoverContent","side","align","Command","CommandInput","onValueChange","CommandEmpty","CommandList","CommandGroup","map","item","key","CommandItem","CheckIcon","p","normalizeDate","format","CalendarPopover","setDate","buttonProps","popoverProps","popoverContentClassName","isLoading","disabledDates","isLoadingTable","disableFuture","disableWeekends","props","validDate","tryParseDate","undefined","isOpen","setIsOpen","month","setMonth","Date","useEffect","LoaderCircleIcon","CalendarDaysIcon","locale","ptBR","X","Calendar","autoFocus","captionLayout","selected","d","numberOfMonths","fromYear","toYear","currentDate","normalizedCurrentDate","isHoliday","has","isWeekendDay","isFutureDate","onMonthChange","mode"],"mappings":"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","x_google_ignoreList":[0]}