Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

ember-angle-bracket-invocation-polyfill

rwjblue38.5kMIT3.0.2

The default blueprint for ember-cli addons.

ember-addon

readme

ember-angle-bracket-invocation-polyfill

This addon provides a polyfill for angle bracket invocation syntax as described in RFC 311 and RFC 457. It's the same components you know and love, no longer surrounded by mustaches. \o/

Build Status

Installation

ember install ember-angle-bracket-invocation-polyfill

You will additionally need to ensure ember-cli-htmlbars-inline-precompile is at least version 1.0.3.

Usage

The best usage guide are the RFCs themselves (emberjs/rfcs#311 emberjs/rfcs#457), but here are a few examples of "before"/"after" to whet your appetite:

Before:

{{site-header user=this.user class=(if this.user.isAdmin "admin")}}

{{#super-select selected=this.user.country as |s|}}
  {{#each this.availableCountries as |country|}}
    {{#s.option value=country}}{{country.name}}{{/s.option}}
  {{/each}}
{{/super-select}}

After:

<SiteHeader @user={{this.user}} class={{if this.user.isAdmin "admin"}} />

<SuperSelect @selected={{this.user.country}} as |s|>
  {{#each this.availableCountries as |country|}}
    <s.option @value={{country}}>{{country.name}}</s.option>
  {{/each}}
</SuperSelect>

Supported Features

  • Supports invoking components via angle brackets using TitleCase
<FooBar></FooBar>
  • Supports invoking components via angle brackets with self-closing syntax
<FooBar />
  • Supports invoking components via angle brackets using paths
<some.thing></some.thing>
  • Supports invoking components via angle brackets using yielded block params
{{#with (component 'foo-bar') as |Foo|}}
  <Foo></Foo>
{{/with}}
  • Supports passing arguments into invoked components with @ prefix
<FooBar @title={{whateverHere}}></FooBar>
  • Supports passing attributes to be added to the root element of the component without @ prefix
<FooBar data-test-foo-bar></FooBar>
  • Supports using has-block inside the invoked component to determine if a block was provided
<FooBar /> {{! checking `has-block` inside would be `false`}}

<FooBar></FooBar> {{! checking `has-block` inside would be `true`}}
  • Supports yielding block params from inside the invoked component
<FooBar as |qux|>{{qux}}</FooBar>
  • Supports passing ...attributes into another angle bracket invocation
<FooBar ...attributes>
  • Supports passing ...attributes into a non-component element
<div ...attributes></div>
  • Supports passing ...attributes into tagless components
  • Supports invoking single word components:
<Title />
  • Supports invoking components nested in subfolders:
<Foo::Bar />
  • Completely inert when running Ember 3.10 or higher
  • Supports Ember 2.12, 2.16, 2.18, 3.1, 3.2, 3.3, 3.4, 3.8, 3.9
  • Test all the features listed above 😘

Addons

Any addons wanting to use angle bracket components (in either addon/ or addon-test-support/) need to install ember-angle-bracket-invocation-polyfill as a dependency.

Limitations

There are no known limitations, all features described in the RFC are polyfilled.

Contributing

Installation

  • git clone <repository-url>
  • cd ember-angle-bracket-invocation-polyfill
  • yarn install

Linting

  • yarn lint:js
  • yarn lint:js --fix

Running tests

  • ember test – Runs the test suite on the current Ember version
  • ember test --server – Runs the test suite in "watch mode"
  • ember try:each – Runs the test suite against multiple Ember versions

Running the dummy application

For more information on using ember-cli, visit https://ember-cli.com/.

License

This project is licensed under the MIT License.

changelog

v3.0.2 (2022-05-18)

:bug: Bug Fix

Committers: 1

v3.0.1 (2021-04-23)

:bug: Bug Fix

  • #125 Fix monkey patching in Ember 2.x polyfill code paths (@mmun)

Committers: 1

v3.0.0 (2020-10-09)

:boom: Breaking Change

  • #124 Drop Node < 10 support; Upgrade ember-cli-babel to v7 (@nlfurniss)

Committers: 1

v2.1.0 (2020-06-05)

:rocket: Enhancement

:memo: Documentation

  • #90 Update README with a section on usage within addons (@Techn1x)

Committers: 4

v2.0.2 (2019-08-06)

:bug: Bug Fix

  • #82 Fix <LinkTo> usage with class attribute. (@Alonski)

:house: Internal

Committers: 2

v2.0.1 (2019-08-02)

:bug: Bug Fix

Committers: 1

v2.0.0 (2019-08-02)

:boom: Breaking Change

:rocket: Enhancement

:bug: Bug Fix

  • #77 Ensure unsupported arguments to <Input> and <LinkTo> issue warnings or errors appropriately (@simonihmig)
  • #76 Add assertion for not passing @model and @models to <LinkTo> (@simonihmig)

:house: Internal

Committers: 2

v1.3.1 (2019-05-08)

:bug: Bug Fix

  • #68 Fix error when using splattributes but no attributes were passed (@simonihmig)

Committers: 1

v1.3.0 (2019-04-08)

:rocket: Enhancement

:house: Internal

Committers: 2

v1.2.5 (2019-01-31)

:bug: Bug Fix

  • #56 Fix class merging and attribute precedence (@ef4)

Committers: 1

  • Edward Faulkner (@ef4)

v1.2.4 (2019-01-27)

:bug: Bug Fix

  • #55 Fix for max call stack size exceeded when runing many tests (@thousand)

:memo: Documentation

:house: Internal

  • #54 TravisCI: Remove deprecated sudo: false option (@Turbo87)

Committers: 2

v1.2.3 (2018-09-18)

:rocket: Enhancement

  • #42 Add CHANGELOG file based on lerna-changelog (@Turbo87)

:bug: Bug Fix

:memo: Documentation

  • #38 update confusing usage example in readme (@jelhan)

Committers: 3

v1.2.2 (2018-08-29)

:bug: Bug Fix

  • #41 Ensure that carriage return is part of whitespace calculations. (@rwjblue)

Committers: 1

v1.2.1 (2018-08-29)

:bug: Bug Fix

  • #40 Fix issue with windows line endings immediately after tag name (@rwjblue)

Committers: 1

v1.2.0 (2018-07-23)

:rocket: Enhancement

:house: Internal

  • #33 Add additional Ember versions for testing. (@rwjblue)

Committers: 1

v1.1.9 (2018-07-23)

:bug: Bug Fix

  • #32 Ensure synthetic elements do not cause errors. (@rwjblue)

Committers: 1

v1.1.8 (2018-07-23)

:bug: Bug Fix

  • #30 Fix memory leak with CURLY_COMPONENT_MANAGER (@bobisjan)

Committers: 1

v1.1.7 (2018-07-19)

:bug: Bug Fix

  • #29 Fix memory leak using custom BUILTIN_MODIFIERS object, Closes #28 (@bobisjan)

Committers: 1

v1.1.6 (2018-07-11)

:bug: Bug Fix

Committers: 1

v1.1.5 (2018-06-25)

:rocket: Enhancement

:memo: Documentation

:house: Internal

  • #16 TESTS: added block param w/ nested component + each-in example (@toranb)

Committers: 3

v1.1.3 (2018-06-06)

:bug: Bug Fix

Committers: 1

v1.1.2 (2018-06-06)

:bug: Bug Fix

Committers: 1

v1.1.1 (2018-06-06)

:bug: Bug Fix

Committers: 1

v1.1.0 (2018-06-05)

:rocket: Enhancement

  • #9 Add ...attributes support for non-component elements. (@rwjblue)

Committers: 1

v1.0.2 (2018-06-03)

:rocket: Enhancement

  • #7 Allow passing ...attributes into angle bracket invocations. (@rwjblue)

:bug: Bug Fix

  • #5 Prevent implicit this. in dynamically invoked paths. (@rwjblue)

:house: Internal

Committers: 1