├── test.blocks
├── blocks-common
├── .gitignore
├── i-bem
│ ├── __i18n
│ │ ├── test
│ │ │ ├── files
│ │ │ │ ├── empty-01.xml
│ │ │ │ ├── bem-i18n-bemjson.bemhtml
│ │ │ │ ├── bem-i18n-api.json
│ │ │ │ ├── bem-i18n-bemjson.html
│ │ │ │ ├── bem-i18n-api.html
│ │ │ │ ├── bem-i18n-lang.html
│ │ │ │ ├── html-01.xml
│ │ │ │ ├── literal-01.xml
│ │ │ │ ├── literal-02.xml
│ │ │ │ ├── literal-03.xml
│ │ │ │ ├── bem-i18n.html
│ │ │ │ ├── bem-i18n-lang.json
│ │ │ │ ├── entity-01.xml
│ │ │ │ ├── dynamic-03.xml
│ │ │ │ ├── json-01.xml
│ │ │ │ ├── bem-i18n.json
│ │ │ │ ├── param-xml-01.xml
│ │ │ │ ├── bem-i18n-lang.bemhtml
│ │ │ │ ├── bem-i18n-bemjson.json
│ │ │ │ ├── bem-i18n.bemhtml
│ │ │ │ ├── html-02.xml
│ │ │ │ ├── bem-i18n-api.bemhtml
│ │ │ │ ├── param-empty-01.xml
│ │ │ │ ├── dynamic-01.xml
│ │ │ │ ├── complex-01.xml
│ │ │ │ └── dynamic-02.xml
│ │ │ └── test-js-parser.js
│ │ ├── _dummy
│ │ │ ├── i-bem__i18n_dummy_yes.deps.js
│ │ │ └── i-bem__i18n_dummy_yes.bemhtml
│ │ ├── i-bem__i18n.deps.js
│ │ ├── i-bem__i18n.i18n
│ │ │ └── all.js
│ │ ├── i-bem__i18n.bemhtml
│ │ └── lib
│ │ │ └── i18n-js.js
│ ├── __html
│ │ ├── test
│ │ │ ├── files
│ │ │ │ ├── i-bem
│ │ │ │ │ ├── gh-289.html
│ │ │ │ │ ├── comments.html
│ │ │ │ │ ├── gh-289.json
│ │ │ │ │ ├── single-mix.html
│ │ │ │ │ ├── comments.json
│ │ │ │ │ ├── empty-attrs.html
│ │ │ │ │ ├── empty-attrs.json
│ │ │ │ │ ├── gh-232.json
│ │ │ │ │ ├── gh-239.html
│ │ │ │ │ ├── gh-550.json
│ │ │ │ │ ├── looped-mix.json
│ │ │ │ │ ├── one-symbol-elem.html
│ │ │ │ │ ├── single-mix.json
│ │ │ │ │ ├── escaping-this.json
│ │ │ │ │ ├── escaping-this.html
│ │ │ │ │ ├── gh-254.bemhtml
│ │ │ │ │ ├── gh-550.html
│ │ │ │ │ ├── looped-mix.html
│ │ │ │ │ ├── local-var.html
│ │ │ │ │ ├── gh-239.json
│ │ │ │ │ ├── one-symbol-elem.bemhtml
│ │ │ │ │ ├── one-symbol-elem.json
│ │ │ │ │ ├── gh-232.html
│ │ │ │ │ ├── gh-254.html
│ │ │ │ │ ├── gh-289.bemhtml
│ │ │ │ │ ├── nested-mix.json
│ │ │ │ │ ├── local-var.json
│ │ │ │ │ ├── single-mix.bemhtml
│ │ │ │ │ ├── empty-attrs.bemhtml
│ │ │ │ │ ├── custom-predicates.bemhtml
│ │ │ │ │ ├── nested-mix.html
│ │ │ │ │ ├── gh-239.bemhtml
│ │ │ │ │ ├── comments.bemhtml
│ │ │ │ │ ├── gh-550.bemhtml
│ │ │ │ │ ├── custom-predicates.html
│ │ │ │ │ ├── looped-mix.bemhtml
│ │ │ │ │ ├── re-entrant.bemhtml
│ │ │ │ │ ├── escaping-this.bemhtml
│ │ │ │ │ ├── gh-254.json
│ │ │ │ │ ├── custom-predicates.json
│ │ │ │ │ ├── gh-232.bemhtml
│ │ │ │ │ ├── nested-mix.bemhtml
│ │ │ │ │ ├── basic-block.html
│ │ │ │ │ ├── local-var.bemhtml
│ │ │ │ │ ├── basic-block.json
│ │ │ │ │ └── basic-block.bemhtml
│ │ │ │ ├── cache
│ │ │ │ │ ├── basic.html
│ │ │ │ │ ├── basic.bemhtml
│ │ │ │ │ └── basic.json
│ │ │ │ └── basic
│ │ │ │ │ └── hash.bemhtml
│ │ │ ├── jail-test.js
│ │ │ └── basic-test.js
│ │ ├── i-bem__html.deps.js
│ │ └── lib
│ │ │ ├── bemhtml.js
│ │ │ └── bemhtml
│ │ │ ├── checks.js
│ │ │ └── cache.js
│ ├── __internal
│ │ └── i-bem__internal.deps.js
│ ├── bem
│ │ └── techs
│ │ │ ├── i18n.js+bemhtml.js
│ │ │ ├── v2
│ │ │ ├── i18n.js+bemhtml.js
│ │ │ └── js-i.js
│ │ │ └── js-i.js
│ ├── __dom
│ │ ├── i-bem__dom.deps.js
│ │ └── _init
│ │ │ └── i-bem__dom_init_auto.js
│ ├── i-bem.deps.js
│ ├── i-bem.en.doc.js
│ └── i-bem.test.js
├── i-jquery
│ ├── i-jquery.deps.js
│ ├── _version
│ │ ├── i-jquery_version.deps.js
│ │ └── i-jquery_version.bemhtml
│ ├── __observable
│ │ └── i-jquery__observable.deps.js
│ ├── __is-empty-object
│ │ └── i-jquery__is-empty-object.js
│ └── __identify
│ │ └── i-jquery__identify.js
├── .bem
│ └── level.js
├── b-menu-vert
│ ├── __title
│ │ ├── b-menu-vert__title.bemhtml
│ │ └── b-menu-vert__title.ru.md
│ ├── __trigger
│ │ ├── b-menu-vert__trigger.bemhtml
│ │ ├── b-menu-vert__trigger.css
│ │ └── b-menu-vert__trigger.ru.md
│ ├── __separator
│ │ ├── b-menu-vert__separator.bemhtml
│ │ └── b-menu-vert__separator.css
│ ├── __item-content
│ │ ├── b-menu-vert__item-content.css
│ │ ├── b-menu-vert__item-content.ru.md
│ │ ├── b-menu-vert__item-content.deps.js
│ │ └── _visibility
│ │ │ ├── b-menu-vert__item-content_visibility_visible.en.md
│ │ │ ├── b-menu-vert__item-content_visibility_visible.ru.md
│ │ │ └── b-menu-vert__item-content_visibility_visible.css
│ ├── __submenu
│ │ └── b-menu-vert__submenu.ru.md
│ ├── b-menu-vert.js
│ ├── __item
│ │ └── b-menu-vert__item.ru.md
│ ├── b-menu-vert.css
│ ├── b-menu-vert.deps.js
│ ├── b-menu-vert.en.md
│ ├── __item-selector
│ │ └── b-menu-vert__item-selector.ru.md
│ └── b-menu-vert.bemhtml
├── i-system
│ ├── i-system.deps.js
│ └── i-system.js
├── b-page
│ ├── __js
│ │ ├── b-page__js.deps.js
│ │ └── b-page__js.bemhtml
│ ├── __csp
│ │ ├── b-page__csp.deps.js
│ │ └── b-page__csp.bemhtml
│ └── b-page.deps.js
├── i-ua
│ ├── i-ua.deps.js
│ └── i-ua.bemhtml
├── i-ecma
│ ├── i-ecma.ru.md
│ ├── __string
│ │ ├── i-ecma__string.js
│ │ └── i-ecma__string.test.js
│ ├── __function
│ │ ├── i-ecma__function.js
│ │ └── i-ecma__function.test.js
│ └── __object
│ │ ├── i-ecma__object.js
│ │ └── i-ecma__object.test.js
├── i-menu
│ ├── i-menu.deps.js
│ ├── i-menu.ru.md
│ └── i-menu.js
├── b-icon
│ ├── b-icon.en.md
│ └── b-icon.ru.md
├── b-link
│ └── b-link.en.md
└── i-request-animation-frame
│ └── i-request-animation-frame.js
├── common.blocks
├── desktop.blocks
├── touch.blocks
├── .bem
├── configs
│ └── current.js
├── levels
│ ├── examples-set.js
│ ├── examples.js
│ ├── sets.js
│ └── bundles.js
├── techs
│ ├── i18n.desc.wiki.js
│ ├── i18n.title.txt.js
│ ├── examples.js
│ └── bemjson.js.js
└── level.js
├── blocks-test
├── i-jasmine
│ ├── i-jasmine.en.title.txt
│ ├── i-jasmine.ru.title.txt
│ ├── __runner
│ │ ├── i-jasmine__runner.en.title.txt
│ │ ├── i-jasmine__runner.ru.title.txt
│ │ └── i-jasmine__runner.js
│ ├── __reporter
│ │ ├── i-jasmine__reporter.en.title.txt
│ │ ├── i-jasmine__reporter.ru.title.txt
│ │ └── _type
│ │ │ ├── i-jasmine__reporter_type_html.ru.title.txt
│ │ │ ├── i-jasmine__reporter_type_console.ru.title.txt
│ │ │ ├── i-jasmine__reporter_type_html.en.title.txt
│ │ │ └── i-jasmine__reporter_type_console.en.title.txt
│ └── i-jasmine.deps.js
├── .bem
│ └── level.js
├── i-bem
│ └── __test
│ │ ├── i-bem__test.deps.js
│ │ └── i-bem__test.bemhtml
└── i-phantom
│ └── i-phantom.js
├── blocks-touch
├── b-link
│ ├── b-link.examples
│ │ ├── 10-simple-bem.en.title.txt
│ │ ├── 10-simple-bem.ru.title.txt
│ │ ├── 30-ico-bem.en.title.txt
│ │ ├── 30-ico-bem.ru.title.txt
│ │ ├── 20-target-bem.en.title.txt
│ │ ├── 20-target-bem.ru.title.txt
│ │ ├── .bem
│ │ │ └── level.js
│ │ ├── 10-simple-bem.bemjson.js
│ │ ├── 20-target-bem.bemjson.js
│ │ └── 30-ico-bem.bemjson.js
│ ├── b-link.deps.js
│ ├── b-link.css
│ ├── b-link.bemhtml
│ └── b-link.ru.md
├── b-icon
│ ├── b-icon.examples
│ │ ├── 10-simple-bem.en.title.txt
│ │ ├── 10-simple-bem.ru.title.txt
│ │ ├── .bem
│ │ │ └── level.js
│ │ └── 10-simple-bem.bemjson.js
│ ├── b-icon.css
│ ├── b-icon.bemhtml
│ └── b-icon.ru.md
├── b-slider
│ ├── b-slider.examples
│ │ ├── 10-simple-bem.ru.title.txt
│ │ ├── 10-simple-bem.en.title.txt
│ │ ├── 40-perscreen-bem.ru.title.txt
│ │ ├── 60-simple-two-bem.en.title.txt
│ │ ├── 60-simple-two-bem.ru.title.txt
│ │ ├── 40-perscreen-bem.en.title.txt
│ │ ├── 30-simple-images-bem.ru.title.txt
│ │ ├── 20-simple-nonfirst-bem.en.title.txt
│ │ ├── 20-simple-nonfirst-bem.ru.title.txt
│ │ ├── 30-simple-images-bem.en.title.txt
│ │ ├── 50-perscreen-nonfirst-bem.ru.title.txt
│ │ ├── .bem
│ │ │ └── level.js
│ │ ├── 50-perscreen-nonfirst-bem.en.title.txt
│ │ ├── 10-simple-bem.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-my-slider
│ │ │ │ └── b-my-slider.css
│ │ ├── 40-perscreen-bem.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-my-slider
│ │ │ │ └── b-my-slider.css
│ │ ├── 60-simple-two-bem.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-my-slider
│ │ │ │ └── b-my-slider.css
│ │ ├── 20-simple-nonfirst-bem.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-my-slider
│ │ │ │ └── b-my-slider.css
│ │ ├── 30-simple-images-bem.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-my-slider
│ │ │ │ └── b-my-slider.css
│ │ └── 50-perscreen-nonfirst-bem.blocks
│ │ │ ├── .bem
│ │ │ └── level.js
│ │ │ └── b-my-slider
│ │ │ └── b-my-slider.css
│ ├── b-slider.deps.js
│ ├── b-slider.css
│ ├── b-slider.bemhtml
│ └── b-slider.ru.md
├── b-menu
│ ├── __gap
│ │ └── b-menu__gap.css
│ ├── b-menu.examples
│ │ ├── 10-horiz-bem.en.title.txt
│ │ ├── 40-vert-bem.en.title.txt
│ │ ├── 40-vert-bem.ru.title.txt
│ │ ├── 10-horiz-bem.ru.title.txt
│ │ ├── 30-horiz-simple-bem.en.title.txt
│ │ ├── 20-horiz-title-bem.en.title.txt
│ │ ├── 50-vert-title-bem.en.title.txt
│ │ ├── 30-horiz-simple-bem.ru.title.txt
│ │ ├── 50-vert-title-bem.ru.title.txt
│ │ ├── 20-horiz-title-bem.ru.title.txt
│ │ └── .bem
│ │ │ └── level.js
│ ├── b-menu.css
│ ├── __title
│ │ └── b-menu__title.css
│ ├── _layout
│ │ ├── b-menu_layout_vert.css
│ │ ├── b-menu_layout_horiz-simple.css
│ │ └── b-menu_layout_horiz.css
│ └── b-menu.bemhtml
├── b-page
│ ├── b-page.examples
│ │ ├── 10-simple-bem.en.title.txt
│ │ ├── 10-simple-bem.ru.title.txt
│ │ ├── .bem
│ │ │ └── level.js
│ │ └── 10-simple-bem.ru.md
│ ├── b-page.css
│ └── b-page.ru.md
├── .bem
│ └── level.js
├── i-jquery
│ ├── __tap
│ │ ├── i-jquery__tap.deps.js
│ │ └── i-jquery__tap.js
│ └── __core
│ │ └── i-jquery__core.bemhtml
├── i-pressed-controller
│ ├── i-pressed-controller.deps.js
│ └── i-pressed-controller.js
└── i-bem
│ └── i-bem.deps.js
├── blocks-desktop
├── b-logo
│ ├── b-logo.examples
│ │ ├── 10-b-logo.en.title.txt
│ │ ├── 10-b-logo.ru.title.txt
│ │ ├── 20-b-logo-link.en.title.txt
│ │ ├── 20-b-logo-link.ru.title.txt
│ │ ├── 30-b-logo-slogan.en.title.txt
│ │ ├── 30-b-logo-slogan.ru.title.txt
│ │ ├── 10-b-logo.blocks
│ │ │ ├── b-logo
│ │ │ │ ├── b-logo.css
│ │ │ │ └── b-logo.png
│ │ │ └── .bem
│ │ │ │ └── level.js
│ │ ├── 20-b-logo-link.blocks
│ │ │ ├── b-logo
│ │ │ │ ├── b-logo.css
│ │ │ │ └── b-logo.png
│ │ │ └── .bem
│ │ │ │ └── level.js
│ │ ├── 30-b-logo-slogan.blocks
│ │ │ ├── b-logo
│ │ │ │ ├── b-logo.css
│ │ │ │ └── b-logo.png
│ │ │ └── .bem
│ │ │ │ └── level.js
│ │ ├── .bem
│ │ │ └── level.js
│ │ ├── 10-b-logo.bemjson.js
│ │ ├── 20-b-logo-link.bemjson.js
│ │ └── 30-b-logo-slogan.bemjson.js
│ ├── b-logo.deps.js
│ ├── b-logo.bemhtml
│ └── b-logo.ru.md
├── b-icon
│ ├── b-icon.examples
│ │ ├── 10-b-icon-src.ru.title.txt
│ │ ├── 20-b-icon-css.ru.title.txt
│ │ ├── 30-b-icon-sprite.ru.title.txt
│ │ ├── .bem
│ │ │ └── level.js
│ │ ├── 20-b-icon-css.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-icon
│ │ │ │ └── b-icon.css
│ │ ├── 30-b-icon-sprite.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-icon
│ │ │ │ └── b-icon.css
│ │ ├── 20-b-icon-css.bemjson.js
│ │ ├── 30-b-icon-sprite.bemjson.js
│ │ └── 10-b-icon-src.bemjson.js
│ ├── b-icon.css
│ ├── b-icon.gif
│ ├── b-icon.en.md
│ └── b-icon.bemhtml
├── b-link
│ ├── b-link.examples
│ │ ├── 10-b-link-link.en.title.txt
│ │ ├── 20-b-link-pseudo.en.title.txt
│ │ ├── 10-b-link-link.ru.title.txt
│ │ ├── 20-b-link-pseudo.ru.title.txt
│ │ ├── 30-b-link-inner.ru.title.txt
│ │ ├── 30-b-link-inner.en.title.txt
│ │ ├── 40-b-link-dynamic-pseudo.en.title.txt
│ │ ├── 40-b-link-dynamic-pseudo.ru.title.txt
│ │ ├── 30-b-link-inner.blocks
│ │ │ ├── b-link
│ │ │ │ └── b-link.css
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-page
│ │ │ │ └── b-page.deps.js
│ │ ├── .bem
│ │ │ └── level.js
│ │ ├── 20-b-link-pseudo.blocks
│ │ │ ├── b-link
│ │ │ │ └── b-link.css
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-page
│ │ │ │ └── b-page.deps.js
│ │ ├── 30-b-link-inner.ru.md
│ │ ├── 40-b-link-dynamic-pseudo.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ ├── b-page
│ │ │ │ ├── b-page.css
│ │ │ │ ├── b-page.deps.js
│ │ │ │ └── b-page.js
│ │ │ └── b-lazy-link
│ │ │ │ └── b-lazy-link.js
│ │ ├── 10-b-link-link.bemjson.js
│ │ └── 40-b-link-dynamic-pseudo.bemjson.js
│ ├── __inner
│ │ ├── b-link__inner.bemhtml
│ │ ├── b-link__inner.en.md
│ │ └── b-link__inner.ru.md
│ ├── _disabled
│ │ ├── b-link_disabled_yes.en.md
│ │ ├── b-link_disabled_yes.ru.md
│ │ └── b-link_disabled_yes.css
│ ├── b-link.deps.js
│ ├── _inner
│ │ ├── b-link_inner_yes.deps.js
│ │ ├── b-link_inner_yes.en.md
│ │ ├── b-link_inner_yes.ru.md
│ │ └── b-link_inner_yes.css
│ ├── _pseudo
│ │ ├── b-link_pseudo_yes.deps.js
│ │ ├── b-link_pseudo_yes.en.md
│ │ ├── b-link_pseudo_yes.ru.md
│ │ ├── b-link_pseudo.deps.js
│ │ ├── b-link_pseudo_yes.ie.css
│ │ ├── b-link_pseudo_yes.css
│ │ ├── b-link_pseudo.bemhtml
│ │ └── b-link_pseudo_yes.js
│ └── b-link.bemhtml
├── b-page
│ ├── b-page.deps.js
│ ├── b-page.examples
│ │ ├── 10-b-page-simple.en.title.txt
│ │ ├── 20-b-page-simple.en.title.txt
│ │ ├── 20-b-page-simple.ru.title.txt
│ │ ├── 10-b-page-simple.ru.title.txt
│ │ ├── 30-b-page-with-js.en.title.txt
│ │ ├── 30-b-page-with-js.ru.title.txt
│ │ ├── 40-b-page-with-level.en.title.txt
│ │ ├── 40-b-page-with-level.ru.title.txt
│ │ ├── 60-page-nodeps-bem.en.title.txt
│ │ ├── 60-page-nodeps-bem.ru.title.txt
│ │ ├── .bem
│ │ │ └── level.js
│ │ ├── 70-csp-with-nonce.blocks
│ │ │ ├── b-page
│ │ │ │ └── b-page.deps.js
│ │ │ └── .bem
│ │ │ │ └── level.js
│ │ ├── 30-b-page-with-js.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-page
│ │ │ │ └── b-page.deps.js
│ │ ├── 60-page-nodeps-bem.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-page
│ │ │ │ └── b-page.deps.js
│ │ ├── 40-b-page-with-level.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-page
│ │ │ │ ├── b-page.css
│ │ │ │ └── b-page.deps.js
│ │ ├── 10-b-page-simple.ru.md
│ │ ├── 40-b-page-with-level.ru.md
│ │ ├── 20-b-page-simple.bemjson.js
│ │ ├── 40-b-page-with-level.bemjson.js
│ │ ├── 30-b-page-with-js.bemjson.js
│ │ ├── 30-b-page-with-js.ru.md
│ │ └── 70-csp-with-nonce.bemjson.js
│ ├── __css
│ │ ├── b-page__css.deps.js
│ │ └── b-page__css.bemhtml
│ └── b-page.ru.md
├── i-bem
│ ├── i-bem.examples
│ │ ├── 15-i-bem-click.en.title.txt
│ │ ├── 15-i-bem-click.ru.title.txt
│ │ ├── 17-i-bem-square.en.title.txt
│ │ ├── 17-i-bem-square.ru.title.txt
│ │ ├── 20-i-bem-liveinit-multiple.en.title.txt
│ │ ├── 20-i-bem-liveinit-multiple.ru.title.txt
│ │ ├── 60-i-bem-pseudo-link.ru.title.txt
│ │ ├── 17-i-bem-square.blocks
│ │ │ ├── b-square
│ │ │ │ ├── b-square.bemhtml
│ │ │ │ ├── _size
│ │ │ │ │ └── b-square_size_big.css
│ │ │ │ ├── b-square.css
│ │ │ │ ├── b-square.deps.js
│ │ │ │ └── b-square.js
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-page
│ │ │ │ └── b-page.deps.js
│ │ ├── 60-i-bem-pseudo-link.en.title.txt
│ │ ├── 40-i-bem-extend.en.title.txt
│ │ ├── .bem
│ │ │ └── level.js
│ │ ├── 40-i-bem-extend.ru.title.txt
│ │ ├── 15-i-bem-click.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ ├── b-square
│ │ │ │ ├── _color
│ │ │ │ │ └── b-square_color_green.css
│ │ │ │ ├── b-square.css
│ │ │ │ └── b-square.deps.js
│ │ │ └── b-page
│ │ │ │ └── b-page.deps.js
│ │ ├── 40-i-bem-extend.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ ├── b-link
│ │ │ │ └── _action
│ │ │ │ │ ├── b-link_action_alert.deps.js
│ │ │ │ │ └── b-link_action_alert.js
│ │ │ └── b-page
│ │ │ │ └── b-page.deps.js
│ │ ├── 60-i-bem-pseudo-link.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ ├── b-pseudo-link-example
│ │ │ │ ├── b-pseudo-link-example.bemhtml
│ │ │ │ └── b-pseudo-link-example.js
│ │ │ └── b-page
│ │ │ │ └── b-page.deps.js
│ │ ├── 20-i-bem-liveinit-multiple.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ ├── b-tv
│ │ │ │ ├── _touched
│ │ │ │ │ └── b-tv_touched_yes.css
│ │ │ │ ├── __click
│ │ │ │ │ └── b-tv__click.css
│ │ │ │ ├── b-tv.css
│ │ │ │ ├── __over
│ │ │ │ │ └── b-tv__over.css
│ │ │ │ ├── _state
│ │ │ │ │ ├── b-tv_state_profilaktika.css
│ │ │ │ │ └── b-tv_state_profilaktika.gif
│ │ │ │ ├── b-tv.deps.js
│ │ │ │ └── b-tv.bemhtml
│ │ │ └── b-page
│ │ │ │ └── b-page.deps.js
│ │ ├── 17-i-bem-square.bemjson.js
│ │ ├── 15-i-bem-click.bemjson.js
│ │ ├── 20-i-bem-liveinit-multiple.ru.md
│ │ ├── 15-i-bem-click.ru.md
│ │ ├── 20-i-bem-liveinit-multiple.bemjson.js
│ │ ├── 40-i-bem-extend.bemjson.js
│ │ ├── 60-i-bem-pseudo-link.bemjson.js
│ │ └── 40-i-bem-extend.ru.md
│ └── tests
│ │ └── 10-base_bem.blocks
│ │ ├── .bem
│ │ └── level.js
│ │ └── i-bem
│ │ ├── __live-ctx
│ │ └── i-bem__live-ctx.test.js
│ │ ├── __init
│ │ └── i-bem__init.test.js
│ │ ├── __elem-params
│ │ └── i-bem__elem-params.test.js
│ │ └── __contains-dom-elem
│ │ └── i-bem__contains-dom-elem.js
├── i-ua
│ ├── i-ua.deps.js
│ └── i-ua.examples
│ │ ├── .bem
│ │ └── level.js
│ │ └── 10-i-ua.blocks
│ │ ├── .bem
│ │ └── level.js
│ │ ├── b-page
│ │ ├── b-page.css
│ │ ├── b-page.bemhtml
│ │ └── b-page.deps.js
│ │ ├── button
│ │ └── button.bemhtml
│ │ ├── b-text
│ │ └── b-text.css
│ │ └── checkbox
│ │ └── checkbox.bemhtml
├── b-layout-table
│ ├── b-layout-table.examples
│ │ ├── 10-b-layout-table.en.title.txt
│ │ ├── 10-b-layout-table.ru.title.txt
│ │ ├── 20-b-layout-table-rows.en.title.txt
│ │ ├── 20-b-layout-table-rows.ru.title.txt
│ │ ├── .bem
│ │ │ └── level.js
│ │ ├── 10-b-layout-table.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-layout-table
│ │ │ │ └── _layout
│ │ │ │ └── b-layout-table_layout_60-40.css
│ │ ├── 20-b-layout-table-rows.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-layout-table
│ │ │ │ └── _layout
│ │ │ │ └── b-layout-table_layout_18-20-60.css
│ │ └── 10-b-layout-table.bemjson.js
│ ├── b-layout-table.css
│ └── b-layout-table.bemhtml
├── b-text-list
│ ├── _type
│ │ └── b-text-list_type_ol.bemhtml
│ ├── b-text-list.deps.js
│ ├── _label
│ │ ├── b-text-list_label_disc.css
│ │ ├── b-text-list_label_none.css
│ │ ├── b-text-list_label_circle.css
│ │ └── b-text-list_label_square.css
│ ├── _position
│ │ └── b-text-list_position_inside.css
│ ├── b-text-list.ru.md
│ └── b-text-list.bemhtml
├── .bem
│ └── level.js
├── b-menu-horiz
│ ├── __title
│ │ └── b-menu-horiz__title.bemhtml
│ ├── b-menu-horiz.js
│ ├── b-menu-horiz.examples
│ │ ├── 05-b-menu-horiz-simple.en.title.txt
│ │ ├── 05-b-menu-horiz-simple.ru.title.txt
│ │ ├── 10-b-menu-horiz-normal.en.title.txt
│ │ ├── 10-b-menu-horiz-normal.ru.title.txt
│ │ ├── 20-b-menu-horiz-complex.en.title.txt
│ │ ├── 20-b-menu-horiz-complex.ru.title.txt
│ │ ├── 30-b-menu-horiz-normal-js.en.title.txt
│ │ ├── 30-b-menu-horiz-normal-js.ru.title.txt
│ │ ├── .bem
│ │ │ └── level.js
│ │ ├── 10-b-menu-horiz-normal.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-menu-horiz
│ │ │ │ └── b-menu-horiz.css
│ │ ├── 20-b-menu-horiz-complex.blocks
│ │ │ └── .bem
│ │ │ │ └── level.js
│ │ ├── 30-b-menu-horiz-normal-js.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ ├── b-page
│ │ │ │ └── b-page.deps.js
│ │ │ └── b-menu-horiz
│ │ │ │ └── b-menu-horiz.css
│ │ └── 30-b-menu-horiz-normal-js.ru.md
│ ├── b-menu-horiz.deps.js
│ ├── _layout
│ │ ├── b-menu-horiz_layout_normal.deps.js
│ │ ├── b-menu-horiz_layout_simple.deps.js
│ │ ├── b-menu-horiz_layout_simple.css
│ │ ├── b-menu-horiz_layout_normal.ie.css
│ │ ├── b-menu-horiz_layout_complex.ru.md
│ │ ├── b-menu-horiz_layout_normal.bemhtml
│ │ ├── b-menu-horiz_layout_normal.css
│ │ ├── b-menu-horiz_layout_complex.bemhtml
│ │ ├── b-menu-horiz_layout_complex.css
│ │ ├── b-menu-horiz_layout_simple.bemhtml
│ │ └── b-menu-horiz_layout_simple.ru.md
│ ├── b-menu-horiz.en.md
│ └── b-menu-horiz.bemhtml
├── b-text
│ ├── b-text.examples
│ │ ├── .bem
│ │ │ └── level.js
│ │ └── 10-b-text-simple.blocks
│ │ │ └── .bem
│ │ │ └── level.js
│ ├── b-text.bemhtml
│ ├── _type
│ │ ├── b-text_type_global.ru.md
│ │ └── b-text_type_global.css
│ ├── b-text.ru.md
│ └── b-text.css
├── b-search
│ ├── b-search.examples
│ │ ├── .bem
│ │ │ └── level.js
│ │ ├── 20-b-search-under.blocks
│ │ │ ├── .bem
│ │ │ │ └── level.js
│ │ │ └── b-search
│ │ │ │ └── b-search.deps.js
│ │ ├── 10-b-search.bemjson.js
│ │ └── 20-b-search-under.bemjson.js
│ ├── b-search.deps.js
│ ├── __layout
│ │ ├── b-search__layout.css
│ │ └── b-search__layout.ru.md
│ ├── b-search.css
│ └── b-search.ru.md
└── i-jquery
│ ├── __outsideclick
│ ├── i-jquery__outsideclick.deps.js
│ └── i-jquery__outsideclick.js
│ ├── __core
│ └── i-jquery__core.bemhtml
│ └── __leftclick
│ └── i-jquery__leftclick.js
├── desktop.sets
└── .bem
│ └── level.js
├── touch-pad.sets
└── .bem
│ └── level.js
├── touch-phone.sets
└── .bem
│ └── level.js
├── .jshintrc
├── .travis.yml
├── .gitignore
├── README.md
├── package.json
└── git_hooks
└── pre-commit
└── jshint
/test.blocks:
--------------------------------------------------------------------------------
1 | blocks-test
--------------------------------------------------------------------------------
/blocks-common/.gitignore:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/common.blocks:
--------------------------------------------------------------------------------
1 | blocks-common
--------------------------------------------------------------------------------
/desktop.blocks:
--------------------------------------------------------------------------------
1 | blocks-desktop
--------------------------------------------------------------------------------
/touch.blocks:
--------------------------------------------------------------------------------
1 | blocks-touch
--------------------------------------------------------------------------------
/.bem/configs/current.js:
--------------------------------------------------------------------------------
1 | module.exports = {};
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/empty-01.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/i-jasmine.en.title.txt:
--------------------------------------------------------------------------------
1 | Unit tests library
2 |
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/i-jasmine.ru.title.txt:
--------------------------------------------------------------------------------
1 | Библиотека для unit-тестов
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.examples/10-simple-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Link
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.examples/10-simple-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Ссылка
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/10-b-logo.en.title.txt:
--------------------------------------------------------------------------------
1 | Simple logo
2 |
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/__runner/i-jasmine__runner.en.title.txt:
--------------------------------------------------------------------------------
1 | Tests runner
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-icon/b-icon.examples/10-simple-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Simple icon
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-289.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n-bemjson.bemhtml:
--------------------------------------------------------------------------------
1 | block b1, tag: 'span'
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/10-b-icon-src.ru.title.txt:
--------------------------------------------------------------------------------
1 | Простая иконка
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/10-b-link-link.en.title.txt:
--------------------------------------------------------------------------------
1 | Simple link
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/20-b-link-pseudo.en.title.txt:
--------------------------------------------------------------------------------
1 | Pseudo-link
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/10-b-logo.ru.title.txt:
--------------------------------------------------------------------------------
1 | Простой логотип
2 |
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/__runner/i-jasmine__runner.ru.title.txt:
--------------------------------------------------------------------------------
1 | "Запускатор" тестов
--------------------------------------------------------------------------------
/blocks-touch/b-icon/b-icon.examples/10-simple-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Простая иконка
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.examples/30-ico-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Link with an icon
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.examples/30-ico-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Ссылка с иконкой
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/10-simple-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Простой слайдер
--------------------------------------------------------------------------------
/.bem/levels/examples-set.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('./bundles.js');
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/comments.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-289.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1"
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/single-mix.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n-api.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1"
3 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-link/__inner/b-link__inner.bemhtml:
--------------------------------------------------------------------------------
1 | block b-link, elem inner, tag: 'span'
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/10-b-link-link.ru.title.txt:
--------------------------------------------------------------------------------
1 | Обычная ссылка
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/20-b-link-pseudo.ru.title.txt:
--------------------------------------------------------------------------------
1 | Псевдоссылка
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/30-b-link-inner.ru.title.txt:
--------------------------------------------------------------------------------
1 | Ссылки с иконками
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/20-b-logo-link.en.title.txt:
--------------------------------------------------------------------------------
1 | Logo with a link
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/20-b-logo-link.ru.title.txt:
--------------------------------------------------------------------------------
1 | Логотип-ссылка
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | shouldDeps: {elems: ['css']}
3 | });
4 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/15-i-bem-click.en.title.txt:
--------------------------------------------------------------------------------
1 | Click event handler
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/15-i-bem-click.ru.title.txt:
--------------------------------------------------------------------------------
1 | Обработчик события click
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/__reporter/i-jasmine__reporter.en.title.txt:
--------------------------------------------------------------------------------
1 | Tests reporter
2 |
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/__reporter/i-jasmine__reporter.ru.title.txt:
--------------------------------------------------------------------------------
1 | Репортер для тестов
--------------------------------------------------------------------------------
/blocks-touch/b-menu/__gap/b-menu__gap.css:
--------------------------------------------------------------------------------
1 | .b-menu__gap
2 | {
3 | width: 100%;
4 | }
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/10-horiz-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Horizontal menu layout
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/40-vert-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Vertical menu layout
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-page/b-page.examples/10-simple-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Random blocks page
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/10-simple-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Simple slider
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/40-perscreen-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Поэкранный слайдер
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/comments.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1"
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/empty-attrs.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/empty-attrs.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1"
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-232.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "para"
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-239.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-550.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1"
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/looped-mix.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1"
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/one-symbol-elem.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/single-mix.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1"
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n-bemjson.html:
--------------------------------------------------------------------------------
1 | test
2 |
--------------------------------------------------------------------------------
/blocks-common/i-jquery/i-jquery.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | shouldDeps: {mod: 'version'}
3 | });
4 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/30-b-link-inner.en.title.txt:
--------------------------------------------------------------------------------
1 | Links with the icons
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/30-b-logo-slogan.en.title.txt:
--------------------------------------------------------------------------------
1 | Logo with a slogan
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/30-b-logo-slogan.ru.title.txt:
--------------------------------------------------------------------------------
1 | Логотип со слоганом
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/40-vert-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Вертикальная раскладка меню
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/60-simple-two-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Two simple sliders
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/60-simple-two-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Два простых слайдера
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/escaping-this.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1"
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/20-b-icon-css.ru.title.txt:
--------------------------------------------------------------------------------
1 | Иконка, определённая в CSS
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/10-b-page-simple.en.title.txt:
--------------------------------------------------------------------------------
1 | Page with random blocks
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-ua/i-ua.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{ block: 'i-bem', elems: 'html' }]
3 | })
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/__reporter/_type/i-jasmine__reporter_type_html.ru.title.txt:
--------------------------------------------------------------------------------
1 | HTML-репортер
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/10-horiz-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Горизонтальная раскладка меню
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/40-perscreen-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Screen-by-screen slider
2 |
--------------------------------------------------------------------------------
/desktop.sets/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('bem-sets/levels/sets');
2 |
--------------------------------------------------------------------------------
/touch-pad.sets/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('bem-sets/levels/sets');
2 |
--------------------------------------------------------------------------------
/blocks-common/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__title/b-menu-vert__title.bemhtml:
--------------------------------------------------------------------------------
1 | block b-menu-vert, elem title, tag: 'h3'
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/escaping-this.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-254.bemhtml:
--------------------------------------------------------------------------------
1 | block blah {
2 | tag: 'div'
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-550.html:
--------------------------------------------------------------------------------
1 | foo bar
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/looped-mix.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n-api.html:
--------------------------------------------------------------------------------
1 | key2
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/30-b-icon-sprite.ru.title.txt:
--------------------------------------------------------------------------------
1 | Иконка с использованием спрайта
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.examples/10-b-layout-table.en.title.txt:
--------------------------------------------------------------------------------
1 | Simple layout
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_disabled/b-link_disabled_yes.en.md:
--------------------------------------------------------------------------------
1 | Makes a link or a pseudolink disabled.
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/20-b-page-simple.en.title.txt:
--------------------------------------------------------------------------------
1 | Page with CSS-file connected
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/20-b-page-simple.ru.title.txt:
--------------------------------------------------------------------------------
1 | Страница, подключающая CSS-файл
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text-list/_type/b-text-list_type_ol.bemhtml:
--------------------------------------------------------------------------------
1 | block b-text-list, mod type ol, tag: 'ol'
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/17-i-bem-square.en.title.txt:
--------------------------------------------------------------------------------
1 | Changing a block modifier by click
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/17-i-bem-square.ru.title.txt:
--------------------------------------------------------------------------------
1 | Изменение модификатора блока по-клику
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.en.title.txt:
--------------------------------------------------------------------------------
1 | LiveInit on few events
2 |
--------------------------------------------------------------------------------
/blocks-test/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/__reporter/_type/i-jasmine__reporter_type_console.ru.title.txt:
--------------------------------------------------------------------------------
1 | Консольный репортер
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/__reporter/_type/i-jasmine__reporter_type_html.en.title.txt:
--------------------------------------------------------------------------------
1 | HTML-reporter
2 |
--------------------------------------------------------------------------------
/blocks-touch/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.examples/20-target-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Link which opens in a new window
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.examples/20-target-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Ссылка, открывающаяся в новом окне
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/30-horiz-simple-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Simple horizontal menu layout
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-page/b-page.examples/10-simple-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Страница с произвольными блоками
2 |
--------------------------------------------------------------------------------
/touch-phone.sets/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('bem-sets/levels/sets');
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__trigger/b-menu-vert__trigger.bemhtml:
--------------------------------------------------------------------------------
1 | block b-menu-vert, elem trigger, tag: 'span'
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/local-var.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n-lang.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-desktop/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.css:
--------------------------------------------------------------------------------
1 | .b-icon
2 | {
3 | font: 0/0 a;
4 |
5 | border: 0;
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.examples/10-b-layout-table.ru.title.txt:
--------------------------------------------------------------------------------
1 | Простая раскладка
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.examples/20-b-layout-table-rows.en.title.txt:
--------------------------------------------------------------------------------
1 | Complex layout
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_disabled/b-link_disabled_yes.ru.md:
--------------------------------------------------------------------------------
1 | Делает ссылку или псевдоссылку неактивной.
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/__title/b-menu-horiz__title.bemhtml:
--------------------------------------------------------------------------------
1 | block b-menu-horiz, elem title, tag: 'h3'
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.js:
--------------------------------------------------------------------------------
1 | BEM.DOM.decl({ name: 'b-menu-horiz', baseBlock: 'i-menu' });
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/10-b-page-simple.ru.title.txt:
--------------------------------------------------------------------------------
1 | Страница с произвольными блоками
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.ru.title.txt:
--------------------------------------------------------------------------------
1 | LiveInit по нескольким событиям
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/60-i-bem-pseudo-link.ru.title.txt:
--------------------------------------------------------------------------------
1 | Реакция на события вложенных блоков (1)
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/__reporter/_type/i-jasmine__reporter_type_console.en.title.txt:
--------------------------------------------------------------------------------
1 | Console reporter
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-icon/b-icon.css:
--------------------------------------------------------------------------------
1 | .b-icon
2 | {
3 | display: inline-block;
4 |
5 | border: 0;
6 | }
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/20-horiz-title-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Horizontal menu layout with a title
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/50-vert-title-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Vertical menu layout with a title
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-239.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "blabla",
3 | "elem": "gap"
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/one-symbol-elem.bemhtml:
--------------------------------------------------------------------------------
1 | block b, elem a {
2 | tag: 'x'
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/html-01.xml:
--------------------------------------------------------------------------------
1 |
2 | Это строка
приведёт к падению
3 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/literal-01.xml:
--------------------------------------------------------------------------------
1 | null
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/literal-02.xml:
--------------------------------------------------------------------------------
1 | 500
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/literal-03.xml:
--------------------------------------------------------------------------------
1 | true
--------------------------------------------------------------------------------
/blocks-common/i-system/i-system.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem'}
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bem/bem-bl/HEAD/blocks-desktop/b-icon/b-icon.gif
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.examples/20-b-layout-table-rows.ru.title.txt:
--------------------------------------------------------------------------------
1 | Сложная раскладка
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/10-b-logo.blocks/b-logo/b-logo.css:
--------------------------------------------------------------------------------
1 | .b-logo
2 | {
3 | margin: 20px;
4 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/05-b-menu-horiz-simple.en.title.txt:
--------------------------------------------------------------------------------
1 | Simple horizontal menu
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/30-b-page-with-js.en.title.txt:
--------------------------------------------------------------------------------
1 | Page with connected JS- and CSS-files
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/30-b-page-with-js.ru.title.txt:
--------------------------------------------------------------------------------
1 | Страница с подключением CSS- и JS-файлов
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/17-i-bem-square.blocks/b-square/b-square.bemhtml:
--------------------------------------------------------------------------------
1 | block b-square, js: true
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/30-horiz-simple-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Упрощенная горизонтальная раскладка меню
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/50-vert-title-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Вертикальная раскладка меню с заголовком
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__separator/b-menu-vert__separator.bemhtml:
--------------------------------------------------------------------------------
1 | block b-menu-vert, elem separator, tag: 'li'
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__trigger/b-menu-vert__trigger.css:
--------------------------------------------------------------------------------
1 | .b-menu-vert__trigger
2 | {
3 | cursor: pointer;
4 | }
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/one-symbol-elem.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b",
3 | "elem": "a"
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/40-b-link-dynamic-pseudo.en.title.txt:
--------------------------------------------------------------------------------
1 | Link with JavaScript functionality
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/40-b-link-dynamic-pseudo.ru.title.txt:
--------------------------------------------------------------------------------
1 | Ссылка с JavaScript-функциональностью
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/20-b-logo-link.blocks/b-logo/b-logo.css:
--------------------------------------------------------------------------------
1 | .b-logo
2 | {
3 | margin: 20px;
4 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/05-b-menu-horiz-simple.ru.title.txt:
--------------------------------------------------------------------------------
1 | Простое горизонтальное меню
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/10-b-menu-horiz-normal.en.title.txt:
--------------------------------------------------------------------------------
1 | Horizontal menu with a list
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/10-b-menu-horiz-normal.ru.title.txt:
--------------------------------------------------------------------------------
1 | Горизонтальное меню списком
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/40-b-page-with-level.en.title.txt:
--------------------------------------------------------------------------------
1 | Page with it's own level of devinition
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/60-i-bem-pseudo-link.en.title.txt:
--------------------------------------------------------------------------------
1 | Reaction on events of the nested blocks (1)
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/20-horiz-title-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Горизонтальная раскладка меню с заголовком
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/i-bem__html.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem' }
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-232.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n.html:
--------------------------------------------------------------------------------
1 | key
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem', elems: ['html'] }
4 | ]
5 | })
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/30-b-logo-slogan.blocks/b-logo/b-logo.css:
--------------------------------------------------------------------------------
1 | .b-logo
2 | {
3 | margin: 20px;
4 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/20-b-menu-horiz-complex.en.title.txt:
--------------------------------------------------------------------------------
1 | Table layout horizontal menu
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/40-b-page-with-level.ru.title.txt:
--------------------------------------------------------------------------------
1 | Страница с собственным уровнем переопределения
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/30-simple-images-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Слайдер, который ждет загрузки вложенных картинок
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-254.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-menu' }
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/60-page-nodeps-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Cancellation of automatic initialization on domready
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/40-i-bem-extend.en.title.txt:
--------------------------------------------------------------------------------
1 | Changing/extending standard block behavior using modifier.
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.css:
--------------------------------------------------------------------------------
1 | .b-menu__list
2 | {
3 | margin: 0;
4 | padding: 0;
5 |
6 | list-style: none;
7 | }
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/20-simple-nonfirst-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | simple slider with non-first element by default
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/20-simple-nonfirst-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Простой слайдер с непервым элементом по умолчанию
--------------------------------------------------------------------------------
/blocks-touch/i-jquery/__tap/i-jquery__tap.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | {block: 'i-fastclick'}
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-touch/i-pressed-controller/i-pressed-controller.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: {block: 'i-bem', elem: 'dom'}
3 | })
4 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__item-content/b-menu-vert__item-content.css:
--------------------------------------------------------------------------------
1 | .b-menu-vert__item-content
2 | {
3 | display: none;
4 | }
--------------------------------------------------------------------------------
/blocks-common/b-page/__js/b-page__js.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem', elem: 'html' }
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-289.bemhtml:
--------------------------------------------------------------------------------
1 | block b1 {
2 | content: applyNext(this._someFlag = 'blah')
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/nested-mix.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1",
3 | "mods": {
4 | "x": 10
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n-lang.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "block": "b1"
4 | },
5 | {
6 | "block": "b2"
7 | }
8 | ]
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/entity-01.xml:
--------------------------------------------------------------------------------
1 |
2 | Приходить на работу к одинадцати часам
3 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__internal/i-bem__internal.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem' }
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/30-b-link-inner.blocks/b-link/b-link.css:
--------------------------------------------------------------------------------
1 | .b-link:hover
2 | {
3 | color: #f00;
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/20-b-menu-horiz-complex.ru.title.txt:
--------------------------------------------------------------------------------
1 | Горизонтальное меню с табличной раскладкой
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/60-page-nodeps-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Отмена автоматической инициализации js-блоков по domready
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/40-i-bem-extend.ru.title.txt:
--------------------------------------------------------------------------------
1 | Изменение/дополнение стандартного поведения блока через модификатор
--------------------------------------------------------------------------------
/blocks-desktop/i-ua/i-ua.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-icon/b-icon.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-page/b-page.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/30-simple-images-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Slider that is waiting for the included images loading
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/50-perscreen-nonfirst-bem.ru.title.txt:
--------------------------------------------------------------------------------
1 | Поэкранный слайдер с непервым элементом по умолчанию
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/30-b-menu-horiz-normal-js.en.title.txt:
--------------------------------------------------------------------------------
1 | Horizontal menu with JavaScript functionality
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/__css/b-page__css.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem', elem: 'html' }
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/70-csp-with-nonce.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | shouldDeps: { elems: ['csp'] }
3 | })
4 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text/b-text.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__separator/b-menu-vert__separator.css:
--------------------------------------------------------------------------------
1 | .b-menu-vert__separator
2 | {
3 | border-bottom: 1px solid #ccc;
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/local-var.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1",
3 | "content": [{
4 | "block": "b2"
5 | }]
6 | }
7 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/single-mix.bemhtml:
--------------------------------------------------------------------------------
1 | block b1, mix: { block: 'b2' }
2 | block b1, tag: 'a'
3 | block b2, tag: 'b'
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/dynamic-03.xml:
--------------------------------------------------------------------------------
1 | ["Новость", "Новости", "Новостей"]
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/bem/techs/i18n.js+bemhtml.js:
--------------------------------------------------------------------------------
1 | exports.baseTechName = 'i18n.js';
2 | exports.techMixin = require('./js+bemhtml').techMixin;
--------------------------------------------------------------------------------
/blocks-common/i-bem/bem/techs/v2/i18n.js+bemhtml.js:
--------------------------------------------------------------------------------
1 | exports.baseTechName = 'i18n.js';
2 | exports.techMixin = require('./js+bemhtml').techMixin;
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/20-b-link-pseudo.blocks/b-link/b-link.css:
--------------------------------------------------------------------------------
1 | .b-link_pseudo_yes:hover
2 | {
3 | color: #f00;
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/30-b-link-inner.ru.md:
--------------------------------------------------------------------------------
1 | Для ссылок с иконками используется элемент `inner`, который оборачивает текст.
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/30-b-menu-horiz-normal-js.ru.title.txt:
--------------------------------------------------------------------------------
1 | Горизонтальное меню с JavaScript-функциональностью
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-search/b-search.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text-list/b-text-list.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | shouldDeps: {
3 | block: 'i-ecma',
4 | elem: 'array'
5 | }
6 | })
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/50-perscreen-nonfirst-bem.en.title.txt:
--------------------------------------------------------------------------------
1 | Screen-by-screen slider with non-first element by default
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__item-content/b-menu-vert__item-content.ru.md:
--------------------------------------------------------------------------------
1 | Не используется без элемента `item-selector`. По умолчанию невидим.
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/empty-attrs.bemhtml:
--------------------------------------------------------------------------------
1 | block b1 {
2 | tag: 'a'
3 | attrs: { invisible: undefined, x: '1' }
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/json-01.xml:
--------------------------------------------------------------------------------
1 | [ "Новость", "Новости", "Новостей", "Нет нифига" ]
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'b-link' },
4 | { block: 'b-icon' }
5 | ]
6 | })
7 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/_layout/b-menu-horiz_layout_normal.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { elem: 'title' }
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/_layout/b-menu-horiz_layout_simple.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { elem: 'title' }
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text-list/_label/b-text-list_label_disc.css:
--------------------------------------------------------------------------------
1 | .b-text-list_label_disc .b-text-list__item
2 | {
3 | list-style-type: disc;
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text-list/_label/b-text-list_label_none.css:
--------------------------------------------------------------------------------
1 | .b-text-list_label_none .b-text-list__item
2 | {
3 | list-style-type: none;
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-desktop/i-ua/i-ua.examples/10-i-ua.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-test/i-bem/__test/i-bem__test.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: { block: 'i-bem', elem: 'dom' },
3 | shouldDeps: { block: 'i-jasmine' }
4 | })
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__title/b-menu-vert__title.ru.md:
--------------------------------------------------------------------------------
1 | Опциональный элемент. В **HTML** представлен тегом `h3`, выводится перед списком (`ul`).
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/cache/basic.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/custom-predicates.bemhtml:
--------------------------------------------------------------------------------
1 | block b-test, this.elem === 'elem-2' || this.elem === 'elem-3', tag: 'span'
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/nested-mix.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "block": "b1"
4 | },
5 | {
6 | "block": "b2",
7 | "elem": "e2"
8 | }
9 | ]
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.examples/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../.bem/levels/examples.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/10-b-logo.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-239.bemhtml:
--------------------------------------------------------------------------------
1 | content, block para, this.elem === 'cell' || this.elem === 'gap': {
2 | return 'hello';
3 | }
4 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.en.md:
--------------------------------------------------------------------------------
1 | By default the block produces a tag `img` which has an one-pixel transparent image (.gif) and an empty attribute `alt`.
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/20-b-icon-css.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_inner/b-link_inner_yes.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | shouldDeps: [
3 | {
4 | elems: 'inner'
5 | }
6 | ]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/20-b-logo-link.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-search/b-search.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | shouldDeps: [
3 | { block: 'b-layout-table' },
4 | { elem: 'layout' }
5 | ]
6 | })
7 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text-list/_label/b-text-list_label_circle.css:
--------------------------------------------------------------------------------
1 | .b-text-list_label_circle .b-text-list__item
2 | {
3 | list-style-type: circle;
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text-list/_label/b-text-list_label_square.css:
--------------------------------------------------------------------------------
1 | .b-text-list_label_square .b-text-list__item
2 | {
3 | list-style-type: square;
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/15-i-bem-click.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/17-i-bem-square.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/40-i-bem-extend.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/tests/10-base_bem.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | var level = require('../../../../.bem/level.js');
2 | for (var n in level) exports[n] = level[n];
--------------------------------------------------------------------------------
/blocks-touch/i-bem/i-bem.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-fastclick' },
4 | { block: 'i-pointer-events' }
5 | ]
6 | })
7 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/30-b-icon-sprite.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_pseudo/b-link_pseudo_yes.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | shouldDeps: [
3 | {
4 | elems: 'inner'
5 | }
6 | ]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/20-b-link-pseudo.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/30-b-link-inner.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/30-b-logo-slogan.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/30-b-page-with-js.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/60-page-nodeps-bem.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/70-csp-with-nonce.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text-list/_position/b-text-list_position_inside.css:
--------------------------------------------------------------------------------
1 | .b-text-list_position_inside .b-text-list__item
2 | {
3 | list-style-position: inside;
4 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-text-list/b-text-list.ru.md:
--------------------------------------------------------------------------------
1 | ### Deprecated
2 |
3 | Блок устарел, не рекомендован к использованию и будет удален в следующей мажорной версии.
4 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text/b-text.examples/10-b-text-simple.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/60-i-bem-pseudo-link.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-jquery/__outsideclick/i-jquery__outsideclick.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | shouldDeps: [
3 | { block: 'i-ecma', elem: 'function' }
4 | ]
5 | })
--------------------------------------------------------------------------------
/blocks-touch/b-menu/__title/b-menu__title.css:
--------------------------------------------------------------------------------
1 | .b-menu__title
2 | {
3 | margin: 0;
4 |
5 | display: inline-block;
6 | vertical-align: middle;
7 | }
8 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/10-simple-bem.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/40-perscreen-bem.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/60-simple-two-bem.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__submenu/b-menu-vert__submenu.ru.md:
--------------------------------------------------------------------------------
1 | Используется в случае, когда необходимо представить вложенное меню частью списка «меню-родителя».
2 |
--------------------------------------------------------------------------------
/blocks-common/i-ua/i-ua.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem', elems: 'dom' },
4 | { block: 'i-ecma', elems: ['array'] }
5 | ]
6 | })
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_pseudo/b-link_pseudo_yes.en.md:
--------------------------------------------------------------------------------
1 | A **pseudo** modifier is to mark a link that does not open on another page.
2 | It has a dashed underline.
3 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/40-b-link-dynamic-pseudo.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/40-b-link-dynamic-pseudo.blocks/b-page/b-page.css:
--------------------------------------------------------------------------------
1 | .b-page
2 | {
3 | height: 200px;
4 | border: #aaa 1px dotted;
5 | }
6 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/40-b-page-with-level.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/40-b-page-with-level.blocks/b-page/b-page.css:
--------------------------------------------------------------------------------
1 | .b-page
2 | {
3 | margin: 5em;
4 | background-color: lightblue;
5 | }
6 |
--------------------------------------------------------------------------------
/blocks-desktop/b-search/b-search.examples/20-b-search-under.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-search/b-search.examples/20-b-search-under.blocks/b-search/b-search.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'b-link' }
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/15-i-bem-click.blocks/b-square/_color/b-square_color_green.css:
--------------------------------------------------------------------------------
1 | .b-square_color_green
2 | {
3 | background-color:green;
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/b-tv/_touched/b-tv_touched_yes.css:
--------------------------------------------------------------------------------
1 | .b-tv_touched_yes
2 | {
3 | border:red 3px solid;
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/60-i-bem-pseudo-link.blocks/b-pseudo-link-example/b-pseudo-link-example.bemhtml:
--------------------------------------------------------------------------------
1 | block b-pseudo-link-example {
2 | js: true
3 | }
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem', elems: ['html'] },
4 | { block: 'i-pressed-controller' }
5 | ]
6 | })
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/20-simple-nonfirst-bem.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/30-simple-images-bem.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__item-content/b-menu-vert__item-content.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | shouldDeps: [
3 | { mods : { visibility : ['visible']} }
4 | ]
5 | })
6 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/comments.bemhtml:
--------------------------------------------------------------------------------
1 | // comment
2 | /* comment */
3 | block b /* comment */ {
4 | tag: 'a' // comment
5 | }
6 |
7 | // comment
8 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/bem/techs/js-i.js:
--------------------------------------------------------------------------------
1 | exports.baseTechPath = require('bem').require.resolve('./techs/js-i.js');
2 | exports.techMixin = require('./js.js').techMixin;
3 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/__inner/b-link__inner.en.md:
--------------------------------------------------------------------------------
1 | This element is optional to contain a text of a link.
2 | It is needed if a link includes grafic content, e.g. an icon.
3 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/17-i-bem-square.blocks/b-square/_size/b-square_size_big.css:
--------------------------------------------------------------------------------
1 | .b-square_size_big
2 | {
3 | width:150px;
4 | height:150px;
5 | }
6 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/b-tv/__click/b-tv__click.css:
--------------------------------------------------------------------------------
1 | .b-tv__click
2 | {
3 | float:right;
4 | margin:10px;
5 | }
6 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/40-i-bem-extend.blocks/b-link/_action/b-link_action_alert.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: { block: 'b-link', mods: { pseudo: 'yes' }}
3 | })
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/50-perscreen-nonfirst-bem.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__item-content/_visibility/b-menu-vert__item-content_visibility_visible.en.md:
--------------------------------------------------------------------------------
1 | You can make **item-content** element visible using this modificator.
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__item-content/_visibility/b-menu-vert__item-content_visibility_visible.ru.md:
--------------------------------------------------------------------------------
1 | Добавление этого модификатора делает видимым элемент **item-content**.
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__trigger/b-menu-vert__trigger.ru.md:
--------------------------------------------------------------------------------
1 | Может содержать внутри себя опциональный элемент `trigger-icon`, который используется для отображения иконок.
2 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/b-menu-vert.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Vertical menu
3 | *
4 | * @block b-menu-vert
5 | */
6 | BEM.DOM.decl({ block: 'b-menu-vert', baseBlock: 'i-menu' });
7 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/bem/techs/v2/js-i.js:
--------------------------------------------------------------------------------
1 | exports.baseTechPath = require('bem').require.resolve('./techs/v2/js-i.js');
2 | exports.techMixin = require('./js.js').techMixin;
3 |
--------------------------------------------------------------------------------
/blocks-common/i-jquery/_version/i-jquery_version.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: {block: 'i-bem', elems: ['html']},
3 | shouldDeps: {block: 'b-page', elem: 'js'}
4 | });
5 |
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.examples/10-b-layout-table.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/10-b-menu-horiz-normal.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text/b-text.bemhtml:
--------------------------------------------------------------------------------
1 | block b-text {
2 |
3 | this.elem, tag: this.ctx.elem
4 |
5 | this.elem, this.ctx.id, attrs: { id: this.ctx.id }
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/.bem/techs/i18n.desc.wiki.js:
--------------------------------------------------------------------------------
1 | exports.techMixin = {
2 |
3 | getSuffixes : function() {
4 | // FIXME: hardcode
5 | return ['ru.desc.wiki'];
6 | }
7 |
8 | };
--------------------------------------------------------------------------------
/.bem/techs/i18n.title.txt.js:
--------------------------------------------------------------------------------
1 | exports.techMixin = {
2 |
3 | getSuffixes : function() {
4 | // FIXME: hardcode
5 | return ['ru.title.txt'];
6 | }
7 |
8 | };
--------------------------------------------------------------------------------
/blocks-common/i-bem/__dom/i-bem__dom.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: { block: 'i-bem', elems: 'html' },
3 | shouldDeps: { block: 'i-ecma', elems: [ 'string', 'json' ] }
4 | })
5 |
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.examples/20-b-layout-table-rows.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/20-b-menu-horiz-complex.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/30-b-menu-horiz-normal-js.blocks/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('../../../../../.bem/levels/blocks.js');
2 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/b-tv/b-tv.css:
--------------------------------------------------------------------------------
1 | .b-tv
2 | {
3 | background-color:black;
4 | width:300px;
5 | height:200px;
6 | }
7 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__item-content/_visibility/b-menu-vert__item-content_visibility_visible.css:
--------------------------------------------------------------------------------
1 | .b-menu-vert__item-content_visibility_visible
2 | {
3 | display: block;
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_pseudo/b-link_pseudo_yes.ru.md:
--------------------------------------------------------------------------------
1 | Модификация ссылки, подразумевающая действие без перехода на другую страницу.
2 | Визуально имеет пунктирное нижнее подчеркивание.
3 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/b-tv/__over/b-tv__over.css:
--------------------------------------------------------------------------------
1 | .b-tv__over
2 | {
3 | clear:both;
4 | float:right;
5 | margin:10px;
6 | }
7 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-550.bemhtml:
--------------------------------------------------------------------------------
1 | block b1, default: {
2 | this.mods.foo = 'bar';
3 | applyNext();
4 | }
5 |
6 | block b1, mod foo bar, content: 'foo bar';
7 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/param-xml-01.xml:
--------------------------------------------------------------------------------
1 | В разделе «section» ничего не было найдено.
Показаны результаты поиска по всем разделам Помощи.
2 |
--------------------------------------------------------------------------------
/blocks-common/i-jquery/__observable/i-jquery__observable.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: { block: 'i-jquery', elem: 'inherit' },
3 | shouldDeps: { block: 'i-jquery', elem: 'identify' }
4 | })
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/10-b-logo.blocks/b-logo/b-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bem/bem-bl/HEAD/blocks-desktop/b-logo/b-logo.examples/10-b-logo.blocks/b-logo/b-logo.png
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/i-jasmine.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | shouldDeps: [
3 | { elems: ['runner', 'ajax'] },
4 | { elem: 'reporter', mods: { type: ['html', 'console'] }}
5 | ]
6 | })
--------------------------------------------------------------------------------
/blocks-touch/b-page/b-page.css:
--------------------------------------------------------------------------------
1 | .b-page
2 | {
3 | font: 12px Helvetica, Arial, sans-serif;
4 |
5 | margin: 0;
6 |
7 | background: #fff;
8 | -webkit-text-size-adjust: none;
9 | }
--------------------------------------------------------------------------------
/blocks-common/b-page/__csp/b-page__csp.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | {block: 'i-bem', elems: ['html']},
4 | {block: 'i-ecma', elems: ['array', 'object']}
5 | ]
6 | });
7 |
--------------------------------------------------------------------------------
/blocks-common/i-ecma/i-ecma.ru.md:
--------------------------------------------------------------------------------
1 | ##Описание
2 | Блок i-ecma позволяет использовать некоторые методы (`forEach`, `map`, ...) из **ECMAScript 5** для браузеров, не имеющих их нативной поддержки.
3 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/_layout/b-menu-horiz_layout_simple.css:
--------------------------------------------------------------------------------
1 | .b-menu-horiz_layout_simple .b-menu-horiz__title
2 | {
3 | display: inline-block;
4 |
5 | margin-right: 0.4em;
6 | }
7 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/15-i-bem-click.blocks/b-square/b-square.css:
--------------------------------------------------------------------------------
1 | .b-square
2 | {
3 | background-color:red;
4 | cursor:hand;
5 | width:50px;
6 | height:50px;
7 | }
8 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/17-i-bem-square.blocks/b-square/b-square.css:
--------------------------------------------------------------------------------
1 | .b-square
2 | {
3 | background-color:red;
4 | cursor:hand;
5 | width:50px;
6 | height:50px;
7 | }
8 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/_layout/b-menu_layout_vert.css:
--------------------------------------------------------------------------------
1 | .b-menu_layout_vert .b-menu__title,
2 | .b-menu_layout_vert .b-menu__item,
3 | .b-menu_layout_vert .b-menu__gap
4 | {
5 | display: block;
6 | }
--------------------------------------------------------------------------------
/blocks-common/i-bem/__dom/_init/i-bem__dom_init_auto.js:
--------------------------------------------------------------------------------
1 | /* дефолтная инициализация */
2 | $(function() {
3 | BEM.afterCurrentEvent(function() {
4 | BEM.DOM.init();
5 | });
6 | });
7 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n-lang.bemhtml:
--------------------------------------------------------------------------------
1 | block b1 {
2 |
3 | content: BEM.I18N.lang()
4 |
5 | }
6 |
7 | block b2 {
8 |
9 | content: BEM.I18N.lang('ru')
10 |
11 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-link/__inner/b-link__inner.ru.md:
--------------------------------------------------------------------------------
1 | Опциональный элемент, в который помещается текстовое содержимое ссылки.
2 | Необходим, когда ссылка содержит графический контент, например, иконку.
3 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/20-b-logo-link.blocks/b-logo/b-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bem/bem-bl/HEAD/blocks-desktop/b-logo/b-logo.examples/20-b-logo-link.blocks/b-logo/b-logo.png
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/b-tv/_state/b-tv_state_profilaktika.css:
--------------------------------------------------------------------------------
1 | .b-tv_state_profilaktika
2 | {
3 | background:url(b-tv_state_profilaktika.gif);
4 | }
5 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/_dummy/i-bem__i18n_dummy_yes.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'i-bem',
3 | elem: 'html',
4 | mustDeps: [
5 | { elem: 'i18n', mod: 'dummy', val: 'yes' }
6 | ]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/30-b-logo-slogan.blocks/b-logo/b-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bem/bem-bl/HEAD/blocks-desktop/b-logo/b-logo.examples/30-b-logo-slogan.blocks/b-logo/b-logo.png
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.css:
--------------------------------------------------------------------------------
1 | .b-link__text
2 | {
3 | vertical-align: middle;
4 | }
5 |
6 | .b-link > .b-icon
7 | {
8 | margin: 0 5px 0 0;
9 |
10 | vertical-align: middle;
11 | }
12 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/__item/b-menu-vert__item.ru.md:
--------------------------------------------------------------------------------
1 | Элемент вертикального меню, может содержать любой контент, чаще всего это ссылки или псевдо-ссылки.
2 |
3 | Имеет состояния: `[ current, disabled ]`
4 |
--------------------------------------------------------------------------------
/blocks-desktop/i-ua/i-ua.examples/10-i-ua.blocks/b-page/b-page.css:
--------------------------------------------------------------------------------
1 | .i-ua_css_standard
2 | {
3 | background-color: #f5f5ea;
4 | }
5 |
6 | .b-page__body
7 | {
8 | background-color: #fff;
9 | }
10 |
--------------------------------------------------------------------------------
/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "expr" : true,
3 | "undef" : true,
4 | "predef" : ["BEM"],
5 | "browser" : true,
6 | "jquery" : true,
7 | "boss" : true,
8 | "sub" : true
9 | }
10 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 |
3 | node_js:
4 | - 0.10
5 | - 0.11
6 |
7 | matrix:
8 | allow_failures:
9 | - node_js: 0.11
10 |
11 | branches:
12 | except:
13 | - 0.1
14 | - 0.2
15 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/b-menu-vert.css:
--------------------------------------------------------------------------------
1 | .b-menu-vert__layout,
2 | .b-menu-vert__separator,
3 | .b-menu-vert__layout-unit
4 | {
5 | margin: 0;
6 | padding: 0;
7 |
8 | list-style: none;
9 | }
10 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/custom-predicates.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/looped-mix.bemhtml:
--------------------------------------------------------------------------------
1 | block b1, tag: 'a'
2 | block b1, mix: [{ block: 'b2' }]
3 | block b2, tag: 'b'
4 | block b2, mix: [{ mods: { modname: 'modval' } }, { block: 'b1' }]
5 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/15-i-bem-click.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/17-i-bem-square.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/40-i-bem-extend.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/i-bem__i18n.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem', elem: 'html' }
4 | ],
5 | shouldDeps: [
6 | { elem: 'i18n', mod: 'dummy', val:'yes' }
7 | ]
8 | })
9 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/20-b-link-pseudo.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/30-b-link-inner.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/30-b-page-with-js.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/60-i-bem-pseudo-link.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/_layout/b-menu_layout_horiz-simple.css:
--------------------------------------------------------------------------------
1 | .b-menu_layout_horiz-simple .b-menu__item,
2 | .b-menu_layout_horiz-simple .b-menu__gap
3 | {
4 | display: inline-block;
5 | vertical-align: middle;
6 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_pseudo/b-link_pseudo.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-jquery', elem: 'leftclick' }
4 | ],
5 | shouldDeps: [
6 | { mods: { pseudo: ['yes', 'no']} }
7 | ]
8 | })
9 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/40-b-link-dynamic-pseudo.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/40-b-page-with-level.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-touch/b-page/b-page.examples/10-simple-bem.ru.md:
--------------------------------------------------------------------------------
1 | Этот пример показывает, как **BEMJSON** описание страницы
2 | превращается в HTML-код. Воспользуйтесь инспектором элементов,
3 | чтобы посмотреть получившуюся разметку.
4 |
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/b-menu-vert.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-menu' }
4 | ],
5 | shouldDeps: [
6 | { elem: 'title' },
7 | { elem: 'item-content' }
8 | ]
9 | })
10 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/10-b-page-simple.ru.md:
--------------------------------------------------------------------------------
1 | Этот пример показывает, как **BEMJSON** описание страницы
2 | превращается в HTML-код. Воспользуйтесь инспектором элементов,
3 | чтобы посмотреть получившуюся разметку.
4 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n-bemjson.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b1",
3 | "content": {
4 | "block": "i-bem",
5 | "elem": "i18n",
6 | "keyset": "kset",
7 | "key": "test"
8 | }
9 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_inner/b-link_inner_yes.en.md:
--------------------------------------------------------------------------------
1 | For a convinient usage of an icon inside a link.
2 | Allows you to add a link to an `{ elem: inner }`. Contains css rules, that shift underlining from the link to its `inner` element.
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/60-page-nodeps-bem.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [],
3 | shouldDeps: [],
4 | noDeps: [
5 | { block: 'i-bem', elem: 'dom', mods: { init: 'auto' } }
6 | ]
7 | })
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/20-b-icon-css.blocks/b-icon/b-icon.css:
--------------------------------------------------------------------------------
1 | .b-icon_action_images
2 | {
3 | padding: 16px 0 0 16px;
4 |
5 | background: url(//yastatic.net/lego/_/ExOJSanIrX2IAis4l5gO2uX6M1E.png) no-repeat;
6 | }
7 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/30-b-menu-horiz-normal-js.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-bem',
4 | elem: 'dom',
5 | mods: { 'init' : 'auto' }
6 | }]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text/_type/b-text_type_global.ru.md:
--------------------------------------------------------------------------------
1 | Позволяет стилизировать текст, редактируемый через всевозможные **wysiwyg**-редакторы.
2 |
3 | Не рекомендован к использованию, так как его реализация не соответвует **BEM**-подходу.
4 |
--------------------------------------------------------------------------------
/blocks-desktop/i-ua/i-ua.examples/10-i-ua.blocks/b-page/b-page.bemhtml:
--------------------------------------------------------------------------------
1 | block b-page, mix: {
2 | var mix = applyNext() || [];
3 |
4 | mix.push({ block: 'i-ua', mods: { interaction: 'yes' }, js: true });
5 | return mix;
6 | }
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .bem/cache
2 | .sass-cache
3 | node_modules/
4 | npm-debug.log
5 |
6 | .*.xsl
7 | .*.xsl.*
8 | *.sets
9 | !*.sets/.bem/
10 |
11 | *.decl.js
12 |
13 | .idea
14 | *.iml
15 |
16 | .DS_Store
17 |
18 | .project
19 | .svn/
20 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n.bemhtml:
--------------------------------------------------------------------------------
1 | block b1 {
2 | content: BEM.I18N('ktest', 'key')
3 | }
4 |
5 | block b2 {
6 |
7 | elem e2, attrs: {
8 | 'data-key': BEM.I18N('ktest', 'key')
9 | }
10 |
11 | }
--------------------------------------------------------------------------------
/blocks-test/i-bem/__test/i-bem__test.bemhtml:
--------------------------------------------------------------------------------
1 | block i-bem, elem test {
2 |
3 | cls: 'i-bem',
4 | attrs: { 'data-bem': JSON.stringify({'i-bem__test':{tests:this.ctx.content||null}}).replace(/"/g, '\'')}
5 | content: null
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/blocks-common/b-page/__js/b-page__js.bemhtml:
--------------------------------------------------------------------------------
1 | block b-page, elem js {
2 |
3 | bem: false
4 |
5 | tag: 'script'
6 |
7 | attrs: {
8 | src: this.ctx.url,
9 | nonce: this.ctx.nonce || this._nonce
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/re-entrant.bemhtml:
--------------------------------------------------------------------------------
1 | block b1, content: {
2 | return this.invalid || 'ok';
3 | }
4 |
5 | block b2, content: {
6 | local(this.invalid = 'bye') {
7 | throw new Error('Oh god');
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/i-bem__i18n.i18n/all.js:
--------------------------------------------------------------------------------
1 | var PATH = require('path'),
2 | FS = require('fs');
3 |
4 | module.exports = {
5 | 'all': {
6 | '': FS.readFileSync(PATH.resolve(__dirname, './core.js'), 'utf8')
7 | }
8 | };
9 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_inner/b-link_inner_yes.ru.md:
--------------------------------------------------------------------------------
1 | Для удобного использования с иконками. Позволяет добавлять в ссылку элемент **inner**. Содержит только **CSS**-правила,
2 | которые переносят подчеркивание с самой ссылки на ее внутренний элемент.
3 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/escaping-this.bemhtml:
--------------------------------------------------------------------------------
1 | block b1, custom: 'ok'
2 | block b1, tag: {
3 | return [ this ].map(function(ctx) {
4 | return this._mode + '-' + ctx.block + ':' + apply({ _mode: 'custom' });
5 | }, this);
6 | }
7 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/html-02.xml:
--------------------------------------------------------------------------------
1 | Merhaba! Ulaşmak istediğiniz sayfa sadece Yandex.Browser'da görüntülenebilmektedir. Devam etmek için buraya tıklayın.
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_pseudo/b-link_pseudo_yes.ie.css:
--------------------------------------------------------------------------------
1 | .i-ua_js_yes .b-link_pseudo_yes
2 | {
3 | zoom: 1;
4 | }
5 |
6 | .i-ua_js_yes .b-link_pseudo_yes,
7 | .i-ua_js_yes .b-link_pseudo_yes .b-link__inner
8 | {
9 | position: relative;
10 | }
--------------------------------------------------------------------------------
/blocks-desktop/i-ua/i-ua.examples/10-i-ua.blocks/button/button.bemhtml:
--------------------------------------------------------------------------------
1 | block button {
2 |
3 | tag: 'button'
4 |
5 | content: {
6 | elem: 'text',
7 | tag: 'span',
8 | content: applyNext()
9 | }
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/blocks-touch/i-jquery/__core/i-jquery__core.bemhtml:
--------------------------------------------------------------------------------
1 | block i-jquery, elem core, default: applyCtx({
2 | block: 'b-page',
3 | elem: 'js',
4 | nonce: this.ctx.nonce || this._nonce,
5 | url: '//yastatic.net/jquery/1.8.3/jquery.min.js'
6 | })
7 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-254.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "blah",
3 | "content": [
4 | "",
5 | 0,
6 | true,
7 | false,
8 | null,
9 | "Abstract",
10 | { "elem": "lem", "content": "text" }
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/30-b-icon-sprite.blocks/b-icon/b-icon.css:
--------------------------------------------------------------------------------
1 | .b-icon_action_widgets
2 | {
3 | padding: 16px 0 0 16px;
4 |
5 | background: url(http://yastatic.net/lego/_/PnbTopZ1Vv7fGqbO37Ix712qh2A.png) no-repeat -448px 0;
6 | }
7 |
--------------------------------------------------------------------------------
/blocks-desktop/i-jquery/__core/i-jquery__core.bemhtml:
--------------------------------------------------------------------------------
1 | block i-jquery, elem core, default: applyCtx({
2 | block: 'b-page',
3 | elem: 'js',
4 | nonce: this.ctx.nonce || this._nonce,
5 | url: '//yastatic.net/jquery/1.8.3/jquery.min.js'
6 | })
7 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/b-tv/_state/b-tv_state_profilaktika.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bem/bem-bl/HEAD/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/b-tv/_state/b-tv_state_profilaktika.gif
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/40-b-page-with-level.ru.md:
--------------------------------------------------------------------------------
1 | На уровне переопределения страницы или проекта, использующих библиотеку блоков, можно определить (или переопределить) внешний вид и поведение блоков.
2 |
3 | В данном случае расширен CSS блока `b-page`.
4 |
--------------------------------------------------------------------------------
/blocks-desktop/b-search/__layout/b-search__layout.css:
--------------------------------------------------------------------------------
1 | .b-search__layout-input
2 | {
3 | width: 100%;
4 |
5 | vertical-align: middle;
6 | }
7 |
8 | .b-search__layout-button
9 | {
10 | padding-left: 6px;
11 |
12 | vertical-align: middle;
13 | }
14 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/bem-i18n-api.bemhtml:
--------------------------------------------------------------------------------
1 | block b1 {
2 |
3 | attrs: {
4 | 'data-key': BEM.I18N.key('key1')
5 | }
6 |
7 | content: {
8 | BEM.I18N.keyset('ktest');
9 | return BEM.I18N.key('key2');
10 | }
11 |
12 | }
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/param-empty-01.xml:
--------------------------------------------------------------------------------
1 |
2 | soon
3 |
4 | бла-бла-бла
5 |
--------------------------------------------------------------------------------
/blocks-desktop/b-search/b-search.css:
--------------------------------------------------------------------------------
1 | .b-search__input
2 | {
3 | width: 100%;
4 | margin: 0;
5 |
6 | -moz-box-sizing: border-box;
7 | -webkit-box-sizing: border-box;
8 | box-sizing: border-box;
9 | }
10 |
11 | .b-search__button
12 | {
13 | margin: 0;
14 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_disabled/b-link_disabled_yes.css:
--------------------------------------------------------------------------------
1 | .b-link_disabled_yes,
2 | .b-link_disabled_yes:hover,
3 | a.b-link_disabled_yes:link,
4 | a.b-link_disabled_yes:visited
5 | {
6 | outline: 0;
7 | cursor: default !important;
8 |
9 | color: #ddd !important;
10 | }
11 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/_layout/b-menu-horiz_layout_normal.ie.css:
--------------------------------------------------------------------------------
1 | .b-menu-horiz_layout_normal .b-menu-horiz__title,
2 | .b-menu-horiz_layout_normal .b-menu-horiz__layout,
3 | .b-menu-horiz_layout_normal .b-menu-horiz__layout-unit
4 | {
5 | display: inline;
6 |
7 | zoom: 1;
8 | }
9 |
--------------------------------------------------------------------------------
/blocks-desktop/i-ua/i-ua.examples/10-i-ua.blocks/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem', elems: ['dom', 'i18n'] },
4 | { block: 'i-jquery', elems: ['leftclick', 'tap'] },
5 | { block: 'i-ua', mods: { interaction: 'yes' } }
6 | ]
7 | })
8 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/40-b-link-dynamic-pseudo.blocks/b-page/b-page.js:
--------------------------------------------------------------------------------
1 | /** @requires BEM */
2 | /** @requires BEM.DOM */
3 |
4 | BEM.DOM.decl('b-page', {}, {
5 |
6 | live : function() {
7 | this.liveBindTo('click', function(e) {});
8 | }
9 |
10 | });
11 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/_layout/b-menu-horiz_layout_complex.ru.md:
--------------------------------------------------------------------------------
1 | Использование блока с модификатором `{ layout: 'complex' }` принципиально ничем не отличается.
2 | Для блока в такой модификации создаётся разметка на основе таблицы. Такое решение может потребоваться при некоторых дизайнах.
3 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/20-b-page-simple.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'Page with css file linked',
4 | head: [
5 | { elem: 'css', url: '_20-b-page-simple.css' }
6 | ],
7 | content: [
8 | 'Page content'
9 | ]
10 | })
11 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/cache/basic.bemhtml:
--------------------------------------------------------------------------------
1 | block just-random-block, tag: {
2 | // This was failing before:
3 | return apply((((this.x) = (1))));
4 | }
5 |
6 | block just-random-block-2, tag: {
7 | // This was failing before:
8 | return apply('mode', { wtf: true });
9 | }
10 |
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.css:
--------------------------------------------------------------------------------
1 | .b-layout-table
2 | {
3 | font-size: 100%;
4 |
5 | width: 100%;
6 |
7 | border-collapse: collapse;
8 | }
9 |
10 | .b-layout-table__gap,
11 | .b-layout-table__cell
12 | {
13 | padding: 0;
14 |
15 | vertical-align: top;
16 | }
17 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/20-b-icon-css.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'b-icon',
4 | head: [
5 | { elem: 'css', url: '_20-b-icon-css.css' }
6 | ],
7 | content: {
8 | block: 'b-icon',
9 | mods: { action: 'images' }
10 | }
11 | })
12 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/40-b-page-with-level.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'Page with extra level of definition',
4 | head: [
5 | { elem: 'css', url: '_40-b-page-with-level.css' }
6 | ],
7 | content: [
8 | 'Page content'
9 | ]
10 | })
11 |
--------------------------------------------------------------------------------
/blocks-common/i-menu/i-menu.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | {
4 | block: 'i-bem',
5 | elem: 'dom'
6 | }
7 | ],
8 | shouldDeps: [
9 | {
10 | block: 'i-jquery',
11 | elems: ['leftclick', 'tap']
12 | }
13 | ]
14 | })
15 |
--------------------------------------------------------------------------------
/blocks-common/b-page/b-page.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | { block: 'i-bem', elems: ['html'] },
4 | { block: 'i-bem', elem: 'dom', mods: { init: 'auto' } },
5 | { block: 'i-ua' },
6 | { block: 'i-jquery', elems: 'core' }
7 | ],
8 | shouldDeps: { elems: 'js' }
9 | });
10 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/30-b-icon-sprite.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'b-icon',
4 | head: [
5 | { elem: 'css', url: '_30-b-icon-sprite.css' }
6 | ],
7 | content: {
8 | block: 'b-icon',
9 | mods: { action: 'widgets' }
10 | }
11 | })
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Библиотека блоков bem-bl
2 | ========================
3 |
4 | [Описание библиотеки и примеры](http://bem.github.com/bem-bl/index.ru.html).
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/custom-predicates.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b-test",
3 | "content": {
4 | "elem": "elem-1",
5 | "content": [{
6 | "elem": "elem-2",
7 | "content": "Elem 2"
8 | }, {
9 | "elem": "elem-2",
10 | "content": "Elem 2"
11 | }]
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/_layout/b-menu_layout_horiz.css:
--------------------------------------------------------------------------------
1 | .b-menu_layout_horiz .b-menu__list
2 | {
3 | display: inline-table;
4 | vertical-align: middle;
5 | }
6 |
7 | .b-menu_layout_horiz .b-menu__item,
8 | .b-menu_layout_horiz .b-menu__gap
9 | {
10 | display: table-cell;
11 | vertical-align: middle;
12 | }
13 |
--------------------------------------------------------------------------------
/.bem/level.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('bem/lib/levels/project');
2 |
3 | exports.getTechs = function() {
4 |
5 | return require('bem').util.extend(this.__base() || {}, {
6 | blocks: 'v2/level-proto',
7 | bundles: 'v2/level-proto',
8 | sets: 'v2/level-proto'
9 | });
10 |
11 | };
12 |
--------------------------------------------------------------------------------
/blocks-common/i-jquery/_version/i-jquery_version.bemhtml:
--------------------------------------------------------------------------------
1 | block i-jquery, default: applyCtx({
2 | block: 'b-page',
3 | elem: 'js',
4 | nonce: this.ctx.nonce || this._nonce,
5 | url: this.ctx.url || (this.ctx.protocol ? this.ctx.protocol + ':' : '') + '//yastatic.net/jquery/' + this.mods.version + '/jquery.min.js'
6 | })
7 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/40-perscreen-bem.blocks/b-my-slider/b-my-slider.css:
--------------------------------------------------------------------------------
1 | .b-my-slider
2 | {
3 | font-size: 16px;
4 |
5 | padding: 20px 0 10px;
6 | }
7 |
8 | .b-my-slider .b-menu__item
9 | {
10 | padding: 0 10px;
11 |
12 | -webkit-box-sizing: border-box;
13 | box-sizing: border-box;
14 | }
--------------------------------------------------------------------------------
/blocks-common/b-menu-vert/b-menu-vert.en.md:
--------------------------------------------------------------------------------
1 | This block makes HTML markup for a vertical menu. It is based on a helper block `i-menu`.
2 |
3 | There are two types of elements in this block:
4 |
5 | ##### Layout Elements
6 |
7 | * `layout`
8 | * `layout-unit`
9 |
10 | ##### Functional Element
11 |
12 | * `title`
13 | * `item`
14 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [{
3 | block: 'i-jquery',
4 | elem: 'css-prefix'
5 | },{
6 | block: 'b-menu',
7 | mods: {
8 | layout: 'horiz',
9 | 'vert-align': 'top'
10 | }
11 | }, {
12 | block: 'i-ua'
13 | }]
14 | })
15 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/10-simple-bem.blocks/b-my-slider/b-my-slider.css:
--------------------------------------------------------------------------------
1 | .b-my-slider
2 | {
3 | font-size: 16px;
4 |
5 | padding: 20px 0 10px;
6 | }
7 |
8 | .b-my-slider .b-menu
9 | {
10 | padding: 0 10px;
11 | }
12 |
13 | .b-my-slider .b-menu__item + .b-menu__item
14 | {
15 | padding-left: 20px;
16 | }
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/50-perscreen-nonfirst-bem.blocks/b-my-slider/b-my-slider.css:
--------------------------------------------------------------------------------
1 | .b-my-slider
2 | {
3 | font-size: 16px;
4 |
5 | padding: 20px 0 10px;
6 | }
7 |
8 | .b-my-slider .b-menu__item
9 | {
10 | padding: 0 10px;
11 |
12 | -webkit-box-sizing: border-box;
13 | box-sizing: border-box;
14 | }
--------------------------------------------------------------------------------
/.bem/levels/examples.js:
--------------------------------------------------------------------------------
1 | exports.baseLevelPath = require.resolve('bem/lib/levels/simple');
2 |
3 | exports.getTechs = function() {
4 |
5 | return require('bem').util.extend(require('./bundles.js').getTechs() || {}, {
6 | 'title.txt' : require('path').resolve(__dirname, '../techs/i18n.title.txt.js')
7 | });
8 |
9 | };
10 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/60-simple-two-bem.blocks/b-my-slider/b-my-slider.css:
--------------------------------------------------------------------------------
1 | .b-my-slider
2 | {
3 | font-size: 16px;
4 |
5 | padding: 20px 0 10px;
6 | }
7 |
8 | .b-my-slider .b-menu
9 | {
10 | padding: 0 10px;
11 | }
12 |
13 | .b-my-slider .b-menu__item + .b-menu__item
14 | {
15 | padding-left: 20px;
16 | }
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/b-tv/b-tv.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: { block: 'i-bem', elem: 'dom' },
3 | shouldDeps: [{
4 | elems: ['click', 'over'],
5 | },
6 | {
7 | mods: {
8 | state: 'profilaktika',
9 | touched: 'yes'
10 | }
11 | }]
12 | })
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/20-simple-nonfirst-bem.blocks/b-my-slider/b-my-slider.css:
--------------------------------------------------------------------------------
1 | .b-my-slider
2 | {
3 | font-size: 16px;
4 |
5 | padding: 20px 0 10px;
6 | }
7 |
8 | .b-my-slider .b-menu
9 | {
10 | padding: 0 10px;
11 | }
12 |
13 | .b-my-slider .b-menu__item + .b-menu__item
14 | {
15 | padding-left: 20px;
16 | }
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.examples/30-simple-images-bem.blocks/b-my-slider/b-my-slider.css:
--------------------------------------------------------------------------------
1 | .b-my-slider
2 | {
3 | font-size: 16px;
4 |
5 | padding: 20px 0 10px;
6 | }
7 |
8 | .b-my-slider .b-menu
9 | {
10 | padding: 0 10px;
11 | }
12 |
13 | .b-my-slider .b-menu__item + .b-menu__item
14 | {
15 | padding-left: 20px;
16 | }
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/cache/basic.json:
--------------------------------------------------------------------------------
1 | {
2 | "cache": "key",
3 | "block": "hello",
4 |
5 | "content": [{
6 | "block": "how"
7 | }, {
8 | "link": "are"
9 | }, {
10 | "block": "you"
11 | }],
12 |
13 | "links": {
14 | "are": {
15 | "tag": "p",
16 | "block": "are"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/17-i-bem-square.blocks/b-square/b-square.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | {
4 | block: 'i-bem',
5 | elem: 'dom'
6 | }
7 | ],
8 | shouldDeps: [
9 | {
10 | block: 'b-square',
11 | mods: { size: 'big' }
12 | }
13 | ]
14 | })
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/gh-232.bemhtml:
--------------------------------------------------------------------------------
1 | block para {
2 | default, !this.ctx._wrap, !this.elem: {
3 | apply(
4 | this._mode = '',
5 | this.ctx._wrap = true,
6 | this.ctx = {
7 | elem: 'inner',
8 | mix: [{ block: this.block }],
9 | content: this.ctx
10 | }
11 | )
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/blocks-common/i-ecma/__string/i-ecma__string.js:
--------------------------------------------------------------------------------
1 | (function() {
2 |
3 | String.prototype.trim || (String.prototype.trim = function () {
4 |
5 | var str = this.replace(/^\s\s*/, ''),
6 | ws = /\s/,
7 | i = str.length;
8 |
9 | while(ws.test(str.charAt(--i)));
10 |
11 | return str.slice(0, i + 1);
12 |
13 | });
14 |
15 | })();
--------------------------------------------------------------------------------
/blocks-common/i-jquery/__is-empty-object/i-jquery__is-empty-object.js:
--------------------------------------------------------------------------------
1 | (function($) {
2 | /**
3 | * @deprecated Will be removed in the next major version. jQuery core has the same method.
4 | */
5 | $.isEmptyObject || ($.isEmptyObject = function(obj) {
6 | for(var i in obj) return false;
7 | return true;
8 | });
9 |
10 | })(jQuery);
11 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/15-i-bem-click.blocks/b-square/b-square.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | {
4 | block: 'i-bem',
5 | elem: { name: 'dom' }
6 | }
7 | ],
8 | shouldDeps: [
9 | {
10 | block: 'b-square',
11 | mods: { color: 'green' }
12 | }
13 | ]
14 | })
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/nested-mix.bemhtml:
--------------------------------------------------------------------------------
1 | block b1, tag: 'a'
2 | block b1, mix: [
3 | { block: 'b2', mods: { should: 'pass' } },
4 | { block: 'b3', elem: 'e3' }
5 | ]
6 | block b2, tag: 'b'
7 | block b2, mod should 'pass', mix: [{ mods: { modname: 'modval' } }]
8 | block b3, tag: 'b'
9 | block b3, elem e3, mix: [{ mods: { modname: 1 } }]
10 |
--------------------------------------------------------------------------------
/blocks-test/i-jasmine/__runner/i-jasmine__runner.js:
--------------------------------------------------------------------------------
1 | $(window).load(function() {
2 |
3 | jasmine._reporterInstance = new jasmine.TrivialReporter();
4 |
5 | setTimeout(
6 | function() {
7 | jasmine.getEnv().addReporter(jasmine._reporterInstance);
8 | jasmine.getEnv().execute();
9 | },
10 | 10);
11 |
12 | });
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/_layout/b-menu-horiz_layout_normal.bemhtml:
--------------------------------------------------------------------------------
1 | block b-menu-horiz, mod layout normal {
2 |
3 | content: [
4 | this.ctx.title,
5 | {
6 | elem: 'layout',
7 | content: this.ctx.content
8 | }
9 | ]
10 |
11 | elem layout, tag: 'ul'
12 |
13 | elem layout-unit, tag: 'li'
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.blocks/b-tv/b-tv.bemhtml:
--------------------------------------------------------------------------------
1 | block b-tv {
2 |
3 | js: true
4 |
5 | elem click {
6 | tag: 'input'
7 | attrs: { type: 'button', value: 'Кликать' }
8 | }
9 |
10 | elem over {
11 | tag: 'input'
12 | attrs: { type: 'button', value: 'Наводить' }
13 | }
14 |
15 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.examples/10-b-icon-src.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'b-icon',
4 | head: [
5 | { elem: 'css', url: '_10-b-icon-src.css' }
6 | ],
7 | content: {
8 | block: 'b-icon',
9 | url: 'http://yastatic.net/lego/_/Kx6F6RQnQFitm0qRxX7vpvfP0K0.png',
10 | alt: 'Иконка Серпа'
11 | }
12 | })
13 |
--------------------------------------------------------------------------------
/blocks-common/b-icon/b-icon.en.md:
--------------------------------------------------------------------------------
1 | This is an abstract container for an icon.
2 |
3 | The block has optional attributes: `alt`, `url`, `width`, `height`.
4 |
5 | Set property `url` to make **b-icon** with another image. The same for attributes `alt`, `width` and `height`.
6 |
7 | It is possible to use css sprites and single images for the block by using css-property `background: url(...);`
8 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_pseudo/b-link_pseudo_yes.css:
--------------------------------------------------------------------------------
1 | .b-link_pseudo_yes
2 | {
3 | color: #1a3dc1;
4 | }
5 |
6 | .i-ua_js_yes .b-link_pseudo_yes
7 | {
8 | text-decoration: none;
9 |
10 | cursor: pointer;
11 | }
12 |
13 | .i-ua_js_yes .b-link_pseudo_yes .b-link__inner
14 | {
15 | text-decoration: none;
16 |
17 | color: inherit;
18 | border-bottom: 1px dotted;
19 | }
20 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/30-b-page-with-js.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'Page with js file linked',
4 | head: [
5 | { elem: 'css', url: '_30-b-page-with-js.css' },
6 | { block: 'i-jquery', elem: 'core' },
7 | { elem: 'js', url: '_30-b-page-with-js.js' }
8 | ],
9 | content: [
10 | 'Page content'
11 | ]
12 | })
13 |
--------------------------------------------------------------------------------
/blocks-common/i-ecma/__function/i-ecma__function.js:
--------------------------------------------------------------------------------
1 | (function() {
2 |
3 | var slice = Array.prototype.slice;
4 |
5 | Function.prototype.bind || (Function.prototype.bind = function(ctx) {
6 |
7 | var fn = this,
8 | args = slice.call(arguments, 1);
9 |
10 | return function () {
11 | return fn.apply(ctx, args.concat(slice.call(arguments)));
12 | }
13 |
14 | });
15 |
16 | })();
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/30-b-menu-horiz-normal-js.ru.md:
--------------------------------------------------------------------------------
1 | **JavaScript**-реализация горизонтального меню позволяет динамически переключать активный пункт меню по клику левой кнопкой мыши.
2 |
3 | Во время переключения на JS BEM-объекте, соответствующем меню создаётся событие `current` с данными о том, какой пункт меню выбран. Блоки, использующие меню, могут реагировать на это событие.
4 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/30-b-page-with-js.ru.md:
--------------------------------------------------------------------------------
1 | К страницам с JavaScript функцинальностью также должен быть подключен **jQuery**.
2 |
3 | Для инициализации блоков в JavaScript по `domReady` нужно определить зависимость (`.deps.js`) блока `b-page` от `i-bem__dom_init_auto`.
4 | Это делается на уровне переопределения проекта, использующего библиотеку, или на уровне преопределения конкретной страницы.
5 |
--------------------------------------------------------------------------------
/.bem/levels/sets.js:
--------------------------------------------------------------------------------
1 | var PATH = require('path'),
2 | BEM = require('bem'),
3 | SETS = require('bem-sets'),
4 | environ = require('bem-environ');
5 |
6 | exports.baseLevelPath = SETS.resolveLevel('sets');
7 |
8 | exports.getTechs = function() {
9 | return BEM.util.extend(this.__base() || {}, {
10 | 'examples' : PATH.resolve(environ.PRJ_ROOT, '.bem/techs/examples.js')
11 | });
12 | };
13 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/lib/bemhtml.js:
--------------------------------------------------------------------------------
1 | //
2 | // API
3 | //
4 | exports.translate = require('./bemhtml/api').translate;
5 | exports.parse = require('./bemhtml/api').parse;
6 | exports.compile = require('./bemhtml/api').compile;
7 |
8 | //
9 | // Jail grammar
10 | //
11 | exports.Jail = require('./ometa/jail').Jail;
12 |
13 | //
14 | // Naive-Cache
15 | //
16 | exports.cache = require('./bemhtml/cache');
17 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_inner/b-link_inner_yes.css:
--------------------------------------------------------------------------------
1 | .b-link_inner_yes:link,
2 | .b-link_inner_yes:hover,
3 | .b-link_inner_yes:visited
4 | {
5 | text-decoration: none;
6 | }
7 |
8 | .b-link_inner_yes .b-link__inner
9 | {
10 | text-decoration: underline;
11 |
12 | color: inherit;
13 | }
14 |
15 | .b-link_inner_yes .b-icon
16 | {
17 | vertical-align: middle;
18 |
19 | margin-right: 5px;
20 | }
--------------------------------------------------------------------------------
/.bem/techs/examples.js:
--------------------------------------------------------------------------------
1 | var PATH = require('path');
2 |
3 | // путь до базовой технологии
4 | exports.baseTechPath = require.resolve('bem/lib/techs/v2/level-proto');
5 |
6 | // пеопределяем метод `getBaseLevel`, указываем, что в качестве уровня
7 | // для собранных примеров нужно использовать уровень бандлов
8 | exports.getBaseLevel = function() {
9 | return PATH.resolve(__dirname, '../levels/bundles.js');
10 | };
11 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/basic-block.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/blocks-common/i-menu/i-menu.ru.md:
--------------------------------------------------------------------------------
1 | ##Описание
2 | Блок-помощник для построения абстрактного меню.
3 |
4 | Содержит js-функциональность, которая используется в блоках `b-menu-vert` и `b-menu-horiz`.
5 |
6 | Слушает событие `leftclick` на элементе `item-selector` и переводит в `{ state: 'current' }` тот элемент `item`,
7 | на котором произошло событие.
8 |
9 | Тригерит событие которое можно использовать из других блоков, использующее любое меню.
10 |
--------------------------------------------------------------------------------
/blocks-desktop/b-icon/b-icon.bemhtml:
--------------------------------------------------------------------------------
1 | block b-icon {
2 |
3 | tag: 'img'
4 | attrs: {
5 |
6 | var ctx = this.ctx,
7 | a = { src: '//yastatic.net/lego/_/La6qi18Z8LwgnZdsAr1qy1GwCwo.gif', alt: '' },
8 | props = ['alt', 'width', 'height'], p;
9 |
10 | ctx.url && (a.src = ctx.url);
11 | while(p = props.shift()) ctx[p] && (a[p] = ctx[p]);
12 |
13 | return a;
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text-list/b-text-list.bemhtml:
--------------------------------------------------------------------------------
1 | block b-text-list, !this.elem {
2 |
3 | tag: 'ul' //по умолчанию ul
4 |
5 | content, this._.isArray(this.ctx.items): {
6 |
7 | var cont = this.ctx.content = [];
8 |
9 | this.ctx.items.forEach(function(e){
10 | cont.push({elem: 'item', content: e})
11 | })
12 |
13 | return cont;
14 | }
15 |
16 | }
17 |
18 | block b-text-list, elem item, tag: 'li'
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.bemhtml:
--------------------------------------------------------------------------------
1 | block b-link {
2 | mix: [{
3 | block: 'i-pressed-controller',
4 | js: true
5 | }],
6 | tag: 'span'
7 |
8 | attrs: {
9 | var a = {};
10 |
11 | this.ctx.url && (a.href = this.ctx.url);
12 | this.ctx.target && (a.target = this.ctx.target);
13 |
14 | return a;
15 | }
16 |
17 | this.ctx.url, tag: 'a'
18 |
19 | elem text, tag: 'span'
20 | }
21 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/10-b-logo.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'b-logo',
4 | head: [
5 | { elem: 'css', url: '_10-b-logo.css' }
6 | ],
7 | content: {
8 | block: 'b-logo',
9 | content: {
10 | elem: 'icon',
11 | url: '../../../../blocks-desktop/b-logo/examples/10-b-logo.blocks/b-logo/b-logo.png',
12 | alt: 'logo'
13 | }
14 | }
15 | })
16 |
--------------------------------------------------------------------------------
/blocks-touch/b-icon/b-icon.bemhtml:
--------------------------------------------------------------------------------
1 | block b-icon {
2 | tag: 'i'
3 |
4 | this.ctx.url {
5 | tag: 'img'
6 | attrs: {
7 | var a = {
8 | src: this.ctx.url
9 | };
10 |
11 | this.ctx.width && (a.width = this.ctx.width);
12 | this.ctx.height && (a.height = this.ctx.height);
13 | this.ctx.alt && (a.alt = this.ctx.alt);
14 |
15 | return a;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/local-var.bemhtml:
--------------------------------------------------------------------------------
1 | this._mode === '', block b1 {
2 | true: {
3 | var x;
4 | if (x !== undefined) throw new Error('x should not change');
5 | x = true;
6 | applyNext();
7 | }
8 | tag: 'div'
9 | }
10 |
11 | this._mode === '', block b2 {
12 | true: {
13 | var x;
14 |
15 | if (x !== undefined) throw new Error('x should not change');
16 | x = true;
17 | applyNext();
18 | }
19 | tag: 'div'
20 | }
21 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/_layout/b-menu-horiz_layout_normal.css:
--------------------------------------------------------------------------------
1 | .b-menu-horiz_layout_normal .b-menu-horiz__layout,
2 | .b-menu-horiz_layout_normal .b-menu-horiz__layout-unit
3 | {
4 | margin: 0;
5 | padding: 0;
6 |
7 | list-style: none;
8 | }
9 |
10 | .b-menu-horiz_layout_normal .b-menu-horiz__title,
11 | .b-menu-horiz_layout_normal .b-menu-horiz__layout,
12 | .b-menu-horiz_layout_normal .b-menu-horiz__layout-unit
13 | {
14 | display: inline-block;
15 | }
16 |
--------------------------------------------------------------------------------
/blocks-common/i-ecma/__object/i-ecma__object.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Block i-ecma. Shim for some ES5 methods
3 | *
4 | * @block i-ecma
5 | */
6 | (function() {
7 |
8 | /**
9 | * Возвращает массив свойств объекта
10 | *
11 | * @param {Object} obj объект
12 | * @returns {Array}
13 | */
14 | Object.keys || (Object.keys = function(obj) {
15 | var res = [];
16 |
17 | for(var i in obj) obj.hasOwnProperty(i) &&
18 | res.push(i);
19 |
20 | return res;
21 | });
22 |
23 | })();
24 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/17-i-bem-square.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'Изменение модификатора блока по клику',
4 | head: [
5 | { elem: 'css', url: '_17-i-bem-square.css', ie: false },
6 | { elem: 'css', url: '_17-i-bem-square.ie.css', ie: 'lt IE 8' },
7 | { block: 'i-jquery', elem: 'core' },
8 | { elem: 'js', url: '_17-i-bem-square.js' }
9 | ],
10 | content: {
11 | block: 'b-square'
12 | }
13 | })
14 |
--------------------------------------------------------------------------------
/blocks-common/b-link/b-link.en.md:
--------------------------------------------------------------------------------
1 | **b-link** block is used inside the other blocks.
2 |
3 | For a simple like set the following bemjson:
4 |
5 | ```js
6 | {
7 | block: 'b-link',
8 | url: 'http://company.yandex.ru',
9 | title: 'Click here to learn more',
10 | target: '_blank',
11 | content: 'The best company all over the world'
12 | }
13 | ```
14 |
15 | An `url` property transforms info a `href` attribute. The `title` and `target` properties turn into the relevant attributes.
16 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/15-i-bem-click.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'Обработчик события click',
4 | head: [
5 | { elem: 'css', url: '_15-i-bem-click.css', ie: false },
6 | { elem: 'css', url: '_15-i-bem-click.ie.css', ie: 'lt IE 8' },
7 | { block: 'i-jquery', elem: 'core' },
8 | { elem: 'js', url: '_15-i-bem-click.js' }
9 | ],
10 | content: {
11 | block: 'b-square',
12 | js: true
13 | }
14 | })
15 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.en.md:
--------------------------------------------------------------------------------
1 | A **b-menu-horiz** block provides a horizontal menu. The block also has functionality (implemented on JavaScript) that helps to write scripts with reaction on a menu item when becoming selected.
2 |
3 | HTML markup complexity depends on a block modifier.
4 |
5 | The block has a `layout` modifier with three following values:
6 |
7 | * `horiz`
8 | * `complex`
9 | * `normal`
10 |
11 | **Attention**: This block cannot be used without a `layout` modifier.
12 |
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.bemhtml:
--------------------------------------------------------------------------------
1 | block b-layout-table {
2 |
3 | tag: 'table'
4 |
5 | elem row, tag: 'tr'
6 |
7 | this.elem === 'cell' || this.elem === 'gap' {
8 | tag: 'td'
9 | attrs: {
10 |
11 | var ctx = this.ctx,
12 | a = {},
13 | props = ['colspan', 'rowspan'], p;
14 |
15 | while(p = props.shift()) ctx[p] && (a[p] = ctx[p]);
16 |
17 | return a;
18 | }
19 | }
20 |
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.examples/10-b-layout-table.blocks/b-layout-table/_layout/b-layout-table_layout_60-40.css:
--------------------------------------------------------------------------------
1 | .b-layout-table_layout_60-40 .b-layout-table__cell
2 | {
3 | width: 60%;
4 | padding: 0.4em 0;
5 |
6 | background: #9c0;
7 | }
8 |
9 | .b-layout-table_layout_60-40 .b-layout-table__cell_position_r
10 | {
11 | width: 40%;
12 |
13 | background: #f3a828;
14 | }
15 |
16 | .b-layout-table_layout_60-40 .b-layout-table__inner
17 | {
18 | margin-right: 20px;
19 | }
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/_layout/b-menu-horiz_layout_complex.bemhtml:
--------------------------------------------------------------------------------
1 | block b-menu-horiz, mod layout complex {
2 |
3 | content: [
4 | {
5 | elem: 'layout',
6 | tag: 'table',
7 | content: {
8 | elem: 'layout-row',
9 | tag: 'tr',
10 | content: this.ctx.content
11 | }
12 | }]
13 |
14 | this.elem === 'layout-unit' ||
15 | this.elem === 'separator' ||
16 | this.elem === 'gap', tag: 'td'
17 | }
18 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.ru.md:
--------------------------------------------------------------------------------
1 | Наведение на кнопку включает «профилактику», а клик по другой кнопке выключает её. На любое из этих действий блок реагирует, заворачиваясь в красную рамочку.
2 |
3 | Это поведение описано в js-коде блока `b-tv`. Инициализация блока происходит по двум событиям: наверении курсора на один элемент или клике на другой.
4 |
5 | Возможность задать несколько сценариев инициализации позволяет реализовывать сложные блоки, работу с которыми пользователь может начинать по-разному.
6 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/basic/hash.bemhtml:
--------------------------------------------------------------------------------
1 | nay: this.block
2 | a: 1
3 | b: 1
4 | c: 1
5 | d: 1
6 | e: 1
7 | f: 1
8 | g: 1
9 | h: 1
10 | a1: 1
11 | b1: 1
12 | c1: 1
13 | d1: 1
14 | e1: 1
15 | f1: 1
16 | g1: 1
17 | h1: 1
18 | a2: 2
19 | b2: 2
20 | c2: 2
21 | d2: 2
22 | e2: 2
23 | f2: 2
24 | g2: 2
25 | h2: 2
26 | a3: 3
27 | b3: 3
28 | c3: 3
29 | d3: 3
30 | e3: 3
31 | f3: 3
32 | g3: 3
33 | h3: 3
34 | a4: 4
35 | b4: 4
36 | c4: 4
37 | d4: 4
38 | e4: 4
39 | f4: 4
40 | g4: 4
41 | h4: 4
42 |
43 | true: applyNext({ block: 'ok' })
44 |
--------------------------------------------------------------------------------
/blocks-common/i-ecma/__object/i-ecma__object.test.js:
--------------------------------------------------------------------------------
1 | BEM.TEST.decl({ block : 'i-ecma', elem : 'object' }, function(undefined) {
2 |
3 | describe('keys specs', function() {
4 | [
5 | { data : {}, res : [] },
6 | { data : { a : 1, b : 2, c : 2, d : undefined }, res : ['a', 'b', 'c', 'd'] }
7 | ].forEach(function(test) {
8 | it('should be correct result', function() {
9 | expect(Object.keys(test.data)).toEqual(test.res);
10 | });
11 | });
12 | });
13 |
14 | });
--------------------------------------------------------------------------------
/blocks-desktop/b-search/__layout/b-search__layout.ru.md:
--------------------------------------------------------------------------------
1 | Элемент `layout` миксируется с блоком `b-layout-table` в **BEMHTML**-шаблоне блока `b-search`.
2 |
3 | Свойства `input`, `button`, `under`, представляют собой элементы для раскладки `[ layout-input, layout-button, layout-under ]`, которые миксируются с элементами `cell` блока `b-layout-table`, преобразуясь в **HTML** в ячейки таблицы.
4 |
5 | Свойство `under` добавляет еще одну строку с ячейкой, в нее можно помещать дополнительную информацию. Например, ссылка «Расширенный поиск» под поисковым полем.
6 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/i-bem.deps.js:
--------------------------------------------------------------------------------
1 | ({
2 | mustDeps: [
3 | {block: 'i-jquery', elem: 'inherit'},
4 | {block: 'i-jquery', elem: 'identify'},
5 | {block: 'i-jquery', elem: 'is-empty-object'},
6 | {block: 'i-jquery', elem: 'debounce'},
7 | {block: 'i-jquery', elem: 'observable'}
8 | ],
9 | shouldDeps: [
10 | { block: 'i-ecma', elem: 'object' },
11 | { block: 'i-ecma', elem: 'array' },
12 | { block: 'i-ecma', elem: 'function' },
13 | { elem: 'internal' }
14 | ]
15 | })
16 |
--------------------------------------------------------------------------------
/blocks-common/i-ecma/__string/i-ecma__string.test.js:
--------------------------------------------------------------------------------
1 | BEM.TEST.decl({ block : 'i-ecma', elem : 'string' }, function() {
2 |
3 | describe('trim specs', function() {
4 | [
5 | { data : ' trim ', res : 'trim' },
6 | { data : ' trim', res : 'trim' },
7 | { data : 'trim ', res : 'trim' }
8 | ].forEach(function(test) {
9 | it('should be correct result', function() {
10 | expect(test.data.trim()).toEqual(test.res);
11 | });
12 | });
13 | });
14 |
15 | });
--------------------------------------------------------------------------------
/blocks-desktop/i-ua/i-ua.examples/10-i-ua.blocks/b-text/b-text.css:
--------------------------------------------------------------------------------
1 | .b-text__h3
2 | {
3 | font-size: 1.3em;
4 |
5 | padding: 25px;
6 | }
7 |
8 | .b-text__table
9 | {
10 | width: 85%;
11 | margin: 10px auto;
12 | padding: 25px 0;
13 |
14 | background: #fff;
15 | }
16 |
17 | .b-text__td
18 | {
19 | padding: 15px 25px;
20 |
21 | vertical-align: top;
22 |
23 | border-bottom: 1px solid rgba(83, 83, 83, .33);
24 | }
25 |
26 | .b-text__td:not(:last-child)
27 | {
28 | border-right: 1px solid rgba(83, 83, 83, .33);
29 | }
30 |
--------------------------------------------------------------------------------
/blocks-common/i-ua/i-ua.bemhtml:
--------------------------------------------------------------------------------
1 | block i-ua {
2 | tag: 'script',
3 | bem: false,
4 | attrs: {
5 | nonce: this.ctx.nonce || this._nonce
6 | },
7 | content: [
8 | ';(function(d,e,c,r){',
9 | 'e=d.documentElement;',
10 | 'c="className";',
11 | 'r="replace";',
12 | 'e[c]=e[c][r]("i-ua_js_no","i-ua_js_yes");',
13 | 'if(d.compatMode!="CSS1Compat")',
14 | 'e[c]=e[c][r]("i-ua_css_standart","i-ua_css_quirks")',
15 | '})(document);'
16 | ].join('')
17 | }
18 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_pseudo/b-link_pseudo.bemhtml:
--------------------------------------------------------------------------------
1 | block b-link, (this.mods && this.mods.pseudo), !this.elem {
2 |
3 | tag: (this.ctx.url? 'a' : 'span')
4 |
5 | js: true
6 |
7 | attrs, !this.ctx.url: {
8 | return {}
9 | },
10 |
11 | content, !this.ctx._wrap, !this.mods.inner: {
12 | apply(
13 | this._mode = '',
14 | this.ctx = {
15 | elem: 'inner',
16 | content: this.ctx.content,
17 | _wrap: true
18 | }
19 | );
20 | }
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/_layout/b-menu-horiz_layout_complex.css:
--------------------------------------------------------------------------------
1 | .b-menu-horiz_layout_complex .b-menu-horiz__layout
2 | {
3 | font-size: 100%;
4 |
5 | padding: 0;
6 |
7 | border-collapse: collapse;
8 | }
9 |
10 | .b-menu-horiz_layout_complex .b-menu-horiz__gap,
11 | .b-menu-horiz_layout_complex .b-menu-horiz__separator,
12 | .b-menu-horiz_layout_complex .b-menu-horiz__layout-unit
13 | {
14 | padding: 0;
15 |
16 | border-collapse: collapse;
17 | }
18 |
19 | .b-menu-horiz_layout_complex .b-menu-horiz__gap
20 | {
21 | width: 100%;
22 | }
23 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/tests/10-base_bem.blocks/i-bem/__live-ctx/i-bem__live-ctx.test.js:
--------------------------------------------------------------------------------
1 | BEM.TEST.decl({ block : 'i-bem', elem : 'live-ctx' }, function() {
2 |
3 | it('should be callback called once', function() {
4 | var testElem = $('#once-test'),
5 | childBlock = testElem.find('.b-foo').bem('b-foo'),
6 | callback = jasmine.createSpy();
7 |
8 | BEM.blocks['b-foo'].on(testElem, 'event', callback);
9 |
10 | childBlock.trigger('event');
11 | expect(callback.callCount).toEqual(1);
12 |
13 | });
14 |
15 | });
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.examples/10-b-menu-horiz-normal.blocks/b-menu-horiz/b-menu-horiz.css:
--------------------------------------------------------------------------------
1 | .b-menu-horiz_layout_normal .b-menu-horiz__title
2 | {
3 | margin-right: 10px;
4 | }
5 |
6 | .b-menu-horiz_layout_normal .b-menu-horiz__item
7 | {
8 | margin: 0 0.2em;
9 | padding: 0.3em 0.4em;
10 | }
11 |
12 | .b-menu-horiz_layout_normal .b-menu-horiz__item_state_current
13 | {
14 | background: yellow;
15 | }
16 |
17 | .b-menu-horiz_layout_normal .b-link:link,
18 | .b-menu-horiz_layout_normal .b-link:visited
19 | {
20 | color: #00c;
21 | }
22 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/40-b-link-dynamic-pseudo.blocks/b-lazy-link/b-lazy-link.js:
--------------------------------------------------------------------------------
1 | /** @requires BEM */
2 | /** @requires BEM.DOM */
3 |
4 | BEM.DOM.decl('b-lazy-link', {
5 |
6 | onSetMod : {
7 | 'js' : function() {
8 | var _this = this,
9 | _link = this.findBlockOn('b-link');
10 | console.log(_link);
11 | setTimeout(function(){
12 | _link.setMod('pseudo', 'yes')
13 | }, 5000);
14 | }
15 | }
16 |
17 | }, {
18 |
19 | live : false
20 |
21 | });
22 |
--------------------------------------------------------------------------------
/blocks-desktop/b-search/b-search.examples/10-b-search.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'b-search',
4 | head: [
5 | { elem: 'css', url: '_10-b-search.css' },
6 | { block: 'i-jquery', elem: 'core' },
7 | { elem: 'js', url: '_10-b-search.js' }
8 | ],
9 | content: {
10 | block: 'b-search',
11 | attrs: { action: '/search.xml' },
12 | input: {
13 | elem: 'input',
14 | attrs: { value: 'Text' }
15 | },
16 | button: {
17 | elem: 'button'
18 | }
19 | }
20 | })
21 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.bemhtml:
--------------------------------------------------------------------------------
1 | block b-link {
2 |
3 | tag: 'a'
4 |
5 | attrs: {
6 |
7 | var ctx = this.ctx,
8 | props = ['title', 'target'],
9 | p = typeof ctx.url,
10 | a = {
11 | href: ((p === 'undefined' || p === 'string') ? ctx.url :
12 | (p = [], apply(this._buf = p, this._mode = '', this.ctx = ctx.url),
13 | p.join('')))
14 | };
15 |
16 | while(p = props.pop()) ctx[p] && (a[p] = ctx[p]);
17 |
18 | return a;
19 |
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/i-bem.en.doc.js:
--------------------------------------------------------------------------------
1 | ({"name":"i-bem","elems":[{"name":"dom","mods":[{"name":"init","vals":[{"name":"auto","techs":[{"name":"js"}],"title":"","bemjsonDesc":""}],"title":"","bemjsonDesc":""}],"techs":[{"name":"js"},{"name":"ru.title.txt"}],"title":"","bemjsonDesc":""},{"name":"html","techs":[{"name":"bemhtml"},{"name":"ru.title.txt"}],"title":"","bemjsonDesc":""},{"name":"internal","techs":[{"name":"js"},{"name":"ru.title.txt"}],"title":"","bemjsonDesc":""}],"techs":[{"name":"en.title.txt"},{"name":"js"},{"name":"ru.title.txt"},{"name":"ru.wiki"}],"title":"Helper to create other blocks","bemjsonDesc":""})
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/15-i-bem-click.ru.md:
--------------------------------------------------------------------------------
1 | `BEM-js` позволяет инициализировать компонент только тогда, когда пользователь начал с ним работать.
2 |
3 | В примерре клик на квадрат включает/выключает модификатор `color_green` у блока `b-square`.
4 |
5 | Для того, чтобы работал `BEM-js`, у блока должен быть модификатор `is-bem:"yes"` и проставлен атрибут `data-bem`. Это выполняется автоматически при помощи шаблона по-моде `js: true`.
6 |
7 | Java-script инициализация блока происходит при помощи `live`-события, подробнее о работе которого можно прочесть в документации на блок [i-bem](/blocks/i-bem/i-bem.md).
8 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/tests/10-base_bem.blocks/i-bem/__init/i-bem__init.test.js:
--------------------------------------------------------------------------------
1 | BEM.TEST.decl({ block : 'i-bem', elem : 'init' }, function() {
2 |
3 | it('initialization should\'t be sync', function() {
4 | var inited = false;
5 | BEM.DOM.decl('b-sync-init', {
6 | onSetMod : {
7 | 'js' : function() {
8 | inited = true;
9 | }
10 | }
11 | });
12 | BEM.DOM.init($(''));
13 | expect(inited).toBeTruthy();
14 | });
15 |
16 | });
17 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/_layout/b-menu-horiz_layout_simple.bemhtml:
--------------------------------------------------------------------------------
1 | block b-menu-horiz, mod layout simple {
2 |
3 | default: {
4 | applyNext(this._separator = this.ctx.separator);
5 | }
6 |
7 | content: [
8 | this.ctx.title,
9 | // XXX: hack, so `isFirst()` will work as we want
10 | { tag: false, content: this.ctx.content }
11 | ]
12 |
13 | elem item {
14 | default: applyCtx([(this.isFirst()? '' : this._separator), this.ctx])
15 |
16 | tag: (this.elemMods.state? 'span' : false)
17 | }
18 |
19 | elem layout-unit, tag: false
20 |
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/20-i-bem-liveinit-multiple.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'Liveinit по нескольким событиям',
4 | head: [
5 | { elem: 'css', url: '_20-i-bem-liveinit-multiple.css', ie: false },
6 | { elem: 'css', url: '_20-i-bem-liveinit-multiple.ie.css', ie: 'lt IE 8' },
7 | { block: 'i-jquery', elem: 'core' },
8 | { elem: 'js', url: '_20-i-bem-liveinit-multiple.js' }
9 | ],
10 | content: {
11 | block: 'b-tv',
12 | content: [
13 | { elem: 'click' },
14 | { elem: 'over' }
15 | ]
16 | }
17 | })
18 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/60-i-bem-pseudo-link.blocks/b-pseudo-link-example/b-pseudo-link-example.js:
--------------------------------------------------------------------------------
1 | BEM.DOM.decl('b-pseudo-link-example', {
2 |
3 | onSetMod: {
4 |
5 | 'js': function() {
6 | var link = this.findBlockInside('b-link');
7 | BEM.blocks['b-link']
8 | .liveCtxBind(link.domElem, 'click', function(){
9 | link.elem('inner').text('Кликнутая ссылка');
10 | }, this);
11 | }
12 |
13 | }
14 |
15 | }, {
16 |
17 | live: function() {
18 | this.liveInitOnBlockInsideInit('b-link');
19 | }
20 |
21 | }
22 | );
23 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/dynamic-01.xml:
--------------------------------------------------------------------------------
1 |
2 | count
3 |
4 | Найдена
5 | Найдено
6 | Найдено
7 | count
8 | count
9 |
10 | страница.
11 | страницы.
12 | страниц.
13 |
14 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/tests/10-base_bem.blocks/i-bem/__elem-params/i-bem__elem-params.test.js:
--------------------------------------------------------------------------------
1 | BEM.TEST.decl({ block : 'i-bem', elem : 'elem-params' }, function() {
2 |
3 | it('should be valid elem params', function() {
4 | var testElem = $('#elem-params-test'),
5 | block = testElem.find('.b-foo').bem('b-foo');
6 |
7 | expect(block.elemParams('elem1').param).toEqual('param1');
8 | expect(block.elemParams(block.elem('elem1')).param).toEqual('param1');
9 | expect(block.elemParams('elem2').param).toEqual('param2');
10 | expect(block.elemParams('elem3').param).toBeUndefined();
11 | });
12 |
13 | });
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/_dummy/i-bem__i18n_dummy_yes.bemhtml:
--------------------------------------------------------------------------------
1 | !function oninit() {
2 | (function(global, bem_) {
3 |
4 | if(bem_.I18N) {
5 | return;
6 | }
7 |
8 | /** @global points to global context */
9 | global.BEM = bem_;
10 |
11 | /**
12 | * `BEM.I18N` API stub
13 | */
14 | var i18n = bem_.I18N = function(keyset, key) {
15 | return key;
16 | };
17 |
18 | i18n.keyset = function() { return i18n }
19 | i18n.key = function(key) { return key }
20 | i18n.lang = function() { return }
21 |
22 | })(this, typeof BEM === 'undefined' ? {} : BEM);
23 | }();
24 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/40-i-bem-extend.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'Изменение/дополнение стандартного поведения блока через модификатор',
4 | head: [
5 | { elem: 'css', url: '_40-i-bem-extend.css', ie: false },
6 | { elem: 'css', url: '_40-i-bem-extend.ie.css', ie: 'lt IE 8' },
7 | { block: 'i-jquery', elem: 'core' },
8 | { elem: 'js', url: '_40-i-bem-extend.js' }
9 | ],
10 | content: {
11 | block: 'b-link',
12 | mods: { action: 'alert', pseudo: 'yes' },
13 | url: 'http://www.yandex.ru/',
14 | content: 'Кликни на ссылку'
15 | }
16 | })
17 |
--------------------------------------------------------------------------------
/blocks-desktop/b-text/b-text.ru.md:
--------------------------------------------------------------------------------
1 | ##Описание
2 |
3 | ### Deprecated
4 |
5 | Блок устарел, не рекомендован к использованию и будет удален в следующей мажорной версии.
6 |
7 | Блок `b-text` обеспечивает единообразие оформления.
8 |
9 | Позволяет задавать произвольные элементы, которые продуцируются в одноименные **HTML**-теги.
10 |
11 | Для содержимого блока определены базовые стили заголовков, списков, начертания текста.
12 |
13 | Каждому элементу блока соотвествует в **CSS**-реализации свой класс. Это позволяет избежать каскада при использовании блока, что в свою очередь уменьшает время, затраченное на процесс вычисления размеров и положения элементов на странице.
14 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/basic-block.json:
--------------------------------------------------------------------------------
1 | {
2 | "block": "b-nojs",
3 | "content":
4 | {
5 | "tag": "b",
6 | "content": {
7 | "tag": "i",
8 | "content": [
9 | { "elem": "eee", "content":
10 | { "tag": "b", "content": "blalba" } },
11 | { "block": "b2", "elem": "eee", "content":
12 | { "tag": "b", "content": "blalba" } },
13 | { "block": "b-bla", "mods": { "0-mode": "v2" } },
14 | { "block": "b-alb" }
15 | ]
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/20-b-logo-link.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'b-logo',
4 | head: [
5 | { elem: 'css', url: '_20-b-logo-link.css' }
6 | ],
7 | content: [
8 | {
9 | block: 'b-logo',
10 | content: {
11 | elem: 'link',
12 | url: '/',
13 | title: 'logo',
14 | icon: {
15 | elem: 'icon',
16 | url: '../../../../blocks-desktop/b-logo/examples/20-b-logo-link.blocks/b-logo/b-logo.png',
17 | alt: 'logo'
18 | }
19 | }
20 | }
21 | ]
22 | })
23 |
--------------------------------------------------------------------------------
/blocks-touch/b-page/b-page.ru.md:
--------------------------------------------------------------------------------
1 | ###Поддержка IE9
2 |
3 | У каждого элемента `css` может быть свойство `ie`.
4 | Если это свойство `false`, то будут использоваться такие `condittional comments`, которые предотвратят использование этих стилей в **IE**. При строчном значении этого свойства тег ``, будет обёрнут в соответствующий `conditional comment` для IE9
5 |
6 | ```bemjson
7 | {
8 | block: 'b-page',
9 | title: 'Page with link',
10 | head: [
11 | { elem: 'css', url: 'example.css', ie: false },
12 | { elem: 'css', url: 'example.ie.css', ie: 'gte IE 9' },
13 | { elem: 'js', url: 'example.js' }
14 | ],
15 | content: 'Page'
16 | }
17 | ```
18 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/test/files/i-bem/basic-block.bemhtml:
--------------------------------------------------------------------------------
1 | block b-bla, tag: 'span'
2 | block b-bla, mod 0-mode v2, tag: 'yay'
3 | block b-bla, mix: [{ mods: { m2: 'v2' } }]
4 | block b-bla, js: true
5 | block b-alb, attrs: { bbb: 1, title: 2 }
6 | block b-alb, js: { bbb: 1, title: 2 }
7 |
8 | block b-nojs, tag, !this.elem: 'table'
9 | block b-nojs, default, !this.elem, !this.ctx._wrap: {
10 | local(
11 | this.ctx._wrap = true,
12 | this.ctx = { elem: 'run', content: this.ctx },
13 | this._mode = '') this.apply();
14 | }
15 |
16 | elem elem1, default: {
17 | local(
18 | this.ctx = this.ctx.content,
19 | this._mode = '') this.apply();
20 | }
21 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/60-i-bem-pseudo-link.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'Реакция на события вложенных блоков',
4 | head: [
5 | { elem: 'css', url: '_60-i-bem-pseudo-link.css', ie: false },
6 | { elem: 'css', url: '_60-i-bem-pseudo-link.ie.css', ie: 'lt IE 8' },
7 | { block: 'i-jquery', elem: 'core' },
8 | { elem: 'js', url: '_60-i-bem-pseudo-link.js' }
9 | ],
10 | content: {
11 | block: 'b-pseudo-link-example',
12 | content: {
13 | block: 'b-link',
14 | mods: { pseudo: 'yes', 'is-bem': 'yes' },
15 | content: 'Некликнутая ссылка'
16 | }
17 | }
18 | })
19 |
--------------------------------------------------------------------------------
/blocks-desktop/i-jquery/__outsideclick/i-jquery__outsideclick.js:
--------------------------------------------------------------------------------
1 | (function($) {
2 |
3 | var outsideClick = $.event.special.outsideclick = {
4 |
5 | add: function(obj) {
6 |
7 | $(document).on('click.' + obj.guid, outsideClick.handler.bind(this));
8 |
9 | },
10 |
11 | remove: function(obj) {
12 |
13 | $(document).off('click.' + obj.guid);
14 |
15 | },
16 |
17 | handler: function(e) {
18 |
19 | if(!$.contains(this, e.target)) {
20 |
21 | e.type = 'outsideclick';
22 |
23 | $.event.dispatch.apply(this, arguments);
24 |
25 | e.type = 'click';
26 |
27 | }
28 |
29 | }
30 |
31 | };
32 |
33 | })(jQuery);
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/tests/10-base_bem.blocks/i-bem/__contains-dom-elem/i-bem__contains-dom-elem.js:
--------------------------------------------------------------------------------
1 | BEM.TEST.decl({ block : 'i-bem', elem : 'contains-dom-elem' }, function() {
2 |
3 | var block;
4 | beforeEach(function() {
5 | block = $('#contains-dom-elem-test').find('.b-foo').bem('b-foo');
6 | });
7 |
8 | it('should contains inside elems', function() {
9 | expect(block.containsDomElem(block.elem('e1'))).toBeTruthy();
10 | expect(block.containsDomElem(block.elem('e2'))).toBeTruthy();
11 | });
12 |
13 | it('shouldn\'t contains outside elems', function() {
14 | expect(block.containsDomElem($('#no-contains'))).toBeFalsy();
15 | });
16 |
17 | });
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.css:
--------------------------------------------------------------------------------
1 | /* запрещаем тягание и выделение блоков внутри в декстопных браузерах */
2 | .b-slider .b-link,
3 | .b-slider .b-form-button,
4 | .b-slider .b-ico
5 | {
6 | -webkit-user-drag: none;
7 | -webkit-user-select: none;
8 | }
9 |
10 | .b-slider__inner
11 | {
12 | overflow: hidden;
13 | }
14 |
15 | .b-slider .b-menu
16 | {
17 | float: left;
18 |
19 | white-space: nowrap;
20 | }
21 |
22 | .i-ua_platform_ios .b-slider .b-menu
23 | {
24 | -webkit-transform: translateZ(0);
25 | }
26 |
27 | .i-ua_platform_wp .b-slider .b-menu__item
28 | {
29 | display: inline-block;
30 | }
31 |
32 | .b-slider_animation_yes
33 | {
34 | pointer-events: none;
35 | }
--------------------------------------------------------------------------------
/blocks-touch/b-icon/b-icon.examples/10-simple-bem.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'заголовок',
4 | head: [
5 | {
6 | elem: 'css',
7 | url: '_10-simple-bem.css'
8 | },
9 | {
10 | elem: 'css',
11 | ie: true,
12 | url: '_10-simple-bem.ie.css'
13 | },
14 | {
15 | block: 'i-jquery',
16 | elem: 'core'
17 | },
18 | {
19 | elem: 'js',
20 | url: '_10-simple-bem.js'
21 | }
22 | ],
23 | content: {
24 | block: 'b-icon',
25 | url: 'http://yastatic.net/lego/_/Kx6F6RQnQFitm0qRxX7vpvfP0K0.png'
26 | }
27 | })
28 |
--------------------------------------------------------------------------------
/blocks-desktop/i-bem/i-bem.examples/17-i-bem-square.blocks/b-square/b-square.js:
--------------------------------------------------------------------------------
1 | /** @requires BEM */
2 | /** @requires BEM.DOM */
3 |
4 | BEM.DOM.decl('b-square', {
5 |
6 | onSetMod : {
7 |
8 | 'js' : function() {
9 | var square = this;
10 |
11 | this.bindTo('click', function(){
12 | square.setMod('size', 'big');
13 | });
14 | },
15 |
16 | 'size' : function() {
17 | this.domElem.append('размер1: ', this.domElem.width() + '
');
18 |
19 | this.afterCurrentEvent(function(){
20 | this.domElem.append('размер2: ', this.domElem.width());
21 | });
22 | }
23 | }
24 |
25 | });
26 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/lib/bemhtml/checks.js:
--------------------------------------------------------------------------------
1 | var checks = exports;
2 |
3 | checks.treeStructure = function treeStructure(tree) {
4 | var errors = [];
5 | if (tree.tagStr !== '["getp",["string","_mode"],["get","__$ctx"]]') {
6 | errors.push('Top node does not contain `_mode`, looks like one of ' +
7 | 'templates is missing a `_mode` predicate!');
8 | }
9 | var depth = 0;
10 | for (var current = tree; tree; tree = tree['default']) {
11 | depth++;
12 | }
13 | if (depth > 5) {
14 | errors.push('Seems like a predicate tree contains some irregularities. ' +
15 | 'Please verify that `_mode` predicate is present everywhere');
16 | }
17 |
18 | return errors;
19 | };
20 |
--------------------------------------------------------------------------------
/blocks-desktop/b-menu-horiz/b-menu-horiz.bemhtml:
--------------------------------------------------------------------------------
1 | block b-menu-horiz, this.mods {
2 |
3 | js: true
4 |
5 | elem item, default: {
6 | applyNext(
7 | this._mode = '',
8 | this.position = this.position - 1,
9 | this.ctx = {
10 | elem: 'layout-unit',
11 | content: this.ctx
12 | }
13 | );
14 | }
15 |
16 | elem layout-unit, mix: {
17 | var mix = [];
18 |
19 | this.isFirst() && mix.push({ elemMods: { position: 'first' } });
20 | this.isLast() && mix.push({ elemMods: { position: 'last' } });
21 |
22 | return mix;
23 | }
24 |
25 | elem 'item-selector', tag: 'span'
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/blocks-touch/b-menu/b-menu.bemhtml:
--------------------------------------------------------------------------------
1 | block b-menu {
2 | content: [
3 | this.ctx.content[0] && this.ctx.content[0].elem === 'title' ? this.ctx.content.shift() : null,
4 | {
5 | elem: 'list',
6 | tag: 'ul',
7 | content: this.ctx.content
8 | }
9 | ]
10 |
11 | elem title, tag: 'h3'
12 |
13 | elem item {
14 | tag: 'li'
15 |
16 | this.isFirst(), mix: [{
17 | elemMods: {
18 | pos: 'first'
19 | }
20 | }]
21 |
22 | this.isLast(), mix: [{
23 | elemMods: {
24 | pos: 'last'
25 | }
26 | }]
27 | }
28 |
29 | elem gap, tag: 'li'
30 | }
31 |
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.examples/10-simple-bem.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'заголовок',
4 | head: [
5 | {
6 | elem: 'css',
7 | url: '_10-simple-bem.css'
8 | },
9 | {
10 | elem: 'css',
11 | ie: true,
12 | url: '_10-simple-bem.ie.css'
13 | },
14 | {
15 | block: 'i-jquery',
16 | elem: 'core'
17 | },
18 | {
19 | elem: 'js',
20 | url: '_10-simple-bem.js'
21 | }
22 | ],
23 | content: {
24 | block: 'b-link',
25 | url: 'http://yandex.ru',
26 | content: 'Самая посещаемая страница Рунета'
27 | }
28 | })
29 |
--------------------------------------------------------------------------------
/blocks-common/i-request-animation-frame/i-request-animation-frame.js:
--------------------------------------------------------------------------------
1 | (function(w) {
2 | if (w.requestAnimationFrame) return;
3 | if ((w.requestAnimationFrame = w.webkitRequestAnimationFrame) &&
4 | (w.cancelAnimationFrame = w.webkitCancelAnimationFrame)) return;
5 | var lastTime = 0;
6 | w.requestAnimationFrame = function(callback) {
7 | var currTime = new Date().getTime(),
8 | timeToCall = Math.max(0, 16 - (currTime - lastTime)),
9 | id = setTimeout(function() { callback(currTime + timeToCall); }, timeToCall);
10 | lastTime = currTime + timeToCall;
11 | return id;
12 | };
13 | w.cancelAnimationFrame = function(id) {
14 | clearTimeout(id);
15 | }
16 | }(window));
17 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/_pseudo/b-link_pseudo_yes.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Block b-link
3 | *
4 | * @block b-link
5 | */
6 |
7 | /**
8 | * Pseudolink
9 | *
10 | */
11 | BEM.DOM.decl({block: 'b-link', modName: 'pseudo', modVal: 'yes'}, {
12 |
13 | _onClick : function(e) {
14 |
15 | e.preventDefault();
16 |
17 | this.hasMod('disabled', 'yes') || this.afterCurrentEvent(function() {
18 | this.trigger('click');
19 | });
20 |
21 | }
22 |
23 | }, {
24 |
25 | live : function() {
26 |
27 | this.__base.apply(this, arguments);
28 |
29 | this.liveBindTo({ modName : 'pseudo', modVal : 'yes' }, 'leftclick', function(e) {
30 | this._onClick(e);
31 | });
32 |
33 | }
34 |
35 | });
36 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/10-b-link-link.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'b-link',
4 | head: [
5 | { elem: 'css', url: '_10-b-link-link.css' }
6 | ],
7 | content: [
8 | {
9 | block: 'b-link',
10 | url: 'http://ya.ru',
11 | content: 'Просто ссылка'
12 | },
13 | {
14 | block: 'b-link',
15 | url: 'http://ya.ru',
16 | title: 'Заголовок',
17 | target: '_blank',
18 | content: 'Ссылка открывающаяся в новом окне'
19 | },
20 | {
21 | block: 'b-link',
22 | url: 'http://ya.ru',
23 | content: 'Ссылка cо счетчиком'
24 | }
25 | ]
26 | })
27 |
--------------------------------------------------------------------------------
/blocks-desktop/b-link/b-link.examples/40-b-link-dynamic-pseudo.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | js: true,
4 | title: 'b-link_pseudo_yes',
5 | head: [
6 | { elem: 'css', url: '_40-b-link-dynamic-pseudo.css', ie: false },
7 | { elem: 'css', url: '_40-b-link-dynamic-pseudo.ie.css', ie: 'lt IE 8' },
8 | { block: 'i-jquery', elem: 'core'},
9 | { elem: 'js', url: '_40-b-link-dynamic-pseudo.js' }
10 | ],
11 | content: [
12 | {
13 | block: 'b-link',
14 | mods: { lazy: 'yes', pseudo: 'no' },
15 | mix: [{block: 'b-lazy-link', js: true}],
16 | url: '#',
17 | content: 'I am becoming pseudo link in 5 seconds'
18 | }
19 | ]
20 | })
21 |
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.examples/20-target-bem.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'заголовок',
4 | head: [
5 | {
6 | elem: 'css',
7 | url: '_20-target-bem.css'
8 | },
9 | {
10 | elem: 'css',
11 | ie: true,
12 | url: '_20-target-bem.ie.css'
13 | },
14 | {
15 | block: 'i-jquery',
16 | elem: 'core'
17 | },
18 | {
19 | elem: 'js',
20 | url: '_20-target-bem.js'
21 | }
22 | ],
23 | content: {
24 | block: 'b-link',
25 | url: 'http://yandex.ru',
26 | target: '_blank',
27 | content: 'Самая посещаемая страница Рунета'
28 | }
29 | })
30 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bem-bl",
3 | "version": "2.11.0",
4 | "private": true,
5 | "dependencies": {
6 | "xjst": "~0.10.0",
7 | "ometajs": "~3.3.5",
8 | "dom-js": "~0.0.9",
9 | "estraverse": "~1.5.0",
10 | "esprima": "~1.0.4",
11 | "escodegen": "~1.2.0",
12 | "bem-environ": "~1.4.0"
13 | },
14 | "devDependencies": {
15 | "bem-sets": "~0.2.2",
16 | "mocha": "1.2.x",
17 | "benchmark": "~1.0.0",
18 | "microtime": "~0.3.1",
19 | "bem": "0.8.x"
20 | },
21 | "scripts": {
22 | "test": "mocha --ui tdd --growl --reporter spec blocks-common/i-bem/__html/test/*-test.js blocks-common/i-bem/__i18n/test/test-*.js",
23 | "deps": "bem make libs",
24 | "build": "bem make sets --no-colors"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/blocks-touch/b-slider/b-slider.bemhtml:
--------------------------------------------------------------------------------
1 | block b-slider {
2 | js: true
3 |
4 | mix: {
5 | var mix = [];
6 |
7 | this.ctx.indicator && mix.push({ block: 'b-slider-indicator', js: true });
8 | this.ctx.arrows && mix.push({ block: 'b-slider-arrows', js: true });
9 |
10 | return mix;
11 | }
12 |
13 | content: {
14 | var mods = {
15 | layout: 'horiz'
16 | };
17 |
18 | this.ctx.mods && this.ctx.mods['vert-align'] === 'top' && (mods['vert-align'] = 'top');
19 |
20 | return {
21 | elem: 'inner',
22 | content: {
23 | block: 'b-menu',
24 | mods: mods,
25 | content: this.ctx.content
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/git_hooks/pre-commit/jshint:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | case "${1}" in
4 | --about )
5 | echo "check *.js files using jshint"
6 | ;;
7 | * )
8 |
9 | ERROR_DIR=__JSHINT_TMP_DIR
10 | git diff --cached --name-only --diff-filter=ACMR | grep -e '\.js$' --color=auto | grep -v -P -e '\.(deps|bemjson|test)\.js' | xargs git checkout-index -f --prefix=$ERROR_DIR/
11 | if [ -d $ERROR_DIR ]; then
12 | jshint $ERROR_DIR --config .jshintrc > $ERROR_DIR/error.log
13 | if [ $? -ne 0 ]; then
14 | sed 's/__JSHINT_TMP_DIR\///g;s/\n/\r/g' $ERROR_DIR/error.log
15 | rm -rf $ERROR_DIR
16 | exit 1
17 | fi
18 | rm -rf $ERROR_DIR
19 | fi
20 |
21 | exit
22 |
23 | esac
24 |
--------------------------------------------------------------------------------
/blocks-touch/i-jquery/__tap/i-jquery__tap.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Плагин предназначен для эмуляции события tap для touch-платформ.
3 | * Создан для сохранения обратной совместимости
4 | * на проектах, использующих одноверменно islands-библиотек и romochka
5 | */
6 |
7 | (function($) {
8 |
9 | var tap = $.event.special.tap = {
10 |
11 | setup : function() {
12 |
13 | $(this).bind('click', tap.handler);
14 |
15 | },
16 |
17 | teardown : function() {
18 |
19 | $(this).unbind('click', tap.handler);
20 |
21 | },
22 |
23 | handler : function(e) {
24 |
25 | if(!e.button) {
26 | e.type = 'tap';
27 | $.event.dispatch.apply(this, arguments);
28 | e.type = 'click';
29 | }
30 |
31 | }
32 |
33 | };
34 |
35 | })(jQuery);
36 |
--------------------------------------------------------------------------------
/blocks-desktop/b-page/b-page.examples/70-csp-with-nonce.bemjson.js:
--------------------------------------------------------------------------------
1 | ([
2 | {
3 | block: 'b-page',
4 | title: 'Page with CSP meta-tag',
5 | nonce: 'test-nonce-value',
6 | csp: {
7 | policies: {
8 | 'script-src': [ 'examples.com' ],
9 | 'style-src': ["'self'", "'unsafe-inline'"]
10 | }
11 | },
12 | head: [
13 | { elem: 'css', url: '_70-csp-with-nonce.css' },
14 | { elem: 'css', url: '_70-csp-with-nonce.ie.css', ie: true },
15 | { elem: 'css', content: 'body { color: blue; }' },
16 | { block: 'i-jquery', elem: 'core' },
17 | { elem: 'js', url: '_70-csp-with-nonce.js' }
18 | ],
19 | content: 'Page with CSP meta-tag'
20 | }
21 | ])
22 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/i-bem__i18n.bemhtml:
--------------------------------------------------------------------------------
1 | block i-bem, elem i18n {
2 |
3 | default: {
4 | if(!this.ctx) return '';
5 |
6 | var ctx = this.ctx,
7 | keyset = ctx.keyset,
8 | key = ctx.key,
9 | params = ctx.params || {};
10 |
11 | if(!(keyset || key))
12 | return '';
13 |
14 | /**
15 | * Consider `content` is a reserved param that contains
16 | * valid bemjson data
17 | */
18 | if(ctx.content) {
19 | var cnt;
20 | params.content = (cnt = [],
21 | apply(this._buf = cnt, this._mode = '',
22 | this.ctx = ctx.content), cnt.join(''));
23 | }
24 |
25 | this._buf.push(BEM.I18N(keyset, key, params));
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/blocks-desktop/b-search/b-search.examples/20-b-search-under.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'b-search with under row',
4 | head: [
5 | { elem: 'css', url: '_20-b-search-under.css' },
6 | { block: 'i-jquery', elem: 'core' },
7 | { elem: 'js', url: '_20-b-search-under.js' }
8 | ],
9 | content: {
10 | block: 'b-search',
11 | attrs: { action: '/search.xml' },
12 | input: {
13 | elem: 'input',
14 | attrs: { value: 'Text' }
15 | },
16 | button: {
17 | elem: 'button'
18 | },
19 | under: [
20 | {
21 | block: 'b-link',
22 | url: '/',
23 | content: 'Advanced search'
24 | }
25 | ]
26 | }
27 | })
28 |
--------------------------------------------------------------------------------
/blocks-common/i-ecma/__function/i-ecma__function.test.js:
--------------------------------------------------------------------------------
1 | BEM.TEST.decl({ block : 'i-ecma', elem : 'function' }, function() {
2 |
3 | describe('bind specs', function() {
4 | it('should be called with bound context', function() {
5 | var ctx = {},
6 | expectedCtx,
7 | fn = (function() { expectedCtx = this; }).bind(ctx);
8 |
9 | fn();
10 |
11 | expect(expectedCtx).toBe(ctx);
12 | });
13 |
14 | it('should be called with original and bound params', function() {
15 | var ctx = {},
16 | spy = jasmine.createSpy(),
17 | fn = spy.bind(ctx, 1, 2);
18 |
19 | fn(3, 4);
20 |
21 | expect(spy.mostRecentCall.args).toEqual([1, 2, 3, 4]);
22 | });
23 | });
24 |
25 | });
--------------------------------------------------------------------------------
/blocks-touch/b-link/b-link.ru.md:
--------------------------------------------------------------------------------
1 | ##Описание
2 | Блок **b-link** — является ссылкой. Используется в других блоках.
3 |
4 | По умолчанию цвет ссылки – #1A3DC1.
5 |
6 | ##Объявление блока на странице
7 |
8 | Пример использования блока:
9 |
10 | ```bemjson
11 | {
12 | block: 'b-link',
13 | url: 'http://company.yandex.ru',
14 | title: 'Click here to learn more',
15 | target: '_blank',
16 | content: 'The best company all over the world'
17 | }
18 | ```
19 | В результате BEMHTML-преобразований свойство `url` трансформируется в атрибут `href`. Свойства `title` и `target` — в соответствующие атрибуты.
20 |
21 | ```
22 |
23 | The best company all over the world
24 |
25 | ```
26 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__i18n/test/files/complex-01.xml:
--------------------------------------------------------------------------------
1 |
2 | today
3 | сегодня
4 |
5 |
6 | tomorrow
7 | завтра
8 |
9 | day
10 |
11 | month
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/blocks-desktop/b-logo/b-logo.examples/30-b-logo-slogan.bemjson.js:
--------------------------------------------------------------------------------
1 | ({
2 | block: 'b-page',
3 | title: 'b-logo',
4 | head: [
5 | { elem: 'css', url: '_30-b-logo-slogan.css' }
6 | ],
7 | content: [
8 | {
9 | block: 'b-logo',
10 | content: {
11 | elem: 'link',
12 | url: '/',
13 | content: [
14 | {
15 | elem: 'icon',
16 | url: '../../../../blocks-desktop/b-logo/examples/30-b-logo-slogan.blocks/b-logo/b-logo.png'
17 | },
18 | {
19 | elem: 'slogan',
20 | content: 'Trademark slogan'
21 | }
22 | ]
23 | }
24 | }
25 | ]
26 | })
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/.bem/techs/bemjson.js.js:
--------------------------------------------------------------------------------
1 | var Template = require('bem/lib/template');
2 |
3 | exports.API_VER = 2;
4 |
5 | exports.techMixin = {
6 | getCreateResult : function(path, suffix, vars) {
7 | return Template.process([
8 | "({",
9 | " block: 'b-page',",
10 | " title: '{{bemBlockName}}',",
11 | " head: [",
12 | " { elem: 'css', url: '_{{bemBlockName}}.css', ie: false },",
13 | " { elem: 'css', url: '_{{bemBlockName}}', ie: true }",
14 | " ],",
15 | " content: [",
16 | " 'block content',",
17 | " { block: 'i-jquery', mods: { version: '1.8.3' } },",
18 | " { elem: 'js', url:'_{{bemBlockName}}.js' }",
19 | " ]",
20 | "})"], vars);
21 | }
22 | };
23 |
--------------------------------------------------------------------------------
/blocks-common/i-bem/__html/lib/bemhtml/cache.js:
--------------------------------------------------------------------------------
1 | var cache = exports;
2 |
3 | //
4 | // ### function Cache ()
5 | // Naive-cache constructor
6 | //
7 | function Cache() {
8 | this.map = {};
9 | };
10 |
11 | //
12 | // ### function create()
13 | // Constructor wrapper
14 | //
15 | cache.create = function create() {
16 | return new Cache();
17 | };
18 |
19 | //
20 | // ### function set (key, value)
21 | // #### @key {String} cache key
22 | // #### @value {Any} value
23 | // Put key into cache
24 | //
25 | Cache.prototype.set = function set(key, value) {
26 | this.map[key] = value;
27 | };
28 |
29 | //
30 | // ### function get (key)
31 | // #### @key {String} cache key
32 | // Get value from the cache
33 | //
34 | Cache.prototype.get = function get(key) {
35 | if (this.map.hasOwnProperty(key)) return this.map[key];
36 | return undefined;
37 | };
38 |
--------------------------------------------------------------------------------
/blocks-desktop/b-layout-table/b-layout-table.examples/20-b-layout-table-rows.blocks/b-layout-table/_layout/b-layout-table_layout_18-20-60.css:
--------------------------------------------------------------------------------
1 | .b-layout-table_layout_18-20-60 .b-layout-table__cell
2 | {
3 | padding: 0.4em 0;
4 |
5 | background: #00cbbd;
6 | }
7 |
8 | .b-layout-table_layout_18-20-60 .b-layout-table__cell_position_l
9 | {
10 | width: 18%;
11 |
12 | background: #9c0;
13 | }
14 |
15 | .b-layout-table_layout_18-20-60 .b-layout-table__cell_position_m
16 | {
17 | width: 20%;
18 |
19 | background: #dc143c;
20 | }
21 |
22 | .b-layout-table_layout_18-20-60 .b-layout-table__cell_position_r
23 | {
24 | width: 60%;
25 |
26 | background: #f3a828;
27 | }
28 |
29 | .b-layout-table_layout_18-20-60 .b-layout-table__gap
30 | {
31 | width: 2%;
32 | padding-left: 20px;
33 |
34 | background: #ccc;
35 | }
36 |
--------------------------------------------------------------------------------
/blocks-common/i-jquery/__identify/i-jquery__identify.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Identify plugin
3 | *
4 | * @version 1.0.0
5 | */
6 |
7 | (function($) {
8 |
9 | var counter = 0,
10 | expando = '__' + (+new Date),
11 | get = function() {
12 | return 'uniq' + ++counter;
13 | };
14 |
15 | /**
16 | * Makes unique ID
17 | * @param {Object} [obj] Object that needs to be identified
18 | * @param {Boolean} [onlyGet=false] Return a unique value only if it had already been assigned before
19 | * @returns {String} ID
20 | */
21 | $.identify = function(obj, onlyGet) {
22 |
23 | if(!obj) return get();
24 |
25 | var key = 'uniqueID' in obj? 'uniqueID' : expando; // Use when possible. native uniqueID for elements in IE
26 |
27 | return onlyGet || key in obj?
28 | obj[key] :
29 | obj[key] = get();
30 |
31 | };
32 |
33 | })(jQuery);
--------------------------------------------------------------------------------
/blocks-desktop/b-search/b-search.ru.md:
--------------------------------------------------------------------------------
1 | ##Описание
2 | Поисковая форма, содержащая поле ввода (элемент `input`) и кнопку (элемент `button`). Элементы `input` и `button` являются обязательными.
3 |
4 | Блок `b-search`, преобразуется в тег `