JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://api-maps.yandex.ru/2.1-dev/?lang=ru_RU&mode=debug&load=package.full,theme.islands.control.search.layout.PopupItem"></script>
<div id="mapContainer"></div>
CSS
#mapContainer {
width: 100%;
height: 400px;
}
JavaScript
// В &load добавлен модуль лейаута (theme.islands.control.search.layout.PopupItem),
// чтобы его сразу же можно было использовать.
// Иначе лейаут будет загружен асинхронно и это
// вызовет дополнительные сложности при его использовании.
ymaps.ready(init);
var myMap;
function init () {
myMap = new ymaps.Map('mapContainer', {
center: [55.75, 37.63],
zoom: 8,
controls: []
});
var ItemLayoutClass = ymaps.theme.islands.control.search.layout.PopupItem,
SearchItemLayout = function () {
SearchItemLayout.superclass.constructor.apply(this, arguments);
};
ymaps.util.augment(SearchItemLayout, ItemLayoutClass, {
build: function () {
SearchItemLayout.superclass.build.call(this);
var element = this.getElement();
this._itemElementListeners = ymaps.domEvent.manager.group(element)
.add('mouseenter', this._onMouseEnter, this)
.add('click', this._onClick, this);
},
clear: function () {
this._itemElementListeners.removeAll();
SearchItemLayout.superclass.clear.call(this);
},
_onMouseEnter: function () {
console.log('mouseenter');
},
_onClick: function (e) {
console.log('click');
}
});
var searchControl = new ymaps.control.SearchControl({
options: {
popupItemLayout: SearchItemLayout
}
});
myMap.controls.add(searchControl);
}