refactor(tree): default expand all using treemate

This commit is contained in:
07akioni 2020-11-13 21:05:32 +08:00
parent 7172519089
commit adc16d3a87
3 changed files with 26 additions and 28 deletions

View File

@ -89,7 +89,7 @@
"evtd": "^0.0.1-alpha.1",
"highlight.js": "^9.18.1",
"lodash-es": "^4.17.15",
"treemate": "^0.1.9",
"treemate": "^0.1.11",
"vfonts": "^0.0.1",
"vooks": "^0.0.1",
"vue": "^3.0.2",

View File

@ -14,7 +14,7 @@ import {
withCssr
} from '../../_mixins'
import NTreeNode from './TreeNode'
import { getAllNonLeafKeys, keysWithFilter } from './utils'
import { keysWithFilter } from './utils'
import styles from './styles'
import { call } from '../../_utils/vue'
import { warn } from '../../_utils/naive'
@ -58,30 +58,34 @@ export default {
type: Boolean,
default: false
},
checkedKeys: {
type: Array,
default: undefined
},
disabled: {
type: Boolean,
default: false
},
defaultCheckedKeys: {
checkedKeys: {
type: Array,
default: undefined
},
defaultCheckedKeys: {
type: Array,
default: []
},
expandedKeys: {
type: Array,
default: undefined
},
defaultExpandedKeys: {
type: Array,
default: undefined
default: []
},
selectedKeys: {
type: Array,
default: undefined
},
defaultSelectedKeys: {
type: Array,
default: []
},
remote: {
type: Boolean,
default: false
@ -173,9 +177,8 @@ export default {
setup (props) {
const treeMateRef = computed(() => createTreeMate(props.data))
const uncontrolledCheckedKeysRef = ref(
props.defaultExpandAll
? getAllNonLeafKeys(props.data)
: props.defaultCheckedKeys ?? []
props.defaultCheckedKeys ||
props.checkedKeys
)
const controlledCheckedKeysRef = toRef(props, 'checkedKeys')
const mergedCheckedKeysRef = useMergedState(
@ -193,13 +196,23 @@ export default {
const displayedIndeterminateKeysRef = computed(() => {
return checkedStatusRef.value.indeterminateKeys
})
const uncontrolledSelectedKeysRef = ref(props.defaultSelectedKeys ?? [])
const uncontrolledSelectedKeysRef = ref(
props.defaultSelectedKeys ||
props.selectedKeys
)
const controlledSelectedKeysRef = toRef(props, 'selectedKeys')
const mergedSelectedKeysRef = useMergedState(
controlledSelectedKeysRef,
uncontrolledSelectedKeysRef
)
const uncontrolledExpandedKeysRef = ref(props.defaultExpandedKeys ?? [])
const uncontrolledExpandedKeysRef = ref(
props.defaultExpandAll
? treeMateRef.value.getNonLeafKeys()
: (
props.defaultExpandedKeys ||
props.expandedKeys
)
)
const controlledExpandedKeysRef = toRef(props, 'selectedKeys')
const mergedExpandedKeysRef = useMergedState(
controlledExpandedKeysRef,

View File

@ -1,12 +1,3 @@
export function isLeaf (node) {
if (node.isLeaf !== undefined) return node.isLeaf
return !node.children
}
export function isLoaded (node) {
return !(node.isLeaf === false && !node.children)
}
function traverse (nodes, callback, callbackAfter) {
nodes && nodes.forEach(node => {
callback(node)
@ -15,12 +6,6 @@ function traverse (nodes, callback, callbackAfter) {
})
}
export function getAllNonLeafKeys (nodes) {
const keys = []
traverse(nodes, node => { node.children && keys.push(node.key) })
return keys
}
export function keysWithFilter (nodes, pattern, filter) {
const keys = new Set()
const highlightKeys = new Set()