Skip to content

Commit c8d0213

Browse files
committed
Apply review comments
1 parent b9392e3 commit c8d0213

File tree

2 files changed

+36
-79
lines changed

2 files changed

+36
-79
lines changed

packages/example/src/App.css

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ body {
22
margin: 0;
33
padding: 0;
44
font-family: sans-serif;
5+
background: #f3f4fa;
56
}
67

78
.header {
@@ -35,7 +36,7 @@ body {
3536
margin: 0 10px 0 0;
3637
}
3738
.tools .example-selector select {
38-
background: #f3f4fa;
39+
background: #fff;
3940
border-radius: 9px;
4041
height: 30px;
4142
border: 0;
@@ -80,20 +81,11 @@ body {
8081
text-align: center;
8182
}
8283
.demo-wrapper .demoform .demo {
83-
background: #f3f4fa;
84+
background: #fff;
8485
border-radius: 9px;
8586
padding: 20px;
8687
margin-top: 20px;
8788
}
88-
.demo-wrapper .demoform .demo h4 {
89-
text-align: center;
90-
margin-top: -30px;
91-
}
92-
.demo-wrapper .demoform .demo h4 span {
93-
padding: 10px;
94-
background-color: #fff;
95-
border-radius: 5px;
96-
}
9789

9890
.action-button {
9991
margin-right: 10px;
@@ -135,7 +127,7 @@ body {
135127
max-width: 400px;
136128
margin: 40px auto 20px auto;
137129
padding: 0;
138-
background: #f3f4fa;
130+
background: #fff;
139131
border-radius: 9px;
140132
display: inline-block;
141133
}
@@ -167,13 +159,9 @@ body {
167159
background-color: #0047a1;
168160
}
169161
.react-tabs .panel-wrapper {
170-
max-height: 150px;
171162
overflow: scroll;
172163
padding: 0 15px;
173164
}
174-
.react-tabs .panel-wrapper.full-height {
175-
max-height: none !important;
176-
}
177165
.react-tabs .panel-wrapper .react-tabs__tab-panel {
178166
display: none;
179167
}

packages/example/src/App.tsx

Lines changed: 32 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
THE SOFTWARE.
2424
*/
2525

26-
import React, { useEffect, useState } from 'react';
26+
import React, { useEffect, useMemo, useState } from 'react';
2727
import { JsonForms, JsonFormsInitStateProps, JsonFormsReactProps } from '@jsonforms/react';
2828
import { ExampleDescription } from '@jsonforms/examples';
2929
import {
@@ -91,10 +91,10 @@ const App = ({ examples, cells, renderers}: AppProps) => {
9191
const [currentExample, setExample] = useState<ExampleDescription>(examples[0]);
9292
const [currentIndex, setIndex] = useState<number>(0);
9393
const [dataAsString, setDataAsString] = useState<any>('');
94-
const [schemaAsString, setSchemaAsString] = useState<any>('');
95-
const [uiSchemaAsString, setUiSchemaAsString] = useState<any>('');
9694
const [props, setProps] = useState<any>(getProps(currentExample, cells, renderers));
9795
const [showPanel, setShowPanel] = useState<boolean>(true);
96+
const schemaAsString = useMemo(() => JSON.stringify(props.schema, null, 2), [props.schema]);
97+
const uiSchemaAsString = useMemo(() => JSON.stringify(props.uischema, null, 2), [props.uischema]);
9898

9999
const actions: Action[] = currentExample.actions;
100100

@@ -119,41 +119,10 @@ const App = ({ examples, cells, renderers}: AppProps) => {
119119
}
120120
};
121121

122-
useEffect(() => {
123-
if(props.schema != undefined) {
124-
setSchemaAsString(JSON.stringify(props.schema, null, 2));
125-
} else {
126-
setSchemaAsString('No schema set');
127-
}
128-
if(props.uischema != undefined) {
129-
setUiSchemaAsString(JSON.stringify(props.uischema, null, 2));
130-
} else {
131-
setUiSchemaAsString('No ui schema set');
132-
}
133-
}, [props.schema, props.uischema]);
134-
135-
useEffect(() => {
136-
var panel = document.getElementsByClassName('props-panel')[0];
137-
if(showPanel) {
138-
panel.classList.remove('hide');
139-
} else {
140-
panel.classList.add('hide');
141-
}
142-
}, [showPanel]);
143-
144122
const changeData = (data: any) => {
145123
setDataAsString(JSON.stringify(data, null, 2));
146124
};
147125

148-
const togglePanelHeight = () => {
149-
var panel = document.getElementsByClassName('panel-wrapper')[0];
150-
panel.classList.toggle('full-height');
151-
}
152-
153-
const togglePanel = (checked: boolean) => {
154-
setShowPanel(checked);
155-
}
156-
157126
return (
158127
<div>
159128
<div className='App'>
@@ -182,47 +151,47 @@ const App = ({ examples, cells, renderers}: AppProps) => {
182151
</select>
183152
</div>
184153
<div className='toggle-panel'>
185-
<input type='checkbox' id='panel' name='panel' checked={showPanel} onChange={e => togglePanel(e.target.checked)} />
154+
<input type='checkbox' id='panel' name='panel' checked={showPanel} onChange={() => setShowPanel(!showPanel)} />
186155
<label htmlFor='panel'>Show sidepanel</label>
187156
</div>
188157
</div>
189158

190159
<div className='demo-wrapper'>
191-
<div className='props-panel'>
192-
<Tabs>
193-
<TabList>
194-
<Tab>Data</Tab>
195-
<Tab>Schema</Tab>
196-
<Tab>UISchema</Tab>
197-
</TabList>
198-
<p className='expand-hint' onClick={() => togglePanelHeight()}>Click here to expand</p>
199-
<div className='panel-wrapper'>
200-
<TabPanel>
201-
<Highlight className='json'>
202-
{dataAsString}
203-
</Highlight>
204-
</TabPanel>
205-
<TabPanel>
206-
<Highlight className='json'>
207-
{schemaAsString}
208-
</Highlight>
209-
</TabPanel>
210-
<TabPanel>
211-
<Highlight className='json'>
212-
{uiSchemaAsString}
213-
</Highlight>
214-
</TabPanel>
215-
</div>
216-
</Tabs>
217-
</div>
160+
{ showPanel &&
161+
<div className='props-panel'>
162+
<Tabs>
163+
<TabList>
164+
<Tab>Data</Tab>
165+
<Tab>Schema</Tab>
166+
<Tab>UISchema</Tab>
167+
</TabList>
168+
<div className="panel-wrapper">
169+
<TabPanel>
170+
<Highlight className='json'>
171+
{dataAsString}
172+
</Highlight>
173+
</TabPanel>
174+
<TabPanel>
175+
<Highlight className='json'>
176+
{schemaAsString}
177+
</Highlight>
178+
</TabPanel>
179+
<TabPanel>
180+
<Highlight className='json'>
181+
{uiSchemaAsString}
182+
</Highlight>
183+
</TabPanel>
184+
</div>
185+
</Tabs>
186+
</div>
187+
}
218188
<div className='demoform'>
219189
<div className='buttons'>
220190
{actions?.map((action: Action, index: number) => (
221191
<button className='action-button' onClick={ () => setProps((oldProps: JsonFormsInitStateProps) => action.apply(oldProps))} key={index}>{action.label}</button>
222192
))}
223193
</div>
224194
<div className='demo'>
225-
<h4><span>Example</span></h4>
226195
<ResolvedJsonForms
227196
key={currentIndex}
228197
{...props}

0 commit comments

Comments
 (0)