Skip to content

复合选择器

@astryxdesign/core v0.7.1 · ComplexSelector

Choose a preset or set a custom date and time.

使用方法 ​

ComplexSelector 是一个弹层内容由你来画的字段。标签、触发器、弹出层、焦点归还和 changeAction 由它负责。默认插槽负责内容,参数是 value、commit、close 和 state。

commit 写入新值,并在提供了 changeAction 时执行它。动作还没结束时,触发器显示加载指示,插槽看到的是刚提交的值。在触发器上按 Arrow Down 会打开弹层。

vue
<script setup lang="ts">
import { ComplexSelector } from '@astryx-vue/core/ComplexSelector'
import { ref } from 'vue'

const value = ref('Today')
</script>

<template>
  <ComplexSelector v-model="value" label="Deadline" :trigger-label="value">
    <template #default="{ commit, close }">
      <button type="button" @click="commit('Next week'); close()">
        Next week
      </button>
    </template>
  </ComplexSelector>
</template>

弹层会一直开着,直到插槽调用 commit。树可以用 TreeList。status、isDisabled、isRequired 和 description 与其他输入框的字段属性相同。

alignment 决定弹层沿打开方向怎么对齐。startIcon 在触发器开头放一个图标。variant="ghost" 去掉边框,触发器看起来像工具栏按钮。renderTrigger 或 trigger 插槽会换掉整个字段:把参数展开到你自己的控件上。handleRef 和模板 ref 都能调用 open、close、toggle 和 isOpen。

vue
<script setup lang="ts">
import type { ComplexSelectorHandle } from '@astryx-vue/core/ComplexSelector'
import { ComplexSelector } from '@astryx-vue/core/ComplexSelector'
import { ref, shallowRef } from 'vue'

const value = ref('Today')
const selector = shallowRef<ComplexSelectorHandle | null>(null)
</script>

<template>
  <button type="button" @click="selector?.open()">
    Open
  </button>
  <ComplexSelector
    ref="selector"
    v-model="value"
    label="Deadline"
    start-icon="calendar"
    :trigger-label="value"
    variant="ghost"
  >
    <template #default="{ commit, close }">
      <button type="button" @click="commit('Next week'); close()">
        Next week
      </button>
    </template>
  </ComplexSelector>
</template>

解剖

部分说明
字段提供标签和可选辅助内容的字段外壳。
触发器显示当前值或占位,并打开弹层的控件。
图标渲染的起始图标可选的前导语义图标或图标组件,通过 Icon 绘制。
使用方渲染的起始内容可选的任意插槽内容,直接画在触发器开头。
指示图标尾部箭头,随弹层开合转动。
弹层打开时画出并显示、关闭时隐藏的对话框表面。

示例 ​

截止日期

Choose a preset or set a custom date and time.

Today、Tomorrow 或 Next week,也可以自定义日期和时间。Apply 提交并关闭弹层。

树搜索

Search and browse nested folders.

在 Teams 和 Workspace 里搜索文件夹。选中文件夹后弹层关闭。