From 60f79f080a4fcb5d4a1a572afc068ac59d41d56f Mon Sep 17 00:00:00 2001 From: Stanislav Romanov Date: Wed, 14 Sep 2022 15:03:22 +0300 Subject: [PATCH] Refactored button icon --- app/components/button.js | 19 +++++++++++++------ app/controllers/admin/indexes/item/edit.js | 7 +++++++ app/templates/admin/indexes/item/edit.hbs | 6 ++++-- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/app/components/button.js b/app/components/button.js index e798b97..a5e74b4 100644 --- a/app/components/button.js +++ b/app/components/button.js @@ -14,8 +14,8 @@ export const sizes = { export const iconSizes = { sm: 18, - md: 22, - lg: 24, + md: 20, + lg: 22, }; export const styles = { @@ -37,10 +37,12 @@ export default class ButtonComponent extends Component { ...attributes {{on 'click' this.handleClick}} > - {{#if this.isPending}} - - {{else if @icon}} - <@icon @size={{get iconSizes this.size}} /> + {{#if this.icon}} + {{/if}} {{#if (has-block)}} @@ -53,6 +55,10 @@ export default class ButtonComponent extends Component { @tracked _state = 'default'; + get icon() { + return this.isPending ? Loading : this.args?.icon; + } + get style() { return this.args.style ?? 'default'; } @@ -84,6 +90,7 @@ export default class ButtonComponent extends Component { get state() { return this.args.state ?? this._state; } + set state(state) { this._state = state; } diff --git a/app/controllers/admin/indexes/item/edit.js b/app/controllers/admin/indexes/item/edit.js index 991e287..dec98b6 100644 --- a/app/controllers/admin/indexes/item/edit.js +++ b/app/controllers/admin/indexes/item/edit.js @@ -1,11 +1,14 @@ import Controller from '@ember/controller'; import { action } from '@ember/object'; import { inject as service } from '@ember/service'; +import { tracked } from '@glimmer/tracking'; export default class AdminIndexesItemEditController extends Controller { @service router; @service toasts; + @tracked isSaving; + @action async save(event) { event.preventDefault(); @@ -13,8 +16,12 @@ export default class AdminIndexesItemEditController extends Controller { const formData = new FormData(event.currentTarget); const data = Object.fromEntries(formData.entries()); + this.isSaving = true; + const task = await this.model.save(data); + this.isSaving = false; + this.toasts.taskToast(task); } diff --git a/app/templates/admin/indexes/item/edit.hbs b/app/templates/admin/indexes/item/edit.hbs index 130ec11..8e6391b 100644 --- a/app/templates/admin/indexes/item/edit.hbs +++ b/app/templates/admin/indexes/item/edit.hbs @@ -14,6 +14,8 @@ @required={{true}} /> -