Skip to content

Commit 0d74350

Browse files
Merge pull request #3 from MadinventorZero/sandbox
Sandbox Render MVP Updates
2 parents 5a37351 + 8528499 commit 0d74350

File tree

4 files changed

+77
-43
lines changed

4 files changed

+77
-43
lines changed

app/src/components/main/DemoRender.tsx

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,52 @@
22
import React, {
33
useState, useCallback, useContext, useEffect,
44
} from 'react';
5+
import Button from '@material-ui/core/Button';
6+
import Box from '@material-ui/core/Box';
7+
import './renderDemo.css';
8+
import StateContext from '../../context/context';
9+
510

611
const DemoRender = (props): JSX.Element => {
712
const [components, setComponents] = useState([]);
13+
const [state, dispatch] = useContext(StateContext);
814
const demoContainerStyle = {
915
width: '100%',
1016
backgroundColor: 'lightgrey',
1117
border: '2px Solid grey',
1218
};
1319

20+
const componentBuilder = (array, key = 0) => {
21+
const componentsToRender = [];
22+
for (const element of array) {
23+
if (element.name !== 'separator') {
24+
console.log('detail from children array', element);
25+
const elementType = element.name;
26+
const childId = element.childId;
27+
const elementStyle = element.style;
28+
const innerText = element.attributes.compText;
29+
const classRender = element.attributes.cssClasses;
30+
let renderedChildren;
31+
if (element.children.length > 0) {
32+
renderedChildren = componentBuilder(element.children);
33+
}
34+
componentsToRender.push(<Box component={elementType} className={classRender} style={elementStyle} key={key} id={childId}>{innerText}{renderedChildren}</Box>);
35+
key += 1;
36+
}
37+
}
38+
return componentsToRender;
39+
};
40+
1441
useEffect(() => {
15-
console.log('props', props.demo);
16-
setComponents(props.demo);
17-
}, [props.demo]);
42+
const childrenArray = state.components[0].children;
43+
console.log('Refrenced Children in State!!!', childrenArray);
44+
const renderedComponents = componentBuilder(childrenArray);
45+
setComponents(renderedComponents);
46+
}, [state.components]);
47+
1848
return (
1949
<div id={'renderFocus'} style={demoContainerStyle}>
20-
{console.log('Props Boxes has reached DemoContainer', props.demo)}
21-
{components.map((component, index) => {
22-
console.log('Found a component', component);
23-
return component;
24-
})}
50+
{components.map((component, index) => component)}
2551
</div>
2652
);
2753
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.text-color {
2+
color: #cc0707;
3+
}
4+
.btn {
5+
height: 20px;
6+
width: 100px;
7+
background-color: #cc0707;
8+
}

app/src/containers/MainContainer.tsx

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,19 @@
11
import React, { useState, useContext, useEffect } from 'react';
2-
import Button from '@material-ui/core/Button';
3-
import Box from '@material-ui/core/Box';
42
import BottomPanel from '../components/bottom/BottomPanel';
53
import CanvasContainer from '../components/main/CanvasContainer';
64
import { styleContext } from './AppContainer';
7-
import StateContext from '../context/context';
85
import DemoRender from '../components/main/DemoRender';
96

107
const MainContainer = () => {
118
const { style } = useContext(styleContext);
12-
// Caret Start
13-
const [state, dispatch] = useContext(StateContext);
14-
const componentsToRender = [];
15-
useEffect(() => {
16-
const childrenArray = state.components[0].children;
17-
console.log('Refrenced Children in State!!!', childrenArray);
18-
const codePreviewView = state.components[0].code;
19-
console.log('This is the framework for CodePreview', codePreviewView);
20-
let key = 0;
21-
for (const element of childrenArray) {
22-
if (element.name !== 'separator') {
23-
console.log('detail from children array', element);
24-
const elementType = element.name;
25-
const childId = element.childId;
26-
const elementStyle = element.style;
27-
const innerText = element.attributes.compText;
28-
if (elementType !== 'button') {
29-
componentsToRender.push(<Box component={elementType} key={key} id={childId}>{innerText}</Box>);
30-
} else componentsToRender.push(<Button key={key} id={childId} color={'primary'}>{innerText}</Button>);
31-
key += 1;
32-
}
33-
}
34-
}, [state.components]);
35-
// Caret End
9+
3610

3711
return (
3812
<div className="main-container" style={style} >
3913
<div className="main">
4014
<CanvasContainer />
4115
{/* Caret Component Render */}
42-
{console.log('Completed Components to Render', componentsToRender)}
43-
<DemoRender demo={componentsToRender}/>
16+
<DemoRender />
4417
</div>
4518
<BottomPanel />
4619
</div>

app/src/containers/RightContainer.tsx

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ const RightContainer = ({ isThemeLight }): JSX.Element => {
3535
const [flexJustify, setFlexJustify] = useState('');
3636
const [flexAlign, setFlexAlign] = useState('');
3737
const [BGColor, setBGColor] = useState('');
38-
// Caret
38+
// Caret Start
3939
const [compText, setCompText] = useState('');
40+
const [cssClasses, setCssClasses] = useState('');
41+
// Caret End
4042
const [compWidth, setCompWidth] = useState('');
4143
const [compHeight, setCompHeight] = useState('');
4244
const [deleteLinkedPageError, setDeleteLinkedPageError] = useState(false);
@@ -53,9 +55,10 @@ const RightContainer = ({ isThemeLight }): JSX.Element => {
5355
if (configTarget.child && element.childId === configTarget.child.id) {
5456
attributes = element.attributes;
5557
setCompText(attributes.text ? attributes.text : '');
58+
setCssClasses(attributes.cssClasses ? attributes.cssClasses : '');
5659
}
5760
}
58-
console.log('Attributes: ', configTarget.child);
61+
console.log('Canvas Element Detail: ', configTarget.child);
5962
// Caret End
6063
const style = configTarget.child
6164
? configTarget.child.style
@@ -101,12 +104,16 @@ const RightContainer = ({ isThemeLight }): JSX.Element => {
101104
case 'bgcolor':
102105
setBGColor(inputVal);
103106
break;
104-
// Caret
107+
// Caret Start
105108
case 'compText':
106109
setCompText(inputVal);
107110
break;
111+
case 'cssClasses':
112+
setCssClasses(inputVal);
113+
break;
108114
default:
109115
break;
116+
// Caret End
110117
}
111118
};
112119

@@ -208,6 +215,7 @@ const RightContainer = ({ isThemeLight }): JSX.Element => {
208215
// Caret
209216
const attributesObj: any = {};
210217
if (compText !== '') attributesObj.compText = compText;
218+
if (cssClasses !== '') attributesObj.cssClasses = cssClasses;
211219

212220
dispatch({
213221
type: 'UPDATE CSS',
@@ -321,9 +329,10 @@ const RightContainer = ({ isThemeLight }): JSX.Element => {
321329
(e.key === 'z' && e.metaKey && !e.shiftKey || e.key === 'z' && e.ctrlKey && !e.shiftKey) ? handleUndo()
322330
// Redo
323331
: (e.shiftKey && e.metaKey && e.key === 'z' || e.shiftKey && e.ctrlKey && e.key === 'z') ? handleRedo()
324-
// Delete HTML tag off canvas
325-
: (e.key === 'Backspace') ? handleDelete()
326-
// Save
332+
// Delete HTML tag off canvas
333+
// Caret
334+
: (e.key === 'Backspace' && e.ctrlKey) ? handleDelete()
335+
// Save
327336
: (e.key === 's' && e.ctrlKey && e.shiftKey || e.key === 's' && e.metaKey && e.shiftKey) ? handleSave() : '';
328337
}, []);
329338

@@ -463,6 +472,24 @@ const RightContainer = ({ isThemeLight }): JSX.Element => {
463472
</FormControl>
464473
</div>
465474
</div>
475+
<div className={classes.configRow}>
476+
<div className={isThemeLight ? `${classes.configType} ${classes.lightThemeFontColor}` : `${classes.configType} ${classes.darkThemeFontColor}`}>
477+
<h3>Css Classes:</h3>
478+
</div>
479+
<div className={classes.configValue}>
480+
<FormControl variant="filled" className={classes.formControl}>
481+
<TextField
482+
variant="filled"
483+
name="cssClasses"
484+
className={classes.select}
485+
inputProps={{ className: isThemeLight ? `${classes.selectInput} ${classes.lightThemeFontColor}` : `${classes.selectInput} ${classes.darkThemeFontColor}` }}
486+
value={cssClasses}
487+
onChange={handleChange}
488+
placeholder="Text"
489+
/>
490+
</FormControl>
491+
</div>
492+
</div>
466493
{/* Caret End */}
467494
<div className={classes.buttonRow}>
468495
<Button

0 commit comments

Comments
 (0)