@lax-wp/design-system 0.13.74 → 0.13.76
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.
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +24 -24
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/InlineCurrencyField.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/InlineCurrencyField.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/InlineCurrencyField.es.js +2 -2
- package/dist/components/data-display/infinite-table/body/cell/InlineCurrencyField.es.js.map +1 -1
- package/dist/utils/countryFlags.cjs.js +2 -2
- package/dist/utils/countryFlags.cjs.js.map +1 -1
- package/dist/utils/countryFlags.es.js +11 -12
- package/dist/utils/countryFlags.es.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),Re=require("../../../../../hooks/useTheme.cjs.js"),S=require("../../../../../utils/formatters.cjs.js"),Ie=require("../../../../../constants/table.cjs.js"),Oe=require("../../../../../providers/design-system-provider/hooks.cjs.js"),U=require("../../../../tooltip/Tooltip.cjs.js"),Ve=require("../../../typography/Typography.cjs.js"),qe=require("@mui/icons-material"),k=require("../../../../../_virtual/index.cjs.js"),a=require("react"),ze=require("react-router-dom"),Ae=require("../../context.cjs.js"),Fe=require("./InlineEditField.cjs.js"),C=require("../../constants.cjs.js"),g=require("../../../../icon/icons.generated.cjs.js");let Y;const se=e=>{const t=Number(e);if(Number.isNaN(t)||e===null||e===void 0)return"0ms";if(t>=864e5){const w=Math.floor(t/864e5),f=Math.floor(t%864e5/36e5),i=Math.floor(t%36e5/6e4),b=Math.floor(t%6e4/1e3);return`${w}d ${f}h ${i}m ${b}s`}if(t>=36e5){const w=Math.floor(t/36e5),f=Math.floor(t%36e5/6e4),i=Math.floor(t%6e4/1e3);return`${w}h ${f}m ${i}s`}if(t>=6e4){const w=Math.floor(t/6e4),f=Math.floor(t%6e4/1e3);return`${w}m ${f}s`}return t>=1e3?`${(t/1e3).toFixed(2)}s`:`${t}ms`},Ee=({children:e,withLink:t,linkTo:w,rowData:f,disableRowClick:i})=>t&&!i?o.jsx(ze.Link,{to:w?.(f?.id,f)||"",children:e}):e,Ke=({cell:e,id:t,nextWidthSum:w,isLastCell:f,rowHovering:i,index:b,isFirstStickyCell:ne,handleCellClick:ue,currentData:y,highlightSubstring:D,is_read:Ue,is_modified:B,is_row_modified:X,is_deleted:R,is_added:I,level:x,inlineEditing:v,isInlineEditing:c,setRowHovering:M,handleCellValueChange:ie,cellRef:le,handleUpdateCellData:ce,registerValidation:me,loadingExpand:de,toggleRowExpand:G,isDraggingOver:fe,isLoading:$,is_incomplete:H,pendingEdit:s,hasPendingEdit:l,pendingValidationError:pe})=>{const{cascadingTableConfig:P,originalsOnly:we,maxLevel:he,showNewItem:Ye,expandedRows:be,rowLinkConfig:O,multiSelectConfig:ye,cellEditing:V,cellEditingValue:q,allowInlineEdit:J,fieldOperationLoading:xe,pendingEdits:ve,selectedRowId:z}=a.useContext(Ae.TableContext),ke=z!=null&&String(z)===String(t),Te=Oe.useTableConfig(),A=(e?.column?.key?e?.row?.original?.__cellMetadata?.[e.column.key]:void 0)?.is_locked??e?.column?.is_locked,F=(e?.column?.key?ve?.[t]?.[e.column.key]?.validationError:null)||pe||null,Q=v===e.column.key&&e?.column?.canEdit&&!A&&!e?.column?.is_disabled,Ce=xe===`${t}-${e?.column?.id}`,{theme:ge}=Re.useTheme(),_e=ge==="dark",je=a.useCallback(()=>M(t),[M,t]),Le=a.useCallback(()=>M(null),[M]),_=Te?.formatDuration,[n,p]=a.useState(e?.column?.dataType==="duration"&&e?.value?_?_(e.value):se(e.value):e.value),[h,Z]=a.useState(null),[E,Ne]=a.useState(!1),[Se,ee]=a.useState(!1),[De,oe]=a.useState(!1),j=a.useRef(null),L=a.useRef(),N=a.useRef(),{selectedColumnIds:te=[]}=ye||{},re=!Object.prototype.hasOwnProperty.call(e?.column?.meta??{},"shouldHighlight")||e?.column?.meta?.shouldHighlight,ae=a.useCallback(()=>{j.current&&Ne(j.current.scrollWidth>j.current.clientWidth)},[]),K=a.useCallback(r=>{L.current&&clearTimeout(L.current),r?ee(!0):L.current=setTimeout(()=>ee(!1),200)},[]),W=a.useCallback(r=>{N.current&&clearTimeout(N.current),r?oe(!0):N.current=setTimeout(()=>oe(!1),200)},[]),T=k({"bg-amber-100 dark:bg-amber-900/30":l,"bg-neutral-100 dark:bg-black-600":i===t&&!c&&!l&&!(R||y?.is_deleted)&&!(I||y?.is_added),"bg-error-200 dark:bg-error-900":i===t&&!c&&!l&&(R||y?.is_deleted),"bg-success-100 dark:bg-success-800":i===t&&!c&&!l&&(I||y?.is_added),"bg-warning-100 dark:bg-warning-950":i===t&&!c&&!l&&(H||B||X||y?.is_row_modified),"bg-warning-50 dark:bg-orange-900":(H||B||X||y?.is_row_modified)&&!$&&i!==t&&!c&&!l,"bg-error-100 dark:bg-error-975":(R||y?.is_deleted)&&!$&&i!==t&&!c&&!l,"bg-success-50 dark:bg-success-900":(I||y?.is_added)&&!$&&i!==t&&!c&&!l,"bg-primary-50 dark:bg-primary-900":(fe||c)&&!l,"bg-primary-50 dark:bg-primary-800":te?.includes(e.column.id)&&!c&&!l,"bg-primary-100 dark:bg-primary-950":ke&&i!==t&&!c&&!l&&!$,[Ie.getTableRowBgClassNamesByStatus[e?.row?.original?.__rowBgStatus]]:e?.row?.original?.__rowBgStatus&&!c&&!l}),Me=r=>{e.column?.disableRowClick||ue(r)};a.useEffect(()=>(e?.row?.original?.status==="running"&&e.column?.dataType==="duration"&&(Y=setInterval(()=>{const u=new Date(S.formatDate(e?.row?.original?.created_at||e?.row?.original?.executed_on,{withTime:!0,format:"yyyy-MM-dd HH:mm:ss"})),d=Math.abs(new Date().getTime()-new Date(u).getTime());p(_?_(d):se(d))},500)),()=>{Y&&clearInterval(Y)}),[n,e.value,e?.row?.original?.created_at,e?.row?.original?.executed_on,e?.row?.original?.status,e.column?.dataType,_]),a.useEffect(()=>{(e?.column?.tooltipCellKey||e?.column?.type?.toLowerCase()==="url")&&(e?.column?.type?.toLowerCase()==="url"?Z(e?.value):Z(e?.row?.original?.[String(e?.column?.tooltipCellKey)]))},[e?.column?.tooltipCellKey,e?.row?.original,e?.column?.type,e?.value]),a.useEffect(()=>{if(e?.column?.type?.toLowerCase()==="currency")if(s?.value!==void 0){const r=e?.row?.original?.__rawData,u=e?.column?.Header,d=s?.meta?.currency_code||r?.[u]?.currency_code||"USD";p(S.formatCurrency(s.value,d))}else{const r=e?.row?.original?.__rawData,u=e?.column?.Header;p(S.formatCurrency(e?.value,r?.[u]?.currency_code||"USD"))}},[e?.value,e?.column?.type,e?.column?.Header,e?.row?.original?.__rawData,s?.value,s?.meta?.currency_code]),a.useEffect(()=>{e?.column?.type?.toLowerCase()==="percentage"&&(s?.value!==void 0?p(s.value?.toString()+"%"||""):p(e?.value?.toString()+"%"||""))},[e?.value,e?.column?.type,s?.value]),a.useEffect(()=>{const r=e?.column?.type?.toLowerCase()||"";if(["date","datetime"].includes(r))if(s?.value!==void 0){const u=r==="datetime",d=S.formatDate(s.value,{withTime:u,skipTimezone:!0});p(d||s.value)}else p(e.value)},[e?.value,e?.column?.type,s?.value]),a.useEffect(()=>{const r=e?.column?.type?.toLowerCase()||"";["currency","percentage","duration","boolean","date","datetime"].includes(r)||(s?.value!==void 0?p(s.value):e?.column?.dataType!=="duration"&&p(e.value))},[e?.value,e?.column?.type,e?.column?.dataType,s?.value]),a.useEffect(()=>{if(e?.column?.type?.toLowerCase()==="boolean"&&J){const r=s?.value!==void 0?s.value:e?.value;p(r===!0||r==="true"||r==="True"||r==="Yes"||r===1?"Yes":"No")}},[e?.value,e?.column?.type,J,s?.value]),a.useEffect(()=>()=>{L.current&&clearTimeout(L.current),N.current&&clearTimeout(N.current)},[]);const m=a.isValidElement(n);return o.jsxs("td",{id:e.value,"data-column-key":e?.column?.key,...e.getCellProps(),onClick:O?.isEnabled?void 0:Me,className:k("h-row",{"sticky left-0":e?.column?.sticky,relative:!e?.column?.sticky,"w-full":f,"overflow-visible":v===e.column.key,"overflow-x-hidden overflow-y-visible":v!==e.column.key&&m,"overflow-hidden":v!==e.column.key&&!m},F&&!Q?"outline outline-2 outline-error-500 -outline-offset-2 z-[5]":"",`${T||"bg-white dark:bg-black-800"}`),style:{minWidth:`${e.column.width}px`,maxWidth:`${e.column.width}px`,right:e?.column?.sticky?`${w}px`:C.CELL_DEFAULT_RIGHT_OFFSET,paddingLeft:x>0&&b===0?`${x*C.CELL_INDENT_PER_LEVEL_PX}px`:void 0},onMouseEnter:je,onMouseLeave:Le,children:[o.jsx(Ee,{withLink:O?.isEnabled,linkTo:O?.linkTo||void 0,rowData:e?.row?.original,disableRowClick:e?.column?.disableRowClick,children:(Array.isArray(V)?V.includes(`${t}-${e?.column?.id}`):V===`${t}-${e?.column?.id}`)?o.jsxs("div",{className:"h-row top-0 font-medium font-inter w-full absolute flex items-center px-4",children:[o.jsx("span",{className:"text-neutral-400 dark:text-black-400 truncate",children:(()=>{const r=`${t}-${e?.column?.id}`,u=typeof q=="object"?q?.[r]:q,d=e?.column?.type?.toLowerCase();if(d==="boolean")return u===!0||u==="true"||u==="True"?"Yes":"No";if((d==="date"||d==="datetime")&&u){const $e=d==="datetime";return S.formatDate(u,{withTime:$e,skipTimezone:!0})||String(u)}return u!=null?String(u):n})()}),o.jsx("div",{className:"ml-2 flex items-center gap-1.5",children:o.jsx(g.LoadingSpinnerIcon,{className:"spinner text-neutral-600 dark:text-white",size:12})})]}):v===e.column.key&&e?.column?.canEdit&&!A&&!e?.column?.is_disabled?o.jsx("div",{className:"h-row w-full absolute top-0 left-0 flex items-center",style:{marginLeft:x>0&&b===0?`-${x*C.CELL_INDENT_PER_LEVEL_PX}px`:void 0,width:x>0&&b===0?`calc(100% + ${x*C.CELL_INDENT_PER_LEVEL_PX}px)`:"100%"},children:o.jsx(Fe.InlineEditField,{cell:e,id:t,inlineEditing:v,cellRef:le,handleCellValueChange:ie,handleUpdateCellData:ce,registerValidation:me})}):o.jsxs(o.Fragment,{children:[x>0&&b===0&&o.jsx("div",{className:"h-row border-l border-neutral-300 dark:border-black-600 ml-2"}),o.jsx("div",{className:"min-h-6",children:o.jsx(U,{title:h&&e?.column?.type?.toLowerCase()!=="url"?h:void 0,hideTooltip:!h||e?.column?.type?.toLowerCase()==="url",delayShow:!0,placement:"top",children:o.jsxs("div",{className:k(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${T||"bg-white dark:bg-black-800"}`,m?"overflow-x-hidden overflow-y-visible":"overflow-x-hidden",{"border border-b-0 border-t-0 border-primary-600 dark:border-blue-800":te?.includes(e.column.id)}),style:e?.column?.sticky&&ne?{boxShadow:_e?C.CELL_STICKY_SHADOW_DARK:C.CELL_STICKY_SHADOW_LIGHT}:{},children:[P?.isCascading&&!we&&b===0&&o.jsx("div",{className:k("w-[22px] h-row flex items-center px-4",`${T||"bg-white dark:bg-black-800"}`),id:"cascading",children:he>x&&(e?.row?.original?.__has_children||P?.showAllDropdown)&&o.jsx("div",{children:de?o.jsx(g.LoadingSpinnerIcon,{className:"text-neutral-600 dark:text-white",size:8}):o.jsx("div",{children:be?.[t]?.isOpen?o.jsx(g.KeyboardArrowDownIcon,{size:20,className:"text-neutral-400 dark:text-neutral-400",onClick:r=>{G(),r.stopPropagation()}}):o.jsx(g.KeyboardArrowRightFilledIcon,{size:20,className:"text-neutral-400 dark:text-neutral-400",onClick:r=>{G(),r.stopPropagation()}})})})}),e?.column?.type?.toLowerCase()==="url"&&h?o.jsx(U,{title:o.jsx("div",{onMouseEnter:()=>K(!0),onMouseLeave:()=>K(!1),children:o.jsx("a",{href:h,target:"_blank",rel:"noopener noreferrer",onClick:r=>r.stopPropagation(),children:o.jsxs("div",{className:"flex gap-1 items-center w-full",children:[o.jsx("div",{className:"w-4 h-4",children:o.jsx(g.LinkIcon,{height:16,width:16})}),o.jsx(Ve.Typography,{variant:"medium",size:"small",className:"truncate",appearance:"custom",children:h}),o.jsx(qe.OpenInNewRounded,{sx:{height:"16px",width:"16px",color:"#016DCF"}})]})})}),placement:"top",open:Se,onOpenChange:K,className:"block w-full min-w-0 overflow-hidden",children:o.jsx("div",{className:"w-full h-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400",children:o.jsx("span",{ref:j,onMouseEnter:ae,className:"truncate w-full",children:D&&re&&!a.isValidElement(n)&&typeof n!="object"?D(n):n})})}):o.jsx(U,{title:E&&n&&!m?o.jsx("div",{onMouseEnter:()=>W(!0),onMouseLeave:()=>W(!1),className:"max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll",children:String(n)}):void 0,placement:"top",delayShow:!0,hideTooltip:!!h,open:E&&!h&&!m?De:void 0,onOpenChange:E&&!h&&!m?W:void 0,className:k("block w-full min-w-0",m?"overflow-x-hidden overflow-y-visible":"overflow-hidden"),children:o.jsx("div",{className:k("w-full h-full flex items-center px-4 min-w-0",m?"overflow-x-hidden overflow-y-visible":"overflow-hidden"),children:o.jsx("span",{ref:m?void 0:j,onMouseEnter:m?void 0:ae,className:k(m?"flex min-w-0 max-w-full items-center justify-start gap-1":"truncate w-full"),children:D&&re&&!a.isValidElement(n)&&typeof n!="object"?D(n):a.isValidElement(n)?typeof n.type=="string"?n:a.cloneElement(n,{...n.props,containerWidth:e.column.width}):n})})})]})})})]})}),F&&!Q&&o.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]",children:o.jsx("div",{className:"w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate",children:o.jsx("span",{className:"text-error-600 text-2xs font-medium leading-none",children:F})})}),Ce&&!(v===e.column.key&&e?.column?.canEdit&&!A&&!e?.column?.is_disabled)&&o.jsx("div",{className:"absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10",children:o.jsx(g.LoadingSpinnerIcon,{className:"text-primary-600 dark:text-white",size:8})})]},b)},We=a.memo(Ke);exports.DataCell=We;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),Re=require("../../../../../hooks/useTheme.cjs.js"),S=require("../../../../../utils/formatters.cjs.js"),Ie=require("../../../../../constants/table.cjs.js"),Oe=require("../../../../../providers/design-system-provider/hooks.cjs.js"),U=require("../../../../tooltip/Tooltip.cjs.js"),Ve=require("../../../typography/Typography.cjs.js"),qe=require("@mui/icons-material"),k=require("../../../../../_virtual/index.cjs.js"),a=require("react"),ze=require("react-router-dom"),Ae=require("../../context.cjs.js"),Fe=require("./InlineEditField.cjs.js"),C=require("../../constants.cjs.js"),g=require("../../../../icon/icons.generated.cjs.js");let Y;const se=e=>{const t=Number(e);if(Number.isNaN(t)||e===null||e===void 0)return"0ms";if(t>=864e5){const p=Math.floor(t/864e5),f=Math.floor(t%864e5/36e5),i=Math.floor(t%36e5/6e4),b=Math.floor(t%6e4/1e3);return`${p}d ${f}h ${i}m ${b}s`}if(t>=36e5){const p=Math.floor(t/36e5),f=Math.floor(t%36e5/6e4),i=Math.floor(t%6e4/1e3);return`${p}h ${f}m ${i}s`}if(t>=6e4){const p=Math.floor(t/6e4),f=Math.floor(t%6e4/1e3);return`${p}m ${f}s`}return t>=1e3?`${(t/1e3).toFixed(2)}s`:`${t}ms`},Ee=({children:e,withLink:t,linkTo:p,rowData:f,disableRowClick:i})=>t&&!i?o.jsx(ze.Link,{to:p?.(f?.id,f)||"",children:e}):e,Ke=({cell:e,id:t,nextWidthSum:p,isLastCell:f,rowHovering:i,index:b,isFirstStickyCell:ne,handleCellClick:ue,currentData:y,highlightSubstring:D,is_read:Ue,is_modified:B,is_row_modified:X,is_deleted:R,is_added:I,level:x,inlineEditing:v,isInlineEditing:c,setRowHovering:M,handleCellValueChange:ie,cellRef:le,handleUpdateCellData:ce,registerValidation:me,loadingExpand:de,toggleRowExpand:G,isDraggingOver:fe,isLoading:$,is_incomplete:H,pendingEdit:s,hasPendingEdit:l,pendingValidationError:we})=>{const{cascadingTableConfig:P,originalsOnly:pe,maxLevel:he,showNewItem:Ye,expandedRows:be,rowLinkConfig:O,multiSelectConfig:ye,cellEditing:V,cellEditingValue:q,allowInlineEdit:J,fieldOperationLoading:xe,pendingEdits:ve,selectedRowId:z}=a.useContext(Ae.TableContext),ke=z!=null&&String(z)===String(t),Te=Oe.useTableConfig(),A=(e?.column?.key?e?.row?.original?.__cellMetadata?.[e.column.key]:void 0)?.is_locked??e?.column?.is_locked,F=(e?.column?.key?ve?.[t]?.[e.column.key]?.validationError:null)||we||null,Q=v===e.column.key&&e?.column?.canEdit&&!A&&!e?.column?.is_disabled,Ce=xe===`${t}-${e?.column?.id}`,{theme:ge}=Re.useTheme(),_e=ge==="dark",je=a.useCallback(()=>M(t),[M,t]),Le=a.useCallback(()=>M(null),[M]),_=Te?.formatDuration,[n,w]=a.useState(e?.column?.dataType==="duration"&&e?.value?_?_(e.value):se(e.value):e.value),[h,Z]=a.useState(null),[E,Ne]=a.useState(!1),[Se,ee]=a.useState(!1),[De,oe]=a.useState(!1),j=a.useRef(null),L=a.useRef(),N=a.useRef(),{selectedColumnIds:te=[]}=ye||{},re=!Object.prototype.hasOwnProperty.call(e?.column?.meta??{},"shouldHighlight")||e?.column?.meta?.shouldHighlight,ae=a.useCallback(()=>{j.current&&Ne(j.current.scrollWidth>j.current.clientWidth)},[]),K=a.useCallback(r=>{L.current&&clearTimeout(L.current),r?ee(!0):L.current=setTimeout(()=>ee(!1),200)},[]),W=a.useCallback(r=>{N.current&&clearTimeout(N.current),r?oe(!0):N.current=setTimeout(()=>oe(!1),200)},[]),T=k({"bg-amber-100 dark:bg-amber-900/30":l,"bg-neutral-100 dark:bg-black-600":i===t&&!c&&!l&&!(R||y?.is_deleted)&&!(I||y?.is_added),"bg-error-200 dark:bg-error-900":i===t&&!c&&!l&&(R||y?.is_deleted),"bg-success-100 dark:bg-success-800":i===t&&!c&&!l&&(I||y?.is_added),"bg-warning-100 dark:bg-warning-950":i===t&&!c&&!l&&(H||B||X||y?.is_row_modified),"bg-warning-50 dark:bg-orange-900":(H||B||X||y?.is_row_modified)&&!$&&i!==t&&!c&&!l,"bg-error-100 dark:bg-error-975":(R||y?.is_deleted)&&!$&&i!==t&&!c&&!l,"bg-success-50 dark:bg-success-900":(I||y?.is_added)&&!$&&i!==t&&!c&&!l,"bg-primary-50 dark:bg-primary-900":(fe||c)&&!l,"bg-primary-50 dark:bg-primary-800":te?.includes(e.column.id)&&!c&&!l,"bg-primary-100 dark:bg-primary-950":ke&&i!==t&&!c&&!l&&!$,[Ie.getTableRowBgClassNamesByStatus[e?.row?.original?.__rowBgStatus]]:e?.row?.original?.__rowBgStatus&&!c&&!l}),Me=r=>{e.column?.disableRowClick||ue(r)};a.useEffect(()=>(e?.row?.original?.status==="running"&&e.column?.dataType==="duration"&&(Y=setInterval(()=>{const u=new Date(S.formatDate(e?.row?.original?.created_at||e?.row?.original?.executed_on,{withTime:!0,format:"yyyy-MM-dd HH:mm:ss"})),d=Math.abs(new Date().getTime()-new Date(u).getTime());w(_?_(d):se(d))},500)),()=>{Y&&clearInterval(Y)}),[n,e.value,e?.row?.original?.created_at,e?.row?.original?.executed_on,e?.row?.original?.status,e.column?.dataType,_]),a.useEffect(()=>{(e?.column?.tooltipCellKey||e?.column?.type?.toLowerCase()==="url")&&(e?.column?.type?.toLowerCase()==="url"?Z(e?.value):Z(e?.row?.original?.[String(e?.column?.tooltipCellKey)]))},[e?.column?.tooltipCellKey,e?.row?.original,e?.column?.type,e?.value]),a.useEffect(()=>{if(e?.column?.type?.toLowerCase()==="currency")if(s?.value!==void 0){const r=e?.row?.original?.__rawData,u=e?.column?.Header,d=s?.meta?.currency_code||r?.[u]?.currency_code||"USD";w(S.formatCurrency(s.value,d))}else{const r=e?.row?.original?.__rawData,u=e?.column?.Header;w(S.formatCurrency(e?.value,r?.[u]?.currency_code||"USD"))}},[e?.value,e?.column?.type,e?.column?.Header,e?.row?.original?.__rawData,s?.value,s?.meta?.currency_code]),a.useEffect(()=>{e?.column?.type?.toLowerCase()==="percentage"&&(s?.value!==void 0?w(s.value?.toString()+"%"||""):w(e?.value?.toString()+"%"||""))},[e?.value,e?.column?.type,s?.value]),a.useEffect(()=>{const r=e?.column?.type?.toLowerCase()||"";if(["date","datetime"].includes(r))if(s?.value!==void 0){const u=r==="datetime",d=S.formatDate(s.value,{withTime:u,skipTimezone:!0});w(d||s.value)}else w(e.value)},[e?.value,e?.column?.type,s?.value]),a.useEffect(()=>{const r=e?.column?.type?.toLowerCase()||"";["currency","percentage","duration","boolean","date","datetime"].includes(r)||(s?.value!==void 0?w(s.value):e?.column?.dataType!=="duration"&&w(e.value))},[e?.value,e?.column?.type,e?.column?.dataType,s?.value]),a.useEffect(()=>{if(e?.column?.type?.toLowerCase()==="boolean"&&J){const r=s?.value!==void 0?s.value:e?.value;w(r===!0||r==="true"||r==="True"||r==="Yes"||r===1?"Yes":"No")}},[e?.value,e?.column?.type,J,s?.value]),a.useEffect(()=>()=>{L.current&&clearTimeout(L.current),N.current&&clearTimeout(N.current)},[]);const m=a.isValidElement(n);return o.jsxs("td",{id:e.value,"data-column-key":e?.column?.key,...e.getCellProps(),onClick:O?.isEnabled?void 0:Me,className:k("h-row",{"sticky left-0":e?.column?.sticky,relative:!e?.column?.sticky,"w-full":f,"overflow-visible":v===e.column.key,"overflow-x-hidden overflow-y-visible":v!==e.column.key&&m,"overflow-hidden":v!==e.column.key&&!m},F&&!Q?"outline outline-2 outline-error-500 -outline-offset-2 z-[5]":"",`${T||"bg-white dark:bg-black-800"}`),style:{minWidth:`${e.column.width}px`,maxWidth:`${e.column.width}px`,right:e?.column?.sticky?`${p}px`:C.CELL_DEFAULT_RIGHT_OFFSET,paddingLeft:x>0&&b===0?`${x*C.CELL_INDENT_PER_LEVEL_PX}px`:void 0},onMouseEnter:je,onMouseLeave:Le,children:[o.jsx(Ee,{withLink:O?.isEnabled,linkTo:O?.linkTo||void 0,rowData:e?.row?.original,disableRowClick:e?.column?.disableRowClick,children:(Array.isArray(V)?V.includes(`${t}-${e?.column?.id}`):V===`${t}-${e?.column?.id}`)?o.jsxs("div",{className:"h-row top-0 font-medium font-inter w-full absolute flex items-center px-4",children:[o.jsx("span",{className:"text-neutral-400 dark:text-black-400 truncate",children:(()=>{const r=`${t}-${e?.column?.id}`,u=typeof q=="object"?q?.[r]:q,d=e?.column?.type?.toLowerCase();if(d==="boolean")return u===!0||u==="true"||u==="True"?"Yes":"No";if((d==="date"||d==="datetime")&&u){const $e=d==="datetime";return S.formatDate(u,{withTime:$e,skipTimezone:!0})||String(u)}return u!=null?String(u):n})()}),o.jsx("div",{className:"ml-2 flex items-center gap-1.5",children:o.jsx(g.LoadingSpinnerIcon,{className:"spinner text-neutral-600 dark:text-white",size:12})})]}):v===e.column.key&&e?.column?.canEdit&&!A&&!e?.column?.is_disabled?o.jsx("div",{className:"h-row w-full absolute top-0 left-0 flex items-center",style:{marginLeft:x>0&&b===0?`-${x*C.CELL_INDENT_PER_LEVEL_PX}px`:void 0,width:x>0&&b===0?`calc(100% + ${x*C.CELL_INDENT_PER_LEVEL_PX}px)`:"100%"},children:o.jsx(Fe.InlineEditField,{cell:e,id:t,inlineEditing:v,cellRef:le,handleCellValueChange:ie,handleUpdateCellData:ce,registerValidation:me})}):o.jsxs(o.Fragment,{children:[x>0&&b===0&&o.jsx("div",{className:"h-row border-l border-neutral-300 dark:border-black-600 ml-2"}),o.jsx("div",{className:"min-h-6",children:o.jsx(U,{title:h&&e?.column?.type?.toLowerCase()!=="url"?h:void 0,hideTooltip:!h||e?.column?.type?.toLowerCase()==="url",delayShow:!0,placement:"top",children:o.jsxs("div",{className:k(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${T||"bg-white dark:bg-black-800"}`,m?"overflow-x-hidden overflow-y-visible":"overflow-x-hidden",{"border border-b-0 border-t-0 border-primary-600 dark:border-blue-800":te?.includes(e.column.id)}),style:e?.column?.sticky&&ne?{boxShadow:_e?C.CELL_STICKY_SHADOW_DARK:C.CELL_STICKY_SHADOW_LIGHT}:{},children:[P?.isCascading&&!pe&&b===0&&o.jsx("div",{className:k("w-[22px] h-row flex items-center px-4",`${T||"bg-white dark:bg-black-800"}`),id:"cascading",children:he>x&&(e?.row?.original?.__has_children||P?.showAllDropdown)&&o.jsx("div",{children:de?o.jsx(g.LoadingSpinnerIcon,{className:"text-neutral-600 dark:text-white",size:8}):o.jsx("div",{children:be?.[t]?.isOpen?o.jsx(g.KeyboardArrowDownIcon,{size:20,className:"text-neutral-400 dark:text-neutral-400",onClick:r=>{G(),r.stopPropagation()}}):o.jsx(g.KeyboardArrowRightFilledIcon,{size:20,className:"text-neutral-400 dark:text-neutral-400",onClick:r=>{G(),r.stopPropagation()}})})})}),e?.column?.type?.toLowerCase()==="url"&&h?o.jsx(U,{title:o.jsx("div",{onMouseEnter:()=>K(!0),onMouseLeave:()=>K(!1),children:o.jsx("a",{href:h,target:"_blank",rel:"noopener noreferrer",onClick:r=>r.stopPropagation(),children:o.jsxs("div",{className:"flex gap-1 items-center w-full",children:[o.jsx("div",{className:"w-4 h-4",children:o.jsx(g.LinkIcon,{height:16,width:16})}),o.jsx(Ve.Typography,{variant:"medium",size:"small",className:"truncate",appearance:"custom",children:h}),o.jsx(qe.OpenInNewRounded,{sx:{height:"16px",width:"16px",color:"#016DCF"}})]})})}),placement:"top",open:Se,onOpenChange:K,className:"block w-full min-w-0 overflow-hidden",children:o.jsx("div",{className:"w-full h-row flex items-center px-4 min-w-0 overflow-hidden text-primary-400",children:o.jsx("span",{ref:j,onMouseEnter:ae,className:"truncate w-full",children:D&&re&&!a.isValidElement(n)&&typeof n!="object"?D(n):n})})}):o.jsx(U,{title:E&&n&&!m?o.jsx("div",{onMouseEnter:()=>W(!0),onMouseLeave:()=>W(!1),className:"max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll",children:String(n)}):void 0,placement:"top",delayShow:!0,hideTooltip:!!h,open:E&&!h&&!m?De:void 0,onOpenChange:E&&!h&&!m?W:void 0,className:k("block w-full min-w-0",m?"overflow-x-hidden overflow-y-visible":"overflow-hidden"),children:o.jsx("div",{className:k("w-full h-row flex items-center px-4 min-w-0",m?"overflow-x-hidden overflow-y-visible":"overflow-hidden"),children:o.jsx("span",{ref:m?void 0:j,onMouseEnter:m?void 0:ae,className:k(m?"flex min-w-0 max-w-full items-center justify-start gap-1":"truncate w-full"),children:D&&re&&!a.isValidElement(n)&&typeof n!="object"?D(n):a.isValidElement(n)?typeof n.type=="string"?n:a.cloneElement(n,{...n.props,containerWidth:e.column.width}):n})})})]})})})]})}),F&&!Q&&o.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]",children:o.jsx("div",{className:"w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate",children:o.jsx("span",{className:"text-error-600 text-2xs font-medium leading-none",children:F})})}),Ce&&!(v===e.column.key&&e?.column?.canEdit&&!A&&!e?.column?.is_disabled)&&o.jsx("div",{className:"absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10",children:o.jsx(g.LoadingSpinnerIcon,{className:"text-primary-600 dark:text-white",size:8})})]},b)},We=a.memo(Ke);exports.DataCell=We;
|
|
2
2
|
//# sourceMappingURL=DataCell.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCell.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/DataCell.tsx"],"sourcesContent":["import { useTheme } from '../../../../../hooks/useTheme';\nimport { formatCurrency } from '../../../../../utils/formatters';\nimport { formatDate } from '../../../../../utils/formatters';\nimport { getTableRowBgClassNamesByStatus } from '../../../../../constants/table';\nimport type { ICell, IPendingEdit, ValidateAndSaveResult } from '../../types';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport Tooltip from '../../../../tooltip/Tooltip';\nimport { Typography } from '../../../../data-display/typography/Typography';\nimport { KeyboardArrowDownIcon, KeyboardArrowRightFilledIcon, LinkIcon, LoadingSpinnerIcon } from '../../../../icon';\nimport { OpenInNewRounded } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { TableContext } from '../../context';\nimport { InlineEditField } from './InlineEditField';\nimport { CELL_DEFAULT_RIGHT_OFFSET, CELL_INDENT_PER_LEVEL_PX, CELL_STICKY_SHADOW_DARK, CELL_STICKY_SHADOW_LIGHT } from '../../constants';\n\ntype CellProps = {\n cell: ICell;\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n handleCellClick: (e?: React.MouseEvent) => void | null;\n currentData: { is_row_modified?: boolean; is_deleted?: boolean; is_added?: boolean };\n highlightSubstring?: (value: string) => JSX.Element;\n is_read: boolean;\n is_modified: boolean;\n is_row_modified: boolean;\n is_deleted: boolean;\n is_added: boolean;\n level: number;\n inlineEditing: string | null;\n isInlineEditing?: boolean;\n setRowHovering: (id: string | number | null) => void;\n handleCellValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n cellRef: React.RefObject<HTMLDivElement>;\n handleUpdateCellData: (directValue?: string | boolean | null, meta?: { currency_code?: string | null; reference?: unknown | null;[key: string]: unknown | null } | null) => void;\n registerValidation?: (validateFn: () => ValidateAndSaveResult) => void;\n loadingExpand: boolean;\n toggleRowExpand: () => void;\n isDraggingOver?: boolean;\n isLoading?: boolean;\n is_incomplete?: boolean;\n pendingEdit?: IPendingEdit;\n hasPendingEdit?: boolean;\n pendingValidationError?: string | null;\n};\n\nlet interval: ReturnType<typeof setInterval> | undefined;\n\nconst formatDurationFallback = (duration: unknown): string => {\n const durationInMs = Number(duration);\n\n if (Number.isNaN(durationInMs) || duration === null || duration === undefined) {\n return '0ms';\n }\n\n if (durationInMs >= 86400000) {\n const days = Math.floor(durationInMs / 86400000);\n const hours = Math.floor((durationInMs % 86400000) / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${days}d ${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 3600000) {\n const hours = Math.floor(durationInMs / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 60000) {\n const minutes = Math.floor(durationInMs / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 1000) {\n return `${(durationInMs / 1000).toFixed(2)}s`;\n }\n\n return `${durationInMs}ms`;\n};\n\nconst CellWrapper = ({ children, withLink, linkTo, rowData, disableRowClick }: { children: React.ReactNode; withLink?: boolean; linkTo?: (id: string, _rowData?: Record<string, unknown>) => string; rowData?: Record<string, unknown>; disableRowClick?: boolean }) => {\n return withLink && !disableRowClick ? <Link to={linkTo?.(rowData?.id as string, rowData) || ''}>{children}</Link> : children;\n};\n\nconst DataCellInner: React.FC<CellProps> = ({\n cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell, handleCellClick, currentData, highlightSubstring,\n is_read, is_modified, is_row_modified, is_deleted, is_added, level, inlineEditing, isInlineEditing, setRowHovering,\n handleCellValueChange, cellRef, handleUpdateCellData, registerValidation, loadingExpand, toggleRowExpand,\n isDraggingOver, isLoading, is_incomplete, pendingEdit, hasPendingEdit, pendingValidationError,\n}) => {\n const {\n cascadingTableConfig, originalsOnly, maxLevel, showNewItem, expandedRows, rowLinkConfig, multiSelectConfig,\n cellEditing, cellEditingValue, allowInlineEdit, fieldOperationLoading, pendingEdits: contextPendingEdits,\n selectedRowId,\n } = useContext(TableContext);\n\n const isSelectedRow =\n selectedRowId !== null && selectedRowId !== undefined && String(selectedRowId) === String(id);\n\n const tableConfig = useTableConfig();\n\n const rowCellMeta = cell?.column?.key ? (cell?.row?.original?.__cellMetadata as Record<string, Record<string, unknown>> | undefined)?.[cell.column.key] : undefined;\n const isLocked = rowCellMeta?.is_locked ?? cell?.column?.is_locked;\n const cellValidationError = (cell?.column?.key ? contextPendingEdits?.[id]?.[cell.column.key]?.validationError : null) || pendingValidationError || null;\n const isActuallyInlineEditing = inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled;\n const isFieldOperationLoading = fieldOperationLoading === `${id}-${cell?.column?.id}`;\n const { theme } = useTheme();\n const isDark = theme === 'dark';\n const onMouseEnter = useCallback(() => setRowHovering(id), [setRowHovering, id]);\n const onMouseLeave = useCallback(() => setRowHovering(null), [setRowHovering]);\n\n const getNodeExecutionDuration = tableConfig?.formatDuration;\n const [cellValue, setCellValue] = useState(\n cell?.column?.dataType === 'duration' && cell?.value\n ? getNodeExecutionDuration\n ? getNodeExecutionDuration(cell.value)\n : formatDurationFallback(cell.value)\n : cell.value,\n );\n const [tooltipText, setTooltipText] = useState<string | null>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [urlTooltipOpen, setUrlTooltipOpen] = useState(false);\n const [truncateTooltipOpen, setTruncateTooltipOpen] = useState(false);\n const textRef = useRef<HTMLSpanElement>(null);\n const urlTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const truncateTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const { selectedColumnIds = [] } = multiSelectConfig || {};\n const shouldHighlight = !Object.prototype.hasOwnProperty.call(cell?.column?.meta ?? {}, 'shouldHighlight') || cell?.column?.meta?.shouldHighlight;\n\n const checkTruncation = useCallback(() => {\n if (textRef.current) {\n setIsTruncated(textRef.current.scrollWidth > textRef.current.clientWidth);\n }\n }, []);\n\n const handleUrlTooltipChange = useCallback((open: boolean) => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n\n if (open) {\n setUrlTooltipOpen(true);\n } else {\n urlTooltipTimer.current = setTimeout(() => setUrlTooltipOpen(false), 200);\n }\n }, []);\n\n const handleTruncateTooltipChange = useCallback((open: boolean) => {\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n\n if (open) {\n setTruncateTooltipOpen(true);\n } else {\n truncateTooltipTimer.current = setTimeout(() => setTruncateTooltipOpen(false), 200);\n }\n }, []);\n\n const bgColor = cn({\n 'bg-amber-100 dark:bg-amber-900/30': hasPendingEdit,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !hasPendingEdit && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_added || currentData?.is_added),\n 'bg-warning-100 dark:bg-warning-950': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified),\n // 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-orange-900': (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-900': (isDraggingOver || isInlineEditing) && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-800': selectedColumnIds?.includes(cell.column.id) && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-100 dark:bg-primary-950': isSelectedRow && rowHovering !== id && !isInlineEditing && !hasPendingEdit && !isLoading,\n [getTableRowBgClassNamesByStatus[cell?.row?.original?.__rowBgStatus as string]]: cell?.row?.original?.__rowBgStatus && !isInlineEditing && !hasPendingEdit,\n });\n\n const onClick = (e: React.MouseEvent) => { if (cell.column?.disableRowClick) return; handleCellClick(e); };\n\n useEffect(() => {\n const isRunning = cell?.row?.original?.status === 'running';\n if (isRunning && cell.column?.dataType === 'duration') {\n interval = setInterval(() => {\n const startedTime = new Date(formatDate((cell?.row?.original?.created_at || cell?.row?.original?.executed_on) as string | undefined, { withTime: true, format: 'yyyy-MM-dd HH:mm:ss' }) as unknown as Date);\n const timeDiff = Math.abs(new Date().getTime() - new Date(startedTime).getTime());\n setCellValue(getNodeExecutionDuration ? getNodeExecutionDuration(timeDiff) : formatDurationFallback(timeDiff));\n }, 500);\n }\n return () => { if (interval) clearInterval(interval); };\n }, [cellValue, cell.value, cell?.row?.original?.created_at, cell?.row?.original?.executed_on, cell?.row?.original?.status, cell.column?.dataType, getNodeExecutionDuration]);\n\n useEffect(() => {\n if (cell?.column?.tooltipCellKey || cell?.column?.type?.toLowerCase() === 'url') {\n if (cell?.column?.type?.toLowerCase() === 'url') setTooltipText(cell?.value as string | null);\n else setTooltipText(cell?.row?.original?.[String(cell?.column?.tooltipCellKey)] as string | null);\n }\n }, [cell?.column?.tooltipCellKey, cell?.row?.original, cell?.column?.type, cell?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'currency') {\n if (pendingEdit?.value !== undefined) {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n const currencyCode = pendingEdit?.meta?.currency_code || rawData?.[headerKey]?.currency_code || 'USD';\n setCellValue(formatCurrency(pendingEdit.value, currencyCode as string));\n } else {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n setCellValue(formatCurrency(cell?.value, (rawData?.[headerKey]?.currency_code as string) || 'USD'));\n }\n }\n }, [cell?.value, cell?.column?.type, cell?.column?.Header, cell?.row?.original?.__rawData, pendingEdit?.value, pendingEdit?.meta?.currency_code]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'percentage') {\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value?.toString() + '%' || '');\n else setCellValue(cell?.value?.toString() + '%' || '');\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['date', 'datetime'].includes(columnType)) {\n if (pendingEdit?.value !== undefined) {\n const hasTime = columnType === 'datetime';\n const formattedValue = formatDate(pendingEdit.value as string, { withTime: hasTime, skipTimezone: true });\n setCellValue(formattedValue || pendingEdit.value);\n } else setCellValue(cell.value);\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['currency', 'percentage', 'duration', 'boolean', 'date', 'datetime'].includes(columnType)) return;\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value);\n else if (cell?.column?.dataType !== 'duration') setCellValue(cell.value);\n }, [cell?.value, cell?.column?.type, cell?.column?.dataType, pendingEdit?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'boolean' && allowInlineEdit) {\n const rawValue = pendingEdit?.value !== undefined ? pendingEdit.value : cell?.value;\n const booleanValue = rawValue === true || rawValue === 'true' || rawValue === 'True' || rawValue === 'Yes' || rawValue === 1;\n setCellValue(booleanValue ? 'Yes' : 'No');\n }\n }, [cell?.value, cell?.column?.type, allowInlineEdit, pendingEdit?.value]);\n\n useEffect(() => {\n return () => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n };\n }, []);\n\n const isUiElementCell = React.isValidElement(cellValue);\n\n return (\n <td\n key={index} id={cell.value as string | undefined} data-column-key={cell?.column?.key} {...cell.getCellProps()}\n onClick={rowLinkConfig?.isEnabled ? undefined : onClick}\n className={cn('h-row', {\n 'sticky left-0': cell?.column?.sticky,\n relative: !cell?.column?.sticky,\n 'w-full': isLastCell,\n 'overflow-visible': inlineEditing === cell.column.key,\n /** Chips/badges: avoid vertical clip from overflow-x-hidden + truncate (see isUiElementCell branch below) */\n 'overflow-x-hidden overflow-y-visible': inlineEditing !== cell.column.key && isUiElementCell,\n 'overflow-hidden': inlineEditing !== cell.column.key && !isUiElementCell,\n },\n cellValidationError && !isActuallyInlineEditing ? 'outline outline-2 outline-error-500 -outline-offset-2 z-[5]' : '',\n `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`,\n )}\n style={{ minWidth: `${cell.column.width}px`, maxWidth: `${cell.column.width}px`, right: cell?.column?.sticky ? `${nextWidthSum}px` : CELL_DEFAULT_RIGHT_OFFSET, paddingLeft: level > 0 && index === 0 ? `${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined }}\n onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}\n >\n <CellWrapper withLink={rowLinkConfig?.isEnabled} linkTo={rowLinkConfig?.linkTo || undefined} rowData={cell?.row?.original} disableRowClick={cell?.column?.disableRowClick}>\n {(Array.isArray(cellEditing) ? cellEditing.includes(`${id}-${cell?.column?.id}`) : cellEditing === `${id}-${cell?.column?.id}`) ? (\n <div className='h-row top-0 font-medium font-inter w-full absolute flex items-center px-4'>\n <span className='text-neutral-400 dark:text-black-400 truncate'>\n {(() => {\n const currentCellId = `${id}-${cell?.column?.id}`;\n const editValue = typeof cellEditingValue === 'object' ? cellEditingValue?.[currentCellId] : cellEditingValue;\n const columnType = cell?.column?.type?.toLowerCase();\n\n if (columnType === 'boolean') {\n return (editValue as unknown) === true || editValue === 'true' || editValue === 'True' ? 'Yes' : 'No';\n }\n\n if ((columnType === 'date' || columnType === 'datetime') && editValue) {\n const hasTime = columnType === 'datetime';\n return formatDate(editValue as string, { withTime: hasTime, skipTimezone: true }) || String(editValue);\n }\n\n return editValue !== undefined && editValue !== null ? String(editValue) : (cellValue as React.ReactNode);\n })()}\n </span>\n <div className='ml-2 flex items-center gap-1.5'><LoadingSpinnerIcon className='spinner text-neutral-600 dark:text-white' size={12} /></div>\n </div>\n ) : inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled ? (\n <div className='h-row w-full absolute top-0 left-0 flex items-center' style={{ marginLeft: level > 0 && index === 0 ? `-${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined, width: level > 0 && index === 0 ? `calc(100% + ${level * CELL_INDENT_PER_LEVEL_PX}px)` : '100%' }}>\n <InlineEditField cell={cell} id={id} inlineEditing={inlineEditing} cellRef={cellRef} handleCellValueChange={handleCellValueChange} handleUpdateCellData={handleUpdateCellData} registerValidation={registerValidation} />\n </div>\n ) : (\n <>\n {level > 0 && index === 0 && <div className='h-row border-l border-neutral-300 dark:border-black-600 ml-2' />}\n <div className='min-h-6'>\n <Tooltip\n title={tooltipText && cell?.column?.type?.toLowerCase() !== 'url' ? tooltipText : undefined}\n hideTooltip={!tooltipText || cell?.column?.type?.toLowerCase() === 'url'}\n delayShow\n placement='top'\n >\n <div className={cn(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`, isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-x-hidden', { 'border border-b-0 border-t-0 border-primary-600 dark:border-blue-800': selectedColumnIds?.includes(cell.column.id) })}\n style={cell?.column?.sticky && isFirstStickyCell ? { boxShadow: isDark ? CELL_STICKY_SHADOW_DARK : CELL_STICKY_SHADOW_LIGHT } : {}}>\n {cascadingTableConfig?.isCascading && !originalsOnly && index === 0 && (\n <div className={cn('w-[22px] h-row flex items-center px-4', `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`)} id='cascading'>\n {maxLevel! > level && (cell?.row?.original?.__has_children || cascadingTableConfig?.showAllDropdown) && (\n <div>{loadingExpand ? <LoadingSpinnerIcon className='text-neutral-600 dark:text-white' size={8} /> : <div>{expandedRows?.[id]?.isOpen ? <KeyboardArrowDownIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} /> : <KeyboardArrowRightFilledIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} />}</div>}</div>\n )}\n </div>\n )}\n\n {cell?.column?.type?.toLowerCase() === 'url' && tooltipText ? (\n <Tooltip\n title={(\n <div onMouseEnter={() => handleUrlTooltipChange(true)} onMouseLeave={() => handleUrlTooltipChange(false)}>\n <a href={tooltipText} target='_blank' rel='noopener noreferrer' onClick={(e) => e.stopPropagation()}>\n <div className='flex gap-1 items-center w-full'>\n <div className='w-4 h-4'>\n <LinkIcon height={16} width={16} />\n </div>\n <Typography variant='medium' size='small' className='truncate' appearance='custom'>{tooltipText}</Typography>\n <OpenInNewRounded sx={{ height: '16px', width: '16px', color: '#016DCF' }} />\n </div>\n </a>\n </div>\n )}\n placement='top'\n open={urlTooltipOpen}\n onOpenChange={handleUrlTooltipChange}\n className='block w-full min-w-0 overflow-hidden'\n >\n <div className='w-full h-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} onMouseEnter={checkTruncation} className='truncate w-full'>\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n ) : (\n <Tooltip\n title={\n isTruncated && cellValue && !isUiElementCell ? (\n <div\n onMouseEnter={() => handleTruncateTooltipChange(true)}\n onMouseLeave={() => handleTruncateTooltipChange(false)}\n className='max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll'\n >\n {String(cellValue)}\n </div>\n ) : undefined\n }\n placement='top'\n delayShow\n hideTooltip={!!tooltipText}\n open={isTruncated && !tooltipText && !isUiElementCell ? truncateTooltipOpen : undefined}\n onOpenChange={isTruncated && !tooltipText && !isUiElementCell ? handleTruncateTooltipChange : undefined}\n className={cn('block w-full min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}\n >\n <div className={cn('w-full h-full flex items-center px-4 min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}>\n <span\n ref={isUiElementCell ? undefined : textRef}\n onMouseEnter={isUiElementCell ? undefined : checkTruncation}\n className={cn(isUiElementCell ? 'flex min-w-0 max-w-full items-center justify-start gap-1' : 'truncate w-full')}\n >\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : React.isValidElement(cellValue)\n ? (typeof (cellValue as React.ReactElement<Record<string, unknown>>).type === 'string'\n ? cellValue\n : React.cloneElement(cellValue as React.ReactElement<Record<string, unknown>>, {\n ...((cellValue as React.ReactElement<Record<string, unknown>>).props as Record<string, unknown>),\n containerWidth: cell.column.width,\n }))\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n )}\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </CellWrapper>\n {cellValidationError && !isActuallyInlineEditing && (\n <div className='absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]'>\n <div className='w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate'><span className='text-error-600 text-2xs font-medium leading-none'>{cellValidationError}</span></div>\n </div>\n )}\n {isFieldOperationLoading && !(inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled) && (\n <div className='absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10'>\n <LoadingSpinnerIcon className='text-primary-600 dark:text-white' size={8} />\n </div>\n )}\n </td>\n );\n};\n\nexport const DataCell = React.memo(DataCellInner);\n"],"names":["interval","formatDurationFallback","duration","durationInMs","days","hours","minutes","seconds","CellWrapper","children","withLink","linkTo","rowData","disableRowClick","jsx","Link","DataCellInner","cell","id","nextWidthSum","isLastCell","rowHovering","index","isFirstStickyCell","handleCellClick","currentData","highlightSubstring","is_read","is_modified","is_row_modified","is_deleted","is_added","level","inlineEditing","isInlineEditing","setRowHovering","handleCellValueChange","cellRef","handleUpdateCellData","registerValidation","loadingExpand","toggleRowExpand","isDraggingOver","isLoading","is_incomplete","pendingEdit","hasPendingEdit","pendingValidationError","cascadingTableConfig","originalsOnly","maxLevel","showNewItem","expandedRows","rowLinkConfig","multiSelectConfig","cellEditing","cellEditingValue","allowInlineEdit","fieldOperationLoading","contextPendingEdits","selectedRowId","useContext","TableContext","isSelectedRow","tableConfig","useTableConfig","isLocked","cellValidationError","isActuallyInlineEditing","isFieldOperationLoading","theme","useTheme","isDark","onMouseEnter","useCallback","onMouseLeave","getNodeExecutionDuration","cellValue","setCellValue","useState","tooltipText","setTooltipText","isTruncated","setIsTruncated","urlTooltipOpen","setUrlTooltipOpen","truncateTooltipOpen","setTruncateTooltipOpen","textRef","useRef","urlTooltipTimer","truncateTooltipTimer","selectedColumnIds","shouldHighlight","checkTruncation","handleUrlTooltipChange","open","handleTruncateTooltipChange","bgColor","cn","getTableRowBgClassNamesByStatus","onClick","e","useEffect","startedTime","formatDate","timeDiff","rawData","headerKey","currencyCode","formatCurrency","columnType","hasTime","formattedValue","rawValue","isUiElementCell","React","jsxs","CELL_DEFAULT_RIGHT_OFFSET","CELL_INDENT_PER_LEVEL_PX","currentCellId","editValue","LoadingSpinnerIcon","InlineEditField","Fragment","Tooltip","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","KeyboardArrowDownIcon","KeyboardArrowRightFilledIcon","LinkIcon","Typography","OpenInNewRounded","DataCell"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataCell.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/DataCell.tsx"],"sourcesContent":["import { useTheme } from '../../../../../hooks/useTheme';\nimport { formatCurrency } from '../../../../../utils/formatters';\nimport { formatDate } from '../../../../../utils/formatters';\nimport { getTableRowBgClassNamesByStatus } from '../../../../../constants/table';\nimport type { ICell, IPendingEdit, ValidateAndSaveResult } from '../../types';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport Tooltip from '../../../../tooltip/Tooltip';\nimport { Typography } from '../../../../data-display/typography/Typography';\nimport { KeyboardArrowDownIcon, KeyboardArrowRightFilledIcon, LinkIcon, LoadingSpinnerIcon } from '../../../../icon';\nimport { OpenInNewRounded } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { TableContext } from '../../context';\nimport { InlineEditField } from './InlineEditField';\nimport { CELL_DEFAULT_RIGHT_OFFSET, CELL_INDENT_PER_LEVEL_PX, CELL_STICKY_SHADOW_DARK, CELL_STICKY_SHADOW_LIGHT } from '../../constants';\n\ntype CellProps = {\n cell: ICell;\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n handleCellClick: (e?: React.MouseEvent) => void | null;\n currentData: { is_row_modified?: boolean; is_deleted?: boolean; is_added?: boolean };\n highlightSubstring?: (value: string) => JSX.Element;\n is_read: boolean;\n is_modified: boolean;\n is_row_modified: boolean;\n is_deleted: boolean;\n is_added: boolean;\n level: number;\n inlineEditing: string | null;\n isInlineEditing?: boolean;\n setRowHovering: (id: string | number | null) => void;\n handleCellValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n cellRef: React.RefObject<HTMLDivElement>;\n handleUpdateCellData: (directValue?: string | boolean | null, meta?: { currency_code?: string | null; reference?: unknown | null;[key: string]: unknown | null } | null) => void;\n registerValidation?: (validateFn: () => ValidateAndSaveResult) => void;\n loadingExpand: boolean;\n toggleRowExpand: () => void;\n isDraggingOver?: boolean;\n isLoading?: boolean;\n is_incomplete?: boolean;\n pendingEdit?: IPendingEdit;\n hasPendingEdit?: boolean;\n pendingValidationError?: string | null;\n};\n\nlet interval: ReturnType<typeof setInterval> | undefined;\n\nconst formatDurationFallback = (duration: unknown): string => {\n const durationInMs = Number(duration);\n\n if (Number.isNaN(durationInMs) || duration === null || duration === undefined) {\n return '0ms';\n }\n\n if (durationInMs >= 86400000) {\n const days = Math.floor(durationInMs / 86400000);\n const hours = Math.floor((durationInMs % 86400000) / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${days}d ${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 3600000) {\n const hours = Math.floor(durationInMs / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 60000) {\n const minutes = Math.floor(durationInMs / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 1000) {\n return `${(durationInMs / 1000).toFixed(2)}s`;\n }\n\n return `${durationInMs}ms`;\n};\n\nconst CellWrapper = ({ children, withLink, linkTo, rowData, disableRowClick }: { children: React.ReactNode; withLink?: boolean; linkTo?: (id: string, _rowData?: Record<string, unknown>) => string; rowData?: Record<string, unknown>; disableRowClick?: boolean }) => {\n return withLink && !disableRowClick ? <Link to={linkTo?.(rowData?.id as string, rowData) || ''}>{children}</Link> : children;\n};\n\nconst DataCellInner: React.FC<CellProps> = ({\n cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell, handleCellClick, currentData, highlightSubstring,\n is_read, is_modified, is_row_modified, is_deleted, is_added, level, inlineEditing, isInlineEditing, setRowHovering,\n handleCellValueChange, cellRef, handleUpdateCellData, registerValidation, loadingExpand, toggleRowExpand,\n isDraggingOver, isLoading, is_incomplete, pendingEdit, hasPendingEdit, pendingValidationError,\n}) => {\n const {\n cascadingTableConfig, originalsOnly, maxLevel, showNewItem, expandedRows, rowLinkConfig, multiSelectConfig,\n cellEditing, cellEditingValue, allowInlineEdit, fieldOperationLoading, pendingEdits: contextPendingEdits,\n selectedRowId,\n } = useContext(TableContext);\n\n const isSelectedRow =\n selectedRowId !== null && selectedRowId !== undefined && String(selectedRowId) === String(id);\n\n const tableConfig = useTableConfig();\n\n const rowCellMeta = cell?.column?.key ? (cell?.row?.original?.__cellMetadata as Record<string, Record<string, unknown>> | undefined)?.[cell.column.key] : undefined;\n const isLocked = rowCellMeta?.is_locked ?? cell?.column?.is_locked;\n const cellValidationError = (cell?.column?.key ? contextPendingEdits?.[id]?.[cell.column.key]?.validationError : null) || pendingValidationError || null;\n const isActuallyInlineEditing = inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled;\n const isFieldOperationLoading = fieldOperationLoading === `${id}-${cell?.column?.id}`;\n const { theme } = useTheme();\n const isDark = theme === 'dark';\n const onMouseEnter = useCallback(() => setRowHovering(id), [setRowHovering, id]);\n const onMouseLeave = useCallback(() => setRowHovering(null), [setRowHovering]);\n\n const getNodeExecutionDuration = tableConfig?.formatDuration;\n const [cellValue, setCellValue] = useState(\n cell?.column?.dataType === 'duration' && cell?.value\n ? getNodeExecutionDuration\n ? getNodeExecutionDuration(cell.value)\n : formatDurationFallback(cell.value)\n : cell.value,\n );\n const [tooltipText, setTooltipText] = useState<string | null>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [urlTooltipOpen, setUrlTooltipOpen] = useState(false);\n const [truncateTooltipOpen, setTruncateTooltipOpen] = useState(false);\n const textRef = useRef<HTMLSpanElement>(null);\n const urlTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const truncateTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const { selectedColumnIds = [] } = multiSelectConfig || {};\n const shouldHighlight = !Object.prototype.hasOwnProperty.call(cell?.column?.meta ?? {}, 'shouldHighlight') || cell?.column?.meta?.shouldHighlight;\n\n const checkTruncation = useCallback(() => {\n if (textRef.current) {\n setIsTruncated(textRef.current.scrollWidth > textRef.current.clientWidth);\n }\n }, []);\n\n const handleUrlTooltipChange = useCallback((open: boolean) => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n\n if (open) {\n setUrlTooltipOpen(true);\n } else {\n urlTooltipTimer.current = setTimeout(() => setUrlTooltipOpen(false), 200);\n }\n }, []);\n\n const handleTruncateTooltipChange = useCallback((open: boolean) => {\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n\n if (open) {\n setTruncateTooltipOpen(true);\n } else {\n truncateTooltipTimer.current = setTimeout(() => setTruncateTooltipOpen(false), 200);\n }\n }, []);\n\n const bgColor = cn({\n 'bg-amber-100 dark:bg-amber-900/30': hasPendingEdit,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !hasPendingEdit && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_added || currentData?.is_added),\n 'bg-warning-100 dark:bg-warning-950': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified),\n // 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-orange-900': (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-900': (isDraggingOver || isInlineEditing) && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-800': selectedColumnIds?.includes(cell.column.id) && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-100 dark:bg-primary-950': isSelectedRow && rowHovering !== id && !isInlineEditing && !hasPendingEdit && !isLoading,\n [getTableRowBgClassNamesByStatus[cell?.row?.original?.__rowBgStatus as string]]: cell?.row?.original?.__rowBgStatus && !isInlineEditing && !hasPendingEdit,\n });\n\n const onClick = (e: React.MouseEvent) => { if (cell.column?.disableRowClick) return; handleCellClick(e); };\n\n useEffect(() => {\n const isRunning = cell?.row?.original?.status === 'running';\n if (isRunning && cell.column?.dataType === 'duration') {\n interval = setInterval(() => {\n const startedTime = new Date(formatDate((cell?.row?.original?.created_at || cell?.row?.original?.executed_on) as string | undefined, { withTime: true, format: 'yyyy-MM-dd HH:mm:ss' }) as unknown as Date);\n const timeDiff = Math.abs(new Date().getTime() - new Date(startedTime).getTime());\n setCellValue(getNodeExecutionDuration ? getNodeExecutionDuration(timeDiff) : formatDurationFallback(timeDiff));\n }, 500);\n }\n return () => { if (interval) clearInterval(interval); };\n }, [cellValue, cell.value, cell?.row?.original?.created_at, cell?.row?.original?.executed_on, cell?.row?.original?.status, cell.column?.dataType, getNodeExecutionDuration]);\n\n useEffect(() => {\n if (cell?.column?.tooltipCellKey || cell?.column?.type?.toLowerCase() === 'url') {\n if (cell?.column?.type?.toLowerCase() === 'url') setTooltipText(cell?.value as string | null);\n else setTooltipText(cell?.row?.original?.[String(cell?.column?.tooltipCellKey)] as string | null);\n }\n }, [cell?.column?.tooltipCellKey, cell?.row?.original, cell?.column?.type, cell?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'currency') {\n if (pendingEdit?.value !== undefined) {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n const currencyCode = pendingEdit?.meta?.currency_code || rawData?.[headerKey]?.currency_code || 'USD';\n setCellValue(formatCurrency(pendingEdit.value, currencyCode as string));\n } else {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n setCellValue(formatCurrency(cell?.value, (rawData?.[headerKey]?.currency_code as string) || 'USD'));\n }\n }\n }, [cell?.value, cell?.column?.type, cell?.column?.Header, cell?.row?.original?.__rawData, pendingEdit?.value, pendingEdit?.meta?.currency_code]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'percentage') {\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value?.toString() + '%' || '');\n else setCellValue(cell?.value?.toString() + '%' || '');\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['date', 'datetime'].includes(columnType)) {\n if (pendingEdit?.value !== undefined) {\n const hasTime = columnType === 'datetime';\n const formattedValue = formatDate(pendingEdit.value as string, { withTime: hasTime, skipTimezone: true });\n setCellValue(formattedValue || pendingEdit.value);\n } else setCellValue(cell.value);\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['currency', 'percentage', 'duration', 'boolean', 'date', 'datetime'].includes(columnType)) return;\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value);\n else if (cell?.column?.dataType !== 'duration') setCellValue(cell.value);\n }, [cell?.value, cell?.column?.type, cell?.column?.dataType, pendingEdit?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'boolean' && allowInlineEdit) {\n const rawValue = pendingEdit?.value !== undefined ? pendingEdit.value : cell?.value;\n const booleanValue = rawValue === true || rawValue === 'true' || rawValue === 'True' || rawValue === 'Yes' || rawValue === 1;\n setCellValue(booleanValue ? 'Yes' : 'No');\n }\n }, [cell?.value, cell?.column?.type, allowInlineEdit, pendingEdit?.value]);\n\n useEffect(() => {\n return () => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n };\n }, []);\n\n const isUiElementCell = React.isValidElement(cellValue);\n\n return (\n <td\n key={index} id={cell.value as string | undefined} data-column-key={cell?.column?.key} {...cell.getCellProps()}\n onClick={rowLinkConfig?.isEnabled ? undefined : onClick}\n className={cn('h-row', {\n 'sticky left-0': cell?.column?.sticky,\n relative: !cell?.column?.sticky,\n 'w-full': isLastCell,\n 'overflow-visible': inlineEditing === cell.column.key,\n /** Chips/badges: avoid vertical clip from overflow-x-hidden + truncate (see isUiElementCell branch below) */\n 'overflow-x-hidden overflow-y-visible': inlineEditing !== cell.column.key && isUiElementCell,\n 'overflow-hidden': inlineEditing !== cell.column.key && !isUiElementCell,\n },\n cellValidationError && !isActuallyInlineEditing ? 'outline outline-2 outline-error-500 -outline-offset-2 z-[5]' : '',\n `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`,\n )}\n style={{ minWidth: `${cell.column.width}px`, maxWidth: `${cell.column.width}px`, right: cell?.column?.sticky ? `${nextWidthSum}px` : CELL_DEFAULT_RIGHT_OFFSET, paddingLeft: level > 0 && index === 0 ? `${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined }}\n onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}\n >\n <CellWrapper withLink={rowLinkConfig?.isEnabled} linkTo={rowLinkConfig?.linkTo || undefined} rowData={cell?.row?.original} disableRowClick={cell?.column?.disableRowClick}>\n {(Array.isArray(cellEditing) ? cellEditing.includes(`${id}-${cell?.column?.id}`) : cellEditing === `${id}-${cell?.column?.id}`) ? (\n <div className='h-row top-0 font-medium font-inter w-full absolute flex items-center px-4'>\n <span className='text-neutral-400 dark:text-black-400 truncate'>\n {(() => {\n const currentCellId = `${id}-${cell?.column?.id}`;\n const editValue = typeof cellEditingValue === 'object' ? cellEditingValue?.[currentCellId] : cellEditingValue;\n const columnType = cell?.column?.type?.toLowerCase();\n\n if (columnType === 'boolean') {\n return (editValue as unknown) === true || editValue === 'true' || editValue === 'True' ? 'Yes' : 'No';\n }\n\n if ((columnType === 'date' || columnType === 'datetime') && editValue) {\n const hasTime = columnType === 'datetime';\n return formatDate(editValue as string, { withTime: hasTime, skipTimezone: true }) || String(editValue);\n }\n\n return editValue !== undefined && editValue !== null ? String(editValue) : (cellValue as React.ReactNode);\n })()}\n </span>\n <div className='ml-2 flex items-center gap-1.5'><LoadingSpinnerIcon className='spinner text-neutral-600 dark:text-white' size={12} /></div>\n </div>\n ) : inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled ? (\n <div className='h-row w-full absolute top-0 left-0 flex items-center' style={{ marginLeft: level > 0 && index === 0 ? `-${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined, width: level > 0 && index === 0 ? `calc(100% + ${level * CELL_INDENT_PER_LEVEL_PX}px)` : '100%' }}>\n <InlineEditField cell={cell} id={id} inlineEditing={inlineEditing} cellRef={cellRef} handleCellValueChange={handleCellValueChange} handleUpdateCellData={handleUpdateCellData} registerValidation={registerValidation} />\n </div>\n ) : (\n <>\n {level > 0 && index === 0 && <div className='h-row border-l border-neutral-300 dark:border-black-600 ml-2' />}\n <div className='min-h-6'>\n <Tooltip\n title={tooltipText && cell?.column?.type?.toLowerCase() !== 'url' ? tooltipText : undefined}\n hideTooltip={!tooltipText || cell?.column?.type?.toLowerCase() === 'url'}\n delayShow\n placement='top'\n >\n <div className={cn(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`, isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-x-hidden', { 'border border-b-0 border-t-0 border-primary-600 dark:border-blue-800': selectedColumnIds?.includes(cell.column.id) })}\n style={cell?.column?.sticky && isFirstStickyCell ? { boxShadow: isDark ? CELL_STICKY_SHADOW_DARK : CELL_STICKY_SHADOW_LIGHT } : {}}>\n {cascadingTableConfig?.isCascading && !originalsOnly && index === 0 && (\n <div className={cn('w-[22px] h-row flex items-center px-4', `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`)} id='cascading'>\n {maxLevel! > level && (cell?.row?.original?.__has_children || cascadingTableConfig?.showAllDropdown) && (\n <div>{loadingExpand ? <LoadingSpinnerIcon className='text-neutral-600 dark:text-white' size={8} /> : <div>{expandedRows?.[id]?.isOpen ? <KeyboardArrowDownIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} /> : <KeyboardArrowRightFilledIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} />}</div>}</div>\n )}\n </div>\n )}\n\n {cell?.column?.type?.toLowerCase() === 'url' && tooltipText ? (\n <Tooltip\n title={(\n <div onMouseEnter={() => handleUrlTooltipChange(true)} onMouseLeave={() => handleUrlTooltipChange(false)}>\n <a href={tooltipText} target='_blank' rel='noopener noreferrer' onClick={(e) => e.stopPropagation()}>\n <div className='flex gap-1 items-center w-full'>\n <div className='w-4 h-4'>\n <LinkIcon height={16} width={16} />\n </div>\n <Typography variant='medium' size='small' className='truncate' appearance='custom'>{tooltipText}</Typography>\n <OpenInNewRounded sx={{ height: '16px', width: '16px', color: '#016DCF' }} />\n </div>\n </a>\n </div>\n )}\n placement='top'\n open={urlTooltipOpen}\n onOpenChange={handleUrlTooltipChange}\n className='block w-full min-w-0 overflow-hidden'\n >\n <div className='w-full h-row flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} onMouseEnter={checkTruncation} className='truncate w-full'>\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n ) : (\n <Tooltip\n title={\n isTruncated && cellValue && !isUiElementCell ? (\n <div\n onMouseEnter={() => handleTruncateTooltipChange(true)}\n onMouseLeave={() => handleTruncateTooltipChange(false)}\n className='max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll'\n >\n {String(cellValue)}\n </div>\n ) : undefined\n }\n placement='top'\n delayShow\n hideTooltip={!!tooltipText}\n open={isTruncated && !tooltipText && !isUiElementCell ? truncateTooltipOpen : undefined}\n onOpenChange={isTruncated && !tooltipText && !isUiElementCell ? handleTruncateTooltipChange : undefined}\n className={cn('block w-full min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}\n >\n <div className={cn('w-full h-row flex items-center px-4 min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}>\n <span\n ref={isUiElementCell ? undefined : textRef}\n onMouseEnter={isUiElementCell ? undefined : checkTruncation}\n className={cn(isUiElementCell ? 'flex min-w-0 max-w-full items-center justify-start gap-1' : 'truncate w-full')}\n >\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : React.isValidElement(cellValue)\n ? (typeof (cellValue as React.ReactElement<Record<string, unknown>>).type === 'string'\n ? cellValue\n : React.cloneElement(cellValue as React.ReactElement<Record<string, unknown>>, {\n ...((cellValue as React.ReactElement<Record<string, unknown>>).props as Record<string, unknown>),\n containerWidth: cell.column.width,\n }))\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n )}\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </CellWrapper>\n {cellValidationError && !isActuallyInlineEditing && (\n <div className='absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]'>\n <div className='w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate'><span className='text-error-600 text-2xs font-medium leading-none'>{cellValidationError}</span></div>\n </div>\n )}\n {isFieldOperationLoading && !(inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled) && (\n <div className='absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10'>\n <LoadingSpinnerIcon className='text-primary-600 dark:text-white' size={8} />\n </div>\n )}\n </td>\n );\n};\n\nexport const DataCell = React.memo(DataCellInner);\n"],"names":["interval","formatDurationFallback","duration","durationInMs","days","hours","minutes","seconds","CellWrapper","children","withLink","linkTo","rowData","disableRowClick","jsx","Link","DataCellInner","cell","id","nextWidthSum","isLastCell","rowHovering","index","isFirstStickyCell","handleCellClick","currentData","highlightSubstring","is_read","is_modified","is_row_modified","is_deleted","is_added","level","inlineEditing","isInlineEditing","setRowHovering","handleCellValueChange","cellRef","handleUpdateCellData","registerValidation","loadingExpand","toggleRowExpand","isDraggingOver","isLoading","is_incomplete","pendingEdit","hasPendingEdit","pendingValidationError","cascadingTableConfig","originalsOnly","maxLevel","showNewItem","expandedRows","rowLinkConfig","multiSelectConfig","cellEditing","cellEditingValue","allowInlineEdit","fieldOperationLoading","contextPendingEdits","selectedRowId","useContext","TableContext","isSelectedRow","tableConfig","useTableConfig","isLocked","cellValidationError","isActuallyInlineEditing","isFieldOperationLoading","theme","useTheme","isDark","onMouseEnter","useCallback","onMouseLeave","getNodeExecutionDuration","cellValue","setCellValue","useState","tooltipText","setTooltipText","isTruncated","setIsTruncated","urlTooltipOpen","setUrlTooltipOpen","truncateTooltipOpen","setTruncateTooltipOpen","textRef","useRef","urlTooltipTimer","truncateTooltipTimer","selectedColumnIds","shouldHighlight","checkTruncation","handleUrlTooltipChange","open","handleTruncateTooltipChange","bgColor","cn","getTableRowBgClassNamesByStatus","onClick","e","useEffect","startedTime","formatDate","timeDiff","rawData","headerKey","currencyCode","formatCurrency","columnType","hasTime","formattedValue","rawValue","isUiElementCell","React","jsxs","CELL_DEFAULT_RIGHT_OFFSET","CELL_INDENT_PER_LEVEL_PX","currentCellId","editValue","LoadingSpinnerIcon","InlineEditField","Fragment","Tooltip","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","KeyboardArrowDownIcon","KeyboardArrowRightFilledIcon","LinkIcon","Typography","OpenInNewRounded","DataCell"],"mappings":"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"}
|
|
@@ -19,24 +19,24 @@ const me = (e) => {
|
|
|
19
19
|
if (Number.isNaN(o) || e === null || e === void 0)
|
|
20
20
|
return "0ms";
|
|
21
21
|
if (o >= 864e5) {
|
|
22
|
-
const p = Math.floor(o / 864e5), d = Math.floor(o % 864e5 / 36e5),
|
|
23
|
-
return `${p}d ${d}h ${
|
|
22
|
+
const p = Math.floor(o / 864e5), d = Math.floor(o % 864e5 / 36e5), i = Math.floor(o % 36e5 / 6e4), h = Math.floor(o % 6e4 / 1e3);
|
|
23
|
+
return `${p}d ${d}h ${i}m ${h}s`;
|
|
24
24
|
}
|
|
25
25
|
if (o >= 36e5) {
|
|
26
|
-
const p = Math.floor(o / 36e5), d = Math.floor(o % 36e5 / 6e4),
|
|
27
|
-
return `${p}h ${d}m ${
|
|
26
|
+
const p = Math.floor(o / 36e5), d = Math.floor(o % 36e5 / 6e4), i = Math.floor(o % 6e4 / 1e3);
|
|
27
|
+
return `${p}h ${d}m ${i}s`;
|
|
28
28
|
}
|
|
29
29
|
if (o >= 6e4) {
|
|
30
30
|
const p = Math.floor(o / 6e4), d = Math.floor(o % 6e4 / 1e3);
|
|
31
31
|
return `${p}m ${d}s`;
|
|
32
32
|
}
|
|
33
33
|
return o >= 1e3 ? `${(o / 1e3).toFixed(2)}s` : `${o}ms`;
|
|
34
|
-
}, eo = ({ children: e, withLink: o, linkTo: p, rowData: d, disableRowClick:
|
|
34
|
+
}, eo = ({ children: e, withLink: o, linkTo: p, rowData: d, disableRowClick: i }) => o && !i ? /* @__PURE__ */ t(Ge, { to: p?.(d?.id, d) || "", children: e }) : e, oo = ({
|
|
35
35
|
cell: e,
|
|
36
36
|
id: o,
|
|
37
37
|
nextWidthSum: p,
|
|
38
38
|
isLastCell: d,
|
|
39
|
-
rowHovering:
|
|
39
|
+
rowHovering: i,
|
|
40
40
|
index: h,
|
|
41
41
|
isFirstStickyCell: de,
|
|
42
42
|
handleCellClick: fe,
|
|
@@ -61,7 +61,7 @@ const me = (e) => {
|
|
|
61
61
|
isLoading: V,
|
|
62
62
|
is_incomplete: ee,
|
|
63
63
|
pendingEdit: a,
|
|
64
|
-
hasPendingEdit:
|
|
64
|
+
hasPendingEdit: u,
|
|
65
65
|
pendingValidationError: ke
|
|
66
66
|
}) => {
|
|
67
67
|
const {
|
|
@@ -80,26 +80,26 @@ const me = (e) => {
|
|
|
80
80
|
selectedRowId: K
|
|
81
81
|
} = Be(He), Le = K != null && String(K) === String(o), $e = We(), j = (e?.column?.key ? e?.row?.original?.__cellMetadata?.[e.column.key] : void 0)?.is_locked ?? e?.column?.is_locked, W = (e?.column?.key ? Ne?.[o]?.[e.column.key]?.validationError : null) || ke || null, re = k === e.column.key && e?.column?.canEdit && !j && !e?.column?.is_disabled, Me = _e === `${o}-${e?.column?.id}`, { theme: Se } = Ke(), De = Se === "dark", Oe = M(() => O(o), [O, o]), Ve = M(() => O(null), [O]), g = $e?.formatDuration, [n, f] = S(
|
|
82
82
|
e?.column?.dataType === "duration" && e?.value ? g ? g(e.value) : me(e.value) : e.value
|
|
83
|
-
), [w, ae] = S(null), [U, Re] = S(!1), [Ie, ne] = S(!1), [ze, se] = S(!1), _ = X(null), N = X(), L = X(), { selectedColumnIds:
|
|
83
|
+
), [w, ae] = S(null), [U, Re] = S(!1), [Ie, ne] = S(!1), [ze, se] = S(!1), _ = X(null), N = X(), L = X(), { selectedColumnIds: ie = [] } = ge || {}, ue = !Object.prototype.hasOwnProperty.call(e?.column?.meta ?? {}, "shouldHighlight") || e?.column?.meta?.shouldHighlight, le = M(() => {
|
|
84
84
|
_.current && Re(_.current.scrollWidth > _.current.clientWidth);
|
|
85
85
|
}, []), Y = M((r) => {
|
|
86
86
|
N.current && clearTimeout(N.current), r ? ne(!0) : N.current = setTimeout(() => ne(!1), 200);
|
|
87
87
|
}, []), B = M((r) => {
|
|
88
88
|
L.current && clearTimeout(L.current), r ? se(!0) : L.current = setTimeout(() => se(!1), 200);
|
|
89
89
|
}, []), T = x({
|
|
90
|
-
"bg-amber-100 dark:bg-amber-900/30":
|
|
91
|
-
"bg-neutral-100 dark:bg-black-600":
|
|
92
|
-
"bg-error-200 dark:bg-error-900":
|
|
93
|
-
"bg-success-100 dark:bg-success-800":
|
|
94
|
-
"bg-warning-100 dark:bg-warning-950":
|
|
90
|
+
"bg-amber-100 dark:bg-amber-900/30": u,
|
|
91
|
+
"bg-neutral-100 dark:bg-black-600": i === o && !l && !u && !(R || y?.is_deleted) && !(I || y?.is_added),
|
|
92
|
+
"bg-error-200 dark:bg-error-900": i === o && !l && !u && (R || y?.is_deleted),
|
|
93
|
+
"bg-success-100 dark:bg-success-800": i === o && !l && !u && (I || y?.is_added),
|
|
94
|
+
"bg-warning-100 dark:bg-warning-950": i === o && !l && !u && (ee || Z || P || y?.is_row_modified),
|
|
95
95
|
// 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,
|
|
96
|
-
"bg-warning-50 dark:bg-orange-900": (ee || Z || P || y?.is_row_modified) && !V &&
|
|
97
|
-
"bg-error-100 dark:bg-error-975": (R || y?.is_deleted) && !V &&
|
|
98
|
-
"bg-success-50 dark:bg-success-900": (I || y?.is_added) && !V &&
|
|
99
|
-
"bg-primary-50 dark:bg-primary-900": (ve || l) && !
|
|
100
|
-
"bg-primary-50 dark:bg-primary-800":
|
|
101
|
-
"bg-primary-100 dark:bg-primary-950": Le &&
|
|
102
|
-
[je[e?.row?.original?.__rowBgStatus]]: e?.row?.original?.__rowBgStatus && !l && !
|
|
96
|
+
"bg-warning-50 dark:bg-orange-900": (ee || Z || P || y?.is_row_modified) && !V && i !== o && !l && !u,
|
|
97
|
+
"bg-error-100 dark:bg-error-975": (R || y?.is_deleted) && !V && i !== o && !l && !u,
|
|
98
|
+
"bg-success-50 dark:bg-success-900": (I || y?.is_added) && !V && i !== o && !l && !u,
|
|
99
|
+
"bg-primary-50 dark:bg-primary-900": (ve || l) && !u,
|
|
100
|
+
"bg-primary-50 dark:bg-primary-800": ie?.includes(e.column.id) && !l && !u,
|
|
101
|
+
"bg-primary-100 dark:bg-primary-950": Le && i !== o && !l && !u && !V,
|
|
102
|
+
[je[e?.row?.original?.__rowBgStatus]]: e?.row?.original?.__rowBgStatus && !l && !u
|
|
103
103
|
}), Ae = (r) => {
|
|
104
104
|
e.column?.disableRowClick || fe(r);
|
|
105
105
|
};
|
|
@@ -183,7 +183,7 @@ const me = (e) => {
|
|
|
183
183
|
children: /* @__PURE__ */ $(
|
|
184
184
|
"div",
|
|
185
185
|
{
|
|
186
|
-
className: x(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${T || "bg-white dark:bg-black-800"}`, c ? "overflow-x-hidden overflow-y-visible" : "overflow-x-hidden", { "border border-b-0 border-t-0 border-primary-600 dark:border-blue-800":
|
|
186
|
+
className: x(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${T || "bg-white dark:bg-black-800"}`, c ? "overflow-x-hidden overflow-y-visible" : "overflow-x-hidden", { "border border-b-0 border-t-0 border-primary-600 dark:border-blue-800": ie?.includes(e.column.id) }),
|
|
187
187
|
style: e?.column?.sticky && de ? { boxShadow: De ? Je : Qe } : {},
|
|
188
188
|
children: [
|
|
189
189
|
oe?.isCascading && !xe && h === 0 && /* @__PURE__ */ t("div", { className: x("w-[22px] h-row flex items-center px-4", `${T || "bg-white dark:bg-black-800"}`), id: "cascading", children: Te > b && (e?.row?.original?.__has_children || oe?.showAllDropdown) && /* @__PURE__ */ t("div", { children: be ? /* @__PURE__ */ t(J, { className: "text-neutral-600 dark:text-white", size: 8 }) : /* @__PURE__ */ t("div", { children: Ce?.[o]?.isOpen ? /* @__PURE__ */ t(Ze, { size: 20, className: "text-neutral-400 dark:text-neutral-400", onClick: (r) => {
|
|
@@ -203,7 +203,7 @@ const me = (e) => {
|
|
|
203
203
|
open: Ie,
|
|
204
204
|
onOpenChange: Y,
|
|
205
205
|
className: "block w-full min-w-0 overflow-hidden",
|
|
206
|
-
children: /* @__PURE__ */ t("div", { className: "w-full h-
|
|
206
|
+
children: /* @__PURE__ */ t("div", { className: "w-full h-row flex items-center px-4 min-w-0 overflow-hidden text-primary-400", children: /* @__PURE__ */ t("span", { ref: _, onMouseEnter: le, className: "truncate w-full", children: D && ue && !C.isValidElement(n) && typeof n != "object" ? D(n) : n }) })
|
|
207
207
|
}
|
|
208
208
|
) : /* @__PURE__ */ t(
|
|
209
209
|
H,
|
|
@@ -223,13 +223,13 @@ const me = (e) => {
|
|
|
223
223
|
open: U && !w && !c ? ze : void 0,
|
|
224
224
|
onOpenChange: U && !w && !c ? B : void 0,
|
|
225
225
|
className: x("block w-full min-w-0", c ? "overflow-x-hidden overflow-y-visible" : "overflow-hidden"),
|
|
226
|
-
children: /* @__PURE__ */ t("div", { className: x("w-full h-
|
|
226
|
+
children: /* @__PURE__ */ t("div", { className: x("w-full h-row flex items-center px-4 min-w-0", c ? "overflow-x-hidden overflow-y-visible" : "overflow-hidden"), children: /* @__PURE__ */ t(
|
|
227
227
|
"span",
|
|
228
228
|
{
|
|
229
229
|
ref: c ? void 0 : _,
|
|
230
230
|
onMouseEnter: c ? void 0 : le,
|
|
231
231
|
className: x(c ? "flex min-w-0 max-w-full items-center justify-start gap-1" : "truncate w-full"),
|
|
232
|
-
children: D &&
|
|
232
|
+
children: D && ue && !C.isValidElement(n) && typeof n != "object" ? D(n) : C.isValidElement(n) ? typeof n.type == "string" ? n : C.cloneElement(n, {
|
|
233
233
|
...n.props,
|
|
234
234
|
containerWidth: e.column.width
|
|
235
235
|
}) : n
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/DataCell.tsx"],"sourcesContent":["import { useTheme } from '../../../../../hooks/useTheme';\nimport { formatCurrency } from '../../../../../utils/formatters';\nimport { formatDate } from '../../../../../utils/formatters';\nimport { getTableRowBgClassNamesByStatus } from '../../../../../constants/table';\nimport type { ICell, IPendingEdit, ValidateAndSaveResult } from '../../types';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport Tooltip from '../../../../tooltip/Tooltip';\nimport { Typography } from '../../../../data-display/typography/Typography';\nimport { KeyboardArrowDownIcon, KeyboardArrowRightFilledIcon, LinkIcon, LoadingSpinnerIcon } from '../../../../icon';\nimport { OpenInNewRounded } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { TableContext } from '../../context';\nimport { InlineEditField } from './InlineEditField';\nimport { CELL_DEFAULT_RIGHT_OFFSET, CELL_INDENT_PER_LEVEL_PX, CELL_STICKY_SHADOW_DARK, CELL_STICKY_SHADOW_LIGHT } from '../../constants';\n\ntype CellProps = {\n cell: ICell;\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n handleCellClick: (e?: React.MouseEvent) => void | null;\n currentData: { is_row_modified?: boolean; is_deleted?: boolean; is_added?: boolean };\n highlightSubstring?: (value: string) => JSX.Element;\n is_read: boolean;\n is_modified: boolean;\n is_row_modified: boolean;\n is_deleted: boolean;\n is_added: boolean;\n level: number;\n inlineEditing: string | null;\n isInlineEditing?: boolean;\n setRowHovering: (id: string | number | null) => void;\n handleCellValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n cellRef: React.RefObject<HTMLDivElement>;\n handleUpdateCellData: (directValue?: string | boolean | null, meta?: { currency_code?: string | null; reference?: unknown | null;[key: string]: unknown | null } | null) => void;\n registerValidation?: (validateFn: () => ValidateAndSaveResult) => void;\n loadingExpand: boolean;\n toggleRowExpand: () => void;\n isDraggingOver?: boolean;\n isLoading?: boolean;\n is_incomplete?: boolean;\n pendingEdit?: IPendingEdit;\n hasPendingEdit?: boolean;\n pendingValidationError?: string | null;\n};\n\nlet interval: ReturnType<typeof setInterval> | undefined;\n\nconst formatDurationFallback = (duration: unknown): string => {\n const durationInMs = Number(duration);\n\n if (Number.isNaN(durationInMs) || duration === null || duration === undefined) {\n return '0ms';\n }\n\n if (durationInMs >= 86400000) {\n const days = Math.floor(durationInMs / 86400000);\n const hours = Math.floor((durationInMs % 86400000) / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${days}d ${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 3600000) {\n const hours = Math.floor(durationInMs / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 60000) {\n const minutes = Math.floor(durationInMs / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 1000) {\n return `${(durationInMs / 1000).toFixed(2)}s`;\n }\n\n return `${durationInMs}ms`;\n};\n\nconst CellWrapper = ({ children, withLink, linkTo, rowData, disableRowClick }: { children: React.ReactNode; withLink?: boolean; linkTo?: (id: string, _rowData?: Record<string, unknown>) => string; rowData?: Record<string, unknown>; disableRowClick?: boolean }) => {\n return withLink && !disableRowClick ? <Link to={linkTo?.(rowData?.id as string, rowData) || ''}>{children}</Link> : children;\n};\n\nconst DataCellInner: React.FC<CellProps> = ({\n cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell, handleCellClick, currentData, highlightSubstring,\n is_read, is_modified, is_row_modified, is_deleted, is_added, level, inlineEditing, isInlineEditing, setRowHovering,\n handleCellValueChange, cellRef, handleUpdateCellData, registerValidation, loadingExpand, toggleRowExpand,\n isDraggingOver, isLoading, is_incomplete, pendingEdit, hasPendingEdit, pendingValidationError,\n}) => {\n const {\n cascadingTableConfig, originalsOnly, maxLevel, showNewItem, expandedRows, rowLinkConfig, multiSelectConfig,\n cellEditing, cellEditingValue, allowInlineEdit, fieldOperationLoading, pendingEdits: contextPendingEdits,\n selectedRowId,\n } = useContext(TableContext);\n\n const isSelectedRow =\n selectedRowId !== null && selectedRowId !== undefined && String(selectedRowId) === String(id);\n\n const tableConfig = useTableConfig();\n\n const rowCellMeta = cell?.column?.key ? (cell?.row?.original?.__cellMetadata as Record<string, Record<string, unknown>> | undefined)?.[cell.column.key] : undefined;\n const isLocked = rowCellMeta?.is_locked ?? cell?.column?.is_locked;\n const cellValidationError = (cell?.column?.key ? contextPendingEdits?.[id]?.[cell.column.key]?.validationError : null) || pendingValidationError || null;\n const isActuallyInlineEditing = inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled;\n const isFieldOperationLoading = fieldOperationLoading === `${id}-${cell?.column?.id}`;\n const { theme } = useTheme();\n const isDark = theme === 'dark';\n const onMouseEnter = useCallback(() => setRowHovering(id), [setRowHovering, id]);\n const onMouseLeave = useCallback(() => setRowHovering(null), [setRowHovering]);\n\n const getNodeExecutionDuration = tableConfig?.formatDuration;\n const [cellValue, setCellValue] = useState(\n cell?.column?.dataType === 'duration' && cell?.value\n ? getNodeExecutionDuration\n ? getNodeExecutionDuration(cell.value)\n : formatDurationFallback(cell.value)\n : cell.value,\n );\n const [tooltipText, setTooltipText] = useState<string | null>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [urlTooltipOpen, setUrlTooltipOpen] = useState(false);\n const [truncateTooltipOpen, setTruncateTooltipOpen] = useState(false);\n const textRef = useRef<HTMLSpanElement>(null);\n const urlTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const truncateTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const { selectedColumnIds = [] } = multiSelectConfig || {};\n const shouldHighlight = !Object.prototype.hasOwnProperty.call(cell?.column?.meta ?? {}, 'shouldHighlight') || cell?.column?.meta?.shouldHighlight;\n\n const checkTruncation = useCallback(() => {\n if (textRef.current) {\n setIsTruncated(textRef.current.scrollWidth > textRef.current.clientWidth);\n }\n }, []);\n\n const handleUrlTooltipChange = useCallback((open: boolean) => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n\n if (open) {\n setUrlTooltipOpen(true);\n } else {\n urlTooltipTimer.current = setTimeout(() => setUrlTooltipOpen(false), 200);\n }\n }, []);\n\n const handleTruncateTooltipChange = useCallback((open: boolean) => {\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n\n if (open) {\n setTruncateTooltipOpen(true);\n } else {\n truncateTooltipTimer.current = setTimeout(() => setTruncateTooltipOpen(false), 200);\n }\n }, []);\n\n const bgColor = cn({\n 'bg-amber-100 dark:bg-amber-900/30': hasPendingEdit,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !hasPendingEdit && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_added || currentData?.is_added),\n 'bg-warning-100 dark:bg-warning-950': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified),\n // 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-orange-900': (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-900': (isDraggingOver || isInlineEditing) && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-800': selectedColumnIds?.includes(cell.column.id) && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-100 dark:bg-primary-950': isSelectedRow && rowHovering !== id && !isInlineEditing && !hasPendingEdit && !isLoading,\n [getTableRowBgClassNamesByStatus[cell?.row?.original?.__rowBgStatus as string]]: cell?.row?.original?.__rowBgStatus && !isInlineEditing && !hasPendingEdit,\n });\n\n const onClick = (e: React.MouseEvent) => { if (cell.column?.disableRowClick) return; handleCellClick(e); };\n\n useEffect(() => {\n const isRunning = cell?.row?.original?.status === 'running';\n if (isRunning && cell.column?.dataType === 'duration') {\n interval = setInterval(() => {\n const startedTime = new Date(formatDate((cell?.row?.original?.created_at || cell?.row?.original?.executed_on) as string | undefined, { withTime: true, format: 'yyyy-MM-dd HH:mm:ss' }) as unknown as Date);\n const timeDiff = Math.abs(new Date().getTime() - new Date(startedTime).getTime());\n setCellValue(getNodeExecutionDuration ? getNodeExecutionDuration(timeDiff) : formatDurationFallback(timeDiff));\n }, 500);\n }\n return () => { if (interval) clearInterval(interval); };\n }, [cellValue, cell.value, cell?.row?.original?.created_at, cell?.row?.original?.executed_on, cell?.row?.original?.status, cell.column?.dataType, getNodeExecutionDuration]);\n\n useEffect(() => {\n if (cell?.column?.tooltipCellKey || cell?.column?.type?.toLowerCase() === 'url') {\n if (cell?.column?.type?.toLowerCase() === 'url') setTooltipText(cell?.value as string | null);\n else setTooltipText(cell?.row?.original?.[String(cell?.column?.tooltipCellKey)] as string | null);\n }\n }, [cell?.column?.tooltipCellKey, cell?.row?.original, cell?.column?.type, cell?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'currency') {\n if (pendingEdit?.value !== undefined) {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n const currencyCode = pendingEdit?.meta?.currency_code || rawData?.[headerKey]?.currency_code || 'USD';\n setCellValue(formatCurrency(pendingEdit.value, currencyCode as string));\n } else {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n setCellValue(formatCurrency(cell?.value, (rawData?.[headerKey]?.currency_code as string) || 'USD'));\n }\n }\n }, [cell?.value, cell?.column?.type, cell?.column?.Header, cell?.row?.original?.__rawData, pendingEdit?.value, pendingEdit?.meta?.currency_code]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'percentage') {\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value?.toString() + '%' || '');\n else setCellValue(cell?.value?.toString() + '%' || '');\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['date', 'datetime'].includes(columnType)) {\n if (pendingEdit?.value !== undefined) {\n const hasTime = columnType === 'datetime';\n const formattedValue = formatDate(pendingEdit.value as string, { withTime: hasTime, skipTimezone: true });\n setCellValue(formattedValue || pendingEdit.value);\n } else setCellValue(cell.value);\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['currency', 'percentage', 'duration', 'boolean', 'date', 'datetime'].includes(columnType)) return;\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value);\n else if (cell?.column?.dataType !== 'duration') setCellValue(cell.value);\n }, [cell?.value, cell?.column?.type, cell?.column?.dataType, pendingEdit?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'boolean' && allowInlineEdit) {\n const rawValue = pendingEdit?.value !== undefined ? pendingEdit.value : cell?.value;\n const booleanValue = rawValue === true || rawValue === 'true' || rawValue === 'True' || rawValue === 'Yes' || rawValue === 1;\n setCellValue(booleanValue ? 'Yes' : 'No');\n }\n }, [cell?.value, cell?.column?.type, allowInlineEdit, pendingEdit?.value]);\n\n useEffect(() => {\n return () => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n };\n }, []);\n\n const isUiElementCell = React.isValidElement(cellValue);\n\n return (\n <td\n key={index} id={cell.value as string | undefined} data-column-key={cell?.column?.key} {...cell.getCellProps()}\n onClick={rowLinkConfig?.isEnabled ? undefined : onClick}\n className={cn('h-row', {\n 'sticky left-0': cell?.column?.sticky,\n relative: !cell?.column?.sticky,\n 'w-full': isLastCell,\n 'overflow-visible': inlineEditing === cell.column.key,\n /** Chips/badges: avoid vertical clip from overflow-x-hidden + truncate (see isUiElementCell branch below) */\n 'overflow-x-hidden overflow-y-visible': inlineEditing !== cell.column.key && isUiElementCell,\n 'overflow-hidden': inlineEditing !== cell.column.key && !isUiElementCell,\n },\n cellValidationError && !isActuallyInlineEditing ? 'outline outline-2 outline-error-500 -outline-offset-2 z-[5]' : '',\n `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`,\n )}\n style={{ minWidth: `${cell.column.width}px`, maxWidth: `${cell.column.width}px`, right: cell?.column?.sticky ? `${nextWidthSum}px` : CELL_DEFAULT_RIGHT_OFFSET, paddingLeft: level > 0 && index === 0 ? `${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined }}\n onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}\n >\n <CellWrapper withLink={rowLinkConfig?.isEnabled} linkTo={rowLinkConfig?.linkTo || undefined} rowData={cell?.row?.original} disableRowClick={cell?.column?.disableRowClick}>\n {(Array.isArray(cellEditing) ? cellEditing.includes(`${id}-${cell?.column?.id}`) : cellEditing === `${id}-${cell?.column?.id}`) ? (\n <div className='h-row top-0 font-medium font-inter w-full absolute flex items-center px-4'>\n <span className='text-neutral-400 dark:text-black-400 truncate'>\n {(() => {\n const currentCellId = `${id}-${cell?.column?.id}`;\n const editValue = typeof cellEditingValue === 'object' ? cellEditingValue?.[currentCellId] : cellEditingValue;\n const columnType = cell?.column?.type?.toLowerCase();\n\n if (columnType === 'boolean') {\n return (editValue as unknown) === true || editValue === 'true' || editValue === 'True' ? 'Yes' : 'No';\n }\n\n if ((columnType === 'date' || columnType === 'datetime') && editValue) {\n const hasTime = columnType === 'datetime';\n return formatDate(editValue as string, { withTime: hasTime, skipTimezone: true }) || String(editValue);\n }\n\n return editValue !== undefined && editValue !== null ? String(editValue) : (cellValue as React.ReactNode);\n })()}\n </span>\n <div className='ml-2 flex items-center gap-1.5'><LoadingSpinnerIcon className='spinner text-neutral-600 dark:text-white' size={12} /></div>\n </div>\n ) : inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled ? (\n <div className='h-row w-full absolute top-0 left-0 flex items-center' style={{ marginLeft: level > 0 && index === 0 ? `-${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined, width: level > 0 && index === 0 ? `calc(100% + ${level * CELL_INDENT_PER_LEVEL_PX}px)` : '100%' }}>\n <InlineEditField cell={cell} id={id} inlineEditing={inlineEditing} cellRef={cellRef} handleCellValueChange={handleCellValueChange} handleUpdateCellData={handleUpdateCellData} registerValidation={registerValidation} />\n </div>\n ) : (\n <>\n {level > 0 && index === 0 && <div className='h-row border-l border-neutral-300 dark:border-black-600 ml-2' />}\n <div className='min-h-6'>\n <Tooltip\n title={tooltipText && cell?.column?.type?.toLowerCase() !== 'url' ? tooltipText : undefined}\n hideTooltip={!tooltipText || cell?.column?.type?.toLowerCase() === 'url'}\n delayShow\n placement='top'\n >\n <div className={cn(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`, isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-x-hidden', { 'border border-b-0 border-t-0 border-primary-600 dark:border-blue-800': selectedColumnIds?.includes(cell.column.id) })}\n style={cell?.column?.sticky && isFirstStickyCell ? { boxShadow: isDark ? CELL_STICKY_SHADOW_DARK : CELL_STICKY_SHADOW_LIGHT } : {}}>\n {cascadingTableConfig?.isCascading && !originalsOnly && index === 0 && (\n <div className={cn('w-[22px] h-row flex items-center px-4', `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`)} id='cascading'>\n {maxLevel! > level && (cell?.row?.original?.__has_children || cascadingTableConfig?.showAllDropdown) && (\n <div>{loadingExpand ? <LoadingSpinnerIcon className='text-neutral-600 dark:text-white' size={8} /> : <div>{expandedRows?.[id]?.isOpen ? <KeyboardArrowDownIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} /> : <KeyboardArrowRightFilledIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} />}</div>}</div>\n )}\n </div>\n )}\n\n {cell?.column?.type?.toLowerCase() === 'url' && tooltipText ? (\n <Tooltip\n title={(\n <div onMouseEnter={() => handleUrlTooltipChange(true)} onMouseLeave={() => handleUrlTooltipChange(false)}>\n <a href={tooltipText} target='_blank' rel='noopener noreferrer' onClick={(e) => e.stopPropagation()}>\n <div className='flex gap-1 items-center w-full'>\n <div className='w-4 h-4'>\n <LinkIcon height={16} width={16} />\n </div>\n <Typography variant='medium' size='small' className='truncate' appearance='custom'>{tooltipText}</Typography>\n <OpenInNewRounded sx={{ height: '16px', width: '16px', color: '#016DCF' }} />\n </div>\n </a>\n </div>\n )}\n placement='top'\n open={urlTooltipOpen}\n onOpenChange={handleUrlTooltipChange}\n className='block w-full min-w-0 overflow-hidden'\n >\n <div className='w-full h-full flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} onMouseEnter={checkTruncation} className='truncate w-full'>\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n ) : (\n <Tooltip\n title={\n isTruncated && cellValue && !isUiElementCell ? (\n <div\n onMouseEnter={() => handleTruncateTooltipChange(true)}\n onMouseLeave={() => handleTruncateTooltipChange(false)}\n className='max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll'\n >\n {String(cellValue)}\n </div>\n ) : undefined\n }\n placement='top'\n delayShow\n hideTooltip={!!tooltipText}\n open={isTruncated && !tooltipText && !isUiElementCell ? truncateTooltipOpen : undefined}\n onOpenChange={isTruncated && !tooltipText && !isUiElementCell ? handleTruncateTooltipChange : undefined}\n className={cn('block w-full min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}\n >\n <div className={cn('w-full h-full flex items-center px-4 min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}>\n <span\n ref={isUiElementCell ? undefined : textRef}\n onMouseEnter={isUiElementCell ? undefined : checkTruncation}\n className={cn(isUiElementCell ? 'flex min-w-0 max-w-full items-center justify-start gap-1' : 'truncate w-full')}\n >\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : React.isValidElement(cellValue)\n ? (typeof (cellValue as React.ReactElement<Record<string, unknown>>).type === 'string'\n ? cellValue\n : React.cloneElement(cellValue as React.ReactElement<Record<string, unknown>>, {\n ...((cellValue as React.ReactElement<Record<string, unknown>>).props as Record<string, unknown>),\n containerWidth: cell.column.width,\n }))\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n )}\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </CellWrapper>\n {cellValidationError && !isActuallyInlineEditing && (\n <div className='absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]'>\n <div className='w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate'><span className='text-error-600 text-2xs font-medium leading-none'>{cellValidationError}</span></div>\n </div>\n )}\n {isFieldOperationLoading && !(inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled) && (\n <div className='absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10'>\n <LoadingSpinnerIcon className='text-primary-600 dark:text-white' size={8} />\n </div>\n )}\n </td>\n );\n};\n\nexport const DataCell = React.memo(DataCellInner);\n"],"names":["interval","formatDurationFallback","duration","durationInMs","days","hours","minutes","seconds","CellWrapper","children","withLink","linkTo","rowData","disableRowClick","jsx","Link","DataCellInner","cell","id","nextWidthSum","isLastCell","rowHovering","index","isFirstStickyCell","handleCellClick","currentData","highlightSubstring","is_read","is_modified","is_row_modified","is_deleted","is_added","level","inlineEditing","isInlineEditing","setRowHovering","handleCellValueChange","cellRef","handleUpdateCellData","registerValidation","loadingExpand","toggleRowExpand","isDraggingOver","isLoading","is_incomplete","pendingEdit","hasPendingEdit","pendingValidationError","cascadingTableConfig","originalsOnly","maxLevel","showNewItem","expandedRows","rowLinkConfig","multiSelectConfig","cellEditing","cellEditingValue","allowInlineEdit","fieldOperationLoading","contextPendingEdits","selectedRowId","useContext","TableContext","isSelectedRow","tableConfig","useTableConfig","isLocked","cellValidationError","isActuallyInlineEditing","isFieldOperationLoading","theme","useTheme","isDark","onMouseEnter","useCallback","onMouseLeave","getNodeExecutionDuration","cellValue","setCellValue","useState","tooltipText","setTooltipText","isTruncated","setIsTruncated","urlTooltipOpen","setUrlTooltipOpen","truncateTooltipOpen","setTruncateTooltipOpen","textRef","useRef","urlTooltipTimer","truncateTooltipTimer","selectedColumnIds","shouldHighlight","checkTruncation","handleUrlTooltipChange","open","handleTruncateTooltipChange","bgColor","cn","getTableRowBgClassNamesByStatus","onClick","e","useEffect","startedTime","formatDate","timeDiff","rawData","headerKey","currencyCode","formatCurrency","columnType","hasTime","formattedValue","rawValue","isUiElementCell","React","jsxs","CELL_DEFAULT_RIGHT_OFFSET","CELL_INDENT_PER_LEVEL_PX","currentCellId","editValue","LoadingSpinnerIcon","InlineEditField","Fragment","Tooltip","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","KeyboardArrowDownIcon","KeyboardArrowRightFilledIcon","LinkIcon","Typography","OpenInNewRounded","DataCell"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataCell.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/DataCell.tsx"],"sourcesContent":["import { useTheme } from '../../../../../hooks/useTheme';\nimport { formatCurrency } from '../../../../../utils/formatters';\nimport { formatDate } from '../../../../../utils/formatters';\nimport { getTableRowBgClassNamesByStatus } from '../../../../../constants/table';\nimport type { ICell, IPendingEdit, ValidateAndSaveResult } from '../../types';\nimport { useTableConfig } from '../../../../../providers/design-system-provider/hooks';\nimport Tooltip from '../../../../tooltip/Tooltip';\nimport { Typography } from '../../../../data-display/typography/Typography';\nimport { KeyboardArrowDownIcon, KeyboardArrowRightFilledIcon, LinkIcon, LoadingSpinnerIcon } from '../../../../icon';\nimport { OpenInNewRounded } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { TableContext } from '../../context';\nimport { InlineEditField } from './InlineEditField';\nimport { CELL_DEFAULT_RIGHT_OFFSET, CELL_INDENT_PER_LEVEL_PX, CELL_STICKY_SHADOW_DARK, CELL_STICKY_SHADOW_LIGHT } from '../../constants';\n\ntype CellProps = {\n cell: ICell;\n id: string | number;\n nextWidthSum: number;\n isLastCell: boolean;\n rowHovering: string | number | null;\n index: number;\n isFirstStickyCell: boolean;\n handleCellClick: (e?: React.MouseEvent) => void | null;\n currentData: { is_row_modified?: boolean; is_deleted?: boolean; is_added?: boolean };\n highlightSubstring?: (value: string) => JSX.Element;\n is_read: boolean;\n is_modified: boolean;\n is_row_modified: boolean;\n is_deleted: boolean;\n is_added: boolean;\n level: number;\n inlineEditing: string | null;\n isInlineEditing?: boolean;\n setRowHovering: (id: string | number | null) => void;\n handleCellValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n cellRef: React.RefObject<HTMLDivElement>;\n handleUpdateCellData: (directValue?: string | boolean | null, meta?: { currency_code?: string | null; reference?: unknown | null;[key: string]: unknown | null } | null) => void;\n registerValidation?: (validateFn: () => ValidateAndSaveResult) => void;\n loadingExpand: boolean;\n toggleRowExpand: () => void;\n isDraggingOver?: boolean;\n isLoading?: boolean;\n is_incomplete?: boolean;\n pendingEdit?: IPendingEdit;\n hasPendingEdit?: boolean;\n pendingValidationError?: string | null;\n};\n\nlet interval: ReturnType<typeof setInterval> | undefined;\n\nconst formatDurationFallback = (duration: unknown): string => {\n const durationInMs = Number(duration);\n\n if (Number.isNaN(durationInMs) || duration === null || duration === undefined) {\n return '0ms';\n }\n\n if (durationInMs >= 86400000) {\n const days = Math.floor(durationInMs / 86400000);\n const hours = Math.floor((durationInMs % 86400000) / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${days}d ${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 3600000) {\n const hours = Math.floor(durationInMs / 3600000);\n const minutes = Math.floor((durationInMs % 3600000) / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${hours}h ${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 60000) {\n const minutes = Math.floor(durationInMs / 60000);\n const seconds = Math.floor((durationInMs % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n }\n\n if (durationInMs >= 1000) {\n return `${(durationInMs / 1000).toFixed(2)}s`;\n }\n\n return `${durationInMs}ms`;\n};\n\nconst CellWrapper = ({ children, withLink, linkTo, rowData, disableRowClick }: { children: React.ReactNode; withLink?: boolean; linkTo?: (id: string, _rowData?: Record<string, unknown>) => string; rowData?: Record<string, unknown>; disableRowClick?: boolean }) => {\n return withLink && !disableRowClick ? <Link to={linkTo?.(rowData?.id as string, rowData) || ''}>{children}</Link> : children;\n};\n\nconst DataCellInner: React.FC<CellProps> = ({\n cell, id, nextWidthSum, isLastCell, rowHovering, index, isFirstStickyCell, handleCellClick, currentData, highlightSubstring,\n is_read, is_modified, is_row_modified, is_deleted, is_added, level, inlineEditing, isInlineEditing, setRowHovering,\n handleCellValueChange, cellRef, handleUpdateCellData, registerValidation, loadingExpand, toggleRowExpand,\n isDraggingOver, isLoading, is_incomplete, pendingEdit, hasPendingEdit, pendingValidationError,\n}) => {\n const {\n cascadingTableConfig, originalsOnly, maxLevel, showNewItem, expandedRows, rowLinkConfig, multiSelectConfig,\n cellEditing, cellEditingValue, allowInlineEdit, fieldOperationLoading, pendingEdits: contextPendingEdits,\n selectedRowId,\n } = useContext(TableContext);\n\n const isSelectedRow =\n selectedRowId !== null && selectedRowId !== undefined && String(selectedRowId) === String(id);\n\n const tableConfig = useTableConfig();\n\n const rowCellMeta = cell?.column?.key ? (cell?.row?.original?.__cellMetadata as Record<string, Record<string, unknown>> | undefined)?.[cell.column.key] : undefined;\n const isLocked = rowCellMeta?.is_locked ?? cell?.column?.is_locked;\n const cellValidationError = (cell?.column?.key ? contextPendingEdits?.[id]?.[cell.column.key]?.validationError : null) || pendingValidationError || null;\n const isActuallyInlineEditing = inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled;\n const isFieldOperationLoading = fieldOperationLoading === `${id}-${cell?.column?.id}`;\n const { theme } = useTheme();\n const isDark = theme === 'dark';\n const onMouseEnter = useCallback(() => setRowHovering(id), [setRowHovering, id]);\n const onMouseLeave = useCallback(() => setRowHovering(null), [setRowHovering]);\n\n const getNodeExecutionDuration = tableConfig?.formatDuration;\n const [cellValue, setCellValue] = useState(\n cell?.column?.dataType === 'duration' && cell?.value\n ? getNodeExecutionDuration\n ? getNodeExecutionDuration(cell.value)\n : formatDurationFallback(cell.value)\n : cell.value,\n );\n const [tooltipText, setTooltipText] = useState<string | null>(null);\n const [isTruncated, setIsTruncated] = useState(false);\n const [urlTooltipOpen, setUrlTooltipOpen] = useState(false);\n const [truncateTooltipOpen, setTruncateTooltipOpen] = useState(false);\n const textRef = useRef<HTMLSpanElement>(null);\n const urlTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const truncateTooltipTimer = useRef<ReturnType<typeof setTimeout>>();\n const { selectedColumnIds = [] } = multiSelectConfig || {};\n const shouldHighlight = !Object.prototype.hasOwnProperty.call(cell?.column?.meta ?? {}, 'shouldHighlight') || cell?.column?.meta?.shouldHighlight;\n\n const checkTruncation = useCallback(() => {\n if (textRef.current) {\n setIsTruncated(textRef.current.scrollWidth > textRef.current.clientWidth);\n }\n }, []);\n\n const handleUrlTooltipChange = useCallback((open: boolean) => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n\n if (open) {\n setUrlTooltipOpen(true);\n } else {\n urlTooltipTimer.current = setTimeout(() => setUrlTooltipOpen(false), 200);\n }\n }, []);\n\n const handleTruncateTooltipChange = useCallback((open: boolean) => {\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n\n if (open) {\n setTruncateTooltipOpen(true);\n } else {\n truncateTooltipTimer.current = setTimeout(() => setTruncateTooltipOpen(false), 200);\n }\n }, []);\n\n const bgColor = cn({\n 'bg-amber-100 dark:bg-amber-900/30': hasPendingEdit,\n 'bg-neutral-100 dark:bg-black-600': rowHovering === id && !isInlineEditing && !hasPendingEdit && !(is_deleted || currentData?.is_deleted) && !(is_added || currentData?.is_added),\n 'bg-error-200 dark:bg-error-900': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_deleted || currentData?.is_deleted),\n 'bg-success-100 dark:bg-success-800': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_added || currentData?.is_added),\n 'bg-warning-100 dark:bg-warning-950': rowHovering === id && !isInlineEditing && !hasPendingEdit && (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified),\n // 'bg-primary-50 dark:bg-black-700': !is_incomplete && !is_read && showNewItem && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-warning-50 dark:bg-orange-900': (is_incomplete || is_modified || is_row_modified || currentData?.is_row_modified) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-error-100 dark:bg-error-975': (is_deleted || currentData?.is_deleted) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-success-50 dark:bg-success-900': (is_added || currentData?.is_added) && !isLoading && rowHovering !== id && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-900': (isDraggingOver || isInlineEditing) && !hasPendingEdit,\n 'bg-primary-50 dark:bg-primary-800': selectedColumnIds?.includes(cell.column.id) && !isInlineEditing && !hasPendingEdit,\n 'bg-primary-100 dark:bg-primary-950': isSelectedRow && rowHovering !== id && !isInlineEditing && !hasPendingEdit && !isLoading,\n [getTableRowBgClassNamesByStatus[cell?.row?.original?.__rowBgStatus as string]]: cell?.row?.original?.__rowBgStatus && !isInlineEditing && !hasPendingEdit,\n });\n\n const onClick = (e: React.MouseEvent) => { if (cell.column?.disableRowClick) return; handleCellClick(e); };\n\n useEffect(() => {\n const isRunning = cell?.row?.original?.status === 'running';\n if (isRunning && cell.column?.dataType === 'duration') {\n interval = setInterval(() => {\n const startedTime = new Date(formatDate((cell?.row?.original?.created_at || cell?.row?.original?.executed_on) as string | undefined, { withTime: true, format: 'yyyy-MM-dd HH:mm:ss' }) as unknown as Date);\n const timeDiff = Math.abs(new Date().getTime() - new Date(startedTime).getTime());\n setCellValue(getNodeExecutionDuration ? getNodeExecutionDuration(timeDiff) : formatDurationFallback(timeDiff));\n }, 500);\n }\n return () => { if (interval) clearInterval(interval); };\n }, [cellValue, cell.value, cell?.row?.original?.created_at, cell?.row?.original?.executed_on, cell?.row?.original?.status, cell.column?.dataType, getNodeExecutionDuration]);\n\n useEffect(() => {\n if (cell?.column?.tooltipCellKey || cell?.column?.type?.toLowerCase() === 'url') {\n if (cell?.column?.type?.toLowerCase() === 'url') setTooltipText(cell?.value as string | null);\n else setTooltipText(cell?.row?.original?.[String(cell?.column?.tooltipCellKey)] as string | null);\n }\n }, [cell?.column?.tooltipCellKey, cell?.row?.original, cell?.column?.type, cell?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'currency') {\n if (pendingEdit?.value !== undefined) {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n const currencyCode = pendingEdit?.meta?.currency_code || rawData?.[headerKey]?.currency_code || 'USD';\n setCellValue(formatCurrency(pendingEdit.value, currencyCode as string));\n } else {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as unknown as string;\n setCellValue(formatCurrency(cell?.value, (rawData?.[headerKey]?.currency_code as string) || 'USD'));\n }\n }\n }, [cell?.value, cell?.column?.type, cell?.column?.Header, cell?.row?.original?.__rawData, pendingEdit?.value, pendingEdit?.meta?.currency_code]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'percentage') {\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value?.toString() + '%' || '');\n else setCellValue(cell?.value?.toString() + '%' || '');\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['date', 'datetime'].includes(columnType)) {\n if (pendingEdit?.value !== undefined) {\n const hasTime = columnType === 'datetime';\n const formattedValue = formatDate(pendingEdit.value as string, { withTime: hasTime, skipTimezone: true });\n setCellValue(formattedValue || pendingEdit.value);\n } else setCellValue(cell.value);\n }\n }, [cell?.value, cell?.column?.type, pendingEdit?.value]);\n\n useEffect(() => {\n const columnType = cell?.column?.type?.toLowerCase() || '';\n if (['currency', 'percentage', 'duration', 'boolean', 'date', 'datetime'].includes(columnType)) return;\n if (pendingEdit?.value !== undefined) setCellValue(pendingEdit.value);\n else if (cell?.column?.dataType !== 'duration') setCellValue(cell.value);\n }, [cell?.value, cell?.column?.type, cell?.column?.dataType, pendingEdit?.value]);\n\n useEffect(() => {\n if (cell?.column?.type?.toLowerCase() === 'boolean' && allowInlineEdit) {\n const rawValue = pendingEdit?.value !== undefined ? pendingEdit.value : cell?.value;\n const booleanValue = rawValue === true || rawValue === 'true' || rawValue === 'True' || rawValue === 'Yes' || rawValue === 1;\n setCellValue(booleanValue ? 'Yes' : 'No');\n }\n }, [cell?.value, cell?.column?.type, allowInlineEdit, pendingEdit?.value]);\n\n useEffect(() => {\n return () => {\n if (urlTooltipTimer.current) {\n clearTimeout(urlTooltipTimer.current);\n }\n if (truncateTooltipTimer.current) {\n clearTimeout(truncateTooltipTimer.current);\n }\n };\n }, []);\n\n const isUiElementCell = React.isValidElement(cellValue);\n\n return (\n <td\n key={index} id={cell.value as string | undefined} data-column-key={cell?.column?.key} {...cell.getCellProps()}\n onClick={rowLinkConfig?.isEnabled ? undefined : onClick}\n className={cn('h-row', {\n 'sticky left-0': cell?.column?.sticky,\n relative: !cell?.column?.sticky,\n 'w-full': isLastCell,\n 'overflow-visible': inlineEditing === cell.column.key,\n /** Chips/badges: avoid vertical clip from overflow-x-hidden + truncate (see isUiElementCell branch below) */\n 'overflow-x-hidden overflow-y-visible': inlineEditing !== cell.column.key && isUiElementCell,\n 'overflow-hidden': inlineEditing !== cell.column.key && !isUiElementCell,\n },\n cellValidationError && !isActuallyInlineEditing ? 'outline outline-2 outline-error-500 -outline-offset-2 z-[5]' : '',\n `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`,\n )}\n style={{ minWidth: `${cell.column.width}px`, maxWidth: `${cell.column.width}px`, right: cell?.column?.sticky ? `${nextWidthSum}px` : CELL_DEFAULT_RIGHT_OFFSET, paddingLeft: level > 0 && index === 0 ? `${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined }}\n onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}\n >\n <CellWrapper withLink={rowLinkConfig?.isEnabled} linkTo={rowLinkConfig?.linkTo || undefined} rowData={cell?.row?.original} disableRowClick={cell?.column?.disableRowClick}>\n {(Array.isArray(cellEditing) ? cellEditing.includes(`${id}-${cell?.column?.id}`) : cellEditing === `${id}-${cell?.column?.id}`) ? (\n <div className='h-row top-0 font-medium font-inter w-full absolute flex items-center px-4'>\n <span className='text-neutral-400 dark:text-black-400 truncate'>\n {(() => {\n const currentCellId = `${id}-${cell?.column?.id}`;\n const editValue = typeof cellEditingValue === 'object' ? cellEditingValue?.[currentCellId] : cellEditingValue;\n const columnType = cell?.column?.type?.toLowerCase();\n\n if (columnType === 'boolean') {\n return (editValue as unknown) === true || editValue === 'true' || editValue === 'True' ? 'Yes' : 'No';\n }\n\n if ((columnType === 'date' || columnType === 'datetime') && editValue) {\n const hasTime = columnType === 'datetime';\n return formatDate(editValue as string, { withTime: hasTime, skipTimezone: true }) || String(editValue);\n }\n\n return editValue !== undefined && editValue !== null ? String(editValue) : (cellValue as React.ReactNode);\n })()}\n </span>\n <div className='ml-2 flex items-center gap-1.5'><LoadingSpinnerIcon className='spinner text-neutral-600 dark:text-white' size={12} /></div>\n </div>\n ) : inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled ? (\n <div className='h-row w-full absolute top-0 left-0 flex items-center' style={{ marginLeft: level > 0 && index === 0 ? `-${level * CELL_INDENT_PER_LEVEL_PX}px` : undefined, width: level > 0 && index === 0 ? `calc(100% + ${level * CELL_INDENT_PER_LEVEL_PX}px)` : '100%' }}>\n <InlineEditField cell={cell} id={id} inlineEditing={inlineEditing} cellRef={cellRef} handleCellValueChange={handleCellValueChange} handleUpdateCellData={handleUpdateCellData} registerValidation={registerValidation} />\n </div>\n ) : (\n <>\n {level > 0 && index === 0 && <div className='h-row border-l border-neutral-300 dark:border-black-600 ml-2' />}\n <div className='min-h-6'>\n <Tooltip\n title={tooltipText && cell?.column?.type?.toLowerCase() !== 'url' ? tooltipText : undefined}\n hideTooltip={!tooltipText || cell?.column?.type?.toLowerCase() === 'url'}\n delayShow\n placement='top'\n >\n <div className={cn(`h-row top-0 font-medium font-inter overflow-index-auto whitespace-nowrap text-ellipsis dark:text-black-200 w-full absolute flex items-center ${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`, isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-x-hidden', { 'border border-b-0 border-t-0 border-primary-600 dark:border-blue-800': selectedColumnIds?.includes(cell.column.id) })}\n style={cell?.column?.sticky && isFirstStickyCell ? { boxShadow: isDark ? CELL_STICKY_SHADOW_DARK : CELL_STICKY_SHADOW_LIGHT } : {}}>\n {cascadingTableConfig?.isCascading && !originalsOnly && index === 0 && (\n <div className={cn('w-[22px] h-row flex items-center px-4', `${bgColor ? bgColor : 'bg-white dark:bg-black-800'}`)} id='cascading'>\n {maxLevel! > level && (cell?.row?.original?.__has_children || cascadingTableConfig?.showAllDropdown) && (\n <div>{loadingExpand ? <LoadingSpinnerIcon className='text-neutral-600 dark:text-white' size={8} /> : <div>{expandedRows?.[id]?.isOpen ? <KeyboardArrowDownIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} /> : <KeyboardArrowRightFilledIcon size={20} className='text-neutral-400 dark:text-neutral-400' onClick={(e) => { toggleRowExpand(); e.stopPropagation(); }} />}</div>}</div>\n )}\n </div>\n )}\n\n {cell?.column?.type?.toLowerCase() === 'url' && tooltipText ? (\n <Tooltip\n title={(\n <div onMouseEnter={() => handleUrlTooltipChange(true)} onMouseLeave={() => handleUrlTooltipChange(false)}>\n <a href={tooltipText} target='_blank' rel='noopener noreferrer' onClick={(e) => e.stopPropagation()}>\n <div className='flex gap-1 items-center w-full'>\n <div className='w-4 h-4'>\n <LinkIcon height={16} width={16} />\n </div>\n <Typography variant='medium' size='small' className='truncate' appearance='custom'>{tooltipText}</Typography>\n <OpenInNewRounded sx={{ height: '16px', width: '16px', color: '#016DCF' }} />\n </div>\n </a>\n </div>\n )}\n placement='top'\n open={urlTooltipOpen}\n onOpenChange={handleUrlTooltipChange}\n className='block w-full min-w-0 overflow-hidden'\n >\n <div className='w-full h-row flex items-center px-4 min-w-0 overflow-hidden text-primary-400'>\n <span ref={textRef} onMouseEnter={checkTruncation} className='truncate w-full'>\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n ) : (\n <Tooltip\n title={\n isTruncated && cellValue && !isUiElementCell ? (\n <div\n onMouseEnter={() => handleTruncateTooltipChange(true)}\n onMouseLeave={() => handleTruncateTooltipChange(false)}\n className='max-h-96 overflow-y-auto whitespace-pre-wrap break-words no-scroll'\n >\n {String(cellValue)}\n </div>\n ) : undefined\n }\n placement='top'\n delayShow\n hideTooltip={!!tooltipText}\n open={isTruncated && !tooltipText && !isUiElementCell ? truncateTooltipOpen : undefined}\n onOpenChange={isTruncated && !tooltipText && !isUiElementCell ? handleTruncateTooltipChange : undefined}\n className={cn('block w-full min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}\n >\n <div className={cn('w-full h-row flex items-center px-4 min-w-0', isUiElementCell ? 'overflow-x-hidden overflow-y-visible' : 'overflow-hidden')}>\n <span\n ref={isUiElementCell ? undefined : textRef}\n onMouseEnter={isUiElementCell ? undefined : checkTruncation}\n className={cn(isUiElementCell ? 'flex min-w-0 max-w-full items-center justify-start gap-1' : 'truncate w-full')}\n >\n {highlightSubstring && shouldHighlight && !React.isValidElement(cellValue) && typeof cellValue !== 'object'\n ? highlightSubstring(cellValue as string)\n : React.isValidElement(cellValue)\n ? (typeof (cellValue as React.ReactElement<Record<string, unknown>>).type === 'string'\n ? cellValue\n : React.cloneElement(cellValue as React.ReactElement<Record<string, unknown>>, {\n ...((cellValue as React.ReactElement<Record<string, unknown>>).props as Record<string, unknown>),\n containerWidth: cell.column.width,\n }))\n : cellValue as React.ReactNode}\n </span>\n </div>\n </Tooltip>\n )}\n </div>\n </Tooltip>\n </div>\n </>\n )}\n </CellWrapper>\n {cellValidationError && !isActuallyInlineEditing && (\n <div className='absolute bottom-0 left-0 right-0 h-row flex items-end pointer-events-none z-[5]'>\n <div className='w-full bg-error-50 dark:bg-error-975 px-1.5 py-0.5 truncate'><span className='text-error-600 text-2xs font-medium leading-none'>{cellValidationError}</span></div>\n </div>\n )}\n {isFieldOperationLoading && !(inlineEditing === cell.column.key && cell?.column?.canEdit && !isLocked && !cell?.column?.is_disabled) && (\n <div className='absolute top-0 right-0 bg-white dark:bg-black-800 rounded-full w-5 h-5 flex items-center justify-center border border-primary-300 dark:border-primary-600 shadow-sm z-10'>\n <LoadingSpinnerIcon className='text-primary-600 dark:text-white' size={8} />\n </div>\n )}\n </td>\n );\n};\n\nexport const DataCell = React.memo(DataCellInner);\n"],"names":["interval","formatDurationFallback","duration","durationInMs","days","hours","minutes","seconds","CellWrapper","children","withLink","linkTo","rowData","disableRowClick","jsx","Link","DataCellInner","cell","id","nextWidthSum","isLastCell","rowHovering","index","isFirstStickyCell","handleCellClick","currentData","highlightSubstring","is_read","is_modified","is_row_modified","is_deleted","is_added","level","inlineEditing","isInlineEditing","setRowHovering","handleCellValueChange","cellRef","handleUpdateCellData","registerValidation","loadingExpand","toggleRowExpand","isDraggingOver","isLoading","is_incomplete","pendingEdit","hasPendingEdit","pendingValidationError","cascadingTableConfig","originalsOnly","maxLevel","showNewItem","expandedRows","rowLinkConfig","multiSelectConfig","cellEditing","cellEditingValue","allowInlineEdit","fieldOperationLoading","contextPendingEdits","selectedRowId","useContext","TableContext","isSelectedRow","tableConfig","useTableConfig","isLocked","cellValidationError","isActuallyInlineEditing","isFieldOperationLoading","theme","useTheme","isDark","onMouseEnter","useCallback","onMouseLeave","getNodeExecutionDuration","cellValue","setCellValue","useState","tooltipText","setTooltipText","isTruncated","setIsTruncated","urlTooltipOpen","setUrlTooltipOpen","truncateTooltipOpen","setTruncateTooltipOpen","textRef","useRef","urlTooltipTimer","truncateTooltipTimer","selectedColumnIds","shouldHighlight","checkTruncation","handleUrlTooltipChange","open","handleTruncateTooltipChange","bgColor","cn","getTableRowBgClassNamesByStatus","onClick","e","useEffect","startedTime","formatDate","timeDiff","rawData","headerKey","currencyCode","formatCurrency","columnType","hasTime","formattedValue","rawValue","isUiElementCell","React","jsxs","CELL_DEFAULT_RIGHT_OFFSET","CELL_INDENT_PER_LEVEL_PX","currentCellId","editValue","LoadingSpinnerIcon","InlineEditField","Fragment","Tooltip","CELL_STICKY_SHADOW_DARK","CELL_STICKY_SHADOW_LIGHT","KeyboardArrowDownIcon","KeyboardArrowRightFilledIcon","LinkIcon","Typography","OpenInNewRounded","DataCell"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),B=require("../../../../forms/currency-input/currency.constant.cjs.js"),K=require("../../../../../utils/countryFlags.cjs.js"),F=require("../../../../../_virtual/index.cjs.js"),r=require("react"),U=require("../../context.cjs.js"),m=new Map;let b=null;const O=({id:n,value:s,onChange:d,onBlur:h,currencyCode:E="USD",autoFocus:q=!1,inputStyle:M,disabled:y=!1})=>{const{openCurrencyDropdown:g,closeCurrencyDropdown:k,currencyDropdownConfig:o,setCurrencyForCell:C,getCurrencyForCell:T}=r.useContext(U.TableContext),p=T?.(n)||E||"USD",[u,v]=r.useState(p),[R,S]=r.useState(s),c=r.useRef(s),a=r.useRef(null),x=r.useRef(null),i=r.useRef(!1),w=r.useRef(d);r.useEffect(()=>{c.current=R},[R]),r.useEffect(()=>{w.current=d},[d]);const D=r.useRef(!1);r.useEffect(()=>{D.current||(S(s),c.current=s,D.current=!0)},[s]),r.useEffect(()=>{p!==u&&v(p)},[p,u]),r.useLayoutEffect(()=>{const e=a.current;if(!e)return;const t=m.get(n);t?(e.value=c.current||"",e.focus(),e.setSelectionRange(t.start,t.end)):b!==n&&(e.value=c.current||"",e.focus())},[]);const N=e=>{if(e==null||e==="")return"";const t=Number(e);return isNaN(t)?String(e):t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},I=e=>{const t=e.target.value;if(t!==""&&(Number(t)<0||!/^\d*\.?\d*$/.test(t))){e.target.value=c.current==="0"?"":c.current||"";return}m.set(n,{start:e.target.selectionStart??0,end:e.target.selectionEnd??0});const f=t===""||t===null||t===void 0?"0":t;S(f),c.current=f,d(f,u)},L=()=>{a.current&&(a.current.value=c.current||"")},P=r.useCallback(()=>{b=n,m.delete(n),a.current&&(a.current.value=N(c.current)),setTimeout(()=>{!i.current&&!o&&h?.()},150),requestAnimationFrame(()=>{b=null})},[n,h,o]),j=r.useCallback(e=>{v(e),C?.(n,e);const t=c.current,f=t===""||t===null||t===void 0?"0":t;w.current(f,e),i.current=!1},[n,C]),_=r.useCallback(e=>{if(e.stopPropagation(),e.preventDefault(),i.current=!0,o)k?.(),i.current=!1;else if(x.current&&g){const t=x.current.getBoundingClientRect();g({anchorRect:t,currentCurrency:u,onSelect:j})}},[o,g,k,u,j]);return r.useEffect(()=>{o||setTimeout(()=>{i.current=!1},100)},[o]),l.jsx("div",{className:"flex flex-col gap-0 mb-0 w-full h-full",children:l.jsxs("label",{className:"relative block w-full h-full",children:[l.jsx("span",{className:"absolute inset-y-0 left-1 flex items-center pl-3 text-neutral-900 dark:text-white z-10",children:B.CURRENCY_SYMBOLS[u]}),l.jsx("input",{ref:a,placeholder:"0.00",type:"text",inputMode:"decimal",className:F("pl-11 pr-24 border h-full text-sm rounded-lg block w-full px-2.5 py-1.5 font-inter font-medium","text-neutral-900 dark:text-black-200 bg-white dark:bg-black-600","border-gray-300 dark:border-black-600","disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400"),onChange:I,onFocus:L,onBlur:P,onKeyDown:e=>{e.stopPropagation(),!(e.key.length>1||e.ctrlKey||e.metaKey)&&(e.key>="0"&&e.key<="9"||e.key==="."&&!e.currentTarget.value.includes(".")||e.preventDefault())},defaultValue:N(s),id:n,style:{height:"var(--row-height)",border:"none",boxShadow:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",...M},autoComplete:"off",autoFocus:q,disabled:y}),l.jsx("div",{ref:x,className:F("absolute inset-y-0 right-1 flex items-center h-full",y?"pointer-events-none opacity-50":"cursor-pointer"),onClick:_,onMouseDown:e=>{e.stopPropagation(),e.preventDefault(),i.current=!0},children:l.jsxs("div",{className:"px-2 py-1 text-sm text-gray-700 dark:text-black-200 flex items-center gap-1 hover:bg-neutral-100 dark:hover:bg-black-500 rounded transition-colors",children:[K.getFlagComponent(u),l.jsx("span",{className:"font-medium",children:u}),l.jsx("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:l.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})})]})})};exports.InlineCurrencyField=O;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),B=require("../../../../forms/currency-input/currency.constant.cjs.js"),K=require("../../../../../utils/countryFlags.cjs.js"),F=require("../../../../../_virtual/index.cjs.js"),r=require("react"),U=require("../../context.cjs.js"),m=new Map;let b=null;const O=({id:n,value:s,onChange:d,onBlur:h,currencyCode:E="USD",autoFocus:q=!1,inputStyle:M,disabled:y=!1})=>{const{openCurrencyDropdown:g,closeCurrencyDropdown:k,currencyDropdownConfig:o,setCurrencyForCell:C,getCurrencyForCell:T}=r.useContext(U.TableContext),p=T?.(n)||E||"USD",[u,v]=r.useState(p),[R,S]=r.useState(s),c=r.useRef(s),a=r.useRef(null),x=r.useRef(null),i=r.useRef(!1),w=r.useRef(d);r.useEffect(()=>{c.current=R},[R]),r.useEffect(()=>{w.current=d},[d]);const D=r.useRef(!1);r.useEffect(()=>{D.current||(S(s),c.current=s,D.current=!0)},[s]),r.useEffect(()=>{p!==u&&v(p)},[p,u]),r.useLayoutEffect(()=>{const e=a.current;if(!e)return;const t=m.get(n);t?(e.value=c.current||"",e.focus(),e.setSelectionRange(t.start,t.end)):b!==n&&(e.value=c.current||"",e.focus())},[]);const N=e=>{if(e==null||e==="")return"";const t=Number(e);return isNaN(t)?String(e):t.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},I=e=>{const t=e.target.value;if(t!==""&&(Number(t)<0||!/^\d*\.?\d*$/.test(t))){e.target.value=c.current==="0"?"":c.current||"";return}m.set(n,{start:e.target.selectionStart??0,end:e.target.selectionEnd??0});const f=t===""||t===null||t===void 0?"0":t;S(f),c.current=f,d(f,u)},L=()=>{a.current&&(a.current.value=c.current||"")},P=r.useCallback(()=>{b=n,m.delete(n),a.current&&(a.current.value=N(c.current)),setTimeout(()=>{!i.current&&!o&&h?.()},150),requestAnimationFrame(()=>{b=null})},[n,h,o]),j=r.useCallback(e=>{v(e),C?.(n,e);const t=c.current,f=t===""||t===null||t===void 0?"0":t;w.current(f,e),i.current=!1},[n,C]),_=r.useCallback(e=>{if(e.stopPropagation(),e.preventDefault(),i.current=!0,o)k?.(),i.current=!1;else if(x.current&&g){const t=x.current.getBoundingClientRect();g({anchorRect:t,currentCurrency:u,onSelect:j})}},[o,g,k,u,j]);return r.useEffect(()=>{o||setTimeout(()=>{i.current=!1},100)},[o]),l.jsx("div",{className:"flex flex-col gap-0 mb-0 w-full h-full",children:l.jsxs("label",{className:"relative block w-full h-full",children:[l.jsx("span",{className:"absolute inset-y-0 left-1 flex items-center pl-3 py-1.5 text-neutral-900 dark:text-white z-10",children:B.CURRENCY_SYMBOLS[u]}),l.jsx("input",{ref:a,placeholder:"0.00",type:"text",inputMode:"decimal",className:F("pl-11 pr-24 border h-full text-sm rounded-lg block w-full px-2.5 py-1.5 font-inter font-medium","text-neutral-900 dark:text-black-200 bg-white dark:bg-black-600","border-gray-300 dark:border-black-600","disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400"),onChange:I,onFocus:L,onBlur:P,onKeyDown:e=>{e.stopPropagation(),!(e.key.length>1||e.ctrlKey||e.metaKey)&&(e.key>="0"&&e.key<="9"||e.key==="."&&!e.currentTarget.value.includes(".")||e.preventDefault())},defaultValue:N(s),id:n,style:{height:"var(--row-height)",border:"none",boxShadow:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)",...M},autoComplete:"off",autoFocus:q,disabled:y}),l.jsx("div",{ref:x,className:F("absolute inset-y-0 right-1 flex items-center h-full",y?"pointer-events-none opacity-50":"cursor-pointer"),onClick:_,onMouseDown:e=>{e.stopPropagation(),e.preventDefault(),i.current=!0},children:l.jsxs("div",{className:"px-2 py-1.5 text-sm text-gray-700 dark:text-black-200 flex items-center gap-1 hover:bg-neutral-100 dark:hover:bg-black-500 rounded transition-colors",children:[K.getFlagComponent(u),l.jsx("span",{className:"font-medium",children:u}),l.jsx("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:l.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})})]})})};exports.InlineCurrencyField=O;
|
|
2
2
|
//# sourceMappingURL=InlineCurrencyField.cjs.js.map
|
package/dist/components/data-display/infinite-table/body/cell/InlineCurrencyField.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineCurrencyField.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/InlineCurrencyField.tsx"],"sourcesContent":["import { CURRENCY_SYMBOLS } from '../../../../forms/currency-input/currency.constant';\nimport { getFlagComponent } from '../../../../../utils/countryFlags';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { TableContext } from '../../context';\n\ntype InlineCurrencyFieldProps = {\n id: string;\n value: string;\n onChange: (numericValue: string, currencyCode: string) => void;\n onBlur?: () => void;\n currencyCode: string;\n autoFocus?: boolean;\n inputStyle?: React.CSSProperties;\n disabled?: boolean;\n};\n\nconst _cursorPositionCache = new Map<string, { start: number; end: number }>();\nlet _blurringCellKey: string | null = null;\n\nexport const InlineCurrencyField: React.FC<InlineCurrencyFieldProps> = ({\n id,\n value,\n onChange,\n onBlur,\n currencyCode = 'USD',\n autoFocus = false,\n inputStyle,\n disabled = false,\n}) => {\n const { openCurrencyDropdown, closeCurrencyDropdown, currencyDropdownConfig, setCurrencyForCell, getCurrencyForCell } = useContext(TableContext);\n const contextCurrency = getCurrencyForCell?.(id);\n const effectiveCurrency = contextCurrency || currencyCode || 'USD';\n const [selectedCurrency, setSelectedCurrency] = useState<string>(effectiveCurrency);\n const [internalValue, setInternalValue] = useState(value);\n const internalValueRef = useRef(value);\n const inputRef = useRef<HTMLInputElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const isInteractingRef = useRef(false);\n const onChangeRef = useRef(onChange);\n\n useEffect(() => {\n internalValueRef.current = internalValue;\n }, [internalValue]);\n\n useEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n const hasInitializedRef = useRef(false);\n useEffect(() => {\n if (!hasInitializedRef.current) {\n setInternalValue(value);\n internalValueRef.current = value;\n hasInitializedRef.current = true;\n }\n }, [value]);\n\n useEffect(() => {\n if (effectiveCurrency !== selectedCurrency) {\n setSelectedCurrency(effectiveCurrency);\n }\n }, [effectiveCurrency, selectedCurrency]);\n\n useLayoutEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n const cached = _cursorPositionCache.get(id);\n if (cached) {\n el.value = internalValueRef.current || '';\n el.focus();\n el.setSelectionRange(cached.start, cached.end);\n } else if (_blurringCellKey !== id) {\n el.value = internalValueRef.current || '';\n el.focus();\n }\n }, []);\n\n const formatCurrency = (targetValue: string | number | null | undefined) => {\n if (targetValue === null || targetValue === undefined || targetValue === '') return '';\n const number = Number(targetValue);\n if (isNaN(number)) return String(targetValue);\n return number.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n };\n\n const handleOnChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const _value = e.target.value;\n if (_value !== '' && (Number(_value) < 0 || !/^\\d*\\.?\\d*$/.test(_value))) {\n e.target.value = internalValueRef.current === '0' ? '' : internalValueRef.current || '';\n return;\n }\n\n _cursorPositionCache.set(id, {\n start: e.target.selectionStart ?? 0,\n end: e.target.selectionEnd ?? 0,\n });\n\n const numericValue = _value === '' || _value === null || _value === undefined ? '0' : _value;\n setInternalValue(numericValue);\n internalValueRef.current = numericValue;\n onChange(numericValue, selectedCurrency);\n };\n\n const handleFocus = () => {\n if (inputRef.current) {\n inputRef.current.value = internalValueRef.current || '';\n }\n };\n\n const handleBlur = useCallback(() => {\n _blurringCellKey = id;\n _cursorPositionCache.delete(id);\n if (inputRef.current) {\n inputRef.current.value = formatCurrency(internalValueRef.current);\n }\n setTimeout(() => {\n if (!isInteractingRef.current && !currencyDropdownConfig) onBlur?.();\n }, 150);\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }, [id, onBlur, currencyDropdownConfig]);\n\n const handleCurrencySelect = useCallback(\n (newCurrency: string) => {\n setSelectedCurrency(newCurrency);\n setCurrencyForCell?.(id, newCurrency);\n const currentValue = internalValueRef.current;\n const numericValue = currentValue === '' || currentValue === null || currentValue === undefined ? '0' : currentValue;\n onChangeRef.current(numericValue, newCurrency);\n isInteractingRef.current = false;\n },\n [id, setCurrencyForCell],\n );\n\n const handleToggleDropdown = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n isInteractingRef.current = true;\n if (currencyDropdownConfig) {\n closeCurrencyDropdown?.();\n isInteractingRef.current = false;\n } else if (triggerRef.current && openCurrencyDropdown) {\n const rect = triggerRef.current.getBoundingClientRect();\n openCurrencyDropdown({ anchorRect: rect, currentCurrency: selectedCurrency, onSelect: handleCurrencySelect });\n }\n },\n [currencyDropdownConfig, openCurrencyDropdown, closeCurrencyDropdown, selectedCurrency, handleCurrencySelect],\n );\n\n useEffect(() => {\n if (!currencyDropdownConfig) {\n setTimeout(() => {\n isInteractingRef.current = false;\n }, 100);\n }\n }, [currencyDropdownConfig]);\n\n return (\n <div className='flex flex-col gap-0 mb-0 w-full h-full'>\n <label className='relative block w-full h-full'>\n <span className='absolute inset-y-0 left-1 flex items-center pl-3 text-neutral-900 dark:text-white z-10'>\n {CURRENCY_SYMBOLS[selectedCurrency]}\n </span>\n <input\n ref={inputRef}\n placeholder='0.00'\n type='text'\n inputMode='decimal'\n className={cn(\n 'pl-11 pr-24 border h-full text-sm rounded-lg block w-full px-2.5 py-1.5 font-inter font-medium',\n 'text-neutral-900 dark:text-black-200 bg-white dark:bg-black-600',\n 'border-gray-300 dark:border-black-600',\n 'disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400',\n )}\n onChange={handleOnChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key.length > 1 || e.ctrlKey || e.metaKey) return;\n if (e.key >= '0' && e.key <= '9') return;\n if (e.key === '.' && !e.currentTarget.value.includes('.')) return;\n e.preventDefault();\n }}\n defaultValue={formatCurrency(value)}\n id={id}\n style={{ height: 'var(--row-height)', border: 'none', boxShadow: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)', ...inputStyle }}\n autoComplete='off'\n autoFocus={autoFocus}\n disabled={disabled}\n />\n <div\n ref={triggerRef}\n className={cn('absolute inset-y-0 right-1 flex items-center h-full', disabled ? 'pointer-events-none opacity-50' : 'cursor-pointer')}\n onClick={handleToggleDropdown}\n onMouseDown={(e) => { e.stopPropagation(); e.preventDefault(); isInteractingRef.current = true; }}\n >\n <div className='px-2 py-1 text-sm text-gray-700 dark:text-black-200 flex items-center gap-1 hover:bg-neutral-100 dark:hover:bg-black-500 rounded transition-colors'>\n {getFlagComponent(selectedCurrency)}\n <span className='font-medium'>{selectedCurrency}</span>\n <svg className='w-3 h-3' fill='none' stroke='currentColor' viewBox='0 0 24 24'>\n <path strokeLinecap='round' strokeLinejoin='round' strokeWidth={2} d='M19 9l-7 7-7-7' />\n </svg>\n </div>\n </div>\n </label>\n </div>\n );\n};\n"],"names":["_cursorPositionCache","_blurringCellKey","InlineCurrencyField","id","value","onChange","onBlur","currencyCode","autoFocus","inputStyle","disabled","openCurrencyDropdown","closeCurrencyDropdown","currencyDropdownConfig","setCurrencyForCell","getCurrencyForCell","useContext","TableContext","effectiveCurrency","selectedCurrency","setSelectedCurrency","useState","internalValue","setInternalValue","internalValueRef","useRef","inputRef","triggerRef","isInteractingRef","onChangeRef","useEffect","hasInitializedRef","useLayoutEffect","el","cached","formatCurrency","targetValue","number","handleOnChange","_value","numericValue","handleFocus","handleBlur","useCallback","handleCurrencySelect","newCurrency","currentValue","handleToggleDropdown","rect","jsxs","jsx","CURRENCY_SYMBOLS","cn","getFlagComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InlineCurrencyField.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/InlineCurrencyField.tsx"],"sourcesContent":["import { CURRENCY_SYMBOLS } from '../../../../forms/currency-input/currency.constant';\nimport { getFlagComponent } from '../../../../../utils/countryFlags';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { TableContext } from '../../context';\n\ntype InlineCurrencyFieldProps = {\n id: string;\n value: string;\n onChange: (numericValue: string, currencyCode: string) => void;\n onBlur?: () => void;\n currencyCode: string;\n autoFocus?: boolean;\n inputStyle?: React.CSSProperties;\n disabled?: boolean;\n};\n\nconst _cursorPositionCache = new Map<string, { start: number; end: number }>();\nlet _blurringCellKey: string | null = null;\n\nexport const InlineCurrencyField: React.FC<InlineCurrencyFieldProps> = ({\n id,\n value,\n onChange,\n onBlur,\n currencyCode = 'USD',\n autoFocus = false,\n inputStyle,\n disabled = false,\n}) => {\n const { openCurrencyDropdown, closeCurrencyDropdown, currencyDropdownConfig, setCurrencyForCell, getCurrencyForCell } = useContext(TableContext);\n const contextCurrency = getCurrencyForCell?.(id);\n const effectiveCurrency = contextCurrency || currencyCode || 'USD';\n const [selectedCurrency, setSelectedCurrency] = useState<string>(effectiveCurrency);\n const [internalValue, setInternalValue] = useState(value);\n const internalValueRef = useRef(value);\n const inputRef = useRef<HTMLInputElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const isInteractingRef = useRef(false);\n const onChangeRef = useRef(onChange);\n\n useEffect(() => {\n internalValueRef.current = internalValue;\n }, [internalValue]);\n\n useEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n const hasInitializedRef = useRef(false);\n useEffect(() => {\n if (!hasInitializedRef.current) {\n setInternalValue(value);\n internalValueRef.current = value;\n hasInitializedRef.current = true;\n }\n }, [value]);\n\n useEffect(() => {\n if (effectiveCurrency !== selectedCurrency) {\n setSelectedCurrency(effectiveCurrency);\n }\n }, [effectiveCurrency, selectedCurrency]);\n\n useLayoutEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n const cached = _cursorPositionCache.get(id);\n if (cached) {\n el.value = internalValueRef.current || '';\n el.focus();\n el.setSelectionRange(cached.start, cached.end);\n } else if (_blurringCellKey !== id) {\n el.value = internalValueRef.current || '';\n el.focus();\n }\n }, []);\n\n const formatCurrency = (targetValue: string | number | null | undefined) => {\n if (targetValue === null || targetValue === undefined || targetValue === '') return '';\n const number = Number(targetValue);\n if (isNaN(number)) return String(targetValue);\n return number.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n };\n\n const handleOnChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const _value = e.target.value;\n if (_value !== '' && (Number(_value) < 0 || !/^\\d*\\.?\\d*$/.test(_value))) {\n e.target.value = internalValueRef.current === '0' ? '' : internalValueRef.current || '';\n return;\n }\n\n _cursorPositionCache.set(id, {\n start: e.target.selectionStart ?? 0,\n end: e.target.selectionEnd ?? 0,\n });\n\n const numericValue = _value === '' || _value === null || _value === undefined ? '0' : _value;\n setInternalValue(numericValue);\n internalValueRef.current = numericValue;\n onChange(numericValue, selectedCurrency);\n };\n\n const handleFocus = () => {\n if (inputRef.current) {\n inputRef.current.value = internalValueRef.current || '';\n }\n };\n\n const handleBlur = useCallback(() => {\n _blurringCellKey = id;\n _cursorPositionCache.delete(id);\n if (inputRef.current) {\n inputRef.current.value = formatCurrency(internalValueRef.current);\n }\n setTimeout(() => {\n if (!isInteractingRef.current && !currencyDropdownConfig) onBlur?.();\n }, 150);\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }, [id, onBlur, currencyDropdownConfig]);\n\n const handleCurrencySelect = useCallback(\n (newCurrency: string) => {\n setSelectedCurrency(newCurrency);\n setCurrencyForCell?.(id, newCurrency);\n const currentValue = internalValueRef.current;\n const numericValue = currentValue === '' || currentValue === null || currentValue === undefined ? '0' : currentValue;\n onChangeRef.current(numericValue, newCurrency);\n isInteractingRef.current = false;\n },\n [id, setCurrencyForCell],\n );\n\n const handleToggleDropdown = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n isInteractingRef.current = true;\n if (currencyDropdownConfig) {\n closeCurrencyDropdown?.();\n isInteractingRef.current = false;\n } else if (triggerRef.current && openCurrencyDropdown) {\n const rect = triggerRef.current.getBoundingClientRect();\n openCurrencyDropdown({ anchorRect: rect, currentCurrency: selectedCurrency, onSelect: handleCurrencySelect });\n }\n },\n [currencyDropdownConfig, openCurrencyDropdown, closeCurrencyDropdown, selectedCurrency, handleCurrencySelect],\n );\n\n useEffect(() => {\n if (!currencyDropdownConfig) {\n setTimeout(() => {\n isInteractingRef.current = false;\n }, 100);\n }\n }, [currencyDropdownConfig]);\n\n return (\n <div className='flex flex-col gap-0 mb-0 w-full h-full'>\n <label className='relative block w-full h-full'>\n <span className='absolute inset-y-0 left-1 flex items-center pl-3 py-1.5 text-neutral-900 dark:text-white z-10'>\n {CURRENCY_SYMBOLS[selectedCurrency]}\n </span>\n <input\n ref={inputRef}\n placeholder='0.00'\n type='text'\n inputMode='decimal'\n className={cn(\n 'pl-11 pr-24 border h-full text-sm rounded-lg block w-full px-2.5 py-1.5 font-inter font-medium',\n 'text-neutral-900 dark:text-black-200 bg-white dark:bg-black-600',\n 'border-gray-300 dark:border-black-600',\n 'disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400',\n )}\n onChange={handleOnChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key.length > 1 || e.ctrlKey || e.metaKey) return;\n if (e.key >= '0' && e.key <= '9') return;\n if (e.key === '.' && !e.currentTarget.value.includes('.')) return;\n e.preventDefault();\n }}\n defaultValue={formatCurrency(value)}\n id={id}\n style={{ height: 'var(--row-height)', border: 'none', boxShadow: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)', ...inputStyle }}\n autoComplete='off'\n autoFocus={autoFocus}\n disabled={disabled}\n />\n <div\n ref={triggerRef}\n className={cn('absolute inset-y-0 right-1 flex items-center h-full', disabled ? 'pointer-events-none opacity-50' : 'cursor-pointer')}\n onClick={handleToggleDropdown}\n onMouseDown={(e) => { e.stopPropagation(); e.preventDefault(); isInteractingRef.current = true; }}\n >\n <div className='px-2 py-1.5 text-sm text-gray-700 dark:text-black-200 flex items-center gap-1 hover:bg-neutral-100 dark:hover:bg-black-500 rounded transition-colors'>\n {getFlagComponent(selectedCurrency)}\n <span className='font-medium'>{selectedCurrency}</span>\n <svg className='w-3 h-3' fill='none' stroke='currentColor' viewBox='0 0 24 24'>\n <path strokeLinecap='round' strokeLinejoin='round' strokeWidth={2} d='M19 9l-7 7-7-7' />\n </svg>\n </div>\n </div>\n </label>\n </div>\n );\n};\n"],"names":["_cursorPositionCache","_blurringCellKey","InlineCurrencyField","id","value","onChange","onBlur","currencyCode","autoFocus","inputStyle","disabled","openCurrencyDropdown","closeCurrencyDropdown","currencyDropdownConfig","setCurrencyForCell","getCurrencyForCell","useContext","TableContext","effectiveCurrency","selectedCurrency","setSelectedCurrency","useState","internalValue","setInternalValue","internalValueRef","useRef","inputRef","triggerRef","isInteractingRef","onChangeRef","useEffect","hasInitializedRef","useLayoutEffect","el","cached","formatCurrency","targetValue","number","handleOnChange","_value","numericValue","handleFocus","handleBlur","useCallback","handleCurrencySelect","newCurrency","currentValue","handleToggleDropdown","rect","jsxs","jsx","CURRENCY_SYMBOLS","cn","getFlagComponent"],"mappings":"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"}
|
|
@@ -80,7 +80,7 @@ const ee = ({
|
|
|
80
80
|
s.current = !1;
|
|
81
81
|
}, 100);
|
|
82
82
|
}, [u]), /* @__PURE__ */ o("div", { className: "flex flex-col gap-0 mb-0 w-full h-full", children: /* @__PURE__ */ T("label", { className: "relative block w-full h-full", children: [
|
|
83
|
-
/* @__PURE__ */ o("span", { className: "absolute inset-y-0 left-1 flex items-center pl-3 text-neutral-900 dark:text-white z-10", children: O[l] }),
|
|
83
|
+
/* @__PURE__ */ o("span", { className: "absolute inset-y-0 left-1 flex items-center pl-3 py-1.5 text-neutral-900 dark:text-white z-10", children: O[l] }),
|
|
84
84
|
/* @__PURE__ */ o(
|
|
85
85
|
"input",
|
|
86
86
|
{
|
|
@@ -117,7 +117,7 @@ const ee = ({
|
|
|
117
117
|
onMouseDown: (e) => {
|
|
118
118
|
e.stopPropagation(), e.preventDefault(), s.current = !0;
|
|
119
119
|
},
|
|
120
|
-
children: /* @__PURE__ */ T("div", { className: "px-2 py-1 text-sm text-gray-700 dark:text-black-200 flex items-center gap-1 hover:bg-neutral-100 dark:hover:bg-black-500 rounded transition-colors", children: [
|
|
120
|
+
children: /* @__PURE__ */ T("div", { className: "px-2 py-1.5 text-sm text-gray-700 dark:text-black-200 flex items-center gap-1 hover:bg-neutral-100 dark:hover:bg-black-500 rounded transition-colors", children: [
|
|
121
121
|
Y(l),
|
|
122
122
|
/* @__PURE__ */ o("span", { className: "font-medium", children: l }),
|
|
123
123
|
/* @__PURE__ */ o("svg", { className: "w-3 h-3", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ o("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineCurrencyField.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/InlineCurrencyField.tsx"],"sourcesContent":["import { CURRENCY_SYMBOLS } from '../../../../forms/currency-input/currency.constant';\nimport { getFlagComponent } from '../../../../../utils/countryFlags';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { TableContext } from '../../context';\n\ntype InlineCurrencyFieldProps = {\n id: string;\n value: string;\n onChange: (numericValue: string, currencyCode: string) => void;\n onBlur?: () => void;\n currencyCode: string;\n autoFocus?: boolean;\n inputStyle?: React.CSSProperties;\n disabled?: boolean;\n};\n\nconst _cursorPositionCache = new Map<string, { start: number; end: number }>();\nlet _blurringCellKey: string | null = null;\n\nexport const InlineCurrencyField: React.FC<InlineCurrencyFieldProps> = ({\n id,\n value,\n onChange,\n onBlur,\n currencyCode = 'USD',\n autoFocus = false,\n inputStyle,\n disabled = false,\n}) => {\n const { openCurrencyDropdown, closeCurrencyDropdown, currencyDropdownConfig, setCurrencyForCell, getCurrencyForCell } = useContext(TableContext);\n const contextCurrency = getCurrencyForCell?.(id);\n const effectiveCurrency = contextCurrency || currencyCode || 'USD';\n const [selectedCurrency, setSelectedCurrency] = useState<string>(effectiveCurrency);\n const [internalValue, setInternalValue] = useState(value);\n const internalValueRef = useRef(value);\n const inputRef = useRef<HTMLInputElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const isInteractingRef = useRef(false);\n const onChangeRef = useRef(onChange);\n\n useEffect(() => {\n internalValueRef.current = internalValue;\n }, [internalValue]);\n\n useEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n const hasInitializedRef = useRef(false);\n useEffect(() => {\n if (!hasInitializedRef.current) {\n setInternalValue(value);\n internalValueRef.current = value;\n hasInitializedRef.current = true;\n }\n }, [value]);\n\n useEffect(() => {\n if (effectiveCurrency !== selectedCurrency) {\n setSelectedCurrency(effectiveCurrency);\n }\n }, [effectiveCurrency, selectedCurrency]);\n\n useLayoutEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n const cached = _cursorPositionCache.get(id);\n if (cached) {\n el.value = internalValueRef.current || '';\n el.focus();\n el.setSelectionRange(cached.start, cached.end);\n } else if (_blurringCellKey !== id) {\n el.value = internalValueRef.current || '';\n el.focus();\n }\n }, []);\n\n const formatCurrency = (targetValue: string | number | null | undefined) => {\n if (targetValue === null || targetValue === undefined || targetValue === '') return '';\n const number = Number(targetValue);\n if (isNaN(number)) return String(targetValue);\n return number.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n };\n\n const handleOnChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const _value = e.target.value;\n if (_value !== '' && (Number(_value) < 0 || !/^\\d*\\.?\\d*$/.test(_value))) {\n e.target.value = internalValueRef.current === '0' ? '' : internalValueRef.current || '';\n return;\n }\n\n _cursorPositionCache.set(id, {\n start: e.target.selectionStart ?? 0,\n end: e.target.selectionEnd ?? 0,\n });\n\n const numericValue = _value === '' || _value === null || _value === undefined ? '0' : _value;\n setInternalValue(numericValue);\n internalValueRef.current = numericValue;\n onChange(numericValue, selectedCurrency);\n };\n\n const handleFocus = () => {\n if (inputRef.current) {\n inputRef.current.value = internalValueRef.current || '';\n }\n };\n\n const handleBlur = useCallback(() => {\n _blurringCellKey = id;\n _cursorPositionCache.delete(id);\n if (inputRef.current) {\n inputRef.current.value = formatCurrency(internalValueRef.current);\n }\n setTimeout(() => {\n if (!isInteractingRef.current && !currencyDropdownConfig) onBlur?.();\n }, 150);\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }, [id, onBlur, currencyDropdownConfig]);\n\n const handleCurrencySelect = useCallback(\n (newCurrency: string) => {\n setSelectedCurrency(newCurrency);\n setCurrencyForCell?.(id, newCurrency);\n const currentValue = internalValueRef.current;\n const numericValue = currentValue === '' || currentValue === null || currentValue === undefined ? '0' : currentValue;\n onChangeRef.current(numericValue, newCurrency);\n isInteractingRef.current = false;\n },\n [id, setCurrencyForCell],\n );\n\n const handleToggleDropdown = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n isInteractingRef.current = true;\n if (currencyDropdownConfig) {\n closeCurrencyDropdown?.();\n isInteractingRef.current = false;\n } else if (triggerRef.current && openCurrencyDropdown) {\n const rect = triggerRef.current.getBoundingClientRect();\n openCurrencyDropdown({ anchorRect: rect, currentCurrency: selectedCurrency, onSelect: handleCurrencySelect });\n }\n },\n [currencyDropdownConfig, openCurrencyDropdown, closeCurrencyDropdown, selectedCurrency, handleCurrencySelect],\n );\n\n useEffect(() => {\n if (!currencyDropdownConfig) {\n setTimeout(() => {\n isInteractingRef.current = false;\n }, 100);\n }\n }, [currencyDropdownConfig]);\n\n return (\n <div className='flex flex-col gap-0 mb-0 w-full h-full'>\n <label className='relative block w-full h-full'>\n <span className='absolute inset-y-0 left-1 flex items-center pl-3 text-neutral-900 dark:text-white z-10'>\n {CURRENCY_SYMBOLS[selectedCurrency]}\n </span>\n <input\n ref={inputRef}\n placeholder='0.00'\n type='text'\n inputMode='decimal'\n className={cn(\n 'pl-11 pr-24 border h-full text-sm rounded-lg block w-full px-2.5 py-1.5 font-inter font-medium',\n 'text-neutral-900 dark:text-black-200 bg-white dark:bg-black-600',\n 'border-gray-300 dark:border-black-600',\n 'disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400',\n )}\n onChange={handleOnChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key.length > 1 || e.ctrlKey || e.metaKey) return;\n if (e.key >= '0' && e.key <= '9') return;\n if (e.key === '.' && !e.currentTarget.value.includes('.')) return;\n e.preventDefault();\n }}\n defaultValue={formatCurrency(value)}\n id={id}\n style={{ height: 'var(--row-height)', border: 'none', boxShadow: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)', ...inputStyle }}\n autoComplete='off'\n autoFocus={autoFocus}\n disabled={disabled}\n />\n <div\n ref={triggerRef}\n className={cn('absolute inset-y-0 right-1 flex items-center h-full', disabled ? 'pointer-events-none opacity-50' : 'cursor-pointer')}\n onClick={handleToggleDropdown}\n onMouseDown={(e) => { e.stopPropagation(); e.preventDefault(); isInteractingRef.current = true; }}\n >\n <div className='px-2 py-1 text-sm text-gray-700 dark:text-black-200 flex items-center gap-1 hover:bg-neutral-100 dark:hover:bg-black-500 rounded transition-colors'>\n {getFlagComponent(selectedCurrency)}\n <span className='font-medium'>{selectedCurrency}</span>\n <svg className='w-3 h-3' fill='none' stroke='currentColor' viewBox='0 0 24 24'>\n <path strokeLinecap='round' strokeLinejoin='round' strokeWidth={2} d='M19 9l-7 7-7-7' />\n </svg>\n </div>\n </div>\n </label>\n </div>\n );\n};\n"],"names":["_cursorPositionCache","_blurringCellKey","InlineCurrencyField","id","value","onChange","onBlur","currencyCode","autoFocus","inputStyle","disabled","openCurrencyDropdown","closeCurrencyDropdown","currencyDropdownConfig","setCurrencyForCell","getCurrencyForCell","useContext","TableContext","effectiveCurrency","selectedCurrency","setSelectedCurrency","useState","internalValue","setInternalValue","internalValueRef","useRef","inputRef","triggerRef","isInteractingRef","onChangeRef","useEffect","hasInitializedRef","useLayoutEffect","el","cached","formatCurrency","targetValue","number","handleOnChange","_value","numericValue","handleFocus","handleBlur","useCallback","handleCurrencySelect","newCurrency","currentValue","handleToggleDropdown","rect","jsxs","jsx","CURRENCY_SYMBOLS","cn","getFlagComponent"],"mappings":";;;;;;AAkBA,MAAMA,wBAA2B,IAAA;AACjC,IAAIC,IAAkC;AAE/B,MAAMC,KAA0D,CAAC;AAAA,EACtE,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,WAAAC,IAAY;AAAA,EACZ,YAAAC;AAAA,EACA,UAAAC,IAAW;AACb,MAAM;AACJ,QAAM,EAAE,sBAAAC,GAAsB,uBAAAC,GAAuB,wBAAAC,GAAwB,oBAAAC,GAAoB,oBAAAC,EAAA,IAAuBC,EAAWC,CAAY,GAEzIC,IADkBH,IAAqBZ,CAAE,KACFI,KAAgB,OACvD,CAACY,GAAkBC,CAAmB,IAAIC,EAAiBH,CAAiB,GAC5E,CAACI,GAAeC,CAAgB,IAAIF,EAASjB,CAAK,GAClDoB,IAAmBC,EAAOrB,CAAK,GAC/BsB,IAAWD,EAAyB,IAAI,GACxCE,IAAaF,EAAuB,IAAI,GACxCG,IAAmBH,EAAO,EAAK,GAC/BI,IAAcJ,EAAOpB,CAAQ;AAEnC,EAAAyB,EAAU,MAAM;AACd,IAAAN,EAAiB,UAAUF;AAAA,EAC7B,GAAG,CAACA,CAAa,CAAC,GAElBQ,EAAU,MAAM;AACd,IAAAD,EAAY,UAAUxB;AAAA,EACxB,GAAG,CAACA,CAAQ,CAAC;AAEb,QAAM0B,IAAoBN,EAAO,EAAK;AACtC,EAAAK,EAAU,MAAM;AACd,IAAKC,EAAkB,YACrBR,EAAiBnB,CAAK,GACtBoB,EAAiB,UAAUpB,GAC3B2B,EAAkB,UAAU;AAAA,EAEhC,GAAG,CAAC3B,CAAK,CAAC,GAEV0B,EAAU,MAAM;AACd,IAAIZ,MAAsBC,KACxBC,EAAoBF,CAAiB;AAAA,EAEzC,GAAG,CAACA,GAAmBC,CAAgB,CAAC,GAExCa,EAAgB,MAAM;AACpB,UAAMC,IAAKP,EAAS;AACpB,QAAI,CAACO,EAAI;AAET,UAAMC,IAASlC,EAAqB,IAAIG,CAAE;AAC1C,IAAI+B,KACFD,EAAG,QAAQT,EAAiB,WAAW,IACvCS,EAAG,MAAA,GACHA,EAAG,kBAAkBC,EAAO,OAAOA,EAAO,GAAG,KACpCjC,MAAqBE,MAC9B8B,EAAG,QAAQT,EAAiB,WAAW,IACvCS,EAAG,MAAA;AAAA,EAEP,GAAG,CAAA,CAAE;AAEL,QAAME,IAAiB,CAACC,MAAoD;AAC1E,QAAIA,KAAgB,QAAqCA,MAAgB,GAAI,QAAO;AACpF,UAAMC,IAAS,OAAOD,CAAW;AACjC,WAAI,MAAMC,CAAM,IAAU,OAAOD,CAAW,IACrCC,EAAO,eAAe,SAAS,EAAE,uBAAuB,GAAG,uBAAuB,GAAG;AAAA,EAC9F,GAEMC,IAAiB,CAAC,MAA2C;AACjE,UAAMC,IAAS,EAAE,OAAO;AACxB,QAAIA,MAAW,OAAO,OAAOA,CAAM,IAAI,KAAK,CAAC,cAAc,KAAKA,CAAM,IAAI;AACxE,QAAE,OAAO,QAAQf,EAAiB,YAAY,MAAM,KAAKA,EAAiB,WAAW;AACrF;AAAA,IACF;AAEA,IAAAxB,EAAqB,IAAIG,GAAI;AAAA,MAC3B,OAAO,EAAE,OAAO,kBAAkB;AAAA,MAClC,KAAK,EAAE,OAAO,gBAAgB;AAAA,IAAA,CAC/B;AAED,UAAMqC,IAAeD,MAAW,MAAMA,MAAW,QAAQA,MAAW,SAAY,MAAMA;AACtF,IAAAhB,EAAiBiB,CAAY,GAC7BhB,EAAiB,UAAUgB,GAC3BnC,EAASmC,GAAcrB,CAAgB;AAAA,EACzC,GAEMsB,IAAc,MAAM;AACxB,IAAIf,EAAS,YACXA,EAAS,QAAQ,QAAQF,EAAiB,WAAW;AAAA,EAEzD,GAEMkB,IAAaC,EAAY,MAAM;AACnC,IAAA1C,IAAmBE,GACnBH,EAAqB,OAAOG,CAAE,GAC1BuB,EAAS,YACXA,EAAS,QAAQ,QAAQS,EAAeX,EAAiB,OAAO,IAElE,WAAW,MAAM;AACf,MAAI,CAACI,EAAiB,WAAW,CAACf,KAAwBP,IAAA;AAAA,IAC5D,GAAG,GAAG,GACN,sBAAsB,MAAM;AAC1B,MAAAL,IAAmB;AAAA,IACrB,CAAC;AAAA,EACH,GAAG,CAACE,GAAIG,GAAQO,CAAsB,CAAC,GAEjC+B,IAAuBD;AAAA,IAC3B,CAACE,MAAwB;AACvB,MAAAzB,EAAoByB,CAAW,GAC/B/B,IAAqBX,GAAI0C,CAAW;AACpC,YAAMC,IAAetB,EAAiB,SAChCgB,IAAeM,MAAiB,MAAMA,MAAiB,QAAQA,MAAiB,SAAY,MAAMA;AACxG,MAAAjB,EAAY,QAAQW,GAAcK,CAAW,GAC7CjB,EAAiB,UAAU;AAAA,IAC7B;AAAA,IACA,CAACzB,GAAIW,CAAkB;AAAA,EAAA,GAGnBiC,IAAuBJ;AAAA,IAC3B,CAAC,MAAwB;AAIvB,UAHA,EAAE,gBAAA,GACF,EAAE,eAAA,GACFf,EAAiB,UAAU,IACvBf;AACF,QAAAD,IAAA,GACAgB,EAAiB,UAAU;AAAA,eAClBD,EAAW,WAAWhB,GAAsB;AACrD,cAAMqC,IAAOrB,EAAW,QAAQ,sBAAA;AAChC,QAAAhB,EAAqB,EAAE,YAAYqC,GAAM,iBAAiB7B,GAAkB,UAAUyB,GAAsB;AAAA,MAC9G;AAAA,IACF;AAAA,IACA,CAAC/B,GAAwBF,GAAsBC,GAAuBO,GAAkByB,CAAoB;AAAA,EAAA;AAG9G,SAAAd,EAAU,MAAM;AACd,IAAKjB,KACH,WAAW,MAAM;AACf,MAAAe,EAAiB,UAAU;AAAA,IAC7B,GAAG,GAAG;AAAA,EAEV,GAAG,CAACf,CAAsB,CAAC,qBAGxB,OAAA,EAAI,WAAU,0CACb,UAAA,gBAAAoC,EAAC,SAAA,EAAM,WAAU,gCACf,UAAA;AAAA,IAAA,gBAAAC,EAAC,QAAA,EAAK,WAAU,0FACb,UAAAC,EAAiBhC,CAAgB,GACpC;AAAA,IACA,gBAAA+B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKxB;AAAA,QACL,aAAY;AAAA,QACZ,MAAK;AAAA,QACL,WAAU;AAAA,QACV,WAAW0B;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAEF,UAAUd;AAAA,QACV,SAASG;AAAA,QACT,QAAQC;AAAA,QACR,WAAW,CAAC,MAAM;AAEhB,UADA,EAAE,gBAAA,GACE,IAAE,IAAI,SAAS,KAAK,EAAE,WAAW,EAAE,aACnC,EAAE,OAAO,OAAO,EAAE,OAAO,OACzB,EAAE,QAAQ,OAAO,CAAC,EAAE,cAAc,MAAM,SAAS,GAAG,KACxD,EAAE,eAAA;AAAA,QACJ;AAAA,QACA,cAAcP,EAAe/B,CAAK;AAAA,QAClC,IAAAD;AAAA,QACA,OAAO,EAAE,QAAQ,qBAAqB,QAAQ,QAAQ,WAAW,uEAAuE,GAAGM,EAAA;AAAA,QAC3I,cAAa;AAAA,QACb,WAAAD;AAAA,QACA,UAAAE;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,gBAAAwC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKvB;AAAA,QACL,WAAWyB,EAAG,uDAAuD1C,IAAW,mCAAmC,gBAAgB;AAAA,QACnI,SAASqC;AAAA,QACT,aAAa,CAAC,MAAM;AAAE,YAAE,gBAAA,GAAmB,EAAE,eAAA,GAAkBnB,EAAiB,UAAU;AAAA,QAAM;AAAA,QAEhG,UAAA,gBAAAqB,EAAC,OAAA,EAAI,WAAU,sJACZ,UAAA;AAAA,UAAAI,EAAiBlC,CAAgB;AAAA,UAClC,gBAAA+B,EAAC,QAAA,EAAK,WAAU,eAAe,UAAA/B,GAAiB;AAAA,UAChD,gBAAA+B,EAAC,SAAI,WAAU,WAAU,MAAK,QAAO,QAAO,gBAAe,SAAQ,aACjE,4BAAC,QAAA,EAAK,eAAc,SAAQ,gBAAe,SAAQ,aAAa,GAAG,GAAE,kBAAiB,EAAA,CACxF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,EAAA,CACF,EAAA,CACF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"InlineCurrencyField.es.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/InlineCurrencyField.tsx"],"sourcesContent":["import { CURRENCY_SYMBOLS } from '../../../../forms/currency-input/currency.constant';\nimport { getFlagComponent } from '../../../../../utils/countryFlags';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { TableContext } from '../../context';\n\ntype InlineCurrencyFieldProps = {\n id: string;\n value: string;\n onChange: (numericValue: string, currencyCode: string) => void;\n onBlur?: () => void;\n currencyCode: string;\n autoFocus?: boolean;\n inputStyle?: React.CSSProperties;\n disabled?: boolean;\n};\n\nconst _cursorPositionCache = new Map<string, { start: number; end: number }>();\nlet _blurringCellKey: string | null = null;\n\nexport const InlineCurrencyField: React.FC<InlineCurrencyFieldProps> = ({\n id,\n value,\n onChange,\n onBlur,\n currencyCode = 'USD',\n autoFocus = false,\n inputStyle,\n disabled = false,\n}) => {\n const { openCurrencyDropdown, closeCurrencyDropdown, currencyDropdownConfig, setCurrencyForCell, getCurrencyForCell } = useContext(TableContext);\n const contextCurrency = getCurrencyForCell?.(id);\n const effectiveCurrency = contextCurrency || currencyCode || 'USD';\n const [selectedCurrency, setSelectedCurrency] = useState<string>(effectiveCurrency);\n const [internalValue, setInternalValue] = useState(value);\n const internalValueRef = useRef(value);\n const inputRef = useRef<HTMLInputElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const isInteractingRef = useRef(false);\n const onChangeRef = useRef(onChange);\n\n useEffect(() => {\n internalValueRef.current = internalValue;\n }, [internalValue]);\n\n useEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n const hasInitializedRef = useRef(false);\n useEffect(() => {\n if (!hasInitializedRef.current) {\n setInternalValue(value);\n internalValueRef.current = value;\n hasInitializedRef.current = true;\n }\n }, [value]);\n\n useEffect(() => {\n if (effectiveCurrency !== selectedCurrency) {\n setSelectedCurrency(effectiveCurrency);\n }\n }, [effectiveCurrency, selectedCurrency]);\n\n useLayoutEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n const cached = _cursorPositionCache.get(id);\n if (cached) {\n el.value = internalValueRef.current || '';\n el.focus();\n el.setSelectionRange(cached.start, cached.end);\n } else if (_blurringCellKey !== id) {\n el.value = internalValueRef.current || '';\n el.focus();\n }\n }, []);\n\n const formatCurrency = (targetValue: string | number | null | undefined) => {\n if (targetValue === null || targetValue === undefined || targetValue === '') return '';\n const number = Number(targetValue);\n if (isNaN(number)) return String(targetValue);\n return number.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n };\n\n const handleOnChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const _value = e.target.value;\n if (_value !== '' && (Number(_value) < 0 || !/^\\d*\\.?\\d*$/.test(_value))) {\n e.target.value = internalValueRef.current === '0' ? '' : internalValueRef.current || '';\n return;\n }\n\n _cursorPositionCache.set(id, {\n start: e.target.selectionStart ?? 0,\n end: e.target.selectionEnd ?? 0,\n });\n\n const numericValue = _value === '' || _value === null || _value === undefined ? '0' : _value;\n setInternalValue(numericValue);\n internalValueRef.current = numericValue;\n onChange(numericValue, selectedCurrency);\n };\n\n const handleFocus = () => {\n if (inputRef.current) {\n inputRef.current.value = internalValueRef.current || '';\n }\n };\n\n const handleBlur = useCallback(() => {\n _blurringCellKey = id;\n _cursorPositionCache.delete(id);\n if (inputRef.current) {\n inputRef.current.value = formatCurrency(internalValueRef.current);\n }\n setTimeout(() => {\n if (!isInteractingRef.current && !currencyDropdownConfig) onBlur?.();\n }, 150);\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }, [id, onBlur, currencyDropdownConfig]);\n\n const handleCurrencySelect = useCallback(\n (newCurrency: string) => {\n setSelectedCurrency(newCurrency);\n setCurrencyForCell?.(id, newCurrency);\n const currentValue = internalValueRef.current;\n const numericValue = currentValue === '' || currentValue === null || currentValue === undefined ? '0' : currentValue;\n onChangeRef.current(numericValue, newCurrency);\n isInteractingRef.current = false;\n },\n [id, setCurrencyForCell],\n );\n\n const handleToggleDropdown = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n isInteractingRef.current = true;\n if (currencyDropdownConfig) {\n closeCurrencyDropdown?.();\n isInteractingRef.current = false;\n } else if (triggerRef.current && openCurrencyDropdown) {\n const rect = triggerRef.current.getBoundingClientRect();\n openCurrencyDropdown({ anchorRect: rect, currentCurrency: selectedCurrency, onSelect: handleCurrencySelect });\n }\n },\n [currencyDropdownConfig, openCurrencyDropdown, closeCurrencyDropdown, selectedCurrency, handleCurrencySelect],\n );\n\n useEffect(() => {\n if (!currencyDropdownConfig) {\n setTimeout(() => {\n isInteractingRef.current = false;\n }, 100);\n }\n }, [currencyDropdownConfig]);\n\n return (\n <div className='flex flex-col gap-0 mb-0 w-full h-full'>\n <label className='relative block w-full h-full'>\n <span className='absolute inset-y-0 left-1 flex items-center pl-3 py-1.5 text-neutral-900 dark:text-white z-10'>\n {CURRENCY_SYMBOLS[selectedCurrency]}\n </span>\n <input\n ref={inputRef}\n placeholder='0.00'\n type='text'\n inputMode='decimal'\n className={cn(\n 'pl-11 pr-24 border h-full text-sm rounded-lg block w-full px-2.5 py-1.5 font-inter font-medium',\n 'text-neutral-900 dark:text-black-200 bg-white dark:bg-black-600',\n 'border-gray-300 dark:border-black-600',\n 'disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400',\n )}\n onChange={handleOnChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key.length > 1 || e.ctrlKey || e.metaKey) return;\n if (e.key >= '0' && e.key <= '9') return;\n if (e.key === '.' && !e.currentTarget.value.includes('.')) return;\n e.preventDefault();\n }}\n defaultValue={formatCurrency(value)}\n id={id}\n style={{ height: 'var(--row-height)', border: 'none', boxShadow: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)', ...inputStyle }}\n autoComplete='off'\n autoFocus={autoFocus}\n disabled={disabled}\n />\n <div\n ref={triggerRef}\n className={cn('absolute inset-y-0 right-1 flex items-center h-full', disabled ? 'pointer-events-none opacity-50' : 'cursor-pointer')}\n onClick={handleToggleDropdown}\n onMouseDown={(e) => { e.stopPropagation(); e.preventDefault(); isInteractingRef.current = true; }}\n >\n <div className='px-2 py-1.5 text-sm text-gray-700 dark:text-black-200 flex items-center gap-1 hover:bg-neutral-100 dark:hover:bg-black-500 rounded transition-colors'>\n {getFlagComponent(selectedCurrency)}\n <span className='font-medium'>{selectedCurrency}</span>\n <svg className='w-3 h-3' fill='none' stroke='currentColor' viewBox='0 0 24 24'>\n <path strokeLinecap='round' strokeLinejoin='round' strokeWidth={2} d='M19 9l-7 7-7-7' />\n </svg>\n </div>\n </div>\n </label>\n </div>\n );\n};\n"],"names":["_cursorPositionCache","_blurringCellKey","InlineCurrencyField","id","value","onChange","onBlur","currencyCode","autoFocus","inputStyle","disabled","openCurrencyDropdown","closeCurrencyDropdown","currencyDropdownConfig","setCurrencyForCell","getCurrencyForCell","useContext","TableContext","effectiveCurrency","selectedCurrency","setSelectedCurrency","useState","internalValue","setInternalValue","internalValueRef","useRef","inputRef","triggerRef","isInteractingRef","onChangeRef","useEffect","hasInitializedRef","useLayoutEffect","el","cached","formatCurrency","targetValue","number","handleOnChange","_value","numericValue","handleFocus","handleBlur","useCallback","handleCurrencySelect","newCurrency","currentValue","handleToggleDropdown","rect","jsxs","jsx","CURRENCY_SYMBOLS","cn","getFlagComponent"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),a=require("country-flag-icons/react/1x1");
|
|
2
|
-
w-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),a=require("country-flag-icons/react/1x1");function s(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,o.get?o:{enumerable:!0,get:()=>t[e]})}}return n.default=t,Object.freeze(n)}const l=s(a),i=(t,n)=>{const e=t.slice(0,2),o=l[e];return o?r.jsx("div",{className:`
|
|
2
|
+
w-icon h-icon rounded-full overflow-hidden border-[0.9px] flex items-center justify-center relative
|
|
3
3
|
${n?"border-neutral-100 dark:border-neutral-100":"border-neutral-400 dark:border-neutral-500"}
|
|
4
4
|
`,children:r.jsx(o,{style:{width:"110%",height:"110%",transform:"translate(-50%, -50%)",position:"absolute",top:"50%",left:"50%"}})}):null},d=t=>{const n=t.slice(0,2),e=l[n];return e?r.jsx("div",{className:"w-4 h-4 rounded-full overflow-hidden flex items-center justify-center relative",children:r.jsx(e,{style:{width:"120%",height:"120%",transform:"translate(-50%, -50%)",position:"absolute",top:"50%",left:"50%"}})}):null},c=t=>{const n=t.slice(0,2),e=l[n];return e?r.jsx("div",{className:"w-7 h-5 rounded-md overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative",children:r.jsx(e,{style:{width:"110%",height:"110%",transform:"translate(-50%, -50%)",position:"absolute",top:"50%",left:"50%"}})}):null},u=t=>{const n=t.slice(0,2),e=l[n];return e?r.jsx("div",{className:"w-4 h-3 rounded-sm overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative",children:r.jsx(e,{style:{width:"120%",height:"120%",transform:"translate(-50%, -50%)",position:"absolute",top:"50%",left:"50%"}})}):null},g=t=>{const n=t.slice(0,2),e=l[n];return e?r.jsx("div",{className:"w-5 h-4 rounded-sm overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative",children:r.jsx(e,{style:{width:"115%",height:"115%",transform:"translate(-50%, -50%)",position:"absolute",top:"50%",left:"50%"}})}):null};exports.getFlagComponent=i;exports.getFlagComponentRectangle=c;exports.getFlagComponentRectangleMd=g;exports.getFlagComponentRectangleSm=u;exports.getFlagComponentSm=d;
|
|
5
5
|
//# sourceMappingURL=countryFlags.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"countryFlags.cjs.js","sources":["../../src/utils/countryFlags.tsx"],"sourcesContent":["import * as Flags from 'country-flag-icons/react/1x1';\
|
|
1
|
+
{"version":3,"file":"countryFlags.cjs.js","sources":["../../src/utils/countryFlags.tsx"],"sourcesContent":["import * as Flags from 'country-flag-icons/react/1x1';\n\nexport const getFlagComponent = (countryCode: string, isHovering?: boolean) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n \n return FlagComponent ? (\n <div\n className={`\n w-icon h-icon rounded-full overflow-hidden border-[0.9px] flex items-center justify-center relative\n ${isHovering ? 'border-neutral-100 dark:border-neutral-100' : 'border-neutral-400 dark:border-neutral-500'}\n `}\n >\n <FlagComponent\n style={{\n width: '110%',\n height: '110%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n ) : null;\n};\n\nexport const getFlagComponentSm = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-4 h-4 rounded-full overflow-hidden flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '120%',\n height: '120%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\nexport const getFlagComponentRectangle = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-7 h-5 rounded-md overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '110%',\n height: '110%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\nexport const getFlagComponentRectangleSm = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-4 h-3 rounded-sm overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '120%',\n height: '120%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\nexport const getFlagComponentRectangleMd = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-5 h-4 rounded-sm overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '115%',\n height: '115%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\n"],"names":["getFlagComponent","countryCode","isHovering","flagCode","FlagComponent","Flags","jsx","getFlagComponentSm","getFlagComponentRectangle","getFlagComponentRectangleSm","getFlagComponentRectangleMd"],"mappings":"ybAEaA,EAAmB,CAACC,EAAqBC,IAAyB,CAC7E,MAAMC,EAAWF,EAAY,MAAM,EAAG,CAAC,EACjCG,EAAgBC,EAAMF,CAA8B,EAE1D,OAAOC,EACLE,EAAAA,IAAC,MAAA,CACC,UAAW;AAAA;AAAA,UAEPJ,EAAa,6CAA+C,4CAA4C;AAAA,QAG5G,SAAAI,EAAAA,IAACF,EAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,UAAW,wBACX,SAAU,WACV,IAAK,MACL,KAAM,KAAA,CACR,CAAA,CACF,CAAA,EAEA,IACN,EAEaG,EAAsBN,GAAwB,CACzD,MAAME,EAAWF,EAAY,MAAM,EAAG,CAAC,EACjCG,EAAgBC,EAAMF,CAA8B,EAE1D,OAAKC,EAGHE,EAAAA,IAAC,MAAA,CAAI,UAAU,iFACb,SAAAA,EAAAA,IAACF,EAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,UAAW,wBACX,SAAU,WACV,IAAK,MACL,KAAM,KAAA,CACR,CAAA,EAEJ,EAdyB,IAgB7B,EAEaI,EAA6BP,GAAwB,CAChE,MAAME,EAAWF,EAAY,MAAM,EAAG,CAAC,EACjCG,EAAgBC,EAAMF,CAA8B,EAE1D,OAAKC,EAGHE,EAAAA,IAAC,MAAA,CAAI,UAAU,iIACb,SAAAA,EAAAA,IAACF,EAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,UAAW,wBACX,SAAU,WACV,IAAK,MACL,KAAM,KAAA,CACR,CAAA,EAEJ,EAdyB,IAgB7B,EAEaK,EAA+BR,GAAwB,CAClE,MAAME,EAAWF,EAAY,MAAM,EAAG,CAAC,EACjCG,EAAgBC,EAAMF,CAA8B,EAE1D,OAAKC,EAGHE,EAAAA,IAAC,MAAA,CAAI,UAAU,iIACb,SAAAA,EAAAA,IAACF,EAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,UAAW,wBACX,SAAU,WACV,IAAK,MACL,KAAM,KAAA,CACR,CAAA,EAEJ,EAdyB,IAgB7B,EAEaM,EAA+BT,GAAwB,CAClE,MAAME,EAAWF,EAAY,MAAM,EAAG,CAAC,EACjCG,EAAgBC,EAAMF,CAA8B,EAE1D,OAAKC,EAGHE,EAAAA,IAAC,MAAA,CAAI,UAAU,iIACb,SAAAA,EAAAA,IAACF,EAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,UAAW,wBACX,SAAU,WACV,IAAK,MACL,KAAM,KAAA,CACR,CAAA,EAEJ,EAdyB,IAgB7B"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { jsx as t } from "react/jsx-runtime";
|
|
2
2
|
import * as o from "country-flag-icons/react/1x1";
|
|
3
|
-
|
|
4
|
-
const i = (r, n) => {
|
|
3
|
+
const s = (r, n) => {
|
|
5
4
|
const e = r.slice(0, 2), l = o[e];
|
|
6
5
|
return l ? /* @__PURE__ */ t(
|
|
7
6
|
"div",
|
|
8
7
|
{
|
|
9
8
|
className: `
|
|
10
|
-
w-
|
|
9
|
+
w-icon h-icon rounded-full overflow-hidden border-[0.9px] flex items-center justify-center relative
|
|
11
10
|
${n ? "border-neutral-100 dark:border-neutral-100" : "border-neutral-400 dark:border-neutral-500"}
|
|
12
11
|
`,
|
|
13
12
|
children: /* @__PURE__ */ t(
|
|
@@ -25,7 +24,7 @@ const i = (r, n) => {
|
|
|
25
24
|
)
|
|
26
25
|
}
|
|
27
26
|
) : null;
|
|
28
|
-
},
|
|
27
|
+
}, i = (r) => {
|
|
29
28
|
const n = r.slice(0, 2), e = o[n];
|
|
30
29
|
return e ? /* @__PURE__ */ t("div", { className: "w-4 h-4 rounded-full overflow-hidden flex items-center justify-center relative", children: /* @__PURE__ */ t(
|
|
31
30
|
e,
|
|
@@ -40,7 +39,7 @@ const i = (r, n) => {
|
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
) }) : null;
|
|
43
|
-
},
|
|
42
|
+
}, d = (r) => {
|
|
44
43
|
const n = r.slice(0, 2), e = o[n];
|
|
45
44
|
return e ? /* @__PURE__ */ t("div", { className: "w-7 h-5 rounded-md overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative", children: /* @__PURE__ */ t(
|
|
46
45
|
e,
|
|
@@ -55,7 +54,7 @@ const i = (r, n) => {
|
|
|
55
54
|
}
|
|
56
55
|
}
|
|
57
56
|
) }) : null;
|
|
58
|
-
},
|
|
57
|
+
}, c = (r) => {
|
|
59
58
|
const n = r.slice(0, 2), e = o[n];
|
|
60
59
|
return e ? /* @__PURE__ */ t("div", { className: "w-4 h-3 rounded-sm overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative", children: /* @__PURE__ */ t(
|
|
61
60
|
e,
|
|
@@ -70,7 +69,7 @@ const i = (r, n) => {
|
|
|
70
69
|
}
|
|
71
70
|
}
|
|
72
71
|
) }) : null;
|
|
73
|
-
},
|
|
72
|
+
}, u = (r) => {
|
|
74
73
|
const n = r.slice(0, 2), e = o[n];
|
|
75
74
|
return e ? /* @__PURE__ */ t("div", { className: "w-5 h-4 rounded-sm overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative", children: /* @__PURE__ */ t(
|
|
76
75
|
e,
|
|
@@ -87,10 +86,10 @@ const i = (r, n) => {
|
|
|
87
86
|
) }) : null;
|
|
88
87
|
};
|
|
89
88
|
export {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
s as getFlagComponent,
|
|
90
|
+
d as getFlagComponentRectangle,
|
|
91
|
+
u as getFlagComponentRectangleMd,
|
|
92
|
+
c as getFlagComponentRectangleSm,
|
|
93
|
+
i as getFlagComponentSm
|
|
95
94
|
};
|
|
96
95
|
//# sourceMappingURL=countryFlags.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"countryFlags.es.js","sources":["../../src/utils/countryFlags.tsx"],"sourcesContent":["import * as Flags from 'country-flag-icons/react/1x1';\
|
|
1
|
+
{"version":3,"file":"countryFlags.es.js","sources":["../../src/utils/countryFlags.tsx"],"sourcesContent":["import * as Flags from 'country-flag-icons/react/1x1';\n\nexport const getFlagComponent = (countryCode: string, isHovering?: boolean) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n \n return FlagComponent ? (\n <div\n className={`\n w-icon h-icon rounded-full overflow-hidden border-[0.9px] flex items-center justify-center relative\n ${isHovering ? 'border-neutral-100 dark:border-neutral-100' : 'border-neutral-400 dark:border-neutral-500'}\n `}\n >\n <FlagComponent\n style={{\n width: '110%',\n height: '110%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n ) : null;\n};\n\nexport const getFlagComponentSm = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-4 h-4 rounded-full overflow-hidden flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '120%',\n height: '120%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\nexport const getFlagComponentRectangle = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-7 h-5 rounded-md overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '110%',\n height: '110%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\nexport const getFlagComponentRectangleSm = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-4 h-3 rounded-sm overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '120%',\n height: '120%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\nexport const getFlagComponentRectangleMd = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-5 h-4 rounded-sm overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '115%',\n height: '115%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\n"],"names":["getFlagComponent","countryCode","isHovering","flagCode","FlagComponent","Flags","jsx","getFlagComponentSm","getFlagComponentRectangle","getFlagComponentRectangleSm","getFlagComponentRectangleMd"],"mappings":";;AAEO,MAAMA,IAAmB,CAACC,GAAqBC,MAAyB;AAC7E,QAAMC,IAAWF,EAAY,MAAM,GAAG,CAAC,GACjCG,IAAgBC,EAAMF,CAA8B;AAE1D,SAAOC,IACL,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA;AAAA,UAEPJ,IAAa,+CAA+C,4CAA4C;AAAA;AAAA,MAG5G,UAAA,gBAAAI;AAAA,QAACF;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,WAAW;AAAA,YACX,UAAU;AAAA,YACV,KAAK;AAAA,YACL,MAAM;AAAA,UAAA;AAAA,QACR;AAAA,MAAA;AAAA,IACF;AAAA,EAAA,IAEA;AACN,GAEaG,IAAqB,CAACN,MAAwB;AACzD,QAAME,IAAWF,EAAY,MAAM,GAAG,CAAC,GACjCG,IAAgBC,EAAMF,CAA8B;AAE1D,SAAKC,IAGH,gBAAAE,EAAC,OAAA,EAAI,WAAU,kFACb,UAAA,gBAAAA;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,UAAU;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,EAAA,GAEJ,IAdyB;AAgB7B,GAEaI,IAA4B,CAACP,MAAwB;AAChE,QAAME,IAAWF,EAAY,MAAM,GAAG,CAAC,GACjCG,IAAgBC,EAAMF,CAA8B;AAE1D,SAAKC,IAGH,gBAAAE,EAAC,OAAA,EAAI,WAAU,kIACb,UAAA,gBAAAA;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,UAAU;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,EAAA,GAEJ,IAdyB;AAgB7B,GAEaK,IAA8B,CAACR,MAAwB;AAClE,QAAME,IAAWF,EAAY,MAAM,GAAG,CAAC,GACjCG,IAAgBC,EAAMF,CAA8B;AAE1D,SAAKC,IAGH,gBAAAE,EAAC,OAAA,EAAI,WAAU,kIACb,UAAA,gBAAAA;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,UAAU;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,EAAA,GAEJ,IAdyB;AAgB7B,GAEaM,IAA8B,CAACT,MAAwB;AAClE,QAAME,IAAWF,EAAY,MAAM,GAAG,CAAC,GACjCG,IAAgBC,EAAMF,CAA8B;AAE1D,SAAKC,IAGH,gBAAAE,EAAC,OAAA,EAAI,WAAU,kIACb,UAAA,gBAAAA;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,UAAU;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,EAAA,GAEJ,IAdyB;AAgB7B;"}
|