Skip to content

Instantly share code, notes, and snippets.

@tim-evans
tim-evans / controllers.application.js
Created August 20, 2015 15:00
ambiguous-helper-resolution
import Ember from 'ember';
export default Ember.Controller.extend({
title: 'Ember Twiddle'
});
@tim-evans
tim-evans / controllers.application.js
Created August 5, 2015 16:21
Helper name collisions
import Ember from 'ember';
export default Ember.Controller.extend({
title: 'Ember Twiddle',
});
@tim-evans
tim-evans / helpers.title.js
Last active August 29, 2015 14:26
ember-document-title sandbox
import Ember from 'ember';
const get = Ember.get;
const { guidFor } = Ember;
function updateTitle(tokens) {
document.title = tokens.toString();
}
export default Ember.Helper.extend({
@tim-evans
tim-evans / simple-format.js
Created April 16, 2015 14:46
Simple format helper
import Ember from "ember";
const AUTO_EMAIL_RE = /([\w.!#\$%+-]+@[\w-]+(?:\.[\w-]+)+)/;
const AUTO_LINK_CRE = [/<[^>]+$/, /^[^>]*>/];
const AUTO_LINK_RE = /(?:((?:ed2k|ftp|http|https|irc|mailto|news|gopher|nntp|telnet|webcal|xmpp|callto|feed|svn|urn|aim|rsync|tag|ssh|sftp|rtsp|afs|file):)\/\/|(www\.))([^\s<]+)/;
var autoLink = function (text, context) {
var buffer = [];
if (context.autoLink) {
@tim-evans
tim-evans / feature-flags.js
Created March 20, 2015 19:20
feature-flag HTMLBars helper
import Ember from "ember";
const get = Ember.get;
const Stream = Ember.stream.Stream;
export default function featureFlags(params) {
let features = this.container.lookup('app:features');
let lazyVal = new Stream(function () {
return params.every(function (featureFlag) {
return get(features, featureFlag);
@tim-evans
tim-evans / document-title.js
Created February 19, 2015 20:39
Document Title component
import Ember from "ember";
export default Ember.Component.extend({
isVirtual: true,
tagName: '',
render: function (buffer) {
let titleTag = document.getElementsByTagName('title')[0];
this._morph = buffer.dom.appendMorph(titleTag);
this._super.apply(this, arguments);
}
@tim-evans
tim-evans / models-documentable.js
Created October 13, 2014 16:53
Inheritance chain with Ember.MODEL_FACTORY_INJECTIONS = true
import DS from "ember-data";
var hasMany = DS.hasMany;
var Documentable = DS.Model.extend({
documents: hasMany('document', { async: true })
});
export default Documentable;
@tim-evans
tim-evans / document_title.js
Created August 22, 2014 19:28
Document title mixin for Ember.Router
import Ember from "ember";
var get = Ember.get;
var copy = Ember.copy;
var removeObserver = Ember.removeObserver;
var addObserver = Ember.addObserver;
var DocumentTitleMixin = Ember.Mixin.create({
titleTokensDidChange: function () {
App.ApplicationRoute = Ember.Route.extend({
actions: {
documentUploaded: function (json) {
// I want this to update relationship
// on the documentable with the document
// added to the list of items
this.store.pushPayload('document', json);
}
}
});
<a href="/inventory" id="inventory">Inventory</a>
{{#dropdown-menu for="inventory"}}
<a {{action "addArtwork"}} tabindex="0">Add Artwork</a>
{{/dropdown-menu}}