refact: moved to premade ui library

This commit is contained in:
ysandler 2020-07-14 00:48:06 -05:00 committed by Joshua Shoemaker
parent 4c30dd3f72
commit 62502b3b46
16 changed files with 2166 additions and 114 deletions

125
package-lock.json generated
View File

@ -1356,11 +1356,39 @@
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
"integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="
},
"@semantic-ui-react/event-stack": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.1.tgz",
"integrity": "sha512-SA7VOu/tY3OkooR++mm9voeQrJpYXjJaMHO1aFCcSouS2xhqMR9Gnz0LEGLOR0h9ueWPBKaQzKIrx3FTTJZmUQ==",
"requires": {
"exenv": "^1.2.2",
"prop-types": "^15.6.2"
}
},
"@sheerun/mutationobserver-shim": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz",
"integrity": "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw=="
},
"@stardust-ui/react-component-event-listener": {
"version": "0.38.0",
"resolved": "https://registry.npmjs.org/@stardust-ui/react-component-event-listener/-/react-component-event-listener-0.38.0.tgz",
"integrity": "sha512-sIP/e0dyOrrlb8K7KWumfMxj/gAifswTBC4o68Aa+C/GA73ccRp/6W1VlHvF/dlOR4KLsA+5SKnhjH36xzPsWg==",
"requires": {
"@babel/runtime": "^7.1.2",
"prop-types": "^15.7.2"
}
},
"@stardust-ui/react-component-ref": {
"version": "0.38.0",
"resolved": "https://registry.npmjs.org/@stardust-ui/react-component-ref/-/react-component-ref-0.38.0.tgz",
"integrity": "sha512-xjs6WnvJVueSIXMWw0C3oWIgAPpcD03qw43oGOjUXqFktvpNkB73JoKIhS4sCrtQxBdct75qqr4ZL6JiyPcESw==",
"requires": {
"@babel/runtime": "^7.1.2",
"prop-types": "^15.7.2",
"react-is": "^16.6.3"
}
},
"@svgr/babel-plugin-add-jsx-attribute": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz",
@ -3451,6 +3479,11 @@
}
}
},
"classnames": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
"integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
},
"clean-css": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
@ -3863,6 +3896,15 @@
"sha.js": "^2.4.8"
}
},
"create-react-context": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.3.0.tgz",
"integrity": "sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==",
"requires": {
"gud": "^1.0.0",
"warning": "^4.0.3"
}
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
@ -5354,6 +5396,11 @@
"strip-eof": "^1.0.0"
}
},
"exenv": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
"integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50="
},
"exit": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
@ -6126,6 +6173,11 @@
"resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
"integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
},
"gud": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz",
"integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw=="
},
"gzip-size": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz",
@ -7564,6 +7616,11 @@
}
}
},
"jquery": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
"integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg=="
},
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@ -7707,6 +7764,11 @@
"object.assign": "^4.1.0"
}
},
"keyboard-key": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz",
"integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ=="
},
"killable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
@ -9131,6 +9193,11 @@
"ts-pnp": "^1.1.6"
}
},
"popper.js": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
"integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
},
"portfinder": {
"version": "1.0.26",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz",
@ -10571,6 +10638,20 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"react-popper": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.7.tgz",
"integrity": "sha512-nmqYTx7QVjCm3WUZLeuOomna138R1luC4EqkW3hxJUrAe+3eNz3oFCLYdnPwILfn0mX1Ew2c3wctrjlUMYYUww==",
"requires": {
"@babel/runtime": "^7.1.2",
"create-react-context": "^0.3.0",
"deep-equal": "^1.1.1",
"popper.js": "^1.14.4",
"prop-types": "^15.6.1",
"typed-styles": "^0.0.7",
"warning": "^4.0.2"
}
},
"react-scripts": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.1.tgz",
@ -11217,6 +11298,32 @@
"node-forge": "0.9.0"
}
},
"semantic-ui-css": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/semantic-ui-css/-/semantic-ui-css-2.4.1.tgz",
"integrity": "sha512-Pkp0p9oWOxlH0kODx7qFpIRYpK1T4WJOO4lNnpNPOoWKCrYsfHqYSKgk5fHfQtnWnsAKy7nLJMW02bgDWWFZFg==",
"requires": {
"jquery": "x.*"
}
},
"semantic-ui-react": {
"version": "0.88.2",
"resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-0.88.2.tgz",
"integrity": "sha512-+02kN2z8PuA/cMdvDUsHhbJmBzxxgOXVHMFr9XK7zGb0wkW9A6OPQMFokWz7ozlVtKjN6r7zsb+Qvjk/qq1OWw==",
"requires": {
"@babel/runtime": "^7.1.2",
"@semantic-ui-react/event-stack": "^3.1.0",
"@stardust-ui/react-component-event-listener": "~0.38.0",
"@stardust-ui/react-component-ref": "~0.38.0",
"classnames": "^2.2.6",
"keyboard-key": "^1.0.4",
"lodash": "^4.17.15",
"prop-types": "^15.7.2",
"react-is": "^16.8.6",
"react-popper": "^1.3.4",
"shallowequal": "^1.1.0"
}
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@ -11406,6 +11513,11 @@
}
}
},
"shallowequal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
"integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
},
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@ -12503,6 +12615,11 @@
"mime-types": "~2.1.24"
}
},
"typed-styles": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz",
"integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q=="
},
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@ -12794,6 +12911,14 @@
"makeerror": "1.0.x"
}
},
"warning": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"requires": {
"loose-envify": "^1.0.0"
}
},
"watchpack": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz",

