From 8f41aab269a79fd5af7cd126ce684e0f07b4909a Mon Sep 17 00:00:00 2001
From: 07akioni <07akioni2@gmail.com>
Date: Wed, 28 Oct 2020 01:00:55 +0800
Subject: [PATCH] refactor(select): use treemate
---
.../components/dropdown/enUS/cascade.demo.md | 3 +-
.../dropdown/enUS/index.demo-entry.md | 1 +
.../dropdown/enUS/manual-position.demo.md | 3 +-
.../components/dropdown/enUS/size.demo.md | 3 +-
.../components/dropdown/zhCN/cascade.demo.md | 3 +-
.../dropdown/zhCN/index.demo-entry.md | 1 +
.../dropdown/zhCN/manual-position.demo.md | 3 +-
.../components/dropdown/zhCN/size.demo.md | 3 +-
package.json | 2 +-
.../select-menu/src/SelectGroupHeader.js | 6 +-
src/_base/select-menu/src/SelectMenu.vue | 228 +++++----------
src/_base/select-menu/src/SelectOption.js | 76 ++---
src/_utils/component/select.js | 176 -----------
src/_utils/vue/createClassObject.js | 14 -
src/auto-complete/src/AutoComplete.vue | 17 +-
src/cascader/src/CascaderOption.vue | 2 +-
src/cascader/src/CascaderSelectMenu.vue | 14 +-
src/cascader/src/composables.js | 2 +-
src/data-table/src/TableParts/Body.vue | 33 ++-
src/data-table/src/utils.js | 11 -
src/dropdown/src/Dropdown.js | 6 +-
src/select/src/Select.vue | 276 ++++++++++--------
22 files changed, 326 insertions(+), 557 deletions(-)
delete mode 100644 src/_utils/component/select.js
delete mode 100644 src/_utils/vue/createClassObject.js
diff --git a/demo/documentation/components/dropdown/enUS/cascade.demo.md b/demo/documentation/components/dropdown/enUS/cascade.demo.md
index ada6235c5..b9ddc8385 100644
--- a/demo/documentation/components/dropdown/enUS/cascade.demo.md
+++ b/demo/documentation/components/dropdown/enUS/cascade.demo.md
@@ -30,7 +30,8 @@ const options = [
key: 'daisy buchanan'
},
{
- type: 'divider'
+ type: 'divider',
+ key: 'd1'
},
{
label: 'Nick Carraway',
diff --git a/demo/documentation/components/dropdown/enUS/index.demo-entry.md b/demo/documentation/components/dropdown/enUS/index.demo-entry.md
index eb2507288..a30b1cafb 100644
--- a/demo/documentation/components/dropdown/enUS/index.demo-entry.md
+++ b/demo/documentation/components/dropdown/enUS/index.demo-entry.md
@@ -32,6 +32,7 @@ For other props, see [Popover Props](n-popover#Props). Note that `arrow`, `raw`
|Property|Type|Description|
|-|-|-|
|type|`'divider'`||
+|key|`string \| number`|Should be unique|
### DropdownSubmenu Type
|Property|Type|Description|
diff --git a/demo/documentation/components/dropdown/enUS/manual-position.demo.md b/demo/documentation/components/dropdown/enUS/manual-position.demo.md
index 4c0ec7a83..d42bc6944 100644
--- a/demo/documentation/components/dropdown/enUS/manual-position.demo.md
+++ b/demo/documentation/components/dropdown/enUS/manual-position.demo.md
@@ -25,7 +25,8 @@ const options = [
key: 'daisy buchanan'
},
{
- type: 'divider'
+ type: 'divider',
+ key: 'd1'
},
{
label: 'Nick Carraway',
diff --git a/demo/documentation/components/dropdown/enUS/size.demo.md b/demo/documentation/components/dropdown/enUS/size.demo.md
index fa7b7fc99..a289e0fc6 100644
--- a/demo/documentation/components/dropdown/enUS/size.demo.md
+++ b/demo/documentation/components/dropdown/enUS/size.demo.md
@@ -51,7 +51,8 @@ const options = [
key: 'daisy buchanan'
},
{
- type: 'divider'
+ type: 'divider',
+ key: 'd1'
},
{
label: 'Nick Carraway',
diff --git a/demo/documentation/components/dropdown/zhCN/cascade.demo.md b/demo/documentation/components/dropdown/zhCN/cascade.demo.md
index 7a86fecb8..cc0a07722 100644
--- a/demo/documentation/components/dropdown/zhCN/cascade.demo.md
+++ b/demo/documentation/components/dropdown/zhCN/cascade.demo.md
@@ -30,7 +30,8 @@ const options = [
key: 'daisy buchanan'
},
{
- type: 'divider'
+ type: 'divider',
+ key: 'd1'
},
{
label: '尼克·卡拉威',
diff --git a/demo/documentation/components/dropdown/zhCN/index.demo-entry.md b/demo/documentation/components/dropdown/zhCN/index.demo-entry.md
index b117b0b08..9a6f4b567 100644
--- a/demo/documentation/components/dropdown/zhCN/index.demo-entry.md
+++ b/demo/documentation/components/dropdown/zhCN/index.demo-entry.md
@@ -32,6 +32,7 @@ manual-position
|属性|类型|说明|
|-|-|-|
|type|`'divider'`||
+|key|`string \| number`|需要唯一|
### DropdownSubmenu Type
|属性|类型|说明|
diff --git a/demo/documentation/components/dropdown/zhCN/manual-position.demo.md b/demo/documentation/components/dropdown/zhCN/manual-position.demo.md
index 1d9f58084..f183893a7 100644
--- a/demo/documentation/components/dropdown/zhCN/manual-position.demo.md
+++ b/demo/documentation/components/dropdown/zhCN/manual-position.demo.md
@@ -27,7 +27,8 @@ const options = [
key: 'daisy buchanan'
},
{
- type: 'divider'
+ type: 'divider',
+ key: 'd1'
},
{
label: '尼克·卡拉威',
diff --git a/demo/documentation/components/dropdown/zhCN/size.demo.md b/demo/documentation/components/dropdown/zhCN/size.demo.md
index 5f91f904d..6903eebd7 100644
--- a/demo/documentation/components/dropdown/zhCN/size.demo.md
+++ b/demo/documentation/components/dropdown/zhCN/size.demo.md
@@ -50,7 +50,8 @@ const options = [
key: 'daisy buchanan'
},
{
- type: 'divider'
+ type: 'divider',
+ key: 'd1'
},
{
label: '尼克·卡拉威',
diff --git a/package.json b/package.json
index f9d53d8d2..b42670cf4 100644
--- a/package.json
+++ b/package.json
@@ -131,7 +131,7 @@
"highlight.js": "^9.18.1",
"lodash-es": "^4.17.15",
"resize-observer-polyfill": "^1.5.1",
- "treemate": "^0.1.6",
+ "treemate": "^0.1.7",
"vooks": "0.0.1-alpha.1",
"vue": "^3.0.2",
"vue-runtime-helpers": "^1.1.2",
diff --git a/src/_base/select-menu/src/SelectGroupHeader.js b/src/_base/select-menu/src/SelectGroupHeader.js
index d90b36fba..9fd6abe3c 100644
--- a/src/_base/select-menu/src/SelectGroupHeader.js
+++ b/src/_base/select-menu/src/SelectGroupHeader.js
@@ -3,14 +3,14 @@ import { h } from 'vue'
export default {
name: 'NBaseSelectGroupHeader',
props: {
- data: {
+ tmNode: {
type: Object,
required: true
}
},
render () {
- const data = this.data
- const children = data.render ? [data.render(h, data)] : [ data.name ]
+ const { tmNode: { rawNode } } = this
+ const children = rawNode.render ? [rawNode.render(rawNode)] : [ rawNode.name ]
return h('div', {
class: 'n-base-select-group-header'
}, children)
diff --git a/src/_base/select-menu/src/SelectMenu.vue b/src/_base/select-menu/src/SelectMenu.vue
index eb3ae1e44..5f16c8706 100644
--- a/src/_base/select-menu/src/SelectMenu.vue
+++ b/src/_base/select-menu/src/SelectMenu.vue
@@ -17,30 +17,28 @@
:scrollable="scrollable"
:container="virtualListContainer"
:content="virtualListContent"
- @scroll="handleMenuScroll"
+ @scroll="doScroll"
>
-
-
+
+
@@ -48,23 +46,16 @@
v-else
class="n-base-select-menu-option-wrapper"
>
-
-
+
-
@@ -84,19 +75,12 @@