GithubHelp home page GithubHelp logo

ctjhoa / ember-angle-bracket-invocation-polyfill Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ember-polyfills/ember-angle-bracket-invocation-polyfill

0.0 2.0 0.0 415 KB

License: MIT License

JavaScript 96.96% HTML 3.04%

ember-angle-bracket-invocation-polyfill's Introduction

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 innert 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 ๐Ÿ˜˜

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.

ember-angle-bracket-invocation-polyfill's People

Contributors

bobisjan avatar ddoria921 avatar ef4 avatar ember-tomster avatar jacojoubert avatar jelhan avatar jherdman avatar lennyburdette avatar rtablada avatar rwjblue avatar simonihmig avatar thousand avatar toranb avatar turbo87 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.