EZ
Но навскидку:
у Вас есть блок наведение на который приводит к появлению попапа.
В родительском блоке вы слушаете наведение мышии на блок и в обработчике находите ваш попап (вы, например, можете примиксовать к нему свой элемент родительского блока) и показываете его.
В таком случае вроде не должно быть проблемы
modules.define( 'popup-tip', ['i-bem-dom', 'popup', 'link'], function( provide, bemDom, Popup, Link ) {
provide( bemDom.declBlock( this.name, {
onSetMod: {
js: {
inited() {
this._popup = this.findChildBlock( Popup );
this._link = this.findChildBlock( Link );
this._domEvents().on( 'mouseover', () => {
this._popup
.setAnchor( this._link )
.setMod( 'visible', true );
} );
this._domEvents().on( 'mouseleave', () => {
this._popup
.setAnchor( this._link )
.setMod( 'visible', false );
} );
}
}
}
} ) );
} );и вот в модалке:
modules.define( 'button', ['page', 'modal', 'i-bem-dom', 'BEMHTML'], ( provide, Page, Modal, bemDom, BEMHTML, Button ) => {
provide( Button.declMod( { modName: 'action', modVal: 'map' }, {
onSetMod: {
js: {
inited() {
this._modal = this.findParentBlock( Page )
._elem( 'modal' )
.findMixedBlock( Modal );
this._domEvents().on( 'click', () => {
console.log( '1: ', 1 );
} );
}
}
}
} ) );
} );вижу выход слушать не у попапа а у какого-то модификатора, но непонятно зачем такой заведомый нахлест


