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';