All files / addon/components/bootstrap/buttons -button.js

28.57% Statements 2/7
0% Branches 0/2
25% Functions 1/4
28.57% Lines 2/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50              1x                                                           28x                        
import { or } from '@ember/object/computed';
import Component from '@ember/component';
import { task, didCancel } from 'ember-concurrency';
import layout from '../../../templates/components/bootstrap/buttons/-button';
import { PropTypes } from 'ember-prop-types';
import { BuilderForPropTypes, BuilderForPropDefaults } from 'ember-bootstrap-controls/utils/prop-definition-tools';
 
export const propDefinitions = {
  action: {
    description: 'Button action to be executed',
    type: PropTypes.func.isRequired
  },
  disabled: {
    default: false,
    description: 'Indicates whether the button is disbaled or not',
    type: PropTypes.bool
  },
  buttonText: {
    default: 'Button',
    description: 'Button text to be rendered',
    type: PropTypes.string
  }
};
 
export default Component.extend({
  layout,
  tagName: 'button',
  classNames: ['btn'],
  attributeBindings: ['disabledButton:disabled', 'type', 'aria-label'],
  propTypes: BuilderForPropTypes(propDefinitions),
  adisabledButton: or('asyncTask.isRunning', 'disabled'),
 
  asyncTask: task(function * (asyncTask) {
      return yield asyncTask();
  }).drop(),
 
  getDefaultProps() {
    return BuilderForPropDefaults(propDefinitions)
  },
 
  click(e) {
    e.preventDefault();
    return this.get('asyncTask').perform(this.get('action')).catch(error => {
      if (!didCancel(error)) {
        throw error;
      }
    });
  },
});