Skip to content

Commit

Permalink
Merge pull request #12 from mugijiru/accept-action
Browse files Browse the repository at this point in the history
  • Loading branch information
mugijiru committed May 4, 2021
2 parents 2216844 + 35b491e commit b80b59e
Show file tree
Hide file tree
Showing 10 changed files with 95 additions and 9 deletions.
2 changes: 1 addition & 1 deletion addon/components/mg-button.hbs
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
<button type="button" class={{this.classNamesString}} disabled={{this.disabled}}>
<button type="button" class={{this.classNamesString}} disabled={{this.disabled}} {{on "click" this.click}}>
{{this.text}}
</button>
10 changes: 10 additions & 0 deletions addon/components/mg-button.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Component from '@glimmer/component'
import { action } from '@ember/object';

export default class MgButton extends Component {
get disabled() {
Expand All @@ -24,4 +25,13 @@ export default class MgButton extends Component {

return classList.join(' ')
}

@action
click () {
const onClick = this.args.onClick
if (typeof onClick !== 'function') {
return;
}
onClick()
}
}
2 changes: 1 addition & 1 deletion addon/components/mg-checkbox.hbs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<div class={{this.classNamesString}} />
<div class={{this.classNamesString}} {{on "click" this.click}} />
10 changes: 9 additions & 1 deletion addon/components/mg-checkbox.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Component from '@glimmer/component';
import Component from '@glimmer/component'
import { action } from '@ember/object'

export default class MgCheckbox extends Component {
get checked () {
Expand All @@ -11,4 +12,11 @@ export default class MgCheckbox extends Component {

return classList.join(' ')
}

@action
click () {
const onClick = this.args.onClick
if (typeof onClick !== 'function') { return }
onClick()
}
}
2 changes: 1 addition & 1 deletion addon/components/mg-toggle-switch.hbs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div class={{this.classNamesString}}>
<div class={{this.classNamesString}} {{on "click" this.click}}>
<div class="c-toggle-switch__label">{{this.label}}</div>
<span class="c-toggle-switch__off-label">{{this.offLabel}}</span>
<div class="c-toggle-switch__switch"></div>
Expand Down
10 changes: 9 additions & 1 deletion addon/components/mg-toggle-switch.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Component from '@glimmer/component';
import Component from '@glimmer/component'
import { action } from '@ember/object'

export default class MgToggleSwitch extends Component {
get label () { return this.args.label ?? '' }
Expand All @@ -11,4 +12,11 @@ export default class MgToggleSwitch extends Component {
if (this.enabled) { classList.push('c-toggle-switch--enabled') }
return classList.join(' ')
}

@action
click () {
const onClick = this.args.onClick
if (typeof onClick !== 'function') { return }
onClick()
}
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mugijiru/ember-components",
"version": "1.0.0",
"version": "1.0.1",
"description": "The default blueprint for ember-cli addons.",
"keywords": [
"ember-addon"
Expand Down
15 changes: 14 additions & 1 deletion tests/integration/components/mg-button-test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { render, click } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';

module('Integration | Component | mg button', function(hooks) {
Expand Down Expand Up @@ -47,4 +47,17 @@ module('Integration | Component | mg button', function(hooks) {

assert.dom('.btn').doesNotHaveClass('btn-danger');
});

test('click すると外部から渡されたアクションが実行される', async function(assert) {
assert.expect(1)

this.set('clickAction', (actual) => {
const expected = null
assert.equal(actual, expected)
});

await render(hbs`<MgButton @onClick={{this.clickAction}} />`)

click('.btn')
})
});
24 changes: 23 additions & 1 deletion tests/integration/components/mg-checkbox-test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { render, click } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';

module('Integration | Component | mg checkbox', function(hooks) {
Expand All @@ -16,4 +16,26 @@ module('Integration | Component | mg checkbox', function(hooks) {
await render(hbs`{{mg-checkbox checked=true}}`);
assert.dom('.c-checkbox').hasClass('c-checkbox--checked');
});

test('checkedに渡された値が切り替わると表示も切り替わる', async function(assert) {
this.set('flag', false)
await render(hbs`<MgCheckbox @checked={{this.flag}} />`);
assert.dom('.c-checkbox').doesNotHaveClass('c-checkbox--checked');

this.set('flag', true)
assert.dom('.c-checkbox').hasClass('c-checkbox--checked');
});

test('click すると外部から渡されたアクションが実行される', async function(assert) {
assert.expect(1)

this.set('clickAction', (actual) => {
const expected = null
assert.equal(actual, expected)
});

await render(hbs`<MgCheckbox @onClick={{this.clickAction}} />`)

click('.c-checkbox')
})
});
27 changes: 26 additions & 1 deletion tests/integration/components/mg-toggle-switch-test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { render, click } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';

module('Integration | Component | mg toggle-switch', function(hooks) {
Expand Down Expand Up @@ -37,4 +37,29 @@ module('Integration | Component | mg toggle-switch', function(hooks) {

assert.dom('.c-toggle-switch').hasClass('c-toggle-switch--enabled');
});

test('enabled が切り替わると表示も切り替わる', async function(assert) {
assert.expect(2)

this.set('flag', false)
await render(hbs`<MgToggleSwitch @enabled={{this.flag}} />`);

assert.dom('.c-toggle-switch').doesNotHaveClass('c-toggle-switch--enabled');

this.set('flag', true)
assert.dom('.c-toggle-switch').hasClass('c-toggle-switch--enabled');
});

test('click すると外部から渡されたアクションが実行される', async function(assert) {
assert.expect(1)

this.set('clickAction', (actual) => {
const expected = null
assert.equal(actual, expected)
});

await render(hbs`<MgToggleSwitch @onClick={{this.clickAction}} />`)

click('.c-toggle-switch')
})
});

0 comments on commit b80b59e

Please sign in to comment.