Skip to content

Instantly share code, notes, and snippets.

@lennyburdette
Last active May 4, 2017 20:43
Show Gist options
  • Save lennyburdette/ac11d9a7b731ccd855693d9b55a33126 to your computer and use it in GitHub Desktop.
Save lennyburdette/ac11d9a7b731ccd855693d9b55a33126 to your computer and use it in GitHub Desktop.
css helper
import Ember from 'ember';
export default Ember.Component.extend({
tagName: ''
});
import Ember from 'ember';
export default Ember.Controller.extend({
tile: { x: 50, y: 50 }
});
import Ember from 'ember';
export function css(_, params) {
return Ember.String.htmlSafe(
Object.keys(params).reduce((acc, key) => acc.concat(`${key}: ${addUnitIfNecessary(params[key], key)}`), []).join(';')
);
}
function addUnitIfNecessary(value, propertyName) {
if (Ember.$.cssNumber[propertyName]) {
return value;
}
return isNaN(value) ? value : `${value}px`;
}
export default Ember.Helper.helper(css);
body {
margin: 12px 16px;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 12pt;
}
.box {
position: relative;
width: 100px;
height: 100px;
background: blue;
}
<div>X <input type="range" value={{tile.x}} oninput={{action (mut tile.x) value="target.value"}} min="1" max="100" /></div>
<div>Y <input type="range" value={{tile.y}} oninput={{action (mut tile.y) value="target.value"}} min="1" max="100" /></div>
{{my-component tile=tile}}
<div class="box" style={{css left=tile.x top=tile.y}}></div>
{
"version": "0.12.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.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-data": "2.12.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment