Handle error when switching mode
This commit is contained in:
parent
873d5f8ae2
commit
1bcc6382aa
|
@ -33,11 +33,10 @@ export default class TextMode extends Component {
|
||||||
h('div', {class: 'jsoneditor-vertical-menu-separator'}),
|
h('div', {class: 'jsoneditor-vertical-menu-separator'}),
|
||||||
|
|
||||||
this.props.options.modes && h(ModeButton, {
|
this.props.options.modes && h(ModeButton, {
|
||||||
open: this.state.modeMenuOpen,
|
|
||||||
modes: this.props.options.modes,
|
modes: this.props.options.modes,
|
||||||
mode: this.props.mode,
|
mode: this.props.mode,
|
||||||
onMode: this.props.onMode,
|
onMode: this.props.onMode,
|
||||||
onClick: this.handleShowModeMenu
|
onError: this.handleError
|
||||||
})
|
})
|
||||||
]),
|
]),
|
||||||
|
|
||||||
|
@ -92,7 +91,7 @@ export default class TextMode extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @private */
|
/** @private */
|
||||||
handleError (err) {
|
handleError = (err) => {
|
||||||
if (this.props.options && this.props.options.onError) {
|
if (this.props.options && this.props.options.onError) {
|
||||||
this.props.options.onError(err)
|
this.props.options.onError(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,8 @@ export default class TreeMode extends Component {
|
||||||
this.props.options.modes && h(ModeButton, {
|
this.props.options.modes && h(ModeButton, {
|
||||||
modes: this.props.options.modes,
|
modes: this.props.options.modes,
|
||||||
mode: this.props.mode,
|
mode: this.props.mode,
|
||||||
onMode: this.props.onMode
|
onMode: this.props.onMode,
|
||||||
|
onError: this.handleError
|
||||||
})
|
})
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
@ -199,6 +200,16 @@ export default class TreeMode extends Component {
|
||||||
this.emitOnChange (actions, revert)
|
this.emitOnChange (actions, revert)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @private */
|
||||||
|
handleError = (err) => {
|
||||||
|
if (this.props.options && this.props.options.onError) {
|
||||||
|
this.props.options.onError(err)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.error(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Emit an onChange event when there is a listener for it.
|
* Emit an onChange event when there is a listener for it.
|
||||||
* @param {JSONPatch} patch
|
* @param {JSONPatch} patch
|
||||||
|
|
|
@ -12,7 +12,7 @@ export default class ModeButton extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {{modes: string[], mode: string, onMode: function}} props
|
* @param {{modes: string[], mode: string, onMode: function, onError: function}} props
|
||||||
* @param state
|
* @param state
|
||||||
* @return {*}
|
* @return {*}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { toCapital } from '../utils/stringUtils'
|
||||||
|
|
||||||
export default class ModeMenu extends Component {
|
export default class ModeMenu extends Component {
|
||||||
/**
|
/**
|
||||||
* @param {{open, modes, mode, onMode}} props
|
* @param {{open, modes, mode, onMode, onError}} props
|
||||||
* @param {Obect} state
|
* @param {Obect} state
|
||||||
* @return {JSX.Element}
|
* @return {JSX.Element}
|
||||||
*/
|
*/
|
||||||
|
@ -15,9 +15,14 @@ export default class ModeMenu extends Component {
|
||||||
class: 'jsoneditor-menu-button jsoneditor-type-modes' +
|
class: 'jsoneditor-menu-button jsoneditor-type-modes' +
|
||||||
((mode === props.mode) ? ' jsoneditor-selected' : ''),
|
((mode === props.mode) ? ' jsoneditor-selected' : ''),
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
|
try {
|
||||||
props.onMode(mode)
|
props.onMode(mode)
|
||||||
this.setState({ open: false })
|
this.setState({ open: false })
|
||||||
}
|
}
|
||||||
|
catch (err) {
|
||||||
|
props.onError(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}, toCapital(mode))
|
}, toCapital(mode))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue