Fixed broken modes `form` and `view`
This commit is contained in:
parent
ce484c670a
commit
675432c52d
|
@ -67,7 +67,7 @@ const loaders = [
|
|||
const resolve = {
|
||||
'alias': {
|
||||
'react': 'preact-compat',
|
||||
'react-dom': 'preact-compat'
|
||||
'react-dom': 'preact-compat'
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ export default class JSONNode extends Component {
|
|||
return h('div', {key: 'readonly', className: 'jsoneditor-readonly', title}, text)
|
||||
}
|
||||
|
||||
renderProperty (prop: ?PropertyData, index: ?number, data: JSONData, options) {
|
||||
renderProperty (prop: ?PropertyData, index: ?number, data: JSONData, options: {escapeUnicode: boolean, isPropertyEditable: (Path) => boolean}) {
|
||||
const isIndex = typeof index === 'number'
|
||||
|
||||
if (!prop && !isIndex) {
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import { createElement as h } from 'react'
|
||||
import { escapeHTML } from '../utils/stringUtils'
|
||||
// @flow
|
||||
|
||||
import JSONNode from './JSONNode'
|
||||
|
||||
import type { PropertyData, JSONData } from '../types'
|
||||
|
||||
/**
|
||||
* JSONNodeForm
|
||||
*
|
||||
|
@ -20,33 +22,13 @@ export default class JSONNodeForm extends JSONNode {
|
|||
}
|
||||
|
||||
// render a readonly property
|
||||
renderProperty (prop, data, options) {
|
||||
if (prop !== null) {
|
||||
const isIndex = typeof prop === 'number' // FIXME: pass an explicit prop isIndex
|
||||
renderProperty (prop: ?PropertyData, index: ?number, data: JSONData, options: {escapeUnicode: boolean, isPropertyEditable: (Path) => boolean}) {
|
||||
const formOptions = Object.assign({}, options, { isPropertyEditable })
|
||||
|
||||
if (isIndex) { // array item
|
||||
return h('div', {
|
||||
key: 'property',
|
||||
className: 'jsoneditor-property jsoneditor-readonly'
|
||||
}, prop)
|
||||
}
|
||||
else { // object property
|
||||
const escapedProp = escapeHTML(prop, options.escapeUnicode)
|
||||
|
||||
return h('div', {
|
||||
key: 'property',
|
||||
className: 'jsoneditor-property' + (prop.length === 0 ? ' jsoneditor-empty' : '')
|
||||
}, escapedProp)
|
||||
}
|
||||
}
|
||||
else {
|
||||
// root node
|
||||
const content = JSONNode.getRootName(data, options)
|
||||
|
||||
return h('div', {
|
||||
key: 'property',
|
||||
className: 'jsoneditor-property jsoneditor-readonly'
|
||||
}, content)
|
||||
}
|
||||
return JSONNode.prototype.renderProperty.call(this, prop, index, data, formOptions)
|
||||
}
|
||||
}
|
||||
|
||||
function isPropertyEditable () {
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -12,26 +12,31 @@ import JSONNodeForm from './JSONNodeForm'
|
|||
*/
|
||||
export default class JSONNodeView extends JSONNodeForm {
|
||||
|
||||
// render a readonly value
|
||||
renderValue (value) {
|
||||
// render a readonly value but with colors
|
||||
renderValue (value, searchResult, options) {
|
||||
const escapedValue = escapeHTML(value, options.escapeUnicode)
|
||||
const type = valueType (value)
|
||||
const isEmpty = escapedValue.length === 0
|
||||
const itsAnUrl = isUrl(value)
|
||||
const className = JSONNode.getValueClass(type, itsAnUrl, isEmpty)
|
||||
const isEmpty = escapedValue.length === 0
|
||||
|
||||
if (itsAnUrl) {
|
||||
return h('a', {
|
||||
const editable = !options.isValueEditable || options.isValueEditable(this.props.path)
|
||||
if (editable) {
|
||||
return h('div', {
|
||||
key: 'value',
|
||||
className: className,
|
||||
href: escapedValue
|
||||
ref: 'value',
|
||||
className: JSONNode.getValueClass(type, itsAnUrl, isEmpty) +
|
||||
JSONNode.getSearchResultClass(searchResult),
|
||||
contentEditable: 'false',
|
||||
spellCheck: 'false',
|
||||
onClick: this.handleClickValue,
|
||||
title: itsAnUrl ? JSONNode.URL_TITLE : null
|
||||
}, escapedValue)
|
||||
}
|
||||
else {
|
||||
return h('div', {
|
||||
key: 'value',
|
||||
className: className,
|
||||
onClick: this.handleClickValue
|
||||
className: 'jsoneditor-readonly',
|
||||
title: itsAnUrl ? JSONNode.URL_TITLE : null
|
||||
}, escapedValue)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue