diff --git a/client/package.json b/client/package.json index a73054c21..87266a85b 100644 --- a/client/package.json +++ b/client/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@babel/core": "7.8.4", - "@blueprintjs/core": "^3.23.1", + "@blueprintjs/core": "^3.38.1", "@blueprintjs/datetime": "^3.15.2", "@blueprintjs/select": "^3.11.2", "@blueprintjs/table": "^3.8.3", diff --git a/client/src/containers/Alerts/Item/InventoryAdjustmentDeleteAlert.js b/client/src/containers/Alerts/Items/InventoryAdjustmentDeleteAlert.js similarity index 90% rename from client/src/containers/Alerts/Item/InventoryAdjustmentDeleteAlert.js rename to client/src/containers/Alerts/Items/InventoryAdjustmentDeleteAlert.js index 57f862073..e538e095f 100644 --- a/client/src/containers/Alerts/Item/InventoryAdjustmentDeleteAlert.js +++ b/client/src/containers/Alerts/Items/InventoryAdjustmentDeleteAlert.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import { FormattedMessage as T, FormattedHTMLMessage, @@ -30,6 +30,7 @@ function InventoryAdjustmentDeleteAlert({ closeAlert, }) { const { formatMessage } = useIntl(); + const [isLoading, setLoading] = useState(false); // handle cancel delete alert. const handleCancelInventoryAdjustmentDelete = () => { @@ -37,9 +38,9 @@ function InventoryAdjustmentDeleteAlert({ }; const handleConfirmInventoryAdjustmentDelete = () => { + setLoading(true); requestDeleteInventoryAdjustment(inventoryId) .then(() => { - closeAlert(name); AppToaster.show({ message: formatMessage({ id: 'the_adjustment_has_been_deleted_successfully', @@ -48,7 +49,9 @@ function InventoryAdjustmentDeleteAlert({ }); queryCache.invalidateQueries('inventory-adjustment-list'); }) - .catch((errors) => { + .catch((errors) => {}) + .finally(() => { + setLoading(false); closeAlert(name); }); }; @@ -62,6 +65,7 @@ function InventoryAdjustmentDeleteAlert({ isOpen={isOpen} onCancel={handleCancelInventoryAdjustmentDelete} onConfirm={handleConfirmInventoryAdjustmentDelete} + loading={isLoading} >

