ember-native-class-polyfill

    1.0.6 • Public • Published

    Build Status

    ember-native-class-polyfill

    This addon provides a polyfill for the native class behavior that was proposed in Ember RFCs #240 and #337.

    Installation

    ember install ember-native-class-polyfill
    

    Version Support

    This polyfill currently supports the latest LTS versions of Ember 3.4 and 3.5.

    If used with a more recent version of Ember in an app, it will not include the polyfill, and will warn the user. If included in an addon and used with a more recent version of Ember it will not include the polyfill and it will not warn the user, allowing addon authors to safely include the polyfill and support 3.4+.

    IMPORTANT: We only ship the latest patch version of these Ember versions, so if you have a less recent version of Ember, it will be overwritten. If for some reason you want to pin your patch version of Ember, you should also pin the patch version of this polyfill:

    {
      "dependencies": {
        "ember-source": "3.4.8",
        "ember-native-class-polyfill":"1.0.6"
      }
    }

    Usage

    With this polyfill installed, you can extend from any Ember class using native class syntax:

    import Component from '@ember/component';
     
    class ButtonComponent extends Component {}

    Init vs Constructor

    Although it was possible to use native classes before the RFCs, there were some subtle changes to behavior made to classes as part of the RFCs. Most notably, constructor code will occur before init:

    import Component from '@ember/component';
     
    class ButtonComponent extends Component {
      constructor() {
        super();
        console.log('first');
      }
     
      init() {
        super.init(...arguments);
        console.log('second');
      }
    }

    This behavior change was made in preparation for class fields, since they occur during construction. The subtleties of these methods can be confusing, and as such, it is recommended that you continue to use init instead of constructor for any initialization code in your classes.

    Class Fileds and Decorators

    Note that this polyfill does not enable the usage of class field or decorators, and does not include any decorators. Ember has not yet added first class support for these features, and support for them will need to be added in future RFCs. This polyfill, and the behaviors shipped in the native class RFCs, solidify the behavior of classes so that we can prepare for both class fields and decorators separately.

    If you would like to use these features, you can check out the ember-decorators project. The project is stable and committed to providing a stable API to build on, but cannot provide guarantees on changes to the behavior of decorators and class fields themselves.

    Contributing

    Installation

    • git clone <repository-url>
    • cd ember-native-class-polyfill
    • yarn install

    Linting

    • yarn lint:hbs
    • 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.

    Keywords

    Install

    npm i ember-native-class-polyfill

    DownloadsWeekly Downloads

    2,433

    Version

    1.0.6

    License

    MIT

    Unpacked Size

    45 MB

    Total Files

    46

    Last publish

    Collaborators

    • avatar