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.