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; } }); }, }); |