Browse Source

empty field value fix

Ivan Asmer 4 years ago
parent
commit
85fc5cc840
2 changed files with 12 additions and 11 deletions
  1. 2 2
      src/App.css
  2. 10 9
      src/App.js

+ 2 - 2
src/App.css

@@ -88,8 +88,8 @@
 }
 
 textarea {
-    width: 96%;
-    height: 200px;
+    width: 98%;
+    height: 100px;
 }
 
 aside {

+ 10 - 9
src/App.js

@@ -51,7 +51,7 @@ const EditForm = ({record, models={}, model, options=defaultAdminOptions, Compon
                                                                    value={edit[field.name]} 
                                                                    options={options}
                                                                    onChange={event => { 
-                                                                       setEdit({...edit, [field.name]: event && event.target && event.target.value || event})
+                                                                       setEdit({...edit, [field.name]: event && event.target ? event.target.value : event})
                                                                    }}
                                                                     />)}
                 {Object.entries(onlyInputs).map(([key,field]) => <EFR key={key} field={field} 
@@ -59,7 +59,7 @@ const EditForm = ({record, models={}, model, options=defaultAdminOptions, Compon
                                                                    record={record} 
                                                                    value={edit[field.name]} 
                                                                    options={options}
-                                                                   onChange={event => setEdit({...edit, [field.name]: event && event.target && event.target.value || event})}
+                                                                   onChange={event => setEdit({...edit, [field.name]: event && event.target ?  event.target.value : event})}
                                                                     />)}
 
                 </tbody>
@@ -89,6 +89,7 @@ const Row = ({top, selected, children}) => {
 const Cell = ({children, options, record, field, selected, model, models={}, onClick, ...props}) => {
         
     let Formatter = React.Fragment
+    const type = (children && typeof children === 'object' && children.constructor) || model
 
     const viewOrEdit = (!record.constructor.inputs || record.constructor.inputs.some(input => input.name === field.name)) && selected ? 'edit' : 'view'
     const typeName   = field.type.name || field.type.ofType.name
@@ -98,10 +99,9 @@ const Cell = ({children, options, record, field, selected, model, models={}, onC
     if (field.name in options[viewOrEdit].fields){
         Formatter = options[viewOrEdit].fields[field.name]
     }
-    if ((children && typeof children === 'object') || model){ 
-        //if (viewOrEdit === 'edit') debugger;
-        if ((children || model).constructor.name in options[viewOrEdit].formatters)
-            Formatter = options[viewOrEdit].formatters[(children || model).constructor.name]
+    if (type){ 
+        if (type.name in options[viewOrEdit].formatters)
+            Formatter = options[viewOrEdit].formatters[type.name]
         else
             Formatter = options[viewOrEdit].formatters.Object
     }
@@ -348,7 +348,8 @@ const defaultAdminOptions =
             },
             fields:{
                 createdAt: ({children}) => <>{new Date(+children).toISOString()}</> ,
-                url: ({children}) => <a href={children}>{children}</a> 
+                url: ({children}) => <a href={children}>{children}</a>,
+                color:(props) => <input type='color' {...props}/>
             },
             relations: {
                 Image: ({children}) => <span className="ImageRelation"><img  src={children.url}/>{children.originalFileName}</span>
@@ -377,9 +378,9 @@ const defaultAdminOptions =
                                 }}>{children.map((child, i) => 
                                     <SortableCell onDelete={() => onChange(children.filter((item, j) => j !== i))} 
                                                   onAdd={() => onChange([...children.slice(0, i),newItem,...children.slice(i)])}  
-                                                index={i} key={(child && (child._id || child.key)) || i} model={model} {...props} children={child} selected 
+                                                index={i} key={(child && (child._id || child.key || child.name)) || i} model={model} {...props} children={child} selected 
                                             onCh={data => {
-                                                            data = (data && data.target && data.target.value) || data
+                                                            data = (data && data.target) ?  data.target.value : data
                                                             console.log(data, children)
                                                             if (!children.find(record => record && record._id === data._id)){
                                                                 const copy = [...children]