API 参考

这里列出文档和示例使用的稳定接口。

核心类型

类型说明
FieldSchema字段名、标签、类型、取值、默认操作符和默认值。
FilterRule单个条件,包含 fieldoperatorvalue 和可选 not
FilterGroup包含 combinator、可选 not 和嵌套条件的分组。
FilterGroupIC内联组合子分组,组合子位于子节点之间。
FilterFilterGroup 的别名。
FilterICFilterGroupIC 的别名。
ValidationResultschema 校验后的 { valid, errors }
MutationAdapter将变更分发到标准或 IC 树函数的适配器。

核心工具

工具说明
createFilter创建空过滤器分组。
createRule / createGroup用生成或指定的 id 创建规则或分组。
addRule, removeRule, updateRule, moveRule, cloneRule不可变地变更规则。
addGroup, removeGroup, updateGroup, cloneGroup不可变地变更嵌套分组。
negateRule, negateGroup切换规则或分组的 not
validate检查字段、操作符、值、组合器和分组。
toJSON, fromJSON为存储和 URL 序列化过滤器。
traverse, walk, findById, findParent, getPath, flattenRules树遍历工具。
mapTree, updateById不可变树映射和更新。
isFilterGroup, isFilterRule, isLocked类型守卫和锁定检查。
generateId默认 ID 生成器。

IC 树工具

工具说明
addRuleIC, removeRuleIC, updateRuleIC, moveRuleIC, cloneRuleICIC 树规则变更。
addGroupIC, removeGroupIC, updateGroupIC, cloneGroupICIC 树分组变更。
setCombinatorIC设置两个子节点之间的组合子。
convertToIC, convertFromIC在标准和 IC 树类型之间转换。
isFilterGroupICFilterGroupIC 类型守卫。
icMutationAdapterIC 树变更适配器。
standardMutationAdapter标准树变更适配器。

DSL 与 SQL 工具

工具说明
formatDSLFilter 转换为文本 DSL。
parseDSL把文本解析为 Filter(出错时抛出异常)。
tryParseDSL把文本解析为 Filter,返回 { filter, errors } 而非抛出。
tokenize / parse分词和解析 DSL 为 AST。
filterToAst / astToFilterFilter 和 AST 之间转换。
getDslCompletions为 DSL 编辑器构建补全项。

查询导出器

导出子路径输出
toSQL@x-filter/core/sql{ sql, params }
toJsonLogic@x-filter/core/jsonlogicJsonLogic 对象
toMongoQuery@x-filter/core/mongodbMongoDB 查询对象
toElasticQuery@x-filter/core/elasticsearchElasticsearch 查询对象

toJsonLogictoMongoQuerytoElasticQuery 也从主入口导出。

React hooks

Hook说明
useFilterBuilder受控或非受控的过滤器变更工具。
useFilterBuilderOrchestrator一个 hook 统一管理构建器状态、DSL、校验和历史。
useFilterViewModel为适配器渲染构建可访问 view model。
useFilterValidation根据 schema 校验过滤器,返回按节点 id 分组的错误。
useFilterUrlSync通过 URL search params 编码和解码过滤器。
useFilterHistory过滤器状态的撤销/重做历史。
useFilterPresets保存、加载和删除过滤器预设。
useFilterKeyboardNavARIA 树键盘导航,roving tabindex。
useDslEditor管理 DSL 草稿文本、提交和解析错误。
useDslEditorInteractionDSL token 编辑器的交互辅助(补全、光标)。
useReorderContract嵌套分组的共享移动和放置规则。
useIsMobile响应式断点 hook(默认 640px,SSR 安全)。

React 工具函数

导出说明
enUS, zhCN, jaJP, locales内置语言包。
parseFilterInput解析 JSON 或 DSL 字符串为 Filter
findSchemaField, findOperator, getFieldOperatorsSchema 查找辅助。
resolveLabels, resolveRuleRender, resolveGroupRender渲染决策辅助。
getDefaultRuleUpdatesForField字段变更时获取默认操作符/值更新。
dslToTokenChips, foldPendingIntoDslDSL token chip 工具。
asArrayValue, asPairValue, asStringValue, parseNumberInput, updatePairValue值类型转换辅助。

适配器组件

AntdFilterBuilderShadcnFilterBuilder 使用相同属性契约:

type FilterBuilderProps = {
  schema: FieldSchema[];
  value?: Filter;
  defaultValue?: Filter;
  onChange?: (filter: Filter) => void;
  errors?: Record<string, ValidationError[]>;
  dsl?: boolean;
  dnd?: boolean;
  mode?: 'standard' | 'ic';
  labels?: FilterBuilderLabels;
  readOnly?: boolean;
  slots?: FilterBuilderSlots;
  classNames?: FilterBuilderClassNames;
};

原子组件

两个适配器都导出可组合的原子组件,用于自定义布局:

AntdShadcn用途
AntdFilterGroupShadcnFilterGroup渲染分组块
AntdFilterRuleShadcnFilterRule渲染规则行
AntdFieldSelectorShadcnFieldSelector字段下拉
AntdOperatorSelectorShadcnOperatorSelector操作符下拉
AntdCombinatorSelectorShadcnCombinatorSelector组合子(AND/OR)选择器
AntdValueEditorShadcnValueEditor值输入编辑器
AntdNotToggleShadcnNotToggleNOT 切换
AntdDslEditorShadcnDslEditorDSL 文本编辑器
ShadcnDslTokenInputDSL token chip 输入(仅 shadcn)
AntdCompletionMenuShadcnCompletionMenuDSL 自动补全菜单
AntdImportFilterDialogShadcnImportFilterDialog导入 JSON/DSL 对话框
ShadcnPresetBar预设保存/加载栏(仅 shadcn)
ShadcnInlineCombinatorIC 模式内联组合子(仅 shadcn)
SortableFilterContextSortableFilterContextDnD 上下文提供者
SortableFilterItemSortableFilterItemDnD 可排序项包装