Changelog
4.2.0
Notable changes
- bem-xjst 8.xsupport was introduced in BEMHTML templates (#1486).
Bug fixes
- concat()method was fixed in- i-bem-dom__collection(#1488).
- An issue in - ua__domwas fix (#1479).
- dist: - i-bem-dom__init_autowas removed from- no-autoinitbundle (#1482).
Other changes
- Now - findChildBlock,- findChildBlocks,- findParentBlock,- findParentBlocks,- findMixedBlockand- findMixedBlocksmethods throw an error if block is given as String (#1469).
- buildClassNamefunction was optimized (#1404).
- Docs: English translations were added (#1483, #1476, #1475). 
- Migration: Added notes about bemTarget (#1491). 
- Migration: added info about template options (#1467). 
- Fixed issues in docs. 
4.1.1
Bug fixes
— Fixed a bug in ua block on touch.blocks level (#1460).
4.1.0
Bug fixes
- Fixed a bug in - identifyreturning different result on each call for- document(#1441).
- modules.definerecursion problem was fixed (#1446).
- Support for escaping in - uablock was fixed (#1435).
- Workaround for - Array.prototype.pushbug in- Opera 41was implemented.
- An issue with pointer events on iOS devices was fixed (#1253). 
- An issue in - i-bem-dom__eventswas fixed. Method- once()was broken in some cases (#1452).
Other changes
- Ability to specify - html@langattribute was added to- pageblock (#751).
4.0.0
Breaking changes
- Changes in the - i-bemblock. See MIGRATION.md.
- Changes in the - querystring. See MIGRATION.md.
- The optional parameter - onlyGetwas removed from the- identifymodule (#1028).
- All static methods were removed from the - eventsmodule (#1024).
- The - resultfield in- Eventclass of- eventsmodule was removed (#1023).
- The - csselement of the- pageblock does not support auto insertion of conditional comments for IE (#379).
3.2.0
Bug fixes
- modules.definerecursion problem was fixed (#1446).
- Support for escaping in - uablock was fixed (#1435).
- Workaround for - Array.prototype.pushbug in- Opera 41was implemented.
Other changes
- Ability to specify - html@langattribute was added to- pageblock (#751).
3.1.0
Bug fixes
- An issue in - getMods()method of- i-bemwas fixed (#1379).
Notable changes
- Templates: support for escaped mode was introduced (#1406). 
Other changes
- Minor documentation updates. 
3.0.1
Bug fixes
- An issue with pointer events on iOS devices was fixed (#1253). 
3.0.0
Breaking changes
- Base templates for - BEMHTMLand- BEMTREEwere removed (#1258).- bem-xjst6.3.0+ should be used instead.
- File extentions of BEMHTML templates were renamed from - *.bemhtmlto- *.bemhtml.js(#984). Please check that new extention is supported in you build config.
- i-bem__i18nelement was removed (#1304). Please use- i18nblock for internationalization.
- jquery__events_type_pointerclickis not using FastClick anymore (#1088).
Notable changes
- jQuerywas updated to 2.2.3 and 1.12.3 (#1260).
Bug fixes
- An issue in - pagewas fixed.- <meta name=viewport>had wrong- user-scalablevalue on the touch level (#1294).
- An issue in - jquery__event_type_pointernativewhich led to JS error in IE8 was fixed (1317).
Other changes
- dist: Autoinitialisation of blocks is optional now (#1271). 
2.9.0
Notable changes
- jQuerywas updated to 2.2.0 and 1.12.0 (#1249).
Bug fixes
- Fixed bug in BEMHTML 1.x which leads to drop of - this.modsin- reapply()(#97).
Other changes
- jquery__event_type_pointerpressreleasenow exposes- originalEvent(#1254).
- dist: Support for - i18nwas added to dist (#1212).
- page__css.bemhtmltemplate was updated to support new- bem-xjstversions (#1228).
2.8.0
Notable changes
- New i18n block was introduced, providing support for internationalization (#1074). 
- Now jQuery is included via - httpsby default (#1202).
- Dependency on - bemhtml-compatwas dropped (#1186). Users of- bem-toolsneed to run- npm i bemhtml-compat --saveto install it on their projects.
Bug fixes
- Bug with undefined handler call in - loader_type_jswas fixed (#1159).
Other changes
- BH bundles in - distnow mimic to BEMHTML (#1210).
- bem createtemplates for- bemhtml,- bemtree,- vanilla.jsand- browser.jswere improved (#1183).
- vowwas updated to- 0.4.10(#1056).
2.7.0
Notable changes
- New - detachmethod was added to- i-bem__dom(#1102).
- i-bem.bemhtmlnow supports nested mixes as objects (873).
- Some minor attribute escaping optimizations were added to - i-bem.bemhtml(#961), (#980) and (#982).
- Support for bem-xjst 2.x was added to BEMHTML templates (#1021). 
- clearfixwas optimized to work properly in supported IE browsers (#722).
- jquerywas updated to 2.1.4 and 1.11.3 (#999).
Bug fixes
- An issue in - i-bem__domwas fixed.- findElemdidn't update cache of elements that had been found previously (#583).
- An issue in - i-bem__domwas fixed.- dropElemCacheworked incorrectly in some edge cases (#1037).
- An issue in - i-bem__domwas fixed.- setModdidn't add CSS classes if blocks on the same DOM node had overlapping end parts in their names (#1090).
- An issue in - pagewas fixed.- zoomattribute of the block didn't work for touch levels (#1020).
- An issue in - keyboard__codeswas fixed.- insertand- deletekeys had wrong key codes (#1002).
- An issue in - i-bem.bemhtmlwas fixed.- applyNextcalls were skipped in nested templates (b1dc50c).
- An issue in - jquery__events_type_pointernativewas fixed to work properly in IE 11/Edge (#1066).
Other changes
- Russian documentation for every blocks was reworked. Please visit https://ru.bem.info/libs/bem-core/ for new documentation. 
- Other minor improvements of the documentation. 
2.6.0
Notable changes
- Since now - i-bem__domprovides module after DOM is ready (#859).
- Since now - setModand- hasModmethods of- i-bem__domconvert their- modValargument to string in case it is not of type string or boolean (#890).
- An ability to pass - nonceattribute was added to- page, to support related parts of Content Security Policy specification (#882).
- New - page__conditional-commenttemplate was added (#551).
- vowwas updated to 0.4.8 (#837).
Bug fixes
- An issue in - i-bem.bemhtmlwas fixed. Block CSS class repeated in case of mix with the same block (#792).
- An issue in - loader_type_bundlewas fixed. Success callback might be applied after timeout error (67ff55f).
- An issue in - i-bem__domwas fixed.- append,- prependand other similar methods won't properly work with strings in some cases (#852).
- An issue in - jquery__event_type_winresizewas fixed. MSIE wasn't detected properly (#862).
- An issue in - objectwas fixed to proper handle- nullvalue as- targetargument in- extendmethod (#910).
- An issue in - pagewas fixed. There was no way to disable- x-ua-compatiblemeta tag from BEMJSON (#794).
Other changes
- Timeout in - loader_type_bundlemodule was increased to 30000 ms (4e27422).
- Russian documentation for several blocks was fixed. 
2.5.1
Bug fixes
- An issue in - jquery__pointerpressand- jquery__pointerreleasewas fixed. Events work now in Internet Explorer 8 (#792).
- An issue in - jquery__pointernativewas fixed.- pointerenterand- pointerleaveevents have bubbled up to the document root, while they shouldn't (#801).
- An issue in - loader_type_bundlewas fixed. CSS bundle has been always added to the top of the HTML- <head>, so CSS rules from the bundle might not work properly (#808).
- Issues in BH templates for - uawere fixed. There was no possibility to pass the content of the block from BEMJSON (#734).
- An issue in - pagewas fixed. There was a problem with conditional comments for Internet Explorer in the BH template of the block (#781).
Other changes
- jquerywas updated to the 2.1.3 and 1.11.2 (#778).
- Russian documentation for modules: - clearfix,- cookie,- identify,- idle,- inherit,- keyboard,- loader,- next-tick,- stringand- tickwas added.
- Russian documentation for - i-bem.jswas updated.
- English guides to BEMHTM and BEMJSON were updated. 
2.5.0
Notable changes
- An ability to specify error handler was added to - loader_type_js(#672).
- BEMContextclass was added to- oninitexport context in- i-bem.bemtree(#602).
- reapplystatic method was added to BEMContext class of BEMTREE (#706).
- bh templates for block - pagewere added to touch level (#689).
Bug fixes
- An issue in - i-bem__domwas fixed.- findBlocksInsidecould return blocks which weren't inited (#699).
- An issue in - tickwas fixed. Timer was not removed by- Tick#stop()(#694).
- An issue in - i-bem.bemhtmlwas fixed.- i-bemCSS class was added to elements by mistake (#633).
- html-from-bemtreetech was fixed to expose- vow,- console,- setTimeoutinside BEMTREE template context (#438ebb8).
Other changes
- English guide to BEMJSON was added. 
- Russian documentation for - querystringmodule was added.
- Russian documentation for - i-bem.jswas fixed to satisfy current API.
- Documentation for BEMHML/BEMTREE for both languages was updated. 
2.4.0
Notable changes
- bem-xjst was updated to 0.8.0; bemhtml-compat was updated to 0.0.11. 
Bug fixes
- An issue in - jquery__event_type_pointerpressreleasewas fixed.- pointerpress/- pointerreleaseevents fired for any press/release of mouse button (#607).
- An issue in - i-bem__dom.jswas fixed. Base- livemethod was not properly called in some edge cases (#608).
Other changes
- English documentation for JS-syntax of BEMHTML was added. 
2.3.0
Notable changes
- New implementation of pointer events was added. Based on pointer events polyfills from Polymer (#567). 
- Ability to specify additional data for event was added to - bindTo*methods of- i-bem__dom.js(#568).
Other changes
- An issue in - i-bem.bemhtmlwas fixed. There was an error when mix was used as an object (not an array) in BEMJSON and BEMHTML simultaneously (#555).
- An issue in - pagewas fixed. There was no possibility to apply standard modes to- pagein BEMHTML template and touch template was broken (516).
2.2.4
Bug fixes
- An issue in - i-bem.jswas fixed. Modifier change event has been emitted even if- beforeSetModhandler had prevented change (#546).
- String decoding process of - querystring__urimodule was fixed to return original string if decode failed (#554).
2.2.3
Bug fixes
- Destruction process of blocks was fixed to prevent unexpected block reinitialization (#540). 
- An issue in - jquery__event_type_pointerwas fixed. Native mouse events were replaced with pointer events in unexpected cases (#534).
- unbindFrom*methods of- i-bem__domnow support multiple events to be passed in arguments (#533).
- Lost - functionsdependency in- eventsmodule was restored (#532).
2.2.2
Bug fixes
- An issue with block reinitialization on the DOM node, that has been processed with destructor, was fixed in - i-bem__dom(#518).
- An issue in mod events subscription was fixed in - i-bem.- falsecould be used as- modVal(#529).
- jquerywas updated to the latest minor releases 2.1.1 and 1.11.1 (#515).
2.2.1
- An issue in - jquery__event_type_pointerpressreleasewas fixed.- pointerpressevent has been triggered twice on each mousedown in IE10 (#505).
2.2.0
Notable changes
- New - keyboard__codesmodule has been added (#431).
- BEMContextclass was added to oninit export context in- i-bem.bemhtml(#485).
- Ability to declare elements with block class has been added (#481). 
- Behaviour of - isSimplemethod of- BEMContextwas fixed in- i-bem.bemhtml(#432).
- An issue with - liveUnbindFrommethod of- BEMDOMwas fixed in- i-bem__dom(#476).
- An issue with - isFocusablemethod of- dommodule was fixed for cases where- domElemis a link with- tabindexattribute, but without- href(#501).
- Short way of module declaration was fixed for - i-bem__dom_elem-instances(#479).
- A workaround for rendering performance of blocks initialisation in Chrome-based browsers was added to - i-bem__dom_init_auto(#486).
- vow.jsmodule has been moved to- vow.vanilla.js(#412).
Other changes
- vowmodule has been updated to 0.4.3 (#504).
- Russian documentation about BEMTREE technology was added (#500). 
- Russian documentation for JS-syntax of BEMHTML was updated (#471). 
- API references for JS-modules has been added as a separate branch - v2-jsdoc(#478).
2.1.0
Notable changes
- An issue in - i-bem.jswhen modifiers change event had been emitted before- onSetModhandlers have been called was fixed (#454).
- An issue in - i-bem.bemhtmlwas fixed. Since now- this.modsand- this.ctx.modsuse the same object (#441).
- Error in modular declaration of element modifiers was fixed in - i-bem__dom_elem-instances(#447).
- An order of tags in - headsection of- page.bemhtmlwas fixed (#465).
Other changes
- baseMixfield description of- i-bem.jswas added to russian docs (#461).
- CDN host was changed to - yastatic.net(#444). Previous CDN host- yandex.stis still accessible. Physically they both are the same web servers. DNS records is the only difference.
- BEMHTML template for - bem createcommand was added (#277).
- We do not support autobuilding of our tests with Node.js 0.8 in Travis CI any longer (#455). 
- Travis's build status badge was changed to SVG version :) 
2.0.0
Breaking changes
- All deprecated methods have been removed from - i-bem.jsand- i-bem__dom.js(#318). The following methods were removed:- destruct, use- onSetMod js '';
- extractParams, use- elemParams;
- trigger, use- emit;
- afterCurrentEvent, use- next-tickmodule;
- channel, use- events__channelsmodule;
- changeThis, use native- Function.prototype.bind.
 
- initand- destructevents have been removed from- i-bem.jsin favor of modifiers changes events (see "Notable changes" section below).
- ecmawas moved to separate repo; ES5-shims should be used for IE < 9 (#230).
- vowmodule has been updated to 0.4.1 (#350). See Vow's changelog for changes.
- Support for vow@0.4 has been added to - i-bem.bemhtml(#385).
Notable changes
- Support for defining BEMDOM-blocks as ym modules has been added (#382). 
- Events for modifiers changes have been added to - i-bem.js(#357).
- Support for passing string values has been added to - BEMDOM.init(#419). and- BEMDOM.updatemethods (#420).
- DOM helpers from - i-bem__dom.js- replace,- append,- prepend,- before,- afternow return new context and- updatereturns updated context as a jQuery object (#410).
- New - loader_type_bundlehas been added (#358).
- Default jQuery versions were updated to 2.1.0 and to 1.11.0, for IE < 9 (#356). 
Other changes
- i-bem.bemhtmlnow uses strings concatination instead of pushing to buffer in it's internals (#401).
- jQuery no longer removes itself from global scope if it exists (#349). 
- jquery__event_type_pointerclick.jshas been moved from touch level to common (#393).
- Modifiers - i-bem_elem-instances_yesand- i-bem__dom_elem-instances_yeswere renamed to boolean style (#352).
- Runtime error in - pagetemplate in development mode has been fixed (#417).
- Usage of - Function.prototype.bindhas been droped from- i-bem.jsinternals in favor of support for Android 2.3 (#404).
- Some bugs in - browser-js+bemhtmltech have been fixed (#392).
1.2.0
Notable changes
- BEM-blocks are emit - destructevent on destructing (#370).
- Improvements of - pointereventspolyfills (#354).
Other changes
- Russian version of BEMHTML reference was actualized to JavaScript syntax (#355). 
1.1.0
Notable changes
- jquery__configuses jQuery 2.x by default for modern browsers (#319).
- Add ability to use any BEMJSON as value of attributes in BEMHTML templates (#290). 
- Fix dependencies in - i-bem__collection(#292).
- Remove - pageblock touch styles (#306).
- Fix - pageBEMHTML wrapping in production mode (#309).
- Fix possible JavaScript error in script injection in IE<9 in - next-tick (#324).9>
- Fix - FastClickinitialisation in- jquery__event_type_pointerclickof- touch.blocks(#332).
- Fix - node.jstech bug on Windows systems (#274).
- Fix - i-bem__dom_elem-instancesbug with- onElemSetMod(#340).
Other changes
- Do not flood - consolewith messages if- i-bem__i18nis not in debug mode (#285).
- Fix jsdoc for - dropElemCache()method of- i-bem__dommodule (#296).
- Development infrastructure was updated to bem-pr@v0.5.x (#323). 
- Russian documentation for - i-bem.jswas updated.
- List of supported browsers was specified in project README. 
1.0.0
Breaking changes
- Starts using modular system ym. 
- Removes all deprecated methods from - i-bemand- i-bem__dom.
- i-bemnow has no dependency on jQuery.- i-bem__domstill depends on jQuery.
- BEMHTML-template can be written with JS-syntax. 
- Introduces new tech - bemtree(based on bem-xjst) for describing dynamic generation of BEM-tree.
- Introduces new tech - vanilla.jsfor JS-implementations that does not depend on particular JS-engine.
- Introduces new techs - browser.jsand- node.jsfor JS-implementations targeted corresponding engines. For backward compatibility we assume that- .js-files contains- browser.jsimplementation.
- Introduces polyfill ( - jquery__event_type_pointerand- jquery__event_type_pointerclickas a jQuery-plugins) for universalize desktop and touch pointer events.
- Introduces system for unit testing and blocks examples generation. 
- Introduces "simple" modifiers (modifiers without value) support in - i-bemand BEMHTML.
Other changes
- Gets rid of prefixes in all block names (except - i-bem).
- Block - i-bem__dombecomes a module (in terms of ym) and all- BEM.DOM-block must define additions to- i-bem__dom(example).
- Method for blocks declaration ( - .decl()) does not accept object with- namefield as first parameter. Required form with- blockfield:- BEM.decl({ block: 'b1', modName: 'm', modVal: 'v' }, ...).
- Introduces - nextTickmethod as replacement for- afterCurrentEventmethod for ensure of block existence in callback invocation time.- BEM.afterCurrentEventis deprecated.
- Introduces new - channelsmodule instead of- BEM.channel.- BEM.channelis deprecated.
- changeThisis deprecated. Use native- bindinstead.
- Removes - delmethod from- i-bemblock.
- Removes - getWindowSizemethod from- i-bem__domblock. Use- BEMDOM.win.width()and- BEMDOM.win.height().
- Introduces - jquerymodule-wrapper for providing jQuery. If jQuery already included into the page module-wrapper provides it. Otherwise it loads jQuery (version 1.10.1) on its own.
- $.observablebecomes- eventsmodule and not longer depends on jQuery.
- $.inheritbecomes- inheritmodule and not longer depends on jQuery.
- $.identifybecomes- identifymodule and not longer depends on jQuery.
- $.throttlesplits into two modules:- functions__throttleand- functions__debounce, they both not longer depend on jQuery.
- $.decodeURI,- $.decodeURIComponentmoves to- querystring__urimodule and not longer depends on jQuery.
- $.cookiebecomes- cookiemodule and not longer depends on jQuery.
- Introduces - uamodule instead of- $.browser(with same interface).
- Use - pointerclickinstead of- leftclick. It provides by- jquery__event_type_pointerclickpolyfill.
- i-systemblock splits into two modules:- idleand- tick.
- Triggers for modifiers changes now splitted into two groups: before setting new value ( - beforeSetModand- beforeElemSetMod) and after the value has been set (- onSetModand- onElemSetMod). Cancellation of modifiers change is possible only from- before*-triggers.
- Using of - { onSetMod : { js : function() { ... } } }is deprecated, use- onSetMod: { js : { inited : ... } } }.
- destructmethod from- i-bemblock is deprecated. Use supplementary trigger for- _jsmodifiers:- onSetMod: { js : { inited : ... } } }—- { onSetMod : { js : { '' : ... } } }.
- exractParamsmethod from- i-bem__domblock is deprecated. Use- elemParamsmethod for access to elements params.
- triggermethod from- i-bemblock is deprecated in flavor of- emitmethod.
- onFirstmethod from- i-bemblock is deprecated in flavor of- oncemethod.
- Deprecated field - e.blockthat provided block-target of BEM-events was removed. Use- e.targetfield instead.
- Field - e.data.domElemthat provided DOM-element of block in DOM-events was removed. Use- $(e.currentTarget)(provided by jQuery).
- Introduces parameter for - findElemmethod that allows to search elements of particular block instance (in case of nested blocks with same name).
- Introduces possibility to point particular function in - unbindFrom*methods.
- Introduces - objectsmodule for work with JS-objects. It contains methods:- extend,- isEmpty,- each.
- Introduces - functionsmodule for work with JS-functions. It contains methods:- isFunction,- noop.
- Introduces - dommodule for work with DOM-tree.
- Introduces - querystringmodule for work with URL-based strings.
- Introduces - loader_type_jsmodule for JS loading.
- Introduces - vowmodule for Promises/A+.
- Introduces - next-tickmodule as polyfill for- nextTick,- setImmediate,- setTimeout(0, ...and etc.
- Introduces - strings__escapemodule for XML, HTML and attributes escaping.
- inheritmodule now supports mixins.
- Introduces - invokeAsapparameter for- functions__throttlemodule that allows to delay first invocation.