- Исправлена ошибка с инвалидацией кеша элементов при изменении DOM (#1487).
- Исправлена ошибка в
i-bem-dom__events, приводившая к тому, что данные события не передавались в обработчик (#1509). - Исправлен метод
isEditableмодуляdom. Добавлены недостающие типы (#1502).
- Исправлены синтаксические ошибки в JSDoc блока
i-bem-dom. - Незначительные исправления документации.
- Добавлено CLA.
- В BEMHTML-шаблонах реализована поддержка
bem-xjst 8.x(#1486).
- Исправлена работа метода
concat()в i-bem-dom__collection (#1488). - Исправлена опечатка в
ua__dom, приводящая к runtime-ошибке при использовании touch-уровня (#1479). - dist: Исправлена ошибка, при которой
i-bem-dom__init_autoподключался вno-autoinit-бандл (#1482).
- Теперь методы
findChildBlock,findChildBlocks,findParentBlock,findParentBlocks,findMixedBlockиfindMixedBlocksвыбрасывают исключение, если блок передан строкой (#1469). - Оптимизирована функция построения имен классов (#1404).
- Добавлены переводы на английский (#1483, #1476, #1475).
- Миграционный гайд: добавлено примечание о
bemTarget(#1491). - Миграционный гайд: добавлено примечание о необходимых опциях для шаблонизаторов (#1467).
- Исправлены ошибки в документации.
— Исправлена ошибка в блоке ua на уровне touch.blocks, которая приводила к невозможности предоставить ym-зависимости (#1460).
- Исправлена проблема в
identifyс возвращением разного результата при вызове дляdocument(#1441). - Исправлена проблема с переполнением глубины стека вызовов
modules.define(#1446). - Исправлена поддержка эскейпинга в блоке
ua(#1435). - Реализован обход бага в
Array.prototype.pushвOpera 41. - Исправлены pointer-события на iOS-устройствах (#1253).
- Исправлена ошибка в
i-bem-dom__events, приводящая к неправильной работе методаonce()в некоторых случаях (#1452).
- Реализована возможность задавать атрибут
langдля<html>в блокеpage(#751).
- Изменения в блоке
i-bem. Подробнее в MIGRATION.ru.md. - Изменения в блоке
querystring. Подробнее в MIGRATION.ru.md. - Из модуля
identifyудален опциональный параметрonlyGet(#1028). - Из модуля
eventsудалены все статические методы (#1024). - В классе
Eventмодуляeventsудалено полеresult(#1023). - Элемент
cssблокаpageбольше не поддерживает автоматическое добавление условных комментариев для IE (#379).
- Исправлена проблема с переполнением глубины стека вызовов
modules.define(#1446). - Исправлена поддержка эскейпинга в блоке
ua(#1435). - Реализован обход бага в
Array.prototype.pushвOpera 41.
- Реализована возможность задавать атрибут
langдля<html>в блокеpage(#751).
- Исправлен баг в методе
getMods()блокаi-bem(#1379).
- Шаблоны: реализована поддержка режима экранирования (#1406).
- Мелкие исправления документации.
- Исправлены pointer-события на iOS-устройствах (#1253).
- Удалены базовые шаблоны и документация для
BEMHTMLиBEMTREE(#1258). Следует использовать версиюbem-xjstне ниже 6.3.0. - Расширения файлов BEMHTML-шаблонов переименованы с
*.bemhtmlна*.bemhtml.js(#984). Необходимо убедиться, что в конфиге сборки поддерживается новое расширение. - Удален элемент
i-bem__i18n(#1304). Для интернационализации следует использовать блокi18n. jquery__events_type_pointerclickбольше не использует библиотеку FastClick (#1088).
jQueryбыла обновлена до 2.2.3 и 1.12.3 (#1260).
- В блоке
pageна уровнеblocks.touchисправлена ошибка с невалидным значениемuser-scalable=0для<meta name=viewport>(#1294). - Исправлена ошибка в
jquery__event_type_pointernative, которая приводила к возникновению JS ошибки в IE8 (1317).
- dist: Автоматическая инициализация блоков теперь опциональна (#1271).
jQueryбыла обновлена до 2.2.0 и 1.12.0 (#1249).
- Исправлена ошибка в
BEMHTML 1.x, которая приводила к потереthis.modsвreapply()(#97).
- Теперь
jquery__event_type_pointerpressreleaseпредоставляетoriginalEvent(#1254). - dist: Поддержка
i18nдобавлена в dist (#1212). - Шаблон
page__css.bemhtmlбыл обновлен для поддержки новых версийbem-xjst(#1228).
- Реализован новый блок i18n, реализующий интернационализацию проектов на bem-core (#1074).
- Теперь
jQueryпо умолчанию подключается черезhttps(#1202). - Удалена зависимость от
bemhtml-compat(#1186). Пользователямbem-toolsнеобходимо выполнитьnpm i bemhtml-compat --saveдля установки пакета на уровне проекта.
- Исправлена ошибка в
loader_type_js, допускавшая вызовы неопределенного обработчика (#1159).
- BH-бандлы в
distтеперь мимикрируют под BEMHTML (#1210). - Улучшены шаблоны
bem createдляbemhtml,bemtree,vanilla.jsиbrowser.js(#1183). vowобновлена до0.4.10(#1056).
- В
i-bem__domдобавлен новый методdetach(#1102). - В
i-bem.bemhtmlдобавлена поддержка вложенных миксов (873). - В
i-bem.bemhtmlдобавлены незначительные оптимизации, связанные с эскейпингом аттрибутов (#961), (#980) и (#982). - В BEMHTML-шаблоны добавлена поддержка bem-xjst 2.x (#1021).
clearfixоптимизирован для работы в поддерживаемых библиотекой браузерах IE (#722).jqueryобновлен до версий 2.1.4 и 1.11.3 (#999).
- Исправлена ошибка в
i-bem__dom, из-за которой методfindElemне обновлял кэш ранее найденных элементов (#583). - Исправлена ошибка в
i-bem__dom, приводящая к неправильной работе методаdropElemCacheв некоторых граничных случаях (#1037). - Исправлена ошибка в
i-bem__dom, из-за которой вызов методаsetModне выставлял CSS-классы блоку в случае, если на DOM-узеле был подмешан блок с пересекающимся окончанием в имени (#1090). - Исправлена ошибка в
page, из-за которой на touch-уровнях не работало специализированное полеzoom(#1020). - Исправлена ошибка в
keyboard__codes. Клавишиinsertиdeleteбыли описаны неправильными кодами (#1002). - Исправлена ошибка в
i-bem.bemhtml, из-за которой неверно интерпретировались вложенные вызовыapplyNext(b1dc50c). - Исправлена ошибка в
jquery__events_type_pointernative, из-за которой события работали некорректно в браузерах IE 11 и Edge (#1066).
- Обновлена русская докуметация для всех блоков библиотеки. Документация доступна по адресу https://ru.bem.info/libs/bem-core/.
- Прочие улучшения в документации к библиотеке.
- Предоставление модуля
i-bem__domтеперь происходит после наступления события DOM ready (#859). - Методы
setModиhasModмодуляi-bem__domтеперь явно преобразуют параметрmodValк строке, если переданное значение не типа string или boolean (#890). - В блок
pageдобавлена возможность прокидывать атрибутnonce, для корректной работы инлайн-скриптов, в соответствии со спецификацией Content Security Policy (#882). - Добавлены шаблоны
page__conditional-comment(#551). - Модуль
vowобновлен до версии 0.4.8 (#837).
- Исправлена ошибка в
i-bem.bemhtml, из-за которой CSS-класс блока дублировался, в случае микса с этим же блоком (#792). - Исправлена ошибка в
loader_type_bundle, из-за которой функция-обработчик успешного результата могла выполняться после наступления таймаута (67ff55f). - Исправлена ошибка в
i-bem__dom, в некоторых случаях, приводящая к неправильной интерпретации строковых аргументов в методахappend,prependи др. (#852). - Исправлена ошибка в
jquery__event_type_winresize, из-за которой неправильно определятся браузер MSIE (#862). - Исправлена ошибка в
object, из-за которой методextendнеправильно обрабатывалnullв качестве значения аргументаtarget(#910). - Исправлена ошибка в
page. Из BEMJSON было невозможно отключить добавление meta-тегаx-ua-compatible(#794).
- Таймаут в
loader_type_bundleувеличен до 30000 мс (4e27422). - Исправлены незначительные ошибки в русской документации блоков.
- Исправлена ошибка в
jquery__pointerpressиjquery__pointerreleaseиз-за которой события не работали в браузере Internet Explorer 8 (#792). - Исправлена ошибка в
jquery__pointernative. Событияpointerenterиpointerleaveне должны всплывать по DOM-дереву (#801). - Исправлена ошибка в
loader_type_bundle. После загрузки, CSS-бандл добавлялся в самый верх HTML-тега<head>, из-за чего CSS-правила из содержимого бандла могли работать не корректно (#808). - Исправлена ошибка в BH-шаблоне
ua. Шаблон не позволял вставить содержимое блока из входного BEMJSON (#734). - Исправлена ошибка в
page, приводящая к неработоспособности добавленных на страницу условных комментариев для браузера Internet Explorer (#781).
jqueryобновлен до версий 2.1.3 и 1.11.2 (#778).- Добавлена документация на русском языке для модулей:
clearfix,cookie,identify,idle,inherit,keyboard,loader,next-tick,stringandtick. - Исправлена документация на русском языке для
i-bem.js. - Обновлено руководство на английском языке по технологиям BEMHTML и BEMJSON.
- Код библиотеки переведен на использование лицензии MPL 2.0 (#443).
- В модуль
loader_type_jsдобавлена возможность указывать функцию-обработчик ошибок (#672). - Класс
BEMContextдобавлен в export-параметры функцииoninitв базовых шаблонахi-bem.bemtree(#602). - В
BEMContextBEMTREE добавлен статический методreapplyпо аналогии с BEMHTML (#706). - Добавлены bh-шаблоны блока
pageдля уровней touch (#689). - npm-модуль bem-xjst обновлен до версии 0.9.0 (#709).
- Исправлена ошибка в
i-bem__dom, из-за которой методfindBlocksInsideмог возвращать блоки, которые еще не были инициализированы (#699). - Исправлена ошибка в
tick, позволявшая вызвать методstopбез освобождения внутреннего таймера (#694). - Исправлена ошибка в
i-bem.bemhtml, из-за которой на элементы блока добавлялся CSS-классi-bem(#633). - Исправлена ошибка в технологии
html-from-bemtree, из-за которой в контексте BEMTREE-шаблонов не было глобальных объектовvow,console,setTimeout(#438ebb8).
- Добавлено английское руководство по технологии BEMJSON.
- Обновлена русская документация для i-bem.js. Теперь документация соответсвует текущему API библиотеки.
- Обновлена документация для технологий BEMHTML/BEMTREE.
- npm-модуль bem-xjst обновлен до версии 0.8.0; bemhtml-compat обновлен до 0.0.11.
- Исправлена ошибка в
jquery__event_type_pointerpressrelease, из-за которой событияpointerpress/pointerreleaseгенерировались на нажатие любой кнопки мыши (#607). - Исправлена ошибка в
i-bem__dom.js, из-за которой в некоторых случаях не происходил вызов базового методаlive(#608).
- Добавлена английская документация на JS-синтаксис BEMHTML.
- Добавлена новая реализация pointer-событий на основе полифилов из Polymer (#567).
- Добавлена возможность в
i-bem__dom.jsуказывать дополнительные данные о событии в методахbindTo*(#568).
- Исправлена ошибка в
i-bem.bemhtml, из-за которой было невозможно использовать микс в виде одного объекта (не массива) одновременно в BEMJSON и BEMHTML (#555). - Исправлена ошибка в BEMHTML-шаблоне блока
page, из-за которой не выполнялись стандартные моды, и исправлена регрессия в шаблоне на touch-уровне (516).
- Исправлена ошибка в
i-bem.js, из-за которой событие об изменении модификатора генерировалось, даже если обработчикbeforeSetModпредотвращал изменение (#546). - В случае возникновения ошибки в процессе декодирования строки, модуль
querystring__uriтеперь возвращает оригинальную строку (#554).
- В модуле
i-bem__domбыл исправлен процесс удаления блока для предотвращения нежелательной повторной инициализации блока (#540). - Исправлена ошибка в модуле
jquery__event_type_pointer, из-за которой нативные события мыши ошибочно замещались на pointer-события (#534). unbindFrom*-методы в модулеi-bem__domтеперь поддерживают отписывание от нескольких событий за вызов (#533).- Добавлена недостающая зависимость от модуля
functionsв модулеevents(#532).
- Исправлена ошибка в модуле
i-bem__domприводящая к повторной инициализации блока на DOM-узле, отмеченном как удаленный (#518). - Исправлена ошибка в модуле
i-bem, из-за которой невозможно было подписаться на событие о выставлении модификатора в значениеfalse(#529). - Модуль
jqueryобновлен до версий 2.1.1 и 1.11.1 (#515).
- Исправлена ошибка в модуле
jquery__event_type_pointerpressrelease, из-за которой событиеpointerpressгенерировалось дважды на каждое событиеmousedownв IE10 (#505).
- Добавлен новый модуль
keyboard__codes(#431). - Класс
BEMContextдобавлен в export-параметры функцииoninitв базовых шаблонахi-bem.bemhtml(#485). - Добавлена возможность декларировать инстанс элемента используя класс блока (#481).
- Исправлено поведение метода
isSimpleкласса BEMContext в в базовых шаблонахi-bem.bemhtml(#432). - Исправлена ошибка в методе
liveUnbindFromмодуляBEMDOM(#476). - Исправлена ошибка в методе
isFocusableмодуляdom, возникающая если переданныйdomElemявляется ссылкой с атрибутомtabindex, но без атрибутаhref(#501). - Исправлена ошибка возникающая в процессе декларации БЭМ-блока как модуля, если был подключен
модуль
i-bem__dom_elem-instances(#479). - В модуле
i-bem__dom_init_autoдобавлено временное решение для проблем с производительностью ренедеринга при инициализации блоков в Chrome-браузерах (#486). - Модуль
vow.jsперенесен вvow.vanilla.js(#412).
- Модуль
vowобновлен до версии 0.4.3 (#504). - Добавлена русская документация на технологию BEMTREE (#500).
- Обновлена русская документация на JavaScript-синтаксис BEMHTML (#471).
- Добавлен референс на API JavaScript-модулей. См. ветку
v2-jsdoc(#478).
- Исправлена ошибка в
i-bem.js, из-за которой событие об изменении модификатора происходило до того, как будет вызван обработчик реакции на изменение этого модификатора вonSetMod(#454). - Свойства
this.modsиthis.ctx.modsбазового шаблонаi-bem.bemhtmlтеперь используют один и тот же объект (#441). - Модуль inherit обновлен до версии 2.2.1 (#466).
- Исправлен порядок тегов секции
headв шаблонеpage.bemhtml(#465).
- В русскую документацию к
i-bem.jsдобавлено описание поляbaseMix(#461). - CDN-хост внешних ресурсов изменен на
yastatic.net(#444). Все ресурсы все так же доступны с хостаyandex.st. Физическиyandex.stиyastatic.netнаходятся на одних и тех же серверах. Различие только в DNS-записях. - Добавлен базовый BEMHTML-шаблон для команды
bem createтехнологииbemhtml(#277). - Прекращен автоматический запуск тестов под Node.js 0.8 в Travis CI (#455).
- Иконка статуса автосборки Travis заменена на SVG :)
-
Из
i-bem.jsиi-bem__dom.jsудалены все deprecated методы (#318):destruct, используйтеonSetMod js '';extractParams, используйтеelemParams;trigger, используйтеemit;afterCurrentEvent, используйте модульnext-tick;channel, используйте модульevents__channels;changeThis, используйте нативныйFunction.prototype.bind.
-
Из
i-bem.jsубраны событияinitиdestruct. Вместо них следует использовать события об изменении модификатора (см. «Крупные изменения»). -
Блок
ecmaперенесен в отдельный репозиторий; ES5-shims следует использовать для IE < 9 (#230). -
Модуль
vowобновлен до мажорной версии 0.4.1 (#350). См. изменения в Vow. -
В
i-bem.bemhtmlдобавлена поддержка vow@0.4 (#385).
- Добавлена возможность декларировать BEMDOM-блоки как модули ym (#382).
- В
i-bem.jsдобавлены события об изменении модификатора (#357). - Добавлена поддержка использования строковых значений в качестве аргумента в методах
BEMDOM.init(#419) иBEMDOM.update(#420). - Методы
i-bem__dom.jsreplace,append,prepend,before,afterтеперь возвращают новый контекст, аupdate– изменённый (#410). - В
loaderдобавлен модификатор_type_bundle(#358). - jQuery обновлен до версии 2.1.0. Для IE < 9 — до версии 1.11.0 (#356).
- Базовые шаблоны в
i-bem.bemhtmlиспользуют конкатенацию строк вместо наполнения внутреннего буфера (#401). - jQuery больше не удаляет себя из глобальной области видимости, если присутствует на странице (#349).
jquery__event_type_pointerclick.jsперемещен с уровняtouch.blocksна уровеньcommon.blocks(#393).- Модификаторы
i-bem_elem-instances_yesиi-bem__dom_elem-instances_yesприведены к булевому стилю (#352). - Исправлена ошибка в шаблоне блока
page, возникающая при использовании development-режима BEMHTML (#417). - Для поддержки Android 2.3 внутри
i-bem.jsотказались от использованийFunction.prototype.bind(#404). - Исправлены ошибки в модуле технологии
browser-js+bemhtml(#392). - NPM-модуль
ymобновлен до версии 0.0.15 (#414).
- BEM-блоки инициируют событие
destructв процессе удаления (#370). - Исправлены полифилы для
pointerevents(#354).
- JSDoc блоков исправлен в соответствии с поддержкой bem-jsd (#335).
- Референс на BEMHTML обновлен для соответствия JavaScript-синтаксису шаблонизатора (#355).
- Переход на менеджер зависимостей bower (#367).
- Для современных браузеров
jquery__configподключает jQuery 2.x (#319). - Добавлена возможность использовать произвольный BEMJSON в качестве значения атрибутов в BEMHTML (#290).
- Исправлены зависимости в
i-bem__collection(#292). - Удалены CSS-стили блока
pageиз уровняtouch.blocks(#306). - Исправлена ошибка в BEMHTML-шаблоне блока
page, приводящая к зацикливанию шаблонизатора в production-режиме (#309). - Исправлена возможная ошибка в
next-tick, возникающая при вставке скрипта в DOM в IE<9 (#324). - Исправлена ошибка в инициализации плагина
FastClickв модулеjquery__event_type_pointerclickна уровнеtouch.blocks(#332). - Исправлена ошибка в технологии
node.jsв Windows (#274). - Исправлена ошибка в
onElemSetModвi-bem__dom_elem-instances(#340). - В технологии
bemhtmlиспользуется bem-xjst (#329).
- Модуль ym обновлен до версии 0.0.12 (#326).
- В ядре локализации
i-bem__i18nотключен вывод сообщений о неизвестных ключах, если не включен debug-режим (#285). - Инфраструктура сборки тестов и примеров переведена на bem-pr@v0.5.x (#323).
- Исправлен jsdoc для метода
dropElemCache()вi-bem__dom(#296). - Доработана документация для блока
i-bem.jsна русском языке. - В README проекта добавлен список поддерживаемых браузеров.
- Переход на модульную систему ym.
- Из
i-bem,i-bem__domубраны все deprecated-методы. i-bemбольше не зависит от jQuery.i-bem__domпродолжает зависеть от jQuery.- BEMHTML-шаблоны можно писать с использованием JS-синтаксиса.
- Новая технология
bemtree(на базе bem-xjst) для описания процесса динамического построения БЭМ-дерева. - Новая технология
vanilla.jsдля описания JS-реализации модулей, не зависящей от конкретного JavaScript движка. - Новые технологии
browser.jsиnode.jsдля описания JS-реализаций модулей (блоков) в соответствующих движках. Для совместимости с существующим кодом считаем, что файлы с расширением.jsсодержат реализацию блоков в технологииbrowser.js. - Система модульного тестирования и примеров для блоков в библиотеке.
- Появились полифилы (
jquery__event_type_pointerиjquery__event_type_pointerclickкак jQuery-плагины), позволяющие использовать универсальные события для десктопных и тач-интерфейсов. - Плагин для jQuery, позволяющий навешивать обработчик события на нажатие левой кнопки мыши, становится модулем
jquery__pointerclick. - В
i-bemи BEMHTML добавлена поддержка простых модификаторов (модификаторов без значений).
- Все блоки-модули, кроме
i-bem, избавились от префиксов. - Блок
i-bem__domстановится модулемi-bem__dom. Все BEM.DOM-блоки должны теперь доопределять этот модуль (пример). - Метод для декларации блоков (
.decl()) больше не принимает первым параметром объект с полемname. Теперь обязательная форма записи с полемblock:BEM.decl({ block: 'b1', modName: 'm', modVal: 'v' }, ...). - Вместо метода
afterCurrentEventу блоков появился методnextTick, который проверят существование блока в момент исполнения колбэка.BEM.afterCurrentEventтеперь deprecated. - Вместо
BEM.channelпоявился отдельный модульchannels.BEM.channelтеперь deprecated. - Метод
changeThisпомечен как deprecated. Используйте нативныйbind. - Метод
delудален из блокаi-bem. - Метод
getWindowSizeудален из блокаi-bem__dom. ИспользуйтеBEMDOM.win.width()иBEMDOM.win.height(). - Добавлен модуль-обертка
jquery, предоставляющий jQuery. Модуль либо предоставляет jQuery, уже присутствующий на странице, либо сам его загружает (версию 1.10.1). $.observableстановится модулемeventsи больше не зависит от jQuery.$.inheritстановится модулемinheritи больше не зависит от jQuery.$.identifyстановится модулемidentifyи больше не зависит от jQuery.$.throttleразбивается на два модуля:functions__throttleиfunctions__debounce, которые больше не зависят от jQuery.$.decodeURI,$.decodeURIComponentпереезжают в модульquerystring__uriи больше не зависят от jQuery.$.cookieстановится модулемcookieи больше не зависит от jQuery.- Вместо
$.browserпоявился модульuaс аналогичным интерфейсом. - Блок
i-systemразбит на 2 модуля:idleиtick. - Вместо события
leftclickследует использоватьpointerclick(предоставляемый полифиломjquery__event_type_pointerclick). - Триггеры на установку модификаторов теперь разделены на две группы: до установки модификатора (
beforeSetModиbeforeElemSetMod) и после (onSetModиonElemSetMod). Отмена установки модификатора теперь возможна только из триггеров первой группы. - Использовать конструкцию
{ onSetMod : { js : function() { ... } } }в качестве конструктора теперь deprecated, необходимо использоватьonSetMod: { js : { inited : ... } } }. - Вместо метода
destructвi-bemпоявился зеркальный метод дляonSetMod: { js : { inited : ... } } }—{ onSetMod : { js : { '' : ... } } }. Методdestructтеперь deprecated. - Метод
exractParamsвi-bem__domтеперь deprecated, для доступа к параметрам элементов нужно использовать методelemParams. - Метод
triggerвi-bemтеперь deprecated, нужно использоватьemit. - Метод
onFirstвi-bemтеперь deprecated, нужно использоватьonce. - Удалено deprecated поле
e.block, представляющее блок-источник события для BEM-событий. Вместо него следует использовать полеe.target. - Для доступа к DOM-элементу блока в обработчике DOM-событий теперь нужно использовать поле
currentTarget, предоставляемое jQuery. Вместоe.data.domElemнужно писать$(e.currentTarget). - В методе
findElemдобавлен параметр, позволяющий находить элемента блока с учетом вложенных блоков. - Добавлена возможность указывать конкретную функцию для отписки от событий в методах
unbindFrom*. - Добавлен модуль
objectsдля работы с JS-объектами (содержит методыextend,isEmpty,each). - Добавлен модуль
functionsдля работы с JS-функциями (содержит методыisFunction,noop). - Добавлен модуль
domдля хелперов при работе с DOM. - Добавлен модуль
querystringдля работы с урлами. - Добавлен модуль
loader_type_jsдля загрузки JS. - Добавлен модуль
vowдля работы с промисами. - Добавлен модуль
next-tickдля полифилаnextTick,setImmediate,setTimeout(0, ...и т.п.. - Добавлен модуль
strings__escape, содержащий методы для эскейпинга XML, HTML и атрибутов. - Модуль
inheritтеперь поддерживает миксины. - В модуле
functions__throttleдобавлен параметрinvokeAsap, позволяющий отложить первое исполнение.