diff --git a/components.js b/components.js new file mode 100644 index 000000000..412818c43 --- /dev/null +++ b/components.js @@ -0,0 +1,72 @@ +export { default as App } from './src/client/components/App'; + +// Controls +export { default as Button } from './src/client/components/controls/Button'; + +// Data +export { default as withListData } from './src/client/components/data/list'; +export { default as withEditData } from './src/client/components/data/edit'; + +// Field Types +export { default as fieldType } from './src/client/components/field-types/fieldType'; +export { default as Group } from './src/client/components/field-types/Group'; +export { default as Repeater } from './src/client/components/field-types/Repeater'; +export { default as Input } from './src/client/components/field-types/Input'; +export { default as Media } from './src/client/components/field-types/Media'; +export { default as Email } from './src/client/components/field-types/Email'; +export { default as Password } from './src/client/components/field-types/Password'; +export { default as Textarea } from './src/client/components/field-types/Textarea'; +export { default as HiddenInput } from './src/client/components/field-types/HiddenInput'; + +// Forms +export { default as Form, FormContext } from './src/client/components/forms/Form'; +export { default as FormSubmit } from './src/client/components/forms/Submit'; + +// Graphics +export { default as PayloadIcon } from './src/client/components/graphics/PayloadIcon'; +export { default as PayloadLogo } from './src/client/components/graphics/PayloadLogo'; +export { default as Arrow } from './src/client/components/graphics/Arrow'; +export { default as Close } from './src/client/components/graphics/Close'; + +// Layout +export { default as DefaultTemplate } from './src/client/components/layout/DefaultTemplate'; +export { default as Sticky } from './src/client/components/layout/Sticky'; +export { default as Sidebar } from './src/client/components/layout/Sidebar'; +export { default as ContentBlock } from './src/client/components/layout/ContentBlock'; +export { default as Table } from './src/client/components/layout/Table'; +export { default as Section } from './src/client/components/layout/Section'; + +// Modals +export { default as asModal } from './src/client/components/modals/asModal'; + +// Modules +export { default as Status } from './src/client/components/modules/Status'; +export { default as StickyHeader } from './src/client/components/modules/StickyHeader'; +export { default as HeadingButton } from './src/client/components/modules/HeadingButton'; +export { default as Filter } from './src/client/components/modules/Filter'; +export { default as APIUrl } from './src/client/components/modules/APIUrl'; +export { default as StepNav } from './src/client/components/modules/StepNav'; +export { default as Tooltip } from './src/client/components/modules/Tooltip'; +export { default as SearchableTable } from './src/client/components/modules/SearchableTable'; +export { default as Localizer } from './src/client/components/modules/Localizer'; +export { default as UploadMedia } from './src/client/components/modules/UploadMedia'; + + +// Routes +export { default as CollectionRoutes } from './src/client/components/routes/Collections'; + +// Utilities +export { default as MeasureWindow } from './src/client/components/utilities/MeasureWindow'; +export { default as MeasureScroll } from './src/client/components/utilities/MeasureScroll'; +export { default as SetStepNav } from './src/client/components/utilities/SetStepNav'; +export { default as LoadGlobals } from './src/client/components/utilities/LoadGlobals'; +export { default as SetLocale } from './src/client/components/utilities/SetLocale'; +export { default as SetSearchParams } from './src/client/components/utilities/SetSearchParams'; + +// Views +export { default as Dashboard } from './src/client/components/views/Dashboard'; +export { default as Login } from './src/client/components/views/Login'; +export { default as CreateUser } from './src/client/components/views/CreateUser'; +export { default as MediaLibrary } from './src/client/components/views/MediaLibrary'; +export { default as ListView } from './src/client/components/views/collections/List'; +export { default as EditView } from './src/client/components/views/collections/Edit'; diff --git a/demo/Order/Order.config.js b/demo/Order/Order.config.js deleted file mode 100644 index a96f37360..000000000 --- a/demo/Order/Order.config.js +++ /dev/null @@ -1,43 +0,0 @@ -export default { - slug: 'orders', - label: 'Orders', - singular: 'Order', - plural: 'Orders', - fields: [ - { - name: 'metaInfo', - type: 'group', - fields: { - title: { - type: 'string', - maxLength: 100 - }, - description: { type: 'textarea', - wysiwyg: false, - height: 100 - }, - keywords: { type: 'text' } - } - }, - { - name: 'content', - type: 'group', - fields: [ - { - name: 'exampleField1', - type: 'textarea', - wysiwyg: true, - height: 400 - }, - { - name: 'flexibleContentExample', - type: 'flex', - availableLayouts: [ - 'layout1', - 'layout5' - ] - } - ] - } - ] -}; diff --git a/demo/Order/components/Edit/index.js b/demo/Order/components/Edit/index.js deleted file mode 100644 index bafb1d671..000000000 --- a/demo/Order/components/Edit/index.js +++ /dev/null @@ -1,31 +0,0 @@ -import React, { Component } from 'react'; -import { connect } from 'react-redux'; - -import { EditView } from 'payload/components'; - -const mapStateToProps = state => ({ - collections: state.collections.all -}); - -class Edit extends Component { - constructor(props) { - super(props); - this.slug = 'orders'; - this.collection = this.props.collections.find(collection => { - return collection.slug === this.slug; - }); - } - - render() { - return ( - -

Edit Order {this.props.match.params.id}

