diff --git a/addons/point_of_sale/static/src/css/pos.css b/addons/point_of_sale/static/src/css/pos.css
index 4e9f4b352f7..1d5145cb3be 100644
--- a/addons/point_of_sale/static/src/css/pos.css
+++ b/addons/point_of_sale/static/src/css/pos.css
@@ -3431,19 +3431,21 @@ td {
/* Product Screen Search Bar */
-.search-bar-portal {
+.search-bar-portal,
+.search-bar-portal .search-box {
display: flex;
+ flex: 1;
}
.search-bar-portal .search-box {
font-size: medium;
position: relative;
- display: flex;
align-items: center;
margin: 0 15px;
}
.search-bar-portal .search-box input {
+ flex: 1;
font-size: medium;
height: 30px;
border: none;
@@ -3629,6 +3631,13 @@ td {
background: rgb(104,69,95);
}
+@media screen and (max-width: 768px) {
+
+ .pos .search-bar-portal .search-box .icon .fa-search {
+ color: #f0f0f0;
+ }
+}
+
/** CashMovePopup **/
.cash-move {
diff --git a/addons/point_of_sale/static/src/js/Chrome.js b/addons/point_of_sale/static/src/js/Chrome.js
index 66882855536..673178fc281 100644
--- a/addons/point_of_sale/static/src/js/Chrome.js
+++ b/addons/point_of_sale/static/src/js/Chrome.js
@@ -31,6 +31,7 @@ odoo.define('point_of_sale.Chrome', function(require) {
useExternalListener(window, 'beforeunload', this._onBeforeUnload);
useListener('show-main-screen', this.__showScreen);
useListener('toggle-debug-widget', debounce(this._toggleDebugWidget, 100));
+ useListener('toggle-mobile-searchbar', this._toggleMobileSearchBar);
useListener('show-temp-screen', this.__showTempScreen);
useListener('close-temp-screen', this.__closeTempScreen);
useListener('close-pos', this._closePos);
@@ -46,6 +47,7 @@ odoo.define('point_of_sale.Chrome', function(require) {
this.state = useState({
uiState: 'LOADING', // 'LOADING' | 'READY' | 'CLOSING'
debugWidgetIsShown: true,
+ mobileSearchBarIsShown: false,
hasBigScrollBars: false,
sound: { src: null },
notification: {
@@ -98,6 +100,16 @@ odoo.define('point_of_sale.Chrome', function(require) {
get clientScreenButtonIsShown() {
return this.env.pos.config.iface_customer_facing_display;
}
+
+ /**
+ * Used to give the `state.mobileSearchBarIsShown` value to main screen props
+ */
+ get mainScreenPropsFielded() {
+ return Object.assign({}, this.mainScreenProps, {
+ mobileSearchBarIsShown: this.state.mobileSearchBarIsShown,
+ });
+ }
+
/**
* Startup screen can be based on pos config so the startup screen
* is only determined after pos data is completely loaded.
@@ -298,6 +310,13 @@ odoo.define('point_of_sale.Chrome', function(require) {
_toggleDebugWidget() {
this.state.debugWidgetIsShown = !this.state.debugWidgetIsShown;
}
+ _toggleMobileSearchBar({ detail: isSearchBarEnabled }) {
+ if (isSearchBarEnabled !== null) {
+ this.state.mobileSearchBarIsShown = isSearchBarEnabled;
+ } else {
+ this.state.mobileSearchBarIsShown = !this.state.mobileSearchBarIsShown;
+ }
+ }
_onPlaySound({ detail: name }) {
let src;
if (name === 'error') {
diff --git a/addons/point_of_sale/static/src/js/Screens/ProductScreen/ProductsWidget.js b/addons/point_of_sale/static/src/js/Screens/ProductScreen/ProductsWidget.js
index 10834b3f3c9..8271fb12c96 100644
--- a/addons/point_of_sale/static/src/js/Screens/ProductScreen/ProductsWidget.js
+++ b/addons/point_of_sale/static/src/js/Screens/ProductScreen/ProductsWidget.js
@@ -25,6 +25,7 @@ odoo.define('point_of_sale.ProductsWidget', function(require) {
}
willUnmount() {
this.env.pos.off('change:selectedCategoryId', null, this);
+ this.trigger('toggle-mobile-searchbar', false);
}
get selectedCategoryId() {
return this.env.pos.get('selectedCategoryId');
diff --git a/addons/point_of_sale/static/src/js/Screens/ProductScreen/ProductsWidgetControlPanel.js b/addons/point_of_sale/static/src/js/Screens/ProductScreen/ProductsWidgetControlPanel.js
index 819d5ce8cc4..9ebfa77f60a 100644
--- a/addons/point_of_sale/static/src/js/Screens/ProductScreen/ProductsWidgetControlPanel.js
+++ b/addons/point_of_sale/static/src/js/Screens/ProductScreen/ProductsWidgetControlPanel.js
@@ -39,6 +39,9 @@ odoo.define('point_of_sale.ProductsWidgetControlPanel', function(require) {
this.trigger('switch-category', 0);
this.trigger('update-search', productName);
}
+ _toggleMobileSearchbar() {
+ this.trigger('toggle-mobile-searchbar');
+ }
async loadProductFromDB() {
if(!this.searchWordInput.el.value)
return;
diff --git a/addons/point_of_sale/static/src/xml/Chrome.xml b/addons/point_of_sale/static/src/xml/Chrome.xml
index 088f1f27663..1708de8bc19 100644
--- a/addons/point_of_sale/static/src/xml/Chrome.xml
+++ b/addons/point_of_sale/static/src/xml/Chrome.xml
@@ -13,9 +13,9 @@