diff --git a/addons/mail/static/src/components/autocomplete_input/autocomplete_input.js b/addons/mail/static/src/components/autocomplete_input/autocomplete_input.js
index d5c27b082b1..a2da7d6bdc9 100644
--- a/addons/mail/static/src/components/autocomplete_input/autocomplete_input.js
+++ b/addons/mail/static/src/components/autocomplete_input/autocomplete_input.js
@@ -57,6 +57,13 @@ export class AutocompleteInput extends Component {
$(this.root.el).autocomplete('destroy');
}
+ /**
+ * @returns {AutocompleteInputView}
+ */
+ get autocompleteInputView() {
+ return this.messaging && this.messaging.models['AutocompleteInputView'].get(this.props.localId);
+ }
+
//--------------------------------------------------------------------------
// Public
//--------------------------------------------------------------------------
@@ -154,8 +161,6 @@ Object.assign(AutocompleteInput, {
defaultProps: {
isFocusOnMount: false,
isHtml: false,
- placeholder: '',
- onFocusin: () => {},
},
props: {
customClass: {
@@ -174,10 +179,7 @@ Object.assign(AutocompleteInput, {
type: Boolean,
optional: true,
},
- onFocusin: {
- type: Function,
- optional: true,
- },
+ localId: String,
onHide: {
type: Function,
optional: true,
diff --git a/addons/mail/static/src/components/autocomplete_input/autocomplete_input.xml b/addons/mail/static/src/components/autocomplete_input/autocomplete_input.xml
index 0946b325944..9f7a3ad68b1 100644
--- a/addons/mail/static/src/components/autocomplete_input/autocomplete_input.xml
+++ b/addons/mail/static/src/components/autocomplete_input/autocomplete_input.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/addons/mail/static/src/components/chat_window/chat_window.xml b/addons/mail/static/src/components/chat_window/chat_window.xml
index 9d79424b9fe..7d74faad3d5 100644
--- a/addons/mail/static/src/components/chat_window/chat_window.xml
+++ b/addons/mail/static/src/components/chat_window/chat_window.xml
@@ -40,10 +40,9 @@
diff --git a/addons/mail/static/src/components/discuss/discuss.js b/addons/mail/static/src/components/discuss/discuss.js
index 1e81074a169..23695f41bca 100644
--- a/addons/mail/static/src/components/discuss/discuss.js
+++ b/addons/mail/static/src/components/discuss/discuss.js
@@ -12,7 +12,6 @@ export class Discuss extends LegacyComponent {
setup() {
this._updateLocalStoreProps();
// bind since passed as props
- this._onMobileAddItemHeaderInputSelect = this._onMobileAddItemHeaderInputSelect.bind(this);
this._onMobileAddItemHeaderInputSource = this._onMobileAddItemHeaderInputSource.bind(this);
useUpdate({ func: () => this._update() });
this._onHideMobileAddItemHeader = this._onHideMobileAddItemHeader.bind(this);
@@ -93,25 +92,6 @@ export class Discuss extends LegacyComponent {
this.discussView.discuss.clearIsAddingItem();
}
- /**
- * @private
- * @param {Event} ev
- * @param {Object} ui
- * @param {Object} ui.item
- * @param {integer} ui.item.id
- */
- _onMobileAddItemHeaderInputSelect(ev, ui) {
- if (!this.discussView) {
- return;
- }
- const discuss = this.discussView.discuss;
- if (discuss.isAddingChannel) {
- discuss.handleAddChannelAutocompleteSelect(ev, ui);
- } else {
- discuss.handleAddChatAutocompleteSelect(ev, ui);
- }
- }
-
/**
* @private
* @param {Object} req
diff --git a/addons/mail/static/src/components/discuss/discuss.xml b/addons/mail/static/src/components/discuss/discuss.xml
index 229e96e8f7b..3217126a528 100644
--- a/addons/mail/static/src/components/discuss/discuss.xml
+++ b/addons/mail/static/src/components/discuss/discuss.xml
@@ -33,8 +33,8 @@
className="'o_Discuss_mobileAddItemHeaderInput'"
isFocusOnMount="true"
isHtml="discussView.discuss.isAddingChannel"
- placeholder="discussView.discuss.isAddingChannel ? discussView.discuss.addChannelInputPlaceholder : discussView.discuss.addChatInputPlaceholder"
- select="_onMobileAddItemHeaderInputSelect"
+ localId="discussView.mobileAddItemHeaderAutocompleteInputView.localId"
+ select="discussView.onMobileAddItemHeaderInputSelect"
source="_onMobileAddItemHeaderInputSource"
onHide="_onHideMobileAddItemHeader"
/>
diff --git a/addons/mail/static/src/components/discuss_sidebar_category/discuss_sidebar_category.xml b/addons/mail/static/src/components/discuss_sidebar_category/discuss_sidebar_category.xml
index 5ca3cbe1dc1..e66d479a496 100644
--- a/addons/mail/static/src/components/discuss_sidebar_category/discuss_sidebar_category.xml
+++ b/addons/mail/static/src/components/discuss_sidebar_category/discuss_sidebar_category.xml
@@ -31,9 +31,9 @@
this._mounted());
onWillUnmount(() => this._willUnmount());
}
@@ -67,13 +66,6 @@ export class MessagingMenu extends Component {
this.messagingMenu.close();
}
- /**
- * @private
- */
- _onHideMobileNewMessage() {
- this.messagingMenu.toggleMobileNewMessage();
- }
-
/**
* @private
* @param {Event} ev
diff --git a/addons/mail/static/src/components/messaging_menu/messaging_menu.xml b/addons/mail/static/src/components/messaging_menu/messaging_menu.xml
index cb1644c8379..dd6ccc53808 100644
--- a/addons/mail/static/src/components/messaging_menu/messaging_menu.xml
+++ b/addons/mail/static/src/components/messaging_menu/messaging_menu.xml
@@ -43,10 +43,10 @@
className="'o_MessagingMenu_mobileNewMessageInput'"
customClass="id + '_mobileNewMessageInputAutocomplete'"
isFocusOnMount="true"
- placeholder="messagingMenu.mobileNewMessageInputPlaceholder"
+ localId="messagingMenu.mobileNewMessageAutocompleteInputView.localId"
select="_onMobileNewMessageInputSelect"
source="_onMobileNewMessageInputSource"
- onHide="_onHideMobileNewMessage"
+ onHide="messagingMenu.onHideMobileNewMessage"
/>
diff --git a/addons/mail/static/src/models/autocomplete_input_view.js b/addons/mail/static/src/models/autocomplete_input_view.js
index b901cb6a047..1bda453b5ad 100644
--- a/addons/mail/static/src/models/autocomplete_input_view.js
+++ b/addons/mail/static/src/models/autocomplete_input_view.js
@@ -1,7 +1,8 @@
/** @odoo-module **/
import { registerModel } from '@mail/model/model_core';
-import { one } from '@mail/model/model_field';
+import { attr, one } from '@mail/model/model_field';
+import { clear } from '@mail/model/model_field_command';
registerModel({
name: 'AutocompleteInputView',
@@ -11,6 +12,40 @@ registerModel({
'discussViewOwnerAsMobileAddItemHeader',
'messagingMenuOwnerAsMobileNewMessageInput',
]],
+ recordMethods: {
+ /**
+ * @param {FocusEvent} ev
+ */
+ onFocusin(ev) {
+ if (this.chatWindowOwnerAsNewMessage) {
+ this.chatWindowOwnerAsNewMessage.onFocusInNewMessageFormInput(ev);
+ return;
+ }
+ },
+ /**
+ * @private
+ * @returns {string}
+ */
+ _computePlaceholder() {
+ if (this.chatWindowOwnerAsNewMessage) {
+ return this.chatWindowOwnerAsNewMessage.newMessageFormInputPlaceholder;
+ }
+ if (this.discussViewOwnerAsMobileAddItemHeader) {
+ if (this.discussViewOwnerAsMobileAddItemHeader.discuss.isAddingChannel) {
+ return this.discussViewOwnerAsMobileAddItemHeader.discuss.addChannelInputPlaceholder;
+ } else {
+ return this.discussViewOwnerAsMobileAddItemHeader.discuss.addChatInputPlaceholder;
+ }
+ }
+ if (this.discussSidebarCategoryOwnerAsAddingItem) {
+ return this.discussSidebarCategoryOwnerAsAddingItem.newItemPlaceholderText;
+ }
+ if (this.messagingMenuOwnerAsMobileNewMessageInput) {
+ return this.messagingMenuOwnerAsMobileNewMessageInput.mobileNewMessageInputPlaceholder;
+ }
+ return clear();
+ },
+ },
fields: {
chatWindowOwnerAsNewMessage: one('ChatWindow', {
inverse: 'newMessageAutocompleteInputView',
@@ -28,5 +63,8 @@ registerModel({
inverse: 'mobileNewMessageAutocompleteInputView',
readonly: true,
}),
+ placeholder: attr({
+ compute: '_computePlaceholder',
+ }),
},
});
diff --git a/addons/mail/static/src/models/discuss_view.js b/addons/mail/static/src/models/discuss_view.js
index 780a83e6fd1..0fb0d46d4cb 100644
--- a/addons/mail/static/src/models/discuss_view.js
+++ b/addons/mail/static/src/models/discuss_view.js
@@ -59,6 +59,22 @@ registerModel({
}
mailbox.open();
},
+ /**
+ * @param {Event} ev
+ * @param {Object} ui
+ * @param {Object} ui.item
+ * @param {integer} ui.item.id
+ */
+ onMobileAddItemHeaderInputSelect(ev, ui) {
+ if (!this.exists()) {
+ return;
+ }
+ if (this.discuss.isAddingChannel) {
+ this.discuss.handleAddChannelAutocompleteSelect(ev, ui);
+ } else {
+ this.discuss.handleAddChatAutocompleteSelect(ev, ui);
+ }
+ },
/**
* @private
* @returns {FieldCommand}
diff --git a/addons/mail/static/src/models/messaging_menu.js b/addons/mail/static/src/models/messaging_menu.js
index 2506144eef8..329f1c4b734 100644
--- a/addons/mail/static/src/models/messaging_menu.js
+++ b/addons/mail/static/src/models/messaging_menu.js
@@ -42,6 +42,9 @@ registerModel({
}
this.toggleOpen();
},
+ onHideMobileNewMessage() {
+ this.update({ isMobileNewMessageToggled: false });
+ },
/**
* Toggle the visibility of the messaging menu "new message" input in
* mobile.