Skip to content

Instantly share code, notes, and snippets.

View givanse's full-sized avatar
:shipit:
ON A BOAT

Gastón Silva givanse

:shipit:
ON A BOAT
View GitHub Profile
@givanse
givanse / es6 compat table.md
Created February 23, 2017 01:25
es6 compat table

https://kangax.github.io/compat-table/es6/#chrome49

let browsers = ['ie7', 'ie8', 'ie9', 'ie10', 'ie11', 'edge12', 'edge13', 'edge14', 'konq414', 'firefox38', 'firefox43', 'firefox44', 'firefox45', 'firefox46', 'firefox47', 'firefox48', 'firefox49', 'firefox50', 'firefox51']; for (let browser of browsers) { console.log(`[data-browser='${browser}']`); document.querySelectorAll(`[data-browser='${browser}']`).forEach(function(e) { e.remove(); }) }
@givanse
givanse / controllers.application.js
Last active December 11, 2016 05:47
computed properties are marked as dirty on object change
import Ember from 'ember';
import changeGate from 'ember-computed-change-gate/change-gate';
/**
* To have computed properties that only trigger on value
* change you can use `ember-computed-change-gate`, it is
* an Ember CLI addon.
*
* https://github.com/GavinJoyce/ember-computed-change-gate
*/
@givanse
givanse / controllers.application.js
Created December 6, 2016 22:49
Working with Lists
import Ember from 'ember';
export default Ember.Controller.extend({
list: [
{name: 'r', color: 'red'},
{name: 'b', color: 'blue'},
{name: 'g', color: 'green'}
],
@givanse
givanse / controllers.application.js
Last active April 7, 2017 02:06
Unrendered computeds
import Ember from 'ember';
// Two options:
// 1. eager load in the init hook
// for the initial render, won't re-calc after that.
// 2. another computed depending on the unrendered computed
// for property updates
export default Ember.Controller.extend({
@givanse
givanse / controllers.application.js
Last active November 20, 2016 07:10
re-compute only on value change
import Ember from 'ember';
let get = Ember.get;
let defaultFilter = function(value) { return value; };
function changeGate(dependentKey, filter) {
filter = filter || defaultFilter;
let computed = Ember.computed(function handler(key) {
let lastValueKey = `__changeGate${key}LastValue`;
@givanse
givanse / components.foo-bar.js
Created October 24, 2016 22:23
Positional Parameters
import Ember from 'ember';
let FooBar = Ember.Component.extend({
});
FooBar.reopenClass({
positionalParams: ['p1', 'p2']
});
export default FooBar;
@givanse
givanse / controllers.application.js
Last active October 14, 2016 01:49
Computed properties
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
obj: {},
fi: Ember.computed('obj.fi', function() {
return this.get('obj.fi');
}),
@givanse
givanse / components.dialogue-body.js
Last active February 27, 2017 20:55
composing with ember components
import Ember from 'ember';
export default Ember.Component.extend({
classNames: ['dialogue-body']
});
@givanse
givanse / controllers.index.js
Last active August 24, 2016 23:38
Observing nested properties
import Ember from 'ember';
function buildWithAlias(item) {
// add the alias when the item is being created,
// this might also be done inside an Ember Data model
let foo = {
nephew: Ember.computed.alias('parent.child.nephew')
};
item = Object.assign(item, foo);
return Ember.Object.create(item);
@givanse
givanse / controllers.application.js
Last active March 10, 2017 05:15
@each two levels deep is not supported
import Ember from 'ember';
function emberFruit(name, price, color) {
let fruit = {
name: name,
price: price,
attrs: {color: color}
};
return Ember.Object.create(fruit);
}