Skip to content

craigbilner/ember-comp-order-codemod

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ember comp order codemod

To conform to this linting rule, this codemod sorts an Ember component's properties to an agreed standard.

Changes

willChange

import Ember, { Component, computed, inject } from 'ember';
import mixin from 'someMixin';
import layout from 'layout';
import ENUM from 'enum';

const { service } = inject;
const { alias } = computed;

export default Component.extend(mixin, {
  role: 'sloth',

  i18n: service(),

  classNames: ['foo', 'bar'],

  classNameBindings: ['foo.bar', 'bar.baz'],

  animationDelay: Ember.testing ? 10 : 20,

  onVehicleChange: observer('vehicle', function() {
    // observer logic
  }),

  layout,

  levelOfHappiness: computed('attitude', 'health', function() {
    return this.get('attitude') * this.get('health') * Math.random();
  }),

  user: Ember.inject.service('user'),

  init() {
    // custom init logic
  },

  onTestChange: Ember.observer('test', function() {
    // observer logic
  }),

  actions: {
    sneakyAction() {
      return this._secretMethod();
    }
  },

  didInsertElement() {
    // custom didInsertElement logic
  },

  foo: ENUM.BAR,

  baz: Ember.computed.alias('foo.bar'),

  _secretMethod() {
    // custom secret method logic
  },

  vehicle: alias('car'),
});

will become

import Ember, { Component, computed, inject } from 'ember';
import mixin from 'someMixin';
import layout from 'layout';
import ENUM from 'enum';

const { service } = inject;
const { alias } = computed;

export default Component.extend(mixin, {
  i18n: service(),

  user: Ember.inject.service('user'),

  animationDelay: Ember.testing ? 10 : 20,

  classNameBindings: ['foo.bar', 'bar.baz'],

  classNames: ['foo', 'bar'],

  foo: ENUM.BAR,

  layout,

  role: 'sloth',

  baz: Ember.computed.alias('foo.bar'),

  vehicle: alias('car'),

  levelOfHappiness: computed('attitude', 'health', function() {
    return this.get('attitude') * this.get('health') * Math.random();
  }),

  onTestChange: Ember.observer('test', function() {
    // observer logic
  }),

  onVehicleChange: observer('vehicle', function() {
    // observer logic
  }),

  didInsertElement() {
    // custom didInsertElement logic
  },

  init() {
    // custom init logic
  },

  actions: {
    sneakyAction() {
      return this._secretMethod();
    }
  },

  _secretMethod() {
    // custom secret method logic
  },
});

wontChange

named configs

import Ember from 'ember';
import componentConfig from 'config';

export default Ember.Component.extend(componentConfig);

About

Sort an Ember component's properties to an agreed standard

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published