Skip to content

Instantly share code, notes, and snippets.

@jgwhite
jgwhite / controllers.application.js
Last active October 17, 2018 14:16
Confirms and Prompts with Tasks
import Ember from 'ember';
import { task, waitForProperty, timeout } from 'ember-concurrency';
const promptTask = task({
answer: undefined,
* perform() {
yield waitForProperty(this, 'answer', a => a !== undefined);
return this.answer;
}
@jgwhite
jgwhite / components.x-editor.js
Created September 11, 2018 04:35
New Twiddle
import Ember from 'ember';
export default Ember.Component.extend({
tagName: '',
willDestroyElement() {
this.get('model').rollbackAttributes();
}
});
@jgwhite
jgwhite / SketchSystems.spec
Created June 1, 2018 13:03
IdP Config Flow
IdP Config Flow
SSO Not Installed
Click begin setup -> SSO Not Configured
SSO Not Configured
Submit valid configuration -> SSO Disabled
Submit valid configuration with enabled true -> SSO Enabled
SSO Enabled
Submit enabled false -> SSO Disabled
SSO Disabled
Submit enabled true -> SSO Enabled
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
showForm: false
});
@jgwhite
jgwhite / mirage-scenarios-default.js
Last active February 28, 2018 18:38
Persisting Mirage’s DB in development
// mirage/scenarios/default.js
export default function(server) {
function store() {
let data = server.db.dump();
let json = JSON.stringify(data);
localStorage.mirage = json;
}
import { focus, triggerKeyEvent } from '@ember/test-helpers';
import findButton from './find-button';
import { calculateTabsTo } from './tabbability';
const KEY_RETURN = 13;
export default async function keyboardClick(text) {
let element = findButton(text);
if (!element) {
import Ember from 'ember';
export default Ember.Controller.extend({
items: ['one', 'two', 'three', 'four'],
reorderItems(newOrder) {
this.set('items', newOrder);
},
up(item) {
@jgwhite
jgwhite / helpers.add.js
Last active November 10, 2017 07:45
mut problem
import Ember from 'ember';
export function add(numbers) {
return numbers.reduce((sum, n) => sum + n);
}
export default Ember.Helper.helper(add);
@jgwhite
jgwhite / components.x-bar.js
Last active November 6, 2017 11:50
didRender
import Ember from 'ember';
export default Ember.Component.extend({
changeSomething() {
this.set('data', Math.random());
}
});

TL;DR Ember added contains before it was slated for ES7. When the contains (now includes) spec did arrive, it was a bit of a problem that Ember was “squatting” the method name with a slightly different implementation. Fortunately, Ember had been designed to “eventually align” with javascript as it becomes more capable. Thus, this was the moment prototype extensions were retired as a default.