@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
50 lines • 2.33 kB
text/typescript
//#region src/libs/collection/custom-fields/conditions/index.d.ts
/**
* Field condition config and evaluator.
*
* This module must stay dependency free. The admin SPA bundles it directly
* via the `@field-conditions` alias so the admin and the backend share the
* same deterministic evaluation logic.
*/
declare const fieldConditionOperators: readonly ["equals", "notEquals", "isEmpty", "isNotEmpty", "contains", "notContains"];
type FieldConditionOperator = (typeof fieldConditionOperators)[number];
declare const fieldConditionTranslationScopes: readonly ["same", "default", "any"];
type FieldConditionTranslationScope = (typeof fieldConditionTranslationScopes)[number];
type FieldConditionRuleValue = string | number | boolean | null;
type FieldConditionRule = {
field: string;
operator: FieldConditionOperator;
value?: FieldConditionRuleValue;
};
type FieldConditionAction = "show" | "hide";
type FieldConditionConfig = {
action?: FieldConditionAction;
translationScope?: FieldConditionTranslationScope; /** Outer array is OR'd, inner rule arrays are AND'd. */
groups: FieldConditionRule[][];
};
type FieldConditionTargetResolution = {
resolved: true;
value: unknown;
} | {
resolved: true;
match: "any";
values: unknown[];
} | {
resolved: false;
};
type FieldConditionTargetResolver = (fieldKey: string) => FieldConditionTargetResolution;
/**
* Evaluates a single condition rule against a resolved target value.
*/
declare const evaluateConditionRule: (rule: FieldConditionRule, value: unknown) => boolean;
/**
* Evaluates a field condition and returns whether the field is visible.
*
* - Groups are OR'd, rules within a group are AND'd.
* - Rules that reference an unresolvable target fail their group.
* - Conditions without any non-empty rule group leave the field visible.
*/
declare const evaluateFieldCondition: (condition: FieldConditionConfig | undefined, resolveTarget: FieldConditionTargetResolver) => boolean;
//#endregion
export { FieldConditionAction, FieldConditionConfig, FieldConditionOperator, FieldConditionRule, FieldConditionRuleValue, FieldConditionTargetResolution, FieldConditionTargetResolver, FieldConditionTranslationScope, evaluateConditionRule, evaluateFieldCondition, fieldConditionOperators, fieldConditionTranslationScopes };
//# sourceMappingURL=index.d.mts.map