@peak-ai/canvas 1.4.17-rc.16 → 1.4.19

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.
Files changed (57) hide show
  1. package/GrapesjsCanvas.d.ts +9 -1
  2. package/GrapesjsCanvas.js +5 -4
  3. package/GrapesjsCanvas.js.map +1 -1
  4. package/helpers/css.d.ts +1 -1
  5. package/helpers/css.js +1 -1
  6. package/helpers/css.js.map +1 -1
  7. package/helpers/filter-placeholder.d.ts +1 -0
  8. package/helpers/filter-placeholder.js +2 -0
  9. package/helpers/filter-placeholder.js.map +1 -0
  10. package/index.d.ts +5 -0
  11. package/index.js +1 -1
  12. package/index.js.map +1 -1
  13. package/package.json +6 -2
  14. package/plugins/grapejs-plugin.d.ts +1 -1
  15. package/plugins/grapejs-plugin.js +3 -2
  16. package/plugins/grapejs-plugin.js.map +1 -1
  17. package/plugins/helpers/custom-modal.d.ts +11 -0
  18. package/plugins/helpers/custom-modal.js +2 -0
  19. package/plugins/helpers/custom-modal.js.map +1 -0
  20. package/plugins/helpers/data-table.d.ts +2 -1
  21. package/plugins/helpers/data-table.js +1 -1
  22. package/plugins/helpers/data-table.js.map +1 -1
  23. package/plugins/helpers/extra.js +1 -1
  24. package/plugins/helpers/extra.js.map +1 -1
  25. package/plugins/helpers/query-details-modal.d.ts +17 -0
  26. package/plugins/helpers/query-details-modal.js +4 -0
  27. package/plugins/helpers/query-details-modal.js.map +1 -0
  28. package/plugins/helpers/query-loading-modal.d.ts +5 -0
  29. package/plugins/helpers/query-loading-modal.js +2 -0
  30. package/plugins/helpers/query-loading-modal.js.map +1 -0
  31. package/plugins/helpers/render-components.js +7 -7
  32. package/plugins/helpers/render-components.js.map +1 -1
  33. package/plugins/helpers/styled-info-button.d.ts +28 -0
  34. package/plugins/helpers/styled-info-button.js +2 -0
  35. package/plugins/helpers/styled-info-button.js.map +1 -0
  36. package/shadcn/components/icons/AiAvatarIcon.d.ts +7 -0
  37. package/shadcn/components/icons/AiAvatarIcon.js +2 -0
  38. package/shadcn/components/icons/AiAvatarIcon.js.map +1 -0
  39. package/shadcn/components/ui/button.d.ts +1 -1
  40. package/shadcn/components/ui/component-wrapper.d.ts +26 -0
  41. package/shadcn/components/ui/component-wrapper.js +2 -0
  42. package/shadcn/components/ui/component-wrapper.js.map +1 -0
  43. package/shadcn/components/ui/date-filter.js +1 -1
  44. package/shadcn/components/ui/date-filter.js.map +1 -1
  45. package/shadcn/components/ui/error-container.d.ts +22 -0
  46. package/shadcn/components/ui/error-container.js +2 -0
  47. package/shadcn/components/ui/error-container.js.map +1 -0
  48. package/shadcn/components/ui/error-wrapper.d.ts +20 -0
  49. package/shadcn/components/ui/error-wrapper.js +2 -0
  50. package/shadcn/components/ui/error-wrapper.js.map +1 -0
  51. package/shadcn/components/ui/filter.js +1 -1
  52. package/shadcn/components/ui/filter.js.map +1 -1
  53. package/shadcn/components/ui/search.js +1 -1
  54. package/shadcn/components/ui/search.js.map +1 -1
  55. package/shadcn/components/ui/table.js +1 -1
  56. package/shadcn/components/ui/table.js.map +1 -1
  57. package/types/grapesjs-tailwind.d.js.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-wrapper.js","names":["styled","ComponentWrapper","div","withConfig","displayName","componentId","IssueBanner","IssueIcon","IssueContent","IssueMessage","IssueType","_ref","size","_ref2","ComponentContent"],"sources":["../../../../src/shadcn/components/ui/component-wrapper.tsx"],"sourcesContent":["import styled from 'styled-components';\n\ntype Size = 'small' | 'medium' | 'large';\ntype IssueType = 'error' | 'missing';\n\nexport const ComponentWrapper = styled.div<{ hasIssue: boolean; issueType: IssueType }>`\n position: relative;\n width: 100%;\n height: 100%;\n border-radius: 6px;\n overflow: hidden;\n`;\n\nexport const IssueBanner = styled.div<{ size: Size; issueType: IssueType }>`\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 4px;\n color: #495057;\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n margin-bottom: 8px;\n padding: 8px 12px;\n font-size: 14px;\n`;\n\nexport const IssueIcon = styled.div<{ size: Size }>`\n font-size: 16px;\n flex-shrink: 0;\n`;\n\nexport const IssueContent = styled.div`\n flex: 1;\n min-width: 0;\n`;\n\nexport const IssueMessage = styled.div<{ size: Size }>`\n font-weight: 500;\n line-height: 1.4;\n`;\n\nexport const IssueType = styled.div<{ size: Size }>`\n opacity: 0.9;\n font-size: ${({ size }) => {\n switch (size) {\n case 'small': return '9px';\n case 'medium': return '10px';\n case 'large': return '11px';\n default: return '10px';\n }\n }};\n text-transform: uppercase;\n letter-spacing: ${({ size }) => (size === 'small' ? '0.2px' : '0.3px')};\n`;\n\nexport const ComponentContent = styled.div<{ hasIssue: boolean; issueType: IssueType; size: Size }>`\n flex: 1;\n display: flex;\n flex-direction: column;\n`;\n"],"mappings":"AAAA,MAAO,CAAAA,MAAM,KAAM,mBAAmB,CAKtC,MAAO,IAAM,CAAAC,gBAAgB,CAAGD,MAAM,CAACE,GAAG,CAAAC,UAAA,EAAAC,WAAA,uCAAAC,WAAA,iGAMzC,CAED,MAAO,IAAM,CAAAC,WAAW,CAAGN,MAAM,CAACE,GAAG,CAAAC,UAAA,EAAAC,WAAA,kCAAAC,WAAA,4MAYpC,CAED,MAAO,IAAM,CAAAE,SAAS,CAAGP,MAAM,CAACE,GAAG,CAAAC,UAAA,EAAAC,WAAA,gCAAAC,WAAA,mDAGlC,CAED,MAAO,IAAM,CAAAG,YAAY,CAAGR,MAAM,CAACE,GAAG,CAAAC,UAAA,EAAAC,WAAA,mCAAAC,WAAA,yCAGrC,CAED,MAAO,IAAM,CAAAI,YAAY,CAAGT,MAAM,CAACE,GAAG,CAAAC,UAAA,EAAAC,WAAA,mCAAAC,WAAA,sDAGrC,CAED,MAAO,IAAM,CAAAK,SAAS,CAAGV,MAAM,CAACE,GAAG,CAAAC,UAAA,EAAAC,WAAA,gCAAAC,WAAA,4FAEpB,SAAAM,IAAA,CAAc,IAAX,CAAAC,IAAI,CAAAD,IAAA,CAAJC,IAAI,CAClB,OAAQA,IAAI,EACV,IAAK,OAAO,CAAE,MAAO,KAAK,CAC1B,IAAK,QAAQ,CAAE,MAAO,MAAM,CAC5B,IAAK,OAAO,CAAE,MAAO,MAAM,CAC3B,QAAS,MAAO,MAClB,CACF,CAAC,CAEiB,SAAAC,KAAA,KAAG,CAAAD,IAAI,CAAAC,KAAA,CAAJD,IAAI,OAAQ,CAAAA,IAAI,GAAK,OAAO,CAAG,OAAO,CAAG,OAAO,CAAC,CACvE,CAED,MAAO,IAAM,CAAAE,gBAAgB,CAAGd,MAAM,CAACE,GAAG,CAAAC,UAAA,EAAAC,WAAA,uCAAAC,WAAA,gEAIzC","ignoreList":[]}
@@ -6,5 +6,5 @@ import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _e
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");setStartDate(tempStartDate);setEndDate(tempEndDate);_context.next=9;return performInteraction({interactionType:"dateFilter",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 9:closeDropdown();case 10:_context.prev=10;setIsApplying(false);return _context.finish(10);case 13:case"end":return _context.stop()}},_callee,null,[[1,,10,13]])}));return function handleApply(){return _ref4.apply(this,arguments)}}();useEffect(function(){if(isDropdownOpen){setTempStartDate(startDate);setTempEndDate(endDate)}else{closeAllPickers()}},[isDropdownOpen,startDate,endDate]);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:"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",size:"sm",children:"Cancel"}),/*#__PURE__*/_jsx(Button,{onClick:handleApply,disabled:isApplying,className:"flex-1 h-8 text-xs",size:"sm",children:isApplying?/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(Loader2Icon,{size:12,className:"animate-spin mr-1"})}):"Apply"})]})]})})]})}
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");setStartDate(tempStartDate);setEndDate(tempEndDate);_context.next=9;return performInteraction({interactionType:"dateFilter",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 9:closeDropdown();case 10:_context.prev=10;setIsApplying(false);return _context.finish(10);case 13:case"end":return _context.stop()}},_callee,null,[[1,,10,13]])}));return function handleApply(){return _ref4.apply(this,arguments)}}();useEffect(function(){if(isDropdownOpen){setTempStartDate(startDate);setTempEndDate(endDate)}else{closeAllPickers()}},[isDropdownOpen,startDate,endDate]);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:"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","wrapperRef","buttonRef","startDatePickerRef","endDatePickerRef","dropdownRef","_useState4","get","componentData","setComponentData","_useState5","attributes","setAttributes","_useState6","isApplying","setIsApplying","_useState7","isDropdownOpen","setIsDropdownOpen","_useState8","isStartDateOpen","setIsStartDateOpen","_useState9","isEndDateOpen","setIsEndDateOpen","_useState10","left","right","dropdownPosition","setDropdownPosition","_componentData$classN","_componentData$affect","affectedComponents","_componentData$startL","startLabel","_componentData$endLab","endLabel","_componentData$isClea","_componentData$dateFo","_componentData$showTi","_componentData$timeFo","_componentData$timeIn","defaultValue","_getDefaultDates","globalMin","undefined","globalMax","getInitialStartDate","start","getInitialEndDate","end","_useState11","setStartDate","_useState12","endDate","setEndDate","_useState13","tempStartDate","setTempStartDate","_useState14","tempEndDate","setTempEndDate","isBusy","interactionApiInProgress","getMaxStartDate","getMinEndDate","closeAllPickers","closeDropdown","toggleDropdown","handleStartDateClick","handleEndDateClick","_wrapperRef$current$o","_wrapperRef$current","doc","current","ownerDocument","document","handleOutsideClick","contains","handleEscape","addEventListener","removeEventListener","handleTimeClick","event","isStartPicker","isTimeClick","closest","classList","setTimeout","startPickerElement","endPickerElement","handleStartTimeClick","handleEndTimeClick","handleStartDateChange","adjustedDate","handleEndDateChange","handleApply","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dateValues","id","wrap","_callee$","_context","prev","next","toISOString","set","interactionType","concat","finish","stop","apply","arguments","_document$getElementB","buttonRect","getBoundingClientRect","dropdownWidth","iframeViewportWidth","documentElement","clientWidth","iframeBodyWidth","getElementById","spaceToRight","spaceToLeft","shiftLeft","updateComponentData","_newData$value","_componentData$value","_newData$value2","_componentData$value2","newData","updateAttributes","on","off","ref","style","variant"],"sources":["../../../../src/shadcn/components/ui/date-filter.tsx"],"sourcesContent":["/* eslint-disable func-style */\n/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Calendar, Loader2Icon, X } from 'lucide-react';\nimport ReactDatePicker from 'react-datepicker';\nimport { zonedTimeToUtc, utcToZonedTime } from 'date-fns-tz';\nimport classnames from 'classnames';\n\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Button } from './button';\nimport sherlock from 'sherlockjs';\n\nexport type DatePickerProps = {\n className?: string;\n dateFormat?: string;\n disabled?: boolean;\n enableTime?: boolean;\n isInputEditable?: boolean;\n isClearable?: boolean;\n label?: string;\n maxDate?: Date | undefined;\n minDate?: Date | undefined;\n onChange(date: Date | null): void;\n value: Date | null;\n open?: boolean;\n onClickOutside?: () => void;\n showTimeSelect?: boolean;\n timeFormat?: string;\n timeIntervals?: number;\n inline?: boolean;\n};\n\ntype DateFilterProps = {\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nconst TIMEZONE = 'TIMEZONE';\n\nfunction getTimezone() {\n return window.localStorage.getItem(TIMEZONE) || 'UTC';\n}\n\nconst formatDateWithTimezone = (date: Date | null, timezone: string, showTime = false): string => {\n if (!date) {\n return '';\n }\n\n const formatOptions: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n ...(showTime && {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }),\n timeZone: timezone,\n };\n\n return date.toLocaleString('en-GB', formatOptions);\n};\n\nconst convertToTargetTimezone = (date: Date | null): Date | null => {\n if (!date) {return null;}\n \n const targetTimezone = getTimezone();\n\n return zonedTimeToUtc(date, targetTimezone);\n};\n\nconst convertFromStoredDate = (date: Date | null): Date | null => {\n if (!date) {return null;}\n \n const targetTimezone = getTimezone();\n \n return utcToZonedTime(date, targetTimezone);\n};\n\nconst inputClasses =\n 'w-full px-3 py-2 border border-gray-300 rounded-md mb-1 focus:outline-none focus:ring-2 focus:ring-blue-500';\nconst disabledClasses = 'opacity-60 cursor-not-allowed bg-gray-50';\nconst enabledClasses = 'cursor-pointer';\n\nconst buttonClasses =\n 'flex items-center gap-2 px-3 py-2 border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors';\nconst closeButtonClasses =\n 'p-1 rounded-md hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500';\n\nconst dropdownClasses =\n 'absolute top-full mt-1 bg-white rounded-lg shadow-lg border border-gray-200 p-4 w-[380px] z-[9999]';\n\nconst parseRelativeDate = (dateString: string | Date | null): Date | null => {\n if (!dateString) {\n return null;\n }\n\n if (dateString instanceof Date) {\n return dateString;\n }\n\n const result = sherlock.parse(dateString as string);\n\n if (result.startDate) {\n return result.startDate;\n }\n\n return null;\n};\n\nconst getDefaultDates = () => {\n const now = new Date();\n const oneYearAgo = new Date(now);\n oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);\n const oneYearFromNow = new Date(now);\n oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1);\n\n return {\n defaultStartDate: new Date(\n oneYearAgo.getFullYear(),\n oneYearAgo.getMonth(),\n oneYearAgo.getDate(),\n 0,\n 0,\n 0,\n ),\n defaultEndDate: new Date(\n oneYearFromNow.getFullYear(),\n oneYearFromNow.getMonth(),\n oneYearFromNow.getDate(),\n 23,\n 59,\n 59,\n ),\n };\n};\n\nconst DateInput = ({\n label,\n value,\n onClick,\n disabled,\n placeholder,\n isOpen,\n showTime = false,\n onChange,\n minDate,\n maxDate,\n}: {\n label: string;\n value: Date | null;\n onClick: () => void;\n disabled?: boolean;\n placeholder?: string;\n isOpen?: boolean;\n showTime?: boolean;\n onChange?: (date: Date | null) => void;\n minDate?: Date | null;\n maxDate?: Date | null;\n}) => {\n const [inputValue, setInputValue] = useState('');\n const [isEditing, setIsEditing] = useState(false);\n const [validationError, setValidationError] = useState<string>('');\n\n const formatDate = (date: Date | null) => {\n const timezone = getTimezone();\n\n return formatDateWithTimezone(date, timezone, showTime);\n };\n\n useEffect(() => {\n if (!isEditing) {\n setInputValue(formatDate(value));\n }\n }, [value, showTime, isEditing]);\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!disabled) {\n onClick();\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n };\n\n const handleInputFocus = () => {\n setIsEditing(true);\n setValidationError('');\n };\n\n const parseInputDate = (inputText: string): Date | null => {\n if (!inputText.trim()) {\n return null;\n }\n\n const commonFormats = [\n // DD/MM/YYYY formats\n /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // DD-MM-YYYY formats\n /^(\\d{1,2})-(\\d{1,2})-(\\d{4})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // YYYY-MM-DD formats\n /^(\\d{4})-(\\d{1,2})-(\\d{1,2})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // YYYY/MM/DD formats\n /^(\\d{4})\\/(\\d{1,2})\\/(\\d{1,2})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n ];\n\n for (const format of commonFormats) {\n const match = inputText.match(format);\n\n if (match) {\n let day: string; let month: string; let year: string; let hours = '0'; let minutes = '0';\n \n if (format.source.startsWith('^(\\\\d{4})')) {\n [, year, month, day, hours = '0', minutes = '0'] = match;\n } else {\n [, day, month, year, hours = '0', minutes = '0'] = match;\n }\n\n const yearNum = parseInt(year, 10);\n const monthNum = parseInt(month, 10);\n const dayNum = parseInt(day, 10);\n const hoursNum = parseInt(hours, 10);\n const minutesNum = parseInt(minutes, 10);\n\n const parsedDate = new Date(\n yearNum,\n monthNum - 1,\n dayNum,\n hoursNum,\n minutesNum\n );\n\n if (\n !isNaN(parsedDate.getTime()) &&\n parsedDate.getFullYear() === yearNum &&\n parsedDate.getMonth() === monthNum - 1 &&\n parsedDate.getDate() === dayNum\n ) {\n return parsedDate;\n }\n }\n }\n\n try {\n const result = sherlock.parse(inputText);\n\n if (result.startDate) {\n return result.startDate;\n }\n } catch (error) {\n\n return null;\n }\n\n return null;\n };\n\n const validateDateRange = (date: Date | null): string => {\n if (!date) {\n return '';\n }\n\n if (minDate && date < minDate) {\n return `Minimum allowed date is ${formatDateWithTimezone(minDate, getTimezone(), false)}`;\n }\n\n if (maxDate && date > maxDate) {\n return `Maximum allowed date is ${formatDateWithTimezone(maxDate, getTimezone(), false)}`;\n }\n\n return '';\n };\n\n const handleInputBlur = () => {\n setIsEditing(false);\n \n if (onChange) {\n const parsedDate = parseInputDate(inputValue);\n \n if (parsedDate) {\n const errorMessage = validateDateRange(parsedDate);\n setValidationError(errorMessage);\n \n if (!errorMessage) {\n onChange(parsedDate);\n }\n } else if (inputValue.trim() === '') {\n setValidationError('');\n onChange(null);\n } else {\n setValidationError('');\n setInputValue(formatDate(value));\n }\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleInputBlur();\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setInputValue(formatDate(value));\n setValidationError('');\n setIsEditing(false);\n }\n };\n\n return (\n <div className=\"relative\">\n <input\n value={inputValue}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleKeyDown}\n onClick={handleClick}\n placeholder={placeholder || label}\n disabled={disabled}\n className={`${inputClasses} ${disabled ? disabledClasses : enabledClasses} ${\n isOpen ? 'ring-2 ring-blue-500' : ''\n }`}\n title={showTime ? \n \"Enter date and time\" : \n \"Enter date\"\n }\n />\n <div className=\"absolute right-3 top-7 transform -translate-y-1/2 flex items-center gap-1\">\n <Calendar size={16} className=\"text-gray-400 cursor-pointer\" onClick={handleClick} />\n </div>\n {validationError && (\n <div className=\"absolute top-full left-0 text-xs text-red-600 px-2 mb-2 z-10\">\n {validationError}\n </div>\n )}\n </div>\n );\n};\n\nexport function DatePicker({\n className = '',\n disabled = false,\n enableTime = false,\n isClearable = true,\n maxDate,\n minDate,\n onChange,\n value = null,\n open,\n onClickOutside,\n showTimeSelect = false,\n timeFormat = 'HH:mm',\n timeIntervals = 15,\n inline = true,\n}: DatePickerProps) {\n const dateFormat = showTimeSelect || enableTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n\n const date = typeof value === 'string' && value ? new Date(value) : value;\n\n const shouldShowTime = showTimeSelect || enableTime;\n\n const datePickerProps = {\n selected: date,\n minDate,\n maxDate,\n disabled,\n isClearable,\n onChange,\n dateFormat,\n showTimeSelect: shouldShowTime,\n timeFormat,\n timeIntervals,\n timeCaption: 'Time',\n portalId: 'date-picker-portal',\n popperClassName: 'date-picker-popper !z-[9999]',\n popperPlacement: 'bottom-end',\n inline,\n open,\n onClickOutside,\n className: classnames(className, inputClasses),\n } as any;\n\n return (\n <div className={`relative inline-block ${className}`}>\n {\n <div className=\"absolute z-[9999] mt-1 border rounded-md shadow-lg bg-white\">\n <ReactDatePicker {...datePickerProps} />\n </div>\n }\n </div>\n );\n}\n\nexport function renderDateFilter({ gjsModel, performInteraction }: DateFilterProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const startDatePickerRef = useRef<HTMLDivElement>(null);\n const endDatePickerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [isApplying, setIsApplying] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isStartDateOpen, setIsStartDateOpen] = useState(false);\n const [isEndDateOpen, setIsEndDateOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ left: 'auto', right: '0' });\n\n const {\n className = '',\n affectedComponents = [],\n startLabel = 'Start date',\n endLabel = 'End date',\n isClearable = true,\n dateFormat = 'yyyy-MM-dd',\n minDate,\n maxDate,\n showTimeSelect = true,\n timeFormat = 'HH:mm',\n timeIntervals = 15,\n value,\n default: defaultValue,\n } = componentData;\n\n const { defaultStartDate, defaultEndDate } = getDefaultDates();\n\n const globalMin = minDate ? parseRelativeDate(minDate) : undefined;\n const globalMax = maxDate ? parseRelativeDate(maxDate) : undefined;\n\n const getInitialStartDate = (): Date | null => {\n if (value?.start) {\n return new Date(value.start);\n }\n\n if (defaultValue?.start) {\n return parseRelativeDate(defaultValue.start);\n }\n\n return defaultStartDate;\n };\n\n const getInitialEndDate = (): Date | null => {\n if (value?.end) {\n return new Date(value.end);\n }\n\n if (defaultValue?.end) {\n return parseRelativeDate(defaultValue.end);\n }\n\n return defaultEndDate;\n };\n\n const [startDate, setStartDate] = useState<Date | null>(getInitialStartDate());\n const [endDate, setEndDate] = useState<Date | null>(getInitialEndDate());\n const [tempStartDate, setTempStartDate] = useState<Date | null>(null);\n const [tempEndDate, setTempEndDate] = useState<Date | null>(null);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n\n const getMaxStartDate = () => {\n return globalMax || tempEndDate;\n };\n\n const getMinEndDate = () => {\n return globalMin || tempStartDate;\n };\n\n const closeAllPickers = () => {\n setIsStartDateOpen(false);\n setIsEndDateOpen(false);\n };\n\n const closeDropdown = () => {\n setIsDropdownOpen(false);\n closeAllPickers();\n };\n\n const toggleDropdown = () => {\n if (!isDropdownOpen) {\n closeAllPickers();\n }\n\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const handleStartDateClick = () => {\n if (!isApplying && !isBusy) {\n setIsEndDateOpen(false);\n setIsStartDateOpen(!isStartDateOpen);\n }\n };\n\n const handleEndDateClick = () => {\n if (!isApplying && !isBusy) {\n setIsStartDateOpen(false);\n setIsEndDateOpen(!isEndDateOpen);\n }\n };\n\n useEffect(() => {\n const doc = wrapperRef.current?.ownerDocument ?? document;\n\n function handleOutsideClick(e: PointerEvent) {\n if (isDropdownOpen && wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n closeDropdown();\n }\n }\n\n function handleEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n closeDropdown();\n }\n }\n\n doc.addEventListener('pointerdown', handleOutsideClick);\n doc.addEventListener('keydown', handleEscape);\n\n return () => {\n doc.removeEventListener('pointerdown', handleOutsideClick);\n doc.removeEventListener('keydown', handleEscape);\n };\n }, [isDropdownOpen]);\n\n // Add click event listeners to detect time selector clicks\n useEffect(() => {\n const handleTimeClick = (event: MouseEvent, isStartPicker: boolean) => {\n const target = event.target as HTMLElement;\n \n // Check if the click was on time-related elements\n const isTimeClick = target.closest('.react-datepicker__time-container') ||\n target.closest('.react-datepicker__time-list') ||\n target.closest('.react-datepicker__time-list-item') ||\n target.classList.contains('react-datepicker__time-list-item');\n\n if (isTimeClick && showTimeSelect) {\n // Close the picker after a small delay to allow the time selection to complete\n setTimeout(() => {\n if (isStartPicker) {\n setIsStartDateOpen(false);\n } else {\n setIsEndDateOpen(false);\n }\n }, 100);\n }\n };\n\n const startPickerElement = startDatePickerRef.current;\n const endPickerElement = endDatePickerRef.current;\n\n if (isStartDateOpen && startPickerElement) {\n const handleStartTimeClick = (e: MouseEvent) => handleTimeClick(e, true);\n startPickerElement.addEventListener('click', handleStartTimeClick);\n \n return () => {\n startPickerElement.removeEventListener('click', handleStartTimeClick);\n };\n }\n\n if (isEndDateOpen && endPickerElement) {\n const handleEndTimeClick = (e: MouseEvent) => handleTimeClick(e, false);\n endPickerElement.addEventListener('click', handleEndTimeClick);\n \n return () => {\n endPickerElement.removeEventListener('click', handleEndTimeClick);\n };\n }\n\n // Always return undefined if no cleanup is needed\n return undefined;\n }, [isStartDateOpen, isEndDateOpen, showTimeSelect]);\n\n const handleStartDateChange = (date: Date | null) => {\n const adjustedDate = convertToTargetTimezone(date);\n setTempStartDate(adjustedDate);\n\n if (!showTimeSelect) {\n setIsStartDateOpen(false);\n }\n };\n\n const handleEndDateChange = (date: Date | null) => {\n const adjustedDate = convertToTargetTimezone(date);\n setTempEndDate(adjustedDate);\n\n if (!showTimeSelect) {\n setIsEndDateOpen(false);\n }\n };\n\n const handleApply = async () => {\n setIsApplying(true);\n\n try {\n const dateValues = {\n start: tempStartDate?.toISOString() || null,\n end: tempEndDate?.toISOString() || null,\n };\n\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: dateValues,\n });\n\n const id = gjsModel.get('id');\n\n setStartDate(tempStartDate);\n setEndDate(tempEndDate);\n\n await performInteraction({\n interactionType: 'dateFilter',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n\n closeDropdown();\n } finally {\n setIsApplying(false);\n }\n };\n\n useEffect(() => {\n if (isDropdownOpen) {\n setTempStartDate(startDate);\n setTempEndDate(endDate);\n } else {\n closeAllPickers();\n }\n }, [isDropdownOpen, startDate, endDate]);\n\n useEffect(() => {\n if (!isDropdownOpen || !buttonRef.current) {\n return;\n }\n\n const buttonRect = buttonRef.current.getBoundingClientRect();\n const dropdownWidth = 380;\n const iframeViewportWidth = document.documentElement.clientWidth;\n const iframeBodyWidth =\n document.getElementById('dashboard-root')?.clientWidth || iframeViewportWidth;\n\n const spaceToRight = iframeBodyWidth - buttonRect.right;\n const spaceToLeft = buttonRect.left;\n\n if (spaceToLeft >= dropdownWidth) {\n setDropdownPosition({ left: 'auto', right: '0px' });\n } else if (spaceToRight < dropdownWidth && spaceToLeft < dropdownWidth) {\n const shiftLeft = dropdownWidth - spaceToRight + 16;\n setDropdownPosition({ left: `-${shiftLeft}px`, right: 'auto' });\n } else if (spaceToRight >= dropdownWidth) {\n setDropdownPosition({ left: '0px', right: 'auto' });\n }\n }, [isDropdownOpen]);\n\n useEffect(() => {\n const updateComponentData = () => {\n const newData = { ...gjsModel.get('componentProps') };\n setComponentData(newData);\n\n if (newData.value?.start && newData.value.start !== componentData.value?.start) {\n setStartDate(new Date(newData.value.start));\n }\n\n if (newData.value?.end && newData.value.end !== componentData.value?.end) {\n setEndDate(new Date(newData.value.end));\n }\n };\n\n const updateAttributes = () => {\n setAttributes({ ...gjsModel.get('attributes') });\n };\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel, componentData.value]);\n\n return (\n <div ref={wrapperRef} className={`relative ${className}`}>\n <button\n ref={buttonRef}\n onClick={toggleDropdown}\n disabled={isBusy}\n className={`${buttonClasses} ${isBusy ? disabledClasses : enabledClasses}`}\n title=\"Open Date & Time Filter\"\n >\n <div className=\"flex items-center gap-1\">\n <Calendar size={16} className=\"text-gray-600\" />\n </div>\n {isBusy && <Loader2Icon size={14} className=\"animate-spin text-blue-500\" />}\n </button>\n\n {isDropdownOpen && (\n <div ref={dropdownRef} className={dropdownClasses} style={dropdownPosition}>\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-gray-900\">Select Date & Time Range</h3>\n <button onClick={closeDropdown} className={closeButtonClasses}>\n <X size={14} className=\"text-gray-400\" />\n </button>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700\">{startLabel}</label>\n <div className=\"relative\">\n <DateInput\n label={startLabel}\n value={tempStartDate}\n onClick={handleStartDateClick}\n disabled={isApplying}\n placeholder=\"Select start date\"\n isOpen={isStartDateOpen}\n showTime={showTimeSelect}\n onChange={handleStartDateChange}\n minDate={globalMin ? (convertFromStoredDate(globalMin) ?? undefined) : undefined}\n maxDate={getMaxStartDate() ? (convertFromStoredDate(getMaxStartDate()) ?? undefined) : undefined}\n />\n </div>\n\n {isStartDateOpen && (\n <div ref={startDatePickerRef} className=\"mt-2 p-2\">\n <ReactDatePicker\n selected={convertFromStoredDate(tempStartDate)}\n onChange={handleStartDateChange}\n minDate={globalMin ? (convertFromStoredDate(globalMin) ?? undefined) : undefined}\n maxDate={getMaxStartDate() ? (convertFromStoredDate(getMaxStartDate()) ?? undefined) : undefined}\n showTimeSelect={showTimeSelect}\n timeFormat={timeFormat}\n timeIntervals={timeIntervals}\n timeCaption=\"Time\"\n dateFormat={showTimeSelect ? 'dd/MM/yyyy HH:mm' : dateFormat}\n inline={true}\n isClearable={isClearable}\n disabled={isApplying}\n />\n </div>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700\">{endLabel}</label>\n <div className=\"relative\">\n <DateInput\n label={endLabel}\n value={tempEndDate}\n onClick={handleEndDateClick}\n disabled={isApplying}\n placeholder=\"Select end date\"\n isOpen={isEndDateOpen}\n showTime={showTimeSelect}\n onChange={handleEndDateChange}\n minDate={getMinEndDate() ? (convertFromStoredDate(getMinEndDate()) ?? undefined) : undefined}\n maxDate={globalMax ? (convertFromStoredDate(globalMax) ?? undefined) : undefined}\n />\n </div>\n\n {isEndDateOpen && (\n <div ref={endDatePickerRef} className=\"mt-2 p-2\">\n <ReactDatePicker\n selected={convertFromStoredDate(tempEndDate)}\n onChange={handleEndDateChange}\n minDate={getMinEndDate() ? (convertFromStoredDate(getMinEndDate()) ?? undefined) : undefined}\n maxDate={globalMax ? (convertFromStoredDate(globalMax) ?? undefined) : undefined}\n showTimeSelect={showTimeSelect}\n timeFormat={timeFormat}\n timeIntervals={timeIntervals}\n timeCaption=\"Time\"\n dateFormat={showTimeSelect ? 'dd/MM/yyyy HH:mm' : dateFormat}\n inline={true}\n isClearable={isClearable}\n disabled={isApplying}\n />\n </div>\n )}\n </div>\n\n <div className=\"flex gap-2 pt-2\">\n <Button\n variant=\"outline\"\n onClick={closeDropdown}\n disabled={isApplying}\n className=\"flex-1 h-8 text-xs\"\n size=\"sm\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleApply}\n disabled={isApplying}\n className=\"flex-1 h-8 text-xs\"\n size=\"sm\"\n >\n {isApplying ? (\n <>\n <Loader2Icon size={12} className=\"animate-spin mr-1\" />\n </>\n ) : (\n 'Apply'\n )}\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"date-filter.js","names":["useEffect","useRef","useState","Calendar","Loader2Icon","X","ReactDatePicker","zonedTimeToUtc","utcToZonedTime","classnames","getAffectedComponentsWithLoader","Button","sherlock","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","TIMEZONE","getTimezone","window","localStorage","getItem","formatDateWithTimezone","date","timezone","showTime","formatOptions","_extends","day","month","year","hour","minute","hour12","timeZone","toLocaleString","convertToTargetTimezone","targetTimezone","convertFromStoredDate","inputClasses","disabledClasses","enabledClasses","buttonClasses","closeButtonClasses","dropdownClasses","parseRelativeDate","dateString","Date","result","parse","startDate","getDefaultDates","now","oneYearAgo","setFullYear","getFullYear","oneYearFromNow","defaultStartDate","getMonth","getDate","defaultEndDate","DateInput","_ref","label","value","onClick","disabled","placeholder","isOpen","_ref$showTime","onChange","minDate","maxDate","_useState","inputValue","setInputValue","_useState2","isEditing","setIsEditing","_useState3","validationError","setValidationError","formatDate","handleClick","e","preventDefault","stopPropagation","handleInputChange","target","handleInputFocus","parseInputDate","inputText","trim","commonFormats","_i","_commonFormats","length","format","match","hours","minutes","source","startsWith","_match$","_match$2","_match$3","_match$4","yearNum","parseInt","monthNum","dayNum","hoursNum","minutesNum","parsedDate","isNaN","getTime","error","validateDateRange","handleInputBlur","errorMessage","handleKeyDown","key","className","children","onFocus","onBlur","onKeyDown","title","size","DatePicker","_ref2","_ref2$className","_ref2$disabled","_ref2$enableTime","enableTime","_ref2$isClearable","isClearable","_ref2$value","open","onClickOutside","_ref2$showTimeSelect","showTimeSelect","_ref2$timeFormat","timeFormat","_ref2$timeIntervals","timeIntervals","_ref2$inline","inline","dateFormat","shouldShowTime","datePickerProps","selected","timeCaption","portalId","popperClassName","popperPlacement","renderDateFilter","_ref3","_convertFromStoredDat","_convertFromStoredDat2","_convertFromStoredDat3","_convertFromStoredDat4","_convertFromStoredDat5","_convertFromStoredDat6","_convertFromStoredDat7","_convertFromStoredDat8","gjsModel","performInteraction","wrapperRef","buttonRef","startDatePickerRef","endDatePickerRef","dropdownRef","_useState4","get","componentData","setComponentData","_useState5","attributes","setAttributes","_useState6","isApplying","setIsApplying","_useState7","isDropdownOpen","setIsDropdownOpen","_useState8","isStartDateOpen","setIsStartDateOpen","_useState9","isEndDateOpen","setIsEndDateOpen","_useState10","left","right","dropdownPosition","setDropdownPosition","_componentData$classN","_componentData$affect","affectedComponents","_componentData$startL","startLabel","_componentData$endLab","endLabel","_componentData$isClea","_componentData$dateFo","_componentData$showTi","_componentData$timeFo","_componentData$timeIn","defaultValue","_getDefaultDates","globalMin","undefined","globalMax","getInitialStartDate","start","getInitialEndDate","end","_useState11","setStartDate","_useState12","endDate","setEndDate","_useState13","tempStartDate","setTempStartDate","_useState14","tempEndDate","setTempEndDate","isBusy","interactionApiInProgress","getMaxStartDate","getMinEndDate","closeAllPickers","closeDropdown","toggleDropdown","handleStartDateClick","handleEndDateClick","_wrapperRef$current$o","_wrapperRef$current","doc","current","ownerDocument","document","handleOutsideClick","contains","handleEscape","addEventListener","removeEventListener","handleTimeClick","event","isStartPicker","isTimeClick","closest","classList","setTimeout","startPickerElement","endPickerElement","handleStartTimeClick","handleEndTimeClick","handleStartDateChange","adjustedDate","handleEndDateChange","handleApply","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dateValues","id","wrap","_callee$","_context","prev","next","toISOString","set","interactionType","concat","finish","stop","apply","arguments","_document$getElementB","buttonRect","getBoundingClientRect","dropdownWidth","iframeViewportWidth","documentElement","clientWidth","iframeBodyWidth","getElementById","spaceToRight","spaceToLeft","shiftLeft","updateComponentData","_newData$value","_componentData$value","_newData$value2","_componentData$value2","newData","updateAttributes","on","off","ref","style","variant"],"sources":["../../../../src/shadcn/components/ui/date-filter.tsx"],"sourcesContent":["/* eslint-disable func-style */\n/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react';\nimport { Calendar, Loader2Icon, X } from 'lucide-react';\nimport ReactDatePicker from 'react-datepicker';\nimport { zonedTimeToUtc, utcToZonedTime } from 'date-fns-tz';\nimport classnames from 'classnames';\n\nimport { getAffectedComponentsWithLoader } from '../../../helpers';\nimport { Button } from './button';\nimport sherlock from 'sherlockjs';\n\nexport type DatePickerProps = {\n className?: string;\n dateFormat?: string;\n disabled?: boolean;\n enableTime?: boolean;\n isInputEditable?: boolean;\n isClearable?: boolean;\n label?: string;\n maxDate?: Date | undefined;\n minDate?: Date | undefined;\n onChange(date: Date | null): void;\n value: Date | null;\n open?: boolean;\n onClickOutside?: () => void;\n showTimeSelect?: boolean;\n timeFormat?: string;\n timeIntervals?: number;\n inline?: boolean;\n};\n\ntype DateFilterProps = {\n gjsModel: any;\n performInteraction: (payload: Record<string, any>) => Promise<void>;\n};\n\nconst TIMEZONE = 'TIMEZONE';\n\nfunction getTimezone() {\n return window.localStorage.getItem(TIMEZONE) || 'UTC';\n}\n\nconst formatDateWithTimezone = (date: Date | null, timezone: string, showTime = false): string => {\n if (!date) {\n return '';\n }\n\n const formatOptions: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n ...(showTime && {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }),\n timeZone: timezone,\n };\n\n return date.toLocaleString('en-GB', formatOptions);\n};\n\nconst convertToTargetTimezone = (date: Date | null): Date | null => {\n if (!date) {return null;}\n \n const targetTimezone = getTimezone();\n\n return zonedTimeToUtc(date, targetTimezone);\n};\n\nconst convertFromStoredDate = (date: Date | null): Date | null => {\n if (!date) {return null;}\n \n const targetTimezone = getTimezone();\n \n return utcToZonedTime(date, targetTimezone);\n};\n\nconst inputClasses =\n 'w-full px-3 py-2 border border-gray-300 rounded-md mb-1 focus:outline-none focus:ring-2 focus:ring-blue-500';\nconst disabledClasses = 'opacity-60 cursor-not-allowed bg-gray-50';\nconst enabledClasses = 'cursor-pointer';\n\nconst buttonClasses =\n 'flex items-center gap-2 px-3 py-2 border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors';\nconst closeButtonClasses =\n 'p-1 rounded-md hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500';\n\nconst dropdownClasses =\n 'absolute top-full mt-1 bg-white rounded-lg shadow-lg border border-gray-200 p-4 w-[380px] z-[9999]';\n\nconst parseRelativeDate = (dateString: string | Date | null): Date | null => {\n if (!dateString) {\n return null;\n }\n\n if (dateString instanceof Date) {\n return dateString;\n }\n\n const result = sherlock.parse(dateString as string);\n\n if (result.startDate) {\n return result.startDate;\n }\n\n return null;\n};\n\nconst getDefaultDates = () => {\n const now = new Date();\n const oneYearAgo = new Date(now);\n oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);\n const oneYearFromNow = new Date(now);\n oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1);\n\n return {\n defaultStartDate: new Date(\n oneYearAgo.getFullYear(),\n oneYearAgo.getMonth(),\n oneYearAgo.getDate(),\n 0,\n 0,\n 0,\n ),\n defaultEndDate: new Date(\n oneYearFromNow.getFullYear(),\n oneYearFromNow.getMonth(),\n oneYearFromNow.getDate(),\n 23,\n 59,\n 59,\n ),\n };\n};\n\nconst DateInput = ({\n label,\n value,\n onClick,\n disabled,\n placeholder,\n isOpen,\n showTime = false,\n onChange,\n minDate,\n maxDate,\n}: {\n label: string;\n value: Date | null;\n onClick: () => void;\n disabled?: boolean;\n placeholder?: string;\n isOpen?: boolean;\n showTime?: boolean;\n onChange?: (date: Date | null) => void;\n minDate?: Date | null;\n maxDate?: Date | null;\n}) => {\n const [inputValue, setInputValue] = useState('');\n const [isEditing, setIsEditing] = useState(false);\n const [validationError, setValidationError] = useState<string>('');\n\n const formatDate = (date: Date | null) => {\n const timezone = getTimezone();\n\n return formatDateWithTimezone(date, timezone, showTime);\n };\n\n useEffect(() => {\n if (!isEditing) {\n setInputValue(formatDate(value));\n }\n }, [value, showTime, isEditing]);\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!disabled) {\n onClick();\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n };\n\n const handleInputFocus = () => {\n setIsEditing(true);\n setValidationError('');\n };\n\n const parseInputDate = (inputText: string): Date | null => {\n if (!inputText.trim()) {\n return null;\n }\n\n const commonFormats = [\n // DD/MM/YYYY formats\n /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // DD-MM-YYYY formats\n /^(\\d{1,2})-(\\d{1,2})-(\\d{4})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // YYYY-MM-DD formats\n /^(\\d{4})-(\\d{1,2})-(\\d{1,2})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n // YYYY/MM/DD formats\n /^(\\d{4})\\/(\\d{1,2})\\/(\\d{1,2})(?:\\s*,?\\s*(\\d{1,2}):(\\d{2}))?$/,\n ];\n\n for (const format of commonFormats) {\n const match = inputText.match(format);\n\n if (match) {\n let day: string; let month: string; let year: string; let hours = '0'; let minutes = '0';\n \n if (format.source.startsWith('^(\\\\d{4})')) {\n [, year, month, day, hours = '0', minutes = '0'] = match;\n } else {\n [, day, month, year, hours = '0', minutes = '0'] = match;\n }\n\n const yearNum = parseInt(year, 10);\n const monthNum = parseInt(month, 10);\n const dayNum = parseInt(day, 10);\n const hoursNum = parseInt(hours, 10);\n const minutesNum = parseInt(minutes, 10);\n\n const parsedDate = new Date(\n yearNum,\n monthNum - 1,\n dayNum,\n hoursNum,\n minutesNum\n );\n\n if (\n !isNaN(parsedDate.getTime()) &&\n parsedDate.getFullYear() === yearNum &&\n parsedDate.getMonth() === monthNum - 1 &&\n parsedDate.getDate() === dayNum\n ) {\n return parsedDate;\n }\n }\n }\n\n try {\n const result = sherlock.parse(inputText);\n\n if (result.startDate) {\n return result.startDate;\n }\n } catch (error) {\n\n return null;\n }\n\n return null;\n };\n\n const validateDateRange = (date: Date | null): string => {\n if (!date) {\n return '';\n }\n\n if (minDate && date < minDate) {\n return `Minimum allowed date is ${formatDateWithTimezone(minDate, getTimezone(), false)}`;\n }\n\n if (maxDate && date > maxDate) {\n return `Maximum allowed date is ${formatDateWithTimezone(maxDate, getTimezone(), false)}`;\n }\n\n return '';\n };\n\n const handleInputBlur = () => {\n setIsEditing(false);\n \n if (onChange) {\n const parsedDate = parseInputDate(inputValue);\n \n if (parsedDate) {\n const errorMessage = validateDateRange(parsedDate);\n setValidationError(errorMessage);\n \n if (!errorMessage) {\n onChange(parsedDate);\n }\n } else if (inputValue.trim() === '') {\n setValidationError('');\n onChange(null);\n } else {\n setValidationError('');\n setInputValue(formatDate(value));\n }\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleInputBlur();\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setInputValue(formatDate(value));\n setValidationError('');\n setIsEditing(false);\n }\n };\n\n return (\n <div className=\"relative\">\n <input\n value={inputValue}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n onKeyDown={handleKeyDown}\n onClick={handleClick}\n placeholder={placeholder || label}\n disabled={disabled}\n className={`${inputClasses} ${disabled ? disabledClasses : enabledClasses} ${\n isOpen ? 'ring-2 ring-blue-500' : ''\n }`}\n title={showTime ? \n \"Enter date and time\" : \n \"Enter date\"\n }\n />\n <div className=\"absolute right-3 top-7 transform -translate-y-1/2 flex items-center gap-1\">\n <Calendar size={16} className=\"text-gray-400 cursor-pointer\" onClick={handleClick} />\n </div>\n {validationError && (\n <div className=\"absolute top-full left-0 text-xs text-red-600 px-2 mb-2 z-10\">\n {validationError}\n </div>\n )}\n </div>\n );\n};\n\nexport function DatePicker({\n className = '',\n disabled = false,\n enableTime = false,\n isClearable = true,\n maxDate,\n minDate,\n onChange,\n value = null,\n open,\n onClickOutside,\n showTimeSelect = false,\n timeFormat = 'HH:mm',\n timeIntervals = 15,\n inline = true,\n}: DatePickerProps) {\n const dateFormat = showTimeSelect || enableTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n\n const date = typeof value === 'string' && value ? new Date(value) : value;\n\n const shouldShowTime = showTimeSelect || enableTime;\n\n const datePickerProps = {\n selected: date,\n minDate,\n maxDate,\n disabled,\n isClearable,\n onChange,\n dateFormat,\n showTimeSelect: shouldShowTime,\n timeFormat,\n timeIntervals,\n timeCaption: 'Time',\n portalId: 'date-picker-portal',\n popperClassName: 'date-picker-popper !z-[9999]',\n popperPlacement: 'bottom-end',\n inline,\n open,\n onClickOutside,\n className: classnames(className, inputClasses),\n } as any;\n\n return (\n <div className={`relative inline-block ${className}`}>\n {\n <div className=\"absolute z-[9999] mt-1 border rounded-md shadow-lg bg-white\">\n <ReactDatePicker {...datePickerProps} />\n </div>\n }\n </div>\n );\n}\n\nexport function renderDateFilter({ gjsModel, performInteraction }: DateFilterProps) {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const startDatePickerRef = useRef<HTMLDivElement>(null);\n const endDatePickerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const [componentData, setComponentData] = useState({ ...gjsModel.get('componentProps') });\n const [attributes, setAttributes] = useState({ ...gjsModel.get('attributes') });\n const [isApplying, setIsApplying] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [isStartDateOpen, setIsStartDateOpen] = useState(false);\n const [isEndDateOpen, setIsEndDateOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ left: 'auto', right: '0' });\n\n const {\n className = '',\n affectedComponents = [],\n startLabel = 'Start date',\n endLabel = 'End date',\n isClearable = true,\n dateFormat = 'yyyy-MM-dd',\n minDate,\n maxDate,\n showTimeSelect = true,\n timeFormat = 'HH:mm',\n timeIntervals = 15,\n value,\n default: defaultValue,\n } = componentData;\n\n const { defaultStartDate, defaultEndDate } = getDefaultDates();\n\n const globalMin = minDate ? parseRelativeDate(minDate) : undefined;\n const globalMax = maxDate ? parseRelativeDate(maxDate) : undefined;\n\n const getInitialStartDate = (): Date | null => {\n if (value?.start) {\n return new Date(value.start);\n }\n\n if (defaultValue?.start) {\n return parseRelativeDate(defaultValue.start);\n }\n\n return defaultStartDate;\n };\n\n const getInitialEndDate = (): Date | null => {\n if (value?.end) {\n return new Date(value.end);\n }\n\n if (defaultValue?.end) {\n return parseRelativeDate(defaultValue.end);\n }\n\n return defaultEndDate;\n };\n\n const [startDate, setStartDate] = useState<Date | null>(getInitialStartDate());\n const [endDate, setEndDate] = useState<Date | null>(getInitialEndDate());\n const [tempStartDate, setTempStartDate] = useState<Date | null>(null);\n const [tempEndDate, setTempEndDate] = useState<Date | null>(null);\n\n const isBusy = attributes.interactionApiInProgress || isApplying;\n\n const getMaxStartDate = () => {\n return globalMax || tempEndDate;\n };\n\n const getMinEndDate = () => {\n return globalMin || tempStartDate;\n };\n\n const closeAllPickers = () => {\n setIsStartDateOpen(false);\n setIsEndDateOpen(false);\n };\n\n const closeDropdown = () => {\n setIsDropdownOpen(false);\n closeAllPickers();\n };\n\n const toggleDropdown = () => {\n if (!isDropdownOpen) {\n closeAllPickers();\n }\n\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n const handleStartDateClick = () => {\n if (!isApplying && !isBusy) {\n setIsEndDateOpen(false);\n setIsStartDateOpen(!isStartDateOpen);\n }\n };\n\n const handleEndDateClick = () => {\n if (!isApplying && !isBusy) {\n setIsStartDateOpen(false);\n setIsEndDateOpen(!isEndDateOpen);\n }\n };\n\n useEffect(() => {\n const doc = wrapperRef.current?.ownerDocument ?? document;\n\n function handleOutsideClick(e: PointerEvent) {\n if (isDropdownOpen && wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n closeDropdown();\n }\n }\n\n function handleEscape(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n closeDropdown();\n }\n }\n\n doc.addEventListener('pointerdown', handleOutsideClick);\n doc.addEventListener('keydown', handleEscape);\n\n return () => {\n doc.removeEventListener('pointerdown', handleOutsideClick);\n doc.removeEventListener('keydown', handleEscape);\n };\n }, [isDropdownOpen]);\n\n // Add click event listeners to detect time selector clicks\n useEffect(() => {\n const handleTimeClick = (event: MouseEvent, isStartPicker: boolean) => {\n const target = event.target as HTMLElement;\n \n // Check if the click was on time-related elements\n const isTimeClick = target.closest('.react-datepicker__time-container') ||\n target.closest('.react-datepicker__time-list') ||\n target.closest('.react-datepicker__time-list-item') ||\n target.classList.contains('react-datepicker__time-list-item');\n\n if (isTimeClick && showTimeSelect) {\n // Close the picker after a small delay to allow the time selection to complete\n setTimeout(() => {\n if (isStartPicker) {\n setIsStartDateOpen(false);\n } else {\n setIsEndDateOpen(false);\n }\n }, 100);\n }\n };\n\n const startPickerElement = startDatePickerRef.current;\n const endPickerElement = endDatePickerRef.current;\n\n if (isStartDateOpen && startPickerElement) {\n const handleStartTimeClick = (e: MouseEvent) => handleTimeClick(e, true);\n startPickerElement.addEventListener('click', handleStartTimeClick);\n \n return () => {\n startPickerElement.removeEventListener('click', handleStartTimeClick);\n };\n }\n\n if (isEndDateOpen && endPickerElement) {\n const handleEndTimeClick = (e: MouseEvent) => handleTimeClick(e, false);\n endPickerElement.addEventListener('click', handleEndTimeClick);\n \n return () => {\n endPickerElement.removeEventListener('click', handleEndTimeClick);\n };\n }\n\n // Always return undefined if no cleanup is needed\n return undefined;\n }, [isStartDateOpen, isEndDateOpen, showTimeSelect]);\n\n const handleStartDateChange = (date: Date | null) => {\n const adjustedDate = convertToTargetTimezone(date);\n setTempStartDate(adjustedDate);\n\n if (!showTimeSelect) {\n setIsStartDateOpen(false);\n }\n };\n\n const handleEndDateChange = (date: Date | null) => {\n const adjustedDate = convertToTargetTimezone(date);\n setTempEndDate(adjustedDate);\n\n if (!showTimeSelect) {\n setIsEndDateOpen(false);\n }\n };\n\n const handleApply = async () => {\n setIsApplying(true);\n\n try {\n const dateValues = {\n start: tempStartDate?.toISOString() || null,\n end: tempEndDate?.toISOString() || null,\n };\n\n gjsModel.set('componentProps', {\n ...gjsModel.get('componentProps'),\n value: dateValues,\n });\n\n const id = gjsModel.get('id');\n\n setStartDate(tempStartDate);\n setEndDate(tempEndDate);\n\n await performInteraction({\n interactionType: 'dateFilter',\n id,\n affectedComponents: getAffectedComponentsWithLoader([id, ...affectedComponents], true),\n });\n\n closeDropdown();\n } finally {\n setIsApplying(false);\n }\n };\n\n useEffect(() => {\n if (isDropdownOpen) {\n setTempStartDate(startDate);\n setTempEndDate(endDate);\n } else {\n closeAllPickers();\n }\n }, [isDropdownOpen, startDate, endDate]);\n\n useEffect(() => {\n if (!isDropdownOpen || !buttonRef.current) {\n return;\n }\n\n const buttonRect = buttonRef.current.getBoundingClientRect();\n const dropdownWidth = 380;\n const iframeViewportWidth = document.documentElement.clientWidth;\n const iframeBodyWidth =\n document.getElementById('dashboard-root')?.clientWidth || iframeViewportWidth;\n\n const spaceToRight = iframeBodyWidth - buttonRect.right;\n const spaceToLeft = buttonRect.left;\n\n if (spaceToLeft >= dropdownWidth) {\n setDropdownPosition({ left: 'auto', right: '0px' });\n } else if (spaceToRight < dropdownWidth && spaceToLeft < dropdownWidth) {\n const shiftLeft = dropdownWidth - spaceToRight + 16;\n setDropdownPosition({ left: `-${shiftLeft}px`, right: 'auto' });\n } else if (spaceToRight >= dropdownWidth) {\n setDropdownPosition({ left: '0px', right: 'auto' });\n }\n }, [isDropdownOpen]);\n\n useEffect(() => {\n const updateComponentData = () => {\n const newData = { ...gjsModel.get('componentProps') };\n setComponentData(newData);\n\n if (newData.value?.start && newData.value.start !== componentData.value?.start) {\n setStartDate(new Date(newData.value.start));\n }\n\n if (newData.value?.end && newData.value.end !== componentData.value?.end) {\n setEndDate(new Date(newData.value.end));\n }\n };\n\n const updateAttributes = () => {\n setAttributes({ ...gjsModel.get('attributes') });\n };\n\n gjsModel.on('change:componentProps', updateComponentData);\n gjsModel.on('change:attributes', updateAttributes);\n\n return () => {\n gjsModel.off('change:componentProps', updateComponentData);\n gjsModel.off('change:attributes', updateAttributes);\n };\n }, [gjsModel, componentData.value]);\n\n return (\n <div ref={wrapperRef} className={`relative ${className}`}>\n <button\n ref={buttonRef}\n onClick={toggleDropdown}\n disabled={isBusy}\n className={`${buttonClasses} ${isBusy ? disabledClasses : enabledClasses}`}\n title=\"Open Date & Time Filter\"\n >\n <div className=\"flex items-center gap-1\">\n <Calendar size={16} className=\"text-gray-600\" />\n </div>\n {isBusy && <Loader2Icon size={14} className=\"animate-spin text-blue-500\" />}\n </button>\n\n {isDropdownOpen && (\n <div ref={dropdownRef} className={dropdownClasses} style={dropdownPosition}>\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-gray-900\">Select date & time range</h3>\n <button onClick={closeDropdown} className={closeButtonClasses}>\n <X size={14} className=\"text-gray-400\" />\n </button>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700\">{startLabel}</label>\n <div className=\"relative\">\n <DateInput\n label={startLabel}\n value={tempStartDate}\n onClick={handleStartDateClick}\n disabled={isApplying}\n placeholder=\"Select start date\"\n isOpen={isStartDateOpen}\n showTime={showTimeSelect}\n onChange={handleStartDateChange}\n minDate={globalMin ? (convertFromStoredDate(globalMin) ?? undefined) : undefined}\n maxDate={getMaxStartDate() ? (convertFromStoredDate(getMaxStartDate()) ?? undefined) : undefined}\n />\n </div>\n\n {isStartDateOpen && (\n <div ref={startDatePickerRef} className=\"mt-2 p-2\">\n <ReactDatePicker\n selected={convertFromStoredDate(tempStartDate)}\n onChange={handleStartDateChange}\n minDate={globalMin ? (convertFromStoredDate(globalMin) ?? undefined) : undefined}\n maxDate={getMaxStartDate() ? (convertFromStoredDate(getMaxStartDate()) ?? undefined) : undefined}\n showTimeSelect={showTimeSelect}\n timeFormat={timeFormat}\n timeIntervals={timeIntervals}\n timeCaption=\"Time\"\n dateFormat={showTimeSelect ? 'dd/MM/yyyy HH:mm' : dateFormat}\n inline={true}\n isClearable={isClearable}\n disabled={isApplying}\n />\n </div>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"block text-sm font-medium text-gray-700\">{endLabel}</label>\n <div className=\"relative\">\n <DateInput\n label={endLabel}\n value={tempEndDate}\n onClick={handleEndDateClick}\n disabled={isApplying}\n placeholder=\"Select end date\"\n isOpen={isEndDateOpen}\n showTime={showTimeSelect}\n onChange={handleEndDateChange}\n minDate={getMinEndDate() ? (convertFromStoredDate(getMinEndDate()) ?? undefined) : undefined}\n maxDate={globalMax ? (convertFromStoredDate(globalMax) ?? undefined) : undefined}\n />\n </div>\n\n {isEndDateOpen && (\n <div ref={endDatePickerRef} className=\"mt-2 p-2\">\n <ReactDatePicker\n selected={convertFromStoredDate(tempEndDate)}\n onChange={handleEndDateChange}\n minDate={getMinEndDate() ? (convertFromStoredDate(getMinEndDate()) ?? undefined) : undefined}\n maxDate={globalMax ? (convertFromStoredDate(globalMax) ?? undefined) : undefined}\n showTimeSelect={showTimeSelect}\n timeFormat={timeFormat}\n timeIntervals={timeIntervals}\n timeCaption=\"Time\"\n dateFormat={showTimeSelect ? 'dd/MM/yyyy HH:mm' : dateFormat}\n inline={true}\n isClearable={isClearable}\n disabled={isApplying}\n />\n </div>\n )}\n </div>\n\n <div className=\"flex gap-2 pt-2\">\n <Button\n variant=\"outline\"\n onClick={closeDropdown}\n disabled={isApplying}\n className=\"flex-1 h-8 text-xs bg-[#EAECFB] border border-[#2A44D4] text-[#263DBF] hover:bg-[#EAECFB] hover:text-[#263DBF]\"\n size=\"sm\"\n >\n Cancel\n </Button>\n <Button\n onClick={handleApply}\n disabled={isApplying}\n className=\"flex-1 h-8 text-xs bg-[#2A44D4] text-white hover:bg-[#2A44D4] hover:text-white\"\n size=\"sm\"\n >\n {isApplying ? (\n <>\n <Loader2Icon size={12} className=\"animate-spin mr-1\" />\n </>\n ) : (\n 'Apply'\n )}\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ type Size = 'small' | 'medium' | 'large';
2
+ export declare const ErrorContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
3
+ hasError: boolean;
4
+ }, never>;
5
+ export declare const ErrorBanner: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
6
+ size: Size;
7
+ }, never>;
8
+ export declare const ErrorIcon: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
9
+ size: Size;
10
+ }, never>;
11
+ export declare const ErrorContent: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
12
+ export declare const ErrorMessage: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
13
+ size: Size;
14
+ }, never>;
15
+ export declare const ErrorType: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
16
+ size: Size;
17
+ }, never>;
18
+ export declare const ComponentContent: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
19
+ hasError: boolean;
20
+ size: Size;
21
+ }, never>;
22
+ export {};
@@ -0,0 +1,2 @@
1
+ import styled from"styled-components";export var ErrorContainer=styled.div.withConfig({displayName:"error-container__ErrorContainer",componentId:"sc-18iouq5-0"})(["position:relative;width:100%;height:100%;border:",";border-radius:6px;overflow:hidden;animation:",";@keyframes errorShake{0%,100%{transform:translateX(0);}25%{transform:translateX(-2px);}75%{transform:translateX(2px);}}"],function(_ref){var hasError=_ref.hasError;return hasError?"2px solid #ef4444":"none"},function(_ref2){var hasError=_ref2.hasError;return hasError?"errorShake 0.5s ease-in-out":"none"});export var ErrorBanner=styled.div.withConfig({displayName:"error-container__ErrorBanner",componentId:"sc-18iouq5-1"})(["background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);color:white;display:flex;align-items:center;gap:8px;font-weight:500;position:",";top:",";left:",";right:",";z-index:",";transform:",";transform-origin:top left;max-width:",";border-radius:",";box-shadow:",";padding:",";font-size:",";"],function(_ref3){var size=_ref3.size;return size==="small"?"absolute":"relative"},function(_ref4){var size=_ref4.size;return size==="small"?"4px":"auto"},function(_ref5){var size=_ref5.size;return size==="small"?"4px":"auto"},function(_ref6){var size=_ref6.size;return size==="small"?"4px":"auto"},function(_ref7){var size=_ref7.size;return size==="small"?10:"auto"},function(_ref8){var size=_ref8.size;return size==="small"?"scale(0.8)":"none"},function(_ref9){var size=_ref9.size;return size==="small"?"90%":"100%"},function(_ref10){var size=_ref10.size;return size==="small"?"4px":"0"},function(_ref11){var size=_ref11.size;return size==="small"?"0 2px 4px rgba(0, 0, 0, 0.2)":"none"},function(_ref12){var size=_ref12.size;switch(size){case"small":return"4px 8px";case"medium":return"6px 10px";case"large":return"8px 12px";default:return"6px 10px"}},function(_ref13){var size=_ref13.size;switch(size){case"small":return"10px";case"medium":return"11px";case"large":return"12px";default:return"11px"}});export var ErrorIcon=styled.div.withConfig({displayName:"error-container__ErrorIcon",componentId:"sc-18iouq5-2"})(["font-size:",";flex-shrink:0;"],function(_ref14){var size=_ref14.size;switch(size){case"small":return"12px";case"medium":return"13px";case"large":return"14px";default:return"13px"}});export var ErrorContent=styled.div.withConfig({displayName:"error-container__ErrorContent",componentId:"sc-18iouq5-3"})(["flex:1;min-width:0;"]);export var ErrorMessage=styled.div.withConfig({displayName:"error-container__ErrorMessage",componentId:"sc-18iouq5-4"})(["font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:",";"],function(_ref15){var size=_ref15.size;return size==="small"?"0":"1px"});export var ErrorType=styled.div.withConfig({displayName:"error-container__ErrorType",componentId:"sc-18iouq5-5"})(["opacity:0.9;font-size:",";text-transform:uppercase;letter-spacing:",";"],function(_ref16){var size=_ref16.size;switch(size){case"small":return"9px";case"medium":return"10px";case"large":return"11px";default:return"10px"}},function(_ref17){var size=_ref17.size;return size==="small"?"0.2px":"0.3px"});export var ComponentContent=styled.div.withConfig({displayName:"error-container__ComponentContent",componentId:"sc-18iouq5-6"})(["flex:1;background:",";padding:",";padding-top:",";min-height:",";display:flex;flex-direction:column;"],function(_ref18){var hasError=_ref18.hasError;return hasError?"rgba(239, 68, 68, 0.05)":"transparent"},function(_ref19){var hasError=_ref19.hasError,size=_ref19.size;if(!hasError){return"0"}switch(size){case"small":return"4px";case"medium":return"6px";case"large":return"8px";default:return"6px"}},function(_ref20){var hasError=_ref20.hasError,size=_ref20.size;if(!hasError){return"0"}return size==="small"?"20px":"8px"},function(_ref21){var hasError=_ref21.hasError,size=_ref21.size;return hasError&&size==="small"?"60px":"auto"});
2
+ //# sourceMappingURL=error-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-container.js","names":["styled","ErrorContainer","div","withConfig","displayName","componentId","_ref","hasError","_ref2","ErrorBanner","_ref3","size","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","_ref13","ErrorIcon","_ref14","ErrorContent","ErrorMessage","_ref15","ErrorType","_ref16","_ref17","ComponentContent","_ref18","_ref19","_ref20","_ref21"],"sources":["../../../../src/shadcn/components/ui/error-container.tsx"],"sourcesContent":["import styled from 'styled-components';\n\ntype Size = 'small' | 'medium' | 'large';\n\nexport const ErrorContainer = styled.div<{ hasError: boolean }>`\n position: relative;\n width: 100%;\n height: 100%;\n border: ${({ hasError }) => (hasError ? '2px solid #ef4444' : 'none')};\n border-radius: 6px;\n overflow: hidden;\n animation: ${({ hasError }) => (hasError ? 'errorShake 0.5s ease-in-out' : 'none')};\n\n @keyframes errorShake {\n 0%, 100% { transform: translateX(0); }\n 25% { transform: translateX(-2px); }\n 75% { transform: translateX(2px); }\n }\n`;\n\nexport const ErrorBanner = styled.div<{ size: Size }>`\n background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n color: white;\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n position: ${({ size }) => (size === 'small' ? 'absolute' : 'relative')};\n top: ${({ size }) => (size === 'small' ? '4px' : 'auto')};\n left: ${({ size }) => (size === 'small' ? '4px' : 'auto')};\n right: ${({ size }) => (size === 'small' ? '4px' : 'auto')};\n z-index: ${({ size }) => (size === 'small' ? 10 : 'auto')};\n transform: ${({ size }) => (size === 'small' ? 'scale(0.8)' : 'none')};\n transform-origin: top left;\n max-width: ${({ size }) => (size === 'small' ? '90%' : '100%')};\n border-radius: ${({ size }) => (size === 'small' ? '4px' : '0')};\n box-shadow: ${({ size }) =>\n size === 'small' ? '0 2px 4px rgba(0, 0, 0, 0.2)' : 'none'};\n\n padding: ${({ size }) => {\n switch (size) {\n case 'small': return '4px 8px';\n case 'medium': return '6px 10px';\n case 'large': return '8px 12px';\n default: return '6px 10px';\n }\n }};\n\n font-size: ${({ size }) => {\n switch (size) {\n case 'small': return '10px';\n case 'medium': return '11px';\n case 'large': return '12px';\n default: return '11px';\n }\n }};\n`;\n\nexport const ErrorIcon = styled.div<{ size: Size }>`\n font-size: ${({ size }) => {\n switch (size) {\n case 'small': return '12px';\n case 'medium': return '13px';\n case 'large': return '14px';\n default: return '13px';\n }\n }};\n flex-shrink: 0;\n`;\n\nexport const ErrorContent = styled.div`\n flex: 1;\n min-width: 0;\n`;\n\nexport const ErrorMessage = styled.div<{ size: Size }>`\n font-weight: 600;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-bottom: ${({ size }) => (size === 'small' ? '0' : '1px')};\n`;\n\nexport const ErrorType = styled.div<{ size: Size }>`\n opacity: 0.9;\n font-size: ${({ size }) => {\n switch (size) {\n case 'small': return '9px';\n case 'medium': return '10px';\n case 'large': return '11px';\n default: return '10px';\n }\n }};\n text-transform: uppercase;\n letter-spacing: ${({ size }) => (size === 'small' ? '0.2px' : '0.3px')};\n`;\n\nexport const ComponentContent = styled.div<{ hasError: boolean; size: Size }>`\n flex: 1;\n background: ${({ hasError }) =>\n hasError ? 'rgba(239, 68, 68, 0.05)' : 'transparent'};\n\n padding: ${({ hasError, size }) => {\n if (!hasError) {return '0';}\n\n switch (size) {\n case 'small': return '4px';\n case 'medium': return '6px';\n case 'large': return '8px';\n default: return '6px';\n }\n }};\n\n padding-top: ${({ hasError, size }) => {\n if (!hasError) {return '0';}\n\n return size === 'small' ? '20px' : '8px';\n }};\n\n min-height: ${({ hasError, size }) =>\n hasError && size === 'small' ? '60px' : 'auto'};\n\n display: flex;\n flex-direction: column;\n`;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ type IssueInfo = {
3
+ message: string;
4
+ type?: string;
5
+ };
6
+ type ComponentProps = {
7
+ error?: IssueInfo;
8
+ isMissing?: boolean;
9
+ componentType?: string;
10
+ gjsModel?: any;
11
+ onDismissMissing?: (componentId: string) => void;
12
+ [key: string]: unknown;
13
+ };
14
+ type ComponentWrapperProps = {
15
+ children: React.ReactNode;
16
+ componentProps: ComponentProps;
17
+ className?: string;
18
+ };
19
+ export declare function ComponentWrapper({ children, componentProps, className }: ComponentWrapperProps): import("react/jsx-runtime").JSX.Element;
20
+ export {};
@@ -0,0 +1,2 @@
1
+ import _extends from"@babel/runtime/helpers/extends";import React,{useEffect,useState}from"react";import{CircleAlert}from"lucide-react";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";function renderNoDataFallback(){return/*#__PURE__*/_jsxs("div",{className:"w-full py-8 flex flex-col items-center justify-center px-6 text-center",style:{minHeight:"180px"},children:[/*#__PURE__*/_jsx(CircleAlert,{className:"w-12 h-12 text-gray-400 mb-2"}),/*#__PURE__*/_jsx("h3",{className:"text-lg font-medium text-gray-900",children:"No data available"}),/*#__PURE__*/_jsx("p",{className:"mt-2 text-sm text-gray-500 max-w-md",children:"Check your filters or try a different time range."})]})}var COMPONENTS_WITH_CUSTOM_ERROR_HANDLING=new Set(["Card","ActionCard","Chart","Markdown","Table","Tabs"]);export function ComponentWrapper(_ref){var children=_ref.children,componentProps=_ref.componentProps,_ref$className=_ref.className,className=_ref$className===void 0?"":_ref$className;var gjsModel=componentProps.gjsModel,componentType=componentProps.componentType;var _useState=useState(componentProps),currentProps=_useState[0],setCurrentProps=_useState[1];var _useState2=useState((gjsModel==null?void 0:gjsModel.get("attributes"))||{}),currentAttributes=_useState2[0],setCurrentAttributes=_useState2[1];useEffect(function(){if(gjsModel){var handlePropsChange=function handlePropsChange(){var updatedModelProps=gjsModel.get("componentProps");setCurrentProps(_extends({},componentProps,updatedModelProps))};var handleAttributesChange=function handleAttributesChange(){var updatedAttributes=gjsModel.get("attributes");setCurrentAttributes(updatedAttributes)};gjsModel.on("change:componentProps",handlePropsChange);gjsModel.on("change:attributes",handleAttributesChange);return function(){gjsModel.off("change:componentProps",handlePropsChange);gjsModel.off("change:attributes",handleAttributesChange)}}},[gjsModel,componentProps,componentType]);var error=currentAttributes.error||currentProps.error;var isMissing=currentAttributes.isMissing||currentProps.isMissing;var hasCustomErrorHandling=componentType&&COMPONENTS_WITH_CUSTOM_ERROR_HANDLING.has(componentType);var shouldShowWrapperFallback=!hasCustomErrorHandling&&(isMissing||error);if(shouldShowWrapperFallback){return/*#__PURE__*/_jsx("div",{className:className,children:renderNoDataFallback()})}return/*#__PURE__*/_jsx(_Fragment,{children:children})}
2
+ //# sourceMappingURL=error-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-wrapper.js","names":["React","useEffect","useState","CircleAlert","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","renderNoDataFallback","className","style","minHeight","children","COMPONENTS_WITH_CUSTOM_ERROR_HANDLING","Set","ComponentWrapper","_ref","componentProps","_ref$className","gjsModel","componentType","_useState","currentProps","setCurrentProps","_useState2","get","currentAttributes","setCurrentAttributes","handlePropsChange","updatedModelProps","_extends","handleAttributesChange","updatedAttributes","on","off","error","isMissing","hasCustomErrorHandling","has","shouldShowWrapperFallback"],"sources":["../../../../src/shadcn/components/ui/error-wrapper.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { CircleAlert } from 'lucide-react';\n\ntype IssueInfo = {\n message: string;\n type?: string;\n};\n\ntype ComponentProps = {\n error?: IssueInfo;\n isMissing?: boolean;\n componentType?: string;\n gjsModel?: any;\n onDismissMissing?: (componentId: string) => void;\n [key: string]: unknown;\n};\n\ntype ComponentWrapperProps = {\n children: React.ReactNode;\n componentProps: ComponentProps;\n className?: string;\n};\n\nfunction renderNoDataFallback() {\n return (\n <div className=\"w-full py-8 flex flex-col items-center justify-center px-6 text-center\" style={{ minHeight: '180px' }}>\n <CircleAlert className=\"w-12 h-12 text-gray-400 mb-2\" />\n <h3 className=\"text-lg font-medium text-gray-900\">No data available</h3>\n <p className=\"mt-2 text-sm text-gray-500 max-w-md\">\n Check your filters or try a different time range.\n </p>\n </div>\n );\n}\n\nconst COMPONENTS_WITH_CUSTOM_ERROR_HANDLING = new Set([\n 'Card',\n 'ActionCard',\n 'Chart',\n 'Markdown',\n 'Table',\n 'Tabs',\n]);\n\nexport function ComponentWrapper({ children, componentProps, className = '' }: ComponentWrapperProps) {\n const { gjsModel, componentType } = componentProps;\n\n const [currentProps, setCurrentProps] = useState(componentProps);\n const [currentAttributes, setCurrentAttributes] = useState(gjsModel?.get('attributes') || {});\n\n useEffect(() => {\n if (gjsModel) {\n const handlePropsChange = () => {\n const updatedModelProps: any = gjsModel.get('componentProps');\n setCurrentProps({\n ...componentProps,\n ...updatedModelProps\n });\n };\n\n const handleAttributesChange = () => {\n const updatedAttributes: any = gjsModel.get('attributes');\n setCurrentAttributes(updatedAttributes);\n };\n\n gjsModel.on('change:componentProps', handlePropsChange);\n gjsModel.on('change:attributes', handleAttributesChange);\n\n return () => {\n gjsModel.off('change:componentProps', handlePropsChange);\n gjsModel.off('change:attributes', handleAttributesChange);\n };\n }\n }, [gjsModel, componentProps, componentType]);\n\n const error = currentAttributes.error || currentProps.error;\n const isMissing = currentAttributes.isMissing || currentProps.isMissing;\n\n const hasCustomErrorHandling = componentType && COMPONENTS_WITH_CUSTOM_ERROR_HANDLING.has(componentType);\n const shouldShowWrapperFallback = !hasCustomErrorHandling && (isMissing || error);\n\n if (shouldShowWrapperFallback) {\n return (\n <div className={className}>\n {renderNoDataFallback()}\n </div>\n );\n }\n\n return <>{children}</>;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import _asyncToGenerator from"@babel/runtime/helpers/asyncToGenerator";import _extends from"@babel/runtime/helpers/extends";import _regeneratorRuntime from"@babel/runtime/regenerator";/* eslint-disable @typescript-eslint/no-explicit-any */import{useCallback,useEffect,useRef,useState}from"react";import{ChevronDown,ChevronUp,ListFilter as FilterIcon,Loader2Icon}from"lucide-react";import{Button}from"./button";import{Checkbox}from"./checkbox";import{ScrollArea}from"./scroll-area";import{getAffectedComponentsWithLoader}from"../../../helpers";import{renderDateFilter}from"./date-filter";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";function FilterHeader(_ref){var label=_ref.label,count=_ref.count,isDisabled=_ref.isDisabled,isDropdownOpen=_ref.isDropdownOpen,isLoading=_ref.isLoading,toggleOpen=_ref.toggleOpen;var ChevronIcon=isDropdownOpen?ChevronUp:ChevronDown;return/*#__PURE__*/_jsxs(Button,{variant:"outline",size:"sm",disabled:isDisabled,onClick:toggleOpen,className:"px-2",children:[/*#__PURE__*/_jsx(FilterIcon,{size:16}),count>0?label+" ("+count+")":label,isLoading?/*#__PURE__*/_jsx(Loader2Icon,{className:"ml-2 animate-spin",size:16}):/*#__PURE__*/_jsx(ChevronIcon,{size:16,className:"ml-1"})]})}function FilterActions(_ref2){var selected=_ref2.selected,allSelected=_ref2.allSelected,onClear=_ref2.onClear,onSelectAll=_ref2.onSelectAll,isDisabled=_ref2.isDisabled;return/*#__PURE__*/_jsxs("div",{className:"flex items-center mb-3",children:[/*#__PURE__*/_jsx(Checkbox,{checked:allSelected,onCheckedChange:function onCheckedChange(){return allSelected?onClear():onSelectAll()},disabled:isDisabled}),/*#__PURE__*/_jsx("span",{className:"ml-2 text-sm text-gray-900",children:"Select All"}),selected.length>0&&/*#__PURE__*/_jsx("button",{type:"button",className:"ml-auto text-sm text-blue-600 hover:underline",onMouseDown:function onMouseDown(e){e.stopPropagation();e.preventDefault()},onClick:onClear,disabled:isDisabled,children:"Clear All"})]})}function FilterOptionList(_ref3){var options=_ref3.options,selected=_ref3.selected,onToggle=_ref3.onToggle,isDisabled=_ref3.isDisabled;return/*#__PURE__*/_jsx(ScrollArea,{viewportClassName:"max-h-48 overflow-y-auto mb-4 space-y-2",children:options.length>0?options.map(function(opt){return/*#__PURE__*/_jsxs("label",{className:"flex items-center space-x-2 hover:bg-gray-100 rounded p-1 transition hover:cursor-pointer",onClick:function onClick(e){e.preventDefault();e.stopPropagation();if(!isDisabled){onToggle(opt.value)}},children:[/*#__PURE__*/_jsx(Checkbox,{checked:selected.includes(opt.value),onChange:function onChange(){// Prevent checkbox from toggling when clicking label
2
- },disabled:isDisabled}),/*#__PURE__*/_jsx("span",{className:"text-sm text-gray-900",children:opt.label})]},opt.value)}):/*#__PURE__*/_jsx("div",{className:"text-sm text-gray-500",children:"No results found"})})}export function renderFilter(_ref4){var gjsModel=_ref4.gjsModel,performInteraction=_ref4.performInteraction;var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var _componentData$option=componentData.options,options=_componentData$option===void 0?[]:_componentData$option,_componentData$value=componentData.value,value=_componentData$value===void 0?[]:_componentData$value,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$text=componentData.text,label=_componentData$text===void 0?"Filter":_componentData$text,_componentData$filter=componentData.filterType,filterType=_componentData$filter===void 0?"multiselect":_componentData$filter;if(filterType==="date"){return renderDateFilter({gjsModel:gjsModel,performInteraction:performInteraction})}var wrapperRef=useRef(null);var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(false),isDropdownOpen=_useState3[0],setIsDropdownOpen=_useState3[1];var _useState4=useState(""),searchQuery=_useState4[0],setSearchQuery=_useState4[1];var _useState5=useState(false),isApplying=_useState5[0],setIsApplying=_useState5[1];var _useState6=useState({left:"auto",right:"0"}),dropdownPosition=_useState6[0],setDropdownPosition=_useState6[1];var defaultValue=componentData["default"]||[];var _useState7=useState(function(){return Array.isArray(value)&&value.length>0?value:defaultValue}),selectedValues=_useState7[0],setSelectedValues=_useState7[1];var isMultiSelect=filterType==="multiselect";var isBusy=attributes.interactionApiInProgress||isApplying;var allOptionsSelected=selectedValues.length===options.length&&options.length>0;useEffect(function(){var _document$getElementB;if(!isDropdownOpen||!wrapperRef.current){return}var filterRect=wrapperRef.current.getBoundingClientRect();var dropdownWidth=256;var iframeViewportWidth=document.documentElement.clientWidth;var iframeBodyWidth=((_document$getElementB=document.getElementById("dashboard-root"))==null?void 0:_document$getElementB.clientWidth)||iframeViewportWidth;var spaceToRight=iframeBodyWidth-filterRect.right;var spaceToLeft=filterRect.left;if(spaceToLeft>=dropdownWidth){setDropdownPosition({left:"auto",right:"0px"})}else if(spaceToRight<dropdownWidth&&spaceToLeft<dropdownWidth){var shiftLeft=dropdownWidth-spaceToRight+16;setDropdownPosition({left:"-"+shiftLeft+"px",right:"auto"})}else if(spaceToRight>=dropdownWidth){setDropdownPosition({left:"0px",right:"auto"})}},[isDropdownOpen]);useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);useEffect(function(){var _wrapperRef$current$o,_wrapperRef$current;var doc=(_wrapperRef$current$o=(_wrapperRef$current=wrapperRef.current)==null?void 0:_wrapperRef$current.ownerDocument)!=null?_wrapperRef$current$o:document;function handleOutsideClick(e){if(isDropdownOpen&&wrapperRef.current&&!wrapperRef.current.contains(e.target)){setIsDropdownOpen(false)}}function handleEscape(e){if(e.key==="Escape"){setIsDropdownOpen(false)}}doc.addEventListener("pointerdown",handleOutsideClick);doc.addEventListener("keydown",handleEscape);return function(){doc.removeEventListener("pointerdown",handleOutsideClick);doc.removeEventListener("keydown",handleEscape)}},[isDropdownOpen]);var filteredOptions=options.filter(function(opt){return String(opt.label).toLowerCase().includes(searchQuery.toLowerCase())});function updateAndApply(_x){return _updateAndApply.apply(this,arguments)}function _updateAndApply(){_updateAndApply=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(newValues){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(newValues===void 0){newValues=selectedValues}setIsApplying(true);_context.prev=2;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{value:newValues}));id=gjsModel.get("id");_context.next=7;return performInteraction({interactionType:"filter",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 7:_context.prev=7;setIsApplying(false);setIsDropdownOpen(false);return _context.finish(7);case 11:case"end":return _context.stop()}},_callee,null,[[2,,7,11]])}));return _updateAndApply.apply(this,arguments)}var handleOptionToggle=useCallback(function(val){if(isMultiSelect){setSelectedValues(function(prev){return prev.includes(val)?prev.filter(function(v){return v!==val}):[].concat(prev,[val])})}else{if(selectedValues.includes(val)){setSelectedValues([]);updateAndApply([])}else{var singleValue=[val];setSelectedValues(singleValue);updateAndApply(singleValue)}}},[isMultiSelect,selectedValues]);function handleClearAll(){setSelectedValues([])}function handleSelectAll(){setSelectedValues(options.map(function(o){return o.value}))}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"relative inline-block "+className,style:{color:"#2A44D4",backgroundColor:"rgb(255 255 255)"},children:[/*#__PURE__*/_jsx(FilterHeader,{label:label,count:selectedValues.length,isDisabled:isBusy,isDropdownOpen:isDropdownOpen,isLoading:isBusy,toggleOpen:function toggleOpen(){return setIsDropdownOpen(function(prev){return!prev})}}),isDropdownOpen&&/*#__PURE__*/_jsxs("div",{className:"absolute top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50",style:dropdownPosition,children:[/*#__PURE__*/_jsx("input",{type:"text",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},className:"w-full mb-3 px-2 py-1 border rounded focus:outline-none",disabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsx(FilterActions,{selected:selectedValues,allSelected:allOptionsSelected,onClear:handleClearAll,onSelectAll:handleSelectAll,isDisabled:isBusy}),/*#__PURE__*/_jsx(FilterOptionList,{options:filteredOptions,selected:selectedValues,onToggle:handleOptionToggle,isDisabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsxs("div",{className:"flex justify-end space-x-2",children:[/*#__PURE__*/_jsx(Button,{variant:"ghost",size:"sm",onClick:function onClick(){return setIsDropdownOpen(false)},disabled:isApplying,children:"Cancel"}),/*#__PURE__*/_jsxs(Button,{variant:"default",size:"sm",onClick:function onClick(){return updateAndApply(selectedValues)},disabled:isBusy,children:[isApplying&&/*#__PURE__*/_jsx(Loader2Icon,{className:"animate-spin mr-2",size:16}),"Apply"]})]})]})]})}
2
+ },disabled:isDisabled}),/*#__PURE__*/_jsx("span",{className:"text-sm text-gray-900",children:opt.label})]},opt.value)}):/*#__PURE__*/_jsx("div",{className:"text-sm text-gray-500",children:"No results found"})})}export function renderFilter(_ref4){var gjsModel=_ref4.gjsModel,performInteraction=_ref4.performInteraction;var _useState=useState(_extends({},gjsModel.get("componentProps"))),componentData=_useState[0],setComponentData=_useState[1];var _componentData$option=componentData.options,options=_componentData$option===void 0?[]:_componentData$option,_componentData$value=componentData.value,value=_componentData$value===void 0?[]:_componentData$value,_componentData$classN=componentData.className,className=_componentData$classN===void 0?"":_componentData$classN,_componentData$affect=componentData.affectedComponents,affectedComponents=_componentData$affect===void 0?[]:_componentData$affect,_componentData$text=componentData.text,label=_componentData$text===void 0?"Filter":_componentData$text,_componentData$filter=componentData.filterType,filterType=_componentData$filter===void 0?"multiselect":_componentData$filter;var actualOptions=function(){if(options&&typeof options==="object"&&options.name==="__peak_placeholder"){return[]}return Array.isArray(options)?options:[]}();if(filterType==="date"){return renderDateFilter({gjsModel:gjsModel,performInteraction:performInteraction})}var wrapperRef=useRef(null);var _useState2=useState(_extends({},gjsModel.get("attributes"))),attributes=_useState2[0],setAttributes=_useState2[1];var _useState3=useState(false),isDropdownOpen=_useState3[0],setIsDropdownOpen=_useState3[1];var _useState4=useState(""),searchQuery=_useState4[0],setSearchQuery=_useState4[1];var _useState5=useState(false),isApplying=_useState5[0],setIsApplying=_useState5[1];var _useState6=useState({left:"auto",right:"0"}),dropdownPosition=_useState6[0],setDropdownPosition=_useState6[1];var defaultValue=componentData["default"]||[];var _useState7=useState(function(){return Array.isArray(value)&&value.length>0?value:defaultValue}),selectedValues=_useState7[0],setSelectedValues=_useState7[1];var isMultiSelect=filterType==="multiselect";var hasPlaceholderOptions=options&&typeof options==="object"&&options.name==="__peak_placeholder";var hasError=attributes.error||componentData.error;var isLoading=!hasError&&(attributes.interactionApiInProgress||isApplying||attributes.loading||hasPlaceholderOptions);var isBusy=isLoading||hasError;var allOptionsSelected=selectedValues.length===actualOptions.length&&actualOptions.length>0;useEffect(function(){var _document$getElementB;if(!isDropdownOpen||!wrapperRef.current){return}var filterRect=wrapperRef.current.getBoundingClientRect();var dropdownWidth=256;var iframeViewportWidth=document.documentElement.clientWidth;var iframeBodyWidth=((_document$getElementB=document.getElementById("dashboard-root"))==null?void 0:_document$getElementB.clientWidth)||iframeViewportWidth;var spaceToRight=iframeBodyWidth-filterRect.right;var spaceToLeft=filterRect.left;if(spaceToLeft>=dropdownWidth){setDropdownPosition({left:"auto",right:"0px"})}else if(spaceToRight<dropdownWidth&&spaceToLeft<dropdownWidth){var shiftLeft=dropdownWidth-spaceToRight+16;setDropdownPosition({left:"-"+shiftLeft+"px",right:"auto"})}else if(spaceToRight>=dropdownWidth){setDropdownPosition({left:"0px",right:"auto"})}},[isDropdownOpen]);useEffect(function(){function updateComponentData(){setComponentData(_extends({},gjsModel.get("componentProps")))}function updateAttributes(){setAttributes(_extends({},gjsModel.get("attributes")))}gjsModel.on("change:componentProps",updateComponentData);gjsModel.on("change:attributes",updateAttributes);return function(){gjsModel.off("change:componentProps",updateComponentData);gjsModel.off("change:attributes",updateAttributes)}},[gjsModel]);useEffect(function(){var _wrapperRef$current$o,_wrapperRef$current;var doc=(_wrapperRef$current$o=(_wrapperRef$current=wrapperRef.current)==null?void 0:_wrapperRef$current.ownerDocument)!=null?_wrapperRef$current$o:document;function handleOutsideClick(e){if(isDropdownOpen&&wrapperRef.current&&!wrapperRef.current.contains(e.target)){setIsDropdownOpen(false)}}function handleEscape(e){if(e.key==="Escape"){setIsDropdownOpen(false)}}doc.addEventListener("pointerdown",handleOutsideClick);doc.addEventListener("keydown",handleEscape);return function(){doc.removeEventListener("pointerdown",handleOutsideClick);doc.removeEventListener("keydown",handleEscape)}},[isDropdownOpen]);var filteredOptions=actualOptions.filter(function(opt){return String(opt.label).toLowerCase().includes(searchQuery.toLowerCase())});function updateAndApply(_x){return _updateAndApply.apply(this,arguments)}function _updateAndApply(){_updateAndApply=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(newValues){var id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(newValues===void 0){newValues=selectedValues}setIsApplying(true);_context.prev=2;gjsModel.set("componentProps",_extends({},gjsModel.get("componentProps"),{value:newValues}));id=gjsModel.get("id");_context.next=7;return performInteraction({interactionType:"filter",id:id,affectedComponents:getAffectedComponentsWithLoader([id].concat(affectedComponents),true)});case 7:_context.prev=7;setIsApplying(false);setIsDropdownOpen(false);return _context.finish(7);case 11:case"end":return _context.stop()}},_callee,null,[[2,,7,11]])}));return _updateAndApply.apply(this,arguments)}var handleOptionToggle=useCallback(function(val){if(isMultiSelect){setSelectedValues(function(prev){return prev.includes(val)?prev.filter(function(v){return v!==val}):[].concat(prev,[val])})}else{if(selectedValues.includes(val)){setSelectedValues([]);updateAndApply([])}else{var singleValue=[val];setSelectedValues(singleValue);updateAndApply(singleValue)}}},[isMultiSelect,selectedValues]);function handleClearAll(){setSelectedValues([])}function handleSelectAll(){setSelectedValues(actualOptions.map(function(o){return o.value}))}return/*#__PURE__*/_jsxs("div",{ref:wrapperRef,className:"relative inline-block "+className,style:{color:"#2A44D4",backgroundColor:"rgb(255 255 255)"},children:[/*#__PURE__*/_jsx(FilterHeader,{label:label,count:selectedValues.length,isDisabled:isBusy,isDropdownOpen:isDropdownOpen,isLoading:isLoading,toggleOpen:function toggleOpen(){return setIsDropdownOpen(function(prev){return!prev})}}),isDropdownOpen&&/*#__PURE__*/_jsxs("div",{className:"absolute top-full mt-2 w-64 bg-white border rounded-lg shadow-lg ring-1 ring-black ring-opacity-5 p-4 z-50",style:dropdownPosition,children:[/*#__PURE__*/_jsx("input",{type:"text",placeholder:"Search...",value:searchQuery,onChange:function onChange(e){return setSearchQuery(e.target.value)},className:"w-full mb-3 px-2 py-1 border rounded focus:outline-none",disabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsx(FilterActions,{selected:selectedValues,allSelected:allOptionsSelected,onClear:handleClearAll,onSelectAll:handleSelectAll,isDisabled:isBusy}),/*#__PURE__*/_jsx(FilterOptionList,{options:filteredOptions,selected:selectedValues,onToggle:handleOptionToggle,isDisabled:isBusy}),isMultiSelect&&/*#__PURE__*/_jsxs("div",{className:"flex justify-end space-x-2",children:[/*#__PURE__*/_jsx(Button,{variant:"ghost",size:"sm",onClick:function onClick(){return setIsDropdownOpen(false)},disabled:isApplying,className:"bg-[#EAECFB] border border-[#2A44D4] text-[#263DBF] hover:bg-[#EAECFB] hover:text-[#263DBF]",children:"Cancel"}),/*#__PURE__*/_jsxs(Button,{variant:"default",size:"sm",onClick:function onClick(){return updateAndApply(selectedValues)},disabled:isBusy,className:"bg-[#2A44D4] text-white hover:bg-[#2A44D4] hover:text-white",children:[isApplying&&/*#__PURE__*/_jsx(Loader2Icon,{className:"animate-spin mr-2",size:16}),"Apply"]})]})]})]})}
3
3
  //# sourceMappingURL=filter.js.map