• Stars
    star
    276
  • Rank 146,102 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 11 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ComputedProperty Macros for Ember

Ember-CPM

Build Status Ember Observer Score Code Climate Dependency Status devDependency Status Ember Version

Computed Property Macros for Ember

Requirements

Version 2.0+ will only work with Ember 2.0+ Version 3.0+ is only tested in the last 2 LTS.

Installation

Just run ember install ember-cpm

Usage

Just import individual macros from ember-cpm/macros/* or all macros from ember-cpm.

// Import only one macros
import ifNull from "ember-cpm/macros/if-null";
// or alternatively import all the namespace
import EmberCPM from "ember-cpm";

Contributing

To generate a new computed property macros with ember-cli

  • Run ember g macro <dasherized-macro-name>. This will generate a few files
    • ./addon/macros/dasherized-macro-name.js (the macro)
    • ./addon/tests/dummy/unit/macro/dasherized-macro-name-test.js (a test)*
    • and modify ./addon/ember-cpm.js
// import the macro
import camelizedMacroName from './macros/dasherized-macro-name.js'
...

var Macros = {
  ...
  // allows use via EmberCPM.Macros.camelizedMacroName
  camelizedMacroName: camelizedMacroName,
  ...
};

ember d macro <dasherized-macro-name> will do the reverse of these changes

Provided Macros

  • among -- returns true if the original value is among the given literals (testing using ===)
  • encodeURIComponent -- calls encodeURIComponent on the original value
  • encodeURI -- calls encodeURI on the original value
  • firstPresent -- returns the first property with a value, as determined by Ember.isPresent
  • fmt -- pass the original values into a format-string
  • htmlEscape -- escapes the original value with Handlebars.Utils.escapeExpression and wraps the result in a Handlebars.SafeString (since it's now safe)
  • ifNull -- fall back on a default value
  • promise -- wraps the original value in an already-resolved promise
  • safeString -- wraps the original value in a Handlebars.SafeString
  • join -- joins the supplied values together with a provided sepatator
  • quotient -- divides one numeric property or literal by another
  • difference -- subtracts one numeric property or literal from another
  • product -- multiplies numeric properties and literals together
  • sum -- sums numeric properties and literals together
  • conditional -- returns values based on a boolean property (good replacement for ternary operator)
  • computedPromise -- Updates computed property when supplied callback (which must return a promise) is resolved

Composable Computed Property Macros

Unlike Ember's computed property macros, the macros in this addon are composable. That means you define macros inside other macros without defining them in a separate key.

import Ember from 'ember';
import EmberCPM from 'ember-cpm';

const { Macros: { sum, difference, product } } = EmberCPM;

export default Ember.Component.extend({
  num1: 45,
  num2: 3.5,
  num3: 13.4,
  num4: -2,

  total: sum(
    sum('num1', 'num2', 'num3'),
    difference('num3', 'num2'),
    product(difference('num2', 'num1'), 'num4')
  )
});

More Repositories

1

ember-power-select

The extensible select component built for ember.
JavaScript
541
star
2

svelte-intl-precompile

I18n library for Svelte.js that analyzes your keys at build time for max performance and minimal footprint
JavaScript
258
star
3

ember-power-calendar

Powerful and customizable calendar component for Ember
JavaScript
207
star
4

ember-native-dom-helpers

Test helpers for your integration tests that fire native events
JavaScript
186
star
5

ember-basic-dropdown

The basic dropdown you ember app needs
JavaScript
148
star
6

svelte-media

Svelte.js util to easily observe media queries as a reactive store
TypeScript
58
star
7

ember-cli-yuidoc

EmberCLI addon for generate documentation from YUIDoc coments
JavaScript
55
star
8

ember-power-datepicker

An extensible datepicker for Ember
JavaScript
50
star
9

ember-power-select-with-create

Ember-power-select addon with an `Add ${term}` option in the first position
JavaScript
50
star
10

ember-ast-helpers

Utility belt to level-up your Ember AST transforms
TypeScript
40
star
11

ember-text-measurer

Simple Ember Service to measure the width of a string in a performant way
JavaScript
38
star
12

ember-power-select-typeahead

Typeahead component built on top of ember-power-select
JavaScript
36
star
13

storyteller

Storyteller application built with Exilir and Dynamo. Is a concurrent storyteller.
Elixir
34
star
14

rubytapas_downloader

Simple ruby script that downloads the latest rubytapas episodes.
Ruby
26
star
15

mobile-patterns

Showcase of mobile UI patterns implemented in Ember.js
JavaScript
21
star
16

ember-hash-helper-polyfill

Polyfill for the new Ember hash helper
JavaScript
15
star
17

precompile-intl-runtime

Runtime helpers to be used in translations precompiled by babel-plugin-precompile-intl
TypeScript
10
star
18

ember-power-select-with-fallback

Ember Power Select that fallbacks to a native select when certain criteria are met
JavaScript
10
star
19

rollup-plugin-precompile-intl

Rollup plugin to precompile translations in the ICU message syntax
JavaScript
9
star
20

ember-power-calendar-moment

Internal utils of Ember Power Calendar built on top of Moment.js
JavaScript
9
star
21

ember-power-select-blockless

Blockless version of ember-power-select
JavaScript
8
star
22

git-repo-version

Calculates the version of a repo based on the package.json and the current SHA
JavaScript
8
star
23

ember-disable-proxy-controllers

Disables ObjectController/ArrayController for autogenerated controllers
JavaScript
7
star
24

babel-plugin-precompile-intl

Compile translations in ICU message format to invocable functions at build time
TypeScript
7
star
25

ember-power-select-places

Ember Power Select โค๏ธGoogle Places
JavaScript
6
star
26

ember-power-select-sortable

Ember-power-select <3 Ember-sortable
JavaScript
6
star
27

DahuaDoorbell2MQTT

Node.js script that connects to a Dahua Video Doorbell and broadcasts to MQTT events fired by it.
JavaScript
6
star
28

ember-power-select-collection

Ember-power-select component that {{vertical-collection}} for performance
JavaScript
5
star
29

ember-basic-dropdown-hover

Variation of ember-basic-dropdown that opens on hover
JavaScript
5
star
30

ember-k-codemod

Removes all usages of Ember.K
JavaScript
5
star
31

ember-assign-helper

Simple {{assign}} helper for Ember
JavaScript
5
star
32

ember-code-example-component

Small component to show code snippets (hbs + js + css + evaluated-result)
JavaScript
5
star
33

homeassistant-poolstation

HomeAssistant custom component for integrating the Poolstation platform.
Python
4
star
34

ember-power-calendar-luxon

Internal utils of Ember Power Calendar built on top of Luxon
JavaScript
3
star
35

marvel-api-ember-sample-app

Sample Ember.js app using marvel API
JavaScript
3
star
36

vite-plugin-svelte-inline-components

Allows you to define your components inline in tests using tagged templates
JavaScript
3
star
37

ember-simple-i18n

Simple i18n library for ember.js apps
JavaScript
3
star
38

cibernox.github.io

JavaScript
3
star
39

space-crops

JavaScript
2
star
40

home-assistant-addons

Repository with unofficial addons for home assistant
Shell
2
star
41

spanish_ccc_validator

Simple validator for spanish bank account numbers
Ruby
2
star
42

sample-app-svelte-intl-precompile

Sample app that uses svelte-intl-precompile, to use as a doc
Svelte
2
star
43

web_experiments

Web experiments using pure HTML5 and CSS3 and Javascript
JavaScript
2
star
44

svelte-intl-precompile-docs

Documentation page for Svelte-intl-precompile
JavaScript
2
star
45

sparkles-ember-basic-dropdown

Just testing sparkles-component
JavaScript
2
star
46

ember-proxy-controllers

Ember.ObjectController and Ember.ArrayController extracted as an standalone addon
JavaScript
2
star
47

ember-cli-google-libphonenumber-shim

Ember-cli addon that imports google-libphonenumber and provides shims for it
JavaScript
2
star
48

ember-i18n-errors

Extension to ember-i18n for translating error messages within the route hierarchy
JavaScript
2
star
49

sveltekit-bug-with-plugin

Repro
Svelte
1
star
50

PyPoolstation

Python library to interact the the Poolstation platform
Python
1
star
51

pinkmine

A redmine-inspired project management web app
Ruby
1
star
52

angular-football-experiment

Sample app for learn angular.
CoffeeScript
1
star
53

bencher

Simplest benchmarking library for ruby
Ruby
1
star
54

my-mu-app

Sample ember app with module unification layour
JavaScript
1
star
55

my-mu-addon

First addon ever created with the addon MU blueprint
JavaScript
1
star