Don't expand search result itself when focusing it
This commit is contained in:
parent
99cc07577d
commit
598fe63d80
|
@ -1,4 +1,5 @@
|
|||
.idea
|
||||
.vscode
|
||||
dist
|
||||
lib
|
||||
downloads
|
||||
|
|
|
@ -8,7 +8,7 @@ import { getInnerText, insideRect, findParentWithAttribute } from '../utils/domU
|
|||
import { stringConvert, valueType, isUrl } from '../utils/typeUtils'
|
||||
import { compileJSONPointer } from '../jsonData'
|
||||
|
||||
import type { PropertyData, JSONData, SearchResultStatus } from '../types'
|
||||
import type { PropertyData, JSONData, SearchResultStatus, Path } from '../types'
|
||||
|
||||
export default class JSONNode extends Component {
|
||||
static URL_TITLE = 'Ctrl+Click or Ctrl+Enter to open url'
|
||||
|
@ -165,7 +165,7 @@ export default class JSONNode extends Component {
|
|||
}
|
||||
|
||||
// TODO: simplify the method renderProperty
|
||||
renderProperty (prop: ?PropertyData, index: ?number, data: JSONData, options: {escapeUnicode: boolean, isPropertyEditable: (path: string) => boolean}) {
|
||||
renderProperty (prop: ?PropertyData, index: ?number, data: JSONData, options: {escapeUnicode: boolean, isPropertyEditable: (Path) => boolean}) {
|
||||
const isIndex = typeof index === 'number'
|
||||
|
||||
if (!prop && !isIndex) {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import JSONNode from './JSONNode'
|
||||
|
||||
import type { PropertyData, JSONData } from '../types'
|
||||
import type { PropertyData, JSONData, Path } from '../types'
|
||||
|
||||
/**
|
||||
* JSONNodeForm
|
||||
|
|
|
@ -262,6 +262,8 @@ export default class TextMode extends Component {
|
|||
// do nothing...
|
||||
}
|
||||
|
||||
findKeyBinding = createFindKeyBinding(KEY_BINDINGS)
|
||||
|
||||
handleKeyDown = (event) => {
|
||||
const keyBinding = this.findKeyBinding(event)
|
||||
const action = this.keyDownActions[keyBinding]
|
||||
|
@ -382,4 +384,3 @@ export default class TextMode extends Component {
|
|||
}
|
||||
|
||||
// TODO: define propTypes
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import Ajv from 'ajv'
|
|||
|
||||
import { updateIn, getIn, setIn } from '../utils/immutabilityHelpers'
|
||||
import { parseJSON } from '../utils/jsonUtils'
|
||||
import { allButLast } from '../utils/arrayUtils'
|
||||
import { enrichSchemaError } from '../utils/schemaUtils'
|
||||
import {
|
||||
jsonToData, dataToJson, toDataPath, patchData, pathExists,
|
||||
|
@ -189,7 +190,7 @@ export default class TreeMode extends Component {
|
|||
])
|
||||
}
|
||||
|
||||
renderMenu (searchResults: Array) {
|
||||
renderMenu (searchResults: [] | null) {
|
||||
let items = [
|
||||
h('button', {
|
||||
key: 'expand-all',
|
||||
|
@ -277,6 +278,8 @@ export default class TreeMode extends Component {
|
|||
return []
|
||||
}
|
||||
|
||||
findKeyBinding = createFindKeyBinding(KEY_BINDINGS)
|
||||
|
||||
handleKeyDown = (event) => {
|
||||
const keyBinding = this.findKeyBinding(event)
|
||||
const action = this.keyDownActions[keyBinding]
|
||||
|
@ -408,7 +411,7 @@ export default class TreeMode extends Component {
|
|||
|
||||
this.setState({
|
||||
search: { text, active },
|
||||
data: expandPath(this.state.data, active.path)
|
||||
data: expandPath(this.state.data, allButLast(active.path))
|
||||
})
|
||||
|
||||
// scroll to active search result (on next tick, after this path has been expanded)
|
||||
|
@ -429,7 +432,7 @@ export default class TreeMode extends Component {
|
|||
|
||||
this.setState({
|
||||
search: setIn(this.state.search, ['active'], next),
|
||||
data: expandPath(this.state.data, next && next.path)
|
||||
data: next ? expandPath(this.state.data, allButLast(next.path)) : this.state.data
|
||||
})
|
||||
|
||||
// scroll to the active result (on next tick, after this path has been expanded)
|
||||
|
@ -453,7 +456,7 @@ export default class TreeMode extends Component {
|
|||
|
||||
this.setState({
|
||||
search: setIn(this.state.search, ['active'], previous),
|
||||
data: expandPath(this.state.data, previous && previous.path)
|
||||
data: previous ? expandPath(this.state.data, allButLast(previous.path)) : this.state.data
|
||||
})
|
||||
|
||||
// scroll to the active result (on next tick, after this path has been expanded)
|
||||
|
@ -757,5 +760,4 @@ export default class TreeMode extends Component {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// TODO: describe PropTypes
|
||||
// TODO: describe PropTypes
|
||||
|
|
|
@ -54,7 +54,7 @@ export default class Search extends Component {
|
|||
])
|
||||
}
|
||||
|
||||
renderResultsCount (searchResults : Array) {
|
||||
renderResultsCount (searchResults : []) {
|
||||
if (!searchResults) {
|
||||
return null
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
import { setIn, updateIn, getIn, deleteIn, insertAt } from './utils/immutabilityHelpers'
|
||||
import { isObject } from './utils/typeUtils'
|
||||
import { last, allButLast } from './utils/arrayUtils'
|
||||
import isEqual from 'lodash/isEqual'
|
||||
|
||||
import type {
|
||||
|
@ -14,6 +15,8 @@ import type {
|
|||
JSONPatch, JSONPatchAction, PatchOptions, JSONPatchResult
|
||||
} from './types'
|
||||
|
||||
type RecurseCallback = (value: JSONData, path: Path, root: JSONData) => JSONData
|
||||
|
||||
/**
|
||||
* Expand function which will expand all nodes
|
||||
* @param {Path} path
|
||||
|
@ -519,7 +522,7 @@ export function expand (data: JSONData, callback: Path | (Path) => boolean, expa
|
|||
// console.log('expand', callback, expand)
|
||||
|
||||
if (typeof callback === 'function') {
|
||||
return transform (data, function (value, path) {
|
||||
return transform(data, function (value: JSONData, path: Path, root: JSONData) : JSONData {
|
||||
if (value.type === 'Array' || value.type === 'Object') {
|
||||
if (callback(path)) {
|
||||
return setIn(value, ['expanded'], expanded)
|
||||
|
@ -694,8 +697,6 @@ export function containsCaseInsensitive (text: string, search: string): boolean
|
|||
return String(text).toLowerCase().indexOf(search.toLowerCase()) !== -1
|
||||
}
|
||||
|
||||
type RecurseCallback = (JSONData, Path, JSONData) => JSONData
|
||||
|
||||
/**
|
||||
* Recursively transform JSONData: a recursive "map" function
|
||||
* @param {JSONData} data
|
||||
|
@ -714,7 +715,7 @@ export function transform (data: JSONData, callback: RecurseCallback) {
|
|||
* @param {function(value: JSONData, path: Path, root: JSONData)} callback
|
||||
* @return {JSONData} Returns the transformed data
|
||||
*/
|
||||
function recurseTransform (value: JSONData, path: Path, root: JSONData, callback: RecurseCallback) : JSONData{
|
||||
function recurseTransform (value: JSONData, path: Path, root: JSONData, callback: RecurseCallback) : JSONData {
|
||||
let updatedValue = callback(value, path, root)
|
||||
|
||||
if (value.type === 'Array') {
|
||||
|
@ -912,17 +913,3 @@ let _id = 0
|
|||
function createUniqueId (array) {
|
||||
return Math.max(...array.map(item => item.id)) + 1
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last item of an array
|
||||
*/
|
||||
function last (array: []): any {
|
||||
return array[array.length - 1]
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a copy of the array having the last item removed
|
||||
*/
|
||||
function allButLast (array: []): any {
|
||||
return array.slice(0, array.length - 1)
|
||||
}
|
||||
|
|
|
@ -7,6 +7,13 @@ export function last (array) {
|
|||
return array[array.length - 1]
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a copy of the array having the last item removed
|
||||
*/
|
||||
export function allButLast (array: []): [] {
|
||||
return array.slice(0, -1)
|
||||
}
|
||||
|
||||
/**
|
||||
* Comparator to sort an array in ascending order
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue