Project

General

Profile

1
/*! UIkit 2.27.2 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
2
(function(UI) {
3

    
4
    "use strict";
5

    
6
    var grids = [];
7

    
8
    UI.component('gridMatchHeight', {
9

    
10
        defaults: {
11
            target        : false,
12
            row           : true,
13
            ignorestacked : false,
14
            observe       : false
15
        },
16

    
17
        boot: function() {
18

    
19
            // init code
20
            UI.ready(function(context) {
21

    
22
                UI.$('[data-uk-grid-match]', context).each(function() {
23
                    var grid = UI.$(this), obj;
24

    
25
                    if (!grid.data('gridMatchHeight')) {
26
                        obj = UI.gridMatchHeight(grid, UI.Utils.options(grid.attr('data-uk-grid-match')));
27
                    }
28
                });
29
            });
30
        },
31

    
32
        init: function() {
33

    
34
            var $this = this;
35

    
36
            this.columns  = this.element.children();
37
            this.elements = this.options.target ? this.find(this.options.target) : this.columns;
38

    
39
            if (!this.columns.length) return;
40

    
41
            UI.$win.on('load resize orientationchange', (function() {
42

    
43
                var fn = function() {
44
                    if ($this.element.is(':visible')) $this.match();
45
                };
46

    
47
                UI.$(function() { fn(); });
48

    
49
                return UI.Utils.debounce(fn, 50);
50
            })());
51

    
52
            if (this.options.observe) {
53

    
54
                UI.domObserve(this.element, function(e) {
55
                    if ($this.element.is(':visible')) $this.match();
56
                });
57
            }
58

    
59
            this.on('display.uk.check', function(e) {
60
                if(this.element.is(':visible')) this.match();
61
            }.bind(this));
62

    
63
            grids.push(this);
64
        },
65

    
66
        match: function() {
67

    
68
            var firstvisible = this.columns.filter(':visible:first');
69

    
70
            if (!firstvisible.length) return;
71

    
72
            var stacked = Math.ceil(100 * parseFloat(firstvisible.css('width')) / parseFloat(firstvisible.parent().css('width'))) >= 100;
73

    
74
            if (stacked && !this.options.ignorestacked) {
75
                this.revert();
76
            } else {
77
                UI.Utils.matchHeights(this.elements, this.options);
78
            }
79

    
80
            return this;
81
        },
82

    
83
        revert: function() {
84
            this.elements.css('min-height', '');
85
            return this;
86
        }
87
    });
88

    
89
    UI.component('gridMargin', {
90

    
91
        defaults: {
92
            cls      : 'uk-grid-margin',
93
            rowfirst : 'uk-row-first'
94
        },
95

    
96
        boot: function() {
97

    
98
            // init code
99
            UI.ready(function(context) {
100

    
101
                UI.$('[data-uk-grid-margin]', context).each(function() {
102
                    var grid = UI.$(this), obj;
103

    
104
                    if (!grid.data('gridMargin')) {
105
                        obj = UI.gridMargin(grid, UI.Utils.options(grid.attr('data-uk-grid-margin')));
106
                    }
107
                });
108
            });
109
        },
110

    
111
        init: function() {
112

    
113
            var stackMargin = UI.stackMargin(this.element, this.options);
114
        }
115
    });
116

    
117
})(UIkit);
(11-11/32)