-
- ); - } -} - -export default connect(mapStateToProps)(Edit); diff --git a/demo/Order/components/List/index.js b/demo/Order/components/List/index.js deleted file mode 100644 index 86b2af25f..000000000 --- a/demo/Order/components/List/index.js +++ /dev/null @@ -1,33 +0,0 @@ -import React, { Component } from 'react'; -import { connect } from 'react-redux'; - -import { ListView, HeadingButton, Filter } from 'payload/components'; - -const mapStateToProps = state => ({ - collections: state.collections.all -}); - -class List extends Component { - constructor(props) { - super(props); - this.slug = 'orders'; - this.collection = this.props.collections.find(collection => { - return collection.slug === this.slug; - }); - } - - render() { - return ( - - - - - ); - } -} - -export default connect(mapStateToProps)(List); diff --git a/demo/Order/components/index.js b/demo/Order/components/index.js deleted file mode 100644 index 96d9fc616..000000000 --- a/demo/Order/components/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import List from './List'; -import Edit from './Edit'; - -export default { - List: List, - Edit: Edit -}; diff --git a/demo/User/User.validate.js b/demo/User/User.validate.js index 7339aecc4..17fb8736d 100644 --- a/demo/User/User.validate.js +++ b/demo/User/User.validate.js @@ -1,8 +1,8 @@ -import validate from 'express-validation'; -import Joi from 'joi'; +const validate = require('express-validation'); +const Joi = require('joi'); // TODO: move field specific validations to the config -export default { +module.exports = { post: validate({ body: { email: Joi.string().email().required(), diff --git a/demo/app.js b/demo/app.js deleted file mode 100644 index 406f18c88..000000000 --- a/demo/app.js +++ /dev/null @@ -1,32 +0,0 @@ -import express from 'express'; -import Payload from '../src'; -import payloadConfig from './payload.config'; -import User from './config/User'; -import Page from './config/Page'; -import Category from './config/Category'; -const router = express.Router({}); // eslint-disable-line new-cap - -export const app = express(); - -new Payload({ - models: [ - User, - Page, - Category, - ], - config: payloadConfig, - app: app, - router: router, -}); - -if (process.env.NODE_ENV !== 'production') { - router.use((req, res, next) => { - res.header('Access-Control-Allow-Origin', '*'); - res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization'); - next(); - }); -} - -app.listen(payloadConfig.port, () => { - console.log(`listening on ${payloadConfig.port}...`); -}); diff --git a/demo/client/index.js b/demo/client/index.js deleted file mode 100644 index f2a3c246a..000000000 --- a/demo/client/index.js +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import { render } from 'react-dom'; -import { App } from 'payload/components'; -import Routes from './components/Routes'; -import store from './store'; - -import config from '../payload.config.js'; - -import Page from '../Page/Page.config'; -import pageViews from '../Page/components'; - -import Order from '../Order/Order.config'; -import orderViews from '../Order/components'; - -const views = { - orders: orderViews, - pages: pageViews -}; - -const collections = { - orders: Order, - pages: Page -} - -const Index = () => { - return ( - - - - ); -}; - -render(, document.getElementById('app')); diff --git a/demo/config/Category.js b/demo/config/Category.js index 6ff47b06c..b5be1e14c 100644 --- a/demo/config/Category.js +++ b/demo/config/Category.js @@ -1,4 +1,4 @@ -export default { +module.exports = { slug: 'categories', label: 'Categories', labels: { diff --git a/demo/config/Header.js b/demo/config/Header.js new file mode 100644 index 000000000..4ede5f037 --- /dev/null +++ b/demo/config/Header.js @@ -0,0 +1,100 @@ +module.exports = { + slug: 'header', + labels: { + singular: 'Header', + }, + policies: { + create: (req, res, next) => { + return next(); + }, + read: (req, res, next) => { + return next(); + }, + update: (req, res, next) => { + return next(); + }, + destroy: (req, res, next) => { + return next(); + }, + }, + fields: [ + { + name: 'title', + label: 'Page Title', + type: 'input', + unique: true, + localized: true, + maxLength: 100, + required: true, + }, + { + name: 'content', + label: 'Content', + type: 'textarea', + localized: true, + height: 100, + required: true + }, + { + name: 'categories', + label: 'Categories', + type: 'relationship', + relationType: 'reference', + relationTo: 'Category', + }, + { + name: 'image', + label: 'Image', + type: 'media', + required: true + }, + { + name: 'author', + label: 'Written by:', + type: 'reference', + reference: { + to: 'Author', + nested: true, + relationship: 'oneToMany' + } + }, + { + name: 'slides', + label: 'Slides', + type: 'repeater', + fields: [ + { + name: 'content', + type: 'textarea', + label: 'Content' + } + ] + }, + { + label: 'Meta Information', + type: 'group', + fields: [ + { + name: 'metaTitle', + type: 'input', + maxLength: 100, + label: 'Meta Title', + width: 50 + }, + { + name: 'metaKeywords', + type: 'input', + maxLength: 100, + label: 'Meta Keywords', + width: 50 + }, + { + name: 'metaDesc', + type: 'textarea', + label: 'Meta Description', + height: 100 + } + ] + } + ], +}; diff --git a/demo/config/Page.js b/demo/config/Page.js index 2eaf62f5b..f416722e0 100644 --- a/demo/config/Page.js +++ b/demo/config/Page.js @@ -1,4 +1,4 @@ -export default { +module.exports = { slug: 'pages', labels: { singular: 'Page', diff --git a/demo/config/User.js b/demo/config/User.js index 62bf8c520..9e2b485c1 100644 --- a/demo/config/User.js +++ b/demo/config/User.js @@ -1,8 +1,8 @@ -import passportLocalMongoose from 'passport-local-mongoose'; -import payloadConfig from '../payload.config'; -import userValidate from '../User/User.validate'; +const passportLocalMongoose = require('passport-local-mongoose'); +const payloadConfig = require('../payload.config'); +const userValidate = require('../User/User.validate'); -export default { +module.exports = { slug: 'users', labels: { singular: 'User', @@ -29,7 +29,7 @@ export default { registration: true, registrationValidation: userValidate.post, }, - plugins: [{plugin: passportLocalMongoose, options: {usernameField: 'email'}}], + plugins: [{ plugin: passportLocalMongoose, options: { usernameField: 'email' } }], fields: [ { name: 'email', diff --git a/demo/graphql/index.js b/demo/graphql/index.js deleted file mode 100644 index ea34ebc30..000000000 --- a/demo/graphql/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import { makeExecutableSchema } from 'graphql-tools'; -import typeDefs from './types'; -import resolvers from './resolvers'; - -const schema = makeExecutableSchema({ typeDefs, resolvers }); - -export default schema; diff --git a/demo/graphql/resolvers.js b/demo/graphql/resolvers.js deleted file mode 100644 index e4be072d0..000000000 --- a/demo/graphql/resolvers.js +++ /dev/null @@ -1,11 +0,0 @@ -import { mergeResolvers } from 'merge-graphql-schemas'; - -import Page from '../Page/Page.resolvers'; -import Category from '../Category/Category.resolvers'; - -const resolvers = [ - Page, - Category -]; - -export default mergeResolvers(resolvers); diff --git a/demo/graphql/types.js b/demo/graphql/types.js deleted file mode 100644 index edfbffa5b..000000000 --- a/demo/graphql/types.js +++ /dev/null @@ -1,10 +0,0 @@ -import { mergeTypes } from 'merge-graphql-schemas'; - -import Page from '../Page/Page.types'; -import Category from '../Category/Category.types'; -const types = [ - Page, - Category -]; - -export default mergeTypes(types, { all: true }); diff --git a/demo/init.js b/demo/init.js index 2dcd07aab..044212965 100644 --- a/demo/init.js +++ b/demo/init.js @@ -1,5 +1,24 @@ -require('@babel/register')({ - ignore: [/(node_modules)/] +const express = require('express'); +const Payload = require('../'); +const config = require('./payload.config'); +const router = express.Router({}); // eslint-disable-line new-cap + +const app = express(); + +new Payload({ + config, + app, + router, }); -require('./app'); +if (process.env.NODE_ENV !== 'production') { + router.use((req, res, next) => { + res.header('Access-Control-Allow-Origin', '*'); + res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization'); + next(); + }); +} + +app.listen(config.port, () => { + console.log(`listening on ${config.port}...`); +}); diff --git a/demo/payload.config.js b/demo/payload.config.js index c202781b3..87f856f00 100644 --- a/demo/payload.config.js +++ b/demo/payload.config.js @@ -1,4 +1,13 @@ -export default { +const User = require('./config/User'); +const Page = require('./config/Page'); +const Category = require('./config/Category'); + +module.exports = { + models: { + User, + Page, + Category, + }, port: 3000, serverUrl: 'http://localhost:3000', cors: ['http://localhost', 'http://localhost:8080', 'http://localhost:8081'], diff --git a/demo/postman/Payload.postman_collection.json b/demo/postman/Payload.postman_collection.json deleted file mode 100644 index 6d933d140..000000000 --- a/demo/postman/Payload.postman_collection.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "variables": [], - "info": { - "name": "Payload", - "_postman_id": "2ea79fc9-1b0a-1b6c-d7e6-6f8cf8d73cb9", - "description": "", - "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json" - }, - "item": [ - { - "name": "Public Domain Check", - "request": { - "url": "https://jyiixvked0.execute-api.us-east-1.amazonaws.com/dev/call", - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"domain\": \"http://localhost:8000\"}" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Get Page", - "request": { - "url": "http://localhost:3000/pages", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"title\": \"sup dog\",\n\t\"content\": \"some shit\"\n}" - }, - "description": "\t" - }, - "response": [] - }, - { - "name": "Post Page", - "request": { - "url": "http://localhost:3000/pages", - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"title\": \"sup dog\",\n\t\"content\": \"some shit\"\n}" - }, - "description": "\t" - }, - "response": [] - }, - { - "name": "Delete Post", - "request": { - "url": "http://localhost:3000/pages/5bf498411a69cf1b718c730b", - "method": "DELETE", - "header": [], - "body": {}, - "description": "Deletes a post with a specific _id" - }, - "response": [] - }, - { - "name": "Update Page", - "request": { - "url": "http://localhost:3000/pages/5bf498411a69cf1b718c730b", - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"title\": \"hey dog\",\n\t\"content\": \"updated shit\"\n}" - }, - "description": "\t" - }, - "response": [] - }, - { - "name": "Find Page", - "request": { - "url": "http://localhost:3000/pages/5bf498411a69cf1b718c730b", - "method": "GET", - "header": [], - "body": {}, - "description": "" - }, - "response": [] - } - ] -} \ No newline at end of file diff --git a/demo/postman/Payload.postman_collection_with_auth.json b/demo/postman/Payload.postman_collection_with_auth.json deleted file mode 100644 index ecc046efd..000000000 --- a/demo/postman/Payload.postman_collection_with_auth.json +++ /dev/null @@ -1,399 +0,0 @@ -{ - "info": { - "name": "Payload", - "_postman_id": "027b80cb-1244-c4b7-01f4-2a0ccf32e0a3", - "description": "", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - }, - "item": [ - { - "name": "Roles", - "description": "", - "item": [ - { - "name": "At Least", - "description": "", - "item": [ - { - "name": "Role - At least admin", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "JWT {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "http://localhost:3000/role/admin/atleast", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "3000", - "path": [ - "role", - "admin", - "atleast" - ] - }, - "description": "\tThis is to test that the JWT comes through properly. " - }, - "response": [] - }, - { - "name": "Role - At least viewer", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "JWT {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "http://localhost:3000/role/viewer/atleast", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "3000", - "path": [ - "role", - "viewer", - "atleast" - ] - }, - "description": "\tThis is to test that the JWT comes through properly. " - }, - "response": [] - }, - { - "name": "Role - At least user", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "JWT {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "http://localhost:3000/role/user/atleast", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "3000", - "path": [ - "role", - "user", - "atleast" - ] - }, - "description": "\tThis is to test that the JWT comes through properly. " - }, - "response": [] - } - ], - "_postman_isSubFolder": true - }, - { - "name": "Exact", - "description": "", - "item": [ - { - "name": "Role - Admin only", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "JWT {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "http://localhost:3000/role/admin/only", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "3000", - "path": [ - "role", - "admin", - "only" - ] - }, - "description": "\tThis is to test that the JWT comes through properly. " - }, - "response": [] - }, - { - "name": "Role - User only", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "JWT {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "http://localhost:3000/role/user/only", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "3000", - "path": [ - "role", - "user", - "only" - ] - }, - "description": "\tThis is to test that the JWT comes through properly. " - }, - "response": [] - } - ], - "_postman_isSubFolder": true - } - ] - }, - { - "name": "Public Domain Check", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"domain\": \"http://localhost:8000\"}" - }, - "url": { - "raw": "https://jyiixvked0.execute-api.us-east-1.amazonaws.com/dev/call", - "protocol": "https", - "host": [ - "jyiixvked0", - "execute-api", - "us-east-1", - "amazonaws", - "com" - ], - "path": [ - "dev", - "call" - ] - } - }, - "response": [] - }, - { - "name": "Get Page", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"title\": \"sup dog\",\n\t\"content\": \"some shit\"\n}" - }, - "url": { - "raw": "http://localhost:3000/pages", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "3000", - "path": [ - "pages" - ] - }, - "description": "\t" - }, - "response": [] - }, - { - "name": "Post Page", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"title\": \"sup dog\",\n\t\"content\": \"some shit\"\n}" - }, - "url": { - "raw": "http://localhost:3000/pages", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "3000", - "path": [ - "pages" - ] - }, - "description": "\t" - }, - "response": [] - }, - { - "name": "Post User", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"title\": \"sup dog\",\n\t\"content\": \"some shit\"\n}" - }, - "url": { - "raw": "http://localhost:3000/users", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "3000", - "path": [ - "users" - ] - }, - "description": "\t" - }, - "response": [] - }, - { - "name": "Login", - "event": [ - { - "listen": "test", - "script": { - "id": "78a4a2f8-716e-4b01-802a-be1d9c915829", - "type": "text/javascript", - "exec": [ - "var jsonData = JSON.parse(responseBody);", - "postman.setGlobalVariable(\"token\", jsonData.token);" - ] - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n\t\"email\": \"test@test.com\",\n\t\"password\": \"test123\"\n}" - }, - "url": { - "raw": "http://localhost:3000/login", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "3000", - "path": [ - "login" - ] - }, - "description": "\t" - }, - "response": [] - }, - { - "name": "Me", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "JWT {{token}}" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "http://localhost:3000/me", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "3000", - "path": [ - "me" - ] - }, - "description": "\tThis is to test that the JWT comes through properly. " - }, - "response": [] - } - ] -} \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 000000000..6c09c6868 --- /dev/null +++ b/index.js @@ -0,0 +1,5 @@ +require('@babel/register')({ + ignore: [/(node_modules)/] +}); + +module.exports = require('./src'); diff --git a/package.json b/package.json index dce0367bd..48d6f0d52 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "test": "jest --config src/tests/jest.config.js", "test:int": "jest --config src/tests/jest.config.integration.js", "cov": "npm run core:build && node ./node_modules/jest/bin/jest.js src/tests --coverage", - "webpack": "webpack-dev-server --mode development --config config/webpack.dev.config.js --open --hot --history-api-fallback", + "webpack": "webpack-dev-server --mode development --config src/config/webpack.dev.config.js --open --hot --history-api-fallback", "demo-server": "nodemon demo/init.js", "debug": "nodemon --inspect ./demo/init.js", "dev": "npm-run-all -p webpack demo-server" diff --git a/src/assets/fonts/GTPressura-Light.eot b/src/client/assets/fonts/GTPressura-Light.eot similarity index 100% rename from src/assets/fonts/GTPressura-Light.eot rename to src/client/assets/fonts/GTPressura-Light.eot diff --git a/src/assets/fonts/GTPressura-Light.svg b/src/client/assets/fonts/GTPressura-Light.svg similarity index 100% rename from src/assets/fonts/GTPressura-Light.svg rename to src/client/assets/fonts/GTPressura-Light.svg diff --git a/src/assets/fonts/GTPressura-Light.ttf b/src/client/assets/fonts/GTPressura-Light.ttf similarity index 100% rename from src/assets/fonts/GTPressura-Light.ttf rename to src/client/assets/fonts/GTPressura-Light.ttf diff --git a/src/assets/fonts/GTPressura-Light.woff b/src/client/assets/fonts/GTPressura-Light.woff similarity index 100% rename from src/assets/fonts/GTPressura-Light.woff rename to src/client/assets/fonts/GTPressura-Light.woff diff --git a/src/assets/fonts/GTPressuraMono.eot b/src/client/assets/fonts/GTPressuraMono.eot similarity index 100% rename from src/assets/fonts/GTPressuraMono.eot rename to src/client/assets/fonts/GTPressuraMono.eot diff --git a/src/assets/fonts/GTPressuraMono.otf b/src/client/assets/fonts/GTPressuraMono.otf similarity index 100% rename from src/assets/fonts/GTPressuraMono.otf rename to src/client/assets/fonts/GTPressuraMono.otf diff --git a/src/assets/fonts/GTPressuraMono.svg b/src/client/assets/fonts/GTPressuraMono.svg similarity index 100% rename from src/assets/fonts/GTPressuraMono.svg rename to src/client/assets/fonts/GTPressuraMono.svg diff --git a/src/assets/fonts/GTPressuraMono.ttf b/src/client/assets/fonts/GTPressuraMono.ttf similarity index 100% rename from src/assets/fonts/GTPressuraMono.ttf rename to src/client/assets/fonts/GTPressuraMono.ttf diff --git a/src/assets/fonts/GTPressuraMono.woff b/src/client/assets/fonts/GTPressuraMono.woff similarity index 100% rename from src/assets/fonts/GTPressuraMono.woff rename to src/client/assets/fonts/GTPressuraMono.woff diff --git a/src/assets/fonts/NoeDisplay-Bold.eot b/src/client/assets/fonts/NoeDisplay-Bold.eot similarity index 100% rename from src/assets/fonts/NoeDisplay-Bold.eot rename to src/client/assets/fonts/NoeDisplay-Bold.eot diff --git a/src/assets/fonts/NoeDisplay-Bold.svg b/src/client/assets/fonts/NoeDisplay-Bold.svg similarity index 100% rename from src/assets/fonts/NoeDisplay-Bold.svg rename to src/client/assets/fonts/NoeDisplay-Bold.svg diff --git a/src/assets/fonts/NoeDisplay-Bold.ttf b/src/client/assets/fonts/NoeDisplay-Bold.ttf similarity index 100% rename from src/assets/fonts/NoeDisplay-Bold.ttf rename to src/client/assets/fonts/NoeDisplay-Bold.ttf diff --git a/src/assets/fonts/NoeDisplay-Bold.woff b/src/client/assets/fonts/NoeDisplay-Bold.woff similarity index 100% rename from src/assets/fonts/NoeDisplay-Bold.woff rename to src/client/assets/fonts/NoeDisplay-Bold.woff diff --git a/src/assets/fonts/NoeText-Regular.eot b/src/client/assets/fonts/NoeText-Regular.eot similarity index 100% rename from src/assets/fonts/NoeText-Regular.eot rename to src/client/assets/fonts/NoeText-Regular.eot diff --git a/src/assets/fonts/NoeText-Regular.svg b/src/client/assets/fonts/NoeText-Regular.svg similarity index 100% rename from src/assets/fonts/NoeText-Regular.svg rename to src/client/assets/fonts/NoeText-Regular.svg diff --git a/src/assets/fonts/NoeText-Regular.ttf b/src/client/assets/fonts/NoeText-Regular.ttf similarity index 100% rename from src/assets/fonts/NoeText-Regular.ttf rename to src/client/assets/fonts/NoeText-Regular.ttf diff --git a/src/assets/fonts/NoeText-Regular.woff b/src/client/assets/fonts/NoeText-Regular.woff similarity index 100% rename from src/assets/fonts/NoeText-Regular.woff rename to src/client/assets/fonts/NoeText-Regular.woff diff --git a/src/assets/fonts/cal-regular-webfont.eot b/src/client/assets/fonts/cal-regular-webfont.eot similarity index 100% rename from src/assets/fonts/cal-regular-webfont.eot rename to src/client/assets/fonts/cal-regular-webfont.eot diff --git a/src/assets/fonts/cal-regular-webfont.svg b/src/client/assets/fonts/cal-regular-webfont.svg similarity index 100% rename from src/assets/fonts/cal-regular-webfont.svg rename to src/client/assets/fonts/cal-regular-webfont.svg diff --git a/src/assets/fonts/cal-regular-webfont.ttf b/src/client/assets/fonts/cal-regular-webfont.ttf similarity index 100% rename from src/assets/fonts/cal-regular-webfont.ttf rename to src/client/assets/fonts/cal-regular-webfont.ttf diff --git a/src/assets/fonts/cal-regular-webfont.woff b/src/client/assets/fonts/cal-regular-webfont.woff similarity index 100% rename from src/assets/fonts/cal-regular-webfont.woff rename to src/client/assets/fonts/cal-regular-webfont.woff diff --git a/src/assets/fonts/cal-regular-webfont.woff2 b/src/client/assets/fonts/cal-regular-webfont.woff2 similarity index 100% rename from src/assets/fonts/cal-regular-webfont.woff2 rename to src/client/assets/fonts/cal-regular-webfont.woff2 diff --git a/src/components/controls/Button/index.js b/src/client/components/controls/Button/index.js similarity index 100% rename from src/components/controls/Button/index.js rename to src/client/components/controls/Button/index.js diff --git a/src/components/controls/Button/index.scss b/src/client/components/controls/Button/index.scss similarity index 100% rename from src/components/controls/Button/index.scss rename to src/client/components/controls/Button/index.scss diff --git a/src/components/data/edit.js b/src/client/components/data/edit.js similarity index 100% rename from src/components/data/edit.js rename to src/client/components/data/edit.js diff --git a/src/components/data/list.js b/src/client/components/data/list.js similarity index 100% rename from src/components/data/list.js rename to src/client/components/data/list.js diff --git a/src/components/field-types/Email/index.js b/src/client/components/field-types/Email/index.js similarity index 100% rename from src/components/field-types/Email/index.js rename to src/client/components/field-types/Email/index.js diff --git a/src/components/field-types/Email/index.scss b/src/client/components/field-types/Email/index.scss similarity index 100% rename from src/components/field-types/Email/index.scss rename to src/client/components/field-types/Email/index.scss diff --git a/src/components/field-types/Group/index.js b/src/client/components/field-types/Group/index.js similarity index 100% rename from src/components/field-types/Group/index.js rename to src/client/components/field-types/Group/index.js diff --git a/src/components/field-types/HiddenInput/index.js b/src/client/components/field-types/HiddenInput/index.js similarity index 100% rename from src/components/field-types/HiddenInput/index.js rename to src/client/components/field-types/HiddenInput/index.js diff --git a/src/components/field-types/Input/index.js b/src/client/components/field-types/Input/index.js similarity index 100% rename from src/components/field-types/Input/index.js rename to src/client/components/field-types/Input/index.js diff --git a/src/components/field-types/Input/index.scss b/src/client/components/field-types/Input/index.scss similarity index 100% rename from src/components/field-types/Input/index.scss rename to src/client/components/field-types/Input/index.scss diff --git a/src/components/field-types/Media/index.js b/src/client/components/field-types/Media/index.js similarity index 100% rename from src/components/field-types/Media/index.js rename to src/client/components/field-types/Media/index.js diff --git a/src/components/field-types/Media/index.scss b/src/client/components/field-types/Media/index.scss similarity index 100% rename from src/components/field-types/Media/index.scss rename to src/client/components/field-types/Media/index.scss diff --git a/src/components/field-types/Password/index.js b/src/client/components/field-types/Password/index.js similarity index 100% rename from src/components/field-types/Password/index.js rename to src/client/components/field-types/Password/index.js diff --git a/src/components/field-types/Password/index.scss b/src/client/components/field-types/Password/index.scss similarity index 100% rename from src/components/field-types/Password/index.scss rename to src/client/components/field-types/Password/index.scss diff --git a/src/components/field-types/Repeater/index.js b/src/client/components/field-types/Repeater/index.js similarity index 100% rename from src/components/field-types/Repeater/index.js rename to src/client/components/field-types/Repeater/index.js diff --git a/src/components/field-types/Textarea/index.js b/src/client/components/field-types/Textarea/index.js similarity index 100% rename from src/components/field-types/Textarea/index.js rename to src/client/components/field-types/Textarea/index.js diff --git a/src/components/field-types/Textarea/index.scss b/src/client/components/field-types/Textarea/index.scss similarity index 100% rename from src/components/field-types/Textarea/index.scss rename to src/client/components/field-types/Textarea/index.scss diff --git a/src/components/field-types/fieldType/index.js b/src/client/components/field-types/fieldType/index.js similarity index 100% rename from src/components/field-types/fieldType/index.js rename to src/client/components/field-types/fieldType/index.js diff --git a/src/components/field-types/fieldType/index.scss b/src/client/components/field-types/fieldType/index.scss similarity index 100% rename from src/components/field-types/fieldType/index.scss rename to src/client/components/field-types/fieldType/index.scss diff --git a/src/components/forms/Form/index.js b/src/client/components/forms/Form/index.js similarity index 100% rename from src/components/forms/Form/index.js rename to src/client/components/forms/Form/index.js diff --git a/src/components/forms/Form/index.scss b/src/client/components/forms/Form/index.scss similarity index 100% rename from src/components/forms/Form/index.scss rename to src/client/components/forms/Form/index.scss diff --git a/src/components/forms/Submit/index.js b/src/client/components/forms/Submit/index.js similarity index 100% rename from src/components/forms/Submit/index.js rename to src/client/components/forms/Submit/index.js diff --git a/src/components/forms/Submit/index.scss b/src/client/components/forms/Submit/index.scss similarity index 100% rename from src/components/forms/Submit/index.scss rename to src/client/components/forms/Submit/index.scss diff --git a/src/components/graphics/Arrow/index.js b/src/client/components/graphics/Arrow/index.js similarity index 100% rename from src/components/graphics/Arrow/index.js rename to src/client/components/graphics/Arrow/index.js diff --git a/src/components/graphics/Close/index.js b/src/client/components/graphics/Close/index.js similarity index 100% rename from src/components/graphics/Close/index.js rename to src/client/components/graphics/Close/index.js diff --git a/demo/client/components/graphics/Icon/index.js b/src/client/components/graphics/Icon/index.js similarity index 79% rename from demo/client/components/graphics/Icon/index.js rename to src/client/components/graphics/Icon/index.js index 59664847c..c01a16b6a 100644 --- a/demo/client/components/graphics/Icon/index.js +++ b/src/client/components/graphics/Icon/index.js @@ -2,10 +2,12 @@ import React from 'react'; import { PayloadIcon } from 'payload/components'; -export default () => { +const Icon = () => { return (
); }; + +export default Icon; diff --git a/demo/client/components/graphics/Logo/index.js b/src/client/components/graphics/Logo/index.js similarity index 79% rename from demo/client/components/graphics/Logo/index.js rename to src/client/components/graphics/Logo/index.js index b8edce078..f68e0ceed 100644 --- a/demo/client/components/graphics/Logo/index.js +++ b/src/client/components/graphics/Logo/index.js @@ -2,10 +2,12 @@ import React from 'react'; import { PayloadLogo } from 'payload/components'; -export default () => { +const Logo = () => { return (
); }; + +export default Logo; diff --git a/src/components/graphics/PayloadIcon/icon.svg b/src/client/components/graphics/PayloadIcon/icon.svg similarity index 100% rename from src/components/graphics/PayloadIcon/icon.svg rename to src/client/components/graphics/PayloadIcon/icon.svg diff --git a/src/components/graphics/PayloadIcon/index.js b/src/client/components/graphics/PayloadIcon/index.js similarity index 100% rename from src/components/graphics/PayloadIcon/index.js rename to src/client/components/graphics/PayloadIcon/index.js diff --git a/src/components/graphics/PayloadIcon/index.scss b/src/client/components/graphics/PayloadIcon/index.scss similarity index 100% rename from src/components/graphics/PayloadIcon/index.scss rename to src/client/components/graphics/PayloadIcon/index.scss diff --git a/src/components/graphics/PayloadLogo/index.js b/src/client/components/graphics/PayloadLogo/index.js similarity index 100% rename from src/components/graphics/PayloadLogo/index.js rename to src/client/components/graphics/PayloadLogo/index.js diff --git a/src/components/graphics/PayloadLogo/index.scss b/src/client/components/graphics/PayloadLogo/index.scss similarity index 100% rename from src/components/graphics/PayloadLogo/index.scss rename to src/client/components/graphics/PayloadLogo/index.scss diff --git a/src/client/components/index.js b/src/client/components/index.js new file mode 100644 index 000000000..64a98ca34 --- /dev/null +++ b/src/client/components/index.js @@ -0,0 +1,28 @@ +import React from 'react'; +import { render } from 'react-dom'; +import { BrowserRouter as Router } from 'react-router-dom'; +import { Provider } from 'react-redux'; +import Routes from './routes'; +import store from '../store'; +import LoadConfig from './utilities/LoadConfig'; +import MeasureWindow from './utilities/MeasureWindow'; +import MeasureScroll from './utilities/MeasureScroll'; +import SetLocale from './utilities/SetLocale'; +import SetSearchParams from './utilities/SetSearchParams'; + +const Index = () => { + return ( + + + + + + + + + + + ); +}; + +render(, document.getElementById('app')); diff --git a/src/components/layout/ContentBlock/index.js b/src/client/components/layout/ContentBlock/index.js similarity index 100% rename from src/components/layout/ContentBlock/index.js rename to src/client/components/layout/ContentBlock/index.js diff --git a/src/components/layout/ContentBlock/index.scss b/src/client/components/layout/ContentBlock/index.scss similarity index 100% rename from src/components/layout/ContentBlock/index.scss rename to src/client/components/layout/ContentBlock/index.scss diff --git a/src/components/layout/DefaultTemplate/index.js b/src/client/components/layout/DefaultTemplate/index.js similarity index 100% rename from src/components/layout/DefaultTemplate/index.js rename to src/client/components/layout/DefaultTemplate/index.js diff --git a/src/components/layout/DefaultTemplate/index.scss b/src/client/components/layout/DefaultTemplate/index.scss similarity index 100% rename from src/components/layout/DefaultTemplate/index.scss rename to src/client/components/layout/DefaultTemplate/index.scss diff --git a/src/components/layout/Section/index.js b/src/client/components/layout/Section/index.js similarity index 100% rename from src/components/layout/Section/index.js rename to src/client/components/layout/Section/index.js diff --git a/src/components/layout/Section/index.scss b/src/client/components/layout/Section/index.scss similarity index 100% rename from src/components/layout/Section/index.scss rename to src/client/components/layout/Section/index.scss diff --git a/src/components/layout/Sidebar/index.js b/src/client/components/layout/Sidebar/index.js similarity index 100% rename from src/components/layout/Sidebar/index.js rename to src/client/components/layout/Sidebar/index.js diff --git a/src/components/layout/Sidebar/index.scss b/src/client/components/layout/Sidebar/index.scss similarity index 100% rename from src/components/layout/Sidebar/index.scss rename to src/client/components/layout/Sidebar/index.scss diff --git a/src/components/layout/Sticky/index.js b/src/client/components/layout/Sticky/index.js similarity index 100% rename from src/components/layout/Sticky/index.js rename to src/client/components/layout/Sticky/index.js diff --git a/src/components/layout/Sticky/index.scss b/src/client/components/layout/Sticky/index.scss similarity index 100% rename from src/components/layout/Sticky/index.scss rename to src/client/components/layout/Sticky/index.scss diff --git a/src/components/layout/Table/index.js b/src/client/components/layout/Table/index.js similarity index 100% rename from src/components/layout/Table/index.js rename to src/client/components/layout/Table/index.js diff --git a/src/components/layout/Table/index.scss b/src/client/components/layout/Table/index.scss similarity index 100% rename from src/components/layout/Table/index.scss rename to src/client/components/layout/Table/index.scss diff --git a/src/components/modals/asModal/index.js b/src/client/components/modals/asModal/index.js similarity index 100% rename from src/components/modals/asModal/index.js rename to src/client/components/modals/asModal/index.js diff --git a/src/components/modals/asModal/index.scss b/src/client/components/modals/asModal/index.scss similarity index 100% rename from src/components/modals/asModal/index.scss rename to src/client/components/modals/asModal/index.scss diff --git a/src/components/modules/APIUrl/index.js b/src/client/components/modules/APIUrl/index.js similarity index 100% rename from src/components/modules/APIUrl/index.js rename to src/client/components/modules/APIUrl/index.js diff --git a/src/components/modules/APIUrl/index.scss b/src/client/components/modules/APIUrl/index.scss similarity index 100% rename from src/components/modules/APIUrl/index.scss rename to src/client/components/modules/APIUrl/index.scss diff --git a/src/components/modules/Filter/index.js b/src/client/components/modules/Filter/index.js similarity index 100% rename from src/components/modules/Filter/index.js rename to src/client/components/modules/Filter/index.js diff --git a/src/components/modules/HeadingButton/index.js b/src/client/components/modules/HeadingButton/index.js similarity index 100% rename from src/components/modules/HeadingButton/index.js rename to src/client/components/modules/HeadingButton/index.js diff --git a/src/components/modules/HeadingButton/index.scss b/src/client/components/modules/HeadingButton/index.scss similarity index 100% rename from src/components/modules/HeadingButton/index.scss rename to src/client/components/modules/HeadingButton/index.scss diff --git a/src/components/modules/Localizer/index.js b/src/client/components/modules/Localizer/index.js similarity index 100% rename from src/components/modules/Localizer/index.js rename to src/client/components/modules/Localizer/index.js diff --git a/src/components/modules/Localizer/index.scss b/src/client/components/modules/Localizer/index.scss similarity index 100% rename from src/components/modules/Localizer/index.scss rename to src/client/components/modules/Localizer/index.scss diff --git a/src/components/modules/SearchableTable/index.js b/src/client/components/modules/SearchableTable/index.js similarity index 100% rename from src/components/modules/SearchableTable/index.js rename to src/client/components/modules/SearchableTable/index.js diff --git a/src/components/modules/Status/index.js b/src/client/components/modules/Status/index.js similarity index 100% rename from src/components/modules/Status/index.js rename to src/client/components/modules/Status/index.js diff --git a/src/components/modules/Status/index.scss b/src/client/components/modules/Status/index.scss similarity index 100% rename from src/components/modules/Status/index.scss rename to src/client/components/modules/Status/index.scss diff --git a/src/components/modules/StepNav/index.js b/src/client/components/modules/StepNav/index.js similarity index 100% rename from src/components/modules/StepNav/index.js rename to src/client/components/modules/StepNav/index.js diff --git a/src/components/modules/StepNav/index.scss b/src/client/components/modules/StepNav/index.scss similarity index 100% rename from src/components/modules/StepNav/index.scss rename to src/client/components/modules/StepNav/index.scss diff --git a/src/components/modules/StickyHeader/index.js b/src/client/components/modules/StickyHeader/index.js similarity index 100% rename from src/components/modules/StickyHeader/index.js rename to src/client/components/modules/StickyHeader/index.js diff --git a/src/components/modules/StickyHeader/index.scss b/src/client/components/modules/StickyHeader/index.scss similarity index 100% rename from src/components/modules/StickyHeader/index.scss rename to src/client/components/modules/StickyHeader/index.scss diff --git a/src/components/modules/Tooltip/index.js b/src/client/components/modules/Tooltip/index.js similarity index 100% rename from src/components/modules/Tooltip/index.js rename to src/client/components/modules/Tooltip/index.js diff --git a/src/components/modules/Tooltip/index.scss b/src/client/components/modules/Tooltip/index.scss similarity index 100% rename from src/components/modules/Tooltip/index.scss rename to src/client/components/modules/Tooltip/index.scss diff --git a/src/components/modules/UploadMedia/index.js b/src/client/components/modules/UploadMedia/index.js similarity index 100% rename from src/components/modules/UploadMedia/index.js rename to src/client/components/modules/UploadMedia/index.js diff --git a/src/components/modules/UploadMedia/index.scss b/src/client/components/modules/UploadMedia/index.scss similarity index 100% rename from src/components/modules/UploadMedia/index.scss rename to src/client/components/modules/UploadMedia/index.scss diff --git a/src/components/routes/Collections.js b/src/client/components/routes/Collections.js similarity index 100% rename from src/components/routes/Collections.js rename to src/client/components/routes/Collections.js diff --git a/demo/client/components/Routes.js b/src/client/components/routes/index.js similarity index 78% rename from demo/client/components/Routes.js rename to src/client/components/routes/index.js index 8f4bb3a22..899d9f553 100644 --- a/demo/client/components/Routes.js +++ b/src/client/components/routes/index.js @@ -7,22 +7,20 @@ import { Dashboard, Login, CreateUser, - MediaLibrary + MediaLibrary, } from 'payload/components'; -import Logo from '../components/graphics/Logo'; -import Icon from '../components/graphics/Icon'; const cookies = new Cookies(); const Routes = props => { return ( - } /> + } /> { return

Forgot Password

; }} /> { if (cookies.get('token')) { return ( - + diff --git a/src/client/components/utilities/LoadConfig/index.js b/src/client/components/utilities/LoadConfig/index.js new file mode 100644 index 000000000..d9b48e68b --- /dev/null +++ b/src/client/components/utilities/LoadConfig/index.js @@ -0,0 +1,20 @@ +import { Component } from 'react'; +import { connect } from 'react-redux'; + +import config from '~local/payload.config.js'; + +const mapDispatch = dispatch => ({ + loadConfig: payload => dispatch({ type: 'LOAD_CONFIG', payload }) +}) + +class LoadConfig extends Component { + componentDidMount() { + this.props.loadConfig(config); + } + + render() { + return null; + } +} + +export default connect(null, mapDispatch)(LoadConfig); diff --git a/src/components/utilities/MeasureScroll/index.js b/src/client/components/utilities/MeasureScroll/index.js similarity index 100% rename from src/components/utilities/MeasureScroll/index.js rename to src/client/components/utilities/MeasureScroll/index.js diff --git a/src/components/utilities/MeasureWindow/index.js b/src/client/components/utilities/MeasureWindow/index.js similarity index 100% rename from src/components/utilities/MeasureWindow/index.js rename to src/client/components/utilities/MeasureWindow/index.js diff --git a/src/components/utilities/SetLocale/index.js b/src/client/components/utilities/SetLocale/index.js similarity index 100% rename from src/components/utilities/SetLocale/index.js rename to src/client/components/utilities/SetLocale/index.js diff --git a/src/components/utilities/SetSearchParams/index.js b/src/client/components/utilities/SetSearchParams/index.js similarity index 100% rename from src/components/utilities/SetSearchParams/index.js rename to src/client/components/utilities/SetSearchParams/index.js diff --git a/src/components/utilities/SetStepNav/index.js b/src/client/components/utilities/SetStepNav/index.js similarity index 100% rename from src/components/utilities/SetStepNav/index.js rename to src/client/components/utilities/SetStepNav/index.js diff --git a/src/components/views/CreateUser/index.js b/src/client/components/views/CreateUser/index.js similarity index 100% rename from src/components/views/CreateUser/index.js rename to src/client/components/views/CreateUser/index.js diff --git a/src/components/views/CreateUser/index.scss b/src/client/components/views/CreateUser/index.scss similarity index 100% rename from src/components/views/CreateUser/index.scss rename to src/client/components/views/CreateUser/index.scss diff --git a/src/components/views/Dashboard/index.js b/src/client/components/views/Dashboard/index.js similarity index 100% rename from src/components/views/Dashboard/index.js rename to src/client/components/views/Dashboard/index.js diff --git a/src/components/views/Dashboard/index.scss b/src/client/components/views/Dashboard/index.scss similarity index 100% rename from src/components/views/Dashboard/index.scss rename to src/client/components/views/Dashboard/index.scss diff --git a/src/components/views/Login/index.js b/src/client/components/views/Login/index.js similarity index 100% rename from src/components/views/Login/index.js rename to src/client/components/views/Login/index.js diff --git a/src/components/views/Login/index.scss b/src/client/components/views/Login/index.scss similarity index 100% rename from src/components/views/Login/index.scss rename to src/client/components/views/Login/index.scss diff --git a/src/components/views/MediaLibrary/index.js b/src/client/components/views/MediaLibrary/index.js similarity index 100% rename from src/components/views/MediaLibrary/index.js rename to src/client/components/views/MediaLibrary/index.js diff --git a/src/components/views/collections/Edit/index.js b/src/client/components/views/collections/Edit/index.js similarity index 100% rename from src/components/views/collections/Edit/index.js rename to src/client/components/views/collections/Edit/index.js diff --git a/src/components/views/collections/Edit/index.scss b/src/client/components/views/collections/Edit/index.scss similarity index 100% rename from src/components/views/collections/Edit/index.scss rename to src/client/components/views/collections/Edit/index.scss diff --git a/src/components/views/collections/List/index.js b/src/client/components/views/collections/List/index.js similarity index 100% rename from src/components/views/collections/List/index.js rename to src/client/components/views/collections/List/index.js diff --git a/src/components/views/collections/List/index.scss b/src/client/components/views/collections/List/index.scss similarity index 100% rename from src/components/views/collections/List/index.scss rename to src/client/components/views/collections/List/index.scss diff --git a/config/webpack.dev.config.js b/src/client/config/webpack.dev.config.js similarity index 90% rename from config/webpack.dev.config.js rename to src/client/config/webpack.dev.config.js index 224ce8139..f98643e4c 100644 --- a/config/webpack.dev.config.js +++ b/src/client/config/webpack.dev.config.js @@ -37,7 +37,7 @@ const getStyleLoaders = (cssOptions, preProcessor) => { }; module.exports = { - entry: './demo/client/index.js', + entry: '../components/index.js', devtool: 'source-map', module: { rules: [ @@ -57,7 +57,7 @@ module.exports = { // smaller than specified limit in bytes as data URLs to avoid requests. // A missing `test` is equivalent to a match. { - test: [ /\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/ ], + test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/], loader: require.resolve('url-loader'), options: { limit: 10000, @@ -81,7 +81,7 @@ module.exports = { // its runtime that would otherwise processed through "file" loader. // Also exclude `html` and `json` extensions so they get processed // by webpacks internal loaders. - exclude: [ /\.(js|jsx|mjs)$/, /\.html$/, /\.json$/ ], + exclude: [/\.(js|jsx|mjs)$/, /\.html$/, /\.json$/], loader: require.resolve('file-loader'), options: { name: 'static/media/[name].[hash:8].[ext]', @@ -93,14 +93,14 @@ module.exports = { }, plugins: [ new HtmlWebpackPlugin({ - template: './demo/client/index.html', - filename: './index.html' + template: '../../../demo/client/index.html', + filename: '../index.html' }) ], resolve: { alias: { - payload: path.resolve(__dirname, '../src/'), - local: path.resolve(__dirname, '../demo/') + payload: path.resolve(__dirname, '../../../'), + local: path.resolve(__dirname, '../../../demo/') } } }; diff --git a/demo/client/index.html b/src/client/index.html similarity index 100% rename from demo/client/index.html rename to src/client/index.html diff --git a/src/reducers/common.js b/src/client/reducers/common.js similarity index 91% rename from src/reducers/common.js rename to src/client/reducers/common.js index e9ea1a69a..31f286db7 100644 --- a/src/reducers/common.js +++ b/src/client/reducers/common.js @@ -7,7 +7,6 @@ const defaultState = { stepNav: [], locale: null, config: null, - collections: null, searchParams: {}, status: [] }; @@ -45,12 +44,11 @@ export default (state = defaultState, action) => { stepNav: action.payload }; - case 'LOAD_GLOBALS': + case 'LOAD_CONFIG': return { ...state, - config: action.payload.config, - collections: action.payload.collections + config: action.payload }; case 'SET_LOCALE': diff --git a/src/scss/app.scss b/src/client/scss/app.scss similarity index 100% rename from src/scss/app.scss rename to src/client/scss/app.scss diff --git a/src/scss/breakpoints.scss b/src/client/scss/breakpoints.scss similarity index 100% rename from src/scss/breakpoints.scss rename to src/client/scss/breakpoints.scss diff --git a/src/scss/fonts.scss b/src/client/scss/fonts.scss similarity index 100% rename from src/scss/fonts.scss rename to src/client/scss/fonts.scss diff --git a/src/scss/form.scss b/src/client/scss/form.scss similarity index 100% rename from src/scss/form.scss rename to src/client/scss/form.scss diff --git a/src/scss/grid.scss b/src/client/scss/grid.scss similarity index 100% rename from src/scss/grid.scss rename to src/client/scss/grid.scss diff --git a/src/scss/queries.scss b/src/client/scss/queries.scss similarity index 100% rename from src/scss/queries.scss rename to src/client/scss/queries.scss diff --git a/src/scss/resets.scss b/src/client/scss/resets.scss similarity index 100% rename from src/scss/resets.scss rename to src/client/scss/resets.scss diff --git a/src/scss/structure.scss b/src/client/scss/structure.scss similarity index 100% rename from src/scss/structure.scss rename to src/client/scss/structure.scss diff --git a/src/scss/styles.scss b/src/client/scss/styles.scss similarity index 100% rename from src/scss/styles.scss rename to src/client/scss/styles.scss diff --git a/src/scss/type.scss b/src/client/scss/type.scss similarity index 100% rename from src/scss/type.scss rename to src/client/scss/type.scss diff --git a/src/scss/vars.scss b/src/client/scss/vars.scss similarity index 100% rename from src/scss/vars.scss rename to src/client/scss/vars.scss diff --git a/src/scss/z-index.scss b/src/client/scss/z-index.scss similarity index 100% rename from src/scss/z-index.scss rename to src/client/scss/z-index.scss diff --git a/demo/client/store.js b/src/client/store.js similarity index 100% rename from demo/client/store.js rename to src/client/store.js diff --git a/src/components.js b/src/components.js deleted file mode 100644 index 6962e7bb1..000000000 --- a/src/components.js +++ /dev/null @@ -1,72 +0,0 @@ -export { default as App } from './components/App'; - -// Controls -export { default as Button } from './components/controls/Button'; - -// Data -export { default as withListData } from './components/data/list'; -export { default as withEditData } from './components/data/edit'; - -// Field Types -export { default as fieldType } from './components/field-types/fieldType'; -export { default as Group } from './components/field-types/Group'; -export { default as Repeater } from './components/field-types/Repeater'; -export { default as Input } from './components/field-types/Input'; -export { default as Media } from './components/field-types/Media'; -export { default as Email } from './components/field-types/Email'; -export { default as Password } from './components/field-types/Password'; -export { default as Textarea } from './components/field-types/Textarea'; -export { default as HiddenInput } from './components/field-types/HiddenInput'; - -// Forms -export { default as Form, FormContext } from './components/forms/Form'; -export { default as FormSubmit } from './components/forms/Submit'; - -// Graphics -export { default as PayloadIcon } from './components/graphics/PayloadIcon'; -export { default as PayloadLogo } from './components/graphics/PayloadLogo'; -export { default as Arrow } from './components/graphics/Arrow'; -export { default as Close } from './components/graphics/Close'; - -// Layout -export { default as DefaultTemplate } from './components/layout/DefaultTemplate'; -export { default as Sticky } from './components/layout/Sticky'; -export { default as Sidebar } from './components/layout/Sidebar'; -export { default as ContentBlock } from './components/layout/ContentBlock'; -export { default as Table } from './components/layout/Table'; -export { default as Section } from './components/layout/Section'; - -// Modals -export { default as asModal } from './components/modals/asModal'; - -// Modules -export { default as Status } from './components/modules/Status'; -export { default as StickyHeader } from './components/modules/StickyHeader'; -export { default as HeadingButton } from './components/modules/HeadingButton'; -export { default as Filter } from './components/modules/Filter'; -export { default as APIUrl } from './components/modules/APIUrl'; -export { default as StepNav } from './components/modules/StepNav'; -export { default as Tooltip } from './components/modules/Tooltip'; -export { default as SearchableTable } from './components/modules/SearchableTable'; -export { default as Localizer } from './components/modules/Localizer'; -export { default as UploadMedia } from './components/modules/UploadMedia'; - - -// Routes -export { default as CollectionRoutes } from './components/routes/Collections'; - -// Utilities -export { default as MeasureWindow } from './components/utilities/MeasureWindow'; -export { default as MeasureScroll } from './components/utilities/MeasureScroll'; -export { default as SetStepNav } from './components/utilities/SetStepNav'; -export { default as LoadGlobals } from './components/utilities/LoadGlobals'; -export { default as SetLocale } from './components/utilities/SetLocale'; -export { default as SetSearchParams } from './components/utilities/SetSearchParams'; - -// Views -export { default as Dashboard } from './components/views/Dashboard'; -export { default as Login } from './components/views/Login'; -export { default as CreateUser } from './components/views/CreateUser'; -export { default as MediaLibrary } from './components/views/MediaLibrary'; -export { default as ListView } from './components/views/collections/List'; -export { default as EditView } from './components/views/collections/Edit'; diff --git a/src/components/App.js b/src/components/App.js deleted file mode 100644 index d0f987577..000000000 --- a/src/components/App.js +++ /dev/null @@ -1,43 +0,0 @@ -import React from 'react'; -import { Provider, connect } from 'react-redux'; -import { BrowserRouter as Router } from 'react-router-dom'; -import { LoadGlobals, MeasureWindow, MeasureScroll, SetLocale, SetSearchParams } from 'payload/components'; - -import '../scss/app.scss'; - -const App = props => { - return ( - - - - {props.children} - - - - - - - ); -} - -const mapState = state => ({ - config: state.common.config -}) - -const AppWithGlobals = connect(mapState)(props => { - if (props.config) { - return ( - - - - - {props.children} - - - ) - } - - return null; -}) - -export default App; diff --git a/src/components/utilities/LoadGlobals/index.js b/src/components/utilities/LoadGlobals/index.js deleted file mode 100644 index cfdd99855..000000000 --- a/src/components/utilities/LoadGlobals/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import { Component } from 'react'; -import { connect } from 'react-redux'; - -const mapDispatch = dispatch => ({ - loadGlobals: globals => dispatch({ type: 'LOAD_GLOBALS', payload: globals }) -}) - -class LoadGlobals extends Component { - componentDidMount() { - this.props.loadGlobals({ - config: this.props.config, - collections: this.props.collections - }); - } - - render() { - return null; - } -} - -export default connect(null, mapDispatch)(LoadGlobals); diff --git a/src/index.js b/src/index.js index 09ff8fcd8..cdaf5b4b0 100644 --- a/src/index.js +++ b/src/index.js @@ -69,7 +69,8 @@ class Payload { // TODO: Build safe config before initializing models and routes - options.models && options.models.forEach(config => { + options.config.models && Object.keys(options.config.models).forEach(key => { + const config = options.config.models[key]; validateConfig(config, this.models); // TODO: consider making schemaBaseFields a mongoose plugin for consistency const fields = { ...schemaBaseFields }; diff --git a/src/redux.js b/src/redux.js deleted file mode 100644 index 8d5a5aac2..000000000 --- a/src/redux.js +++ /dev/null @@ -1,5 +0,0 @@ -import common from './reducers/common'; - -export { - common -}; diff --git a/src/utils.js b/src/utils.js deleted file mode 100644 index 705a7aa7e..000000000 --- a/src/utils.js +++ /dev/null @@ -1,3 +0,0 @@ -export { default as toKebabCase } from './helpers/toKebabCase'; -export { default as getPropSubset } from './helpers/getPropSubset'; -export { convertArrayToHash, convertArrayToObject, convertObjectToArray } from './helpers/convertData';