Some general helpers for Meteor Blaze including comparison, logic and numeric operators, logging, objects manipulation.
meteor add imajus:common-helpersPackage provides following global Blaze helpers:
log(...args)– Just logs all argument passed to the browser console.field(object, path)– Extract a field from object by path (dot delimeters can be used):
{{field targetObject fieldName}}
{{field user 'email.0.address'}}not(val)– Equivalent of!val.eq(...args)– Returnstrueonly if all arguments passed are equal (tested using==operator). Note: returnsfalseif only one argument is passed.is(...args)– Returnstrueonly if all arguments passed are identical (tested using===operator). Note: returnsfalseif only one argument is passed.and(...args)– Returns true-like value if all arguments passed are true-like, return false-like otherwise (for using in conditions). Strictly speaking, helper returns first false-like value found in arguments or the last argument if all are true-like:
{{#if and currentUser someState somethingElse}}
<div class="{{and someStringVariable 'replacement'}}">
{{/if}}or(...args)– Returns true-like value if any argument passed is true-like, return false-like if all arguments are false-like (for using in conditions). Strictly speaking, helper returns first true-like value found in arguments or the last argument if all are false-like:
{{#if or currentUser isEmulator}}
<div class="{{or someStringVariable 'fallback'}}">
{{/if}}sum(...args)– Sums all arguments passed using+=operator (can also be used for string concatenation, but for that better to useconcatfrom imajus:string-helpers):
<div>{{sum price fee tax}}</div>sub(...args)- Subtract arguments starting from 2nd from 1st.
<div>{{sub capacity used}}</div>positive(...args)– Returnstrueonly if all passed arguments are greater than zero, returnsfalseotherwise.
{{#if positive balance}}...{{/if}}negative(...args)– Returnstrueonly if all passed arguments are less than zero, returnsfalseotherwise.
{{#if negative balance}}...{{/if}}gt(...args, { comp })– Returnstrueonly if all passed arguments are greater thancomp, returnsfalseotherwise.
{{#if gt 9 balance comp=price}}...{{/if}}gt(...args, { comp })– Returnstrueonly if all passed arguments are greater than or equal tocomp, returnsfalseotherwise.
{{#if gte 10 balance comp=price}}...{{/if}}lt(...args, { comp })– Returnstrueonly if all passed arguments are less thancomp, returnsfalseotherwise.
{{#if lt 100 price comp=balance}}...{{/if}}lte(...args, { comp })– Returnstrueonly if all passed arguments are less than or equal tocomp, returnsfalseotherwise.
{{#if lte 99 price comp=balance}}...{{/if}}nullOrUndefined(...args)– Returnstrueonly if all passed arguments arenullorundefined.when(...)- Analogue of ternary operator. Has two forms:when(cond, yes, no)- Returnsyesvalue whencondis true-like, returnsnovalue otherwise.when(...conds, { yes, no })- Returnsyesvalue when allcondsare true-like, returnsnovalue if any ofcondsfalse-like. This form allows not to passyesand/ornoat all, in which caseundefinedwill be used for missing value.
<div class="{{when loaded 'loaded' 'loading'}}">
<div class="{{when loaded 'loaded'}}">
<div class="{{when loaded no='loading'}}">
<div class="{{when loaded ready subsReady yes='ready' no='loading'}}">
<div class="{{when loaded ready subsReady yes='ready'}}">
<div class="{{when loaded ready subsReady no='loading'}}">chunk(array, size)– Splits array into chunks of equalsizeand return array of arrays. The latestchunkmay have less elements than previous depending on the length of original array.
{{#each group in chunk items 3}}
<div class="row">
{{#each item in group}}
<div class="col">...</div>
{{/each}}
</div>
{{/each}}