Skip to content

Instantly share code, notes, and snippets.

@magistrula
Last active May 4, 2018 23:50
Show Gist options
  • Save magistrula/f8ed3b7fabcafc265016e408bfa0503f to your computer and use it in GitHub Desktop.
Save magistrula/f8ed3b7fabcafc265016e408bfa0503f to your computer and use it in GitHub Desktop.
Optional Action with isDisabled
import Ember from 'ember';
export default Ember.Controller.extend({
isDisabled: false,
actions: {
foo() {
alert('Foo!');
}
}
});
import Ember from 'ember';
export function optional([action]) {
if (typeof action === 'function') {
return action;
}
return (i) => i;
}
export default Ember.Helper.helper(optional);
body {
margin: 12px 16px;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 12pt;
}
.button {
display: inline-flex;
align-items: center;
height: 30px;
padding: 0 15px;
border: 1px solid gray;
background: lightblue;
cursor: pointer;
}
.disabled {
background: lightgray;
cursor: default;
}
<div class="button" {{action toggleProperty "isDisabled"}}>
{{#if isDisabled}}
Enable Button
{{else}}
Disable Button
{{/if}}
</div>
<div class="{{if isDisabled "disabled"}} button"
{{action (optional (unless isDisabled (action "foo")))}}
>
{{#if isDisabled}}
Can't Click Me
{{else}}
Click Me
{{/if}}
</div>
{
"version": "0.13.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.16.2",
"ember-template-compiler": "2.16.2",
"ember-testing": "2.16.2"
},
"addons": {
"ember-data": "2.16.3"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment