mirror of
https://github.com/tusen-ai/naive-ui.git
synced 2025-01-30 12:52:43 +08:00
refactor(tree): default expand all using treemate
This commit is contained in:
parent
7172519089
commit
adc16d3a87
@ -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",
|
||||
|
@ -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,
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user