View File

@ -9,7 +9,9 @@
"dmein": "^0.1.4",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-scripts": "3.4.1"
"react-scripts": "3.4.1",
"semantic-ui-css": "^2.4.1",
"semantic-ui-react": "^0.88.2"
},
"scripts": {
"start": "react-scripts start",

14
src/Collections/Tables.js Normal file
View File

@ -0,0 +1,14 @@
import { Table } from 'dmein'
let instance = null
class Tables {
constructor () {
if (!instance) instance = this
console.log(d)
return instance
}
}
export default Tables

View File

@ -0,0 +1,11 @@
import Tables from '../Collections/Tables'
import FileAccess from '../Services/FileAccess'
class CreateTableController {
constructor(props) {
this.tables = new Tables()
this.fileAccess = new FileAccess()
}
}
export default CreateTableController

View File

@ -0,0 +1,26 @@
const valideTypes = [
'application/json'
]
class FileAccess {
constructor (props) {
this.reader = new FileReader()
if (this.props) {
if (props.file) this.setFile(props.file)
}
}
readFile = async () => {
if (!this.file) return
const data = await new Response(this.file).text()
return JSON.parse(data)
}
setFile = file => {
if (this.validateFileType(file)) this.file = file
}
validateFileType= file=> valideTypes.includes(file.type)
}
export default FileAccess

View File

@ -1,17 +0,0 @@
import React, { Component } from 'react'
import './App.css'
import Button from './Inputs/Button'
import TextField from './Inputs/TextField'
class App extends Component {
render = () => {
return (
<div>
<Button />
<TextField id='QWERTY' label='TestLabel' onBlur={() => console.log('Yo')} />
</div>
)
}
}
export default App

View File

@ -1,37 +0,0 @@
.Button {
background-color: rgb(65, 105, 225);
border: 0;
color: white;
font-size: 16px;
padding: 6px 16px;
text-transform: uppercase;
}
.Button:hover {
background-color: rgb(85, 127, 255);
}
.Button:active {
background-color: rgb(14, 62, 207);
}
.Button-outline {
background-color: rgba(0, 0, 0, 0);
border: 1px solid rgb(255, 255, 255);
}
.Button-outline:hover {
background-color: rgba(200, 200, 200, .4);
}
.Button-cancel {
background-color: rgb(214, 52, 52);
}
.Button-cancel:hover {
background-color: rgb(233, 72, 72);
}
.Button-cancel:active {
background-color: rgb(201, 17, 17);
}

View File

@ -1,25 +0,0 @@
import React, { Component } from 'react'
import './Button.css'
class Button extends Component {
getButtonClasses = () => {
const { style } = this.props
let additionalClass = ''
if (style === 'cancel') additionalClass = 'Button-cancel'
if (style === 'outline') additionalClass = 'Button-outline'
return `Button ${additionalClass}`
}
render = () => {
return (
<button className={this.getButtonClasses()} onClick={this.props.onClick}>
{ this.props.value || 'Submit' }
</button>
)
}
}
export default Button

View File

@ -1,15 +0,0 @@
.TextField input[type=text] {
background-color: rgba(255, 255, 255, 0.1);
border: 1px solid white;
border-radius: 0px;
color: white;
padding: 6px 10px;
}
.TextField input[type=text]:focus {
outline-style: none;
}
.TextField label {
margin-left: 4px;
}

View File

@ -1,17 +0,0 @@
import React, { Component } from 'react'
import './TextField.css'
class TextField extends Component {
render = () => {
const { id, label, onBlur, inlineLabel } = this.props
return (
<div className='TextField'>
{ label ? <label htmlFor={id}>{label}</label> : '' }
{!inlineLabel ? <br /> : ''}
<input type='text' id={this.props.id} onBlur={onBlur} />
</div>
)
}
}
export default TextField

View File

@ -1,6 +1,6 @@
import React from 'react'
import ReactDOM from 'react-dom'
import App from './components/App'
import App from './views/App'
import * as serviceWorker from './serviceWorker'
ReactDOM.render(

View File

@ -6,7 +6,7 @@ body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: white;
background-color: rgb(10, 10, 10);
background-color: rgb(39, 39, 39);
}
code {

16
src/views/App.js Normal file
View File

@ -0,0 +1,16 @@
import React, { Component } from 'react'
import './App.css'
import 'semantic-ui-css/semantic.min.css'
import CreateTableForm from './CreateTable/CreateTableForm'
class App extends Component {
render = () => {
return (
<div className='App'>
<CreateTableForm />
</div>
)
}
}
export default App

View File

@ -0,0 +1,12 @@
.CreateTableForm {
width: 380px;
padding: 40px;
border-radius: 6px;
border: solid rgb(240, 240, 240) 1px;
}
.creatTableFormSubmitButtons {
margin-top: 6px;
display: flex;
justify-content: space-around;
}

View File

@ -0,0 +1,55 @@
import React, { Component } from 'react'
import { Button, Input, Header } from 'semantic-ui-react'
import './CreateTableForm.css'
import FileAccess from '../../Services/FileAccess'
const fileAccess = new FileAccess()
class CreateTableForm extends Component {
constructor () {
super()
this.tableLabelInput = React.createRef()
this.tableFileInput = React.createRef()
}
handleSubmit = async e => {
e.preventDefault()
fileAccess.setFile(this.tableFileInput.current.inputRef.current.files[0])
const fileData = await fileAccess.readFile()
console.log(fileData)
}
render = () => {
return (
<div className='CreateTableForm'>
<Header as='h3'>Create Table From File</Header>
<form onSubmit={this.handleSubmit}>
<Input
placeholder='Table Label'
ref={this.tableLabelInput}
icon='tags'
style={{ width: '300px' }}
/>
<br />
<Input
type='file'
ref={this.tableFileInput}
icon='file'
style={{ width: '300px' }}
/>
<div className='creatTableFormSubmitButtons'>
<Button content='Confirm' primary />
<Button content='Confirm' secondary />
</div>
</form>
</div>
)
}
}
export default CreateTableForm

1902
testData/testJson.json Normal file

File diff suppressed because it is too large Load Diff