@peak-ai/canvas 1.4.57 → 1.5.0-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.
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export var DATE_FILTER={TABS:{RELATIVE:"Relative",ABSOLUTE:"Absolute"},RELATIVE_UNITS:[{key:"hours",label:"hours ago"},{key:"days",label:"days ago"},{key:"weeks",label:"weeks ago"},{key:"months",label:"months ago"},{key:"years",label:"years ago"}]};
|
|
2
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":["DATE_FILTER","TABS","RELATIVE","ABSOLUTE","RELATIVE_UNITS","key","label"],"sources":["../../src/helpers/constants.ts"],"sourcesContent":["export const DATE_FILTER = {\n TABS: {\n RELATIVE: 'Relative',\n ABSOLUTE: 'Absolute',\n },\n RELATIVE_UNITS: [\n { key: 'hours', label: 'hours ago' },\n { key: 'days', label: 'days ago' },\n { key: 'weeks', label: 'weeks ago' },\n { key: 'months', label: 'months ago' },\n { key: 'years', label: 'years ago' },\n ]\n}\n"],"mappings":"AAAA,MAAO,IAAM,CAAAA,WAAW,CAAG,CACvBC,IAAI,CAAE,CACFC,QAAQ,CAAE,UAAU,CACpBC,QAAQ,CAAE,UACd,CAAC,CACDC,cAAc,CAAE,CACZ,CAAEC,GAAG,CAAE,OAAO,CAAEC,KAAK,CAAE,WAAY,CAAC,CACpC,CAAED,GAAG,CAAE,MAAM,CAAEC,KAAK,CAAE,UAAW,CAAC,CAClC,CAAED,GAAG,CAAE,OAAO,CAAEC,KAAK,CAAE,WAAY,CAAC,CACpC,CAAED,GAAG,CAAE,QAAQ,CAAEC,KAAK,CAAE,YAAa,CAAC,CACtC,CAAED,GAAG,CAAE,OAAO,CAAEC,KAAK,CAAE,WAAY,CAAC,CAE5C,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@peak-ai/canvas",
|
|
3
3
|
"author": "squad-builder-experience",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.5.0-rc.1",
|
|
6
6
|
"description": "",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@emotion/react": "^11.11.4",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"tslib": "^2.7.0",
|
|
46
46
|
"tw-animate-css": "^1.2.5",
|
|
47
47
|
"sherlockjs": "^1.4.2",
|
|
48
|
+
"sugar": "^2.0.6",
|
|
48
49
|
"date-fns-tz": "^2.0.0",
|
|
49
50
|
"@visx/group": "^3.8.0",
|
|
50
51
|
"@visx/scale": "^3.8.0",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable func-style *//* eslint-disable camelcase *//* eslint-disable @typescript-eslint/no-explicit-any */import{useEffect,useRef,useState}from"react";import{Calendar,Loader2Icon,X}from"lucide-react";import ReactDatePicker from"react-datepicker";import{zonedTimeToUtc,utcToZonedTime}from"date-fns-tz";import classnames from"classnames";import{getAffectedComponentsWithLoader}from"../../../helpers";import{Button}from"./button";import
|
|
1
|
+
import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable func-style *//* eslint-disable camelcase *//* eslint-disable @typescript-eslint/no-explicit-any */import{useEffect,useRef,useState}from"react";import{Calendar,Loader2Icon,X}from"lucide-react";import ReactDatePicker from"react-datepicker";import{zonedTimeToUtc,utcToZonedTime}from"date-fns-tz";import classnames from"classnames";import{DATE_FILTER}from"../../../helpers/constants";import{getAffectedComponentsWithLoader}from"../../../helpers";import{Button}from"./button";import sugar from"sugar";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";var TIMEZONE="TIMEZONE";function getTimezone(){return window.localStorage.getItem(TIMEZONE)||"UTC"}var formatDateWithTimezone=function formatDateWithTimezone(date,timezone,showTime){if(showTime===void 0){showTime=false}if(!date){return""}var formatOptions=_extends({day:"2-digit",month:"2-digit",year:"numeric"},showTime&&{hour:"2-digit",minute:"2-digit",hour12:false},{timeZone:timezone});return date.toLocaleString("en-GB",formatOptions)};var convertToTargetTimezone=function convertToTargetTimezone(date){if(!date){return null}var targetTimezone=getTimezone();return zonedTimeToUtc(date,targetTimezone)};var convertFromStoredDate=function convertFromStoredDate(date){if(!date){return null}var targetTimezone=getTimezone();return utcToZonedTime(date,targetTimezone)};var inputClasses="w-full px-3 py-2 border border-gray-300 rounded-md mb-1 focus:outline-none focus:ring-2 focus:ring-blue-500";var disabledClasses="opacity-60 cursor-not-allowed bg-gray-50";var enabledClasses="cursor-pointer";var buttonClasses="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";var closeButtonClasses="p-1 rounded-md hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500";var dropdownClasses="absolute top-full mt-1 bg-white rounded-lg shadow-lg border border-gray-200 p-4 w-[380px] z-[9999]";var parseRelativeDate=function parseRelativeDate(dateString){if(!dateString){return null}if(dateString instanceof Date){return dateString}var result=sugar.Date.create(dateString==="today"?"now":dateString);if(result instanceof Date&&!isNaN(result.getTime())){return result}return null};var getDefaultDates=function getDefaultDates(){var now=new Date;var oneYearAgo=new Date(now);oneYearAgo.setFullYear(oneYearAgo.getFullYear()-1);var oneYearFromNow=new Date(now);oneYearFromNow.setFullYear(oneYearFromNow.getFullYear()+1);return{defaultStartDate:new Date(oneYearAgo.getFullYear(),oneYearAgo.getMonth(),oneYearAgo.getDate(),0,0,0),defaultEndDate:new Date(oneYearFromNow.getFullYear(),oneYearFromNow.getMonth(),oneYearFromNow.getDate(),23,59,59)}};var DateInput=function DateInput(_ref){var label=_ref.label,value=_ref.value,onClick=_ref.onClick,disabled=_ref.disabled,placeholder=_ref.placeholder,isOpen=_ref.isOpen,_ref$showTime=_ref.showTime,showTime=_ref$showTime===void 0?false:_ref$showTime,onChange=_ref.onChange,minDate=_ref.minDate,maxDate=_ref.maxDate;var _useState=useState(""),inputValue=_useState[0],setInputValue=_useState[1];var _useState2=useState(false),isEditing=_useState2[0],setIsEditing=_useState2[1];var _useState3=useState(""),validationError=_useState3[0],setValidationError=_useState3[1];var formatDate=function formatDate(date){var timezone=getTimezone();return formatDateWithTimezone(date,timezone,showTime)};useEffect(function(){if(!isEditing){setInputValue(formatDate(value))}},[value,showTime,isEditing]);var handleClick=function handleClick(e){e.preventDefault();e.stopPropagation();if(!disabled){onClick()}};var handleInputChange=function handleInputChange(e){setInputValue(e.target.value)};var handleInputFocus=function handleInputFocus(){setIsEditing(true);setValidationError("")};var parseInputDate=function parseInputDate(inputText){if(!inputText.trim()){return null}var commonFormats=[// DD/MM/YYYY formats
|
|
2
2
|
/^(\d{1,2})\/(\d{1,2})\/(\d{4})(?:\s*,?\s*(\d{1,2}):(\d{2}))?$/,// DD-MM-YYYY formats
|
|
3
3
|
/^(\d{1,2})-(\d{1,2})-(\d{4})(?:\s*,?\s*(\d{1,2}):(\d{2}))?$/,// YYYY-MM-DD formats
|
|
4
4
|
/^(\d{4})-(\d{1,2})-(\d{1,2})(?:\s*,?\s*(\d{1,2}):(\d{2}))?$/,// YYYY/MM/DD formats
|
|
5
|
-
/^(\d{4})\/(\d{1,2})\/(\d{1,2})(?:\s*,?\s*(\d{1,2}):(\d{2}))?$/];for(var _i=0,_commonFormats=commonFormats;_i<_commonFormats.length;_i++){var format=_commonFormats[_i];var match=inputText.match(format);if(match){var day=void 0;var month=void 0;var year=void 0;var hours="0";var minutes="0";if(format.source.startsWith("^(\\d{4})")){year=match[1];month=match[2];day=match[3];var _match$=match[4];hours=_match$===void 0?"0":_match$;var _match$2=match[5];minutes=_match$2===void 0?"0":_match$2}else{day=match[1];month=match[2];year=match[3];var _match$3=match[4];hours=_match$3===void 0?"0":_match$3;var _match$4=match[5];minutes=_match$4===void 0?"0":_match$4}var yearNum=parseInt(year,10);var monthNum=parseInt(month,10);var dayNum=parseInt(day,10);var hoursNum=parseInt(hours,10);var minutesNum=parseInt(minutes,10);var parsedDate=new Date(yearNum,monthNum-1,dayNum,hoursNum,minutesNum);if(!isNaN(parsedDate.getTime())&&parsedDate.getFullYear()===yearNum&&parsedDate.getMonth()===monthNum-1&&parsedDate.getDate()===dayNum){return parsedDate}}}try{var result=sherlock.parse(inputText);if(result.startDate){return result.startDate}}catch(error){return null}return null};var validateDateRange=function validateDateRange(date){if(!date){return""}if(minDate&&date<minDate){return"Minimum allowed date is "+formatDateWithTimezone(minDate,getTimezone(),false)}if(maxDate&&date>maxDate){return"Maximum allowed date is "+formatDateWithTimezone(maxDate,getTimezone(),false)}return""};var handleInputBlur=function handleInputBlur(){setIsEditing(false);if(onChange){var parsedDate=parseInputDate(inputValue);if(parsedDate){var errorMessage=validateDateRange(parsedDate);setValidationError(errorMessage);if(!errorMessage){onChange(parsedDate)}}else if(inputValue.trim()===""){setValidationError("");onChange(null)}else{setValidationError("");setInputValue(formatDate(value))}}};var handleKeyDown=function handleKeyDown(e){if(e.key==="Enter"){e.preventDefault();handleInputBlur()}else if(e.key==="Escape"){e.preventDefault();setInputValue(formatDate(value));setValidationError("");setIsEditing(false)}};return/*#__PURE__*/_jsxs("div",{className:"relative",children:[/*#__PURE__*/_jsx("input",{value:inputValue,onChange:handleInputChange,onFocus:handleInputFocus,onBlur:handleInputBlur,onKeyDown:handleKeyDown,onClick:handleClick,placeholder:placeholder||label,disabled:disabled,className:inputClasses+" "+(disabled?disabledClasses:enabledClasses)+" "+(isOpen?"ring-2 ring-blue-500":""),title:showTime?"Enter date and time":"Enter date"}),/*#__PURE__*/_jsx("div",{className:"absolute right-3 top-7 transform -translate-y-1/2 flex items-center gap-1",children:/*#__PURE__*/_jsx(Calendar,{size:16,className:"text-gray-400 cursor-pointer",onClick:handleClick})}),validationError&&/*#__PURE__*/_jsx("div",{className:"absolute top-full left-0 text-xs text-red-600 px-2 mb-2 z-10",children:validationError})]})};export function DatePicker(_ref2){var _ref2$className=_ref2.className,className=_ref2$className===void 0?"":_ref2$className,_ref2$disabled=_ref2.disabled,disabled=_ref2$disabled===void 0?false:_ref2$disabled,_ref2$enableTime=_ref2.enableTime,enableTime=_ref2$enableTime===void 0?false:_ref2$enableTime,_ref2$isClearable=_ref2.isClearable,isClearable=_ref2$isClearable===void 0?true:_ref2$isClearable,maxDate=_ref2.maxDate,minDate=_ref2.minDate,onChange=_ref2.onChange,_ref2$value=_ref2.value,value=_ref2$value===void 0?null:_ref2$value,open=_ref2.open,onClickOutside=_ref2.onClickOutside,_ref2$showTimeSelect=_ref2.showTimeSelect,showTimeSelect=_ref2$showTimeSelect===void 0?false:_ref2$showTimeSelect,_ref2$timeFormat=_ref2.timeFormat,timeFormat=_ref2$timeFormat===void 0?"HH:mm":_ref2$timeFormat,_ref2$timeIntervals=_ref2.timeIntervals,timeIntervals=_ref2$timeIntervals===void 0?15:_ref2$timeIntervals,_ref2$inline=_ref2.inline,inline=_ref2$inline===void 0?true:_ref2$inline;var dateFormat=showTimeSelect||enableTime?"yyyy-MM-dd HH:mm":"yyyy-MM-dd";var date=typeof value==="string"&&value?new Date(value):value;var shouldShowTime=showTimeSelect||enableTime;var datePickerProps={selected:date,minDate:minDate,maxDate:maxDate,disabled:disabled,isClearable:isClearable,onChange:onChange,dateFormat:dateFormat,showTimeSelect:shouldShowTime,timeFormat:timeFormat,timeIntervals:timeIntervals,timeCaption:"Time",portalId:"date-picker-portal",popperClassName:"date-picker-popper !z-[9999]",popperPlacement:"bottom-end",inline:inline,open:open,onClickOutside:onClickOutside,className:classnames(className,inputClasses)};return/*#__PURE__*/_jsx("div",{className:"relative inline-block "+className,children:/*#__PURE__*/_jsx("div",{className:"absolute z-[9999] mt-1 border rounded-md shadow-lg bg-white",children:/*#__PURE__*/_jsx(ReactDatePicker,_extends({},datePickerProps))})})}export function renderDateFilter(_ref3){var _convertFromStoredDat,_convertFromStoredDat2,_convertFromStoredDat3,_convertFromStoredDat4,_convertFromStoredDat5,_convertFromStoredDat6,_convertFromStoredDat7,_convertFromStoredDat8;var gjsModel=_ref3.gjsModel,performInteraction=_ref3.performInteraction,_ref3$isTemplateView=_ref3.isTemplateView,isTemplateView=_ref3$isTemplateView===void 0?false:_ref3$isTemplateView;var wrapperRef=useRef(null);var buttonRef=useRef(null);var startDatePickerRef=useRef(null);var endDatePickerRef=useRef(null);var dropdownRef=useRef(null);var _useState4=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState4[0],setComponentData=_useState4[1];var _useState5=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState5[0],setAttributes=_useState5[1];var _useState6=useState(false),isApplying=_useState6[0],setIsApplying=_useState6[1];var _useState7=useState(false),isDropdownOpen=_useState7[0],setIsDropdownOpen=_useState7[1];var _useState8=useState(false),isStartDateOpen=_useState8[0],setIsStartDateOpen=_useState8[1];var _useState9=useState(false),isEndDateOpen=_useState9[0],setIsEndDateOpen=_useState9[1];var _useState10=useState({left:"auto",right:"0"}),dropdownPosition=_useState10[0],setDropdownPosition=_useState10[1];var _componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$startL=componentData.startLabel,startLabel=_componentData$startL===void 0?"Start date":_componentData$startL,_componentData$endLab=componentData.endLabel,endLabel=_componentData$endLab===void 0?"End date":_componentData$endLab,_componentData$isClea=componentData.isClearable,isClearable=_componentData$isClea===void 0?true:_componentData$isClea,_componentData$dateFo=componentData.dateFormat,dateFormat=_componentData$dateFo===void 0?"yyyy-MM-dd":_componentData$dateFo,minDate=componentData.minDate,maxDate=componentData.maxDate,_componentData$showTi=componentData.showTimeSelect,showTimeSelect=_componentData$showTi===void 0?true:_componentData$showTi,_componentData$timeFo=componentData.timeFormat,timeFormat=_componentData$timeFo===void 0?"HH:mm":_componentData$timeFo,_componentData$timeIn=componentData.timeIntervals,timeIntervals=_componentData$timeIn===void 0?15:_componentData$timeIn,value=componentData.value,defaultValue=componentData["default"];var _getDefaultDates=getDefaultDates(),defaultStartDate=_getDefaultDates.defaultStartDate,defaultEndDate=_getDefaultDates.defaultEndDate;var globalMin=minDate?parseRelativeDate(minDate):undefined;var globalMax=maxDate?parseRelativeDate(maxDate):undefined;var getInitialStartDate=function getInitialStartDate(){if(value!=null&&value.start){return new Date(value.start)}if(defaultValue!=null&&defaultValue.start){return parseRelativeDate(defaultValue.start)}return defaultStartDate};var getInitialEndDate=function getInitialEndDate(){if(value!=null&&value.end){return new Date(value.end)}if(defaultValue!=null&&defaultValue.end){return parseRelativeDate(defaultValue.end)}return defaultEndDate};var _useState11=useState(getInitialStartDate()),startDate=_useState11[0],setStartDate=_useState11[1];var _useState12=useState(getInitialEndDate()),endDate=_useState12[0],setEndDate=_useState12[1];var _useState13=useState(null),tempStartDate=_useState13[0],setTempStartDate=_useState13[1];var _useState14=useState(null),tempEndDate=_useState14[0],setTempEndDate=_useState14[1];var isBusy=!isTemplateView&&(attributes.interactionApiInProgress||isApplying);var getMaxStartDate=function getMaxStartDate(){return globalMax||tempEndDate};var getMinEndDate=function getMinEndDate(){return globalMin||tempStartDate};var closeAllPickers=function closeAllPickers(){setIsStartDateOpen(false);setIsEndDateOpen(false)};var closeDropdown=function closeDropdown(){setIsDropdownOpen(false);closeAllPickers()};var toggleDropdown=function toggleDropdown(){if(!isDropdownOpen){closeAllPickers()}setIsDropdownOpen(!isDropdownOpen)};var handleStartDateClick=function handleStartDateClick(){if(!isApplying&&!isBusy){setIsEndDateOpen(false);setIsStartDateOpen(!isStartDateOpen)}};var handleEndDateClick=function handleEndDateClick(){if(!isApplying&&!isBusy){setIsStartDateOpen(false);setIsEndDateOpen(!isEndDateOpen)}};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)){closeDropdown()}}function handleEscape(e){if(e.key==="Escape"){closeDropdown()}}doc.addEventListener("pointerdown",handleOutsideClick);doc.addEventListener("keydown",handleEscape);return function(){doc.removeEventListener("pointerdown",handleOutsideClick);doc.removeEventListener("keydown",handleEscape)}},[isDropdownOpen]);// Add click event listeners to detect time selector clicks
|
|
5
|
+
/^(\d{4})\/(\d{1,2})\/(\d{1,2})(?:\s*,?\s*(\d{1,2}):(\d{2}))?$/];for(var _i=0,_commonFormats=commonFormats;_i<_commonFormats.length;_i++){var format=_commonFormats[_i];var match=inputText.match(format);if(match){var day=void 0;var month=void 0;var year=void 0;var hours="0";var minutes="0";if(format.source.startsWith("^(\\d{4})")){year=match[1];month=match[2];day=match[3];var _match$=match[4];hours=_match$===void 0?"0":_match$;var _match$2=match[5];minutes=_match$2===void 0?"0":_match$2}else{day=match[1];month=match[2];year=match[3];var _match$3=match[4];hours=_match$3===void 0?"0":_match$3;var _match$4=match[5];minutes=_match$4===void 0?"0":_match$4}var yearNum=parseInt(year,10);var monthNum=parseInt(month,10);var dayNum=parseInt(day,10);var hoursNum=parseInt(hours,10);var minutesNum=parseInt(minutes,10);var parsedDate=new Date(yearNum,monthNum-1,dayNum,hoursNum,minutesNum);if(!isNaN(parsedDate.getTime())&&parsedDate.getFullYear()===yearNum&&parsedDate.getMonth()===monthNum-1&&parsedDate.getDate()===dayNum){return parsedDate}}}try{var result=sugar.Date.create(inputText==="today"?"now":inputText);if(result instanceof Date&&!isNaN(result.getTime())){return result}}catch(error){return null}return null};var validateDateRange=function validateDateRange(date){if(!date){return""}if(minDate&&date<minDate){return"Minimum allowed date is "+formatDateWithTimezone(minDate,getTimezone(),false)}if(maxDate&&date>maxDate){return"Maximum allowed date is "+formatDateWithTimezone(maxDate,getTimezone(),false)}return""};var handleInputBlur=function handleInputBlur(){setIsEditing(false);if(onChange){var parsedDate=parseInputDate(inputValue);if(parsedDate){var errorMessage=validateDateRange(parsedDate);setValidationError(errorMessage);if(!errorMessage){onChange(parsedDate)}}else if(inputValue.trim()===""){setValidationError("");onChange(null)}else{setValidationError("");setInputValue(formatDate(value))}}};var handleKeyDown=function handleKeyDown(e){if(e.key==="Enter"){e.preventDefault();handleInputBlur()}else if(e.key==="Escape"){e.preventDefault();setInputValue(formatDate(value));setValidationError("");setIsEditing(false)}};return/*#__PURE__*/_jsxs("div",{className:"relative",children:[/*#__PURE__*/_jsx("input",{value:inputValue,onChange:handleInputChange,onFocus:handleInputFocus,onBlur:handleInputBlur,onKeyDown:handleKeyDown,onClick:handleClick,placeholder:placeholder||label,disabled:disabled,className:inputClasses+" "+(disabled?disabledClasses:enabledClasses)+" "+(isOpen?"ring-2 ring-blue-500":""),title:showTime?"Enter date and time":"Enter date"}),/*#__PURE__*/_jsx("div",{className:"absolute right-3 top-7 transform -translate-y-1/2 flex items-center gap-1",children:/*#__PURE__*/_jsx(Calendar,{size:16,className:"text-gray-400 cursor-pointer",onClick:handleClick})}),validationError&&/*#__PURE__*/_jsx("div",{className:"absolute top-full left-0 text-xs text-red-600 px-2 mb-2 z-10",children:validationError})]})};export function DatePicker(_ref2){var _ref2$className=_ref2.className,className=_ref2$className===void 0?"":_ref2$className,_ref2$disabled=_ref2.disabled,disabled=_ref2$disabled===void 0?false:_ref2$disabled,_ref2$enableTime=_ref2.enableTime,enableTime=_ref2$enableTime===void 0?false:_ref2$enableTime,_ref2$isClearable=_ref2.isClearable,isClearable=_ref2$isClearable===void 0?true:_ref2$isClearable,maxDate=_ref2.maxDate,minDate=_ref2.minDate,onChange=_ref2.onChange,_ref2$value=_ref2.value,value=_ref2$value===void 0?null:_ref2$value,open=_ref2.open,onClickOutside=_ref2.onClickOutside,_ref2$showTimeSelect=_ref2.showTimeSelect,showTimeSelect=_ref2$showTimeSelect===void 0?false:_ref2$showTimeSelect,_ref2$timeFormat=_ref2.timeFormat,timeFormat=_ref2$timeFormat===void 0?"HH:mm":_ref2$timeFormat,_ref2$timeIntervals=_ref2.timeIntervals,timeIntervals=_ref2$timeIntervals===void 0?15:_ref2$timeIntervals,_ref2$inline=_ref2.inline,inline=_ref2$inline===void 0?true:_ref2$inline;var dateFormat=showTimeSelect||enableTime?"yyyy-MM-dd HH:mm":"yyyy-MM-dd";var date=typeof value==="string"&&value?new Date(value):value;var shouldShowTime=showTimeSelect||enableTime;var datePickerProps={selected:date,minDate:minDate,maxDate:maxDate,disabled:disabled,isClearable:isClearable,onChange:onChange,dateFormat:dateFormat,showTimeSelect:shouldShowTime,timeFormat:timeFormat,timeIntervals:timeIntervals,timeCaption:"Time",portalId:"date-picker-portal",popperClassName:"date-picker-popper !z-[9999]",popperPlacement:"bottom-end",inline:inline,open:open,onClickOutside:onClickOutside,className:classnames(className,inputClasses)};return/*#__PURE__*/_jsx("div",{className:"relative inline-block "+className,children:/*#__PURE__*/_jsx("div",{className:"absolute z-[9999] mt-1 border rounded-md shadow-lg bg-white",children:/*#__PURE__*/_jsx(ReactDatePicker,_extends({},datePickerProps))})})}export function renderDateFilter(_ref3){var _convertFromStoredDat,_convertFromStoredDat2,_convertFromStoredDat3,_convertFromStoredDat4,_convertFromStoredDat5,_convertFromStoredDat6,_convertFromStoredDat7,_convertFromStoredDat8;var gjsModel=_ref3.gjsModel,performInteraction=_ref3.performInteraction,_ref3$isTemplateView=_ref3.isTemplateView,isTemplateView=_ref3$isTemplateView===void 0?false:_ref3$isTemplateView;var wrapperRef=useRef(null);var buttonRef=useRef(null);var startDatePickerRef=useRef(null);var endDatePickerRef=useRef(null);var dropdownRef=useRef(null);var _useState4=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState4[0],setComponentData=_useState4[1];var _useState5=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState5[0],setAttributes=_useState5[1];var _useState6=useState(false),isApplying=_useState6[0],setIsApplying=_useState6[1];var _useState7=useState(false),isDropdownOpen=_useState7[0],setIsDropdownOpen=_useState7[1];var _useState8=useState(false),isStartDateOpen=_useState8[0],setIsStartDateOpen=_useState8[1];var _useState9=useState(false),isEndDateOpen=_useState9[0],setIsEndDateOpen=_useState9[1];var _useState10=useState({left:"auto",right:"0"}),dropdownPosition=_useState10[0],setDropdownPosition=_useState10[1];var _useState11=useState("absolute"),activeTab=_useState11[0],setActiveTab=_useState11[1];var _useState12=useState(6),relativeNumber=_useState12[0],setRelativeNumber=_useState12[1];var _useState13=useState("months"),relativeUnit=_useState13[0],setRelativeUnit=_useState13[1];var _useState14=useState(6),tempNumber=_useState14[0],setTempNumber=_useState14[1];var _useState15=useState("months"),tempUnit=_useState15[0],setTempUnit=_useState15[1];var _componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$startL=componentData.startLabel,startLabel=_componentData$startL===void 0?"Start date":_componentData$startL,_componentData$endLab=componentData.endLabel,endLabel=_componentData$endLab===void 0?"End date":_componentData$endLab,_componentData$isClea=componentData.isClearable,isClearable=_componentData$isClea===void 0?true:_componentData$isClea,_componentData$dateFo=componentData.dateFormat,dateFormat=_componentData$dateFo===void 0?"yyyy-MM-dd":_componentData$dateFo,minDate=componentData.minDate,maxDate=componentData.maxDate,_componentData$showTi=componentData.showTimeSelect,showTimeSelect=_componentData$showTi===void 0?true:_componentData$showTi,_componentData$timeFo=componentData.timeFormat,timeFormat=_componentData$timeFo===void 0?"HH:mm":_componentData$timeFo,_componentData$timeIn=componentData.timeIntervals,timeIntervals=_componentData$timeIn===void 0?15:_componentData$timeIn,value=componentData.value,defaultValue=componentData["default"];var _getDefaultDates=getDefaultDates(),defaultStartDate=_getDefaultDates.defaultStartDate,defaultEndDate=_getDefaultDates.defaultEndDate;var globalMin=minDate?parseRelativeDate(minDate):undefined;var globalMax=maxDate?parseRelativeDate(maxDate):undefined;var getInitialStartDate=function getInitialStartDate(){if(value!=null&&value.start){return new Date(value.start)}if(defaultValue!=null&&defaultValue.start){return parseRelativeDate(defaultValue.start)}return defaultStartDate};var getInitialEndDate=function getInitialEndDate(){if(value!=null&&value.end){return new Date(value.end)}if(defaultValue!=null&&defaultValue.end){return parseRelativeDate(defaultValue.end)}return defaultEndDate};var _useState16=useState(getInitialStartDate()),startDate=_useState16[0],setStartDate=_useState16[1];var _useState17=useState(getInitialEndDate()),endDate=_useState17[0],setEndDate=_useState17[1];var _useState18=useState(null),tempStartDate=_useState18[0],setTempStartDate=_useState18[1];var _useState19=useState(null),tempEndDate=_useState19[0],setTempEndDate=_useState19[1];var isBusy=!isTemplateView&&(attributes.interactionApiInProgress||isApplying);var relativeDateString=tempNumber+" "+tempUnit+" ago";var relativeStartDate=parseRelativeDate(relativeDateString);var relativeEndDate=parseRelativeDate("today");var getMaxStartDate=function getMaxStartDate(){return globalMax||tempEndDate};var getMinEndDate=function getMinEndDate(){return globalMin||tempStartDate};var closeAllPickers=function closeAllPickers(){setIsStartDateOpen(false);setIsEndDateOpen(false)};var closeDropdown=function closeDropdown(){setIsDropdownOpen(false);closeAllPickers()};var toggleDropdown=function toggleDropdown(){if(!isDropdownOpen){closeAllPickers()}setIsDropdownOpen(!isDropdownOpen)};var handleStartDateClick=function handleStartDateClick(){if(!isApplying&&!isBusy){setIsEndDateOpen(false);setIsStartDateOpen(!isStartDateOpen)}};var handleEndDateClick=function handleEndDateClick(){if(!isApplying&&!isBusy){setIsStartDateOpen(false);setIsEndDateOpen(!isEndDateOpen)}};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)){closeDropdown()}}function handleEscape(e){if(e.key==="Escape"){closeDropdown()}}doc.addEventListener("pointerdown",handleOutsideClick);doc.addEventListener("keydown",handleEscape);return function(){doc.removeEventListener("pointerdown",handleOutsideClick);doc.removeEventListener("keydown",handleEscape)}},[isDropdownOpen]);// Add click event listeners to detect time selector clicks
|
|
6
6
|
useEffect(function(){var handleTimeClick=function handleTimeClick(event,isStartPicker){var target=event.target;// Check if the click was on time-related elements
|
|
7
7
|
var isTimeClick=target.closest(".react-datepicker__time-container")||target.closest(".react-datepicker__time-list")||target.closest(".react-datepicker__time-list-item")||target.classList.contains("react-datepicker__time-list-item");if(isTimeClick&&showTimeSelect){// Close the picker after a small delay to allow the time selection to complete
|
|
8
8
|
setTimeout(function(){if(isStartPicker){setIsStartDateOpen(false)}else{setIsEndDateOpen(false)}},100)}};var startPickerElement=startDatePickerRef.current;var endPickerElement=endDatePickerRef.current;if(isStartDateOpen&&startPickerElement){var handleStartTimeClick=function handleStartTimeClick(e){return handleTimeClick(e,true)};startPickerElement.addEventListener("click",handleStartTimeClick);return function(){startPickerElement.removeEventListener("click",handleStartTimeClick)}}if(isEndDateOpen&&endPickerElement){var handleEndTimeClick=function handleEndTimeClick(e){return handleTimeClick(e,false)};endPickerElement.addEventListener("click",handleEndTimeClick);return function(){endPickerElement.removeEventListener("click",handleEndTimeClick)}}// Always return undefined if no cleanup is needed
|
|
9
|
-
return undefined},[isStartDateOpen,isEndDateOpen,showTimeSelect]);var handleStartDateChange=function handleStartDateChange(date){var adjustedDate=convertToTargetTimezone(date);setTempStartDate(adjustedDate);if(!showTimeSelect){setIsStartDateOpen(false)}};var handleEndDateChange=function handleEndDateChange(date){var adjustedDate=convertToTargetTimezone(date);setTempEndDate(adjustedDate);if(!showTimeSelect){setIsEndDateOpen(false)}};var handleApply=/*#__PURE__*/function(){var _ref4=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var dateValues,id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:setIsApplying(true);_context.prev=1;dateValues={start:(tempStartDate==null?void 0:tempStartDate.toISOString())||null,end:(tempEndDate==null?void 0:tempEndDate.toISOString())||null};gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{value:dateValues}));id=gjsModel.get("id");
|
|
9
|
+
return undefined},[isStartDateOpen,isEndDateOpen,showTimeSelect]);var handleStartDateChange=function handleStartDateChange(date){var adjustedDate=convertToTargetTimezone(date);setTempStartDate(adjustedDate);if(!showTimeSelect){setIsStartDateOpen(false)}};var handleEndDateChange=function handleEndDateChange(date){var adjustedDate=convertToTargetTimezone(date);setTempEndDate(adjustedDate);if(!showTimeSelect){setIsEndDateOpen(false)}};var handleApply=/*#__PURE__*/function(){var _ref4=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var dateValues,id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:setIsApplying(true);_context.prev=1;if(activeTab==="relative"){dateValues={start:(relativeStartDate==null?void 0:relativeStartDate.toISOString())||null,end:(relativeEndDate==null?void 0:relativeEndDate.toISOString())||null};setRelativeNumber(tempNumber);setRelativeUnit(tempUnit)}else{dateValues={start:(tempStartDate==null?void 0:tempStartDate.toISOString())||null,end:(tempEndDate==null?void 0:tempEndDate.toISOString())||null};setStartDate(tempStartDate);setEndDate(tempEndDate)}gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{value:dateValues}));id=gjsModel.get("id");_context.next=7;return performInteraction({interactionType:"dateFilter",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 7:closeDropdown();case 8:_context.prev=8;setIsApplying(false);return _context.finish(8);case 11:case"end":return _context.stop()}},_callee,null,[[1,,8,11]])}));return function handleApply(){return _ref4.apply(this,arguments)}}();useEffect(function(){if(isDropdownOpen){setTempStartDate(startDate);setTempEndDate(endDate);setTempNumber(relativeNumber);setTempUnit(relativeUnit)}else{closeAllPickers()}},[isDropdownOpen,startDate,endDate,relativeNumber,relativeUnit]);useEffect(function(){var _document$getElementB;if(!isDropdownOpen||!buttonRef.current){return}var buttonRect=buttonRef.current.getBoundingClientRect();var dropdownWidth=380;var iframeViewportWidth=document.documentElement.clientWidth;var iframeBodyWidth=((_document$getElementB=document.getElementById("dashboard-root"))==null?void 0:_document$getElementB.clientWidth)||iframeViewportWidth;var spaceToRight=iframeBodyWidth-buttonRect.right;var spaceToLeft=buttonRect.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(){var updateComponentData=function updateComponentData(){var _newData$value,_componentData$value,_newData$value2,_componentData$value2;var newData=_extends({},gjsModel.get("componentProps"));setComponentData(newData);if((_newData$value=newData.value)!=null&&_newData$value.start&&newData.value.start!==((_componentData$value=componentData.value)==null?void 0:_componentData$value.start)){setStartDate(new Date(newData.value.start))}if((_newData$value2=newData.value)!=null&&_newData$value2.end&&newData.value.end!==((_componentData$value2=componentData.value)==null?void 0:_componentData$value2.end)){setEndDate(new Date(newData.value.end))}};var updateAttributes=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,componentData.value]);return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"relative "+className,children:[/*#__PURE__*/_jsxs("button",{ref:buttonRef,onClick:toggleDropdown,disabled:isBusy,className:buttonClasses+" "+(isBusy?disabledClasses:enabledClasses),title:"Open Date & Time Filter",children:[/*#__PURE__*/_jsx("div",{className:"flex items-center gap-1",children:/*#__PURE__*/_jsx(Calendar,{size:16,className:"text-gray-600"})}),isBusy&&/*#__PURE__*/_jsx(Loader2Icon,{size:14,className:"animate-spin text-blue-500"})]}),isDropdownOpen&&/*#__PURE__*/_jsx("div",{ref:dropdownRef,className:dropdownClasses,style:dropdownPosition,children:/*#__PURE__*/_jsxs("div",{className:"space-y-4",children:[/*#__PURE__*/_jsxs("div",{className:"flex items-center justify-between",children:[/*#__PURE__*/_jsx("h3",{className:"text-sm font-medium text-gray-900",children:"Select date & time range"}),/*#__PURE__*/_jsx("button",{onClick:closeDropdown,className:closeButtonClasses,children:/*#__PURE__*/_jsx(X,{size:14,className:"text-gray-400"})})]}),/*#__PURE__*/_jsxs("div",{className:"flex border-b mb-2",children:[/*#__PURE__*/_jsx("button",{className:"flex-1 py-2 text-sm font-medium "+(activeTab==="absolute"?"border-b-2 border-blue-600 text-blue-600":"text-gray-500"),onClick:function onClick(){return setActiveTab("absolute")},children:DATE_FILTER.TABS.ABSOLUTE}),/*#__PURE__*/_jsx("button",{className:"flex-1 py-2 text-sm font-medium "+(activeTab==="relative"?"border-b-2 border-blue-600 text-blue-600":"text-gray-500"),onClick:function onClick(){return setActiveTab("relative")},children:DATE_FILTER.TABS.RELATIVE})]}),activeTab==="relative"?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs("div",{className:"flex gap-2 mb-2",children:[/*#__PURE__*/_jsx("input",{type:"number",min:1,max:100,value:tempNumber,onChange:function onChange(e){var val=e.target.value;if(val.startsWith("0")){e.target.value=String(Number(val))}if(Number(val)>100){e.target.value=val.slice(0,-1)}setTempNumber(Number(e.target.value))},className:"flex-1 min-w-0 px-2 py-1 border border-gray-300 rounded-md"}),/*#__PURE__*/_jsx("select",{value:tempUnit,onChange:function onChange(e){return setTempUnit(e.target.value)},className:"flex-1 min-w-0 px-2 py-1 border border-gray-300 rounded-md",children:DATE_FILTER.RELATIVE_UNITS.map(function(unit){return/*#__PURE__*/_jsx("option",{value:unit.key,children:unit.label},unit.key)})})]}),/*#__PURE__*/_jsxs("div",{className:"text-sm text-gray-500 mb-2",children:["Selected date range is ",/*#__PURE__*/_jsx("b",{children:formatDateWithTimezone(relativeStartDate,getTimezone(),showTimeSelect)})," to ",/*#__PURE__*/_jsx("b",{children:formatDateWithTimezone(relativeEndDate,getTimezone(),showTimeSelect)})]})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs("div",{className:"space-y-2",children:[/*#__PURE__*/_jsx("label",{className:"block text-sm font-medium text-gray-700",children:startLabel}),/*#__PURE__*/_jsx("div",{className:"relative",children:/*#__PURE__*/_jsx(DateInput,{label:startLabel,value:tempStartDate,onClick:handleStartDateClick,disabled:isApplying,placeholder:"Select start date",isOpen:isStartDateOpen,showTime:showTimeSelect,onChange:handleStartDateChange,minDate:globalMin?(_convertFromStoredDat=convertFromStoredDate(globalMin))!=null?_convertFromStoredDat:undefined:undefined,maxDate:getMaxStartDate()?(_convertFromStoredDat2=convertFromStoredDate(getMaxStartDate()))!=null?_convertFromStoredDat2:undefined:undefined})}),isStartDateOpen&&/*#__PURE__*/_jsx("div",{ref:startDatePickerRef,className:"mt-2 p-2",children:/*#__PURE__*/_jsx(ReactDatePicker,{selected:convertFromStoredDate(tempStartDate),onChange:handleStartDateChange,minDate:globalMin?(_convertFromStoredDat3=convertFromStoredDate(globalMin))!=null?_convertFromStoredDat3:undefined:undefined,maxDate:getMaxStartDate()?(_convertFromStoredDat4=convertFromStoredDate(getMaxStartDate()))!=null?_convertFromStoredDat4:undefined:undefined,showTimeSelect:showTimeSelect,timeFormat:timeFormat,timeIntervals:timeIntervals,timeCaption:"Time",dateFormat:showTimeSelect?"dd/MM/yyyy HH:mm":dateFormat,inline:true,isClearable:isClearable,disabled:isApplying})})]}),/*#__PURE__*/_jsxs("div",{className:"space-y-2",children:[/*#__PURE__*/_jsx("label",{className:"block text-sm font-medium text-gray-700",children:endLabel}),/*#__PURE__*/_jsx("div",{className:"relative",children:/*#__PURE__*/_jsx(DateInput,{label:endLabel,value:tempEndDate,onClick:handleEndDateClick,disabled:isApplying,placeholder:"Select end date",isOpen:isEndDateOpen,showTime:showTimeSelect,onChange:handleEndDateChange,minDate:getMinEndDate()?(_convertFromStoredDat5=convertFromStoredDate(getMinEndDate()))!=null?_convertFromStoredDat5:undefined:undefined,maxDate:globalMax?(_convertFromStoredDat6=convertFromStoredDate(globalMax))!=null?_convertFromStoredDat6:undefined:undefined})}),isEndDateOpen&&/*#__PURE__*/_jsx("div",{ref:endDatePickerRef,className:"mt-2 p-2",children:/*#__PURE__*/_jsx(ReactDatePicker,{selected:convertFromStoredDate(tempEndDate),onChange:handleEndDateChange,minDate:getMinEndDate()?(_convertFromStoredDat7=convertFromStoredDate(getMinEndDate()))!=null?_convertFromStoredDat7:undefined:undefined,maxDate:globalMax?(_convertFromStoredDat8=convertFromStoredDate(globalMax))!=null?_convertFromStoredDat8:undefined:undefined,showTimeSelect:showTimeSelect,timeFormat:timeFormat,timeIntervals:timeIntervals,timeCaption:"Time",dateFormat:showTimeSelect?"dd/MM/yyyy HH:mm":dateFormat,inline:true,isClearable:isClearable,disabled:isApplying})})]})]}),/*#__PURE__*/_jsxs("div",{className:"flex gap-2 pt-2",children:[/*#__PURE__*/_jsx(Button,{variant:"outline",onClick:closeDropdown,disabled:isApplying,className:"flex-1 h-8 text-xs bg-[#EAECFB] border border-[#2A44D4] text-[#263DBF] hover:bg-[#EAECFB] hover:text-[#263DBF]",size:"sm",children:"Cancel"}),/*#__PURE__*/_jsx(Button,{onClick:handleApply,disabled:isApplying,className:"flex-1 h-8 text-xs bg-[#2A44D4] text-white hover:bg-[#2A44D4] hover:text-white",size:"sm",children:isApplying?/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(Loader2Icon,{size:12,className:"animate-spin mr-1"})}):"Apply"})]})]})})]})}
|
|
10
10
|
//# sourceMappingURL=date-filter.js.map
|
|
@@ -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","_ref3$isTemplateView","isTemplateView","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 isTemplateView?: boolean;\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, isTemplateView = false }: 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 = !isTemplateView && (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","DATE_FILTER","getAffectedComponentsWithLoader","Button","sugar","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","create","isNaN","getTime","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","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","_ref3$isTemplateView","isTemplateView","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","_useState11","activeTab","setActiveTab","_useState12","relativeNumber","setRelativeNumber","_useState13","relativeUnit","setRelativeUnit","_useState14","tempNumber","setTempNumber","_useState15","tempUnit","setTempUnit","_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","_useState16","startDate","setStartDate","_useState17","endDate","setEndDate","_useState18","tempStartDate","setTempStartDate","_useState19","tempEndDate","setTempEndDate","isBusy","interactionApiInProgress","relativeDateString","relativeStartDate","relativeEndDate","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","TABS","ABSOLUTE","RELATIVE","type","min","max","val","String","Number","slice","RELATIVE_UNITS","map","unit","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';\nimport { DATE_FILTER } from '../../../helpers/constants';\n\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Button } from './button';\nimport sugar from 'sugar';\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 isTemplateView?: boolean;\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 = sugar.Date.create(dateString === 'today' ? 'now' : dateString as string);\n\n if (result instanceof Date && !isNaN(result.getTime())) {\n return result;\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 = sugar.Date.create(inputText === 'today' ? 'now' : inputText);\n\n if (result instanceof Date && !isNaN(result.getTime())) {\n return result;\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} ${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, isTemplateView = false }: 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 const [activeTab, setActiveTab] = useState<'absolute' | 'relative'>('absolute');\n const [relativeNumber, setRelativeNumber] = useState(6);\n const [relativeUnit, setRelativeUnit] = useState('months');\n const [tempNumber, setTempNumber] = useState(6);\n const [tempUnit, setTempUnit] = useState('months');\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 = !isTemplateView && (attributes.interactionApiInProgress || isApplying);\n\n const relativeDateString = `${tempNumber} ${tempUnit} ago`;\n const relativeStartDate = parseRelativeDate(relativeDateString);\n const relativeEndDate = parseRelativeDate('today');\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 let dateValues;\n if (activeTab === 'relative') {\n dateValues = {\n start: relativeStartDate?.toISOString() || null,\n end: relativeEndDate?.toISOString() || null,\n };\n\n setRelativeNumber(tempNumber);\n setRelativeUnit(tempUnit);\n } else {\n dateValues = {\n start: tempStartDate?.toISOString() || null,\n end: tempEndDate?.toISOString() || null,\n };\n\n setStartDate(tempStartDate);\n setEndDate(tempEndDate);\n }\n\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: dateValues,\n });\n\n const id = gjsModel.get('id');\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 setTempNumber(relativeNumber);\n setTempUnit(relativeUnit);\n } else {\n closeAllPickers();\n }\n }, [isDropdownOpen, startDate, endDate, relativeNumber, relativeUnit]);\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=\"flex border-b mb-2\">\n <button\n className={`flex-1 py-2 text-sm font-medium ${activeTab === 'absolute' ? 'border-b-2 border-blue-600 text-blue-600' : 'text-gray-500'}`}\n onClick={() => setActiveTab('absolute')}\n >\n {DATE_FILTER.TABS.ABSOLUTE}\n </button>\n <button\n className={`flex-1 py-2 text-sm font-medium ${activeTab === 'relative' ? 'border-b-2 border-blue-600 text-blue-600' : 'text-gray-500'}`}\n onClick={() => setActiveTab('relative')}\n >\n {DATE_FILTER.TABS.RELATIVE}\n </button>\n </div>\n\n {activeTab === 'relative' ? (\n <>\n <div className=\"flex gap-2 mb-2\">\n <input\n type='number'\n min={1}\n max={100}\n value={tempNumber}\n onChange={(e) => {\n let val = e.target.value;\n if (val.startsWith('0')) {\n e.target.value = String(Number(val));\n }\n if (Number(val) > 100) {\n e.target.value = val.slice(0, -1);\n }\n setTempNumber(Number(e.target.value));\n }}\n className=\"flex-1 min-w-0 px-2 py-1 border border-gray-300 rounded-md\"\n />\n <select\n value={tempUnit}\n onChange={e => setTempUnit(e.target.value)}\n className=\"flex-1 min-w-0 px-2 py-1 border border-gray-300 rounded-md\"\n >\n {DATE_FILTER.RELATIVE_UNITS.map(unit => (\n <option key={unit.key} value={unit.key}>{unit.label}</option>\n ))}\n </select>\n </div>\n <div className=\"text-sm text-gray-500 mb-2\">\n Selected date range is <b>{formatDateWithTimezone(relativeStartDate, getTimezone(), showTimeSelect)}</b> to <b>{formatDateWithTimezone(relativeEndDate, getTimezone(), showTimeSelect)}</b>\n </div>\n </>\n ) : (\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 )}\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":[]}
|