|
@@ -3,6 +3,7 @@ import logo from './logo.svg';
|
|
|
import './App.css';
|
|
|
import Select from 'react-select/async'
|
|
|
import {sortableContainer, sortableElement} from 'react-sortable-hoc';
|
|
|
+import Dropzone from 'react-dropzone'
|
|
|
|
|
|
import { GraphQLClient } from 'graphql-request';
|
|
|
|
|
@@ -248,7 +249,9 @@ const ModelView = ({model, models={}, options, components:Components={Search, Co
|
|
|
}
|
|
|
},[search, model])
|
|
|
|
|
|
- console.log(Components)
|
|
|
+ //console.log(Components)
|
|
|
+ //
|
|
|
+ const Add = options.add[model.name] || "button"
|
|
|
|
|
|
return (
|
|
|
<>
|
|
@@ -262,11 +265,11 @@ const ModelView = ({model, models={}, options, components:Components={Search, Co
|
|
|
sort: [{[sort]: cursorCalls.sort[0][sort] === 1 ? -1 : 1}]
|
|
|
})}/>
|
|
|
|
|
|
- <button onClick={() => {
|
|
|
- (new model).save()
|
|
|
+ <Add onClick={() => {
|
|
|
+ if (Add === 'button') (new model).save()
|
|
|
setCursorCalls({...cursorCalls, sort: [{_id: -1}]})
|
|
|
setSearch('')
|
|
|
- }}>+</button>
|
|
|
+ }} model={model}>+</Add>
|
|
|
{records && <Components.Grid
|
|
|
models={models}
|
|
|
options={options}
|
|
@@ -362,7 +365,8 @@ const defaultAdminOptions =
|
|
|
color:(props) => <span style={{backgroundColor: props.value}}>{props.value}</span>
|
|
|
},
|
|
|
relations: {
|
|
|
- Image: ({children}) => <span className="ImageRelation"><img src={localStorage.url + children.url}/>{children.originalFileName}</span>
|
|
|
+ Image: ({children}) => <span className="ImageRelation"><img src={localStorage.url + children.url}/>{children.originalFileName}</span>,
|
|
|
+ Content: ({children}) => <span className="ImageRelation"><img src={localStorage.url + children.url}/>{children.originalFileName}</span>
|
|
|
},
|
|
|
models: {
|
|
|
|
|
@@ -412,6 +416,35 @@ const defaultAdminOptions =
|
|
|
models: {
|
|
|
|
|
|
}
|
|
|
+ },
|
|
|
+
|
|
|
+ add: {
|
|
|
+ Content({model, onClick}){
|
|
|
+ return (
|
|
|
+ <Dropzone onDrop={async acceptedFiles => {
|
|
|
+ await Promise.all(acceptedFiles.map(file => {
|
|
|
+ const body = new FormData
|
|
|
+ body.append('upload',file)
|
|
|
+ fetch(`${localStorage.url}upload`, {
|
|
|
+ method: "POST",
|
|
|
+ headers: localStorage.authToken ? {Authorization: 'Bearer ' + localStorage.authToken} : {},
|
|
|
+ body
|
|
|
+ })
|
|
|
+ }))
|
|
|
+ onClick()
|
|
|
+ }
|
|
|
+ }>
|
|
|
+ {({getRootProps, getInputProps}) => (
|
|
|
+ <section className='drop'>
|
|
|
+ <div {...getRootProps()}>
|
|
|
+ <input {...getInputProps()} />
|
|
|
+ <p>Drag 'n' drop some files here, or click to select files</p>
|
|
|
+ </div>
|
|
|
+ </section>
|
|
|
+ )}
|
|
|
+ </Dropzone>
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|