Options
All
  • Public
  • Public/Protected
  • All
Menu

@zhengxs/bem - v1.1.0

Index

Type aliases

Argument

Argument: Value | Falsy | Mapping | Argument[]

Value

Value: string | number

Properties

default

default: { namespace: Namespace; separator: Separator; version: "__VERSION__" }

Type declaration

Variables

Const namespace

namespace: Namespace = ...

命名空间

example
修改命名空间
import BEM, { component } from '@zhengxs/bem'

// 默认以 c 开头
component('button')
// c-button

// 修改默认配置
BEM.namespace.component = 'md'

// 只有在修改配置后面的才生效
component('button')
// md-button

// 不会影响自定义的命名空间
component('button', 'ux')
// ux-button

Const separator

separator: Separator = ...

修饰符

example
修改 element 的修饰符
import BEM, { element } from '@zhengxs/bem'

element('button', 'icon')
// button__icon

// 修改全局命名空间
BEM.separator.element = '-'

// 读取全局配置
element('button', 'icon')
// button-icon
example
修改 modifier 的修饰符
import BEM, { modifier } from '@zhengxs/bem'

modifier('button', 'large')
// button--large

// 修改全局命名空间
BEM.separator.modifier = '-'

// 读取全局配置
modifier('button', 'large')
// button-large
example
修改 state 的修饰符
import BEM, { state, is, has } from '@zhengxs/bem'

state('is', 'loading')
// is-loading

// 修改全局命名空间
BEM.separator.state = '--'

state('is', 'loading')
// is--loading

is('loading')
// is--loading

has('error')
// has--error

Const version

version: "__VERSION__" = ...

Functions

component

  • component(name: string, prefix?: string): string
  • 组件

    example
    component('button')
    // -> "c-button"
    
    component('button', 'md')
    // -> "md-button"
    

    Parameters

    • name: string

      名称

    • Optional prefix: string

      前缀

    Returns string

    CSS类名

createBEM

  • createBEM(options?: Options): BEMStatic
  • 创建命名空间

    example
    默认
    const bem = createBEM()
    const button = bem('button')
    
     console.log(button.component())
    // -> 'c-button'
    
     console.log(button.element('icon'))
    // -> 'c-button__icon'
    
     console.log(button.elem('icon')) // alias for element
    // -> 'c-button__icon'
    
     console.log(button.modifier('default'))
    // -> 'c-button--default'
    
     console.log(button.mod('default')) // alias for modifier
    // -> 'c-button--default'
    
     console.log(button.state('is', 'default'))
    // -> 'is-default'
    
     console.log(button.is('loading'))
    // -> 'is-loading'
    
     console.log(button.has('error'))
    // -> 'has-error'
    
    // 不管调用几次,拿到的都是同一个对象
     console.log(button === bem('icon'))
    // -> true
    
    // 不同名称拿到的是不同的对象
     console.log(button === bem('icon'))
     // -> false
    
    // 不同的 create,即使是相同的名称拿到的也不一样的
     console.log(button === createBEM()('button'))
    // -> false
    
    example
    自定义前缀
    const options = {
      namespace: { component: 'ux' }
    }
    
    const bem = createBEM(options)
    
    const button = bem('button')
    
    console.log(button.component())
    //-> 'ux-button'
    
    console.log(button.element('icon'))
    //-> 'ux-button__icon'
    
    console.log(button.modifier('default'))
    //-> 'ux-button--default'
    
    // 修改命名空间
    options['namespace']['component'] = 'md'
    
    console.log(button.component())
    //-> 'md-button'
    
    console.log(button.element('icon'))
    //-> 'md-button__icon'
    
     console.log(button.modifier('default'))
    //-> 'md-button--default'
    
    // 再次修改命名空间
    options['namespace']['component'] = 'c'
    
    console.log(button.component())
    //-> 'c-button'
    
    console.log(button.element('icon'))
    //-> 'c-button__icon'
    
    console.log(button.modifier('default'))
    //-> 'c-button--default'
    
    // 直接重置对象
    options['namespace'] = { 'component': 'ux' }
    
    console.log(button.component())
    //-> 'ux-button'
    
    console.log(button.element('icon'))
    //-> 'ux-button__icon'
    
    console.log(button.modifier('default'))
    //-> 'ux-button--default'
    
    example
    自定义分隔符
    const options = {
      separator: {
        element: '-',
        modifier: '-',
        state: '#',
      }
    }
    
    console.log(button.element('icon'))
    //-> 'c-button-icon'
    
    console.log(button.modifier('default'))
    //-> 'c-button-default'
    
    console.log(button.state('is', 'default'))
    //-> 'is#default'
    
    console.log(button.is('loading'))
    //-> 'is#loading'
    
    console.log(button.has('error'))
    //-> 'has#error'
    
    // 修改单个修饰符
    options['separator']['element'] = '__'
    
    console.log(button.element('icon'))
    //-> 'c-button__icon'
    
    // 重置配置
    options['separator'] = {
      element: '__',
      modifier: '--',
      state: '-',
    }
    
    console.log(button.element('icon'))
    //-> 'c-button__icon'
    
    console.log(button.modifier('default'))
    //-> 'c-button--default'
    
    console.log(button.state('is', 'loading'))
    //-> 'is-loading'
    
    console.log(button.is('loading'))
    //-> 'is-loading'
    
    console.log(button.has('error'))
    //-> 'has-error'
    

    Parameters

    • options: Options = {}

      可选配置

    Returns BEMStatic

