Skip to content

feat(spec): 允许对象默认列表视图使用 dropdown 快捷筛选(userFilters) #2679

Description

@baozhoutao

问题

Airtable 风格的快捷筛选胶囊(userFilters,element: 'dropdown')目前只能用在页面列表(InterfaceListPage,"filters" 模式)。对象的默认列表视图("views" 模式)被护栏禁止携带 userFilters:

  • packages/spec/src/ui/view.zod.tsObjectListViewSchema = ListViewSchema.omit({ userFilters: true }),解析时静默剥离;
  • packages/lint/src/validate-list-view-mode.tsos validate 预解析阶段整字段报错;
  • (objectui 侧)ObjectView.renderListView 运行时强制 userFilters: undefined

ADR-0047 原始设计其实把 "data 模式自动派生快捷筛选" 写进了意图,phase-4 的一刀切抑制属于过度收敛。用户需要在对象默认列表上直接配置 Status / health 这类下拉胶囊。

方案(ADR-0047 修订)

在对象列表视图上放开 element: 'dropdown'(及历史遗留 toggle),但保留 element: 'tabs' 为页面专属——对象视图的 ViewTabBar(已保存视图切换)已占据 tab 栏角色,tabs 会造成双 tab 栏冲突;需要 tab 预设时用 listViews

  • 新增 ObjectUserFiltersSchema(element 限 dropdown/toggle;去掉 tabs/showAllRecords)。
  • ObjectListViewSchema 改为 ListViewSchema.omit({ userFilters: true }).extend({ userFilters: ObjectUserFiltersSchema.optional() })
  • validate-list-view-mode:quickFilters 仍全禁;userFilters 仅在 element: 'tabs' / 携带 tabs 时报错,hint 指向 "用 listViews 或移到页面列表"。
  • 更新 object-list-view.test.tsvalidate-list-view-mode.test.tsobject.zod.ts 注释、ADR-0047 修订说明。
  • app-showcase:在 showcase_project 默认列表加 dropdown userFilters 示例。

配套 objectui 改动(放行 app-shell 运行时抑制)见 objectstack-ai/objectui 配套 issue/PR。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions