@lax-wp/design-system 0.13.38 → 0.13.39-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data-display/infinite-table/body/cell/InlineEditField.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/InlineEditField.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/InlineEditField.es.js +40 -39
- package/dist/components/data-display/infinite-table/body/cell/InlineEditField.es.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.es.js +8 -11
- package/dist/components/forms/creatable-select/CreatableSelect.es.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.es.js +1 -1
- package/dist/components/forms/icon-picker/IconPicker.es.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.d.ts +3 -0
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js +115 -113
- package/dist/components/forms/master-data-input/MasterDataInputField.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 s=require("react/jsx-runtime"),re=require("../../validateCell.cjs.js"),H=require("../../../../../constants/table.cjs.js"),ae=require("../../../../forms/date-time-field/DateTimeField.cjs.js"),ne=require("../../../../forms/select-field/SelectField.cjs.js"),oe=require("../../../../forms/toggle/Toggle.cjs.js"),ue=require("@mui/icons-material"),le=require("../../../../../_virtual/index.cjs.js"),d=require("react"),ie=require("../../context.cjs.js"),se=require("./InlineCurrencyField.cjs.js"),ce=require("./MasterDataInlineField.cjs.js"),de=require("../../../../icon/icons.generated.cjs.js"),x=new Map;let w=null,p=null;const F=t=>({target:{value:t}}),me=({cell:t,id:l,inlineEditing:v,cellRef:X,handleCellValueChange:y,registerValidation:I})=>{const{openMasterDataModal:J,selectedMasterData:k,clearSelectedMasterData:Y,getCurrencyForCell:N,getPendingEdit:M,addPendingEdit:f,onFieldOperationFlow:R,fieldOperationLoading:U}=d.useContext(ie.TableContext),Q=U===`${l}-${t?.column?.id}`,E=!!U,b=d.useCallback((a,u)=>{R&&R({value:a,fieldId:t?.column?.id,rowId:String(l),rowData:t?.row?.original,columnKey:t?.column?.key||"",flowName:t?.column?.live_field_source,isLiveField:t?.column?.is_live_field,meta:u})},[t?.column?.id,t?.column?.is_live_field,t?.column?.key,t?.column?.live_field_source,t?.row?.original,l,R]),V=()=>{const a=t?.row?.original?.__rawData,u=t?.column?.Header,r=t?.column?.key,e=u?a?.[u]?.currency_code:void 0,n=r?a?.[r]?.currency_code:void 0;return e&&e!==""?e:n&&n!==""?n:t?.column?.currencyCode||"USD"},o=t.column.key||"",_=`${l}-${o}`,W=N?.(_),z=M?.(String(l),o),[c,h]=d.useState({value:z?.value!==void 0?z.value:t.value||"",currencyCode:z?.meta?.currency_code||W||V()}),[K,D]=d.useState(null),Z=(()=>{if(v!==o)return null;const a=typeof c.value=="number"?String(c.value):c.value,u=re.validateCellValue(a,t?.column);return u.isValid?null:u.error||null})(),ee=M?.(String(l),o)?.validationError,L=K||Z||ee||null,B=d.useRef(null);d.useEffect(()=>{if(v===o&&B.current!==o){const u=N?.(`${l}-${o}`),r=M?.(String(l),o),e=r?.value!==void 0?r.value:t.value||"",n=r?.meta?.currency_code||u||V();h({value:e,currencyCode:n})}v!==o&&B.current===o&&D(null),B.current=v},[v,o,N,M,l,t.value]),d.useEffect(()=>{k&&v===o&&t?.column?.masterDataColumnName&&t?.column?.masterDataName&&(f&&f(String(l),o,{value:k.value,meta:{reference:k.reference},originalValue:t.value}),y(F(k.value)),b(k.value,{reference:k.reference}),Y?.())},[k,v,o,t?.column?.masterDataColumnName,t?.column?.masterDataName,f,l,t.value,y,b,Y]);const g=a=>t?.column?.is_required&&(a==null||a===""||typeof a=="string"&&a.trim()==="")?(D("Field required"),!1):(D(null),!0),A=a=>g(a)?a&&a.trim()!==""&&!H.REGEX.url.test(a)?(D("Invalid URL format"),!1):(D(null),!0):!1,O=a=>g(a)?a&&a.trim()!==""&&!H.REGEX.email.test(a)?(D("Email is not valid"),!1):(D(null),!0):!1,m=d.useRef(c);d.useEffect(()=>{m.current=c},[c]);const j=d.useRef(null),i=`${l}-${o}`;d.useLayoutEffect(()=>{const a=j.current;if(!a)return;const u=x.get(i);if(u){a.focus();try{a.setSelectionRange(u.start,u.end)}catch{}}else w!==i&&a.focus()},[i]);const S=d.useRef();d.useEffect(()=>()=>{S.current&&clearTimeout(S.current)},[]);const P=d.useCallback(a=>{y(F(a)),f&&f(String(l),o,{value:a,originalValue:t.value})},[y,f,l,o,t.value]),T=d.useCallback(a=>{S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{P(a)},300)},[P]),q=d.useCallback(()=>{S.current&&(clearTimeout(S.current),S.current=void 0,P(String(m.current.value??"")))},[P]),$=d.useCallback(()=>{const a=t?.column?.type?.toLowerCase(),u=m.current.value;switch(a){case"url":A(String(u??""));break;case"e-mail":O(String(u??""));break;default:g(u);break}},[t?.column?.type]),G=d.useCallback(()=>{const a=t?.column?.type?.toLowerCase(),u=m.current.value,r=m.current.currencyCode;let e=!0;switch(a){case"url":e=A(String(u??""));break;case"e-mail":e=O(String(u??""));break;default:e=g(u);break}if(!e)return{isValid:!1};let n=null;return a==="currency"&&(n={currency_code:N?.(_)||r}),{isValid:!0,value:typeof u=="number"?String(u):u,meta:n}},[t?.column?.type,_,N]);d.useEffect(()=>{I&&v===o&&I(G)},[I,G,v,o]);const te=()=>{if(t?.column?.is_master_data&&t?.column?.masterDataName&&(t?.column?.masterDataColumnName||t?.column?.masterDataFormula)){const r=M?.(String(l),o),e=k?.value??r?.value??t.value;return s.jsx("div",{onMouseDown:n=>n.stopPropagation(),className:"z-[120] h-full w-full",children:s.jsx(ce.MasterDataInlineField,{id:`master-data-cell-${l}-${t.column.id}`,value:e,onChange:(n,C)=>{y(F(n)),f&&f(String(l),o,{value:n,meta:{reference:C||null},originalValue:t.value}),b(n,{reference:C||void 0}),g(n??"")},placeholder:t.column?.Header,masterDataName:t.column.masterDataName,masterDataColumnName:t.column.masterDataColumnName,masterDataFormula:t.column.masterDataFormula,masterDataFilters:t.column.masterDataFilters,onOpenMasterDataModal:J,reference:r?.meta?.reference})})}const a=t?.column?.type?.toLowerCase(),u=o?t?.row?.original?.__cellMetadata?.[o]:void 0;switch(a){case"choice":{const r=u?.choices??t?.column?.choices;return s.jsx("div",{onMouseDown:e=>e.stopPropagation(),children:s.jsx(ne.SelectField,{id:`select-cell-${l}-${t.column.id}`,value:c.value||null,selectOptions:r?.map(e=>({label:e,value:e}))||[],onChange:e=>{const n=e?Array.isArray(e)?e[0]?.value?.toString()||"":e?.value?.toString()||"":"";h(C=>({...C,value:n})),y(F(n)),f&&f(String(l),o,{value:n,originalValue:t.value}),b(n),g(n)},allowClear:!0,inputStyles:{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)"},className:"z-[120]"})})}case"datetime":case"date":return s.jsx("div",{onMouseDown:r=>{r.stopPropagation(),r.target.tagName!=="INPUT"&&r.preventDefault()},children:s.jsx(ae.DateTimeField,{id:`date-cell-${l}-${t.column.id}`,value:c.value||void 0,handleOnChange:r=>{const e=r||"";h(n=>({...n,value:e})),y(F(e)),f&&f(String(l),o,{value:e,originalValue:t.value}),b(e),g(e)},showTime:a==="datetime",dateFormat:a==="date"?"MM/DD/YYYY":void 0,className:"z-[120] w-full"})});case"currency":{const r=V();return s.jsx("div",{onMouseDown:e=>e.stopPropagation(),className:"z-[120] h-full w-full",children:s.jsx(se.InlineCurrencyField,{id:_,value:String(c.value??""),onChange:(e,n)=>{h(C=>({value:e,currencyCode:n||C.currencyCode})),y(F(e)),f&&f(String(l),o,{value:e,meta:{currency_code:n},originalValue:t.value,originalMeta:{currency_code:r}}),g(e),b(e,{currency_code:n})},currencyCode:c.currencyCode,inputStyle:{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)"},autoFocus:!0,disabled:E})})}case"percentage":return s.jsxs("label",{className:"relative block h-full",onMouseDown:r=>r.stopPropagation(),children:[s.jsx("input",{ref:j,type:"number",defaultValue:String(c.value??""),onChange:r=>{try{x.set(i,{start:r.target.selectionStart??0,end:r.target.selectionEnd??0})}catch{}const e=r.target.value;h(n=>({...n,value:e})),m.current={...m.current,value:e},p=i,g(e),T(e)},onBlur:()=>{w=i,x.delete(i),q(),$(),p===i&&(p=null,b(m.current.value)),requestAnimationFrame(()=>{w=null})},onKeyDown:r=>{r.stopPropagation()},className:"border border-gray-300 h-full text-gray-900 dark:bg-black-800 dark:text-white text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 dark:focus:ring-white dark:focus:border-white block w-full px-2.5 py-1.5 font-inter font-medium disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400",id:`percentage-cell-${l}-${t.column.id}`,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)"},autoComplete:"off",disabled:E}),s.jsx("span",{className:"absolute inset-y-0 right-3 flex items-center pointer-events-none h-full dark:text-black-100",children:"%"})]});case"boolean":{const r=c.value===!0||c.value==="true"||c.value==="Yes"||c.value==="True"||c.value===1;return s.jsx("div",{onMouseDown:e=>e.stopPropagation(),className:"h-full w-full flex items-center px-2.5 bg-white dark:bg-black-800 rounded border-2 focus:outline-primary-600 border border-primary-600 dark:border-black-700 z-[120]",children:s.jsx(oe.Toggle,{id:`toggle-cell-${l}-${t.column.id}`,isChecked:r,onChange:e=>{h(n=>({...n,value:e})),y(F(e)),f&&f(String(l),o,{value:e,originalValue:t.value}),b(e)},hideStatus:!1,labelDirection:"right",stopClickPropagation:!0,statusText:r?"Yes":"No"})})}case"url":return s.jsx("input",{ref:j,type:"url",defaultValue:String(c.value??""),onChange:r=>{x.set(i,{start:r.target.selectionStart??0,end:r.target.selectionEnd??0});const e=r.target.value;h(n=>({...n,value:e})),m.current={...m.current,value:e},p=i,K?A(e):g(e),T(e)},onBlur:()=>{w=i,x.delete(i),q(),$(),p===i&&(p=null,b(m.current.value)),requestAnimationFrame(()=>{w=null})},onKeyDown:r=>{r.stopPropagation()},onMouseDown:r=>r.stopPropagation(),className:"text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800",style:{height:"var(--row-height)"},disabled:E});case"e-mail":return s.jsx("input",{ref:j,type:"email",defaultValue:String(c.value??""),onChange:r=>{try{x.set(i,{start:r.target.selectionStart??0,end:r.target.selectionEnd??0})}catch{}const e=r.target.value;h(n=>({...n,value:e})),m.current={...m.current,value:e},p=i,K?O(e):g(e),T(e)},onBlur:()=>{w=i,x.delete(i),q(),$(),p===i&&(p=null,b(m.current.value)),requestAnimationFrame(()=>{w=null})},onKeyDown:r=>{r.stopPropagation()},onMouseDown:r=>r.stopPropagation(),className:"text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800",style:{height:"var(--row-height)"},disabled:E});default:return s.jsx("input",{ref:j,type:"text",defaultValue:String(c.value??""),onChange:r=>{x.set(i,{start:r.target.selectionStart??0,end:r.target.selectionEnd??0});const e=r.target.value;h(n=>({...n,value:e})),m.current={...m.current,value:e},p=i,g(e),T(e)},onBlur:()=>{w=i,x.delete(i),q(),$(),p===i&&(p=null,b(m.current.value)),requestAnimationFrame(()=>{w=null})},onKeyDown:r=>{r.stopPropagation()},onMouseDown:r=>r.stopPropagation(),className:"text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800",style:{height:"var(--row-height)"},disabled:E})}};return s.jsxs("div",{ref:X,className:"relative h-full w-full overflow-visible",children:[s.jsx("div",{className:le("border p-0.5 rounded-lg h-full",L?"border-error-600":"border-neutral-200 dark:border-black-700",E&&"pointer-events-none opacity-70"),children:te()}),!!t?.column?.is_live_field&&s.jsx("div",{className:"absolute -top-1.5 -right-1.5 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-[125]",children:Q?s.jsx(de.LoadingSpinnerIcon,{className:"text-primary-600 dark:text-white",size:8}):s.jsx(ue.BoltOutlined,{sx:{fontSize:12,color:"var(--color-primary-600)"}})}),L&&s.jsx("div",{className:"absolute top-full left-0 mt-1 text-error-600 text-xs font-medium z-[130] bg-white dark:bg-black-800 px-2 py-1 rounded shadow-lg w-full",children:L})]})};exports.InlineEditField=me;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),re=require("../../validateCell.cjs.js"),H=require("../../../../../constants/table.cjs.js"),ae=require("../../../../forms/date-time-field/DateTimeField.cjs.js"),ne=require("../../../../forms/select-field/SelectField.cjs.js"),oe=require("../../../../forms/toggle/Toggle.cjs.js"),ue=require("@mui/icons-material"),le=require("../../../../../_virtual/index.cjs.js"),d=require("react"),ie=require("../../context.cjs.js"),se=require("./InlineCurrencyField.cjs.js"),ce=require("./MasterDataInlineField.cjs.js"),de=require("../../../../icon/icons.generated.cjs.js"),x=new Map;let w=null,p=null;const F=t=>({target:{value:t}}),me=({cell:t,id:l,inlineEditing:v,cellRef:X,handleCellValueChange:y,registerValidation:I})=>{const{openMasterDataModal:J,selectedMasterData:k,clearSelectedMasterData:Y,getCurrencyForCell:N,getPendingEdit:M,addPendingEdit:f,onFieldOperationFlow:R,fieldOperationLoading:U}=d.useContext(ie.TableContext),Q=U===`${l}-${t?.column?.id}`,E=!!U,b=d.useCallback((a,o)=>{R&&R({value:a,fieldId:t?.column?.id,rowId:String(l),rowData:t?.row?.original,columnKey:t?.column?.key||"",flowName:t?.column?.live_field_source,isLiveField:t?.column?.is_live_field,meta:o})},[t?.column?.id,t?.column?.is_live_field,t?.column?.key,t?.column?.live_field_source,t?.row?.original,l,R]),V=()=>{const a=t?.row?.original?.__rawData,o=t?.column?.Header,r=t?.column?.key,e=o?a?.[o]?.currency_code:void 0,n=r?a?.[r]?.currency_code:void 0;return e&&e!==""?e:n&&n!==""?n:t?.column?.currencyCode||"USD"},u=t.column.key||"",_=`${l}-${u}`,W=N?.(_),z=M?.(String(l),u),[c,h]=d.useState({value:z?.value!==void 0?z.value:t.value||"",currencyCode:z?.meta?.currency_code||W||V()}),[K,D]=d.useState(null),Z=(()=>{if(v!==u)return null;const a=typeof c.value=="number"?String(c.value):c.value,o=re.validateCellValue(a,t?.column);return o.isValid?null:o.error||null})(),ee=M?.(String(l),u)?.validationError,L=K||Z||ee||null,B=d.useRef(null);d.useEffect(()=>{if(v===u&&B.current!==u){const o=N?.(`${l}-${u}`),r=M?.(String(l),u),e=r?.value!==void 0?r.value:t.value||"",n=r?.meta?.currency_code||o||V();h({value:e,currencyCode:n})}v!==u&&B.current===u&&D(null),B.current=v},[v,u,N,M,l,t.value]),d.useEffect(()=>{k&&v===t.column.key&&(t?.column?.masterDataColumnName||t?.column?.masterDataFormula)&&t?.column?.masterDataName&&(f&&f(String(l),u,{value:k.value,meta:{reference:k.reference},originalValue:t.value}),y(F(k.value)),b(k.value,{reference:k.reference}),Y?.())},[k,v,u,t?.column?.masterDataFormula,t?.column?.masterDataColumnName,t?.column?.masterDataName,f,l,t.value,y,b,Y]);const g=a=>t?.column?.is_required&&(a==null||a===""||typeof a=="string"&&a.trim()==="")?(D("Field required"),!1):(D(null),!0),A=a=>g(a)?a&&a.trim()!==""&&!H.REGEX.url.test(a)?(D("Invalid URL format"),!1):(D(null),!0):!1,O=a=>g(a)?a&&a.trim()!==""&&!H.REGEX.email.test(a)?(D("Email is not valid"),!1):(D(null),!0):!1,m=d.useRef(c);d.useEffect(()=>{m.current=c},[c]);const j=d.useRef(null),i=`${l}-${u}`;d.useLayoutEffect(()=>{const a=j.current;if(!a)return;const o=x.get(i);if(o){a.focus();try{a.setSelectionRange(o.start,o.end)}catch{}}else w!==i&&a.focus()},[i]);const S=d.useRef();d.useEffect(()=>()=>{S.current&&clearTimeout(S.current)},[]);const P=d.useCallback(a=>{y(F(a)),f&&f(String(l),u,{value:a,originalValue:t.value})},[y,f,l,u,t.value]),T=d.useCallback(a=>{S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{P(a)},300)},[P]),q=d.useCallback(()=>{S.current&&(clearTimeout(S.current),S.current=void 0,P(String(m.current.value??"")))},[P]),$=d.useCallback(()=>{const a=t?.column?.type?.toLowerCase(),o=m.current.value;switch(a){case"url":A(String(o??""));break;case"e-mail":O(String(o??""));break;default:g(o);break}},[t?.column?.type]),G=d.useCallback(()=>{const a=t?.column?.type?.toLowerCase(),o=m.current.value,r=m.current.currencyCode;let e=!0;switch(a){case"url":e=A(String(o??""));break;case"e-mail":e=O(String(o??""));break;default:e=g(o);break}if(!e)return{isValid:!1};let n=null;return a==="currency"&&(n={currency_code:N?.(_)||r}),{isValid:!0,value:typeof o=="number"?String(o):o,meta:n}},[t?.column?.type,_,N]);d.useEffect(()=>{I&&v===u&&I(G)},[I,G,v,u]);const te=()=>{if(t?.column?.is_master_data&&t?.column?.masterDataName&&(t?.column?.masterDataColumnName||t?.column?.masterDataFormula)){const r=M?.(String(l),u),e=k?.value??r?.value??t.value;return s.jsx("div",{onMouseDown:n=>n.stopPropagation(),className:"z-[120] h-full w-full",children:s.jsx(ce.MasterDataInlineField,{id:`master-data-cell-${l}-${t.column.id}`,value:e,onChange:(n,C)=>{y(F(n)),f&&f(String(l),u,{value:n,meta:{reference:C||null},originalValue:t.value}),b(n,{reference:C||void 0}),g(n??"")},placeholder:t.column?.Header,masterDataName:t.column.masterDataName,masterDataColumnName:t.column.masterDataColumnName,masterDataFormula:t.column.masterDataFormula,masterDataFilters:t.column.masterDataFilters,onOpenMasterDataModal:J,reference:r?.meta?.reference})})}const a=t?.column?.type?.toLowerCase(),o=u?t?.row?.original?.__cellMetadata?.[u]:void 0;switch(a){case"choice":{const r=o?.choices??t?.column?.choices;return s.jsx("div",{onMouseDown:e=>e.stopPropagation(),children:s.jsx(ne.SelectField,{id:`select-cell-${l}-${t.column.id}`,value:c.value||null,selectOptions:r?.map(e=>({label:e,value:e}))||[],onChange:e=>{const n=e?Array.isArray(e)?e[0]?.value?.toString()||"":e?.value?.toString()||"":"";h(C=>({...C,value:n})),y(F(n)),f&&f(String(l),u,{value:n,originalValue:t.value}),b(n),g(n)},allowClear:!0,inputStyles:{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)"},className:"z-[120]"})})}case"datetime":case"date":return s.jsx("div",{onMouseDown:r=>{r.stopPropagation(),r.target.tagName!=="INPUT"&&r.preventDefault()},children:s.jsx(ae.DateTimeField,{id:`date-cell-${l}-${t.column.id}`,value:c.value||void 0,handleOnChange:r=>{const e=r||"";h(n=>({...n,value:e})),y(F(e)),f&&f(String(l),u,{value:e,originalValue:t.value}),b(e),g(e)},showTime:a==="datetime",dateFormat:a==="date"?"MM/DD/YYYY":void 0,className:"z-[120] w-full"})});case"currency":{const r=V();return s.jsx("div",{onMouseDown:e=>e.stopPropagation(),className:"z-[120] h-full w-full",children:s.jsx(se.InlineCurrencyField,{id:_,value:String(c.value??""),onChange:(e,n)=>{h(C=>({value:e,currencyCode:n||C.currencyCode})),y(F(e)),f&&f(String(l),u,{value:e,meta:{currency_code:n},originalValue:t.value,originalMeta:{currency_code:r}}),g(e),b(e,{currency_code:n})},currencyCode:c.currencyCode,inputStyle:{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)"},autoFocus:!0,disabled:E})})}case"percentage":return s.jsxs("label",{className:"relative block h-full",onMouseDown:r=>r.stopPropagation(),children:[s.jsx("input",{ref:j,type:"number",defaultValue:String(c.value??""),onChange:r=>{try{x.set(i,{start:r.target.selectionStart??0,end:r.target.selectionEnd??0})}catch{}const e=r.target.value;h(n=>({...n,value:e})),m.current={...m.current,value:e},p=i,g(e),T(e)},onBlur:()=>{w=i,x.delete(i),q(),$(),p===i&&(p=null,b(m.current.value)),requestAnimationFrame(()=>{w=null})},onKeyDown:r=>{r.stopPropagation()},className:"border border-gray-300 h-full text-gray-900 dark:bg-black-800 dark:text-white text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 dark:focus:ring-white dark:focus:border-white block w-full px-2.5 py-1.5 font-inter font-medium disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400",id:`percentage-cell-${l}-${t.column.id}`,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)"},autoComplete:"off",disabled:E}),s.jsx("span",{className:"absolute inset-y-0 right-3 flex items-center pointer-events-none h-full dark:text-black-100",children:"%"})]});case"boolean":{const r=c.value===!0||c.value==="true"||c.value==="Yes"||c.value==="True"||c.value===1;return s.jsx("div",{onMouseDown:e=>e.stopPropagation(),className:"h-full w-full flex items-center px-2.5 bg-white dark:bg-black-800 rounded border-2 focus:outline-primary-600 border border-primary-600 dark:border-black-700 z-[120]",children:s.jsx(oe.Toggle,{id:`toggle-cell-${l}-${t.column.id}`,isChecked:r,onChange:e=>{h(n=>({...n,value:e})),y(F(e)),f&&f(String(l),u,{value:e,originalValue:t.value}),b(e)},hideStatus:!1,labelDirection:"right",stopClickPropagation:!0,statusText:r?"Yes":"No"})})}case"url":return s.jsx("input",{ref:j,type:"url",defaultValue:String(c.value??""),onChange:r=>{x.set(i,{start:r.target.selectionStart??0,end:r.target.selectionEnd??0});const e=r.target.value;h(n=>({...n,value:e})),m.current={...m.current,value:e},p=i,K?A(e):g(e),T(e)},onBlur:()=>{w=i,x.delete(i),q(),$(),p===i&&(p=null,b(m.current.value)),requestAnimationFrame(()=>{w=null})},onKeyDown:r=>{r.stopPropagation()},onMouseDown:r=>r.stopPropagation(),className:"text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800",style:{height:"var(--row-height)"},disabled:E});case"e-mail":return s.jsx("input",{ref:j,type:"email",defaultValue:String(c.value??""),onChange:r=>{try{x.set(i,{start:r.target.selectionStart??0,end:r.target.selectionEnd??0})}catch{}const e=r.target.value;h(n=>({...n,value:e})),m.current={...m.current,value:e},p=i,K?O(e):g(e),T(e)},onBlur:()=>{w=i,x.delete(i),q(),$(),p===i&&(p=null,b(m.current.value)),requestAnimationFrame(()=>{w=null})},onKeyDown:r=>{r.stopPropagation()},onMouseDown:r=>r.stopPropagation(),className:"text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800",style:{height:"var(--row-height)"},disabled:E});default:return s.jsx("input",{ref:j,type:"text",defaultValue:String(c.value??""),onChange:r=>{x.set(i,{start:r.target.selectionStart??0,end:r.target.selectionEnd??0});const e=r.target.value;h(n=>({...n,value:e})),m.current={...m.current,value:e},p=i,g(e),T(e)},onBlur:()=>{w=i,x.delete(i),q(),$(),p===i&&(p=null,b(m.current.value)),requestAnimationFrame(()=>{w=null})},onKeyDown:r=>{r.stopPropagation()},onMouseDown:r=>r.stopPropagation(),className:"text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800",style:{height:"var(--row-height)"},disabled:E})}};return s.jsxs("div",{ref:X,className:"relative h-full w-full overflow-visible",children:[s.jsx("div",{className:le("border p-0.5 rounded-lg h-full",L?"border-error-600":"border-neutral-200 dark:border-black-700",E&&"pointer-events-none opacity-70"),children:te()}),!!t?.column?.is_live_field&&s.jsx("div",{className:"absolute -top-1.5 -right-1.5 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-[125]",children:Q?s.jsx(de.LoadingSpinnerIcon,{className:"text-primary-600 dark:text-white",size:8}):s.jsx(ue.BoltOutlined,{sx:{fontSize:12,color:"var(--color-primary-600)"}})}),L&&s.jsx("div",{className:"absolute top-full left-0 mt-1 text-error-600 text-xs font-medium z-[130] bg-white dark:bg-black-800 px-2 py-1 rounded shadow-lg w-full",children:L})]})};exports.InlineEditField=me;
|
|
2
2
|
//# sourceMappingURL=InlineEditField.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineEditField.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/InlineEditField.tsx"],"sourcesContent":["import type { ICell, ValidateAndSaveResult } from '../../types';\nimport { validateCellValue } from '../../validateCell';\nimport { REGEX } from '../../../../../constants/table';\nimport { DateTimeField } from '../../../../forms/date-time-field/DateTimeField';\nimport { SelectField } from '../../../../forms/select-field/SelectField';\nimport { Toggle } from '../../../../forms/toggle/Toggle';\nimport { BoltOutlined } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { TableContext } from '../../context';\nimport { InlineCurrencyField } from './InlineCurrencyField';\nimport { MasterDataInlineField } from './MasterDataInlineField';\nimport { LoadingSpinnerIcon } from '../../../../icon';\n\ntype InlineEditFieldProps = {\n cell: ICell;\n id: string | number;\n inlineEditing: string | null;\n cellRef: React.RefObject<HTMLDivElement>;\n handleCellValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n handleUpdateCellData: (\n directValue?: string | boolean | null,\n meta?: { currency_code?: string | null; reference?: unknown | null; [key: string]: unknown | null } | null,\n ) => void;\n registerValidation?: (validateFn: () => ValidateAndSaveResult) => void;\n};\n\ntype TSelectedOption = { label: string; value: string };\ntype TSelectedOptions = TSelectedOption | TSelectedOption[] | null;\n\nconst _cursorPositionCache = new Map<string, { start: number; end: number }>();\nlet _blurringCellKey: string | null = null;\nlet _pendingFieldOpCellKey: string | null = null;\n\nconst createSyntheticChangeEvent = (value: string | number | boolean | null): React.ChangeEvent<HTMLInputElement> => {\n return {\n target: { value } as HTMLInputElement,\n } as React.ChangeEvent<HTMLInputElement>;\n};\n\nexport const InlineEditField: React.FC<InlineEditFieldProps> = ({ cell, id, inlineEditing, cellRef, handleCellValueChange, registerValidation }) => {\n const {\n openMasterDataModal,\n selectedMasterData,\n clearSelectedMasterData,\n getCurrencyForCell,\n getPendingEdit,\n addPendingEdit,\n onFieldOperationFlow,\n fieldOperationLoading,\n } = useContext(TableContext);\n\n const isFieldOperationLoading = fieldOperationLoading === `${id}-${cell?.column?.id}`;\n const isAnyFieldOperationLoading = Boolean(fieldOperationLoading);\n\n const callLiveFieldOperation = useCallback(\n (value: unknown, meta?: { reference?: unknown; currency_code?: string }) => {\n if (!onFieldOperationFlow) return;\n\n onFieldOperationFlow({\n value,\n fieldId: cell?.column?.id as string,\n rowId: String(id),\n rowData: cell?.row?.original as Record<string, unknown>,\n columnKey: (cell?.column?.key as string) || '',\n flowName: cell?.column?.live_field_source as string | undefined,\n isLiveField: cell?.column?.is_live_field as boolean | undefined,\n meta,\n });\n },\n [\n cell?.column?.id,\n cell?.column?.is_live_field,\n cell?.column?.key,\n cell?.column?.live_field_source,\n cell?.row?.original,\n id,\n onFieldOperationFlow,\n ],\n );\n\n const getCurrencyFromCell = () => {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as string | undefined;\n const columnKey = cell?.column?.key as string | undefined;\n\n const dataFromHeader = headerKey ? rawData?.[headerKey]?.currency_code : undefined;\n const dataFromKey = columnKey ? rawData?.[columnKey]?.currency_code : undefined;\n\n if (dataFromHeader && dataFromHeader !== '') {\n return dataFromHeader as string;\n }\n if (dataFromKey && dataFromKey !== '') {\n return dataFromKey as string;\n }\n\n return (cell?.column?.currencyCode as string) || 'USD';\n };\n\n const columnKey = (cell.column.key as string) || '';\n const currencyCellId = `${id}-${columnKey}`;\n const contextCurrency = getCurrencyForCell?.(currencyCellId);\n const initialPendingEdit = getPendingEdit?.(String(id), columnKey);\n\n const [fieldState, setFieldState] = useState<{ value: string | number | boolean | null; currencyCode: string }>({\n value: initialPendingEdit?.value !== undefined ? (initialPendingEdit.value as string | number | boolean | null) : ((cell.value as string | number | boolean | null) || ''),\n currencyCode: (initialPendingEdit?.meta?.currency_code as string) || contextCurrency || getCurrencyFromCell(),\n });\n const [validationError, setValidationError] = useState<string | null>(null);\n\n const computedValidationError = (() => {\n if (inlineEditing !== columnKey) return null;\n const valueToValidate = typeof fieldState.value === 'number' ? String(fieldState.value) : fieldState.value;\n const result = validateCellValue(valueToValidate, cell?.column as { type?: string; is_required?: boolean });\n return result.isValid ? null : result.error || null;\n })();\n\n const pendingError = getPendingEdit?.(String(id), columnKey)?.validationError;\n const displayValidationError = validationError || computedValidationError || pendingError || null;\n\n const previousInlineEditingRef = useRef<string | null>(null);\n\n useEffect(() => {\n const isEnteringEditMode = inlineEditing === columnKey && previousInlineEditingRef.current !== columnKey;\n\n if (isEnteringEditMode) {\n const currencyFromContext = getCurrencyForCell?.(`${id}-${columnKey}`);\n const pendingEdit = getPendingEdit?.(String(id), columnKey);\n const initialValue = pendingEdit?.value !== undefined ? pendingEdit.value : ((cell.value as string | boolean | null) || '');\n const initialCurrency = (pendingEdit?.meta?.currency_code as string) || currencyFromContext || getCurrencyFromCell();\n\n setFieldState({\n value: initialValue as string | number | boolean | null,\n currencyCode: initialCurrency,\n });\n }\n\n if (inlineEditing !== columnKey && previousInlineEditingRef.current === columnKey) {\n setValidationError(null);\n }\n\n previousInlineEditingRef.current = inlineEditing;\n }, [inlineEditing, columnKey, getCurrencyForCell, getPendingEdit, id, cell.value]);\n\n useEffect(() => {\n if (selectedMasterData && inlineEditing === columnKey && cell?.column?.masterDataColumnName && cell?.column?.masterDataName) {\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value: selectedMasterData.value as string | boolean | null,\n meta: { reference: selectedMasterData.reference },\n originalValue: cell.value,\n });\n }\n handleCellValueChange(createSyntheticChangeEvent(selectedMasterData.value as string | number | boolean | null));\n callLiveFieldOperation(selectedMasterData.value, { reference: selectedMasterData.reference });\n clearSelectedMasterData?.();\n }\n }, [\n selectedMasterData,\n inlineEditing,\n columnKey,\n cell?.column?.masterDataColumnName,\n cell?.column?.masterDataName,\n addPendingEdit,\n id,\n cell.value,\n handleCellValueChange,\n callLiveFieldOperation,\n clearSelectedMasterData,\n ]);\n\n const validateRequiredField = (value: string | number | boolean | null): boolean => {\n if (cell?.column?.is_required) {\n const isEmpty = value === null || value === undefined || value === '' || (typeof value === 'string' && value.trim() === '');\n if (isEmpty) {\n setValidationError('Field required');\n return false;\n }\n }\n setValidationError(null);\n return true;\n };\n\n const validateUrlField = (value: string): boolean => {\n if (!validateRequiredField(value)) {\n return false;\n }\n if (value && value.trim() !== '' && !REGEX.url.test(value)) {\n setValidationError('Invalid URL format');\n return false;\n }\n setValidationError(null);\n return true;\n };\n\n const validateEmailField = (value: string): boolean => {\n if (!validateRequiredField(value)) {\n return false;\n }\n if (value && value.trim() !== '' && !REGEX.email.test(value)) {\n setValidationError('Email is not valid');\n return false;\n }\n setValidationError(null);\n return true;\n };\n\n const fieldStateRef = useRef(fieldState);\n useEffect(() => {\n fieldStateRef.current = fieldState;\n }, [fieldState]);\n\n const textInputRef = useRef<HTMLInputElement>(null);\n const cellEditKey = `${id}-${columnKey}`;\n\n useLayoutEffect(() => {\n const el = textInputRef.current;\n if (!el) return;\n const cached = _cursorPositionCache.get(cellEditKey);\n if (cached) {\n el.focus();\n try {\n el.setSelectionRange(cached.start, cached.end);\n } catch {\n // email/number inputs may not support setSelectionRange\n }\n } else if (_blurringCellKey !== cellEditKey) {\n el.focus();\n }\n }, [cellEditKey]);\n\n const debouncedSyncTimerRef = useRef<ReturnType<typeof setTimeout>>();\n\n useEffect(() => {\n return () => {\n if (debouncedSyncTimerRef.current) clearTimeout(debouncedSyncTimerRef.current);\n };\n }, []);\n\n const syncToParent = useCallback(\n (value: string) => {\n handleCellValueChange(createSyntheticChangeEvent(value));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value,\n originalValue: cell.value,\n });\n }\n },\n [handleCellValueChange, addPendingEdit, id, columnKey, cell.value],\n );\n\n const debouncedSyncToParent = useCallback(\n (value: string) => {\n if (debouncedSyncTimerRef.current) clearTimeout(debouncedSyncTimerRef.current);\n debouncedSyncTimerRef.current = setTimeout(() => {\n syncToParent(value);\n }, 300);\n },\n [syncToParent],\n );\n\n const flushSyncToParent = useCallback(() => {\n if (debouncedSyncTimerRef.current) {\n clearTimeout(debouncedSyncTimerRef.current);\n debouncedSyncTimerRef.current = undefined;\n syncToParent(String(fieldStateRef.current.value ?? ''));\n }\n }, [syncToParent]);\n\n const handleBlurValidation = useCallback(() => {\n const columnType = (cell?.column?.type as string | undefined)?.toLowerCase();\n const currentValue = fieldStateRef.current.value;\n\n switch (columnType) {\n case 'url':\n validateUrlField(String(currentValue ?? ''));\n break;\n case 'e-mail':\n validateEmailField(String(currentValue ?? ''));\n break;\n default:\n validateRequiredField(currentValue);\n break;\n }\n }, [cell?.column?.type]);\n\n const validateAndGetValue = useCallback((): ValidateAndSaveResult => {\n const columnType = (cell?.column?.type as string | undefined)?.toLowerCase();\n const currentValue = fieldStateRef.current.value;\n const currentCurrency = fieldStateRef.current.currencyCode;\n\n let isValid = true;\n\n switch (columnType) {\n case 'url':\n isValid = validateUrlField(String(currentValue ?? ''));\n break;\n case 'e-mail':\n isValid = validateEmailField(String(currentValue ?? ''));\n break;\n default:\n isValid = validateRequiredField(currentValue);\n break;\n }\n\n if (!isValid) {\n return { isValid: false };\n }\n\n let meta: ValidateAndSaveResult['meta'] = null;\n if (columnType === 'currency') {\n const latestCurrency = getCurrencyForCell?.(currencyCellId) || currentCurrency;\n meta = { currency_code: latestCurrency };\n }\n\n return {\n isValid: true,\n value: (typeof currentValue === 'number' ? String(currentValue) : currentValue) as string | boolean | null,\n meta,\n };\n }, [cell?.column?.type, currencyCellId, getCurrencyForCell]);\n\n useEffect(() => {\n if (registerValidation && inlineEditing === columnKey) {\n registerValidation(validateAndGetValue);\n }\n }, [registerValidation, validateAndGetValue, inlineEditing, columnKey]);\n\n const renderFieldByType = () => {\n if (cell?.column?.is_master_data && cell?.column?.masterDataName && (cell?.column?.masterDataColumnName || cell?.column?.masterDataFormula)) {\n const currentPendingEdit = getPendingEdit?.(String(id), columnKey);\n const masterDataValue = selectedMasterData?.value ?? currentPendingEdit?.value ?? cell.value;\n\n return (\n <div onMouseDown={(e) => e.stopPropagation()} className='z-[120] h-full w-full'>\n <MasterDataInlineField\n id={`master-data-cell-${id}-${cell.column.id}`}\n value={masterDataValue as string | number | null}\n onChange={(value, reference) => {\n handleCellValueChange(createSyntheticChangeEvent(value));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value: value as string | boolean | null,\n meta: { reference: reference || null },\n originalValue: cell.value,\n });\n }\n callLiveFieldOperation(value, { reference: reference || undefined });\n validateRequiredField((value as string | boolean | null) ?? '');\n }}\n placeholder={cell.column?.Header as string | undefined}\n masterDataName={cell.column.masterDataName as string}\n masterDataColumnName={cell.column.masterDataColumnName as string}\n masterDataFormula={cell.column.masterDataFormula as string | undefined}\n masterDataFilters={cell.column.masterDataFilters as Record<string, unknown> | undefined}\n onOpenMasterDataModal={openMasterDataModal as never}\n reference={currentPendingEdit?.meta?.reference as Record<string, unknown> | undefined}\n />\n </div>\n );\n }\n\n const columnType = (cell?.column?.type as string | undefined)?.toLowerCase();\n const rowCellMeta = columnKey\n ? (cell?.row?.original?.__cellMetadata as Record<string, { choices?: string[] }> | undefined)?.[columnKey]\n : undefined;\n\n switch (columnType) {\n case 'choice': {\n const choices = rowCellMeta?.choices ?? (cell?.column?.choices as string[] | undefined);\n return (\n <div onMouseDown={(e) => e.stopPropagation()}>\n <SelectField\n id={`select-cell-${id}-${cell.column.id}`}\n value={fieldState.value || null}\n selectOptions={\n choices?.map((choice: string) => ({\n label: choice,\n value: choice,\n })) || []\n }\n onChange={(selectedOptions: TSelectedOptions) => {\n const value = selectedOptions\n ? Array.isArray(selectedOptions)\n ? selectedOptions[0]?.value?.toString() || ''\n : selectedOptions?.value?.toString() || ''\n : '';\n setFieldState((prev) => ({ ...prev, value }));\n handleCellValueChange(createSyntheticChangeEvent(value));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value,\n originalValue: cell.value,\n });\n }\n callLiveFieldOperation(value);\n validateRequiredField(value);\n }}\n allowClear={true}\n inputStyles={{\n height: 'var(--row-height)',\n border: 'none',\n boxShadow: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n }}\n className='z-[120]'\n />\n </div>\n );\n }\n\n case 'datetime':\n case 'date':\n return (\n <div\n onMouseDown={(e) => {\n e.stopPropagation();\n if ((e.target as HTMLElement).tagName !== 'INPUT') {\n e.preventDefault();\n }\n }}\n >\n <DateTimeField\n id={`date-cell-${id}-${cell.column.id}`}\n value={(fieldState.value as string | undefined) || undefined}\n handleOnChange={(value) => {\n const newValue = value || '';\n setFieldState((prev) => ({ ...prev, value: newValue }));\n handleCellValueChange(createSyntheticChangeEvent(newValue));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value: newValue,\n originalValue: cell.value,\n });\n }\n callLiveFieldOperation(newValue);\n validateRequiredField(newValue);\n }}\n showTime={columnType === 'datetime'}\n dateFormat={columnType === 'date' ? 'MM/DD/YYYY' : undefined}\n className='z-[120] w-full'\n />\n </div>\n );\n\n case 'currency': {\n const originalCurrencyCode = getCurrencyFromCell();\n return (\n <div onMouseDown={(e) => e.stopPropagation()} className='z-[120] h-full w-full'>\n <InlineCurrencyField\n id={currencyCellId}\n value={String(fieldState.value ?? '')}\n onChange={(numericValue, currency_code) => {\n setFieldState((prev) => ({\n value: numericValue,\n currencyCode: currency_code || prev.currencyCode,\n }));\n handleCellValueChange(createSyntheticChangeEvent(numericValue));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value: numericValue,\n meta: { currency_code },\n originalValue: cell.value,\n originalMeta: { currency_code: originalCurrencyCode },\n });\n }\n validateRequiredField(numericValue);\n callLiveFieldOperation(numericValue, { currency_code });\n }}\n currencyCode={fieldState.currencyCode}\n inputStyle={{\n height: 'var(--row-height)',\n border: 'none',\n boxShadow: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n }}\n autoFocus\n disabled={isAnyFieldOperationLoading}\n />\n </div>\n );\n }\n\n case 'percentage':\n return (\n <label className='relative block h-full' onMouseDown={(e) => e.stopPropagation()}>\n <input\n ref={textInputRef}\n type='number'\n defaultValue={String(fieldState.value ?? '')}\n onChange={(e) => {\n try {\n _cursorPositionCache.set(cellEditKey, { start: e.target.selectionStart ?? 0, end: e.target.selectionEnd ?? 0 });\n } catch {\n // number inputs may not support selection\n }\n const value = e.target.value;\n setFieldState((prev) => ({ ...prev, value }));\n fieldStateRef.current = { ...fieldStateRef.current, value };\n _pendingFieldOpCellKey = cellEditKey;\n validateRequiredField(value);\n debouncedSyncToParent(value);\n }}\n onBlur={() => {\n _blurringCellKey = cellEditKey;\n _cursorPositionCache.delete(cellEditKey);\n flushSyncToParent();\n handleBlurValidation();\n if (_pendingFieldOpCellKey === cellEditKey) {\n _pendingFieldOpCellKey = null;\n callLiveFieldOperation(fieldStateRef.current.value);\n }\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }}\n onKeyDown={(e) => {\n e.stopPropagation();\n }}\n className='border border-gray-300 h-full text-gray-900 dark:bg-black-800 dark:text-white text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 dark:focus:ring-white dark:focus:border-white block w-full px-2.5 py-1.5 font-inter font-medium disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400'\n id={`percentage-cell-${id}-${cell.column.id}`}\n style={{\n height: 'var(--row-height)',\n border: 'none',\n boxShadow: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n }}\n autoComplete='off'\n disabled={isAnyFieldOperationLoading}\n />\n <span className='absolute inset-y-0 right-3 flex items-center pointer-events-none h-full dark:text-black-100'>%</span>\n </label>\n );\n\n case 'boolean': {\n const currentBoolValue =\n fieldState.value === true ||\n fieldState.value === 'true' ||\n fieldState.value === 'Yes' ||\n fieldState.value === 'True' ||\n fieldState.value === 1;\n\n return (\n <div\n onMouseDown={(e) => e.stopPropagation()}\n className='h-full w-full flex items-center px-2.5 bg-white dark:bg-black-800 rounded border-2 focus:outline-primary-600 border border-primary-600 dark:border-black-700 z-[120]'\n >\n <Toggle\n id={`toggle-cell-${id}-${cell.column.id}`}\n isChecked={currentBoolValue}\n onChange={(checked) => {\n setFieldState((prev) => ({ ...prev, value: checked }));\n handleCellValueChange(createSyntheticChangeEvent(checked));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value: checked,\n originalValue: cell.value,\n });\n }\n callLiveFieldOperation(checked);\n }}\n hideStatus={false}\n labelDirection='right'\n stopClickPropagation={true}\n statusText={currentBoolValue ? 'Yes' : 'No'}\n />\n </div>\n );\n }\n\n case 'url':\n return (\n <input\n ref={textInputRef}\n type='url'\n defaultValue={String(fieldState.value ?? '')}\n onChange={(e) => {\n _cursorPositionCache.set(cellEditKey, { start: e.target.selectionStart ?? 0, end: e.target.selectionEnd ?? 0 });\n const value = e.target.value;\n setFieldState((prev) => ({ ...prev, value }));\n fieldStateRef.current = { ...fieldStateRef.current, value };\n _pendingFieldOpCellKey = cellEditKey;\n if (validationError) {\n validateUrlField(value);\n } else {\n validateRequiredField(value);\n }\n debouncedSyncToParent(value);\n }}\n onBlur={() => {\n _blurringCellKey = cellEditKey;\n _cursorPositionCache.delete(cellEditKey);\n flushSyncToParent();\n handleBlurValidation();\n if (_pendingFieldOpCellKey === cellEditKey) {\n _pendingFieldOpCellKey = null;\n callLiveFieldOperation(fieldStateRef.current.value);\n }\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }}\n onKeyDown={(e) => {\n e.stopPropagation();\n }}\n onMouseDown={(e) => e.stopPropagation()}\n className='text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800'\n style={{\n height: 'var(--row-height)',\n }}\n disabled={isAnyFieldOperationLoading}\n />\n );\n\n case 'e-mail':\n return (\n <input\n ref={textInputRef}\n type='email'\n defaultValue={String(fieldState.value ?? '')}\n onChange={(e) => {\n try {\n _cursorPositionCache.set(cellEditKey, { start: e.target.selectionStart ?? 0, end: e.target.selectionEnd ?? 0 });\n } catch {\n // email inputs may not support selection\n }\n const value = e.target.value;\n setFieldState((prev) => ({ ...prev, value }));\n fieldStateRef.current = { ...fieldStateRef.current, value };\n _pendingFieldOpCellKey = cellEditKey;\n if (validationError) {\n validateEmailField(value);\n } else {\n validateRequiredField(value);\n }\n debouncedSyncToParent(value);\n }}\n onBlur={() => {\n _blurringCellKey = cellEditKey;\n _cursorPositionCache.delete(cellEditKey);\n flushSyncToParent();\n handleBlurValidation();\n if (_pendingFieldOpCellKey === cellEditKey) {\n _pendingFieldOpCellKey = null;\n callLiveFieldOperation(fieldStateRef.current.value);\n }\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }}\n onKeyDown={(e) => {\n e.stopPropagation();\n }}\n onMouseDown={(e) => e.stopPropagation()}\n className='text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800'\n style={{\n height: 'var(--row-height)',\n }}\n disabled={isAnyFieldOperationLoading}\n />\n );\n\n default:\n return (\n <input\n ref={textInputRef}\n type='text'\n defaultValue={String(fieldState.value ?? '')}\n onChange={(e) => {\n _cursorPositionCache.set(cellEditKey, { start: e.target.selectionStart ?? 0, end: e.target.selectionEnd ?? 0 });\n const value = e.target.value;\n setFieldState((prev) => ({ ...prev, value }));\n fieldStateRef.current = { ...fieldStateRef.current, value };\n _pendingFieldOpCellKey = cellEditKey;\n validateRequiredField(value);\n debouncedSyncToParent(value);\n }}\n onBlur={() => {\n _blurringCellKey = cellEditKey;\n _cursorPositionCache.delete(cellEditKey);\n flushSyncToParent();\n handleBlurValidation();\n if (_pendingFieldOpCellKey === cellEditKey) {\n _pendingFieldOpCellKey = null;\n callLiveFieldOperation(fieldStateRef.current.value);\n }\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }}\n onKeyDown={(e) => {\n e.stopPropagation();\n }}\n onMouseDown={(e) => e.stopPropagation()}\n className='text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800'\n style={{\n height: 'var(--row-height)',\n }}\n disabled={isAnyFieldOperationLoading}\n />\n );\n }\n };\n\n return (\n <div ref={cellRef} className='relative h-full w-full overflow-visible'>\n <div\n className={cn(\n 'border p-0.5 rounded-lg h-full',\n displayValidationError ? 'border-error-600' : 'border-neutral-200 dark:border-black-700',\n isAnyFieldOperationLoading && 'pointer-events-none opacity-70',\n )}\n >\n {renderFieldByType()}\n </div>\n {Boolean(cell?.column?.is_live_field) && (\n <div className='absolute -top-1.5 -right-1.5 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-[125]'>\n {isFieldOperationLoading ? (\n <LoadingSpinnerIcon className='text-primary-600 dark:text-white' size={8} />\n ) : (\n <BoltOutlined\n sx={{\n fontSize: 12,\n color: 'var(--color-primary-600)',\n }}\n />\n )}\n </div>\n )}\n {displayValidationError && (\n <div className='absolute top-full left-0 mt-1 text-error-600 text-xs font-medium z-[130] bg-white dark:bg-black-800 px-2 py-1 rounded shadow-lg w-full'>\n {displayValidationError}\n </div>\n )}\n </div>\n );\n};\n"],"names":["_cursorPositionCache","_blurringCellKey","_pendingFieldOpCellKey","createSyntheticChangeEvent","value","InlineEditField","cell","id","inlineEditing","cellRef","handleCellValueChange","registerValidation","openMasterDataModal","selectedMasterData","clearSelectedMasterData","getCurrencyForCell","getPendingEdit","addPendingEdit","onFieldOperationFlow","fieldOperationLoading","useContext","TableContext","isFieldOperationLoading","isAnyFieldOperationLoading","callLiveFieldOperation","useCallback","meta","getCurrencyFromCell","rawData","headerKey","columnKey","dataFromHeader","dataFromKey","currencyCellId","contextCurrency","initialPendingEdit","fieldState","setFieldState","useState","validationError","setValidationError","computedValidationError","valueToValidate","result","validateCellValue","pendingError","displayValidationError","previousInlineEditingRef","useRef","useEffect","currencyFromContext","pendingEdit","initialValue","initialCurrency","validateRequiredField","validateUrlField","REGEX","validateEmailField","fieldStateRef","textInputRef","cellEditKey","useLayoutEffect","el","cached","debouncedSyncTimerRef","syncToParent","debouncedSyncToParent","flushSyncToParent","handleBlurValidation","columnType","currentValue","validateAndGetValue","currentCurrency","isValid","renderFieldByType","currentPendingEdit","masterDataValue","jsx","e","MasterDataInlineField","reference","rowCellMeta","choices","SelectField","choice","selectedOptions","prev","DateTimeField","newValue","originalCurrencyCode","InlineCurrencyField","numericValue","currency_code","jsxs","currentBoolValue","Toggle","checked","cn","LoadingSpinnerIcon","BoltOutlined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InlineEditField.cjs.js","sources":["../../../../../../src/components/data-display/infinite-table/body/cell/InlineEditField.tsx"],"sourcesContent":["import type { ICell, ValidateAndSaveResult } from '../../types';\nimport { validateCellValue } from '../../validateCell';\nimport { REGEX } from '../../../../../constants/table';\nimport { DateTimeField } from '../../../../forms/date-time-field/DateTimeField';\nimport { SelectField } from '../../../../forms/select-field/SelectField';\nimport { Toggle } from '../../../../forms/toggle/Toggle';\nimport { BoltOutlined } from '@mui/icons-material';\nimport cn from 'classnames';\nimport React, { useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nimport { TableContext } from '../../context';\nimport { InlineCurrencyField } from './InlineCurrencyField';\nimport { MasterDataInlineField } from './MasterDataInlineField';\nimport { LoadingSpinnerIcon } from '../../../../icon';\n\ntype InlineEditFieldProps = {\n cell: ICell;\n id: string | number;\n inlineEditing: string | null;\n cellRef: React.RefObject<HTMLDivElement>;\n handleCellValueChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n handleUpdateCellData: (\n directValue?: string | boolean | null,\n meta?: { currency_code?: string | null; reference?: unknown | null; [key: string]: unknown | null } | null,\n ) => void;\n registerValidation?: (validateFn: () => ValidateAndSaveResult) => void;\n};\n\ntype TSelectedOption = { label: string; value: string };\ntype TSelectedOptions = TSelectedOption | TSelectedOption[] | null;\n\nconst _cursorPositionCache = new Map<string, { start: number; end: number }>();\nlet _blurringCellKey: string | null = null;\nlet _pendingFieldOpCellKey: string | null = null;\n\nconst createSyntheticChangeEvent = (value: string | number | boolean | null): React.ChangeEvent<HTMLInputElement> => {\n return {\n target: { value } as HTMLInputElement,\n } as React.ChangeEvent<HTMLInputElement>;\n};\n\nexport const InlineEditField: React.FC<InlineEditFieldProps> = ({ cell, id, inlineEditing, cellRef, handleCellValueChange, registerValidation }) => {\n const {\n openMasterDataModal,\n selectedMasterData,\n clearSelectedMasterData,\n getCurrencyForCell,\n getPendingEdit,\n addPendingEdit,\n onFieldOperationFlow,\n fieldOperationLoading,\n } = useContext(TableContext);\n\n const isFieldOperationLoading = fieldOperationLoading === `${id}-${cell?.column?.id}`;\n const isAnyFieldOperationLoading = Boolean(fieldOperationLoading);\n\n const callLiveFieldOperation = useCallback(\n (value: unknown, meta?: { reference?: unknown; currency_code?: string }) => {\n if (!onFieldOperationFlow) return;\n\n onFieldOperationFlow({\n value,\n fieldId: cell?.column?.id as string,\n rowId: String(id),\n rowData: cell?.row?.original as Record<string, unknown>,\n columnKey: (cell?.column?.key as string) || '',\n flowName: cell?.column?.live_field_source as string | undefined,\n isLiveField: cell?.column?.is_live_field as boolean | undefined,\n meta,\n });\n },\n [\n cell?.column?.id,\n cell?.column?.is_live_field,\n cell?.column?.key,\n cell?.column?.live_field_source,\n cell?.row?.original,\n id,\n onFieldOperationFlow,\n ],\n );\n\n const getCurrencyFromCell = () => {\n const rawData = cell?.row?.original?.__rawData as Record<string, Record<string, unknown>> | undefined;\n const headerKey = cell?.column?.Header as string | undefined;\n const columnKey = cell?.column?.key as string | undefined;\n\n const dataFromHeader = headerKey ? rawData?.[headerKey]?.currency_code : undefined;\n const dataFromKey = columnKey ? rawData?.[columnKey]?.currency_code : undefined;\n\n if (dataFromHeader && dataFromHeader !== '') {\n return dataFromHeader as string;\n }\n if (dataFromKey && dataFromKey !== '') {\n return dataFromKey as string;\n }\n\n return (cell?.column?.currencyCode as string) || 'USD';\n };\n\n const columnKey = (cell.column.key as string) || '';\n const currencyCellId = `${id}-${columnKey}`;\n const contextCurrency = getCurrencyForCell?.(currencyCellId);\n const initialPendingEdit = getPendingEdit?.(String(id), columnKey);\n\n const [fieldState, setFieldState] = useState<{ value: string | number | boolean | null; currencyCode: string }>({\n value: initialPendingEdit?.value !== undefined ? (initialPendingEdit.value as string | number | boolean | null) : ((cell.value as string | number | boolean | null) || ''),\n currencyCode: (initialPendingEdit?.meta?.currency_code as string) || contextCurrency || getCurrencyFromCell(),\n });\n const [validationError, setValidationError] = useState<string | null>(null);\n\n const computedValidationError = (() => {\n if (inlineEditing !== columnKey) return null;\n const valueToValidate = typeof fieldState.value === 'number' ? String(fieldState.value) : fieldState.value;\n const result = validateCellValue(valueToValidate, cell?.column as { type?: string; is_required?: boolean });\n return result.isValid ? null : result.error || null;\n })();\n\n const pendingError = getPendingEdit?.(String(id), columnKey)?.validationError;\n const displayValidationError = validationError || computedValidationError || pendingError || null;\n\n const previousInlineEditingRef = useRef<string | null>(null);\n\n useEffect(() => {\n const isEnteringEditMode = inlineEditing === columnKey && previousInlineEditingRef.current !== columnKey;\n\n if (isEnteringEditMode) {\n const currencyFromContext = getCurrencyForCell?.(`${id}-${columnKey}`);\n const pendingEdit = getPendingEdit?.(String(id), columnKey);\n const initialValue = pendingEdit?.value !== undefined ? pendingEdit.value : ((cell.value as string | boolean | null) || '');\n const initialCurrency = (pendingEdit?.meta?.currency_code as string) || currencyFromContext || getCurrencyFromCell();\n\n setFieldState({\n value: initialValue as string | number | boolean | null,\n currencyCode: initialCurrency,\n });\n }\n\n if (inlineEditing !== columnKey && previousInlineEditingRef.current === columnKey) {\n setValidationError(null);\n }\n\n previousInlineEditingRef.current = inlineEditing;\n }, [inlineEditing, columnKey, getCurrencyForCell, getPendingEdit, id, cell.value]);\n\n useEffect(() => {\n if (selectedMasterData && inlineEditing === cell.column.key && (cell?.column?.masterDataColumnName || cell?.column?.masterDataFormula) && cell?.column?.masterDataName) {\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value: selectedMasterData.value as string | boolean | null,\n meta: { reference: selectedMasterData.reference },\n originalValue: cell.value,\n });\n }\n handleCellValueChange(createSyntheticChangeEvent(selectedMasterData.value as string | number | boolean | null));\n callLiveFieldOperation(selectedMasterData.value, { reference: selectedMasterData.reference });\n clearSelectedMasterData?.();\n }\n }, [\n selectedMasterData,\n inlineEditing,\n columnKey,\n cell?.column?.masterDataFormula,\n cell?.column?.masterDataColumnName,\n cell?.column?.masterDataName,\n addPendingEdit,\n id,\n cell.value,\n handleCellValueChange,\n callLiveFieldOperation,\n clearSelectedMasterData,\n ]);\n\n const validateRequiredField = (value: string | number | boolean | null): boolean => {\n if (cell?.column?.is_required) {\n const isEmpty = value === null || value === undefined || value === '' || (typeof value === 'string' && value.trim() === '');\n if (isEmpty) {\n setValidationError('Field required');\n return false;\n }\n }\n setValidationError(null);\n return true;\n };\n\n const validateUrlField = (value: string): boolean => {\n if (!validateRequiredField(value)) {\n return false;\n }\n if (value && value.trim() !== '' && !REGEX.url.test(value)) {\n setValidationError('Invalid URL format');\n return false;\n }\n setValidationError(null);\n return true;\n };\n\n const validateEmailField = (value: string): boolean => {\n if (!validateRequiredField(value)) {\n return false;\n }\n if (value && value.trim() !== '' && !REGEX.email.test(value)) {\n setValidationError('Email is not valid');\n return false;\n }\n setValidationError(null);\n return true;\n };\n\n const fieldStateRef = useRef(fieldState);\n useEffect(() => {\n fieldStateRef.current = fieldState;\n }, [fieldState]);\n\n const textInputRef = useRef<HTMLInputElement>(null);\n const cellEditKey = `${id}-${columnKey}`;\n\n useLayoutEffect(() => {\n const el = textInputRef.current;\n if (!el) return;\n const cached = _cursorPositionCache.get(cellEditKey);\n if (cached) {\n el.focus();\n try {\n el.setSelectionRange(cached.start, cached.end);\n } catch {\n // email/number inputs may not support setSelectionRange\n }\n } else if (_blurringCellKey !== cellEditKey) {\n el.focus();\n }\n }, [cellEditKey]);\n\n const debouncedSyncTimerRef = useRef<ReturnType<typeof setTimeout>>();\n\n useEffect(() => {\n return () => {\n if (debouncedSyncTimerRef.current) clearTimeout(debouncedSyncTimerRef.current);\n };\n }, []);\n\n const syncToParent = useCallback(\n (value: string) => {\n handleCellValueChange(createSyntheticChangeEvent(value));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value,\n originalValue: cell.value,\n });\n }\n },\n [handleCellValueChange, addPendingEdit, id, columnKey, cell.value],\n );\n\n const debouncedSyncToParent = useCallback(\n (value: string) => {\n if (debouncedSyncTimerRef.current) clearTimeout(debouncedSyncTimerRef.current);\n debouncedSyncTimerRef.current = setTimeout(() => {\n syncToParent(value);\n }, 300);\n },\n [syncToParent],\n );\n\n const flushSyncToParent = useCallback(() => {\n if (debouncedSyncTimerRef.current) {\n clearTimeout(debouncedSyncTimerRef.current);\n debouncedSyncTimerRef.current = undefined;\n syncToParent(String(fieldStateRef.current.value ?? ''));\n }\n }, [syncToParent]);\n\n const handleBlurValidation = useCallback(() => {\n const columnType = (cell?.column?.type as string | undefined)?.toLowerCase();\n const currentValue = fieldStateRef.current.value;\n\n switch (columnType) {\n case 'url':\n validateUrlField(String(currentValue ?? ''));\n break;\n case 'e-mail':\n validateEmailField(String(currentValue ?? ''));\n break;\n default:\n validateRequiredField(currentValue);\n break;\n }\n }, [cell?.column?.type]);\n\n const validateAndGetValue = useCallback((): ValidateAndSaveResult => {\n const columnType = (cell?.column?.type as string | undefined)?.toLowerCase();\n const currentValue = fieldStateRef.current.value;\n const currentCurrency = fieldStateRef.current.currencyCode;\n\n let isValid = true;\n\n switch (columnType) {\n case 'url':\n isValid = validateUrlField(String(currentValue ?? ''));\n break;\n case 'e-mail':\n isValid = validateEmailField(String(currentValue ?? ''));\n break;\n default:\n isValid = validateRequiredField(currentValue);\n break;\n }\n\n if (!isValid) {\n return { isValid: false };\n }\n\n let meta: ValidateAndSaveResult['meta'] = null;\n if (columnType === 'currency') {\n const latestCurrency = getCurrencyForCell?.(currencyCellId) || currentCurrency;\n meta = { currency_code: latestCurrency };\n }\n\n return {\n isValid: true,\n value: (typeof currentValue === 'number' ? String(currentValue) : currentValue) as string | boolean | null,\n meta,\n };\n }, [cell?.column?.type, currencyCellId, getCurrencyForCell]);\n\n useEffect(() => {\n if (registerValidation && inlineEditing === columnKey) {\n registerValidation(validateAndGetValue);\n }\n }, [registerValidation, validateAndGetValue, inlineEditing, columnKey]);\n\n const renderFieldByType = () => {\n if (cell?.column?.is_master_data && cell?.column?.masterDataName && (cell?.column?.masterDataColumnName || cell?.column?.masterDataFormula)) {\n const currentPendingEdit = getPendingEdit?.(String(id), columnKey);\n const masterDataValue = selectedMasterData?.value ?? currentPendingEdit?.value ?? cell.value;\n\n return (\n <div onMouseDown={(e) => e.stopPropagation()} className='z-[120] h-full w-full'>\n <MasterDataInlineField\n id={`master-data-cell-${id}-${cell.column.id}`}\n value={masterDataValue as string | number | null}\n onChange={(value, reference) => {\n handleCellValueChange(createSyntheticChangeEvent(value));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value: value as string | boolean | null,\n meta: { reference: reference || null },\n originalValue: cell.value,\n });\n }\n callLiveFieldOperation(value, { reference: reference || undefined });\n validateRequiredField((value as string | boolean | null) ?? '');\n }}\n placeholder={cell.column?.Header as string | undefined}\n masterDataName={cell.column.masterDataName as string}\n masterDataColumnName={cell.column.masterDataColumnName as string}\n masterDataFormula={cell.column.masterDataFormula as string | undefined}\n masterDataFilters={cell.column.masterDataFilters as Record<string, unknown> | undefined}\n onOpenMasterDataModal={openMasterDataModal as never}\n reference={currentPendingEdit?.meta?.reference as Record<string, unknown> | undefined}\n />\n </div>\n );\n }\n\n const columnType = (cell?.column?.type as string | undefined)?.toLowerCase();\n const rowCellMeta = columnKey\n ? (cell?.row?.original?.__cellMetadata as Record<string, { choices?: string[] }> | undefined)?.[columnKey]\n : undefined;\n\n switch (columnType) {\n case 'choice': {\n const choices = rowCellMeta?.choices ?? (cell?.column?.choices as string[] | undefined);\n return (\n <div onMouseDown={(e) => e.stopPropagation()}>\n <SelectField\n id={`select-cell-${id}-${cell.column.id}`}\n value={fieldState.value || null}\n selectOptions={\n choices?.map((choice: string) => ({\n label: choice,\n value: choice,\n })) || []\n }\n onChange={(selectedOptions: TSelectedOptions) => {\n const value = selectedOptions\n ? Array.isArray(selectedOptions)\n ? selectedOptions[0]?.value?.toString() || ''\n : selectedOptions?.value?.toString() || ''\n : '';\n setFieldState((prev) => ({ ...prev, value }));\n handleCellValueChange(createSyntheticChangeEvent(value));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value,\n originalValue: cell.value,\n });\n }\n callLiveFieldOperation(value);\n validateRequiredField(value);\n }}\n allowClear={true}\n inputStyles={{\n height: 'var(--row-height)',\n border: 'none',\n boxShadow: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n }}\n className='z-[120]'\n />\n </div>\n );\n }\n\n case 'datetime':\n case 'date':\n return (\n <div\n onMouseDown={(e) => {\n e.stopPropagation();\n if ((e.target as HTMLElement).tagName !== 'INPUT') {\n e.preventDefault();\n }\n }}\n >\n <DateTimeField\n id={`date-cell-${id}-${cell.column.id}`}\n value={(fieldState.value as string | undefined) || undefined}\n handleOnChange={(value) => {\n const newValue = value || '';\n setFieldState((prev) => ({ ...prev, value: newValue }));\n handleCellValueChange(createSyntheticChangeEvent(newValue));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value: newValue,\n originalValue: cell.value,\n });\n }\n callLiveFieldOperation(newValue);\n validateRequiredField(newValue);\n }}\n showTime={columnType === 'datetime'}\n dateFormat={columnType === 'date' ? 'MM/DD/YYYY' : undefined}\n className='z-[120] w-full'\n />\n </div>\n );\n\n case 'currency': {\n const originalCurrencyCode = getCurrencyFromCell();\n return (\n <div onMouseDown={(e) => e.stopPropagation()} className='z-[120] h-full w-full'>\n <InlineCurrencyField\n id={currencyCellId}\n value={String(fieldState.value ?? '')}\n onChange={(numericValue, currency_code) => {\n setFieldState((prev) => ({\n value: numericValue,\n currencyCode: currency_code || prev.currencyCode,\n }));\n handleCellValueChange(createSyntheticChangeEvent(numericValue));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value: numericValue,\n meta: { currency_code },\n originalValue: cell.value,\n originalMeta: { currency_code: originalCurrencyCode },\n });\n }\n validateRequiredField(numericValue);\n callLiveFieldOperation(numericValue, { currency_code });\n }}\n currencyCode={fieldState.currencyCode}\n inputStyle={{\n height: 'var(--row-height)',\n border: 'none',\n boxShadow: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n }}\n autoFocus\n disabled={isAnyFieldOperationLoading}\n />\n </div>\n );\n }\n\n case 'percentage':\n return (\n <label className='relative block h-full' onMouseDown={(e) => e.stopPropagation()}>\n <input\n ref={textInputRef}\n type='number'\n defaultValue={String(fieldState.value ?? '')}\n onChange={(e) => {\n try {\n _cursorPositionCache.set(cellEditKey, { start: e.target.selectionStart ?? 0, end: e.target.selectionEnd ?? 0 });\n } catch {\n // number inputs may not support selection\n }\n const value = e.target.value;\n setFieldState((prev) => ({ ...prev, value }));\n fieldStateRef.current = { ...fieldStateRef.current, value };\n _pendingFieldOpCellKey = cellEditKey;\n validateRequiredField(value);\n debouncedSyncToParent(value);\n }}\n onBlur={() => {\n _blurringCellKey = cellEditKey;\n _cursorPositionCache.delete(cellEditKey);\n flushSyncToParent();\n handleBlurValidation();\n if (_pendingFieldOpCellKey === cellEditKey) {\n _pendingFieldOpCellKey = null;\n callLiveFieldOperation(fieldStateRef.current.value);\n }\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }}\n onKeyDown={(e) => {\n e.stopPropagation();\n }}\n className='border border-gray-300 h-full text-gray-900 dark:bg-black-800 dark:text-white text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 dark:focus:ring-white dark:focus:border-white block w-full px-2.5 py-1.5 font-inter font-medium disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400'\n id={`percentage-cell-${id}-${cell.column.id}`}\n style={{\n height: 'var(--row-height)',\n border: 'none',\n boxShadow: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n }}\n autoComplete='off'\n disabled={isAnyFieldOperationLoading}\n />\n <span className='absolute inset-y-0 right-3 flex items-center pointer-events-none h-full dark:text-black-100'>%</span>\n </label>\n );\n\n case 'boolean': {\n const currentBoolValue =\n fieldState.value === true ||\n fieldState.value === 'true' ||\n fieldState.value === 'Yes' ||\n fieldState.value === 'True' ||\n fieldState.value === 1;\n\n return (\n <div\n onMouseDown={(e) => e.stopPropagation()}\n className='h-full w-full flex items-center px-2.5 bg-white dark:bg-black-800 rounded border-2 focus:outline-primary-600 border border-primary-600 dark:border-black-700 z-[120]'\n >\n <Toggle\n id={`toggle-cell-${id}-${cell.column.id}`}\n isChecked={currentBoolValue}\n onChange={(checked) => {\n setFieldState((prev) => ({ ...prev, value: checked }));\n handleCellValueChange(createSyntheticChangeEvent(checked));\n if (addPendingEdit) {\n addPendingEdit(String(id), columnKey, {\n value: checked,\n originalValue: cell.value,\n });\n }\n callLiveFieldOperation(checked);\n }}\n hideStatus={false}\n labelDirection='right'\n stopClickPropagation={true}\n statusText={currentBoolValue ? 'Yes' : 'No'}\n />\n </div>\n );\n }\n\n case 'url':\n return (\n <input\n ref={textInputRef}\n type='url'\n defaultValue={String(fieldState.value ?? '')}\n onChange={(e) => {\n _cursorPositionCache.set(cellEditKey, { start: e.target.selectionStart ?? 0, end: e.target.selectionEnd ?? 0 });\n const value = e.target.value;\n setFieldState((prev) => ({ ...prev, value }));\n fieldStateRef.current = { ...fieldStateRef.current, value };\n _pendingFieldOpCellKey = cellEditKey;\n if (validationError) {\n validateUrlField(value);\n } else {\n validateRequiredField(value);\n }\n debouncedSyncToParent(value);\n }}\n onBlur={() => {\n _blurringCellKey = cellEditKey;\n _cursorPositionCache.delete(cellEditKey);\n flushSyncToParent();\n handleBlurValidation();\n if (_pendingFieldOpCellKey === cellEditKey) {\n _pendingFieldOpCellKey = null;\n callLiveFieldOperation(fieldStateRef.current.value);\n }\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }}\n onKeyDown={(e) => {\n e.stopPropagation();\n }}\n onMouseDown={(e) => e.stopPropagation()}\n className='text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800'\n style={{\n height: 'var(--row-height)',\n }}\n disabled={isAnyFieldOperationLoading}\n />\n );\n\n case 'e-mail':\n return (\n <input\n ref={textInputRef}\n type='email'\n defaultValue={String(fieldState.value ?? '')}\n onChange={(e) => {\n try {\n _cursorPositionCache.set(cellEditKey, { start: e.target.selectionStart ?? 0, end: e.target.selectionEnd ?? 0 });\n } catch {\n // email inputs may not support selection\n }\n const value = e.target.value;\n setFieldState((prev) => ({ ...prev, value }));\n fieldStateRef.current = { ...fieldStateRef.current, value };\n _pendingFieldOpCellKey = cellEditKey;\n if (validationError) {\n validateEmailField(value);\n } else {\n validateRequiredField(value);\n }\n debouncedSyncToParent(value);\n }}\n onBlur={() => {\n _blurringCellKey = cellEditKey;\n _cursorPositionCache.delete(cellEditKey);\n flushSyncToParent();\n handleBlurValidation();\n if (_pendingFieldOpCellKey === cellEditKey) {\n _pendingFieldOpCellKey = null;\n callLiveFieldOperation(fieldStateRef.current.value);\n }\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }}\n onKeyDown={(e) => {\n e.stopPropagation();\n }}\n onMouseDown={(e) => e.stopPropagation()}\n className='text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800'\n style={{\n height: 'var(--row-height)',\n }}\n disabled={isAnyFieldOperationLoading}\n />\n );\n\n default:\n return (\n <input\n ref={textInputRef}\n type='text'\n defaultValue={String(fieldState.value ?? '')}\n onChange={(e) => {\n _cursorPositionCache.set(cellEditKey, { start: e.target.selectionStart ?? 0, end: e.target.selectionEnd ?? 0 });\n const value = e.target.value;\n setFieldState((prev) => ({ ...prev, value }));\n fieldStateRef.current = { ...fieldStateRef.current, value };\n _pendingFieldOpCellKey = cellEditKey;\n validateRequiredField(value);\n debouncedSyncToParent(value);\n }}\n onBlur={() => {\n _blurringCellKey = cellEditKey;\n _cursorPositionCache.delete(cellEditKey);\n flushSyncToParent();\n handleBlurValidation();\n if (_pendingFieldOpCellKey === cellEditKey) {\n _pendingFieldOpCellKey = null;\n callLiveFieldOperation(fieldStateRef.current.value);\n }\n requestAnimationFrame(() => {\n _blurringCellKey = null;\n });\n }}\n onKeyDown={(e) => {\n e.stopPropagation();\n }}\n onMouseDown={(e) => e.stopPropagation()}\n className='text-neutral-900 dark:text-white dark:bg-black-800 text-base font-medium h-full font-inter overflow-hidden whitespace-nowrap text-ellipsis px-2.5 py-1 w-full border rounded focus:outline-primary-600 dark:focus:outline-white z-[120] shadow-xl disabled:bg-neutral-50 dark:disabled:!bg-black-800'\n style={{\n height: 'var(--row-height)',\n }}\n disabled={isAnyFieldOperationLoading}\n />\n );\n }\n };\n\n return (\n <div ref={cellRef} className='relative h-full w-full overflow-visible'>\n <div\n className={cn(\n 'border p-0.5 rounded-lg h-full',\n displayValidationError ? 'border-error-600' : 'border-neutral-200 dark:border-black-700',\n isAnyFieldOperationLoading && 'pointer-events-none opacity-70',\n )}\n >\n {renderFieldByType()}\n </div>\n {Boolean(cell?.column?.is_live_field) && (\n <div className='absolute -top-1.5 -right-1.5 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-[125]'>\n {isFieldOperationLoading ? (\n <LoadingSpinnerIcon className='text-primary-600 dark:text-white' size={8} />\n ) : (\n <BoltOutlined\n sx={{\n fontSize: 12,\n color: 'var(--color-primary-600)',\n }}\n />\n )}\n </div>\n )}\n {displayValidationError && (\n <div className='absolute top-full left-0 mt-1 text-error-600 text-xs font-medium z-[130] bg-white dark:bg-black-800 px-2 py-1 rounded shadow-lg w-full'>\n {displayValidationError}\n </div>\n )}\n </div>\n );\n};\n"],"names":["_cursorPositionCache","_blurringCellKey","_pendingFieldOpCellKey","createSyntheticChangeEvent","value","InlineEditField","cell","id","inlineEditing","cellRef","handleCellValueChange","registerValidation","openMasterDataModal","selectedMasterData","clearSelectedMasterData","getCurrencyForCell","getPendingEdit","addPendingEdit","onFieldOperationFlow","fieldOperationLoading","useContext","TableContext","isFieldOperationLoading","isAnyFieldOperationLoading","callLiveFieldOperation","useCallback","meta","getCurrencyFromCell","rawData","headerKey","columnKey","dataFromHeader","dataFromKey","currencyCellId","contextCurrency","initialPendingEdit","fieldState","setFieldState","useState","validationError","setValidationError","computedValidationError","valueToValidate","result","validateCellValue","pendingError","displayValidationError","previousInlineEditingRef","useRef","useEffect","currencyFromContext","pendingEdit","initialValue","initialCurrency","validateRequiredField","validateUrlField","REGEX","validateEmailField","fieldStateRef","textInputRef","cellEditKey","useLayoutEffect","el","cached","debouncedSyncTimerRef","syncToParent","debouncedSyncToParent","flushSyncToParent","handleBlurValidation","columnType","currentValue","validateAndGetValue","currentCurrency","isValid","renderFieldByType","currentPendingEdit","masterDataValue","jsx","e","MasterDataInlineField","reference","rowCellMeta","choices","SelectField","choice","selectedOptions","prev","DateTimeField","newValue","originalCurrencyCode","InlineCurrencyField","numericValue","currency_code","jsxs","currentBoolValue","Toggle","checked","cn","LoadingSpinnerIcon","BoltOutlined"],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ const C = (t) => ({
|
|
|
26
26
|
onFieldOperationFlow: B,
|
|
27
27
|
fieldOperationLoading: G
|
|
28
28
|
} = me(pe), te = G === `${l}-${t?.column?.id}`, F = !!G, g = N(
|
|
29
|
-
(a,
|
|
29
|
+
(a, n) => {
|
|
30
30
|
B && B({
|
|
31
31
|
value: a,
|
|
32
32
|
fieldId: t?.column?.id,
|
|
@@ -35,7 +35,7 @@ const C = (t) => ({
|
|
|
35
35
|
columnKey: t?.column?.key || "",
|
|
36
36
|
flowName: t?.column?.live_field_source,
|
|
37
37
|
isLiveField: t?.column?.is_live_field,
|
|
38
|
-
meta:
|
|
38
|
+
meta: n
|
|
39
39
|
});
|
|
40
40
|
},
|
|
41
41
|
[
|
|
@@ -48,27 +48,27 @@ const C = (t) => ({
|
|
|
48
48
|
B
|
|
49
49
|
]
|
|
50
50
|
), R = () => {
|
|
51
|
-
const a = t?.row?.original?.__rawData,
|
|
51
|
+
const a = t?.row?.original?.__rawData, n = t?.column?.Header, r = t?.column?.key, e = n ? a?.[n]?.currency_code : void 0, o = r ? a?.[r]?.currency_code : void 0;
|
|
52
52
|
return e && e !== "" ? e : o && o !== "" ? o : t?.column?.currencyCode || "USD";
|
|
53
|
-
},
|
|
53
|
+
}, u = t.column.key || "", T = `${l}-${u}`, re = M?.(T), A = _?.(String(l), u), [c, y] = W({
|
|
54
54
|
value: A?.value !== void 0 ? A.value : t.value || "",
|
|
55
55
|
currencyCode: A?.meta?.currency_code || re || R()
|
|
56
56
|
}), [q, S] = W(null), ae = (() => {
|
|
57
|
-
if (v !==
|
|
58
|
-
const a = typeof c.value == "number" ? String(c.value) : c.value,
|
|
59
|
-
return
|
|
60
|
-
})(), oe = _?.(String(l),
|
|
57
|
+
if (v !== u) return null;
|
|
58
|
+
const a = typeof c.value == "number" ? String(c.value) : c.value, n = ue(a, t?.column);
|
|
59
|
+
return n.isValid ? null : n.error || null;
|
|
60
|
+
})(), oe = _?.(String(l), u)?.validationError, O = q || ae || oe || null, Y = I(null);
|
|
61
61
|
P(() => {
|
|
62
|
-
if (v ===
|
|
63
|
-
const
|
|
62
|
+
if (v === u && Y.current !== u) {
|
|
63
|
+
const n = M?.(`${l}-${u}`), r = _?.(String(l), u), e = r?.value !== void 0 ? r.value : t.value || "", o = r?.meta?.currency_code || n || R();
|
|
64
64
|
y({
|
|
65
65
|
value: e,
|
|
66
66
|
currencyCode: o
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
|
-
v !==
|
|
70
|
-
}, [v,
|
|
71
|
-
x && v ===
|
|
69
|
+
v !== u && Y.current === u && S(null), Y.current = v;
|
|
70
|
+
}, [v, u, M, _, l, t.value]), P(() => {
|
|
71
|
+
x && v === t.column.key && (t?.column?.masterDataColumnName || t?.column?.masterDataFormula) && t?.column?.masterDataName && (m && m(String(l), u, {
|
|
72
72
|
value: x.value,
|
|
73
73
|
meta: { reference: x.reference },
|
|
74
74
|
originalValue: t.value
|
|
@@ -76,7 +76,8 @@ const C = (t) => ({
|
|
|
76
76
|
}, [
|
|
77
77
|
x,
|
|
78
78
|
v,
|
|
79
|
-
|
|
79
|
+
u,
|
|
80
|
+
t?.column?.masterDataFormula,
|
|
80
81
|
t?.column?.masterDataColumnName,
|
|
81
82
|
t?.column?.masterDataName,
|
|
82
83
|
m,
|
|
@@ -90,15 +91,15 @@ const C = (t) => ({
|
|
|
90
91
|
P(() => {
|
|
91
92
|
d.current = c;
|
|
92
93
|
}, [c]);
|
|
93
|
-
const E = I(null), i = `${l}-${
|
|
94
|
+
const E = I(null), i = `${l}-${u}`;
|
|
94
95
|
fe(() => {
|
|
95
96
|
const a = E.current;
|
|
96
97
|
if (!a) return;
|
|
97
|
-
const
|
|
98
|
-
if (
|
|
98
|
+
const n = h.get(i);
|
|
99
|
+
if (n) {
|
|
99
100
|
a.focus();
|
|
100
101
|
try {
|
|
101
|
-
a.setSelectionRange(
|
|
102
|
+
a.setSelectionRange(n.start, n.end);
|
|
102
103
|
} catch {
|
|
103
104
|
}
|
|
104
105
|
} else w !== i && a.focus();
|
|
@@ -109,12 +110,12 @@ const C = (t) => ({
|
|
|
109
110
|
}, []);
|
|
110
111
|
const $ = N(
|
|
111
112
|
(a) => {
|
|
112
|
-
b(C(a)), m && m(String(l),
|
|
113
|
+
b(C(a)), m && m(String(l), u, {
|
|
113
114
|
value: a,
|
|
114
115
|
originalValue: t.value
|
|
115
116
|
});
|
|
116
117
|
},
|
|
117
|
-
[b, m, l,
|
|
118
|
+
[b, m, l, u, t.value]
|
|
118
119
|
), V = N(
|
|
119
120
|
(a) => {
|
|
120
121
|
k.current && clearTimeout(k.current), k.current = setTimeout(() => {
|
|
@@ -125,30 +126,30 @@ const C = (t) => ({
|
|
|
125
126
|
), z = N(() => {
|
|
126
127
|
k.current && (clearTimeout(k.current), k.current = void 0, $(String(d.current.value ?? "")));
|
|
127
128
|
}, [$]), K = N(() => {
|
|
128
|
-
const a = t?.column?.type?.toLowerCase(),
|
|
129
|
+
const a = t?.column?.type?.toLowerCase(), n = d.current.value;
|
|
129
130
|
switch (a) {
|
|
130
131
|
case "url":
|
|
131
|
-
U(String(
|
|
132
|
+
U(String(n ?? ""));
|
|
132
133
|
break;
|
|
133
134
|
case "e-mail":
|
|
134
|
-
j(String(
|
|
135
|
+
j(String(n ?? ""));
|
|
135
136
|
break;
|
|
136
137
|
default:
|
|
137
|
-
f(
|
|
138
|
+
f(n);
|
|
138
139
|
break;
|
|
139
140
|
}
|
|
140
141
|
}, [t?.column?.type]), X = N(() => {
|
|
141
|
-
const a = t?.column?.type?.toLowerCase(),
|
|
142
|
+
const a = t?.column?.type?.toLowerCase(), n = d.current.value, r = d.current.currencyCode;
|
|
142
143
|
let e = !0;
|
|
143
144
|
switch (a) {
|
|
144
145
|
case "url":
|
|
145
|
-
e = U(String(
|
|
146
|
+
e = U(String(n ?? ""));
|
|
146
147
|
break;
|
|
147
148
|
case "e-mail":
|
|
148
|
-
e = j(String(
|
|
149
|
+
e = j(String(n ?? ""));
|
|
149
150
|
break;
|
|
150
151
|
default:
|
|
151
|
-
e = f(
|
|
152
|
+
e = f(n);
|
|
152
153
|
break;
|
|
153
154
|
}
|
|
154
155
|
if (!e)
|
|
@@ -156,23 +157,23 @@ const C = (t) => ({
|
|
|
156
157
|
let o = null;
|
|
157
158
|
return a === "currency" && (o = { currency_code: M?.(T) || r }), {
|
|
158
159
|
isValid: !0,
|
|
159
|
-
value: typeof
|
|
160
|
+
value: typeof n == "number" ? String(n) : n,
|
|
160
161
|
meta: o
|
|
161
162
|
};
|
|
162
163
|
}, [t?.column?.type, T, M]);
|
|
163
164
|
P(() => {
|
|
164
|
-
L && v ===
|
|
165
|
-
}, [L, X, v,
|
|
165
|
+
L && v === u && L(X);
|
|
166
|
+
}, [L, X, v, u]);
|
|
166
167
|
const ne = () => {
|
|
167
168
|
if (t?.column?.is_master_data && t?.column?.masterDataName && (t?.column?.masterDataColumnName || t?.column?.masterDataFormula)) {
|
|
168
|
-
const r = _?.(String(l),
|
|
169
|
+
const r = _?.(String(l), u), e = x?.value ?? r?.value ?? t.value;
|
|
169
170
|
return /* @__PURE__ */ s("div", { onMouseDown: (o) => o.stopPropagation(), className: "z-[120] h-full w-full", children: /* @__PURE__ */ s(
|
|
170
171
|
ve,
|
|
171
172
|
{
|
|
172
173
|
id: `master-data-cell-${l}-${t.column.id}`,
|
|
173
174
|
value: e,
|
|
174
175
|
onChange: (o, D) => {
|
|
175
|
-
b(C(o)), m && m(String(l),
|
|
176
|
+
b(C(o)), m && m(String(l), u, {
|
|
176
177
|
value: o,
|
|
177
178
|
meta: { reference: D || null },
|
|
178
179
|
originalValue: t.value
|
|
@@ -188,10 +189,10 @@ const C = (t) => ({
|
|
|
188
189
|
}
|
|
189
190
|
) });
|
|
190
191
|
}
|
|
191
|
-
const a = t?.column?.type?.toLowerCase(),
|
|
192
|
+
const a = t?.column?.type?.toLowerCase(), n = u ? t?.row?.original?.__cellMetadata?.[u] : void 0;
|
|
192
193
|
switch (a) {
|
|
193
194
|
case "choice": {
|
|
194
|
-
const r =
|
|
195
|
+
const r = n?.choices ?? t?.column?.choices;
|
|
195
196
|
return /* @__PURE__ */ s("div", { onMouseDown: (e) => e.stopPropagation(), children: /* @__PURE__ */ s(
|
|
196
197
|
ie,
|
|
197
198
|
{
|
|
@@ -203,7 +204,7 @@ const C = (t) => ({
|
|
|
203
204
|
})) || [],
|
|
204
205
|
onChange: (e) => {
|
|
205
206
|
const o = e ? Array.isArray(e) ? e[0]?.value?.toString() || "" : e?.value?.toString() || "" : "";
|
|
206
|
-
y((D) => ({ ...D, value: o })), b(C(o)), m && m(String(l),
|
|
207
|
+
y((D) => ({ ...D, value: o })), b(C(o)), m && m(String(l), u, {
|
|
207
208
|
value: o,
|
|
208
209
|
originalValue: t.value
|
|
209
210
|
}), g(o), f(o);
|
|
@@ -233,7 +234,7 @@ const C = (t) => ({
|
|
|
233
234
|
value: c.value || void 0,
|
|
234
235
|
handleOnChange: (r) => {
|
|
235
236
|
const e = r || "";
|
|
236
|
-
y((o) => ({ ...o, value: e })), b(C(e)), m && m(String(l),
|
|
237
|
+
y((o) => ({ ...o, value: e })), b(C(e)), m && m(String(l), u, {
|
|
237
238
|
value: e,
|
|
238
239
|
originalValue: t.value
|
|
239
240
|
}), g(e), f(e);
|
|
@@ -256,7 +257,7 @@ const C = (t) => ({
|
|
|
256
257
|
y((D) => ({
|
|
257
258
|
value: e,
|
|
258
259
|
currencyCode: o || D.currencyCode
|
|
259
|
-
})), b(C(e)), m && m(String(l),
|
|
260
|
+
})), b(C(e)), m && m(String(l), u, {
|
|
260
261
|
value: e,
|
|
261
262
|
meta: { currency_code: o },
|
|
262
263
|
originalValue: t.value,
|
|
@@ -324,7 +325,7 @@ const C = (t) => ({
|
|
|
324
325
|
id: `toggle-cell-${l}-${t.column.id}`,
|
|
325
326
|
isChecked: r,
|
|
326
327
|
onChange: (e) => {
|
|
327
|
-
y((o) => ({ ...o, value: e })), b(C(e)), m && m(String(l),
|
|
328
|
+
y((o) => ({ ...o, value: e })), b(C(e)), m && m(String(l), u, {
|
|
328
329
|
value: e,
|
|
329
330
|
originalValue: t.value
|
|
330
331
|
}), g(e);
|