Skip to content

Instantly share code, notes, and snippets.

@adamesque
Last active November 3, 2015 22:22
Show Gist options
  • Save adamesque/c8024dcdec08da46e5c6 to your computer and use it in GitHub Desktop.
Save adamesque/c8024dcdec08da46e5c6 to your computer and use it in GitHub Desktop.

Revisions

  1. adamesque revised this gist Nov 3, 2015. No changes.
  2. adamesque revised this gist Nov 3, 2015. 4 changed files with 10 additions and 12 deletions.
    1 change: 1 addition & 0 deletions application.template.hbs
    Original file line number Diff line number Diff line change
    @@ -10,5 +10,6 @@
    <b {{action onSelect}}>{{item}} {{if selected 'is grate'}}</b>
    --}}
    {{/list-view}}

    <br>
    <br>
    7 changes: 7 additions & 0 deletions helpers.eq.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    import Ember from 'ember';

    export function eq(params/*, hash*/) {
    return params[0] === params[1];
    }

    export default Ember.Helper.helper(eq);
    10 changes: 0 additions & 10 deletions list-view.component.js
    Original file line number Diff line number Diff line change
    @@ -2,16 +2,6 @@ import Ember from 'ember';

    export default Ember.Component.extend({
    selectedItem: null,
    listItems: Ember.computed('selectedItem', 'items.[]', function () {
    let selectedItem = this.get('selectedItem');
    let items = this.get('items');
    return items.map(function (item) {
    return {
    item: item,
    isSelected: item === selectedItem
    };
    });
    }),
    actions: {
    onSelect(item) {
    let onSelect = this.get('onSelect');
    4 changes: 2 additions & 2 deletions list-view.template.hbs
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,3 @@
    {{#each listItems as |item|}}
    {{yield item.item item.isSelected (action 'onSelect' item.item)}}
    {{#each items as |item|}}
    {{yield item (eq item selectedItem) (action 'onSelect' item)}}
    {{/each}}
  3. adamesque revised this gist Nov 3, 2015. 4 changed files with 13 additions and 2 deletions.
    7 changes: 6 additions & 1 deletion application.controller.js
    Original file line number Diff line number Diff line change
    @@ -2,5 +2,10 @@ import Ember from 'ember';

    export default Ember.Controller.extend({
    appName:'Ember Twiddle',
    items: "one two three".w()
    items: "one two three".w(),
    actions: {
    handleSelect(item) {
    alert(item);
    }
    }
    });
    2 changes: 1 addition & 1 deletion application.template.hbs
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,7 @@
    <h1>Welcome to {{appName}}</h1>
    <br>
    <br>
    {{#list-view items=items as |item selected onSelect|}}
    {{#list-view items=items onSelect=(action 'handleSelect') as |item selected onSelect|}}
    {{! use a component }}
    {{list-item value=item isSelected=selected onSelect=onSelect}}

    2 changes: 2 additions & 0 deletions list-view.component.js
    Original file line number Diff line number Diff line change
    @@ -14,7 +14,9 @@ export default Ember.Component.extend({
    }),
    actions: {
    onSelect(item) {
    let onSelect = this.get('onSelect');
    this.set('selectedItem', item);
    typeof onSelect === 'function' && onSelect(item);
    }
    }
    });
    4 changes: 4 additions & 0 deletions styles.app.css
    Original file line number Diff line number Diff line change
    @@ -4,6 +4,10 @@ body {
    font-size: 12pt;
    }

    li {
    cursor: default;
    }

    .is-selected {
    color: hotpink;
    }
  4. adamesque revised this gist Nov 3, 2015. 2 changed files with 9 additions and 9 deletions.
    14 changes: 7 additions & 7 deletions list-view.component.js
    Original file line number Diff line number Diff line change
    @@ -1,20 +1,20 @@
    import Ember from 'ember';

    export default Ember.Component.extend({
    selectedIndex: null,
    listItems: Ember.computed('selectedIndex', 'items.[]', function () {
    let selectedIndex = this.get('selectedIndex');
    selectedItem: null,
    listItems: Ember.computed('selectedItem', 'items.[]', function () {
    let selectedItem = this.get('selectedItem');
    let items = this.get('items');
    return items.map(function (item, i) {
    return items.map(function (item) {
    return {
    item: item,
    isSelected: i === selectedIndex
    isSelected: item === selectedItem
    };
    });
    }),
    actions: {
    onSelect(item, i) {
    this.set('selectedIndex', i);
    onSelect(item) {
    this.set('selectedItem', item);
    }
    }
    });
    4 changes: 2 additions & 2 deletions list-view.template.hbs
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,3 @@
    {{#each listItems as |item index|}}
    {{yield item.item item.isSelected (action 'onSelect' item.item index)}}
    {{#each listItems as |item|}}
    {{yield item.item item.isSelected (action 'onSelect' item.item)}}
    {{/each}}
  5. adamesque revised this gist Nov 3, 2015. 2 changed files with 2 additions and 5 deletions.
    2 changes: 2 additions & 0 deletions application.template.hbs
    Original file line number Diff line number Diff line change
    @@ -6,7 +6,9 @@
    {{list-item value=item isSelected=selected onSelect=onSelect}}

    {{! or your own markup }}
    {{!--
    <b {{action onSelect}}>{{item}} {{if selected 'is grate'}}</b>
    --}}
    {{/list-view}}
    <br>
    <br>
    5 changes: 0 additions & 5 deletions list-item.component.js
    Original file line number Diff line number Diff line change
    @@ -8,10 +8,5 @@ export default Ember.Component.extend({
    if (typeof onSelect === 'function') {
    onSelect();
    }
    },
    actions: {
    select() {
    this.get('onSelect')();
    }
    }
    });
  6. adamesque revised this gist Nov 3, 2015. 3 changed files with 8 additions and 4 deletions.
    4 changes: 4 additions & 0 deletions application.template.hbs
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,11 @@
    <br>
    <br>
    {{#list-view items=items as |item selected onSelect|}}
    {{! use a component }}
    {{list-item value=item isSelected=selected onSelect=onSelect}}

    {{! or your own markup }}
    <b {{action onSelect}}>{{item}} {{if selected 'is grate'}}</b>
    {{/list-view}}
    <br>
    <br>
    4 changes: 2 additions & 2 deletions list-view.component.js
    Original file line number Diff line number Diff line change
    @@ -13,8 +13,8 @@ export default Ember.Component.extend({
    });
    }),
    actions: {
    onSelect(item) {
    alert(item);
    onSelect(item, i) {
    this.set('selectedIndex', i);
    }
    }
    });
    4 changes: 2 additions & 2 deletions list-view.template.hbs
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,3 @@
    {{#each listItems as |item|}}
    {{yield item.item item.isSelected (action 'onSelect' item.item)}}
    {{#each listItems as |item index|}}
    {{yield item.item item.isSelected (action 'onSelect' item.item index)}}
    {{/each}}
  7. adamesque created this gist Nov 3, 2015.
    6 changes: 6 additions & 0 deletions application.controller.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,6 @@
    import Ember from 'ember';

    export default Ember.Controller.extend({
    appName:'Ember Twiddle',
    items: "one two three".w()
    });
    8 changes: 8 additions & 0 deletions application.template.hbs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    <h1>Welcome to {{appName}}</h1>
    <br>
    <br>
    {{#list-view items=items as |item selected onSelect|}}
    {{list-item value=item isSelected=selected onSelect=onSelect}}
    {{/list-view}}
    <br>
    <br>
    17 changes: 17 additions & 0 deletions list-item.component.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,17 @@
    import Ember from 'ember';

    export default Ember.Component.extend({
    tagName: 'li',
    classNameBindings: ['isSelected'],
    click() {
    let onSelect = this.get('onSelect');
    if (typeof onSelect === 'function') {
    onSelect();
    }
    },
    actions: {
    select() {
    this.get('onSelect')();
    }
    }
    });
    1 change: 1 addition & 0 deletions list-item.template.hbs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    {{value}}
    20 changes: 20 additions & 0 deletions list-view.component.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    import Ember from 'ember';

    export default Ember.Component.extend({
    selectedIndex: null,
    listItems: Ember.computed('selectedIndex', 'items.[]', function () {
    let selectedIndex = this.get('selectedIndex');
    let items = this.get('items');
    return items.map(function (item, i) {
    return {
    item: item,
    isSelected: i === selectedIndex
    };
    });
    }),
    actions: {
    onSelect(item) {
    alert(item);
    }
    }
    });
    3 changes: 3 additions & 0 deletions list-view.template.hbs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    {{#each listItems as |item|}}
    {{yield item.item item.isSelected (action 'onSelect' item.item)}}
    {{/each}}
    9 changes: 9 additions & 0 deletions styles.app.css
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    body {
    margin: 12px 16px;
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    font-size: 12pt;
    }

    .is-selected {
    color: hotpink;
    }
    12 changes: 12 additions & 0 deletions twiddle.json
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,12 @@
    {
    "version": "0.4.16",
    "EmberENV": {
    "FEATURES": {}
    },
    "dependencies": {
    "jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
    "ember": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.1.0/ember.debug.js",
    "ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/2.1.0/ember-data.js",
    "ember-template-compiler": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.1.0/ember-template-compiler.js"
    }
    }