{ closeAlert(name); @@ -38,9 +36,9 @@ function ItemActivateAlert({ // Handle confirm item activated. const handleConfirmItemActivate = () => { + setLoading(true); requestActivateItem(itemId) .then(() => { - closeAlert(name); AppToaster.show({ message: formatMessage({ id: 'the_item_has_been_activated_successfully', @@ -49,8 +47,10 @@ function ItemActivateAlert({ }); queryCache.invalidateQueries('items-table'); }) - .catch((error) => { + .catch((error) => {}) + .finally(() => { closeAlert(name); + setLoading(false); }); }; @@ -62,6 +62,7 @@ function ItemActivateAlert({ isOpen={isOpen} onCancel={handleCancelActivateItem} onConfirm={handleConfirmItemActivate} + loading={isLoading} >

diff --git a/client/src/containers/Alerts/Item/ItemBulkDeleteAlert.js b/client/src/containers/Alerts/Items/ItemBulkDeleteAlert.js similarity index 89% rename from client/src/containers/Alerts/Item/ItemBulkDeleteAlert.js rename to client/src/containers/Alerts/Items/ItemBulkDeleteAlert.js index 0aa178eb5..354fd43e4 100644 --- a/client/src/containers/Alerts/Item/ItemBulkDeleteAlert.js +++ b/client/src/containers/Alerts/Items/ItemBulkDeleteAlert.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import { FormattedMessage as T, useIntl } from 'react-intl'; import { Intent, Alert } from '@blueprintjs/core'; import { AppToaster } from 'components'; @@ -26,16 +26,16 @@ function ItemBulkDeleteAlert({ closeAlert, }) { const { formatMessage } = useIntl(); - + const [isLoading, setLoading] = useState(false); // handle cancel item bulk delete alert. const handleCancelBulkDelete = () => { closeAlert(name); }; // Handle confirm items bulk delete. const handleConfirmBulkDelete = () => { + setLoading(true); requestDeleteBulkItems(itemsIds) .then(() => { - closeAlert(name); AppToaster.show({ message: formatMessage({ id: 'the_items_has_been_deleted_successfully', @@ -43,7 +43,9 @@ function ItemBulkDeleteAlert({ intent: Intent.SUCCESS, }); }) - .catch((errors) => { + .catch((errors) => {}) + .finally(() => { + setLoading(false); closeAlert(name); }); }; diff --git a/client/src/containers/Alerts/Item/ItemCategoryBulkDeleteAlert.js b/client/src/containers/Alerts/Items/ItemCategoryBulkDeleteAlert.js similarity index 89% rename from client/src/containers/Alerts/Item/ItemCategoryBulkDeleteAlert.js rename to client/src/containers/Alerts/Items/ItemCategoryBulkDeleteAlert.js index 644ca020d..3bdee7dc1 100644 --- a/client/src/containers/Alerts/Item/ItemCategoryBulkDeleteAlert.js +++ b/client/src/containers/Alerts/Items/ItemCategoryBulkDeleteAlert.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import { FormattedMessage as T, FormattedHTMLMessage, @@ -30,6 +30,7 @@ function ItemCategoryBulkDeleteAlert({ closeAlert, }) { const { formatMessage } = useIntl(); + const [isLoading, setLoading] = useState(false); // handle cancel bulk delete alert. const handleCancelBulkDelete = () => { @@ -38,9 +39,9 @@ function ItemCategoryBulkDeleteAlert({ // handle confirm itemCategories bulk delete. const handleConfirmBulkDelete = () => { + setLoading(true); requestDeleteBulkItemCategories(itemCategoriesIds) .then(() => { - closeAlert(name); AppToaster.show({ message: formatMessage({ id: 'the_item_categories_has_been_deleted_successfully', @@ -48,8 +49,10 @@ function ItemCategoryBulkDeleteAlert({ intent: Intent.SUCCESS, }); }) - .catch((errors) => { + .catch((errors) => {}) + .finally(() => { closeAlert(name); + setLoading(false); }); }; return ( @@ -63,6 +66,7 @@ function ItemCategoryBulkDeleteAlert({ isOpen={isOpen} onCancel={handleCancelBulkDelete} onConfirm={handleConfirmBulkDelete} + loading={isLoading} >

{ @@ -39,9 +40,9 @@ function ItemCategoryDeleteAlert({ // Handle alert confirm delete item category. const handleConfirmItemDelete = () => { + setLoading(true); requestDeleteItemCategory(itemCategoryId) .then(() => { - closeAlert(name); AppToaster.show({ message: formatMessage({ id: 'the_item_category_has_been_deleted_successfully', @@ -50,7 +51,9 @@ function ItemCategoryDeleteAlert({ }); queryCache.invalidateQueries('items-categories-list'); }) - .catch(() => { + .catch(() => {}) + .finally(() => { + setLoading(false); closeAlert(name); }); }; @@ -64,6 +67,7 @@ function ItemCategoryDeleteAlert({ isOpen={isOpen} onCancel={handleCancelItemCategoryDelete} onConfirm={handleConfirmItemDelete} + loading={isLoading} >

{ @@ -40,9 +41,9 @@ function ItemDeleteAlert({ }; const handleConfirmDeleteItem = () => { + setLoading(true); requestDeleteItem(itemId) .then(() => { - closeAlert(name); AppToaster.show({ message: formatMessage({ id: 'the_item_has_been_deleted_successfully', @@ -53,7 +54,10 @@ function ItemDeleteAlert({ }) .catch(({ errors }) => { handleDeleteErrors(errors); + }) + .finally(() => { closeAlert(name); + setLoading(false); }); }; @@ -66,6 +70,7 @@ function ItemDeleteAlert({ isOpen={isOpen} onCancel={handleCancelItemDelete} onConfirm={handleConfirmDeleteItem} + loading={isLoading} >

{ @@ -38,9 +36,9 @@ function ItemInactivateAlert({ // Handle confirm item Inactive. const handleConfirmItemInactive = () => { + setLoading(true); requestInactiveItem(itemId) .then(() => { - closeAlert(name); AppToaster.show({ message: formatMessage({ id: 'the_item_has_been_inactivated_successfully', @@ -49,7 +47,9 @@ function ItemInactivateAlert({ }); queryCache.invalidateQueries('items-table'); }) - .catch((error) => { + .catch((error) => {}) + .finally(() => { + setLoading(false); closeAlert(name); }); }; @@ -62,6 +62,7 @@ function ItemInactivateAlert({ isOpen={isOpen} onCancel={handleCancelInactivateItem} onConfirm={handleConfirmItemInactive} + loading={isLoading} >

diff --git a/client/src/containers/Items/ItemsAlerts.js b/client/src/containers/Items/ItemsAlerts.js index 26482550a..858340f8c 100644 --- a/client/src/containers/Items/ItemsAlerts.js +++ b/client/src/containers/Items/ItemsAlerts.js @@ -1,11 +1,11 @@ import React from 'react'; -import ItemDeleteAlert from 'containers/Alerts/Item/ItemDeleteAlert'; -import ItemInactivateAlert from 'containers/Alerts/Item/ItemInactivateAlert'; -import ItemActivateAlert from 'containers/Alerts/Item/ItemActivateAlert'; -import ItemBulkDeleteAlert from 'containers/Alerts/Item/ItemBulkDeleteAlert'; -import ItemCategoryDeleteAlert from 'containers/Alerts/Item/ItemCategoryDeleteAlert'; -import ItemCategoryBulkDeleteAlert from 'containers/Alerts/Item/ItemCategoryBulkDeleteAlert'; -import InventoryAdjustmentDeleteAlert from 'containers/Alerts/Item/InventoryAdjustmentDeleteAlert'; +import ItemDeleteAlert from 'containers/Alerts/Items/ItemDeleteAlert'; +import ItemInactivateAlert from 'containers/Alerts/Items/ItemInactivateAlert'; +import ItemActivateAlert from 'containers/Alerts/Items/ItemActivateAlert'; +import ItemBulkDeleteAlert from 'containers/Alerts/Items/ItemBulkDeleteAlert'; +import ItemCategoryDeleteAlert from 'containers/Alerts/Items/ItemCategoryDeleteAlert'; +import ItemCategoryBulkDeleteAlert from 'containers/Alerts/Items/ItemCategoryBulkDeleteAlert'; +import InventoryAdjustmentDeleteAlert from 'containers/Alerts/Items/InventoryAdjustmentDeleteAlert'; /** * Items alert.