Changelog
4.2.0
Notable changes
bem-xjst 8.x
support was introduced in BEMHTML templates (#1486).
Bug fixes
concat()
method was fixed ini-bem-dom__collection
(#1488).An issue in
ua__dom
was fix (#1479).dist:
i-bem-dom__init_auto
was removed fromno-autoinit
bundle (#1482).
Other changes
Now
findChildBlock
,findChildBlocks
,findParentBlock
,findParentBlocks
,findMixedBlock
andfindMixedBlocks
methods throw an error if block is given as String (#1469).buildClassName
function 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
identify
returning different result on each call fordocument
(#1441).modules.define
recursion problem was fixed (#1446).Support for escaping in
ua
block was fixed (#1435).Workaround for
Array.prototype.push
bug inOpera 41
was implemented.An issue with pointer events on iOS devices was fixed (#1253).
An issue in
i-bem-dom__events
was fixed. Methodonce()
was broken in some cases (#1452).
Other changes
Ability to specify
html@lang
attribute was added topage
block (#751).
4.0.0
Breaking changes
Changes in the
i-bem
block. See MIGRATION.md.Changes in the
querystring
. See MIGRATION.md.The optional parameter
onlyGet
was removed from theidentify
module (#1028).All static methods were removed from the
events
module (#1024).The
result
field inEvent
class ofevents
module was removed (#1023).The
css
element of thepage
block does not support auto insertion of conditional comments for IE (#379).
3.2.0
Bug fixes
modules.define
recursion problem was fixed (#1446).Support for escaping in
ua
block was fixed (#1435).Workaround for
Array.prototype.push
bug inOpera 41
was implemented.
Other changes
Ability to specify
html@lang
attribute was added topage
block (#751).
3.1.0
Bug fixes
An issue in
getMods()
method ofi-bem
was 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
BEMHTML
andBEMTREE
were removed (#1258).bem-xjst
6.3.0+ should be used instead.File extentions of BEMHTML templates were renamed from
*.bemhtml
to*.bemhtml.js
(#984). Please check that new extention is supported in you build config.i-bem__i18n
element was removed (#1304). Please usei18n
block for internationalization.jquery__events_type_pointerclick
is not using FastClick anymore (#1088).
Notable changes
jQuery
was updated to 2.2.3 and 1.12.3 (#1260).
Bug fixes
An issue in
page
was fixed.<meta name=viewport>
had wronguser-scalable
value on the touch level (#1294).An issue in
jquery__event_type_pointernative
which led to JS error in IE8 was fixed (1317).
Other changes
dist: Autoinitialisation of blocks is optional now (#1271).
2.9.0
Notable changes
jQuery
was updated to 2.2.0 and 1.12.0 (#1249).
Bug fixes
Fixed bug in BEMHTML 1.x which leads to drop of
this.mods
inreapply()
(#97).
Other changes
jquery__event_type_pointerpressrelease
now exposesoriginalEvent
(#1254).dist: Support for
i18n
was added to dist (#1212).page__css.bemhtml
template was updated to support newbem-xjst
versions (#1228).
2.8.0
Notable changes
New i18n block was introduced, providing support for internationalization (#1074).
Now jQuery is included via
https
by default (#1202).Dependency on
bemhtml-compat
was dropped (#1186). Users ofbem-tools
need to runnpm i bemhtml-compat --save
to install it on their projects.
Bug fixes
Bug with undefined handler call in
loader_type_js
was fixed (#1159).
Other changes
BH bundles in
dist
now mimic to BEMHTML (#1210).bem create
templates forbemhtml
,bemtree
,vanilla.js
andbrowser.js
were improved (#1183).vow
was updated to0.4.10
(#1056).
2.7.0
Notable changes
New
detach
method was added toi-bem__dom
(#1102).i-bem.bemhtml
now 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).
clearfix
was optimized to work properly in supported IE browsers (#722).jquery
was updated to 2.1.4 and 1.11.3 (#999).
Bug fixes
An issue in
i-bem__dom
was fixed.findElem
didn't update cache of elements that had been found previously (#583).An issue in
i-bem__dom
was fixed.dropElemCache
worked incorrectly in some edge cases (#1037).An issue in
i-bem__dom
was fixed.setMod
didn't add CSS classes if blocks on the same DOM node had overlapping end parts in their names (#1090).An issue in
page
was fixed.zoom
attribute of the block didn't work for touch levels (#1020).An issue in
keyboard__codes
was fixed.insert
anddelete
keys had wrong key codes (#1002).An issue in
i-bem.bemhtml
was fixed.applyNext
calls were skipped in nested templates (b1dc50c).An issue in
jquery__events_type_pointernative
was 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__dom
provides module after DOM is ready (#859).Since now
setMod
andhasMod
methods ofi-bem__dom
convert theirmodVal
argument to string in case it is not of type string or boolean (#890).An ability to pass
nonce
attribute was added topage
, to support related parts of Content Security Policy specification (#882).New
page__conditional-comment
template was added (#551).vow
was updated to 0.4.8 (#837).
Bug fixes
An issue in
i-bem.bemhtml
was fixed. Block CSS class repeated in case of mix with the same block (#792).An issue in
loader_type_bundle
was fixed. Success callback might be applied after timeout error (67ff55f).An issue in
i-bem__dom
was fixed.append
,prepend
and other similar methods won't properly work with strings in some cases (#852).An issue in
jquery__event_type_winresize
was fixed. MSIE wasn't detected properly (#862).An issue in
object
was fixed to proper handlenull
value astarget
argument inextend
method (#910).An issue in
page
was fixed. There was no way to disablex-ua-compatible
meta tag from BEMJSON (#794).
Other changes
Timeout in
loader_type_bundle
module was increased to 30000 ms (4e27422).Russian documentation for several blocks was fixed.
2.5.1
Bug fixes
An issue in
jquery__pointerpress
andjquery__pointerrelease
was fixed. Events work now in Internet Explorer 8 (#792).An issue in
jquery__pointernative
was fixed.pointerenter
andpointerleave
events have bubbled up to the document root, while they shouldn't (#801).An issue in
loader_type_bundle
was 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
ua
were fixed. There was no possibility to pass the content of the block from BEMJSON (#734).An issue in
page
was fixed. There was a problem with conditional comments for Internet Explorer in the BH template of the block (#781).
Other changes
jquery
was updated to the 2.1.3 and 1.11.2 (#778).Russian documentation for modules:
clearfix
,cookie
,identify
,idle
,inherit
,keyboard
,loader
,next-tick
,string
andtick
was added.Russian documentation for
i-bem.js
was 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).BEMContext
class was added tooninit
export context ini-bem.bemtree
(#602).reapply
static method was added to BEMContext class of BEMTREE (#706).bh templates for block
page
were added to touch level (#689).
Bug fixes
An issue in
i-bem__dom
was fixed.findBlocksInside
could return blocks which weren't inited (#699).An issue in
tick
was fixed. Timer was not removed byTick#stop()
(#694).An issue in
i-bem.bemhtml
was fixed.i-bem
CSS class was added to elements by mistake (#633).html-from-bemtree
tech was fixed to exposevow
,console
,setTimeout
inside BEMTREE template context (#438ebb8).
Other changes
English guide to BEMJSON was added.
Russian documentation for
querystring
module was added.Russian documentation for
i-bem.js
was 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_pointerpressrelease
was fixed.pointerpress
/pointerrelease
events fired for any press/release of mouse button (#607).An issue in
i-bem__dom.js
was fixed. Baselive
method 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 ofi-bem__dom.js
(#568).
Other changes
An issue in
i-bem.bemhtml
was fixed. There was an error when mix was used as an object (not an array) in BEMJSON and BEMHTML simultaneously (#555).An issue in
page
was fixed. There was no possibility to apply standard modes topage
in BEMHTML template and touch template was broken (516).
2.2.4
Bug fixes
An issue in
i-bem.js
was fixed. Modifier change event has been emitted even ifbeforeSetMod
handler had prevented change (#546).String decoding process of
querystring__uri
module 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_pointer
was fixed. Native mouse events were replaced with pointer events in unexpected cases (#534).unbindFrom*
methods ofi-bem__dom
now support multiple events to be passed in arguments (#533).Lost
functions
dependency inevents
module 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
.false
could be used asmodVal
(#529).jquery
was updated to the latest minor releases 2.1.1 and 1.11.1 (#515).
2.2.1
An issue in
jquery__event_type_pointerpressrelease
was fixed.pointerpress
event has been triggered twice on each mousedown in IE10 (#505).
2.2.0
Notable changes
New
keyboard__codes
module has been added (#431).BEMContext
class was added to oninit export context ini-bem.bemhtml
(#485).Ability to declare elements with block class has been added (#481).
Behaviour of
isSimple
method ofBEMContext
was fixed ini-bem.bemhtml
(#432).An issue with
liveUnbindFrom
method ofBEMDOM
was fixed ini-bem__dom
(#476).An issue with
isFocusable
method ofdom
module was fixed for cases wheredomElem
is a link withtabindex
attribute, but withouthref
(#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.js
module has been moved tovow.vanilla.js
(#412).
Other changes
vow
module 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.js
when modifiers change event had been emitted beforeonSetMod
handlers have been called was fixed (#454).An issue in
i-bem.bemhtml
was fixed. Since nowthis.mods
andthis.ctx.mods
use 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
head
section ofpage.bemhtml
was fixed (#465).
Other changes
baseMix
field description ofi-bem.js
was added to russian docs (#461).CDN host was changed to
yastatic.net
(#444). Previous CDN hostyandex.st
is still accessible. Physically they both are the same web servers. DNS records is the only difference.BEMHTML template for
bem create
command 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.js
andi-bem__dom.js
(#318). The following methods were removed:destruct
, useonSetMod js ''
;extractParams
, useelemParams
;trigger
, useemit
;afterCurrentEvent
, usenext-tick
module;channel
, useevents__channels
module;changeThis
, use nativeFunction.prototype.bind
.
init
anddestruct
events have been removed fromi-bem.js
in favor of modifiers changes events (see "Notable changes" section below).ecma
was moved to separate repo; ES5-shims should be used for IE < 9 (#230).vow
module 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). andBEMDOM.update
methods (#420).DOM helpers from
i-bem__dom.js
replace
,append
,prepend
,before
,after
now return new context andupdate
returns updated context as a jQuery object (#410).New
loader_type_bundle
has 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.bemhtml
now 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.js
has been moved from touch level to common (#393).Modifiers
i-bem_elem-instances_yes
andi-bem__dom_elem-instances_yes
were renamed to boolean style (#352).Runtime error in
page
template in development mode has been fixed (#417).Usage of
Function.prototype.bind
has been droped fromi-bem.js
internals in favor of support for Android 2.3 (#404).Some bugs in
browser-js+bemhtml
tech have been fixed (#392).
1.2.0
Notable changes
BEM-blocks are emit
destruct
event on destructing (#370).Improvements of
pointerevents
polyfills (#354).
Other changes
Russian version of BEMHTML reference was actualized to JavaScript syntax (#355).
1.1.0
Notable changes
jquery__config
uses 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
page
block touch styles (#306).Fix
page
BEMHTML wrapping in production mode (#309).Fix possible JavaScript error in script injection in IE<9 in
next-tick (#324).9>
Fix
FastClick
initialisation injquery__event_type_pointerclick
oftouch.blocks
(#332).Fix
node.js
tech bug on Windows systems (#274).Fix
i-bem__dom_elem-instances
bug withonElemSetMod
(#340).
Other changes
Do not flood
console
with messages ifi-bem__i18n
is not in debug mode (#285).Fix jsdoc for
dropElemCache()
method ofi-bem__dom
module (#296).Development infrastructure was updated to bem-pr@v0.5.x (#323).
Russian documentation for
i-bem.js
was 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-bem
andi-bem__dom
.i-bem
now has no dependency on jQuery.i-bem__dom
still 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.js
for JS-implementations that does not depend on particular JS-engine.Introduces new techs
browser.js
andnode.js
for JS-implementations targeted corresponding engines. For backward compatibility we assume that.js
-files containsbrowser.js
implementation.Introduces polyfill (
jquery__event_type_pointer
andjquery__event_type_pointerclick
as 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-bem
and BEMHTML.
Other changes
Gets rid of prefixes in all block names (except
i-bem
).Block
i-bem__dom
becomes a module (in terms of ym) and allBEM.DOM
-block must define additions toi-bem__dom
(example).Method for blocks declaration (
.decl()
) does not accept object withname
field as first parameter. Required form withblock
field:BEM.decl({ block: 'b1', modName: 'm', modVal: 'v' }, ...)
.Introduces
nextTick
method as replacement forafterCurrentEvent
method for ensure of block existence in callback invocation time.BEM.afterCurrentEvent
is deprecated.Introduces new
channels
module instead ofBEM.channel
.BEM.channel
is deprecated.changeThis
is deprecated. Use nativebind
instead.Removes
del
method fromi-bem
block.Removes
getWindowSize
method fromi-bem__dom
block. UseBEMDOM.win.width()
andBEMDOM.win.height()
.Introduces
jquery
module-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.$.observable
becomesevents
module and not longer depends on jQuery.$.inherit
becomesinherit
module and not longer depends on jQuery.$.identify
becomesidentify
module and not longer depends on jQuery.$.throttle
splits into two modules:functions__throttle
andfunctions__debounce
, they both not longer depend on jQuery.$.decodeURI
,$.decodeURIComponent
moves toquerystring__uri
module and not longer depends on jQuery.$.cookie
becomescookie
module and not longer depends on jQuery.Introduces
ua
module instead of$.browser
(with same interface).Use
pointerclick
instead ofleftclick
. It provides byjquery__event_type_pointerclick
polyfill.i-system
block splits into two modules:idle
andtick
.Triggers for modifiers changes now splitted into two groups: before setting new value (
beforeSetMod
andbeforeElemSetMod
) and after the value has been set (onSetMod
andonElemSetMod
). Cancellation of modifiers change is possible only frombefore*
-triggers.Using of
{ onSetMod : { js : function() { ... } } }
is deprecated, useonSetMod: { js : { inited : ... } } }
.destruct
method fromi-bem
block is deprecated. Use supplementary trigger for_js
modifiers:onSetMod: { js : { inited : ... } } }
—{ onSetMod : { js : { '' : ... } } }
.exractParams
method fromi-bem__dom
block is deprecated. UseelemParams
method for access to elements params.trigger
method fromi-bem
block is deprecated in flavor ofemit
method.onFirst
method fromi-bem
block is deprecated in flavor ofonce
method.Deprecated field
e.block
that provided block-target of BEM-events was removed. Usee.target
field instead.Field
e.data.domElem
that provided DOM-element of block in DOM-events was removed. Use$(e.currentTarget)
(provided by jQuery).Introduces parameter for
findElem
method 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
objects
module for work with JS-objects. It contains methods:extend
,isEmpty
,each
.Introduces
functions
module for work with JS-functions. It contains methods:isFunction
,noop
.Introduces
dom
module for work with DOM-tree.Introduces
querystring
module for work with URL-based strings.Introduces
loader_type_js
module for JS loading.Introduces
vow
module for Promises/A+.Introduces
next-tick
module as polyfill fornextTick
,setImmediate
,setTimeout(0, ...
and etc.Introduces
strings__escape
module for XML, HTML and attributes escaping.inherit
module now supports mixins.Introduces
invokeAsap
parameter forfunctions__throttle
module that allows to delay first invocation.