{"version":3,"file":"TimeFilterDropdown.mjs","sources":["../../../../src/lib/nextGenComponents/components/TimeFilterDropdown/TimeFilterDropdown.tsx"],"sourcesContent":["import { useState } from 'react'\n\nimport Check from '../../../images/check.svg?react'\nimport Select from '../../../images/select.svg?react'\nimport CustomRangePicker from '@/components/CustomRangePicker'\nimport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem\n} from '@/components/ui/dropdown-menu'\nimport {\n  TIME_FILTER_CUSTOM_VALUE,\n  TIME_FILTER_RESET_VALUE,\n  TIME_FILTER_FALLBACK_LABEL,\n  DEFAULT_TIME_FILTER_OPTIONS,\n  START_TIME_LABEL\n} from '@/constants'\nimport { cn } from '@/lib/utils'\nimport { TimeFilterDropdownProps, TimeFilterValue } from '@/types/table/timeFilter'\nimport { formatCustomRangeLabel } from '@/utils/date.utils'\n\nconst TimeFilterDropdown = ({\n  value,\n  defaultValue = 'any',\n  onChange,\n  onCustomRange,\n  initialCustomRange,\n  presetDateRange,\n  options = DEFAULT_TIME_FILTER_OPTIONS,\n  startTimeOnly = false,\n  className,\n  triggerClassName\n}: TimeFilterDropdownProps) => {\n  const [internal, setInternal] = useState<TimeFilterValue>(defaultValue)\n  const [appliedRange, setAppliedRange] = useState<{ since: string; until: string } | null>(\n    initialCustomRange?.since ? initialCustomRange : null\n  )\n  const effectiveInternal = appliedRange ? TIME_FILTER_CUSTOM_VALUE : internal\n  const selected = value ?? effectiveInternal\n\n  const customLabel = appliedRange\n    ? formatCustomRangeLabel(appliedRange.since, appliedRange.until)\n    : ''\n  const isCustomActive = selected === TIME_FILTER_CUSTOM_VALUE && !!customLabel\n  const presetLabel = options.find(i => i.value === selected)?.label ?? TIME_FILTER_FALLBACK_LABEL\n  const currentLabel = isCustomActive ? customLabel : presetLabel\n\n  const [isCustomOpen, setIsCustomOpen] = useState(false)\n  const [isOpen, setIsOpen] = useState(false)\n\n  const handleSelect = (selectedValue: TimeFilterValue) => {\n    if (selectedValue === TIME_FILTER_CUSTOM_VALUE) {\n      setIsCustomOpen(true)\n      return\n    }\n\n    setIsCustomOpen(false)\n    setAppliedRange(null)\n    setInternal(selectedValue)\n    onChange?.(selectedValue)\n  }\n\n  const handleCustomApply = (range: { since: string; until: string }) => {\n    setAppliedRange(range)\n    onCustomRange?.(range)\n    setIsOpen(false)\n    setIsCustomOpen(false)\n  }\n\n  return (\n    <DropdownMenu\n      open={isOpen}\n      onOpenChange={open => {\n        setIsOpen(open)\n        if (!open) setIsCustomOpen(false)\n      }}\n    >\n      <DropdownMenuTrigger\n        className={cn(\n          'inline-flex h-10 border-solid border-[#ccc] items-center justify-between gap-2 rounded border bg-background px-3 text-sm font-normal shadow-sm hover:bg-[#f5f5f5] transition-colors cursor-pointer',\n          'focus-visible:outline-none text-[#4B4760]',\n          startTimeOnly ? 'w-[220px]' : 'w-[180px]',\n          triggerClassName\n        )}\n        data-testid=\"time-filter-trigger\"\n      >\n        <span className=\"truncate\">\n          {startTimeOnly ? START_TIME_LABEL + currentLabel : currentLabel}\n        </span>\n        <Select className=\"size-4 opacity-70 w-3.5 h-2\" />\n      </DropdownMenuTrigger>\n\n      <DropdownMenuContent\n        align=\"end\"\n        sideOffset={8}\n        className={cn(\n          startTimeOnly ? 'min-w-[220px]' : 'min-w-[180px]',\n          'text-[#4B4760]',\n          className\n        )}\n      >\n        {isCustomOpen ? (\n          <CustomRangePicker\n            key={`${appliedRange?.since ?? presetDateRange?.since ?? ''}-${appliedRange?.until ?? presetDateRange?.until ?? ''}`}\n            onApply={handleCustomApply}\n            singleDate={startTimeOnly}\n            onReset={() => handleSelect(TIME_FILTER_RESET_VALUE)}\n            initialRange={appliedRange ?? presetDateRange ?? undefined}\n          />\n        ) : (\n          options.map(item => {\n            const isActive =\n              item.value === TIME_FILTER_CUSTOM_VALUE ? !!appliedRange : selected === item.value\n            return (\n              <DropdownMenuItem\n                key={item.value}\n                onSelect={e => {\n                  if (item.value === TIME_FILTER_CUSTOM_VALUE) e.preventDefault()\n                  handleSelect(item.value)\n                }}\n                className=\"relative text-[15px] h-[50px] p-4 data-[highlighted]:bg-igz-accent-hover cursor-pointer\"\n                data-testid={`time-filter-option-${item.value}`}\n              >\n                {item.label}\n\n                {isActive && !item.rightIcon && (\n                  <Check className=\"absolute right-2 top-1/2 -translate-y-1/2 size-4\" />\n                )}\n\n                {item.rightIcon === 'chevron' && (\n                  <Select className=\"absolute right-2 top-1/2 -translate-y-1/2 size-4 opacity-70 -rotate-90\" />\n                )}\n              </DropdownMenuItem>\n            )\n          })\n        )}\n      </DropdownMenuContent>\n    </DropdownMenu>\n  )\n}\n\nexport default TimeFilterDropdown\n"],"names":["TimeFilterDropdown","value","defaultValue","onChange","onCustomRange","initialCustomRange","presetDateRange","options","DEFAULT_TIME_FILTER_OPTIONS","startTimeOnly","className","triggerClassName","internal","setInternal","useState","appliedRange","setAppliedRange","selected","TIME_FILTER_CUSTOM_VALUE","customLabel","formatCustomRangeLabel","isCustomActive","presetLabel","_a","i","TIME_FILTER_FALLBACK_LABEL","currentLabel","isCustomOpen","setIsCustomOpen","isOpen","setIsOpen","handleSelect","selectedValue","handleCustomApply","range","jsxs","DropdownMenu","open","DropdownMenuTrigger","cn","jsx","START_TIME_LABEL","Select","DropdownMenuContent","CustomRangePicker","TIME_FILTER_RESET_VALUE","item","isActive","DropdownMenuItem","e","Check"],"mappings":"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"}