diff --git a/base_usability/web-advanced_search_startswith.diff b/base_usability/web-advanced_search_startswith.diff new file mode 100644 index 0000000..4678a4e --- /dev/null +++ b/base_usability/web-advanced_search_startswith.diff @@ -0,0 +1,28 @@ +diff --git a/addons/web/static/src/js/control_panel/custom_filter_item.js b/addons/web/static/src/js/control_panel/custom_filter_item.js +index 6682b660b78..b2ff23344d9 100644 +--- a/addons/web/static/src/js/control_panel/custom_filter_item.js ++++ b/addons/web/static/src/js/control_panel/custom_filter_item.js +@@ -180,6 +180,10 @@ odoo.define('web.CustomFilterItem', function (require) { + [field.name, '>=', domainValue[0]], + [field.name, '<=', domainValue[1]] + ); ++ } else if (operator.symbol === 'startswith') { ++ domainArray.push([field.name, '=ilike', domainValue[0] + '%']); ++ } else if (operator.symbol === 'endswith') { ++ domainArray.push([field.name, '=ilike', '%' + domainValue[0]]); + } else { + domainArray.push([field.name, operator.symbol, domainValue[0]]); + } +diff --git a/addons/web/static/src/js/control_panel/search_utils.js b/addons/web/static/src/js/control_panel/search_utils.js +index 8fce5b23ef6..d240d2e1fb2 100644 +--- a/addons/web/static/src/js/control_panel/search_utils.js ++++ b/addons/web/static/src/js/control_panel/search_utils.js +@@ -18,6 +18,8 @@ odoo.define('web.searchUtils', function (require) { + char: [ + { symbol: "ilike", description: _lt("contains") }, + { symbol: "not ilike", description: _lt("doesn't contain") }, ++ { symbol: "startswith", description: _lt("starts with") }, ++ { symbol: "endswith", description: _lt("ends with") }, + { symbol: "=", description: _lt("is equal to") }, + { symbol: "!=", description: _lt("is not equal to") }, + { symbol: "!=", description: _lt("is set"), value: false },