@peak-ai/canvas 1.4.38 → 1.4.39-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"date-filter.js","names":["useEffect","useRef","useState","Calendar","Loader2Icon","X","ReactDatePicker","zonedTimeToUtc","utcToZonedTime","classnames","getAffectedComponentsWithLoader","Button","sherlock","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","TIMEZONE","getTimezone","window","localStorage","getItem","formatDateWithTimezone","date","timezone","showTime","formatOptions","_extends","day","month","year","hour","minute","hour12","timeZone","toLocaleString","convertToTargetTimezone","targetTimezone","convertFromStoredDate","inputClasses","disabledClasses","enabledClasses","buttonClasses","closeButtonClasses","dropdownClasses","parseRelativeDate","dateString","Date","result","parse","startDate","getDefaultDates","now","oneYearAgo","setFullYear","getFullYear","oneYearFromNow","defaultStartDate","getMonth","getDate","defaultEndDate","DateInput","_ref","label","value","onClick","disabled","placeholder","isOpen","_ref$showTime","onChange","minDate","maxDate","_useState","inputValue","setInputValue","_useState2","isEditing","setIsEditing","_useState3","validationError","setValidationError","formatDate","handleClick","e","preventDefault","stopPropagation","handleInputChange","target","handleInputFocus","parseInputDate","inputText","trim","commonFormats","_i","_commonFormats","length","format","match","hours","minutes","source","startsWith","_match$","_match$2","_match$3","_match$4","yearNum","parseInt","monthNum","dayNum","hoursNum","minutesNum","parsedDate","isNaN","getTime","error","validateDateRange","handleInputBlur","errorMessage","handleKeyDown","key","className","children","onFocus","onBlur","onKeyDown","title","size","DatePicker","_ref2","_ref2$className","_ref2$disabled","_ref2$enableTime","enableTime","_ref2$isClearable","isClearable","_ref2$value","open","onClickOutside","_ref2$showTimeSelect","showTimeSelect","_ref2$timeFormat","timeFormat","_ref2$timeIntervals","timeIntervals","_ref2$inline","inline","dateFormat","shouldShowTime","datePickerProps","selected","timeCaption","portalId","popperClassName","popperPlacement","renderDateFilter","_ref3","_convertFromStoredDat","_convertFromStoredDat2","_convertFromStoredDat3","_convertFromStoredDat4","_convertFromStoredDat5","_convertFromStoredDat6","_convertFromStoredDat7","_convertFromStoredDat8","gjsModel","performInteraction","wrapperRef","buttonRef","startDatePickerRef","endDatePickerRef","dropdownRef","_useState4","get","componentData","setComponentData","_useState5","attributes","setAttributes","_useState6","isApplying","setIsApplying","_useState7","isDropdownOpen","setIsDropdownOpen","_useState8","isStartDateOpen","setIsStartDateOpen","_useState9","isEndDateOpen","setIsEndDateOpen","_useState10","left","right","dropdownPosition","setDropdownPosition","_componentData$classN","_componentData$affect","affectedComponents","_componentData$startL","startLabel","_componentData$endLab","endLabel","_componentData$isClea","_componentData$dateFo","_componentData$showTi","_componentData$timeFo","_componentData$timeIn","defaultValue","_getDefaultDates","globalMin","undefined","globalMax","getInitialStartDate","start","getInitialEndDate","end","_useState11","setStartDate","_useState12","endDate","setEndDate","_useState13","tempStartDate","setTempStartDate","_useState14","tempEndDate","setTempEndDate","isBusy","interactionApiInProgress","getMaxStartDate","getMinEndDate","closeAllPickers","closeDropdown","toggleDropdown","handleStartDateClick","handleEndDateClick","_wrapperRef$current$o","_wrapperRef$current","doc","current","ownerDocument","document","handleOutsideClick","contains","handleEscape","addEventListener","removeEventListener","handleTimeClick","event","isStartPicker","isTimeClick","closest","classList","setTimeout","startPickerElement","endPickerElement","handleStartTimeClick","handleEndTimeClick","handleStartDateChange","adjustedDate","handleEndDateChange","handleApply","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dateValues","id","wrap","_context","prev","next","toISOString","set","interactionType","concat","finish","stop","apply","arguments","_document$getElementB","buttonRect","getBoundingClientRect","dropdownWidth","iframeViewportWidth","documentElement","clientWidth","iframeBodyWidth","getElementById","spaceToRight","spaceToLeft","shiftLeft","updateComponentData","_newData$value","_componentData$value","_newData$value2","_componentData$value2","newData","updateAttributes","on","off","ref","style","variant"],"sources":["../../../../src/shadcn/components/ui/date-filter.tsx"],"sourcesContent":["/* eslint-disable func-style */\n/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Calendar, Loader2Icon, X } from 'lucide-react';\nimport ReactDatePicker from 'react-datepicker';\nimport { zonedTimeToUtc, utcToZonedTime } from 'date-fns-tz';\nimport classnames from 'classnames';\n\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Button } from './button';\nimport sherlock from 'sherlockjs';\n\nexport type DatePickerProps = {\n className?: string;\n dateFormat?: string;\n disabled?: boolean;\n enableTime?: boolean;\n isInputEditable?: boolean;\n isClearable?: boolean;\n label?: string;\n maxDate?: Date | undefined;\n minDate?: Date | undefined;\n onChange(date: Date | null): void;\n value: Date | null;\n open?: boolean;\n onClickOutside?: () => void;\n showTimeSelect?: boolean;\n timeFormat?: string;\n timeIntervals?: number;\n inline?: boolean;\n};\n\ntype DateFilterProps = {\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nconst TIMEZONE = 'TIMEZONE';\n\nfunction getTimezone() {\n return window.localStorage.getItem(TIMEZONE) || 'UTC';\n}\n\nconst formatDateWithTimezone = (date: Date | null, timezone: string, showTime = false): string => {\n if (!date) {\n return '';\n }\n\n const formatOptions: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n ...(showTime && {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }),\n timeZone: timezone,\n };\n\n return date.toLocaleString('en-GB', formatOptions);\n};\n\nconst convertToTargetTimezone = (date: Date | null): Date | null => {\n if (!date) {return null;}\n \n const targetTimezone = getTimezone();\n\n return zonedTimeToUtc(date, targetTimezone);\n};\n\nconst convertFromStoredDate = (date: Date | null): Date | null => {\n if (!date) {return null;}\n \n const targetTimezone = getTimezone();\n \n return utcToZonedTime(date, targetTimezone);\n};\n\nconst inputClasses =\n 'w-full px-3 py-2 border border-gray-300 rounded-md mb-1 focus:outline-none focus:ring-2 focus:ring-blue-500';\nconst disabledClasses = 'opacity-60 cursor-not-allowed bg-gray-50';\nconst enabledClasses = 'cursor-pointer';\n\nconst buttonClasses =\n 'flex items-center gap-2 px-3 py-2 border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors';\nconst closeButtonClasses =\n 'p-1 rounded-md hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500';\n\nconst dropdownClasses =\n 'absolute top-full mt-1 bg-white rounded-lg shadow-lg border border-gray-200 p-4 w-[380px] z-[9999]';\n\nconst parseRelativeDate = (dateString: string | Date | null): Date | null => {\n if (!dateString) {\n return null;\n }\n\n if (dateString instanceof Date) {\n return dateString;\n }\n\n const result = sherlock.parse(dateString as string);\n\n if (result.startDate) {\n return result.startDate;\n }\n\n return null;\n};\n\nconst getDefaultDates = () => {\n const now = new Date();\n const oneYearAgo = new Date(now);\n oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);\n const oneYearFromNow = new Date(now);\n oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1);\n\n return {\n defaultStartDate: new Date(\n oneYearAgo.getFullYear(),\n oneYearAgo.getMonth(),\n oneYearAgo.getDate(),\n 0,\n 0,\n 0,\n ),\n defaultEndDate: new Date(\n oneYearFromNow.getFullYear(),\n oneYearFromNow.getMonth(),\n oneYearFromNow.getDate(),\n 23,\n 59,\n 59,\n ),\n };\n};\n\nconst DateInput = ({\n label,\n value,\n onClick,\n disabled,\n placeholder,\n isOpen,\n showTime = false,\n onChange,\n minDate,\n maxDate,\n}: {\n label: string;\n value: Date | null;\n onClick: () => void;\n disabled?: boolean;\n placeholder?: string;\n isOpen?: boolean;\n showTime?: boolean;\n onChange?: (date: Date | null) => void;\n minDate?: Date | null;\n maxDate?: Date | null;\n}) => {\n const [inputValue, setInputValue] = useState('');\n const [isEditing, setIsEditing] = useState(false);\n const [validationError, setValidationError] = useState<string>('');\n\n const formatDate = (date: Date | null) => {\n const timezone = getTimezone();\n\n return formatDateWithTimezone(date, timezone, showTime);\n };\n\n useEffect(() => {\n if (!isEditing) {\n setInputValue(formatDate(value));\n }\n }, [value, showTime, isEditing]);\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!disabled) {\n onClick();\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n };\n\n const handleInputFocus = () => {\n setIsEditing(true);\n setValidationError('');\n };\n\n const parseInputDate = (inputText: string): Date | null => {\n if (!inputText.trim()) {\n return null;\n }\n\n const commonFormats = [\n // DD/MM/YYYY formats\n /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // DD-MM-YYYY formats\n /^(\\d{1,2})-(\\d{1,2})-(\\d{4})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // YYYY-MM-DD formats\n /^(\\d{4})-(\\d{1,2})-(\\d{1,2})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // YYYY/MM/DD formats\n /^(\\d{4})\\/(\\d{1,2})\\/(\\d{1,2})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n ];\n\n for (const format of commonFormats) {\n const match = inputText.match(format);\n\n if (match) {\n let day: string; let month: string; let year: string; let hours = '0'; let minutes = '0';\n \n if (format.source.startsWith('^(\\\\d{4})')) {\n [, year, month, day, hours = '0', minutes = '0'] = match;\n } else {\n [, day, month, year, hours = '0', minutes = '0'] = match;\n }\n\n const yearNum = parseInt(year, 10);\n const monthNum = parseInt(month, 10);\n const dayNum = parseInt(day, 10);\n const hoursNum = parseInt(hours, 10);\n const minutesNum = parseInt(minutes, 10);\n\n const parsedDate = new Date(\n yearNum,\n monthNum - 1,\n dayNum,\n hoursNum,\n minutesNum\n );\n\n if (\n !isNaN(parsedDate.getTime()) &&\n parsedDate.getFullYear() === yearNum &&\n parsedDate.getMonth() === monthNum - 1 &&\n parsedDate.getDate() === dayNum\n ) {\n return parsedDate;\n }\n }\n }\n\n try {\n const result = sherlock.parse(inputText);\n\n if (result.startDate) {\n return result.startDate;\n }\n } catch (error) {\n\n return null;\n }\n\n return null;\n };\n\n const validateDateRange = (date: Date | null): string => {\n if (!date) {\n return '';\n }\n\n if (minDate && date < minDate) {\n return `Minimum allowed date is ${formatDateWithTimezone(minDate, getTimezone(), false)}`;\n }\n\n if (maxDate && date > maxDate) {\n return `Maximum allowed date is ${formatDateWithTimezone(maxDate, getTimezone(), false)}`;\n }\n\n return '';\n };\n\n const handleInputBlur = () => {\n setIsEditing(false);\n \n if (onChange) {\n const parsedDate = parseInputDate(inputValue);\n \n if (parsedDate) {\n const errorMessage = validateDateRange(parsedDate);\n setValidationError(errorMessage);\n \n if (!errorMessage) {\n onChange(parsedDate);\n }\n } else if (inputValue.trim() === '') {\n setValidationError('');\n onChange(null);\n } else {\n setValidationError('');\n setInputValue(formatDate(value));\n }\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleInputBlur();\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setInputValue(formatDate(value));\n setValidationError('');\n setIsEditing(false);\n }\n };\n\n return (\n <div className=\"relative\">\n <input\n value={inputValue}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleKeyDown}\n onClick={handleClick}\n placeholder={placeholder || label}\n disabled={disabled}\n className={`${inputClasses} ${disabled ? disabledClasses : enabledClasses} ${\n isOpen ? 'ring-2 ring-blue-500' : ''\n }`}\n title={showTime ? \n \"Enter date and time\" : \n \"Enter date\"\n }\n />\n <div className=\"absolute right-3 top-7 transform -translate-y-1/2 flex items-center gap-1\">\n <Calendar size={16} className=\"text-gray-400 cursor-pointer\" onClick={handleClick} />\n </div>\n {validationError && (\n <div className=\"absolute top-full left-0 text-xs text-red-600 px-2 mb-2 z-10\">\n {validationError}\n </div>\n )}\n </div>\n );\n};\n\nexport function DatePicker({\n className = '',\n disabled = false,\n enableTime = false,\n isClearable = true,\n maxDate,\n minDate,\n onChange,\n value = null,\n open,\n onClickOutside,\n showTimeSelect = false,\n timeFormat = 'HH:mm',\n timeIntervals = 15,\n inline = true,\n}: DatePickerProps) {\n const dateFormat = showTimeSelect || enableTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n\n const date = typeof value === 'string' && value ? new Date(value) : value;\n\n const shouldShowTime = showTimeSelect || enableTime;\n\n const datePickerProps = {\n selected: date,\n minDate,\n maxDate,\n disabled,\n isClearable,\n onChange,\n dateFormat,\n showTimeSelect: shouldShowTime,\n timeFormat,\n timeIntervals,\n timeCaption: 'Time',\n portalId: 'date-picker-portal',\n popperClassName: 'date-picker-popper !z-[9999]',\n popperPlacement: 'bottom-end',\n inline,\n open,\n onClickOutside,\n className: classnames(className, inputClasses),\n } as any;\n\n return (\n <div className={`relative inline-block ${className}`}>\n {\n <div className=\"absolute z-[9999] mt-1 border rounded-md shadow-lg bg-white\">\n <ReactDatePicker {...datePickerProps} />\n </div>\n }\n </div>\n );\n}\n\nexport function renderDateFilter({ gjsModel, performInteraction }: DateFilterProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const startDatePickerRef = useRef<HTMLDivElement>(null);\n const endDatePickerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [isApplying, setIsApplying] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isStartDateOpen, setIsStartDateOpen] = useState(false);\n const [isEndDateOpen, setIsEndDateOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ left: 'auto', right: '0' });\n\n const {\n className = '',\n affectedComponents = [],\n startLabel = 'Start date',\n endLabel = 'End date',\n isClearable = true,\n dateFormat = 'yyyy-MM-dd',\n minDate,\n maxDate,\n showTimeSelect = true,\n timeFormat = 'HH:mm',\n timeIntervals = 15,\n value,\n default: defaultValue,\n } = componentData;\n\n const { defaultStartDate, defaultEndDate } = getDefaultDates();\n\n const globalMin = minDate ? parseRelativeDate(minDate) : undefined;\n const globalMax = maxDate ? parseRelativeDate(maxDate) : undefined;\n\n const getInitialStartDate = (): Date | null => {\n if (value?.start) {\n return new Date(value.start);\n }\n\n if (defaultValue?.start) {\n return parseRelativeDate(defaultValue.start);\n }\n\n return defaultStartDate;\n };\n\n const getInitialEndDate = (): Date | null => {\n if (value?.end) {\n return new Date(value.end);\n }\n\n if (defaultValue?.end) {\n return parseRelativeDate(defaultValue.end);\n }\n\n return defaultEndDate;\n };\n\n const [startDate, setStartDate] = useState<Date | null>(getInitialStartDate());\n const [endDate, setEndDate] = useState<Date | null>(getInitialEndDate());\n const [tempStartDate, setTempStartDate] = useState<Date | null>(null);\n const [tempEndDate, setTempEndDate] = useState<Date | null>(null);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n\n const getMaxStartDate = () => {\n return globalMax || tempEndDate;\n };\n\n const getMinEndDate = () => {\n return globalMin || tempStartDate;\n };\n\n const closeAllPickers = () => {\n setIsStartDateOpen(false);\n setIsEndDateOpen(false);\n };\n\n const closeDropdown = () => {\n setIsDropdownOpen(false);\n closeAllPickers();\n };\n\n const toggleDropdown = () => {\n if (!isDropdownOpen) {\n closeAllPickers();\n }\n\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const handleStartDateClick = () => {\n if (!isApplying && !isBusy) {\n setIsEndDateOpen(false);\n setIsStartDateOpen(!isStartDateOpen);\n }\n };\n\n const handleEndDateClick = () => {\n if (!isApplying && !isBusy) {\n setIsStartDateOpen(false);\n setIsEndDateOpen(!isEndDateOpen);\n }\n };\n\n useEffect(() => {\n const doc = wrapperRef.current?.ownerDocument ?? document;\n\n function handleOutsideClick(e: PointerEvent) {\n if (isDropdownOpen && wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n closeDropdown();\n }\n }\n\n function handleEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n closeDropdown();\n }\n }\n\n doc.addEventListener('pointerdown', handleOutsideClick);\n doc.addEventListener('keydown', handleEscape);\n\n return () => {\n doc.removeEventListener('pointerdown', handleOutsideClick);\n doc.removeEventListener('keydown', handleEscape);\n };\n }, [isDropdownOpen]);\n\n // Add click event listeners to detect time selector clicks\n useEffect(() => {\n const handleTimeClick = (event: MouseEvent, isStartPicker: boolean) => {\n const target = event.target as HTMLElement;\n \n // Check if the click was on time-related elements\n const isTimeClick = target.closest('.react-datepicker__time-container') ||\n target.closest('.react-datepicker__time-list') ||\n target.closest('.react-datepicker__time-list-item') ||\n target.classList.contains('react-datepicker__time-list-item');\n\n if (isTimeClick && showTimeSelect) {\n // Close the picker after a small delay to allow the time selection to complete\n setTimeout(() => {\n if (isStartPicker) {\n setIsStartDateOpen(false);\n } else {\n setIsEndDateOpen(false);\n }\n }, 100);\n }\n };\n\n const startPickerElement = startDatePickerRef.current;\n const endPickerElement = endDatePickerRef.current;\n\n if (isStartDateOpen && startPickerElement) {\n const handleStartTimeClick = (e: MouseEvent) => handleTimeClick(e, true);\n startPickerElement.addEventListener('click', handleStartTimeClick);\n \n return () => {\n startPickerElement.removeEventListener('click', handleStartTimeClick);\n };\n }\n\n if (isEndDateOpen && endPickerElement) {\n const handleEndTimeClick = (e: MouseEvent) => handleTimeClick(e, false);\n endPickerElement.addEventListener('click', handleEndTimeClick);\n \n return () => {\n endPickerElement.removeEventListener('click', handleEndTimeClick);\n };\n }\n\n // Always return undefined if no cleanup is needed\n return undefined;\n }, [isStartDateOpen, isEndDateOpen, showTimeSelect]);\n\n const handleStartDateChange = (date: Date | null) => {\n const adjustedDate = convertToTargetTimezone(date);\n setTempStartDate(adjustedDate);\n\n if (!showTimeSelect) {\n setIsStartDateOpen(false);\n }\n };\n\n const handleEndDateChange = (date: Date | null) => {\n const adjustedDate = convertToTargetTimezone(date);\n setTempEndDate(adjustedDate);\n\n if (!showTimeSelect) {\n setIsEndDateOpen(false);\n }\n };\n\n const handleApply = async () => {\n setIsApplying(true);\n\n try {\n const dateValues = {\n start: tempStartDate?.toISOString() || null,\n end: tempEndDate?.toISOString() || null,\n };\n\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: dateValues,\n });\n\n const id = gjsModel.get('id');\n\n setStartDate(tempStartDate);\n setEndDate(tempEndDate);\n\n await performInteraction({\n interactionType: 'dateFilter',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n\n closeDropdown();\n } finally {\n setIsApplying(false);\n }\n };\n\n useEffect(() => {\n if (isDropdownOpen) {\n setTempStartDate(startDate);\n setTempEndDate(endDate);\n } else {\n closeAllPickers();\n }\n }, [isDropdownOpen, startDate, endDate]);\n\n useEffect(() => {\n if (!isDropdownOpen || !buttonRef.current) {\n return;\n }\n\n const buttonRect = buttonRef.current.getBoundingClientRect();\n const dropdownWidth = 380;\n const iframeViewportWidth = document.documentElement.clientWidth;\n const iframeBodyWidth =\n document.getElementById('dashboard-root')?.clientWidth || iframeViewportWidth;\n\n const spaceToRight = iframeBodyWidth - buttonRect.right;\n const spaceToLeft = buttonRect.left;\n\n if (spaceToLeft >= dropdownWidth) {\n setDropdownPosition({ left: 'auto', right: '0px' });\n } else if (spaceToRight < dropdownWidth && spaceToLeft < dropdownWidth) {\n const shiftLeft = dropdownWidth - spaceToRight + 16;\n setDropdownPosition({ left: `-${shiftLeft}px`, right: 'auto' });\n } else if (spaceToRight >= dropdownWidth) {\n setDropdownPosition({ left: '0px', right: 'auto' });\n }\n }, [isDropdownOpen]);\n\n useEffect(() => {\n const updateComponentData = () => {\n const newData = { ...gjsModel.get('componentProps') };\n setComponentData(newData);\n\n if (newData.value?.start && newData.value.start !== componentData.value?.start) {\n setStartDate(new Date(newData.value.start));\n }\n\n if (newData.value?.end && newData.value.end !== componentData.value?.end) {\n setEndDate(new Date(newData.value.end));\n }\n };\n\n const updateAttributes = () => {\n setAttributes({ ...gjsModel.get('attributes') });\n };\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel, componentData.value]);\n\n return (\n <div ref={wrapperRef} className={`relative ${className}`}>\n <button\n ref={buttonRef}\n onClick={toggleDropdown}\n disabled={isBusy}\n className={`${buttonClasses} ${isBusy ? disabledClasses : enabledClasses}`}\n title=\"Open Date & Time Filter\"\n >\n <div className=\"flex items-center gap-1\">\n <Calendar size={16} className=\"text-gray-600\" />\n </div>\n {isBusy && <Loader2Icon size={14} className=\"animate-spin text-blue-500\" />}\n </button>\n\n {isDropdownOpen && (\n <div ref={dropdownRef} className={dropdownClasses} style={dropdownPosition}>\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-gray-900\">Select date & time range</h3>\n <button onClick={closeDropdown} className={closeButtonClasses}>\n <X size={14} className=\"text-gray-400\" />\n </button>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700\">{startLabel}</label>\n <div className=\"relative\">\n <DateInput\n label={startLabel}\n value={tempStartDate}\n onClick={handleStartDateClick}\n disabled={isApplying}\n placeholder=\"Select start date\"\n isOpen={isStartDateOpen}\n showTime={showTimeSelect}\n onChange={handleStartDateChange}\n minDate={globalMin ? (convertFromStoredDate(globalMin) ?? undefined) : undefined}\n maxDate={getMaxStartDate() ? (convertFromStoredDate(getMaxStartDate()) ?? undefined) : undefined}\n />\n </div>\n\n {isStartDateOpen && (\n <div ref={startDatePickerRef} className=\"mt-2 p-2\">\n <ReactDatePicker\n selected={convertFromStoredDate(tempStartDate)}\n onChange={handleStartDateChange}\n minDate={globalMin ? (convertFromStoredDate(globalMin) ?? undefined) : undefined}\n maxDate={getMaxStartDate() ? (convertFromStoredDate(getMaxStartDate()) ?? undefined) : undefined}\n showTimeSelect={showTimeSelect}\n timeFormat={timeFormat}\n timeIntervals={timeIntervals}\n timeCaption=\"Time\"\n dateFormat={showTimeSelect ? 'dd/MM/yyyy HH:mm' : dateFormat}\n inline={true}\n isClearable={isClearable}\n disabled={isApplying}\n />\n </div>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700\">{endLabel}</label>\n <div className=\"relative\">\n <DateInput\n label={endLabel}\n value={tempEndDate}\n onClick={handleEndDateClick}\n disabled={isApplying}\n placeholder=\"Select end date\"\n isOpen={isEndDateOpen}\n showTime={showTimeSelect}\n onChange={handleEndDateChange}\n minDate={getMinEndDate() ? (convertFromStoredDate(getMinEndDate()) ?? undefined) : undefined}\n maxDate={globalMax ? (convertFromStoredDate(globalMax) ?? undefined) : undefined}\n />\n </div>\n\n {isEndDateOpen && (\n <div ref={endDatePickerRef} className=\"mt-2 p-2\">\n <ReactDatePicker\n selected={convertFromStoredDate(tempEndDate)}\n onChange={handleEndDateChange}\n minDate={getMinEndDate() ? (convertFromStoredDate(getMinEndDate()) ?? undefined) : undefined}\n maxDate={globalMax ? (convertFromStoredDate(globalMax) ?? undefined) : undefined}\n showTimeSelect={showTimeSelect}\n timeFormat={timeFormat}\n timeIntervals={timeIntervals}\n timeCaption=\"Time\"\n dateFormat={showTimeSelect ? 'dd/MM/yyyy HH:mm' : dateFormat}\n inline={true}\n isClearable={isClearable}\n disabled={isApplying}\n />\n </div>\n )}\n </div>\n\n <div className=\"flex gap-2 pt-2\">\n <Button\n variant=\"outline\"\n onClick={closeDropdown}\n disabled={isApplying}\n className=\"flex-1 h-8 text-xs bg-[#EAECFB] border border-[#2A44D4] text-[#263DBF] hover:bg-[#EAECFB] hover:text-[#263DBF]\"\n size=\"sm\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleApply}\n disabled={isApplying}\n className=\"flex-1 h-8 text-xs bg-[#2A44D4] text-white hover:bg-[#2A44D4] hover:text-white\"\n size=\"sm\"\n >\n {isApplying ? (\n <>\n <Loader2Icon size={12} className=\"animate-spin mr-1\" />\n </>\n ) : (\n 'Apply'\n )}\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"date-filter.js","names":["useEffect","useRef","useState","Calendar","Loader2Icon","X","ReactDatePicker","zonedTimeToUtc","utcToZonedTime","classnames","getAffectedComponentsWithLoader","Button","sherlock","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","TIMEZONE","getTimezone","window","localStorage","getItem","formatDateWithTimezone","date","timezone","showTime","formatOptions","_extends","day","month","year","hour","minute","hour12","timeZone","toLocaleString","convertToTargetTimezone","targetTimezone","convertFromStoredDate","inputClasses","disabledClasses","enabledClasses","buttonClasses","closeButtonClasses","dropdownClasses","parseRelativeDate","dateString","Date","result","parse","startDate","getDefaultDates","now","oneYearAgo","setFullYear","getFullYear","oneYearFromNow","defaultStartDate","getMonth","getDate","defaultEndDate","DateInput","_ref","label","value","onClick","disabled","placeholder","isOpen","_ref$showTime","onChange","minDate","maxDate","_useState","inputValue","setInputValue","_useState2","isEditing","setIsEditing","_useState3","validationError","setValidationError","formatDate","handleClick","e","preventDefault","stopPropagation","handleInputChange","target","handleInputFocus","parseInputDate","inputText","trim","commonFormats","_i","_commonFormats","length","format","match","hours","minutes","source","startsWith","_match$","_match$2","_match$3","_match$4","yearNum","parseInt","monthNum","dayNum","hoursNum","minutesNum","parsedDate","isNaN","getTime","error","validateDateRange","handleInputBlur","errorMessage","handleKeyDown","key","className","children","onFocus","onBlur","onKeyDown","title","size","DatePicker","_ref2","_ref2$className","_ref2$disabled","_ref2$enableTime","enableTime","_ref2$isClearable","isClearable","_ref2$value","open","onClickOutside","_ref2$showTimeSelect","showTimeSelect","_ref2$timeFormat","timeFormat","_ref2$timeIntervals","timeIntervals","_ref2$inline","inline","dateFormat","shouldShowTime","datePickerProps","selected","timeCaption","portalId","popperClassName","popperPlacement","renderDateFilter","_ref3","_convertFromStoredDat","_convertFromStoredDat2","_convertFromStoredDat3","_convertFromStoredDat4","_convertFromStoredDat5","_convertFromStoredDat6","_convertFromStoredDat7","_convertFromStoredDat8","gjsModel","performInteraction","wrapperRef","buttonRef","startDatePickerRef","endDatePickerRef","dropdownRef","_useState4","get","componentData","setComponentData","_useState5","attributes","setAttributes","_useState6","isApplying","setIsApplying","_useState7","isDropdownOpen","setIsDropdownOpen","_useState8","isStartDateOpen","setIsStartDateOpen","_useState9","isEndDateOpen","setIsEndDateOpen","_useState10","left","right","dropdownPosition","setDropdownPosition","_componentData$classN","_componentData$affect","affectedComponents","_componentData$startL","startLabel","_componentData$endLab","endLabel","_componentData$isClea","_componentData$dateFo","_componentData$showTi","_componentData$timeFo","_componentData$timeIn","defaultValue","_getDefaultDates","globalMin","undefined","globalMax","getInitialStartDate","start","getInitialEndDate","end","_useState11","setStartDate","_useState12","endDate","setEndDate","_useState13","tempStartDate","setTempStartDate","_useState14","tempEndDate","setTempEndDate","isBusy","interactionApiInProgress","getMaxStartDate","getMinEndDate","closeAllPickers","closeDropdown","toggleDropdown","handleStartDateClick","handleEndDateClick","_wrapperRef$current$o","_wrapperRef$current","doc","current","ownerDocument","document","handleOutsideClick","contains","handleEscape","addEventListener","removeEventListener","handleTimeClick","event","isStartPicker","isTimeClick","closest","classList","setTimeout","startPickerElement","endPickerElement","handleStartTimeClick","handleEndTimeClick","handleStartDateChange","adjustedDate","handleEndDateChange","handleApply","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dateValues","id","wrap","_callee$","_context","prev","next","toISOString","set","interactionType","concat","finish","stop","apply","arguments","_document$getElementB","buttonRect","getBoundingClientRect","dropdownWidth","iframeViewportWidth","documentElement","clientWidth","iframeBodyWidth","getElementById","spaceToRight","spaceToLeft","shiftLeft","updateComponentData","_newData$value","_componentData$value","_newData$value2","_componentData$value2","newData","updateAttributes","on","off","ref","style","variant"],"sources":["../../../../src/shadcn/components/ui/date-filter.tsx"],"sourcesContent":["/* eslint-disable func-style */\n/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Calendar, Loader2Icon, X } from 'lucide-react';\nimport ReactDatePicker from 'react-datepicker';\nimport { zonedTimeToUtc, utcToZonedTime } from 'date-fns-tz';\nimport classnames from 'classnames';\n\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Button } from './button';\nimport sherlock from 'sherlockjs';\n\nexport type DatePickerProps = {\n className?: string;\n dateFormat?: string;\n disabled?: boolean;\n enableTime?: boolean;\n isInputEditable?: boolean;\n isClearable?: boolean;\n label?: string;\n maxDate?: Date | undefined;\n minDate?: Date | undefined;\n onChange(date: Date | null): void;\n value: Date | null;\n open?: boolean;\n onClickOutside?: () => void;\n showTimeSelect?: boolean;\n timeFormat?: string;\n timeIntervals?: number;\n inline?: boolean;\n};\n\ntype DateFilterProps = {\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nconst TIMEZONE = 'TIMEZONE';\n\nfunction getTimezone() {\n return window.localStorage.getItem(TIMEZONE) || 'UTC';\n}\n\nconst formatDateWithTimezone = (date: Date | null, timezone: string, showTime = false): string => {\n if (!date) {\n return '';\n }\n\n const formatOptions: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n ...(showTime && {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }),\n timeZone: timezone,\n };\n\n return date.toLocaleString('en-GB', formatOptions);\n};\n\nconst convertToTargetTimezone = (date: Date | null): Date | null => {\n if (!date) {return null;}\n \n const targetTimezone = getTimezone();\n\n return zonedTimeToUtc(date, targetTimezone);\n};\n\nconst convertFromStoredDate = (date: Date | null): Date | null => {\n if (!date) {return null;}\n \n const targetTimezone = getTimezone();\n \n return utcToZonedTime(date, targetTimezone);\n};\n\nconst inputClasses =\n 'w-full px-3 py-2 border border-gray-300 rounded-md mb-1 focus:outline-none focus:ring-2 focus:ring-blue-500';\nconst disabledClasses = 'opacity-60 cursor-not-allowed bg-gray-50';\nconst enabledClasses = 'cursor-pointer';\n\nconst buttonClasses =\n 'flex items-center gap-2 px-3 py-2 border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors';\nconst closeButtonClasses =\n 'p-1 rounded-md hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500';\n\nconst dropdownClasses =\n 'absolute top-full mt-1 bg-white rounded-lg shadow-lg border border-gray-200 p-4 w-[380px] z-[9999]';\n\nconst parseRelativeDate = (dateString: string | Date | null): Date | null => {\n if (!dateString) {\n return null;\n }\n\n if (dateString instanceof Date) {\n return dateString;\n }\n\n const result = sherlock.parse(dateString as string);\n\n if (result.startDate) {\n return result.startDate;\n }\n\n return null;\n};\n\nconst getDefaultDates = () => {\n const now = new Date();\n const oneYearAgo = new Date(now);\n oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);\n const oneYearFromNow = new Date(now);\n oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1);\n\n return {\n defaultStartDate: new Date(\n oneYearAgo.getFullYear(),\n oneYearAgo.getMonth(),\n oneYearAgo.getDate(),\n 0,\n 0,\n 0,\n ),\n defaultEndDate: new Date(\n oneYearFromNow.getFullYear(),\n oneYearFromNow.getMonth(),\n oneYearFromNow.getDate(),\n 23,\n 59,\n 59,\n ),\n };\n};\n\nconst DateInput = ({\n label,\n value,\n onClick,\n disabled,\n placeholder,\n isOpen,\n showTime = false,\n onChange,\n minDate,\n maxDate,\n}: {\n label: string;\n value: Date | null;\n onClick: () => void;\n disabled?: boolean;\n placeholder?: string;\n isOpen?: boolean;\n showTime?: boolean;\n onChange?: (date: Date | null) => void;\n minDate?: Date | null;\n maxDate?: Date | null;\n}) => {\n const [inputValue, setInputValue] = useState('');\n const [isEditing, setIsEditing] = useState(false);\n const [validationError, setValidationError] = useState<string>('');\n\n const formatDate = (date: Date | null) => {\n const timezone = getTimezone();\n\n return formatDateWithTimezone(date, timezone, showTime);\n };\n\n useEffect(() => {\n if (!isEditing) {\n setInputValue(formatDate(value));\n }\n }, [value, showTime, isEditing]);\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!disabled) {\n onClick();\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n };\n\n const handleInputFocus = () => {\n setIsEditing(true);\n setValidationError('');\n };\n\n const parseInputDate = (inputText: string): Date | null => {\n if (!inputText.trim()) {\n return null;\n }\n\n const commonFormats = [\n // DD/MM/YYYY formats\n /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // DD-MM-YYYY formats\n /^(\\d{1,2})-(\\d{1,2})-(\\d{4})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // YYYY-MM-DD formats\n /^(\\d{4})-(\\d{1,2})-(\\d{1,2})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // YYYY/MM/DD formats\n /^(\\d{4})\\/(\\d{1,2})\\/(\\d{1,2})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n ];\n\n for (const format of commonFormats) {\n const match = inputText.match(format);\n\n if (match) {\n let day: string; let month: string; let year: string; let hours = '0'; let minutes = '0';\n \n if (format.source.startsWith('^(\\\\d{4})')) {\n [, year, month, day, hours = '0', minutes = '0'] = match;\n } else {\n [, day, month, year, hours = '0', minutes = '0'] = match;\n }\n\n const yearNum = parseInt(year, 10);\n const monthNum = parseInt(month, 10);\n const dayNum = parseInt(day, 10);\n const hoursNum = parseInt(hours, 10);\n const minutesNum = parseInt(minutes, 10);\n\n const parsedDate = new Date(\n yearNum,\n monthNum - 1,\n dayNum,\n hoursNum,\n minutesNum\n );\n\n if (\n !isNaN(parsedDate.getTime()) &&\n parsedDate.getFullYear() === yearNum &&\n parsedDate.getMonth() === monthNum - 1 &&\n parsedDate.getDate() === dayNum\n ) {\n return parsedDate;\n }\n }\n }\n\n try {\n const result = sherlock.parse(inputText);\n\n if (result.startDate) {\n return result.startDate;\n }\n } catch (error) {\n\n return null;\n }\n\n return null;\n };\n\n const validateDateRange = (date: Date | null): string => {\n if (!date) {\n return '';\n }\n\n if (minDate && date < minDate) {\n return `Minimum allowed date is ${formatDateWithTimezone(minDate, getTimezone(), false)}`;\n }\n\n if (maxDate && date > maxDate) {\n return `Maximum allowed date is ${formatDateWithTimezone(maxDate, getTimezone(), false)}`;\n }\n\n return '';\n };\n\n const handleInputBlur = () => {\n setIsEditing(false);\n \n if (onChange) {\n const parsedDate = parseInputDate(inputValue);\n \n if (parsedDate) {\n const errorMessage = validateDateRange(parsedDate);\n setValidationError(errorMessage);\n \n if (!errorMessage) {\n onChange(parsedDate);\n }\n } else if (inputValue.trim() === '') {\n setValidationError('');\n onChange(null);\n } else {\n setValidationError('');\n setInputValue(formatDate(value));\n }\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleInputBlur();\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setInputValue(formatDate(value));\n setValidationError('');\n setIsEditing(false);\n }\n };\n\n return (\n <div className=\"relative\">\n <input\n value={inputValue}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleKeyDown}\n onClick={handleClick}\n placeholder={placeholder || label}\n disabled={disabled}\n className={`${inputClasses} ${disabled ? disabledClasses : enabledClasses} ${\n isOpen ? 'ring-2 ring-blue-500' : ''\n }`}\n title={showTime ? \n \"Enter date and time\" : \n \"Enter date\"\n }\n />\n <div className=\"absolute right-3 top-7 transform -translate-y-1/2 flex items-center gap-1\">\n <Calendar size={16} className=\"text-gray-400 cursor-pointer\" onClick={handleClick} />\n </div>\n {validationError && (\n <div className=\"absolute top-full left-0 text-xs text-red-600 px-2 mb-2 z-10\">\n {validationError}\n </div>\n )}\n </div>\n );\n};\n\nexport function DatePicker({\n className = '',\n disabled = false,\n enableTime = false,\n isClearable = true,\n maxDate,\n minDate,\n onChange,\n value = null,\n open,\n onClickOutside,\n showTimeSelect = false,\n timeFormat = 'HH:mm',\n timeIntervals = 15,\n inline = true,\n}: DatePickerProps) {\n const dateFormat = showTimeSelect || enableTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n\n const date = typeof value === 'string' && value ? new Date(value) : value;\n\n const shouldShowTime = showTimeSelect || enableTime;\n\n const datePickerProps = {\n selected: date,\n minDate,\n maxDate,\n disabled,\n isClearable,\n onChange,\n dateFormat,\n showTimeSelect: shouldShowTime,\n timeFormat,\n timeIntervals,\n timeCaption: 'Time',\n portalId: 'date-picker-portal',\n popperClassName: 'date-picker-popper !z-[9999]',\n popperPlacement: 'bottom-end',\n inline,\n open,\n onClickOutside,\n className: classnames(className, inputClasses),\n } as any;\n\n return (\n <div className={`relative inline-block ${className}`}>\n {\n <div className=\"absolute z-[9999] mt-1 border rounded-md shadow-lg bg-white\">\n <ReactDatePicker {...datePickerProps} />\n </div>\n }\n </div>\n );\n}\n\nexport function renderDateFilter({ gjsModel, performInteraction }: DateFilterProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const startDatePickerRef = useRef<HTMLDivElement>(null);\n const endDatePickerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [isApplying, setIsApplying] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isStartDateOpen, setIsStartDateOpen] = useState(false);\n const [isEndDateOpen, setIsEndDateOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ left: 'auto', right: '0' });\n\n const {\n className = '',\n affectedComponents = [],\n startLabel = 'Start date',\n endLabel = 'End date',\n isClearable = true,\n dateFormat = 'yyyy-MM-dd',\n minDate,\n maxDate,\n showTimeSelect = true,\n timeFormat = 'HH:mm',\n timeIntervals = 15,\n value,\n default: defaultValue,\n } = componentData;\n\n const { defaultStartDate, defaultEndDate } = getDefaultDates();\n\n const globalMin = minDate ? parseRelativeDate(minDate) : undefined;\n const globalMax = maxDate ? parseRelativeDate(maxDate) : undefined;\n\n const getInitialStartDate = (): Date | null => {\n if (value?.start) {\n return new Date(value.start);\n }\n\n if (defaultValue?.start) {\n return parseRelativeDate(defaultValue.start);\n }\n\n return defaultStartDate;\n };\n\n const getInitialEndDate = (): Date | null => {\n if (value?.end) {\n return new Date(value.end);\n }\n\n if (defaultValue?.end) {\n return parseRelativeDate(defaultValue.end);\n }\n\n return defaultEndDate;\n };\n\n const [startDate, setStartDate] = useState<Date | null>(getInitialStartDate());\n const [endDate, setEndDate] = useState<Date | null>(getInitialEndDate());\n const [tempStartDate, setTempStartDate] = useState<Date | null>(null);\n const [tempEndDate, setTempEndDate] = useState<Date | null>(null);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n\n const getMaxStartDate = () => {\n return globalMax || tempEndDate;\n };\n\n const getMinEndDate = () => {\n return globalMin || tempStartDate;\n };\n\n const closeAllPickers = () => {\n setIsStartDateOpen(false);\n setIsEndDateOpen(false);\n };\n\n const closeDropdown = () => {\n setIsDropdownOpen(false);\n closeAllPickers();\n };\n\n const toggleDropdown = () => {\n if (!isDropdownOpen) {\n closeAllPickers();\n }\n\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const handleStartDateClick = () => {\n if (!isApplying && !isBusy) {\n setIsEndDateOpen(false);\n setIsStartDateOpen(!isStartDateOpen);\n }\n };\n\n const handleEndDateClick = () => {\n if (!isApplying && !isBusy) {\n setIsStartDateOpen(false);\n setIsEndDateOpen(!isEndDateOpen);\n }\n };\n\n useEffect(() => {\n const doc = wrapperRef.current?.ownerDocument ?? document;\n\n function handleOutsideClick(e: PointerEvent) {\n if (isDropdownOpen && wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n closeDropdown();\n }\n }\n\n function handleEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n closeDropdown();\n }\n }\n\n doc.addEventListener('pointerdown', handleOutsideClick);\n doc.addEventListener('keydown', handleEscape);\n\n return () => {\n doc.removeEventListener('pointerdown', handleOutsideClick);\n doc.removeEventListener('keydown', handleEscape);\n };\n }, [isDropdownOpen]);\n\n // Add click event listeners to detect time selector clicks\n useEffect(() => {\n const handleTimeClick = (event: MouseEvent, isStartPicker: boolean) => {\n const target = event.target as HTMLElement;\n \n // Check if the click was on time-related elements\n const isTimeClick = target.closest('.react-datepicker__time-container') ||\n target.closest('.react-datepicker__time-list') ||\n target.closest('.react-datepicker__time-list-item') ||\n target.classList.contains('react-datepicker__time-list-item');\n\n if (isTimeClick && showTimeSelect) {\n // Close the picker after a small delay to allow the time selection to complete\n setTimeout(() => {\n if (isStartPicker) {\n setIsStartDateOpen(false);\n } else {\n setIsEndDateOpen(false);\n }\n }, 100);\n }\n };\n\n const startPickerElement = startDatePickerRef.current;\n const endPickerElement = endDatePickerRef.current;\n\n if (isStartDateOpen && startPickerElement) {\n const handleStartTimeClick = (e: MouseEvent) => handleTimeClick(e, true);\n startPickerElement.addEventListener('click', handleStartTimeClick);\n \n return () => {\n startPickerElement.removeEventListener('click', handleStartTimeClick);\n };\n }\n\n if (isEndDateOpen && endPickerElement) {\n const handleEndTimeClick = (e: MouseEvent) => handleTimeClick(e, false);\n endPickerElement.addEventListener('click', handleEndTimeClick);\n \n return () => {\n endPickerElement.removeEventListener('click', handleEndTimeClick);\n };\n }\n\n // Always return undefined if no cleanup is needed\n return undefined;\n }, [isStartDateOpen, isEndDateOpen, showTimeSelect]);\n\n const handleStartDateChange = (date: Date | null) => {\n const adjustedDate = convertToTargetTimezone(date);\n setTempStartDate(adjustedDate);\n\n if (!showTimeSelect) {\n setIsStartDateOpen(false);\n }\n };\n\n const handleEndDateChange = (date: Date | null) => {\n const adjustedDate = convertToTargetTimezone(date);\n setTempEndDate(adjustedDate);\n\n if (!showTimeSelect) {\n setIsEndDateOpen(false);\n }\n };\n\n const handleApply = async () => {\n setIsApplying(true);\n\n try {\n const dateValues = {\n start: tempStartDate?.toISOString() || null,\n end: tempEndDate?.toISOString() || null,\n };\n\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: dateValues,\n });\n\n const id = gjsModel.get('id');\n\n setStartDate(tempStartDate);\n setEndDate(tempEndDate);\n\n await performInteraction({\n interactionType: 'dateFilter',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n\n closeDropdown();\n } finally {\n setIsApplying(false);\n }\n };\n\n useEffect(() => {\n if (isDropdownOpen) {\n setTempStartDate(startDate);\n setTempEndDate(endDate);\n } else {\n closeAllPickers();\n }\n }, [isDropdownOpen, startDate, endDate]);\n\n useEffect(() => {\n if (!isDropdownOpen || !buttonRef.current) {\n return;\n }\n\n const buttonRect = buttonRef.current.getBoundingClientRect();\n const dropdownWidth = 380;\n const iframeViewportWidth = document.documentElement.clientWidth;\n const iframeBodyWidth =\n document.getElementById('dashboard-root')?.clientWidth || iframeViewportWidth;\n\n const spaceToRight = iframeBodyWidth - buttonRect.right;\n const spaceToLeft = buttonRect.left;\n\n if (spaceToLeft >= dropdownWidth) {\n setDropdownPosition({ left: 'auto', right: '0px' });\n } else if (spaceToRight < dropdownWidth && spaceToLeft < dropdownWidth) {\n const shiftLeft = dropdownWidth - spaceToRight + 16;\n setDropdownPosition({ left: `-${shiftLeft}px`, right: 'auto' });\n } else if (spaceToRight >= dropdownWidth) {\n setDropdownPosition({ left: '0px', right: 'auto' });\n }\n }, [isDropdownOpen]);\n\n useEffect(() => {\n const updateComponentData = () => {\n const newData = { ...gjsModel.get('componentProps') };\n setComponentData(newData);\n\n if (newData.value?.start && newData.value.start !== componentData.value?.start) {\n setStartDate(new Date(newData.value.start));\n }\n\n if (newData.value?.end && newData.value.end !== componentData.value?.end) {\n setEndDate(new Date(newData.value.end));\n }\n };\n\n const updateAttributes = () => {\n setAttributes({ ...gjsModel.get('attributes') });\n };\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel, componentData.value]);\n\n return (\n <div ref={wrapperRef} className={`relative ${className}`}>\n <button\n ref={buttonRef}\n onClick={toggleDropdown}\n disabled={isBusy}\n className={`${buttonClasses} ${isBusy ? disabledClasses : enabledClasses}`}\n title=\"Open Date & Time Filter\"\n >\n <div className=\"flex items-center gap-1\">\n <Calendar size={16} className=\"text-gray-600\" />\n </div>\n {isBusy && <Loader2Icon size={14} className=\"animate-spin text-blue-500\" />}\n </button>\n\n {isDropdownOpen && (\n <div ref={dropdownRef} className={dropdownClasses} style={dropdownPosition}>\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-gray-900\">Select date & time range</h3>\n <button onClick={closeDropdown} className={closeButtonClasses}>\n <X size={14} className=\"text-gray-400\" />\n </button>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700\">{startLabel}</label>\n <div className=\"relative\">\n <DateInput\n label={startLabel}\n value={tempStartDate}\n onClick={handleStartDateClick}\n disabled={isApplying}\n placeholder=\"Select start date\"\n isOpen={isStartDateOpen}\n showTime={showTimeSelect}\n onChange={handleStartDateChange}\n minDate={globalMin ? (convertFromStoredDate(globalMin) ?? undefined) : undefined}\n maxDate={getMaxStartDate() ? (convertFromStoredDate(getMaxStartDate()) ?? undefined) : undefined}\n />\n </div>\n\n {isStartDateOpen && (\n <div ref={startDatePickerRef} className=\"mt-2 p-2\">\n <ReactDatePicker\n selected={convertFromStoredDate(tempStartDate)}\n onChange={handleStartDateChange}\n minDate={globalMin ? (convertFromStoredDate(globalMin) ?? undefined) : undefined}\n maxDate={getMaxStartDate() ? (convertFromStoredDate(getMaxStartDate()) ?? undefined) : undefined}\n showTimeSelect={showTimeSelect}\n timeFormat={timeFormat}\n timeIntervals={timeIntervals}\n timeCaption=\"Time\"\n dateFormat={showTimeSelect ? 'dd/MM/yyyy HH:mm' : dateFormat}\n inline={true}\n isClearable={isClearable}\n disabled={isApplying}\n />\n </div>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700\">{endLabel}</label>\n <div className=\"relative\">\n <DateInput\n label={endLabel}\n value={tempEndDate}\n onClick={handleEndDateClick}\n disabled={isApplying}\n placeholder=\"Select end date\"\n isOpen={isEndDateOpen}\n showTime={showTimeSelect}\n onChange={handleEndDateChange}\n minDate={getMinEndDate() ? (convertFromStoredDate(getMinEndDate()) ?? undefined) : undefined}\n maxDate={globalMax ? (convertFromStoredDate(globalMax) ?? undefined) : undefined}\n />\n </div>\n\n {isEndDateOpen && (\n <div ref={endDatePickerRef} className=\"mt-2 p-2\">\n <ReactDatePicker\n selected={convertFromStoredDate(tempEndDate)}\n onChange={handleEndDateChange}\n minDate={getMinEndDate() ? (convertFromStoredDate(getMinEndDate()) ?? undefined) : undefined}\n maxDate={globalMax ? (convertFromStoredDate(globalMax) ?? undefined) : undefined}\n showTimeSelect={showTimeSelect}\n timeFormat={timeFormat}\n timeIntervals={timeIntervals}\n timeCaption=\"Time\"\n dateFormat={showTimeSelect ? 'dd/MM/yyyy HH:mm' : dateFormat}\n inline={true}\n isClearable={isClearable}\n disabled={isApplying}\n />\n </div>\n )}\n </div>\n\n <div className=\"flex gap-2 pt-2\">\n <Button\n variant=\"outline\"\n onClick={closeDropdown}\n disabled={isApplying}\n className=\"flex-1 h-8 text-xs bg-[#EAECFB] border border-[#2A44D4] text-[#263DBF] hover:bg-[#EAECFB] hover:text-[#263DBF]\"\n size=\"sm\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleApply}\n disabled={isApplying}\n className=\"flex-1 h-8 text-xs bg-[#2A44D4] text-white hover:bg-[#2A44D4] hover:text-white\"\n size=\"sm\"\n >\n {isApplying ? (\n <>\n <Loader2Icon size={12} className=\"animate-spin mr-1\" />\n </>\n ) : (\n 'Apply'\n )}\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useCallback,useEffect,useRef,useState}from"react";import{ChevronDown,ChevronUp,ListFilter as FilterIcon,Loader2Icon}from"lucide-react";import{Button}from"./button";import{Checkbox}from"./checkbox";import{ScrollArea}from"./scroll-area";import{getAffectedComponentsWithLoader}from"../../../helpers";import{renderDateFilter}from"./date-filter";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function FilterHeader(_ref){var label=_ref.label,count=_ref.count,isDisabled=_ref.isDisabled,isDropdownOpen=_ref.isDropdownOpen,isLoading=_ref.isLoading,toggleOpen=_ref.toggleOpen;var ChevronIcon=isDropdownOpen?ChevronUp:ChevronDown;return/*#__PURE__*/_jsxs(Button,{variant:"outline",size:"sm",disabled:isDisabled,onClick:toggleOpen,className:"px-2",children:[/*#__PURE__*/_jsx(FilterIcon,{size:16}),count>0?label+" ("+count+")":label,isLoading?/*#__PURE__*/_jsx(Loader2Icon,{className:"ml-2 animate-spin",size:16}):/*#__PURE__*/_jsx(ChevronIcon,{size:16,className:"ml-1"})]})}function FilterActions(_ref2){var selected=_ref2.selected,allSelected=_ref2.allSelected,onClear=_ref2.onClear,onSelectAll=_ref2.onSelectAll,isDisabled=_ref2.isDisabled;return/*#__PURE__*/_jsxs("div",{className:"flex items-center mb-3",children:[/*#__PURE__*/_jsx(Checkbox,{checked:allSelected,onCheckedChange:function onCheckedChange(){return allSelected?onClear():onSelectAll()},disabled:isDisabled}),/*#__PURE__*/_jsx("span",{className:"ml-2 text-sm text-gray-900",children:"Select All"}),selected.length>0&&/*#__PURE__*/_jsx("button",{type:"button",className:"ml-auto text-sm text-blue-600 hover:underline",onMouseDown:function onMouseDown(e){e.stopPropagation();e.preventDefault()},onClick:onClear,disabled:isDisabled,children:"Clear All"})]})}function FilterOptionList(_ref3){var options=_ref3.options,selected=_ref3.selected,onToggle=_ref3.onToggle,isDisabled=_ref3.isDisabled;return/*#__PURE__*/_jsx(ScrollArea,{viewportClassName:"max-h-48 overflow-y-auto mb-4 space-y-2",children:options.length>0?options.map(function(opt){return/*#__PURE__*/_jsxs("label",{className:"flex items-center space-x-2 hover:bg-gray-100 rounded p-1 transition hover:cursor-pointer",onClick:function onClick(e){e.preventDefault();e.stopPropagation();if(!isDisabled){onToggle(opt.value)}},children:[/*#__PURE__*/_jsx(Checkbox,{checked:selected.includes(opt.value),onChange:function onChange(){// Prevent checkbox from toggling when clicking label
2
- },disabled:isDisabled}),/*#__PURE__*/_jsx("span",{className:"text-sm text-gray-900",children:opt.label})]},opt.value)}):/*#__PURE__*/_jsx("div",{className:"text-sm text-gray-500",children:"No results found"})})}export function renderFilter(_ref4){var gjsModel=_ref4.gjsModel,performInteraction=_ref4.performInteraction;var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var _componentData$option=componentData.options,options=_componentData$option===void 0?[]:_componentData$option,_componentData$value=componentData.value,value=_componentData$value===void 0?[]:_componentData$value,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$text=componentData.text,label=_componentData$text===void 0?"Filter":_componentData$text,_componentData$filter=componentData.filterType,filterType=_componentData$filter===void 0?"multiselect":_componentData$filter;var actualOptions=function(){if(options&&typeof options==="object"&&options.name==="__peak_placeholder"){return[]}return Array.isArray(options)?options:[]}();if(filterType==="date"){return renderDateFilter({gjsModel:gjsModel,performInteraction:performInteraction})}var wrapperRef=useRef(null);var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(false),isDropdownOpen=_useState3[0],setIsDropdownOpen=_useState3[1];var _useState4=useState(""),searchQuery=_useState4[0],setSearchQuery=_useState4[1];var _useState5=useState(false),isApplying=_useState5[0],setIsApplying=_useState5[1];var _useState6=useState({left:"auto",right:"0"}),dropdownPosition=_useState6[0],setDropdownPosition=_useState6[1];var defaultValue=componentData["default"]||[];var _useState7=useState(function(){return Array.isArray(value)&&value.length>0?value:defaultValue}),selectedValues=_useState7[0],setSelectedValues=_useState7[1];var isMultiSelect=filterType==="multiselect";var hasPlaceholderOptions=options&&typeof options==="object"&&options.name==="__peak_placeholder";var hasError=attributes.error||componentData.error;var isLoading=!hasError&&(attributes.interactionApiInProgress||isApplying||attributes.loading||hasPlaceholderOptions);var isBusy=isLoading||hasError;var allOptionsSelected=selectedValues.length===actualOptions.length&&actualOptions.length>0;useEffect(function(){var _document$getElementB;if(!isDropdownOpen||!wrapperRef.current){return}var filterRect=wrapperRef.current.getBoundingClientRect();var dropdownWidth=256;var iframeViewportWidth=document.documentElement.clientWidth;var iframeBodyWidth=((_document$getElementB=document.getElementById("dashboard-root"))==null?void 0:_document$getElementB.clientWidth)||iframeViewportWidth;var spaceToRight=iframeBodyWidth-filterRect.right;var spaceToLeft=filterRect.left;if(spaceToLeft>=dropdownWidth){setDropdownPosition({left:"auto",right:"0px"})}else if(spaceToRight<dropdownWidth&&spaceToLeft<dropdownWidth){var shiftLeft=dropdownWidth-spaceToRight+16;setDropdownPosition({left:"-"+shiftLeft+"px",right:"auto"})}else if(spaceToRight>=dropdownWidth){setDropdownPosition({left:"0px",right:"auto"})}},[isDropdownOpen]);useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);useEffect(function(){var _wrapperRef$current$o,_wrapperRef$current;var doc=(_wrapperRef$current$o=(_wrapperRef$current=wrapperRef.current)==null?void 0:_wrapperRef$current.ownerDocument)!=null?_wrapperRef$current$o:document;function handleOutsideClick(e){if(isDropdownOpen&&wrapperRef.current&&!wrapperRef.current.contains(e.target)){setIsDropdownOpen(false)}}function handleEscape(e){if(e.key==="Escape"){setIsDropdownOpen(false)}}doc.addEventListener("pointerdown",handleOutsideClick);doc.addEventListener("keydown",handleEscape);return function(){doc.removeEventListener("pointerdown",handleOutsideClick);doc.removeEventListener("keydown",handleEscape)}},[isDropdownOpen]);var filteredOptions=actualOptions.filter(function(opt){return String(opt.label).toLowerCase().includes(searchQuery.toLowerCase())});function updateAndApply(_x){return _updateAndApply.apply(this,arguments)}function _updateAndApply(){_updateAndApply=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(newValues){var id;return _regeneratorRuntime.wrap(function(_context){while(1)switch(_context.prev=_context.next){case 0:if(newValues===void 0){newValues=selectedValues}setIsApplying(true);_context.prev=1;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{value:newValues}));id=gjsModel.get("id");_context.next=2;return performInteraction({interactionType:"filter",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 2:_context.prev=2;setIsApplying(false);setIsDropdownOpen(false);return _context.finish(2);case 3:case"end":return _context.stop()}},_callee,null,[[1,,2,3]])}));return _updateAndApply.apply(this,arguments)}var handleOptionToggle=useCallback(function(val){if(isMultiSelect){setSelectedValues(function(prev){return prev.includes(val)?prev.filter(function(v){return v!==val}):[].concat(prev,[val])})}else{if(selectedValues.includes(val)){setSelectedValues([]);updateAndApply([])}else{var singleValue=[val];setSelectedValues(singleValue);updateAndApply(singleValue)}}},[isMultiSelect,selectedValues]);function handleClearAll(){setSelectedValues([])}function handleSelectAll(){setSelectedValues(actualOptions.map(function(o){return o.value}))}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"relative inline-block "+className,style:{color:"#2A44D4",backgroundColor:"rgb(255 255 255)"},children:[/*#__PURE__*/_jsx(FilterHeader,{label:label,count:selectedValues.length,isDisabled:isBusy,isDropdownOpen:isDropdownOpen,isLoading:isLoading,toggleOpen:function toggleOpen(){return setIsDropdownOpen(function(prev){return!prev})}}),isDropdownOpen&&/*#__PURE__*/_jsxs("div",{className:"absolute top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50",style:dropdownPosition,children:[/*#__PURE__*/_jsx("input",{type:"text",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},className:"w-full mb-3 px-2 py-1 border rounded focus:outline-none",disabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsx(FilterActions,{selected:selectedValues,allSelected:allOptionsSelected,onClear:handleClearAll,onSelectAll:handleSelectAll,isDisabled:isBusy}),/*#__PURE__*/_jsx(FilterOptionList,{options:filteredOptions,selected:selectedValues,onToggle:handleOptionToggle,isDisabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsxs("div",{className:"flex justify-end space-x-2",children:[/*#__PURE__*/_jsx(Button,{variant:"ghost",size:"sm",onClick:function onClick(){return setIsDropdownOpen(false)},disabled:isApplying,className:"bg-[#EAECFB] border border-[#2A44D4] text-[#263DBF] hover:bg-[#EAECFB] hover:text-[#263DBF]",children:"Cancel"}),/*#__PURE__*/_jsxs(Button,{variant:"default",size:"sm",onClick:function onClick(){return updateAndApply(selectedValues)},disabled:isBusy,className:"bg-[#2A44D4] text-white hover:bg-[#2A44D4] hover:text-white",children:[isApplying&&/*#__PURE__*/_jsx(Loader2Icon,{className:"animate-spin mr-2",size:16}),"Apply"]})]})]})]})}
2
+ },disabled:isDisabled}),/*#__PURE__*/_jsx("span",{className:"text-sm text-gray-900",children:opt.label})]},opt.value)}):/*#__PURE__*/_jsx("div",{className:"text-sm text-gray-500",children:"No results found"})})}export function renderFilter(_ref4){var gjsModel=_ref4.gjsModel,performInteraction=_ref4.performInteraction;var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var _componentData$option=componentData.options,options=_componentData$option===void 0?[]:_componentData$option,_componentData$value=componentData.value,value=_componentData$value===void 0?[]:_componentData$value,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$text=componentData.text,label=_componentData$text===void 0?"Filter":_componentData$text,_componentData$filter=componentData.filterType,filterType=_componentData$filter===void 0?"multiselect":_componentData$filter;var actualOptions=function(){if(options&&typeof options==="object"&&options.name==="__peak_placeholder"){return[]}return Array.isArray(options)?options:[]}();if(filterType==="date"){return renderDateFilter({gjsModel:gjsModel,performInteraction:performInteraction})}var wrapperRef=useRef(null);var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(false),isDropdownOpen=_useState3[0],setIsDropdownOpen=_useState3[1];var _useState4=useState(""),searchQuery=_useState4[0],setSearchQuery=_useState4[1];var _useState5=useState(false),isApplying=_useState5[0],setIsApplying=_useState5[1];var _useState6=useState({left:"auto",right:"0"}),dropdownPosition=_useState6[0],setDropdownPosition=_useState6[1];var defaultValue=componentData["default"]||[];var _useState7=useState(function(){return Array.isArray(value)&&value.length>0?value:defaultValue}),selectedValues=_useState7[0],setSelectedValues=_useState7[1];var isMultiSelect=filterType==="multiselect";var hasPlaceholderOptions=options&&typeof options==="object"&&options.name==="__peak_placeholder";var hasError=attributes.error||componentData.error;var isLoading=!hasError&&(attributes.interactionApiInProgress||isApplying||attributes.loading||hasPlaceholderOptions);var isBusy=isLoading||hasError;var allOptionsSelected=selectedValues.length===actualOptions.length&&actualOptions.length>0;useEffect(function(){var _document$getElementB;if(!isDropdownOpen||!wrapperRef.current){return}var filterRect=wrapperRef.current.getBoundingClientRect();var dropdownWidth=256;var iframeViewportWidth=document.documentElement.clientWidth;var iframeBodyWidth=((_document$getElementB=document.getElementById("dashboard-root"))==null?void 0:_document$getElementB.clientWidth)||iframeViewportWidth;var spaceToRight=iframeBodyWidth-filterRect.right;var spaceToLeft=filterRect.left;if(spaceToLeft>=dropdownWidth){setDropdownPosition({left:"auto",right:"0px"})}else if(spaceToRight<dropdownWidth&&spaceToLeft<dropdownWidth){var shiftLeft=dropdownWidth-spaceToRight+16;setDropdownPosition({left:"-"+shiftLeft+"px",right:"auto"})}else if(spaceToRight>=dropdownWidth){setDropdownPosition({left:"0px",right:"auto"})}},[isDropdownOpen]);useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);useEffect(function(){var _wrapperRef$current$o,_wrapperRef$current;var doc=(_wrapperRef$current$o=(_wrapperRef$current=wrapperRef.current)==null?void 0:_wrapperRef$current.ownerDocument)!=null?_wrapperRef$current$o:document;function handleOutsideClick(e){if(isDropdownOpen&&wrapperRef.current&&!wrapperRef.current.contains(e.target)){setIsDropdownOpen(false)}}function handleEscape(e){if(e.key==="Escape"){setIsDropdownOpen(false)}}doc.addEventListener("pointerdown",handleOutsideClick);doc.addEventListener("keydown",handleEscape);return function(){doc.removeEventListener("pointerdown",handleOutsideClick);doc.removeEventListener("keydown",handleEscape)}},[isDropdownOpen]);var filteredOptions=actualOptions.filter(function(opt){return String(opt.label).toLowerCase().includes(searchQuery.toLowerCase())});function updateAndApply(_x){return _updateAndApply.apply(this,arguments)}function _updateAndApply(){_updateAndApply=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(newValues){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(newValues===void 0){newValues=selectedValues}setIsApplying(true);_context.prev=2;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{value:newValues}));id=gjsModel.get("id");_context.next=7;return performInteraction({interactionType:"filter",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 7:_context.prev=7;setIsApplying(false);setIsDropdownOpen(false);return _context.finish(7);case 11:case"end":return _context.stop()}},_callee,null,[[2,,7,11]])}));return _updateAndApply.apply(this,arguments)}var handleOptionToggle=useCallback(function(val){if(isMultiSelect){setSelectedValues(function(prev){return prev.includes(val)?prev.filter(function(v){return v!==val}):[].concat(prev,[val])})}else{if(selectedValues.includes(val)){setSelectedValues([]);updateAndApply([])}else{var singleValue=[val];setSelectedValues(singleValue);updateAndApply(singleValue)}}},[isMultiSelect,selectedValues]);function handleClearAll(){setSelectedValues([])}function handleSelectAll(){setSelectedValues(actualOptions.map(function(o){return o.value}))}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"relative inline-block "+className,style:{color:"#2A44D4",backgroundColor:"rgb(255 255 255)"},children:[/*#__PURE__*/_jsx(FilterHeader,{label:label,count:selectedValues.length,isDisabled:isBusy,isDropdownOpen:isDropdownOpen,isLoading:isLoading,toggleOpen:function toggleOpen(){return setIsDropdownOpen(function(prev){return!prev})}}),isDropdownOpen&&/*#__PURE__*/_jsxs("div",{className:"absolute top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50",style:dropdownPosition,children:[/*#__PURE__*/_jsx("input",{type:"text",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},className:"w-full mb-3 px-2 py-1 border rounded focus:outline-none",disabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsx(FilterActions,{selected:selectedValues,allSelected:allOptionsSelected,onClear:handleClearAll,onSelectAll:handleSelectAll,isDisabled:isBusy}),/*#__PURE__*/_jsx(FilterOptionList,{options:filteredOptions,selected:selectedValues,onToggle:handleOptionToggle,isDisabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsxs("div",{className:"flex justify-end space-x-2",children:[/*#__PURE__*/_jsx(Button,{variant:"ghost",size:"sm",onClick:function onClick(){return setIsDropdownOpen(false)},disabled:isApplying,className:"bg-[#EAECFB] border border-[#2A44D4] text-[#263DBF] hover:bg-[#EAECFB] hover:text-[#263DBF]",children:"Cancel"}),/*#__PURE__*/_jsxs(Button,{variant:"default",size:"sm",onClick:function onClick(){return updateAndApply(selectedValues)},disabled:isBusy,className:"bg-[#2A44D4] text-white hover:bg-[#2A44D4] hover:text-white",children:[isApplying&&/*#__PURE__*/_jsx(Loader2Icon,{className:"animate-spin mr-2",size:16}),"Apply"]})]})]})]})}
3
3
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","names":["useCallback","useEffect","useRef","useState","ChevronDown","ChevronUp","ListFilter","FilterIcon","Loader2Icon","Button","Checkbox","ScrollArea","getAffectedComponentsWithLoader","renderDateFilter","jsx","_jsx","jsxs","_jsxs","FilterHeader","_ref","label","count","isDisabled","isDropdownOpen","isLoading","toggleOpen","ChevronIcon","variant","size","disabled","onClick","className","children","FilterActions","_ref2","selected","allSelected","onClear","onSelectAll","checked","onCheckedChange","length","type","onMouseDown","e","stopPropagation","preventDefault","FilterOptionList","_ref3","options","onToggle","viewportClassName","map","opt","value","includes","onChange","renderFilter","_ref4","gjsModel","performInteraction","_useState","_extends","get","componentData","setComponentData","_componentData$option","_componentData$value","_componentData$classN","_componentData$affect","affectedComponents","_componentData$text","text","_componentData$filter","filterType","actualOptions","name","Array","isArray","wrapperRef","_useState2","attributes","setAttributes","_useState3","setIsDropdownOpen","_useState4","searchQuery","setSearchQuery","_useState5","isApplying","setIsApplying","_useState6","left","right","dropdownPosition","setDropdownPosition","defaultValue","_useState7","selectedValues","setSelectedValues","isMultiSelect","hasPlaceholderOptions","hasError","error","interactionApiInProgress","loading","isBusy","allOptionsSelected","_document$getElementB","current","filterRect","getBoundingClientRect","dropdownWidth","iframeViewportWidth","document","documentElement","clientWidth","iframeBodyWidth","getElementById","spaceToRight","spaceToLeft","shiftLeft","updateComponentData","updateAttributes","on","off","_wrapperRef$current$o","_wrapperRef$current","doc","ownerDocument","handleOutsideClick","contains","target","handleEscape","key","addEventListener","removeEventListener","filteredOptions","filter","String","toLowerCase","updateAndApply","_x","_updateAndApply","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","newValues","id","wrap","_context","prev","next","set","interactionType","concat","finish","stop","handleOptionToggle","val","v","singleValue","handleClearAll","handleSelectAll","o","ref","style","color","backgroundColor","placeholder"],"sources":["../../../../src/shadcn/components/ui/filter.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronDown, ChevronUp, ListFilter as FilterIcon, Loader2Icon } from 'lucide-react';\n\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport { ScrollArea } from './scroll-area';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { renderDateFilter } from './date-filter';\n\ntype FilterOption = {\n label: string;\n value: string;\n};\n\ntype FilterProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\ntype FilterHeaderProps = {\n label: string;\n count: number;\n isDisabled: boolean;\n isDropdownOpen: boolean;\n isLoading: boolean;\n toggleOpen: () => void;\n};\n\ntype FilterActionsProps = {\n selected: string[];\n allSelected: boolean;\n onClear: () => void;\n onSelectAll: () => void;\n isDisabled: boolean;\n};\n\ntype FilterOptionListProps = {\n options: FilterOption[];\n selected: string[];\n onToggle: (value: string) => void;\n isDisabled: boolean;\n};\n\nfunction FilterHeader({\n label,\n count,\n isDisabled,\n isDropdownOpen,\n isLoading,\n toggleOpen,\n}: FilterHeaderProps) {\n const ChevronIcon = isDropdownOpen ? ChevronUp : ChevronDown;\n\n return (\n <Button variant=\"outline\" size=\"sm\" disabled={isDisabled} onClick={toggleOpen} className=\"px-2\">\n <FilterIcon size={16} />\n {count > 0 ? `${label} (${count})` : label}\n {isLoading ? (\n <Loader2Icon className=\"ml-2 animate-spin\" size={16} />\n ) : (\n <ChevronIcon size={16} className=\"ml-1\" />\n )}\n </Button>\n );\n}\n\nfunction FilterActions({\n selected,\n allSelected,\n onClear,\n onSelectAll,\n isDisabled,\n}: FilterActionsProps) {\n return (\n <div className=\"flex items-center mb-3\">\n <Checkbox\n checked={allSelected}\n onCheckedChange={() => (allSelected ? onClear() : onSelectAll())}\n disabled={isDisabled}\n />\n <span className=\"ml-2 text-sm text-gray-900\">Select All</span>\n {selected.length > 0 && (\n <button\n type=\"button\"\n className=\"ml-auto text-sm text-blue-600 hover:underline\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={onClear}\n disabled={isDisabled}\n >\n Clear All\n </button>\n )}\n </div>\n );\n}\n\nfunction FilterOptionList({ options, selected, onToggle, isDisabled }: FilterOptionListProps) {\n return (\n <ScrollArea viewportClassName=\"max-h-48 overflow-y-auto mb-4 space-y-2\">\n {options.length > 0 ? (\n options.map((opt) => (\n <label\n key={opt.value}\n className=\"flex items-center space-x-2 hover:bg-gray-100 rounded p-1 transition hover:cursor-pointer\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!isDisabled) {\n onToggle(opt.value);\n }\n }}\n >\n <Checkbox\n checked={selected.includes(opt.value)}\n onChange={() => {\n // Prevent checkbox from toggling when clicking label\n }}\n disabled={isDisabled}\n />\n <span className=\"text-sm text-gray-900\">{opt.label}</span>\n </label>\n ))\n ) : (\n <div className=\"text-sm text-gray-500\">No results found</div>\n )}\n </ScrollArea>\n );\n}\n\nexport function renderFilter({ gjsModel, performInteraction }: FilterProps) {\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n\n const {\n options = [],\n value = [],\n className = '',\n affectedComponents = [],\n text: label = 'Filter',\n filterType = 'multiselect',\n } = componentData;\n\n const actualOptions = (() => {\n if (options && typeof options === 'object' && options.name === '__peak_placeholder') {\n return [];\n }\n\n return Array.isArray(options) ? options : [];\n })();\n\n if (filterType === 'date') {\n return renderDateFilter({ gjsModel, performInteraction });\n }\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [isApplying, setIsApplying] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ left: 'auto', right: '0' });\n\n const defaultValue = componentData.default || [];\n\n const [selectedValues, setSelectedValues] = useState<string[]>(() => {\n return Array.isArray(value) && value.length > 0 ? value : defaultValue;\n });\n\n const isMultiSelect = filterType === 'multiselect';\n const hasPlaceholderOptions = options && typeof options === 'object' && options.name === '__peak_placeholder';\n const hasError = attributes.error || componentData.error;\n const isLoading = !hasError && (attributes.interactionApiInProgress || isApplying || attributes.loading || hasPlaceholderOptions);\n const isBusy = isLoading || hasError;\n const allOptionsSelected = selectedValues.length === actualOptions.length && actualOptions.length > 0;\n\n useEffect(() => {\n if (!isDropdownOpen || !wrapperRef.current) {return;}\n\n const filterRect = wrapperRef.current.getBoundingClientRect();\n const dropdownWidth = 256;\n const iframeViewportWidth = document.documentElement.clientWidth;\n const iframeBodyWidth =\n document.getElementById('dashboard-root')?.clientWidth || iframeViewportWidth;\n\n const spaceToRight = iframeBodyWidth - filterRect.right;\n const spaceToLeft = filterRect.left;\n\n if (spaceToLeft >= dropdownWidth) {\n setDropdownPosition({ left: 'auto', right: '0px' });\n } else if (spaceToRight < dropdownWidth && spaceToLeft < dropdownWidth) {\n const shiftLeft = dropdownWidth - spaceToRight + 16;\n setDropdownPosition({ left: `-${shiftLeft}px`, right: 'auto' });\n } else if (spaceToRight >= dropdownWidth) {\n setDropdownPosition({ left: '0px', right: 'auto' });\n }\n }, [isDropdownOpen]);\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const doc = wrapperRef.current?.ownerDocument ?? document;\n\n function handleOutsideClick(e: PointerEvent) {\n if (isDropdownOpen && wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setIsDropdownOpen(false);\n }\n }\n\n function handleEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n setIsDropdownOpen(false);\n }\n }\n\n doc.addEventListener('pointerdown', handleOutsideClick);\n doc.addEventListener('keydown', handleEscape);\n\n return () => {\n doc.removeEventListener('pointerdown', handleOutsideClick);\n doc.removeEventListener('keydown', handleEscape);\n };\n }, [isDropdownOpen]);\n\n const filteredOptions = actualOptions.filter((opt: FilterOption) =>\n String(opt.label).toLowerCase().includes(searchQuery.toLowerCase()),\n );\n\n async function updateAndApply(newValues: string[] = selectedValues) {\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: newValues,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'filter',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n setIsDropdownOpen(false);\n }\n }\n\n const handleOptionToggle = useCallback(\n (val: string) => {\n if (isMultiSelect) {\n setSelectedValues((prev) =>\n prev.includes(val) ? prev.filter((v) => v !== val) : [...prev, val],\n );\n } else {\n if (selectedValues.includes(val)) {\n setSelectedValues([]);\n updateAndApply([]);\n } else {\n const singleValue = [val];\n setSelectedValues(singleValue);\n updateAndApply(singleValue);\n }\n }\n },\n [isMultiSelect, selectedValues],\n );\n\n function handleClearAll() {\n setSelectedValues([]);\n }\n\n function handleSelectAll() {\n setSelectedValues(actualOptions.map((o: FilterOption) => o.value));\n }\n\n return (\n <div\n ref={wrapperRef}\n className={`relative inline-block ${className}`}\n style={{ color: '#2A44D4', backgroundColor: 'rgb(255 255 255)' }}\n >\n <FilterHeader\n label={label}\n count={selectedValues.length}\n isDisabled={isBusy}\n isDropdownOpen={isDropdownOpen}\n isLoading={isLoading}\n toggleOpen={() => setIsDropdownOpen((prev) => !prev)}\n />\n\n {isDropdownOpen && (\n <div className=\"absolute top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50\" style={dropdownPosition}>\n <input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full mb-3 px-2 py-1 border rounded focus:outline-none\"\n disabled={isBusy}\n />\n\n {isMultiSelect && (\n <FilterActions\n selected={selectedValues}\n allSelected={allOptionsSelected}\n onClear={handleClearAll}\n onSelectAll={handleSelectAll}\n isDisabled={isBusy}\n />\n )}\n\n <FilterOptionList\n options={filteredOptions}\n selected={selectedValues}\n onToggle={handleOptionToggle}\n isDisabled={isBusy}\n />\n\n {isMultiSelect && (\n <div className=\"flex justify-end space-x-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setIsDropdownOpen(false)}\n disabled={isApplying}\n className=\"bg-[#EAECFB] border border-[#2A44D4] text-[#263DBF] hover:bg-[#EAECFB] hover:text-[#263DBF]\"\n >\n Cancel\n </Button>\n <Button\n variant=\"default\"\n size=\"sm\"\n onClick={() => updateAndApply(selectedValues)}\n disabled={isBusy}\n className=\"bg-[#2A44D4] text-white hover:bg-[#2A44D4] hover:text-white\"\n >\n {isApplying && <Loader2Icon className=\"animate-spin mr-2\" size={16} />}Apply\n </Button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"filter.js","names":["useCallback","useEffect","useRef","useState","ChevronDown","ChevronUp","ListFilter","FilterIcon","Loader2Icon","Button","Checkbox","ScrollArea","getAffectedComponentsWithLoader","renderDateFilter","jsx","_jsx","jsxs","_jsxs","FilterHeader","_ref","label","count","isDisabled","isDropdownOpen","isLoading","toggleOpen","ChevronIcon","variant","size","disabled","onClick","className","children","FilterActions","_ref2","selected","allSelected","onClear","onSelectAll","checked","onCheckedChange","length","type","onMouseDown","e","stopPropagation","preventDefault","FilterOptionList","_ref3","options","onToggle","viewportClassName","map","opt","value","includes","onChange","renderFilter","_ref4","gjsModel","performInteraction","_useState","_extends","get","componentData","setComponentData","_componentData$option","_componentData$value","_componentData$classN","_componentData$affect","affectedComponents","_componentData$text","text","_componentData$filter","filterType","actualOptions","name","Array","isArray","wrapperRef","_useState2","attributes","setAttributes","_useState3","setIsDropdownOpen","_useState4","searchQuery","setSearchQuery","_useState5","isApplying","setIsApplying","_useState6","left","right","dropdownPosition","setDropdownPosition","defaultValue","_useState7","selectedValues","setSelectedValues","isMultiSelect","hasPlaceholderOptions","hasError","error","interactionApiInProgress","loading","isBusy","allOptionsSelected","_document$getElementB","current","filterRect","getBoundingClientRect","dropdownWidth","iframeViewportWidth","document","documentElement","clientWidth","iframeBodyWidth","getElementById","spaceToRight","spaceToLeft","shiftLeft","updateComponentData","updateAttributes","on","off","_wrapperRef$current$o","_wrapperRef$current","doc","ownerDocument","handleOutsideClick","contains","target","handleEscape","key","addEventListener","removeEventListener","filteredOptions","filter","String","toLowerCase","updateAndApply","_x","_updateAndApply","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","newValues","id","wrap","_callee$","_context","prev","next","set","interactionType","concat","finish","stop","handleOptionToggle","val","v","singleValue","handleClearAll","handleSelectAll","o","ref","style","color","backgroundColor","placeholder"],"sources":["../../../../src/shadcn/components/ui/filter.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ChevronDown, ChevronUp, ListFilter as FilterIcon, Loader2Icon } from 'lucide-react';\n\nimport { Button } from './button';\nimport { Checkbox } from './checkbox';\nimport { ScrollArea } from './scroll-area';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { renderDateFilter } from './date-filter';\n\ntype FilterOption = {\n label: string;\n value: string;\n};\n\ntype FilterProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\ntype FilterHeaderProps = {\n label: string;\n count: number;\n isDisabled: boolean;\n isDropdownOpen: boolean;\n isLoading: boolean;\n toggleOpen: () => void;\n};\n\ntype FilterActionsProps = {\n selected: string[];\n allSelected: boolean;\n onClear: () => void;\n onSelectAll: () => void;\n isDisabled: boolean;\n};\n\ntype FilterOptionListProps = {\n options: FilterOption[];\n selected: string[];\n onToggle: (value: string) => void;\n isDisabled: boolean;\n};\n\nfunction FilterHeader({\n label,\n count,\n isDisabled,\n isDropdownOpen,\n isLoading,\n toggleOpen,\n}: FilterHeaderProps) {\n const ChevronIcon = isDropdownOpen ? ChevronUp : ChevronDown;\n\n return (\n <Button variant=\"outline\" size=\"sm\" disabled={isDisabled} onClick={toggleOpen} className=\"px-2\">\n <FilterIcon size={16} />\n {count > 0 ? `${label} (${count})` : label}\n {isLoading ? (\n <Loader2Icon className=\"ml-2 animate-spin\" size={16} />\n ) : (\n <ChevronIcon size={16} className=\"ml-1\" />\n )}\n </Button>\n );\n}\n\nfunction FilterActions({\n selected,\n allSelected,\n onClear,\n onSelectAll,\n isDisabled,\n}: FilterActionsProps) {\n return (\n <div className=\"flex items-center mb-3\">\n <Checkbox\n checked={allSelected}\n onCheckedChange={() => (allSelected ? onClear() : onSelectAll())}\n disabled={isDisabled}\n />\n <span className=\"ml-2 text-sm text-gray-900\">Select All</span>\n {selected.length > 0 && (\n <button\n type=\"button\"\n className=\"ml-auto text-sm text-blue-600 hover:underline\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={onClear}\n disabled={isDisabled}\n >\n Clear All\n </button>\n )}\n </div>\n );\n}\n\nfunction FilterOptionList({ options, selected, onToggle, isDisabled }: FilterOptionListProps) {\n return (\n <ScrollArea viewportClassName=\"max-h-48 overflow-y-auto mb-4 space-y-2\">\n {options.length > 0 ? (\n options.map((opt) => (\n <label\n key={opt.value}\n className=\"flex items-center space-x-2 hover:bg-gray-100 rounded p-1 transition hover:cursor-pointer\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!isDisabled) {\n onToggle(opt.value);\n }\n }}\n >\n <Checkbox\n checked={selected.includes(opt.value)}\n onChange={() => {\n // Prevent checkbox from toggling when clicking label\n }}\n disabled={isDisabled}\n />\n <span className=\"text-sm text-gray-900\">{opt.label}</span>\n </label>\n ))\n ) : (\n <div className=\"text-sm text-gray-500\">No results found</div>\n )}\n </ScrollArea>\n );\n}\n\nexport function renderFilter({ gjsModel, performInteraction }: FilterProps) {\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n\n const {\n options = [],\n value = [],\n className = '',\n affectedComponents = [],\n text: label = 'Filter',\n filterType = 'multiselect',\n } = componentData;\n\n const actualOptions = (() => {\n if (options && typeof options === 'object' && options.name === '__peak_placeholder') {\n return [];\n }\n\n return Array.isArray(options) ? options : [];\n })();\n\n if (filterType === 'date') {\n return renderDateFilter({ gjsModel, performInteraction });\n }\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [isApplying, setIsApplying] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ left: 'auto', right: '0' });\n\n const defaultValue = componentData.default || [];\n\n const [selectedValues, setSelectedValues] = useState<string[]>(() => {\n return Array.isArray(value) && value.length > 0 ? value : defaultValue;\n });\n\n const isMultiSelect = filterType === 'multiselect';\n const hasPlaceholderOptions = options && typeof options === 'object' && options.name === '__peak_placeholder';\n const hasError = attributes.error || componentData.error;\n const isLoading = !hasError && (attributes.interactionApiInProgress || isApplying || attributes.loading || hasPlaceholderOptions);\n const isBusy = isLoading || hasError;\n const allOptionsSelected = selectedValues.length === actualOptions.length && actualOptions.length > 0;\n\n useEffect(() => {\n if (!isDropdownOpen || !wrapperRef.current) {return;}\n\n const filterRect = wrapperRef.current.getBoundingClientRect();\n const dropdownWidth = 256;\n const iframeViewportWidth = document.documentElement.clientWidth;\n const iframeBodyWidth =\n document.getElementById('dashboard-root')?.clientWidth || iframeViewportWidth;\n\n const spaceToRight = iframeBodyWidth - filterRect.right;\n const spaceToLeft = filterRect.left;\n\n if (spaceToLeft >= dropdownWidth) {\n setDropdownPosition({ left: 'auto', right: '0px' });\n } else if (spaceToRight < dropdownWidth && spaceToLeft < dropdownWidth) {\n const shiftLeft = dropdownWidth - spaceToRight + 16;\n setDropdownPosition({ left: `-${shiftLeft}px`, right: 'auto' });\n } else if (spaceToRight >= dropdownWidth) {\n setDropdownPosition({ left: '0px', right: 'auto' });\n }\n }, [isDropdownOpen]);\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n useEffect(() => {\n const doc = wrapperRef.current?.ownerDocument ?? document;\n\n function handleOutsideClick(e: PointerEvent) {\n if (isDropdownOpen && wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setIsDropdownOpen(false);\n }\n }\n\n function handleEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n setIsDropdownOpen(false);\n }\n }\n\n doc.addEventListener('pointerdown', handleOutsideClick);\n doc.addEventListener('keydown', handleEscape);\n\n return () => {\n doc.removeEventListener('pointerdown', handleOutsideClick);\n doc.removeEventListener('keydown', handleEscape);\n };\n }, [isDropdownOpen]);\n\n const filteredOptions = actualOptions.filter((opt: FilterOption) =>\n String(opt.label).toLowerCase().includes(searchQuery.toLowerCase()),\n );\n\n async function updateAndApply(newValues: string[] = selectedValues) {\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: newValues,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'filter',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n setIsDropdownOpen(false);\n }\n }\n\n const handleOptionToggle = useCallback(\n (val: string) => {\n if (isMultiSelect) {\n setSelectedValues((prev) =>\n prev.includes(val) ? prev.filter((v) => v !== val) : [...prev, val],\n );\n } else {\n if (selectedValues.includes(val)) {\n setSelectedValues([]);\n updateAndApply([]);\n } else {\n const singleValue = [val];\n setSelectedValues(singleValue);\n updateAndApply(singleValue);\n }\n }\n },\n [isMultiSelect, selectedValues],\n );\n\n function handleClearAll() {\n setSelectedValues([]);\n }\n\n function handleSelectAll() {\n setSelectedValues(actualOptions.map((o: FilterOption) => o.value));\n }\n\n return (\n <div\n ref={wrapperRef}\n className={`relative inline-block ${className}`}\n style={{ color: '#2A44D4', backgroundColor: 'rgb(255 255 255)' }}\n >\n <FilterHeader\n label={label}\n count={selectedValues.length}\n isDisabled={isBusy}\n isDropdownOpen={isDropdownOpen}\n isLoading={isLoading}\n toggleOpen={() => setIsDropdownOpen((prev) => !prev)}\n />\n\n {isDropdownOpen && (\n <div className=\"absolute top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50\" style={dropdownPosition}>\n <input\n type=\"text\"\n placeholder=\"Search...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full mb-3 px-2 py-1 border rounded focus:outline-none\"\n disabled={isBusy}\n />\n\n {isMultiSelect && (\n <FilterActions\n selected={selectedValues}\n allSelected={allOptionsSelected}\n onClear={handleClearAll}\n onSelectAll={handleSelectAll}\n isDisabled={isBusy}\n />\n )}\n\n <FilterOptionList\n options={filteredOptions}\n selected={selectedValues}\n onToggle={handleOptionToggle}\n isDisabled={isBusy}\n />\n\n {isMultiSelect && (\n <div className=\"flex justify-end space-x-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setIsDropdownOpen(false)}\n disabled={isApplying}\n className=\"bg-[#EAECFB] border border-[#2A44D4] text-[#263DBF] hover:bg-[#EAECFB] hover:text-[#263DBF]\"\n >\n Cancel\n </Button>\n <Button\n variant=\"default\"\n size=\"sm\"\n onClick={() => updateAndApply(selectedValues)}\n disabled={isBusy}\n className=\"bg-[#2A44D4] text-white hover:bg-[#2A44D4] hover:text-white\"\n >\n {isApplying && <Loader2Icon className=\"animate-spin mr-2\" size={16} />}Apply\n </Button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useEffect,useRef,useState}from"react";import{Loader2Icon,Search as SearchIcon,X as ClearIcon,Info as InfoIcon}from"lucide-react";import{Input}from"./input";import{getAffectedComponentsWithLoader}from"../../../helpers";import{Tooltip,TooltipTrigger,TooltipContent}from"./tooltip";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var MAX_CHAR_LIMIT=140;var MaxCharLimitExceededMessage="Max 140 characters allowed.";export function renderSearch(_ref){var gjsModel=_ref.gjsModel,performInteraction=_ref.performInteraction;var wrapperRef=useRef(null);var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var placeholder=componentData.placeholder,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN;var initialSearchText=componentData.searchText||"";var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(initialSearchText),searchQuery=_useState3[0],setSearchQuery=_useState3[1];var _useState4=useState(false),isApplying=_useState4[0],setIsApplying=_useState4[1];var isBusy=attributes.interactionApiInProgress||isApplying;var showClear=!!searchQuery&&!isBusy;useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);function applySearch(_x){return _applySearch.apply(this,arguments)}function _applySearch(){_applySearch=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query){var id;return _regeneratorRuntime.wrap(function(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(query.length>MAX_CHAR_LIMIT)){_context.next=1;break}return _context.abrupt("return");case 1:setIsApplying(true);_context.prev=2;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{searchText:query}));id=gjsModel.get("id");_context.next=3;return performInteraction({interactionType:"search",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 3:_context.prev=3;setIsApplying(false);return _context.finish(3);case 4:case"end":return _context.stop()}},_callee,null,[[2,,3,4]])}));return _applySearch.apply(this,arguments)}function handleKeyDown(e){if(e.key==="Enter"){applySearch(searchQuery.trim())}}function handleSearchIconClick(){applySearch(searchQuery.trim())}function handleClear(){setSearchQuery("");applySearch("")}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"flex items-center gap-2 p-2 "+className,children:[/*#__PURE__*/_jsxs("div",{className:"relative transition-all duration-200 ease-in-out "+(searchQuery?"w-[320px]":"w-[280px]"),style:{backgroundColor:"#fff"},children:[/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsx(Input,{type:"text","data-slot":"search-input",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},onKeyDown:handleKeyDown,disabled:isBusy,className:"py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full"}),showClear&&/*#__PURE__*/_jsx("button",{type:"button",onClick:handleClear,className:"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition","aria-label":"Clear search",children:/*#__PURE__*/_jsx(ClearIcon,{size:16})}),/*#__PURE__*/_jsx("button",{type:"button",onClick:handleSearchIconClick,disabled:isBusy,className:"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors","aria-label":"Search",children:isBusy?/*#__PURE__*/_jsx(Loader2Icon,{size:18,className:"animate-spin"}):/*#__PURE__*/_jsx(SearchIcon,{size:18})})]}),searchQuery.length>MAX_CHAR_LIMIT&&/*#__PURE__*/_jsx("p",{className:"absolute left-1 text-xs text-red-600 pl-1 pt-1",children:MaxCharLimitExceededMessage})]}),placeholder&&/*#__PURE__*/_jsxs(Tooltip,{children:[/*#__PURE__*/_jsx(TooltipTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{className:"cursor-pointer text-gray-400 hover:text-gray-600",children:/*#__PURE__*/_jsx(InfoIcon,{size:16})})}),/*#__PURE__*/_jsx(TooltipContent,{side:"bottom",children:placeholder})]})]})}
1
+ import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useEffect,useRef,useState}from"react";import{Loader2Icon,Search as SearchIcon,X as ClearIcon,Info as InfoIcon}from"lucide-react";import{Input}from"./input";import{getAffectedComponentsWithLoader}from"../../../helpers";import{Tooltip,TooltipTrigger,TooltipContent}from"./tooltip";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";var MAX_CHAR_LIMIT=140;var MaxCharLimitExceededMessage="Max 140 characters allowed.";export function renderSearch(_ref){var gjsModel=_ref.gjsModel,performInteraction=_ref.performInteraction;var wrapperRef=useRef(null);var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var placeholder=componentData.placeholder,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN;var initialSearchText=componentData.searchText||"";var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(initialSearchText),searchQuery=_useState3[0],setSearchQuery=_useState3[1];var _useState4=useState(false),isApplying=_useState4[0],setIsApplying=_useState4[1];var isBusy=attributes.interactionApiInProgress||isApplying;var showClear=!!searchQuery&&!isBusy;useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);function applySearch(_x){return _applySearch.apply(this,arguments)}function _applySearch(){_applySearch=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(query){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(query.length>MAX_CHAR_LIMIT)){_context.next=2;break}return _context.abrupt("return");case 2:setIsApplying(true);_context.prev=3;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{searchText:query}));id=gjsModel.get("id");_context.next=8;return performInteraction({interactionType:"search",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 8:_context.prev=8;setIsApplying(false);return _context.finish(8);case 11:case"end":return _context.stop()}},_callee,null,[[3,,8,11]])}));return _applySearch.apply(this,arguments)}function handleKeyDown(e){if(e.key==="Enter"){applySearch(searchQuery.trim())}}function handleSearchIconClick(){applySearch(searchQuery.trim())}function handleClear(){setSearchQuery("");applySearch("")}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"flex items-center gap-2 p-2 "+className,children:[/*#__PURE__*/_jsxs("div",{className:"relative transition-all duration-200 ease-in-out "+(searchQuery?"w-[320px]":"w-[280px]"),style:{backgroundColor:"#fff"},children:[/*#__PURE__*/_jsxs("div",{children:[/*#__PURE__*/_jsx(Input,{type:"text","data-slot":"search-input",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},onKeyDown:handleKeyDown,disabled:isBusy,className:"py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full"}),showClear&&/*#__PURE__*/_jsx("button",{type:"button",onClick:handleClear,className:"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition","aria-label":"Clear search",children:/*#__PURE__*/_jsx(ClearIcon,{size:16})}),/*#__PURE__*/_jsx("button",{type:"button",onClick:handleSearchIconClick,disabled:isBusy,className:"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors","aria-label":"Search",children:isBusy?/*#__PURE__*/_jsx(Loader2Icon,{size:18,className:"animate-spin"}):/*#__PURE__*/_jsx(SearchIcon,{size:18})})]}),searchQuery.length>MAX_CHAR_LIMIT&&/*#__PURE__*/_jsx("p",{className:"absolute left-1 text-xs text-red-600 pl-1 pt-1",children:MaxCharLimitExceededMessage})]}),placeholder&&/*#__PURE__*/_jsxs(Tooltip,{children:[/*#__PURE__*/_jsx(TooltipTrigger,{asChild:true,children:/*#__PURE__*/_jsx("span",{className:"cursor-pointer text-gray-400 hover:text-gray-600",children:/*#__PURE__*/_jsx(InfoIcon,{size:16})})}),/*#__PURE__*/_jsx(TooltipContent,{side:"bottom",children:placeholder})]})]})}
2
2
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","names":["useEffect","useRef","useState","Loader2Icon","Search","SearchIcon","X","ClearIcon","Info","InfoIcon","Input","getAffectedComponentsWithLoader","Tooltip","TooltipTrigger","TooltipContent","jsx","_jsx","jsxs","_jsxs","MAX_CHAR_LIMIT","MaxCharLimitExceededMessage","renderSearch","_ref","gjsModel","performInteraction","wrapperRef","_useState","_extends","get","componentData","setComponentData","placeholder","_componentData$affect","affectedComponents","_componentData$classN","className","initialSearchText","searchText","_useState2","attributes","setAttributes","_useState3","searchQuery","setSearchQuery","_useState4","isApplying","setIsApplying","isBusy","interactionApiInProgress","showClear","updateComponentData","updateAttributes","on","off","applySearch","_x","_applySearch","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","id","wrap","_context","prev","next","length","abrupt","set","interactionType","concat","finish","stop","handleKeyDown","e","key","trim","handleSearchIconClick","handleClear","ref","children","style","backgroundColor","type","value","onChange","target","onKeyDown","disabled","onClick","size","asChild","side"],"sources":["../../../../src/shadcn/components/ui/search.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Loader2Icon, Search as SearchIcon, X as ClearIcon, Info as InfoIcon } from 'lucide-react';\nimport { Input } from './input';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Tooltip, TooltipTrigger, TooltipContent } from './tooltip';\n\nconst MAX_CHAR_LIMIT = 140;\nconst MaxCharLimitExceededMessage = 'Max 140 characters allowed.';\n\ntype SearchProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nexport function renderSearch({ gjsModel, performInteraction }: SearchProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const { placeholder, affectedComponents = [], className = '' } = componentData;\n const initialSearchText = componentData.searchText || '';\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [searchQuery, setSearchQuery] = useState(initialSearchText);\n const [isApplying, setIsApplying] = useState(false);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n const showClear = !!searchQuery && !isBusy;\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n async function applySearch(query: string) {\n if (query.length > MAX_CHAR_LIMIT) {\n return;\n }\n\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n searchText: query,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'search',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Enter') {\n applySearch(searchQuery.trim());\n }\n }\n\n function handleSearchIconClick() {\n applySearch(searchQuery.trim());\n }\n\n function handleClear() {\n setSearchQuery('');\n applySearch('');\n }\n\n return (\n <div ref={wrapperRef} className={`flex items-center gap-2 p-2 ${className}`}>\n <div\n className={`relative transition-all duration-200 ease-in-out ${\n searchQuery ? 'w-[320px]' : 'w-[280px]'\n }`}\n style={{ backgroundColor: '#fff' }}\n >\n <div>\n <Input\n type=\"text\"\n data-slot=\"search-input\"\n placeholder={'Search...'}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n disabled={isBusy}\n className={`py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full`}\n />\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition\"\n aria-label=\"Clear search\"\n >\n <ClearIcon size={16} />\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleSearchIconClick}\n disabled={isBusy}\n className=\"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors\"\n aria-label=\"Search\"\n >\n {isBusy ? <Loader2Icon size={18} className=\"animate-spin\" /> : <SearchIcon size={18} />}\n </button>\n </div>\n\n {searchQuery.length > MAX_CHAR_LIMIT && (\n <p className=\"absolute left-1 text-xs text-red-600 pl-1 pt-1\">\n {MaxCharLimitExceededMessage}\n </p>\n )}\n </div>\n\n {placeholder && (\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"cursor-pointer text-gray-400 hover:text-gray-600\">\n <InfoIcon size={16} />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{placeholder}</TooltipContent>\n </Tooltip>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"search.js","names":["useEffect","useRef","useState","Loader2Icon","Search","SearchIcon","X","ClearIcon","Info","InfoIcon","Input","getAffectedComponentsWithLoader","Tooltip","TooltipTrigger","TooltipContent","jsx","_jsx","jsxs","_jsxs","MAX_CHAR_LIMIT","MaxCharLimitExceededMessage","renderSearch","_ref","gjsModel","performInteraction","wrapperRef","_useState","_extends","get","componentData","setComponentData","placeholder","_componentData$affect","affectedComponents","_componentData$classN","className","initialSearchText","searchText","_useState2","attributes","setAttributes","_useState3","searchQuery","setSearchQuery","_useState4","isApplying","setIsApplying","isBusy","interactionApiInProgress","showClear","updateComponentData","updateAttributes","on","off","applySearch","_x","_applySearch","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","id","wrap","_callee$","_context","prev","next","length","abrupt","set","interactionType","concat","finish","stop","handleKeyDown","e","key","trim","handleSearchIconClick","handleClear","ref","children","style","backgroundColor","type","value","onChange","target","onKeyDown","disabled","onClick","size","asChild","side"],"sources":["../../../../src/shadcn/components/ui/search.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Loader2Icon, Search as SearchIcon, X as ClearIcon, Info as InfoIcon } from 'lucide-react';\nimport { Input } from './input';\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Tooltip, TooltipTrigger, TooltipContent } from './tooltip';\n\nconst MAX_CHAR_LIMIT = 140;\nconst MaxCharLimitExceededMessage = 'Max 140 characters allowed.';\n\ntype SearchProps = {\n isEditable?: boolean;\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nexport function renderSearch({ gjsModel, performInteraction }: SearchProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const { placeholder, affectedComponents = [], className = '' } = componentData;\n const initialSearchText = componentData.searchText || '';\n\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [searchQuery, setSearchQuery] = useState(initialSearchText);\n const [isApplying, setIsApplying] = useState(false);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n const showClear = !!searchQuery && !isBusy;\n\n useEffect(() => {\n function updateComponentData() {\n setComponentData({ ...gjsModel.get('componentProps') });\n }\n\n function updateAttributes() {\n setAttributes({ ...gjsModel.get('attributes') });\n }\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel]);\n\n async function applySearch(query: string) {\n if (query.length > MAX_CHAR_LIMIT) {\n return;\n }\n\n setIsApplying(true);\n\n try {\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n searchText: query,\n });\n\n const id = gjsModel.get('id');\n\n await performInteraction({\n interactionType: 'search',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n } finally {\n setIsApplying(false);\n }\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === 'Enter') {\n applySearch(searchQuery.trim());\n }\n }\n\n function handleSearchIconClick() {\n applySearch(searchQuery.trim());\n }\n\n function handleClear() {\n setSearchQuery('');\n applySearch('');\n }\n\n return (\n <div ref={wrapperRef} className={`flex items-center gap-2 p-2 ${className}`}>\n <div\n className={`relative transition-all duration-200 ease-in-out ${\n searchQuery ? 'w-[320px]' : 'w-[280px]'\n }`}\n style={{ backgroundColor: '#fff' }}\n >\n <div>\n <Input\n type=\"text\"\n data-slot=\"search-input\"\n placeholder={'Search...'}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n disabled={isBusy}\n className={`py-2 text-sm rounded-md border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-all duration-200 pl-4 pr-16 w-full`}\n />\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-10 top-7 -translate-y-1/2 text-gray-400 hover:text-gray-600 transition\"\n aria-label=\"Clear search\"\n >\n <ClearIcon size={16} />\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleSearchIconClick}\n disabled={isBusy}\n className=\"absolute right-2 top-7 -translate-y-1/2 text-gray-500 hover:text-blue-600 transition-colors\"\n aria-label=\"Search\"\n >\n {isBusy ? <Loader2Icon size={18} className=\"animate-spin\" /> : <SearchIcon size={18} />}\n </button>\n </div>\n\n {searchQuery.length > MAX_CHAR_LIMIT && (\n <p className=\"absolute left-1 text-xs text-red-600 pl-1 pt-1\">\n {MaxCharLimitExceededMessage}\n </p>\n )}\n </div>\n\n {placeholder && (\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"cursor-pointer text-gray-400 hover:text-gray-600\">\n <InfoIcon size={16} />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{placeholder}</TooltipContent>\n </Tooltip>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}