直接跳到内容

Collapsible 可折叠容器

Collapsible 是一个可以展开或收起内容区域的容器组件,适合用于侧边栏、设置面板、详情展示等场景。点击标题栏可切换折叠状态。

底层:Textual Collapsible

基本用法

vue
<template>
  <Collapsible title="详细信息" v-model="is_collapsed.value">
    <Label label="折叠内容在这里" />
    <Input placeholder="输入内容" />
  </Collapsible>
</template>

<script lang="py">
from vuepy import ref

is_collapsed = ref(False)
</script>

Props

属性类型默认值说明
titlestr""标题栏文字,点击可触发折叠/展开
collapsedboolFalse是否处于折叠状态;True 表示折叠(隐藏内容),False 表示展开

v-model

v-model 默认绑定属性:collapsed

v-model 绑定的值为 bool 类型,True 表示折叠,False 表示展开。

vue
<template>
  <VBox>
    <Button label="切换折叠" @click="toggle()" />
    <Collapsible title="内容区域" v-model="collapsed.value">
      <Label label="可折叠的内容" />
    </Collapsible>
  </VBox>
</template>

<script lang="py">
from vuepy import ref

collapsed = ref(False)

def toggle():
    collapsed.value = not collapsed.value
</script>

事件

事件参数说明
@collapsible_collapsedCollapsible.Collapsed容器被折叠(内容隐藏)时触发
@collapsible_expandedCollapsible.Expanded容器被展开(内容显示)时触发

事件使用示例

vue
<template>
  <Collapsible
    title="可观察的折叠区域"
    v-model="is_collapsed.value"
    @collapsible_collapsed="on_collapsed"
    @collapsible_expanded="on_expanded"
  >
    <Label label="内容" />
  </Collapsible>
</template>

<script lang="py">
from vuepy import ref

is_collapsed = ref(False)

def on_collapsed(event):
    print("已折叠")

def on_expanded(event):
    print("已展开")
</script>

嵌套使用

Collapsible 支持多层嵌套,适合构建树形折叠菜单:

vue
<template>
  <VBox style="height: 1fr; padding: 1;">
    <Collapsible title="一级菜单 A">
      <Label label="菜单项 A-1" />
      <Collapsible title="二级菜单 A-2">
        <Label label="菜单项 A-2-1" />
        <Label label="菜单项 A-2-2" />
      </Collapsible>
    </Collapsible>
    <Collapsible title="一级菜单 B" :collapsed="True">
      <Label label="默认折叠的内容" />
    </Collapsible>
  </VBox>
</template>

通用属性

所有 Textual-vuepy 组件均支持以下属性:

属性类型说明
idstr组件 CSS ID,可通过 #id 选择器引用
stylestrTCSS 内联样式,多条规则用分号分隔
classstrTCSS 类名,多个类名用空格分隔
border_titlestr边框标题(需组件设置了 border 样式才可见)
border_subtitlestr边框副标题
Collapsible 可折叠容器已经加载完毕