diff --git a/addons/pos_self_order/static/src/app/components/loading_overlay/loading_overlay.js b/addons/pos_self_order/static/src/app/components/loading_overlay/loading_overlay.js
new file mode 100644
index 00000000000..594f5ddce55
--- /dev/null
+++ b/addons/pos_self_order/static/src/app/components/loading_overlay/loading_overlay.js
@@ -0,0 +1,22 @@
+/** @odoo-module */
+
+import { Component, onWillStart, useState } from "@odoo/owl";
+import { useSelfOrder } from "@pos_self_order/app/self_order_service";
+
+export class LoadingOverlay extends Component {
+ static template = "pos_self_order.LoadingOverlay";
+ static props = ["action", "removeTopClasses?"];
+
+ setup() {
+ this.selfOrder = useSelfOrder();
+ this.state = useState({
+ loading: false,
+ });
+
+ onWillStart(() => {
+ setTimeout(() => {
+ this.state.loading = true;
+ }, 200);
+ });
+ }
+}
diff --git a/addons/pos_self_order/static/src/app/components/loading_overlay/loading_overlay.xml b/addons/pos_self_order/static/src/app/components/loading_overlay/loading_overlay.xml
new file mode 100644
index 00000000000..f6b3d3c5838
--- /dev/null
+++ b/addons/pos_self_order/static/src/app/components/loading_overlay/loading_overlay.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/addons/pos_self_order/static/src/app/pages/cart_page/cart_page.js b/addons/pos_self_order/static/src/app/pages/cart_page/cart_page.js
index be9dcd5b387..a6eb81be2d6 100644
--- a/addons/pos_self_order/static/src/app/pages/cart_page/cart_page.js
+++ b/addons/pos_self_order/static/src/app/pages/cart_page/cart_page.js
@@ -52,7 +52,7 @@ export class CartPage extends Component {
const type = this.selfOrder.config.self_ordering_mode;
const takeAway = this.selfOrder.currentOrder.take_away;
- if (this.sendInProgress || !this.selfOrder.verifyCart()) {
+ if (this.selfOrder.rpcLoading || !this.selfOrder.verifyCart()) {
return;
}
@@ -61,9 +61,9 @@ export class CartPage extends Component {
return;
}
- this.sendInProgress = true;
+ this.selfOrder.rpcLoading = true;
await this.selfOrder.confirmOrder();
- this.sendInProgress = false;
+ this.selfOrder.rpcLoading = false;
}
selectTable(table) {
diff --git a/addons/pos_self_order/static/src/app/pages/landing_page/landing_page.js b/addons/pos_self_order/static/src/app/pages/landing_page/landing_page.js
index 68d8129167a..8b23cdbf429 100644
--- a/addons/pos_self_order/static/src/app/pages/landing_page/landing_page.js
+++ b/addons/pos_self_order/static/src/app/pages/landing_page/landing_page.js
@@ -22,6 +22,7 @@ export class LandingPage extends Component {
this.selfOrder.orders = [];
this.selfOrder.editedOrder = null;
}
+ this.selfOrder.rpcLoading = false;
});
onMounted(() => {
diff --git a/addons/pos_self_order/static/src/app/pages/product_list_page/product_list_page.js b/addons/pos_self_order/static/src/app/pages/product_list_page/product_list_page.js
index d9dc93b93d9..efcdb90087c 100644
--- a/addons/pos_self_order/static/src/app/pages/product_list_page/product_list_page.js
+++ b/addons/pos_self_order/static/src/app/pages/product_list_page/product_list_page.js
@@ -19,6 +19,7 @@ export class ProductListPage extends Component {
this.router = useService("router");
this.productsList = useRef("productsList");
this.categoryList = useRef("categoryList");
+ this.searchInput = useRef("searchInput");
this.currentProductCard = useChildRef();
this.state = useState({
search: false,
@@ -30,6 +31,15 @@ export class ProductListPage extends Component {
})
);
+ useEffect(
+ () => {
+ if (this.state.search) {
+ this.searchInput.el.focus();
+ }
+ },
+ () => [this.state.search]
+ );
+
useEffect(
() => {
if (this.selfOrder.lastEditedProductId) {
diff --git a/addons/pos_self_order/static/src/app/pages/product_list_page/product_list_page.xml b/addons/pos_self_order/static/src/app/pages/product_list_page/product_list_page.xml
index 4b24faf6294..be72e08c0eb 100644
--- a/addons/pos_self_order/static/src/app/pages/product_list_page/product_list_page.xml
+++ b/addons/pos_self_order/static/src/app/pages/product_list_page/product_list_page.xml
@@ -32,11 +32,12 @@
-
diff --git a/addons/pos_self_order/static/src/app/self_order_index.js b/addons/pos_self_order/static/src/app/self_order_index.js
index ee043df3bd9..288f9c98ea8 100644
--- a/addons/pos_self_order/static/src/app/self_order_index.js
+++ b/addons/pos_self_order/static/src/app/self_order_index.js
@@ -16,6 +16,7 @@ import { ConfirmationPage } from "@pos_self_order/app/pages/confirmation_page/co
import { EatingLocationPage } from "@pos_self_order/app/pages/eating_location_page/eating_location_page";
import { StandNumberPage } from "@pos_self_order/app/pages/stand_number_page/stand_number_page";
import { OrdersHistoryPage } from "@pos_self_order/app/pages/order_history_page/order_history_page";
+import { LoadingOverlay } from "@pos_self_order/app/components/loading_overlay/loading_overlay";
class selfOrderIndex extends Component {
static template = "pos_self_order.selfOrderIndex";
@@ -32,6 +33,7 @@ class selfOrderIndex extends Component {
EatingLocationPage,
StandNumberPage,
LandingPage,
+ LoadingOverlay,
MainComponentsContainer,
};
diff --git a/addons/pos_self_order/static/src/app/self_order_index.xml b/addons/pos_self_order/static/src/app/self_order_index.xml
index e81887baaed..477acd2dc09 100644
--- a/addons/pos_self_order/static/src/app/self_order_index.xml
+++ b/addons/pos_self_order/static/src/app/self_order_index.xml
@@ -4,6 +4,9 @@
+
+
+
diff --git a/addons/pos_self_order/static/src/app/self_order_service.js b/addons/pos_self_order/static/src/app/self_order_service.js
index dce0d718e84..e267e28a3f6 100644
--- a/addons/pos_self_order/static/src/app/self_order_service.js
+++ b/addons/pos_self_order/static/src/app/self_order_service.js
@@ -45,6 +45,7 @@ export class SelfOrder extends Reactive {
this.currentProduct = 0;
this.attributeById = {};
this.priceLoading = false;
+ this.rpcLoading = false;
this.productByIds = {};
this.paymentError = false;
this.editedOrder = null;