1.0.1 • Published 5 months ago
@aimidy/render-rules v1.0.1
render-rules
A simple library for defining and applying rendering rules in your project.
Features
- Define custom rendering rules
- Apply rules to data or UI components
- Easy integration
Installation
npm install render-rulesUsage
Basic Usage
import { evaluateCondition } from '@aimidy/render-rules';
const rule = { field: 'age', operator: 'equals', value: 30 };
const row = { age: 30 };
console.log(evaluateCondition(rule, row)); // trueSupported Operators
equalsnotEqualsgreaterThanlessThancontainsstartsWithendsWithinnotIn
Nested AND/OR Rules
import { evaluateCondition } from '@aimidy/render-rules';
const rule = {
all: [
{ field: 'age', operator: 'greaterThan', value: 18 },
{ field: 'status', operator: 'equals', value: 'active' },
],
};
const row = { age: 25, status: 'active' };
console.log(evaluateCondition(rule, row)); // trueconst rule = {
any: [
{ field: 'role', operator: 'equals', value: 'admin' },
{
all: [
{ field: 'age', operator: 'greaterThan', value: 18 },
{ field: 'status', operator: 'equals', value: 'active' },
],
},
],
};
const row = { age: 25, status: 'active', role: 'user' };
console.log(evaluateCondition(rule, row)); // trueArray Data Evaluation
const rule = { field: 'age', operator: 'equals', value: 30 };
const rows = [{ age: 20 }, { age: 30 }];
console.log(evaluateCondition(rule, rows)); // trueError Handling
const rule = { field: 'age', operator: 'unknown', value: 30 };
const row = { age: 30 };
try {
evaluateCondition(rule, row);
} catch (e) {
console.error(e); // Unknown operator: unknown
}Negate Rule Result (not property)
You can use the not property to invert the result of a rule or condition.
import { evaluateCondition } from '@aimidy/render-rules';
// Negate a single condition
const rule = { field: 'age', operator: 'equals', value: 30, not: true };
const row = { age: 30 };
console.log(evaluateCondition(rule, row)); // false
// Negate a group
const groupRule = {
all: [
{ field: 'age', operator: 'greaterThan', value: 18 },
{ field: 'status', operator: 'equals', value: 'active' },
],
not: true,
};
const groupRow = { age: 25, status: 'active' };
console.log(evaluateCondition(groupRule, groupRow)); // falseLicense
MIT