element

  • element(prefix: string, value: string | number): string
  • element(prefix: string, ...args: Argument[]): string[]
  • 节点

    example
    单参
    element('button', 'icon')
    // -> "button__icon"
    
    element('button', ['icon', 'text'])
    // -> ["button__icon", "button__text"]
    
    element('button',{ icon: true, text: false })
    // -> ["button__icon"]
    
    example
    多参数
    element('button', { icon: true, text: false }, 'demo', [['doc']], null, undefined, false)
    // -> ["button__icon", "button__demo", "button__doc"]
    

    Parameters

    • prefix: string
    • value: string | number

    Returns string

    CSS类名列表

  • Parameters

    • prefix: string
    • Rest ...args: Argument[]

    Returns string[]

has

  • has(value: string | number): string
  • has(...args: Argument[]): string[]
  • 状态别名

    example
    单参
    has('success')
    // -> "has-success"
    
    has(['success', 'error'])
    // -> ["has-success", "has-error"]
    
    has({ success: true, error: false })
    // -> ["has-success"]
    
    example
    多参数
    has({ success: true, error: false }, 'demo', [['doc']], null, undefined, false)
    // -> ["has-success", "has-demo", "has-doc"]
    

    Parameters

    • value: string | number

    Returns string

    CSS类名列表

  • Parameters

    Returns string[]

is

  • is(value: string | number): string
  • is(...args: Argument[]): string[]
  • 状态别名

    example
    单参
    is('loading')
    // -> "is-loading"
    
    is(['loading', 'disabled'])
    // -> ["is-loading", "is-disabled"]
    
    is({ loading: true, disabled: false })
    // -> ["is-loading"]
    
    example
    多参数
    is({ loading: true, disabled: false }, 'demo', [['doc']], null, undefined, false)
    // -> ["is-loading", "is-demo", "is-doc"]
    

    Parameters

    • value: string | number

    Returns string

    CSS类名列表

  • Parameters

    Returns string[]

modifier

  • modifier(prefix: string, value: string | number): string
  • modifier(prefix: string, ...args: Argument[]): string[]
  • 修饰符

    example
    单参
    modifier('button', 'default')
    // -> "button--default"
    
    modifier('button', ['default', 'primary'])
    // -> ["button--default", "button--primary"]
    
    modifier('button',{ default: true, primary: false })
    // -> ["button--default"]
    
    example
    多参数
    modifier('button', { default: true, primary: false }, 'demo', [['doc']], null, undefined, false)
    // -> ["button--default", "button--demo", "button--doc"]
    

    Parameters

    • prefix: string
    • value: string | number

    Returns string

    CSS类名列表

  • Parameters

    • prefix: string
    • Rest ...args: Argument[]

    Returns string[]

state

  • state(prefix: string, value: string | number): string
  • state(prefix: string, ...args: Argument[]): string[]
  • 状态

    example
    单参
    state('is', 'loading')
    // -> "is-loading"
    
    state('is', ['loading', 'disabled'])
    // -> ["is-loading", "is-disabled"]
    
    state('is', { loading: true, disabled: false })
    // -> ["is-loading"]
    
    example
    多参数
    state('is', { loading: true, disabled: false }, 'demo', [['doc']], null, undefined, false)
    // -> ["is-loading", "is-demo", "is-doc"]
    

    Parameters

    • prefix: string
    • value: string | number

    Returns string

    CSS类名列表

  • Parameters

    • prefix: string
    • Rest ...args: Argument[]

    Returns string[]

Generated using TypeDoc