Skip to content

Commit d81f95a

Browse files
authored
feat(TreeSelect): enrich external classes (#3395)
* feat(TreeSelect): enrich external classes * chore(SideBar): hide scroll bar style
1 parent ec7d93d commit d81f95a

File tree

5 files changed

+59
-15
lines changed

5 files changed

+59
-15
lines changed

src/side-bar/side-bar.less

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
height: @side-bar-height;
1212
overflow-y: auto;
1313

14+
&::-webkit-scrollbar {
15+
display: none;
16+
}
17+
1418
&__padding {
1519
flex: 1;
1620
background-color: @side-bar-bg-color;

src/tree-select/README.en-US.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@ name | params | description
2121
-- | -- | --
2222
change | `(value: TreeSelectValue, level: TreeLevel) ` | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts)。<br/>`type TreeLevel = 0 \| 1 \| 2`<br/>
2323

24+
### TreeSelect External Classes
25+
26+
className | Description
27+
-- | --
28+
t-class | \-
29+
t-class-left-column | \-
30+
t-class-left-item | \-
31+
t-class-middle-item | \-
32+
t-class-right-column | \-
33+
t-class-right-item | \-
34+
t-class-right-item-label | \-
35+
2436
### CSS Variables
2537

2638
The component provides the following CSS variables, which can be used to customize styles.

src/tree-select/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,18 @@ default-value | String / Number / Array | undefined | 选中值。非受控属
6767
-- | -- | --
6868
change | `(value: TreeSelectValue, level: TreeLevel) ` | 点击任何节点均会触发;level 代表当前点击的层级,0 代表最左侧,依次递进。[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/tree-select/type.ts)。<br/>`type TreeLevel = 0 \| 1 \| 2`<br/>
6969

70+
### TreeSelect External Classes
71+
72+
类名 | 描述
73+
-- | --
74+
t-class | 根节点样式类
75+
t-class-left-column | 左侧第一列样式类
76+
t-class-left-item | 左侧第一列子项样式类
77+
t-class-middle-item | 中间列子项样式类
78+
t-class-right-column | 右侧第一列样式类
79+
t-class-right-item | 右侧第一列子项样式类
80+
t-class-right-item-label | 右侧第一列子项标签样式类
81+
7082
### CSS Variables
7183

7284
组件提供了下列 CSS 变量,可用于自定义样式。

src/tree-select/tree-select.ts

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,15 @@ const name = `${prefix}-tree-select`;
99

1010
@wxComponent()
1111
export default class TreeSelect extends SuperComponent {
12-
externalClasses = [`${prefix}-class`];
12+
externalClasses = [
13+
`${prefix}-class`,
14+
`${prefix}-class-left-column`,
15+
`${prefix}-class-left-item`,
16+
`${prefix}-class-middle-item`,
17+
`${prefix}-class-right-column`,
18+
`${prefix}-class-right-item`,
19+
`${prefix}-class-right-item-label`,
20+
];
1321

1422
options = {
1523
multipleSlots: true,
@@ -46,10 +54,12 @@ export default class TreeSelect extends SuperComponent {
4654
buildTreeOptions() {
4755
const { options, value, multiple, keys } = this.data;
4856
const treeOptions = [];
57+
const innerValue = [];
58+
4959
let level = -1;
5060
let node = { children: options };
5161

52-
if (options.length === 0 || (Array.isArray(value) && value.length === 0)) return;
62+
if (options.length === 0) return;
5363

5464
while (node && node.children) {
5565
level += 1;
@@ -73,6 +83,11 @@ export default class TreeSelect extends SuperComponent {
7383

7484
const leafLevel = Math.max(0, level);
7585

86+
treeOptions?.forEach((ele, idx) => {
87+
const v = idx === treeOptions.length - 1 && multiple ? [ele[0].value] : ele[0].value;
88+
innerValue.push(value?.[idx] || v);
89+
});
90+
7691
if (multiple) {
7792
const finalValue = this.data.value || this.data.defaultValue;
7893
if (finalValue[leafLevel] != null && !Array.isArray(finalValue[leafLevel])) {
@@ -81,6 +96,7 @@ export default class TreeSelect extends SuperComponent {
8196
}
8297

8398
this.setData({
99+
innerValue,
84100
leafLevel,
85101
treeOptions,
86102
});
@@ -106,33 +122,33 @@ export default class TreeSelect extends SuperComponent {
106122
},
107123

108124
onRootChange(e) {
109-
const { value } = this.data;
125+
const { innerValue } = this.data;
110126
const { value: itemValue } = e.detail;
111127

112128
this.getScrollIntoView('none');
113-
value[0] = itemValue;
129+
innerValue[0] = itemValue;
114130

115-
this._trigger('change', { value, level: 0 });
131+
this._trigger('change', { value: innerValue, level: 0 });
116132
},
117133

118134
handleTreeClick(e) {
119135
const { level, value: itemValue } = e.currentTarget.dataset;
120-
const { value } = this.data;
136+
const { innerValue } = this.data;
121137

122-
value[level] = itemValue;
138+
innerValue[level] = itemValue;
123139
this.getScrollIntoView('none');
124-
this._trigger('change', { value, level: 1 });
140+
this._trigger('change', { value: innerValue, level: 1 });
125141
},
126142

127143
handleRadioChange(e) {
128-
const { value } = this.data;
144+
const { innerValue } = this.data;
129145
const { value: itemValue } = e.detail;
130146
const { level } = e.target.dataset;
131147

132-
value[level] = itemValue;
148+
innerValue[level] = itemValue;
133149

134150
this.getScrollIntoView('none');
135-
this._trigger('change', { value, level });
151+
this._trigger('change', { value: innerValue, level });
136152
},
137153
};
138154
}

src/tree-select/tree-select.wxml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
>
1212
<t-side-bar
1313
wx:if="{{level == 0}}"
14-
value="{{value[level]}}"
14+
value="{{innerValue[level]}}"
1515
bind:change="onRootChange"
1616
t-class="{{classPrefix}}-column {{prefix}}-class-left-column"
1717
>
@@ -32,7 +32,7 @@
3232
bind:tap="handleTreeClick"
3333
data-level="{{level}}"
3434
data-value="{{item.value}}"
35-
class="{{_.cls(classPrefix + '__item', [['active', item.value === value[level]]])}} {{prefix}}-class-middle-item scroll-into-view "
35+
class="{{_.cls(classPrefix + '__item', [['active', item.value === innerValue[level]]])}} {{prefix}}-class-middle-item scroll-into-view"
3636
>
3737
<view id="scroll-to-{{item.value}}"> {{item.label}} </view>
3838
</view>
@@ -41,7 +41,7 @@
4141
wx:elif="{{!multiple}}"
4242
class="{{classPrefix}}__radio {{prefix}}-class-right-column"
4343
data-level="{{level}}"
44-
value="{{value[level]}}"
44+
value="{{innerValue[level]}}"
4545
bind:change="handleRadioChange"
4646
>
4747
<t-radio
@@ -62,7 +62,7 @@
6262
<t-checkbox-group
6363
wx:else
6464
class="{{classPrefix}}__checkbox {{prefix}}-class-right-column"
65-
value="{{value[level]}}"
65+
value="{{innerValue[level]}}"
6666
bind:change="handleRadioChange"
6767
data-level="{{level}}"
6868
>

0 commit comments

Comments
 (0)