aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/optional/css.js
blob: d5378f4a571a0673b61be02b0dffdbff9054fe04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import { camelCase } from '../../utils/utils.js'
import { isBlank } from '../core/regex.js'
import { registerMethods } from '../../utils/methods.js'

// Dynamic style generator
export function css ( style, val ) {

  let ret = {}
  if ( arguments.length === 0 ) {

    // get full style as object
    this.node.style.cssText.split( /\s*;\s*/ )
      .filter( function ( el ) {

        return !!el.length

      } )
      .forEach( function ( el ) {

        let t = el.split( /\s*:\s*/ )
        ret[t[0]] = t[1]

      } )
    return ret

  }

  if ( arguments.length < 2 ) {

    // get style properties in the array
    if ( Array.isArray( style ) ) {

      for ( let name of style ) {

        let cased = camelCase( name )
        ret[cased] = this.node.style[cased]

      }
      return ret

    }

    // get style for property
    if ( typeof style === 'string' ) {

      return this.node.style[camelCase( style )]

    }

    // set styles in object
    if ( typeof style === 'object' ) {

      for ( let name in style ) {

        // set empty string if null/undefined/'' was given
        this.node.style[camelCase( name )]
          = ( style[name] == null || isBlank.test( style[name] ) ) ? '' : style[name]

      }

    }

  }

  // set style for property
  if ( arguments.length === 2 ) {

    this.node.style[camelCase( style )]
      = ( val == null || isBlank.test( val ) ) ? '' : val

  }

  return this

}

// Show element
export function show () {

  return this.css( 'display', '' )

}

// Hide element
export function hide () {

  return this.css( 'display', 'none' )

}

// Is element visible?
export function visible () {

  return this.css( 'display' ) !== 'none'

}

registerMethods( 'Dom', {
  css, show, hide, visible
} )