diff --git a/app/components/button.js b/app/components/button.js index fcd7abf..058ce96 100644 --- a/app/components/button.js +++ b/app/components/button.js @@ -61,11 +61,13 @@ export default class ButtonComponent extends Component { } @action - async handleClick() { + async handleClick(event) { if (typeof this.args.onClick !== 'function') { return; } + event.preventDefault(); + try { const maybePromise = this.args.onClick(this.args.value); diff --git a/app/components/form/index-setting.hbs b/app/components/form/index-setting.hbs new file mode 100644 index 0000000..b1c3b53 --- /dev/null +++ b/app/components/form/index-setting.hbs @@ -0,0 +1,13 @@ +
diff --git a/app/components/form/index-setting.js b/app/components/form/index-setting.js new file mode 100644 index 0000000..8c5657b --- /dev/null +++ b/app/components/form/index-setting.js @@ -0,0 +1,48 @@ +import { action } from '@ember/object'; +import { capitalize } from '@ember/string'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +export default class FormIndexSettingComponent extends Component { + @tracked value; + + constructor() { + super(...arguments); + + const fnName = `get${capitalize(this.args.name)}`; + + this.args.index[fnName]().then((result) => { + this.value = JSON.stringify(result); + }); + } + + get capitalizeName() { + return capitalize(this.args.name); + } + + @action + save(event) { + event.preventDefault(); + + const formData = new FormData(event.currentTarget); + const data = formData.get(this.args.name); + const fnName = `update${this.capitalizeName}`; + + this.args.index[fnName](JSON.parse(data)); + } + + @action + async cancel() { + const fnName = `get${this.capitalizeName}`; + const oldValue = await this.args.index[fnName](); + + this.value = JSON.stringify(oldValue); + } + + @action + async reset() { + const fnName = `reset${this.capitalizeName}`; + + this.args.index[fnName](); + } +} diff --git a/app/components/headers/h3.hbs b/app/components/headers/h3.hbs new file mode 100644 index 0000000..29f2676 --- /dev/null +++ b/app/components/headers/h3.hbs @@ -0,0 +1,7 @@ +