Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jmurphyau/ember-truth-helpers
Ember HTMLBars Helpers for {{if}} & {{unless}}: not, and, or, eq & is-array
https://github.com/jmurphyau/ember-truth-helpers
Last synced: 3 months ago
JSON representation
Ember HTMLBars Helpers for {{if}} & {{unless}}: not, and, or, eq & is-array
- Host: GitHub
- URL: https://github.com/jmurphyau/ember-truth-helpers
- Owner: jmurphyau
- License: mit
- Created: 2015-01-08T22:55:43.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-08-30T17:31:14.000Z (6 months ago)
- Last Synced: 2024-09-23T11:03:16.963Z (5 months ago)
- Language: JavaScript
- Homepage:
- Size: 1.23 MB
- Stars: 706
- Watchers: 13
- Forks: 95
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-ember - ember-truth-helpers - Ember.js HTMLBars Helpers for `{{if}}` & `{{unless}}`: not, and, or, eq & is-array. (Packages / Helpers)
README
# Ember Truth Helpers [](https://github.com/jmurphyau/ember-truth-helpers/actions/workflows/ci.yml)
HTMLBars template helpers for additional truth logic in `if` and `unless` statements.
## Compatibility
- Ember.js v3.28 or above
- Embroider or ember-auto-import >= 2 (this is [v2 addon](https://emberjs.github.io/rfcs/0507-embroider-v2-package-format.html))## Installation
```
ember install ember-truth-helpers
```## Usage
Helper | JavaScript | HTMLBars | Import | Variable argument count allowed|
---------|-------------------------------------------------|-------------------------|-------------------------------------------------- |--------------------------------|
eq | `if (a === b)` | `{{if (eq a b)}}` | import { eq } from 'ember-truth-helpers'; |No |
not-eq | `if (a !== b)` | `{{if (not-eq a b)}}` | import { notEq } from 'ember-truth-helpers'; |No |
not | `if (!a)` | `{{if (not a)}}` | import { not } from 'ember-truth-helpers'; |Yes |
and | `if (a && b)` | `{{if (and a b)}}` | import { and } from 'ember-truth-helpers'; |Yes |
or |if (a || b)
| `{{if (or a b)}}` | import { or } from 'ember-truth-helpers'; |Yes |
xor |if (a !== b)
| `{{if (xor a b)}}` | import { xor } from 'ember-truth-helpers'; |No |
gt | `if (a > b)` | `{{if (gt a b)}}` | import { gt } from 'ember-truth-helpers'; |No |
gte | `if (a >= b)` | `{{if (gte a b)}}` | import { gte } from 'ember-truth-helpers'; |No |
lt | `if (a < b)` | `{{if (lt a b)}}` | import { lt } from 'ember-truth-helpers'; |No |
lte | `if (a <= b)` | `{{if (lte a b)}}` | import { eq } from 'ember-truth-helpers'; |No |
is-array | `if (Ember.isArray(a))` | `{{if (is-array a)}}` | import { isArray } from 'ember-truth-helpers'; |Yes |
is-empty | `if (Ember.isEmpty(a))` | `{{if (is-empty a)}}` | import { isEmpty } from 'ember-truth-helpers'; |No |
is-equal | `if (Ember.isEqual(a, b))` | `{{if (is-equal a b)}}` | import { isEqual } from 'ember-truth-helpers'; |No |## API
### is-equal
`is-equal` uses [`Ember.isEqual`](https://api.emberjs.com/ember/3.14/functions/@ember%2Futils/isEqual) helper to evaluate equality of two values.
`eq` should be sufficient for most applications. `is-equal` is necessary when trying to compare a complex object to
a primitive value.## Other Helpers
* [ember-get-helper](https://github.com/jmurphyau/ember-get-helper)
* [ember-composable-helpers](https://github.com/DockYard/ember-composable-helpers)## Usage with Glint
`ember-truth-helpers` is a glint enabled addon. Add this to your
`types/global.d.ts` file:```ts
import '@glint/environment-ember-loose';import type EmberTruthRegistry from 'ember-truth-helpers/template-registry';
declare module '@glint/environment-ember-loose/registry' {
export default interface Registry extends EmberTruthRegistry, /* other addon registries */ {
// local entries
}
}
```For the entire guide, please refer to [Using
Addons](https://typed-ember.gitbook.io/glint/environments/ember/using-addons#using-glint-enabled-addons)
section on the glint handbook.Types are made available through package.json `exports` field. In order for TS
to recognize this (beginning from TS 4.7), you must set
[`moduleResolution`](https://www.typescriptlang.org/tsconfig#moduleResolution)
to `node16` or `nodenext`.## Usage in Single File Components
For usage in `gts` or `gjs` files, all helpers are exported from the index:
```gts
import { or } from 'ember-truth-helpers';{{#if (or @admin @user)}}
Admin Controls are going here
{{/if}}```
## Contributing
See the [Contributing](CONTRIBUTING.md) guide for details.
## License
This project is licensed under the [MIT License](LICENSE.md).