@erpsquad/common 1.8.25 → 1.8.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/material-editable-table/components/inline-edit-fields.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Box } from '@mui/material';\n\nimport Typography from '../../typography/typography';\nimport DatePicker from '../../date-picker/date-picker';\nimport DateTimePicker from '../../date-time-picker/date-time-picker';\nimport TextField from '../../text-field/text-field';\nimport UploadMedia from '../../upload-media/upload-media';\n\nimport * as yup from 'yup';\nimport _ from 'lodash';\nimport dayjs from 'dayjs';\nimport PhoneInput from '../../phone-input/phone-input';\nimport Checkbox from '../../checkbox/checkbox';\nimport SearchableSelect from '../../searchable-select';\n\ninterface IInlineEditFields {\n\tcell: any;\n\tcolumn: any;\n\trow: any;\n\ttable: any;\n\tcol: any;\n\tcallback: (value: any, column: any, rowId: any) => any;\n\terrors: any;\n\tvalidationSchema: any;\n\tsetValidationErrors: any;\n\tonChangeRowField?: (e: any, type: string, row: any) => any;\n\tgetSelectedData:any\n}\nconst InlineEditFields: React.FC<IInlineEditFields> = ({\n\t// cell,\n\tcolumn,\n\trow,\n\t// table,\n\tcol,\n\t// callback,\n\terrors,\n\tvalidationSchema,\n\tsetValidationErrors,\n\tonChangeRowField,\n\tgetSelectedData\n}) => {\n\n\tconst [inputValue, setInputValue] = useState<any>();\n\tconst [isInitialSet, setIsInitialSet] = useState<any>(false);\n const customFilter=useRef(null)\n\t// ** Getting only editing enabled fields.\n\tconst editCols = row\n\t\t.getAllCells()\n\t\t.map((col: any) => col.column.columnDef)\n\t\t.filter(\n\t\t\t(col: any) =>\n\t\t\t\tcol?.enableEditing === undefined || col?.enableEditing === true\n\t\t);\n\n\tconst editVariant = col.editVariant;\n\tconst fieldProperties = column.columnDef?.editProperties || {};\n\n\t// ** Default and Dynamic disbaling a field with row data\n\tlet fieldDisbled = false;\n\tif (fieldProperties?.disable) {\n\t\tif (typeof fieldProperties.disable === 'function') {\n\t\t\tfieldDisbled = Boolean(fieldProperties?.disable(row, row._valuesCache));\n\t\t} else {\n\t\t\tfieldDisbled = Boolean(fieldProperties.disable);\n\t\t}\n\t}\n\n\tconst handleCustomFilter = useCallback(async (row, values) => {\n\t\t\n\t\ttry {\n\t\t\tif (typeof fieldProperties.customeFilter === 'function') {\n\t\t\t\tconst filter = await fieldProperties.customeFilter(row, values);\n\t\t\t\tcustomFilter.current = filter;\n\t\t\t\treturn filter;\n\t\t\t} else {\n\t\t\t\tcustomFilter.current = fieldProperties?.customeFilter;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [fieldProperties, row, row._valuesCache]);\n\n\t\n\tuseEffect(()=>{\n\t\thandleCustomFilter(row, row._valuesCache)\n\t},[handleCustomFilter,row,row._valuesCache]);\n\t// ** Setting a default value for edit mode.\n\tconst valueKey = fieldProperties?.valueKey;\n\tlet defaultValue: any = '';\n\n\tif (editVariant === 'select' && fieldProperties?.is_multiple) {\n\t\tdefaultValue = valueKey ? _.get(row.original, valueKey, []) : [];\n\t} else {\n\t\tdefaultValue = valueKey\n\t\t\t? _.get(row.original, valueKey, row.original[column.id])\n\t\t\t: row.original[column.id];\n\t\t\n\t\t// For select fields, if we have a string or numeric value but need an object, try to find the matching option\n\t\tif (editVariant === 'select' && (typeof defaultValue === 'string' || typeof defaultValue === 'number') && col?.editSelectOptions) {\n\t\t\tconst matchingOption = col.editSelectOptions.find((option: any) => \n\t\t\t\toption.value === defaultValue || option.id === defaultValue || option.name === defaultValue || String(option.id) === String(defaultValue)\n\t\t\t);\n\t\t\tif (matchingOption) {\n\t\t\t\tdefaultValue = matchingOption;\n\t\t\t}\n\t\t}\n\t}\n\n\t// ** Validate a field with Material Table Validation Schema.\n\tconst validate = async (value: any) => {\n\t\ttry {\n\t\t\t// const v = await validationSchema.validateAt( // * * This line has commented for rerendering purpose\n\t\t\tawait validationSchema.validateAt(\n\t\t\t\tcolumn.id,\n\t\t\t\t{\n\t\t\t\t\t[column.id]: value\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tabortEarly: false\n\t\t\t\t}\n\t\t\t);\n\t\t\t// if (v) { // * * The if condition has commented for rerendering purpose\n\t\t\t\tconst fe: any = {}; // field error\n\t\t\t\tfor (const e in errors) {\n\t\t\t\t\tif (e != column.id) {\n\t\t\t\t\t\tfe[e] = errors[e];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetValidationErrors(fe);\n\t\t\t// }\n\t\t} catch (err) {\n\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\tconst e: Record<string, string> = {};\n\t\t\t\terr.inner.forEach((error) => {\n\t\t\t\t\tif (error.path) {\n\t\t\t\t\t\te[error.path] = error.message;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst em = { ...errors, ...e };\n\t\t\t\tsetValidationErrors(em);\n\t\t\t}\n\t\t}\n\t};\n\n\t\n\n\t// ** Detect onChnage to perform the action on an input change.\n\tconst onChange = async (e: any, type: string,selectedData:any) => {\n\t\tconst data = selectedData\n\t\tlet value;\n\t\tswitch (type) {\n\t\t\tcase 'date':\n\t\t\tcase 'file':\n\t\t\tcase 'image':\n\t\t\tcase 'phone':\n\t\t\t\tvalue = e;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: e });\n\t\t\t\tbreak;\n\t\t\tcase 'text':\n\t\t\tcase 'number':\n\t\t\t\tvalue = e.target.value;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\n\t\t\t\tbreak;\n\t\t\tcase 'checkbox':\n\t\t\t\tvalue = e.target.checked;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tvalue = e.target.value;\n\t\t\t\tbreak;\n\t\t}\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\n\t\t\n\t\tif (onChangeRowField) {\n\t\t\tconst v = await onChangeRowField(e, type, row, col, data);\n\t\t\tif (v) {\n\t\t\t\trow._valuesCache = { ...row._valuesCache, ...v };\n\t\t\t\tsetInputValue({ ...inputValue, ...v });\n\t\t\t}\n\t\t}\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\n\t\trow._valuesCache = { ...row._valuesCache, [column.id]: value };\n\t\t\n\t\tawait validate(value);\n\t};\n\n\tuseEffect(() => {\n\t\tsetInputValue({ ...inputValue, ...row._valuesCache });\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [row._valuesCache]);\n\n\tuseEffect(() => {\n\t\tif (!isInitialSet) {\n\t\t\tconst editFields = Object.keys(row._valuesCache || {});\n\t\t\tconst dValues: any = {};\n\n\t\t\trow.getAllCells().forEach((cell) => {\n\t\t\t\tif (\n\t\t\t\t\tcell.column.columnDef?.enableEditing === undefined ||\n\t\t\t\t\tcell.column.columnDef?.enableEditing === true\n\t\t\t\t) {\n\t\t\t\t\tconst { is_multiple, valueKey } =\n\t\t\t\t\t\tcell.column.columnDef?.editProperties || {};\n\t\t\t\t\tif (editFields.includes(cell.column.id)) {\n\t\t\t\t\t\tconst vl = _.get(row.original, valueKey);\n\t\t\t\t\t\tif (editVariant === 'select' && is_multiple) {\n\t\t\t\t\t\t\tdValues[cell.column.id] = vl\n\t\t\t\t\t\t\t\t? Array.isArray(vl)\n\t\t\t\t\t\t\t\t\t? vl\n\t\t\t\t\t\t\t\t\t: [vl]\n\t\t\t\t\t\t\t\t: [];\n\t\t\t\t\t\t} else if (editVariant === 'date' || editVariant === 'date_time') {\n\t\t\t\t\t\t\tdValues[cell.column.id] = vl\n\t\t\t\t\t\t\t\t? dayjs(vl).isValid()\n\t\t\t\t\t\t\t\t\t? dayjs(vl)\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t: dayjs(row.original[cell.column.id]).isValid()\n\t\t\t\t\t\t\t\t\t? dayjs(row.original[cell.column.id])\n\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdValues[cell.column.id] = _.get(\n\t\t\t\t\t\t\t\trow.original,\n\t\t\t\t\t\t\t\tvalueKey,\n\t\t\t\t\t\t\t\trow.original[cell.column.id]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t// setFieldsValues(dValues);\n\t\t\trow._valuesCache = dValues;\n\t\t\tsetInputValue(dValues);\n\t\t\tsetIsInitialSet(true);\n\t\t}\n\t}, [row, editVariant, isInitialSet]);\n\treturn (\n\t\t<>\n\t\t\t{(!editVariant || editVariant === 'number') && (\n\t\t\t\t<TextField\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t// onBlur={(e) => onBlur(e)}\n\t\t\t\t\t// onKeyDown={onKeyDown}\n\t\t\t\t\tonChange={(e) => onChange(e, editVariant)}\n\t\t\t\t\tvalue={inputValue?.[column.id]}\n\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\n\t\t\t\t\ttype={editVariant || 'text'}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'select' && (\n\t\t\t\t<Box display='flex' flexDirection='column' width='100%'>\n\t\t\t\t\t<SearchableSelect\n\t\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\t\t\tsearchPlaceholder={`Search ${col.header}`}\n\t\t\t\t\t\tonChange={(e, row) => onChange(e, 'select', row)}\n\t\t\t\t\t\tapiType={fieldProperties?.apiType}\n\t\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\n\t\t\t\t\t\toptions={col?.editSelectOptions}\n\t\t\t\t\t\tcustomeFilter={customFilter.current}\n\t\t\t\t\t\tfilterKey={fieldProperties?.filterKey}\n\t\t\t\t\t\tlabelKey={fieldProperties?.labelKey}\n\t\t\t\t\t\tvalueKey={fieldProperties?.bindingKey}\n\t\t\t\t\t\tattributes={fieldProperties.attributes}\n\t\t\t\t\t\tisInternal={fieldProperties?.isInternal || !fieldProperties?.apiType}\n\t\t\t\t\t\tmultiple={fieldProperties?.is_multiple}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tfieldProperties?.is_multiple\n\t\t\t\t\t\t\t\t? Array.isArray(inputValue?.[column.id])\n\t\t\t\t\t\t\t\t\t? inputValue?.[column.id]\n\t\t\t\t\t\t\t\t\t: []\n\t\t\t\t\t\t\t\t: (() => {\n\t\t\t\t\t\t\t\t\tconst val = inputValue?.[column.id];\n\t\t\t\t\t\t\t\t\t// If we have a string or numeric value but need an object, try to find the matching option\n\t\t\t\t\t\t\t\t\tif ((typeof val === 'string' || typeof val === 'number') && col?.editSelectOptions) {\n\t\t\t\t\t\t\t\t\t\tconst matchingOption = col.editSelectOptions.find((option: any) => \n\t\t\t\t\t\t\t\t\t\t\toption.value === val || option.id === val || option.name === val || String(option.id) === String(val)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\treturn matchingOption || val;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn val;\n\t\t\t\t\t\t\t\t})()\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgetSelectedData={(row)=>getSelectedData(fieldProperties?.field_name,row)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{errors?.[column.id] && (\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t\t{errors?.[column.id]}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t\t{editVariant === 'date' && (\n\t\t\t\t<DatePicker\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\tminDate={fieldProperties?.min_date}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'date_time' && (\n\t\t\t\t<DateTimePicker\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{(editVariant === 'file' || editVariant === 'image') && (\n\t\t\t\t<Box display='flex' flexDirection='column'>\n\t\t\t\t\t<UploadMedia\n\t\t\t\t\t\tname={fieldProperties?.field_name || 'table_file'}\n\t\t\t\t\t\tdataPosition={0}\n\t\t\t\t\t\tdataName='table_file'\n\t\t\t\t\t\tlabel=''\n\t\t\t\t\t\ttype={editVariant}\n\t\t\t\t\t\tmax_size={10}\n\t\t\t\t\t\tonChange={(v) => onChange(v, 'file')}\n\t\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\t\tmultiple={Boolean(column?.is_multiple)}\n\t\t\t\t\t\tvalue={row._valuesCache[column.id]}\n\t\t\t\t\t/>\n\t\t\t\t\t{errors?.[column.id] && (\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t\t{errors?.[column.id]}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t\t{editVariant === 'phone' && (\n\t\t\t\t<PhoneInput\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefault_value={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'phone')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\tisInlineEditing={true}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'checkbox' && (\n\t\t\t\t<Checkbox\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultChecked={Boolean(defaultValue)}\n\t\t\t\t\t// checked={Boolean(defaultValue)}\n\t\t\t\t\tonChange={(v) => onChange(v, 'checkbox')}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nexport default InlineEditFields;\n"],"names":["column","row","col","errors","validationSchema","setValidationErrors","onChangeRowField","getSelectedData","inputValue","setInputValue","useState","isInitialSet","setIsInitialSet","customFilter","useRef","editCols","getAllCells","map","columnDef","filter","enableEditing","editVariant","fieldProperties","_a","editProperties","fieldDisbled","disable","Boolean","_valuesCache","handleCustomFilter","useCallback","async","values","customeFilter","current","error","useEffect","valueKey","defaultValue","is_multiple","_","get","original","id","editSelectOptions","matchingOption","find","option","value","name","String","onChange","e","type","selectedData","data","target","checked","v","validateAt","abortEarly","fe","err","yup","ValidationError","inner","forEach","path","message","em","validate","editFields","Object","keys","dValues","cell","_b","_c","includes","vl","Array","isArray","dayjs","isValid","jsxs","Fragment","children","jsx","TextField","autoFocus","accessorKey","helperText","placeholder","field_name","disabled","Box","display","flexDirection","width","SearchableSelect","searchPlaceholder","header","apiType","options","filterKey","labelKey","bindingKey","attributes","isInternal","multiple","val","Typography","color","DatePicker","textFieldProps","_d","format","dateFormat","minDate","min_date","DateTimePicker","_e","UploadMedia","dataPosition","dataName","label","max_size","PhoneInput","default_value","_f","_g","isInlineEditing","Checkbox","defaultChecked","_h"],"mappings":"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"}