Skip to content

Commit 5a9c232

Browse files
authored
fix(splitter): 修复 collasped api 不起作用的问题、添加英文文档 (DevCloudFE#40)
* fix(splitter): 修复 collasped api 不起作用的问题, 优化 splitter-bar 代码 * feat(splitter): 添加英文文档 * feat(splitter): 添加展开和收起提示文字
1 parent f917743 commit 5a9c232

File tree

3 files changed

+360
-26
lines changed

3 files changed

+360
-26
lines changed

packages/devui-vue/devui/splitter/src/splitter-bar.tsx

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,27 @@ import {
22
defineComponent,
33
ref,
44
watch,
5-
nextTick,
65
reactive,
76
computed,
87
withDirectives,
98
onMounted,
109
inject,
1110
} from 'vue'
12-
import type { SplitterStore } from './splitter-store'
11+
12+
import DToolTip from '../../tooltip/src/tooltip'
1313
import { setStyle } from '../../shared/util/set-style'
14+
import type { SplitterStore } from './splitter-store'
1415
import { addClass, removeClass } from '../../shared/util/class'
1516
import dresize, { ResizeDirectiveProp } from './util/d-resize-directive'
16-
import './splitter-bar.scss'
1717
import { splitterBarProps, SplitterBarProps } from './splitter-bar-type'
18+
import './splitter-bar.scss'
1819

1920
export default defineComponent({
2021
name: 'DSplitterBar',
2122
props: splitterBarProps,
23+
components: {
24+
DToolTip,
25+
},
2226
setup(props: SplitterBarProps) {
2327
const store: SplitterStore = inject('splitterStore')
2428
const state = reactive({
@@ -109,8 +113,6 @@ export default defineComponent({
109113
// 计算前面板收起操作样式
110114
const prevClass = computed(() => {
111115
const { pane, nearPane } = queryPanes(props.index, props.index + 1)
112-
// TODO 提示文字
113-
114116
// 第一个面板或者其它面板折叠方向不是向后的, 显示操作按钮
115117
const showIcon =
116118
pane?.component?.props?.collapseDirection !== 'after' ||
@@ -121,8 +123,6 @@ export default defineComponent({
121123
// 计算相邻面板收起操作样式
122124
const nextClass = computed(() => {
123125
const { pane, nearPane } = queryPanes(props.index + 1, props.index)
124-
// TODO 提示文字
125-
126126
// 最后一个面板或者其它面板折叠方向不是向前的显示操作按钮
127127
const showIcon =
128128
pane?.component?.props?.collapseDirection !== 'before' ||
@@ -157,29 +157,41 @@ export default defineComponent({
157157
handleCollapsePrePane(true)
158158
handleCollapseNextPane(true)
159159
}
160-
160+
161161
onMounted(() => {
162162
initialCollapseStatus()
163163
})
164+
165+
const renderCollapsedTip = () => {
166+
const { pane, nearPane } = queryPanes(props.index, props.index + 1)
167+
const isCollapsed =
168+
pane?.component?.props?.collapsed ||
169+
nearPane?.component?.props?.collapsed
170+
return isCollapsed ? '展开' : '收起'
171+
}
164172

165173
return () => {
166174
return withDirectives(
167175
<div class={state.wrapperClass} ref={domRef}>
168-
{props.showCollapseButton ? (
169-
<div
170-
class={['prev', prevClass.value]}
171-
onClick={() => {
172-
handleCollapsePrePane()
173-
}}
174-
></div>
175-
) : null}
176+
{props.showCollapseButton && (
177+
<DToolTip content={renderCollapsedTip()}>
178+
<div
179+
class={['prev', prevClass.value]}
180+
onClick={() => {
181+
handleCollapsePrePane()
182+
}}
183+
></div>
184+
</DToolTip>
185+
)}
176186
<div class="devui-resize-handle"></div>
177-
{props.showCollapseButton ? (
178-
<div
179-
class={['next', nextClass.value]}
180-
onClick={() => handleCollapseNextPane()}
181-
></div>
182-
) : null}
187+
{props.showCollapseButton && (
188+
<DToolTip content={renderCollapsedTip()}>
189+
<div
190+
class={['next', nextClass.value]}
191+
onClick={() => handleCollapseNextPane()}
192+
></div>
193+
</DToolTip>
194+
)}
183195
</div>,
184196
[[dresize, resizeProp]]
185197
)

packages/devui-vue/devui/splitter/src/splitter-pane.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,8 @@ export default defineComponent({
7777
};
7878

7979

80-
watch(
81-
() => props.collapsed,
82-
(collapsed: boolean) => {
83-
const ele = domRef.value;
80+
watch([() => props.collapsed, domRef],
81+
([collapsed, ele]) => {
8482
if (!ele) {
8583
return;
8684
}

0 commit comments

Comments
 (0)