Skip to content

Commit bee1d56

Browse files
committed
点击整行也能展开或收起
1 parent ec76251 commit bee1d56

File tree

7 files changed

+48
-31
lines changed

7 files changed

+48
-31
lines changed

package-lock.json

Lines changed: 30 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vue-virtual-tree",
3-
"version": "3.1.2",
3+
"version": "3.1.3",
44
"description": "Tree component for large amount of data, base on Vue3",
55
"scripts": {
66
"serve": "vue-cli-service serve --port 4200",
@@ -10,16 +10,18 @@
1010
},
1111
"main": "./lib/vue-virtual-tree.common.js",
1212
"typings": "lib/typings/index.d.ts",
13-
"files": ["lib"],
13+
"files": [
14+
"lib"
15+
],
1416
"dependencies": {
1517
"core-js": "^3.6.5",
16-
"lodash.clonedeep": "^4.5.0"
18+
"lodash-es": "^4.17.21"
1719
},
1820
"peerDependencies": {
1921
"vue": "^3.0.0"
2022
},
2123
"devDependencies": {
22-
"@types/lodash.clonedeep": "^4.5.6",
24+
"@types/lodash-es": "^4.17.4",
2325
"@vue/babel-plugin-jsx": "^1.0.3",
2426
"@vue/cli-plugin-babel": "~4.5.0",
2527
"@vue/cli-plugin-typescript": "~4.5.0",

src/assets/styles/variable.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ $primary-color: #2d8cf0;
66
$assist-color: #bae7ff;
77
$disable-color: #c5c8ce;
88
$text-color: #333;
9+
$gray-color-tree: #e7eaef;
910

1011
$font-size-base: 14px;
1112
$font-size-mid: $font-size-base + 2;

src/components/VirtualCheckbox/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ export default defineComponent({
3131
}
3232
return result;
3333
});
34-
const handleClick = () => {
34+
const handleClick = (event: MouseEvent) => {
35+
event.stopPropagation();
3536
if (!props.disabled) {
3637
emit('update:modelValue', !props.modelValue);
3738
emit('change', !props.modelValue);

src/components/VirtualTree/index.scss

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313
cursor: pointer;
1414
transition: all .2s ease-in-out;
1515
&:hover {
16-
color: $primary-color;
16+
.node-content .node-title {
17+
color: $primary-color;
18+
}
19+
background-color: $gray-color-tree;
1720
}
1821
.node-arrow {
1922
display: inline-block;

src/components/VirtualTree/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {defineComponent, watch, ref, shallowRef, PropType, h} from 'vue';
2-
import cloneDeep from 'lodash.clonedeep';
2+
import { cloneDeep } from 'lodash-es';
33
import {nodeKey, TreeNodeInstance, TreeNodeOptions} from "./types";
44
import { flattenTree, updateDownwards, updateUpwards } from "./uses";
55
import VirTreeNode from './node';

src/components/VirtualTree/node.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ export default defineComponent({
4242
}
4343
return result;
4444
});
45-
const handleSelect = () => {
45+
const handleSelect = (event: MouseEvent) => {
46+
event.stopPropagation();
4647
if (!props.node.disabled) {
4748
emit('selectChange', props.node);
4849
}
@@ -54,7 +55,7 @@ export default defineComponent({
5455
emit('checkChange', [checked, props.node])
5556
}
5657
const renderArrow = (): JSX.Element | null => {
57-
return <div class={ ['node-arrow', props.node.expanded ? 'expanded' : ''] } onClick={ handleExpand }>
58+
return <div class={ ['node-arrow', props.node.expanded ? 'expanded' : ''] }>
5859
{
5960
props.node.hasChildren
6061
? props.iconSlot ? props.iconSlot(props.node.loading) : props.node.loading
@@ -92,7 +93,7 @@ export default defineComponent({
9293
// console.log('iconSlot', props.iconSlot);
9394
return () => {
9495
return (
95-
<div class="vir-tree-node" style={{ paddingLeft: props.node.level! * 18 + 'px' }}>
96+
<div class="vir-tree-node" onClick={ handleExpand } style={{ paddingLeft: props.node.level! * 18 + 'px' }}>
9697
{ renderArrow() }
9798
{ renderContent() }
9899
</div>

0 commit comments

Comments
 (0)