ember-cli-lightning-design-system
Version:
Easy installation and reusable components for the salesforce lightning design system.
77 lines (59 loc) • 1.55 kB
JavaScript
import { isEmpty } from '@ember/utils';
import { computed } from '@ember/object';
import Component from '@ember/component';
import layout from '../templates/components/slds-button';
const typeMap = {
brand: 'slds-button--brand',
success: 'slds-button--success',
neutral: 'slds-button--neutral',
destructive: 'slds-button--destructive',
inverse: 'slds-button--inverse'
};
export default Component.extend({
layout,
tagName: 'button',
classNames: ['slds-button'],
classNameBindings: ['typeClass'],
attributeBindings: ['disabled'],
type: '',
text: 'Submit',
disabled: false,
clicked: null,
icon: null,
iconPosition: 'left',
typeClass: computed('type', function() {
const type = this.get('type');
if (isEmpty(type)) {
return '';
}
return typeMap[type];
}),
shouldRenderLeftIcon: computed('icon', 'iconPosition', function() {
const { icon, iconPosition } = this.getProperties('icon', 'iconPosition');
if (isEmpty(icon)) {
return false;
}
return iconPosition == 'left';
}),
shouldRenderRightIcon: computed('icon', 'iconPosition', function() {
const { icon, iconPosition } = this.getProperties('icon', 'iconPosition');
if (isEmpty(icon)) {
return false;
}
return iconPosition == 'right';
}),
click() {
const callback = this.get('clicked');
if (callback) {
callback();
}
},
actions: {
clicked() {
const callback = this.get('clicked');
if (callback) {
callback();
}
}
}
});