open-nomad/ui/app/utils/properties/style-string.js

27 lines
790 B
JavaScript
Raw Normal View History

import { computed, get } from '@ember/object';
import { htmlSafe } from '@ember/template';
2017-09-19 14:47:10 +00:00
// An Ember.Computed property for transforming an object into an
// html compatible style attribute
//
// ex. styleProps: { color: '#FF0', border-width: '1px' }
// styleStr: styleStringProperty('styleProps') // color:#FF0;border-width:1px
export default function styleStringProperty(prop) {
2021-12-28 14:45:20 +00:00
return computed(prop, function () {
const styles = get(this, prop);
2017-09-19 14:47:10 +00:00
let str = '';
if (styles) {
str = Object.keys(styles)
2021-12-28 14:45:20 +00:00
.reduce(function (arr, key) {
2017-09-19 14:47:10 +00:00
const val = styles[key];
arr.push(key + ':' + (typeof val === 'number' ? val.toFixed(2) + 'px' : val));
return arr;
}, [])
.join(';');
}
return htmlSafe(str);
2017-09-19 14:47:10 +00:00
});
}