fix: object/value
This commit is contained in:
parent
b145a14821
commit
353eecd32f
5
src/client/components/types/object.raw.scss
Normal file
5
src/client/components/types/object.raw.scss
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
:scope {
|
||||||
|
background-color: rgba(255, 255, 255, 0.05);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
|
padding: 0.25em;
|
||||||
|
}
|
35
src/client/components/types/object.type-renderer.jsx
Normal file
35
src/client/components/types/object.type-renderer.jsx
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
import {compose} from '@avocado/core';
|
||||||
|
import contempo from 'contempo';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
import propertyPropTypes from './property-prop-types';
|
||||||
|
|
||||||
|
const decorate = compose(
|
||||||
|
contempo(require('./object.raw.scss')),
|
||||||
|
);
|
||||||
|
|
||||||
|
const ObjectRenderer = ({
|
||||||
|
value,
|
||||||
|
}) => (
|
||||||
|
<div className="object">
|
||||||
|
<span className="bracket open">{'{'}</span>
|
||||||
|
<pre contentEditable>
|
||||||
|
<code>
|
||||||
|
{' '}
|
||||||
|
{JSON.stringify(value, null, 2).slice(1).slice(0, -1).trim('\n')}
|
||||||
|
</code>
|
||||||
|
</pre>
|
||||||
|
<span className="bracket close">{'}'}</span>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
|
ObjectRenderer.propTypes = {
|
||||||
|
...propertyPropTypes,
|
||||||
|
value: PropTypes.bool.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default {
|
||||||
|
type: 'object',
|
||||||
|
component: decorate(ObjectRenderer),
|
||||||
|
};
|
|
@ -2,21 +2,11 @@
|
||||||
text-align-last: right;
|
text-align-last: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
:scope {
|
.literal {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.object {
|
.literal select {
|
||||||
background-color: #333333;
|
|
||||||
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
||||||
padding: 0.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.object, input {
|
|
||||||
// border-left: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
margin-right: 0.25em;
|
margin-right: 0.25em;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import React from 'react';
|
||||||
|
|
||||||
import Bool from './bool.type-renderer';
|
import Bool from './bool.type-renderer';
|
||||||
import Number from './number.type-renderer';
|
import Number from './number.type-renderer';
|
||||||
|
import {default as ObjectType} from './object.type-renderer';
|
||||||
import propertyPropTypes from './property-prop-types';
|
import propertyPropTypes from './property-prop-types';
|
||||||
import Steps from './steps';
|
import Steps from './steps';
|
||||||
import String from './string.type-renderer';
|
import String from './string.type-renderer';
|
||||||
|
@ -46,18 +47,7 @@ const renderValue = (context, type, value) => {
|
||||||
case 'string':
|
case 'string':
|
||||||
return <String.component value={value.value} />;
|
return <String.component value={value.value} />;
|
||||||
case 'object':
|
case 'object':
|
||||||
return (
|
return <ObjectType.component value={value.value} />;
|
||||||
<div className="object">
|
|
||||||
<span className="bracket open">{'{'}</span>
|
|
||||||
<pre contentEditable>
|
|
||||||
<code>
|
|
||||||
{' '}
|
|
||||||
{JSON.stringify(value.value, null, 2).slice(1).slice(0, -1).trim('\n')}
|
|
||||||
</code>
|
|
||||||
</pre>
|
|
||||||
<span className="bracket close">{'}'}</span>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -81,7 +71,7 @@ const Value = ({
|
||||||
options,
|
options,
|
||||||
type,
|
type,
|
||||||
value,
|
value,
|
||||||
}) => renderValue(context, type || 'any', value);
|
}) => <span className="value">{renderValue(context, type, value)}</span>;
|
||||||
|
|
||||||
Value.propTypes = {
|
Value.propTypes = {
|
||||||
...propertyPropTypes,
|
...propertyPropTypes,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user