-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathangular-rbr.js
68 lines (65 loc) · 2.51 KB
/
angular-rbr.js
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
(function() {
'use strict';
var app;
app = angular.module('llg.rbr', []);
app.directive("rbr", function() {
return {
restrict: "A",
link: function(scope, element, attrs) {
var addLineBreak, break_lg, break_md, break_sm, break_xl, break_xs, break_xxl, break_xxs, e, regexCutClasses, removeLineBreak, resize, _breaks, _ranges;
break_xxs = 320;
break_xs = 480;
break_sm = 768;
break_md = 992;
break_lg = 1200;
break_xl = 1440;
break_xxl = 2000;
_breaks = [[break_xxs, " xx-small | xxs | rbr-xxsmall | rbr-xxs "], [break_xs, " x-small | xs | rbr-xsmall | rbr-xs "], [break_sm, " small | sm | rbr-small | rbr-sm "], [break_md, " medium | md | rbr-medium | rbr-md "], [break_lg, " large | lg | rbr-large | rbr-lg "], [break_xl, " x-large | xl | rbr-x-large | rbr-xl "], [break_xxl, " xx-large | xxl | rbr-xx-large | rbr-xxl "]];
_ranges = [];
e = element.context;
if (e.dataset.ranges) {
_ranges = element.context.dataset.ranges.replace(RegExp(" ", "g"), "").split(",");
}
addLineBreak = function() {
return element.css('display', 'initial');
};
removeLineBreak = function() {
return element.css('display', 'none');
};
regexCutClasses = new RegExp(" ", "g");
resize = function() {
var arrayClasses, needBR, viewport;
removeLineBreak();
viewport = document.documentElement.clientWidth;
arrayClasses = e.className.replace(regexCutClasses, "|").split('|');
needBR = arrayClasses.some(function(c) {
var prevBreak;
prevBreak = 0;
return _breaks.some(function(b) {
var matcher;
if (viewport <= b[0] && viewport >= prevBreak) {
matcher = new RegExp(b[1], "g");
prevBreak = b[0];
return matcher.test(" " + c + " ");
}
prevBreak = b[0];
return false;
});
});
if (needBR === true) return addLineBreak();
needBR = _ranges.some(function(r) {
var values;
values = r.split('-');
return viewport >= values[0] && viewport <= values[1];
});
if (needBR === true) return addLineBreak();
return false;
};
window.addEventListener("resize", function(event) {
return resize();
});
return resize();
}
};
});
}).call(this);