fix: object/value

This commit is contained in:
cha0s 2020-06-19 20:40:49 -05:00
parent b145a14821
commit 353eecd32f
4 changed files with 45 additions and 25 deletions

View 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;
}

View 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),
};

View File

@ -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;
} }

View File

@ -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,