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 | import { or } from '@ember/object/computed'; import Component from '@ember/component'; import { task, didCancel } from 'ember-concurrency'; import layout from '../templates/components/bootstrap-button'; import PropTypeMixin, { PropTypes } from 'ember-prop-types'; export default Component.extend(PropTypeMixin, { layout, tagName: 'button', classNames: ['btn'], attributeBindings: ['disabledButton:disabled', 'type', 'aria-label'], propTypes: { // eslint-disable-line ember/avoid-leaking-state-in-ember-objects action: PropTypes.func.isRequired, disabled: PropTypes.bool, }, disabledButton: or('asyncTask.isRunning', 'disabled'), asyncTask: task(function * (asyncTask) { return yield asyncTask(); }).drop(), click(e) { e.preventDefault(); return this.get('asyncTask').perform(this.get('action')).catch(error => { if (!didCancel(error)) { throw error; } }); }, }); |