File: __parseSwapSpec.js

package info (click to toggle)
htmx 4.0.0-alpha6-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 117,328 kB
  • sloc: javascript: 49,403; sh: 29; makefile: 7
file content (93 lines) | stat: -rw-r--r-- 3,945 bytes parent folder | download | duplicates (2)
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
describe('__parseSwapSpec unit tests', function() {

    it('parses basic swap styles', function () {
        assert.equal(htmx.__parseSwapSpec('innerHTML').style, 'innerHTML')
        assert.equal(htmx.__parseSwapSpec('outerHTML').style, 'outerHTML')
        assert.equal(htmx.__parseSwapSpec('beforebegin').style, 'beforebegin')
        assert.equal(htmx.__parseSwapSpec('afterbegin').style, 'afterbegin')
        assert.equal(htmx.__parseSwapSpec('beforeend').style, 'beforeend')
        assert.equal(htmx.__parseSwapSpec('afterend').style, 'afterend')
    })

    it('normalizes legacy swap styles', function () {
        assert.equal(htmx.__parseSwapSpec('prepend').style, 'afterbegin')
        assert.equal(htmx.__parseSwapSpec('append').style, 'beforeend')
        assert.equal(htmx.__parseSwapSpec('before').style, 'beforebegin')
        assert.equal(htmx.__parseSwapSpec('after').style, 'afterend')
    })

    it('parses swap delay modifier', function () {
        let spec = htmx.__parseSwapSpec('innerHTML swap:100ms')
        assert.equal(spec.style, 'innerHTML')
        assert.equal(spec.swap, '100ms')
    })

    it('parses transition modifier', function () {
        assert.equal(htmx.__parseSwapSpec('innerHTML transition:true').transition, true)
        assert.equal(htmx.__parseSwapSpec('innerHTML transition:false').transition, false)
    })

    it('parses ignoreTitle modifier', function () {
        assert.equal(htmx.__parseSwapSpec('innerHTML ignoreTitle:true').ignoreTitle, true)
        assert.equal(htmx.__parseSwapSpec('innerHTML ignoreTitle:false').ignoreTitle, false)
    })

    it('parses strip modifier', function () {
        assert.equal(htmx.__parseSwapSpec('innerHTML strip:true').strip, true)
        assert.equal(htmx.__parseSwapSpec('innerHTML strip:false').strip, false)
    })

    it('parses focus-scroll modifier', function () {
        assert.equal(htmx.__parseSwapSpec('innerHTML focus-scroll:true')['focus-scroll'], true)
        assert.equal(htmx.__parseSwapSpec('innerHTML focus-scroll:false')['focus-scroll'], false)
    })

    it('parses scroll modifier', function () {
        assert.equal(htmx.__parseSwapSpec('innerHTML scroll:top').scroll, 'top')
        assert.equal(htmx.__parseSwapSpec('innerHTML scroll:bottom').scroll, 'bottom')
    })

    it('parses show modifier', function () {
        assert.equal(htmx.__parseSwapSpec('innerHTML show:top').show, 'top')
        assert.equal(htmx.__parseSwapSpec('innerHTML show:bottom').show, 'bottom')
    })

    it('parses target modifier', function () {
        assert.equal(htmx.__parseSwapSpec('innerHTML target:#foo').target, '#foo')
    })

    it('parses target with spaces', function () {
        assert.equal(htmx.__parseSwapSpec('innerHTML target:"#foo .bar"').target, '#foo .bar')
    })

    it('parses scroll with scrollTarget', function () {
        let spec = htmx.__parseSwapSpec('innerHTML scroll:top scrollTarget:#container')
        assert.equal(spec.scroll, 'top')
        assert.equal(spec.scrollTarget, '#container')
    })

    it('parses show with showTarget', function () {
        let spec = htmx.__parseSwapSpec('innerHTML show:bottom showTarget:.content')
        assert.equal(spec.show, 'bottom')
        assert.equal(spec.showTarget, '.content')
    })

    it('parses multiple modifiers', function () {
        let spec = htmx.__parseSwapSpec('innerHTML swap:100ms transition:true')
        assert.equal(spec.style, 'innerHTML')
        assert.equal(spec.swap, '100ms')
        assert.equal(spec.transition, true)
    })

    it('uses default swap when empty', function () {
        let spec = htmx.__parseSwapSpec('')
        assert.equal(spec.style, htmx.config.defaultSwap)
    })

    it('parses legacy style names with modifiers', function () {
        let spec = htmx.__parseSwapSpec('prepend swap:10ms')
        assert.equal(spec.style, 'afterbegin')
        assert.equal(spec.swap, '10ms')
    })

});