active_frontend 13.3.0 → 14.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/.fasterer.yml +19 -0
- data/.reek +27 -0
- data/.rubocop.yml +38 -0
- data/.scss-lint.yml +27 -0
- data/Rakefile +1 -1
- data/active_frontend.gemspec +21 -18
- data/app/.DS_Store +0 -0
- data/app/assets/.DS_Store +0 -0
- data/app/assets/fonts/.DS_Store +0 -0
- data/app/assets/fonts/dripicons/.DS_Store +0 -0
- data/app/assets/fonts/dripicons/dripicons.woff +0 -0
- data/app/assets/fonts/fakt-pro/.DS_Store +0 -0
- data/app/assets/fonts/fakt-pro/fakt-pro-bold.woff +0 -0
- data/app/assets/fonts/fakt-pro/fakt-pro-normal.woff +0 -0
- data/app/assets/fonts/fakt-pro/fakt-pro-semibold.woff +0 -0
- data/app/assets/fonts/fakt-pro/fakt-pro-semilight.woff +0 -0
- data/app/assets/fonts/fakt-soft-pro/.DS_Store +0 -0
- data/app/assets/fonts/fakt-soft-pro/fakt-soft-pro-bold.woff +0 -0
- data/app/assets/fonts/fakt-soft-pro/fakt-soft-pro-normal.woff +0 -0
- data/app/assets/fonts/fakt-soft-pro/fakt-soft-pro-semibold.woff +0 -0
- data/app/assets/fonts/fakt-soft-pro/fakt-soft-pro-semilight.woff +0 -0
- data/app/assets/images/.DS_Store +0 -0
- data/app/assets/images/.keep +0 -0
- data/app/assets/images/placeholders/.DS_Store +0 -0
- data/app/assets/images/placeholders/camera-large.png +0 -0
- data/app/assets/images/placeholders/camera-small.png +0 -0
- data/app/assets/images/placeholders/camera.png +0 -0
- data/app/assets/images/placeholders/document-large.png +0 -0
- data/app/assets/images/placeholders/document-small.png +0 -0
- data/app/assets/images/placeholders/document.png +0 -0
- data/app/assets/images/placeholders/photo-large.png +0 -0
- data/app/assets/images/placeholders/{picture-small.png → photo-small.png} +0 -0
- data/app/assets/images/placeholders/photo.png +0 -0
- data/app/assets/images/placeholders/store-large.png +0 -0
- data/app/assets/images/placeholders/store-small.png +0 -0
- data/app/assets/images/placeholders/store.png +0 -0
- data/app/assets/images/placeholders/user-large.png +0 -0
- data/app/assets/images/placeholders/user-small.png +0 -0
- data/app/assets/images/placeholders/user.png +0 -0
- data/app/helpers/active_frontend_helper.rb +22 -37
- data/lib/.DS_Store +0 -0
- data/lib/active_frontend.rb +3 -4
- data/lib/active_frontend/.DS_Store +0 -0
- data/lib/active_frontend/version.rb +1 -1
- data/lib/generators/active_frontend/install_generator.rb +3 -3
- data/lib/generators/active_frontend/templates/install.js +35 -30
- data/lib/generators/active_frontend/templates/install.scss +55 -58
- data/vendor/.DS_Store +0 -0
- data/vendor/assets/.DS_Store +0 -0
- data/vendor/assets/javascripts/.DS_Store +0 -0
- data/vendor/assets/javascripts/active_frontend.js +35 -30
- data/vendor/assets/javascripts/base/_affix.js +170 -0
- data/vendor/assets/javascripts/base/_alert.js +80 -0
- data/vendor/assets/javascripts/base/_animation.js +106 -0
- data/vendor/assets/javascripts/base/_button.js +123 -0
- data/vendor/assets/javascripts/base/_carousel.js +237 -0
- data/vendor/assets/javascripts/base/_collapse.js +200 -0
- data/vendor/assets/javascripts/base/_colorpicker.js +147 -0
- data/vendor/assets/javascripts/base/_datepicker.js +1411 -0
- data/vendor/assets/javascripts/base/_dropdown.js +154 -0
- data/vendor/assets/javascripts/base/_filepicker.js +235 -0
- data/vendor/assets/javascripts/base/_hoverdown.js +116 -0
- data/vendor/assets/javascripts/base/_layout.js +126 -0
- data/vendor/assets/javascripts/base/_list.js +103 -0
- data/vendor/assets/javascripts/{_modal.js → base/_modal.js} +170 -167
- data/vendor/assets/javascripts/base/_popover.js +101 -0
- data/vendor/assets/javascripts/base/_scrollspy.js +161 -0
- data/vendor/assets/javascripts/base/_switch.js +160 -0
- data/vendor/assets/javascripts/base/_tab.js +139 -0
- data/vendor/assets/javascripts/base/_table.js +224 -0
- data/vendor/assets/javascripts/base/_timeago.js +270 -0
- data/vendor/assets/javascripts/base/_timepicker.js +541 -0
- data/vendor/assets/javascripts/base/_tooltip.js +525 -0
- data/vendor/assets/javascripts/base/_tour.js +268 -0
- data/vendor/assets/javascripts/base/_transition.js +52 -0
- data/vendor/assets/javascripts/base/_typeahead.js +362 -0
- data/vendor/assets/javascripts/extensions/_calendar.js +4709 -0
- data/vendor/assets/javascripts/extensions/_chart.js +9371 -0
- data/vendor/assets/javascripts/extensions/_map.js +2153 -0
- data/vendor/assets/stylesheets/.DS_Store +0 -0
- data/vendor/assets/stylesheets/{_mixin.scss → _utility.scss} +96 -10
- data/vendor/assets/stylesheets/_variable.scss +201 -19
- data/vendor/assets/stylesheets/active_frontend.scss +55 -58
- data/vendor/assets/stylesheets/blocks/_anchor.scss +15 -0
- data/vendor/assets/stylesheets/blocks/_button.scss +278 -0
- data/vendor/assets/stylesheets/blocks/_code.scss +144 -0
- data/vendor/assets/stylesheets/blocks/_common.scss +127 -0
- data/vendor/assets/stylesheets/blocks/_form.scss +508 -0
- data/vendor/assets/stylesheets/blocks/_icon.scss +359 -0
- data/vendor/assets/stylesheets/blocks/_list.scss +76 -0
- data/vendor/assets/stylesheets/blocks/_multimedia.scss +62 -0
- data/vendor/assets/stylesheets/blocks/_reset.scss +179 -0
- data/vendor/assets/stylesheets/blocks/_table.scss +211 -0
- data/vendor/assets/stylesheets/blocks/_typography.scss +204 -0
- data/vendor/assets/stylesheets/components/_ad.scss +78 -0
- data/vendor/assets/stylesheets/components/_affix.scss +14 -0
- data/vendor/assets/stylesheets/components/_alert.scss +50 -0
- data/vendor/assets/stylesheets/components/_animation.scss +1670 -0
- data/vendor/assets/stylesheets/components/_breadcrumb.scss +17 -0
- data/vendor/assets/stylesheets/components/_calendar.scss +213 -0
- data/vendor/assets/stylesheets/components/_card.scss +30 -0
- data/vendor/assets/stylesheets/components/_carousel.scss +135 -0
- data/vendor/assets/stylesheets/components/_chart.scss +10 -0
- data/vendor/assets/stylesheets/components/_collapse.scss +17 -0
- data/vendor/assets/stylesheets/components/_colorpicker.scss +38 -0
- data/vendor/assets/stylesheets/components/_datepicker.scss +80 -0
- data/vendor/assets/stylesheets/components/_dropmenu.scss +151 -0
- data/vendor/assets/stylesheets/components/_footer.scss +11 -0
- data/vendor/assets/stylesheets/components/_grid.scss +144 -0
- data/vendor/assets/stylesheets/components/_header.scss +99 -0
- data/vendor/assets/stylesheets/components/_label_and_badge.scss +57 -0
- data/vendor/assets/stylesheets/components/_layout.scss +63 -0
- data/vendor/assets/stylesheets/components/_map.scss +14 -0
- data/vendor/assets/stylesheets/components/_milestone.scss +49 -0
- data/vendor/assets/stylesheets/components/_missive.scss +40 -0
- data/vendor/assets/stylesheets/components/_modal.scss +126 -0
- data/vendor/assets/stylesheets/components/_nav_and_tab.scss +202 -0
- data/vendor/assets/stylesheets/components/_navbar.scss +66 -0
- data/vendor/assets/stylesheets/components/_pagination.scss +79 -0
- data/vendor/assets/stylesheets/components/_placeholder.scss +23 -0
- data/vendor/assets/stylesheets/components/_popover.scss +167 -0
- data/vendor/assets/stylesheets/components/_progress.scss +62 -0
- data/vendor/assets/stylesheets/components/_sidebar.scss +74 -0
- data/vendor/assets/stylesheets/components/_spinner.scss +83 -0
- data/vendor/assets/stylesheets/components/_switch.scss +150 -0
- data/vendor/assets/stylesheets/components/_timepicker.scss +30 -0
- data/vendor/assets/stylesheets/components/_tooltip.scss +93 -0
- data/vendor/assets/stylesheets/components/_transition.scss +12 -0
- data/vendor/assets/stylesheets/components/_typeahead.scss +18 -0
- metadata +150 -94
- data/app/assets/fonts/gotham/gotham-bold.woff +0 -0
- data/app/assets/fonts/gotham/gotham-book.woff +0 -0
- data/app/assets/fonts/gotham/gotham-light.woff +0 -0
- data/app/assets/fonts/gotham/gotham-medium.woff +0 -0
- data/app/assets/fonts/gotham/gotham-rounded-bold.woff +0 -0
- data/app/assets/fonts/gotham/gotham-rounded-book.woff +0 -0
- data/app/assets/fonts/gotham/gotham-rounded-light.woff +0 -0
- data/app/assets/fonts/gotham/gotham-rounded-medium.woff +0 -0
- data/app/assets/images/placeholders/archive-large.png +0 -0
- data/app/assets/images/placeholders/archive-small.png +0 -0
- data/app/assets/images/placeholders/archive.png +0 -0
- data/app/assets/images/placeholders/picture-large.png +0 -0
- data/app/assets/images/placeholders/picture.png +0 -0
- data/vendor/assets/javascripts/_affix.js +0 -153
- data/vendor/assets/javascripts/_alert.js +0 -85
- data/vendor/assets/javascripts/_animation.js +0 -103
- data/vendor/assets/javascripts/_button.js +0 -107
- data/vendor/assets/javascripts/_carousel.js +0 -228
- data/vendor/assets/javascripts/_chart.js +0 -3742
- data/vendor/assets/javascripts/_collapse.js +0 -202
- data/vendor/assets/javascripts/_color_picker.js +0 -108
- data/vendor/assets/javascripts/_date_picker.js +0 -1650
- data/vendor/assets/javascripts/_dropdown.js +0 -156
- data/vendor/assets/javascripts/_file_input.js +0 -71
- data/vendor/assets/javascripts/_hoverdown.js +0 -109
- data/vendor/assets/javascripts/_inputmask.js +0 -341
- data/vendor/assets/javascripts/_loader.js +0 -361
- data/vendor/assets/javascripts/_map.js +0 -2401
- data/vendor/assets/javascripts/_popover.js +0 -99
- data/vendor/assets/javascripts/_scrollspy.js +0 -163
- data/vendor/assets/javascripts/_slider.js +0 -1572
- data/vendor/assets/javascripts/_sort.js +0 -1432
- data/vendor/assets/javascripts/_swoggle.js +0 -415
- data/vendor/assets/javascripts/_tab.js +0 -146
- data/vendor/assets/javascripts/_tablespy.js +0 -1883
- data/vendor/assets/javascripts/_time_ago.js +0 -206
- data/vendor/assets/javascripts/_time_picker.js +0 -1088
- data/vendor/assets/javascripts/_tooltip.js +0 -504
- data/vendor/assets/javascripts/_transition.js +0 -50
- data/vendor/assets/javascripts/_typeahead.js +0 -366
- data/vendor/assets/stylesheets/_ad.scss +0 -63
- data/vendor/assets/stylesheets/_affix.scss +0 -14
- data/vendor/assets/stylesheets/_alert.scss +0 -114
- data/vendor/assets/stylesheets/_animation.scss +0 -1370
- data/vendor/assets/stylesheets/_breadcrumb.scss +0 -100
- data/vendor/assets/stylesheets/_button.scss +0 -386
- data/vendor/assets/stylesheets/_canvas.scss +0 -182
- data/vendor/assets/stylesheets/_carousel.scss +0 -158
- data/vendor/assets/stylesheets/_chart.scss +0 -15
- data/vendor/assets/stylesheets/_code.scss +0 -150
- data/vendor/assets/stylesheets/_collapse.scss +0 -14
- data/vendor/assets/stylesheets/_color.scss +0 -55
- data/vendor/assets/stylesheets/_colorpicker.scss +0 -63
- data/vendor/assets/stylesheets/_datepicker.scss +0 -122
- data/vendor/assets/stylesheets/_dropdown.scss +0 -248
- data/vendor/assets/stylesheets/_footer.scss +0 -71
- data/vendor/assets/stylesheets/_form.scss +0 -661
- data/vendor/assets/stylesheets/_grid.scss +0 -184
- data/vendor/assets/stylesheets/_header.scss +0 -156
- data/vendor/assets/stylesheets/_icon.scss +0 -362
- data/vendor/assets/stylesheets/_image.scss +0 -33
- data/vendor/assets/stylesheets/_label_and_badge.scss +0 -104
- data/vendor/assets/stylesheets/_link.scss +0 -55
- data/vendor/assets/stylesheets/_list.scss +0 -122
- data/vendor/assets/stylesheets/_loader.scss +0 -71
- data/vendor/assets/stylesheets/_map.scss +0 -44
- data/vendor/assets/stylesheets/_missive.scss +0 -74
- data/vendor/assets/stylesheets/_modal.scss +0 -204
- data/vendor/assets/stylesheets/_nav_and_tab.scss +0 -230
- data/vendor/assets/stylesheets/_navbar.scss +0 -73
- data/vendor/assets/stylesheets/_pagination.scss +0 -79
- data/vendor/assets/stylesheets/_panel.scss +0 -80
- data/vendor/assets/stylesheets/_placeholder.scss +0 -63
- data/vendor/assets/stylesheets/_popover.scss +0 -128
- data/vendor/assets/stylesheets/_progress.scss +0 -86
- data/vendor/assets/stylesheets/_reset.scss +0 -140
- data/vendor/assets/stylesheets/_sidebar.scss +0 -148
- data/vendor/assets/stylesheets/_slider.scss +0 -151
- data/vendor/assets/stylesheets/_spinner.scss +0 -572
- data/vendor/assets/stylesheets/_subheader.scss +0 -112
- data/vendor/assets/stylesheets/_swoggle.scss +0 -120
- data/vendor/assets/stylesheets/_table.scss +0 -210
- data/vendor/assets/stylesheets/_timepicker.scss +0 -77
- data/vendor/assets/stylesheets/_toolbar.scss +0 -130
- data/vendor/assets/stylesheets/_tooltip.scss +0 -105
- data/vendor/assets/stylesheets/_transition.scss +0 -11
- data/vendor/assets/stylesheets/_trunk.scss +0 -147
- data/vendor/assets/stylesheets/_typeahead.scss +0 -18
- data/vendor/assets/stylesheets/_typography.scss +0 -233
@@ -0,0 +1,154 @@
|
|
1
|
+
+function ($) {
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
// DROPDOWN CLASS DEFINITION
|
5
|
+
// =========================
|
6
|
+
|
7
|
+
var backdrop = '.dropdown-backdrop';
|
8
|
+
var toggle = '[data-toggle="dropdown"]';
|
9
|
+
var Dropdown = function (element) {
|
10
|
+
$(element).on('click.bs.dropdown', this.toggle);
|
11
|
+
};
|
12
|
+
|
13
|
+
Dropdown.VERSION = '1.0.0';
|
14
|
+
|
15
|
+
Dropdown.prototype.constructor = Dropdown;
|
16
|
+
|
17
|
+
Dropdown.prototype.toggle = function (e) {
|
18
|
+
var $this = $(this);
|
19
|
+
|
20
|
+
if ($this.is('.disabled, :disabled')) return;
|
21
|
+
|
22
|
+
var $parent = getParent($this);
|
23
|
+
var isActive = $parent.hasClass('open');
|
24
|
+
|
25
|
+
clearMenus();
|
26
|
+
|
27
|
+
if (!isActive) {
|
28
|
+
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
|
29
|
+
$(document.createElement('div'))
|
30
|
+
.addClass('dropdown-backdrop')
|
31
|
+
.insertAfter($(this))
|
32
|
+
.on('click', clearMenus);
|
33
|
+
}
|
34
|
+
|
35
|
+
var relatedTarget = { relatedTarget: this };
|
36
|
+
|
37
|
+
$parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget));
|
38
|
+
|
39
|
+
if (e.isDefaultPrevented()) return;
|
40
|
+
|
41
|
+
$this.trigger('focus')
|
42
|
+
.attr('aria-expanded', 'true');
|
43
|
+
$parent.toggleClass('open')
|
44
|
+
.trigger($.Event('shown.bs.dropdown', relatedTarget));
|
45
|
+
}
|
46
|
+
|
47
|
+
return false;
|
48
|
+
};
|
49
|
+
|
50
|
+
Dropdown.prototype.keydown = function (e) {
|
51
|
+
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return;
|
52
|
+
|
53
|
+
var $this = $(this);
|
54
|
+
|
55
|
+
e.preventDefault();
|
56
|
+
e.stopPropagation();
|
57
|
+
|
58
|
+
if ($this.is('.disabled, :disabled')) return;
|
59
|
+
|
60
|
+
var $parent = getParent($this);
|
61
|
+
var isActive = $parent.hasClass('open');
|
62
|
+
|
63
|
+
if (!isActive && e.which != 27 || isActive && e.which === 27) {
|
64
|
+
if (e.which === 27) $parent.find(toggle).trigger('focus');
|
65
|
+
return $this.trigger('click');
|
66
|
+
}
|
67
|
+
|
68
|
+
var desc = ' li:not(.disabled):visible a';
|
69
|
+
var $items = $parent.find('.dropdown-menu' + desc);
|
70
|
+
|
71
|
+
if (!$items.length) return;
|
72
|
+
|
73
|
+
var index = $items.index(e.target);
|
74
|
+
|
75
|
+
if (e.which === 38 && index > 0) index--;
|
76
|
+
if (e.which === 40 && index < $items.length - 1) index++;
|
77
|
+
if (!~index) index = 0;
|
78
|
+
|
79
|
+
$items.eq(index).trigger('focus');
|
80
|
+
};
|
81
|
+
|
82
|
+
function getParent($this) {
|
83
|
+
var selector = $this.attr('data-target');
|
84
|
+
|
85
|
+
if (!selector) {
|
86
|
+
selector = $this.attr('href');
|
87
|
+
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '');
|
88
|
+
}
|
89
|
+
|
90
|
+
var $parent = selector && $(selector);
|
91
|
+
|
92
|
+
return $parent && $parent.length ? $parent : $this.parent();
|
93
|
+
}
|
94
|
+
|
95
|
+
function clearMenus(e) {
|
96
|
+
if (e && e.which === 3) return;
|
97
|
+
|
98
|
+
$(backdrop).remove();
|
99
|
+
$(toggle).each(function () {
|
100
|
+
var $this = $(this);
|
101
|
+
var $parent = getParent($this);
|
102
|
+
var relatedTarget = { relatedTarget: this };
|
103
|
+
|
104
|
+
if (!$parent.hasClass('open')) return;
|
105
|
+
if (e && e.type === 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return;
|
106
|
+
|
107
|
+
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget));
|
108
|
+
|
109
|
+
if (e.isDefaultPrevented()) return;
|
110
|
+
|
111
|
+
$this.attr('aria-expanded', 'false');
|
112
|
+
$parent
|
113
|
+
.removeClass('open')
|
114
|
+
.trigger($.Event('hidden.bs.dropdown', relatedTarget));
|
115
|
+
});
|
116
|
+
}
|
117
|
+
|
118
|
+
// DROPDOWN PLUGIN DEFINITION
|
119
|
+
// ==========================
|
120
|
+
|
121
|
+
function Plugin(option) {
|
122
|
+
return this.each(function () {
|
123
|
+
var $this = $(this);
|
124
|
+
var data = $this.data('bs.dropdown');
|
125
|
+
|
126
|
+
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)));
|
127
|
+
if (typeof option === 'string') data[option]();
|
128
|
+
});
|
129
|
+
}
|
130
|
+
|
131
|
+
var old = $.fn.dropdown;
|
132
|
+
|
133
|
+
$.fn.dropdown = Plugin;
|
134
|
+
$.fn.dropdown.Constructor = Dropdown;
|
135
|
+
|
136
|
+
// DROPDOWN NO CONFLICT
|
137
|
+
// ====================
|
138
|
+
|
139
|
+
$.fn.dropdown.noConflict = function () {
|
140
|
+
$.fn.dropdown = old;
|
141
|
+
return this;
|
142
|
+
};
|
143
|
+
|
144
|
+
// APPLY TO STANDARD DROPDOWN ELEMENTS
|
145
|
+
// ===================================
|
146
|
+
|
147
|
+
$(document)
|
148
|
+
.on('click.bs.dropdown.data-api', clearMenus)
|
149
|
+
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation(); })
|
150
|
+
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
|
151
|
+
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
|
152
|
+
.on('keydown.bs.dropdown.data-api', '.dropmenu', Dropdown.prototype.keydown);
|
153
|
+
|
154
|
+
}(jQuery);
|
@@ -0,0 +1,235 @@
|
|
1
|
+
+function ($) {
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
// FILEPICKER PUBLIC CLASS DEFINITION
|
5
|
+
// ==================================
|
6
|
+
|
7
|
+
var nextId = 0;
|
8
|
+
var Filepicker = function (element, options) {
|
9
|
+
this.$element = $(element);
|
10
|
+
this.settings = {
|
11
|
+
badgeClass: this.$element.data('badge-class'),
|
12
|
+
buttonBefore: this.$element.data('button-before'),
|
13
|
+
buttonClass: this.$element.data('button-class'),
|
14
|
+
buttonText: this.$element.data('button-text'),
|
15
|
+
disabled: this.$element.data('disabled'),
|
16
|
+
iconClass: this.$element.data('icon-class'),
|
17
|
+
inputClass: this.$element.data('input-class'),
|
18
|
+
inputPlaceholder: this.$element.data('input-placeholder'),
|
19
|
+
showBadge: this.$element.data('show-badge'),
|
20
|
+
showIcon: this.$element.data('show-icon'),
|
21
|
+
showInput: this.$element.data('show-input')
|
22
|
+
};
|
23
|
+
this.options = $.extend({}, Filepicker.DEFAULTS, this.settings, options);
|
24
|
+
|
25
|
+
this.$elementFilepicker = [];
|
26
|
+
this.init();
|
27
|
+
};
|
28
|
+
|
29
|
+
Filepicker.VERSION = '1.0.0';
|
30
|
+
Filepicker.DEFAULTS = {
|
31
|
+
badgeClass: 'badge badge-color-black',
|
32
|
+
buttonBefore: false,
|
33
|
+
buttonClass: 'btn',
|
34
|
+
buttonText: 'Browse',
|
35
|
+
disabled: false,
|
36
|
+
iconClass: 'icon-folder-open',
|
37
|
+
inputClass: 'form-input',
|
38
|
+
inputPlaceholder: 'Select a file...',
|
39
|
+
showBadge: true,
|
40
|
+
showIcon: true,
|
41
|
+
showInput: true
|
42
|
+
};
|
43
|
+
|
44
|
+
Filepicker.prototype.constructor = Filepicker;
|
45
|
+
|
46
|
+
Filepicker.prototype.init = function () {
|
47
|
+
var _self = this;
|
48
|
+
var id = this.setId();
|
49
|
+
var btn = this.setButton(id);
|
50
|
+
var html = this.setHtml(btn);
|
51
|
+
var container = this.setContainer(html);
|
52
|
+
|
53
|
+
this.$elementFilepicker = $(container);
|
54
|
+
this.$element
|
55
|
+
.attr('tabindex', '-1')
|
56
|
+
.css({
|
57
|
+
'position' : 'absolute',
|
58
|
+
'clip' : 'rect(0 0 0 0)'
|
59
|
+
})
|
60
|
+
.after(this.$elementFilepicker);
|
61
|
+
|
62
|
+
if (this.options.disabled) this.$element.attr('disabled', 'true');
|
63
|
+
|
64
|
+
this.$element.change(function () {
|
65
|
+
var files = _self.pushNameFiles();
|
66
|
+
|
67
|
+
if (_self.options.showInput === false && _self.options.showBadge) {
|
68
|
+
if (_self.$elementFilepicker.find('.badge').length === 0) {
|
69
|
+
_self.badgeAppend(files);
|
70
|
+
} else if (files.length === 0) {
|
71
|
+
_self.badgeRemove();
|
72
|
+
} else {
|
73
|
+
_self.$elementFilepicker
|
74
|
+
.find('.badge')
|
75
|
+
.html(files.length);
|
76
|
+
}
|
77
|
+
} else {
|
78
|
+
_self.badgeRemove();
|
79
|
+
}
|
80
|
+
});
|
81
|
+
|
82
|
+
if (window.navigator.userAgent.search(/firefox/i) > -1) {
|
83
|
+
this.$elementFilepicker.find('label').click(function () {
|
84
|
+
_self.$element.click();
|
85
|
+
return false;
|
86
|
+
});
|
87
|
+
}
|
88
|
+
};
|
89
|
+
|
90
|
+
Filepicker.prototype.badgeAppend = function (files) {
|
91
|
+
var badge = ' <span class="' +
|
92
|
+
this.options.badgeClass +
|
93
|
+
'">' +
|
94
|
+
files.length +
|
95
|
+
'</span>';
|
96
|
+
|
97
|
+
this.$elementFilepicker
|
98
|
+
.find('label')
|
99
|
+
.append(badge);
|
100
|
+
};
|
101
|
+
|
102
|
+
Filepicker.prototype.badgeRemove = function () {
|
103
|
+
this.$elementFilepicker
|
104
|
+
.find('.badge')
|
105
|
+
.remove();
|
106
|
+
};
|
107
|
+
|
108
|
+
Filepicker.prototype.setButton = function (id) {
|
109
|
+
return '<label for="' + id +
|
110
|
+
'" class="' +
|
111
|
+
this.options.buttonClass +
|
112
|
+
'" ' +
|
113
|
+
(this.options.disabled ? 'disabled="true"' : '') + '>' +
|
114
|
+
this.htmlIcon() +
|
115
|
+
'<span class="buttonText">' + this.options.buttonText + '</span>' +
|
116
|
+
'</label>';
|
117
|
+
};
|
118
|
+
|
119
|
+
Filepicker.prototype.setId = function () {
|
120
|
+
var id = this.$element.attr('id');
|
121
|
+
|
122
|
+
if (id === '' || !id) {
|
123
|
+
id = 'filepicker-' + nextId;
|
124
|
+
this.$element.attr({ 'id': id });
|
125
|
+
nextId++;
|
126
|
+
}
|
127
|
+
|
128
|
+
return id;
|
129
|
+
};
|
130
|
+
|
131
|
+
Filepicker.prototype.setHtml = function (btn) {
|
132
|
+
return this.options.buttonBefore ?
|
133
|
+
btn + this.htmlInput() :
|
134
|
+
this.htmlInput() + btn;
|
135
|
+
};
|
136
|
+
|
137
|
+
Filepicker.prototype.setContainer = function (html) {
|
138
|
+
return '<div class="filepicker ' +
|
139
|
+
this.options.inputClass +
|
140
|
+
(this.options.showInput === true ? ' with-form-addons' : '') +
|
141
|
+
'">' +
|
142
|
+
html +
|
143
|
+
'</div>';
|
144
|
+
};
|
145
|
+
|
146
|
+
Filepicker.prototype.clearVal = function () {
|
147
|
+
this.$elementFilepicker
|
148
|
+
.find(':text')
|
149
|
+
.val('');
|
150
|
+
};
|
151
|
+
|
152
|
+
Filepicker.prototype.htmlIcon = function () {
|
153
|
+
if (this.options.showIcon) {
|
154
|
+
return '<span class="icon-span-filepicker ' +
|
155
|
+
this.options.iconClass +
|
156
|
+
'"></span> ';
|
157
|
+
} else {
|
158
|
+
return '';
|
159
|
+
}
|
160
|
+
};
|
161
|
+
|
162
|
+
Filepicker.prototype.htmlInput = function () {
|
163
|
+
if (this.options.showInput) {
|
164
|
+
return '<input type="text" placeholder="' +
|
165
|
+
this.options.inputPlaceholder +
|
166
|
+
'" disabled> ';
|
167
|
+
} else {
|
168
|
+
return '';
|
169
|
+
}
|
170
|
+
};
|
171
|
+
|
172
|
+
Filepicker.prototype.pushNameFiles = function () {
|
173
|
+
var content = '', files = [];
|
174
|
+
if (this.$element[0].files === undefined) {
|
175
|
+
files[0] = {
|
176
|
+
name: this.$element[0] && this.$element[0].value
|
177
|
+
};
|
178
|
+
} else {
|
179
|
+
files = this.$element[0].files;
|
180
|
+
}
|
181
|
+
|
182
|
+
for (var i = 0; i < files.length; i++) {
|
183
|
+
content += files[i].name.split("\\").pop() + ', ';
|
184
|
+
}
|
185
|
+
|
186
|
+
if (content !== '') {
|
187
|
+
this.$elementFilepicker
|
188
|
+
.find(':text')
|
189
|
+
.val(content.replace(/\, $/g, ''));
|
190
|
+
} else {
|
191
|
+
this.clearVal();;
|
192
|
+
}
|
193
|
+
|
194
|
+
return files;
|
195
|
+
};
|
196
|
+
|
197
|
+
// FILEPICKER PLUGIN DEFINITION
|
198
|
+
// ============================
|
199
|
+
|
200
|
+
function Plugin(option) {
|
201
|
+
return this.each(function () {
|
202
|
+
var $this = $(this);
|
203
|
+
var data = $this.data('bs.filepicker');
|
204
|
+
var options = typeof option === 'object' && option;
|
205
|
+
|
206
|
+
if (!data) $this.data('bs.filepicker', (data = new Filepicker(this, options)));
|
207
|
+
if (typeof option === 'string') data[option]();
|
208
|
+
});
|
209
|
+
}
|
210
|
+
|
211
|
+
var old = $.fn.filepicker;
|
212
|
+
|
213
|
+
$.fn.filepicker = Plugin;
|
214
|
+
$.fn.filepicker.Constructor = Filepicker;
|
215
|
+
|
216
|
+
// FILEPICKER NO CONFLICT
|
217
|
+
// =====================
|
218
|
+
|
219
|
+
$.fn.filepicker.noConflict = function () {
|
220
|
+
$.fn.filepicker = old;
|
221
|
+
return this;
|
222
|
+
};
|
223
|
+
|
224
|
+
// FILEPICKER DATA-API
|
225
|
+
// ==================
|
226
|
+
|
227
|
+
$(document).on('ready.bs.filepicker.data-api', function () {
|
228
|
+
$('[data-toggle="filepicker"]').each(function () {
|
229
|
+
var $this = $(this);
|
230
|
+
if ($this.data('filepicker')) return;
|
231
|
+
Plugin.call($this, $this.data());
|
232
|
+
});
|
233
|
+
});
|
234
|
+
|
235
|
+
}(jQuery);
|
@@ -0,0 +1,116 @@
|
|
1
|
+
+function ($) {
|
2
|
+
'use strict';
|
3
|
+
|
4
|
+
// HOVERDOWN CLASS DEFINITION
|
5
|
+
// ==========================
|
6
|
+
|
7
|
+
var Hoverdown = function (element, options) {
|
8
|
+
this.$element = $(element);
|
9
|
+
this.settings = {
|
10
|
+
delay: this.$element.data('delay'),
|
11
|
+
timeout: this.$element.data('timeout')
|
12
|
+
};
|
13
|
+
this.options = $.extend({}, Hoverdown.DEFAULTS, this.settings, options);
|
14
|
+
|
15
|
+
this.$parent = this.$element.parent();
|
16
|
+
this.$dropmenu = this.$parent.find('.dropmenu').first();
|
17
|
+
this.$timeout = null;
|
18
|
+
|
19
|
+
this.init();
|
20
|
+
};
|
21
|
+
|
22
|
+
if (!$.fn.dropdown) throw new Error('Hoverdown requires dropdown.js');
|
23
|
+
|
24
|
+
Hoverdown.VERSION = '1.0.0';
|
25
|
+
Hoverdown.DEFAULTS = {
|
26
|
+
delay: 500,
|
27
|
+
timeout: 500
|
28
|
+
};
|
29
|
+
|
30
|
+
Hoverdown.prototype.constructor = Hoverdown;
|
31
|
+
|
32
|
+
Hoverdown.prototype.init = function () {
|
33
|
+
if ('ontouchstart' in document) return this;
|
34
|
+
|
35
|
+
var _self = this;
|
36
|
+
|
37
|
+
window.clearTimeout(this.$timeout);
|
38
|
+
|
39
|
+
this.$parent.hover(function () {
|
40
|
+
_self.openMenu();
|
41
|
+
}, function () {
|
42
|
+
_self.hoverOutTimeout();
|
43
|
+
|
44
|
+
_self.$dropmenu.hover(function () {
|
45
|
+
window.clearTimeout(_self.$timeout);
|
46
|
+
}, function () {
|
47
|
+
_self.hoverOutDelay();
|
48
|
+
});
|
49
|
+
});
|
50
|
+
};
|
51
|
+
|
52
|
+
Hoverdown.prototype.hoverOutTimeout = function () {
|
53
|
+
var _self = this;
|
54
|
+
|
55
|
+
this.$timeout = window.setTimeout(function () {
|
56
|
+
_self.closeMenu();
|
57
|
+
}, this.options.timeout);
|
58
|
+
};
|
59
|
+
|
60
|
+
Hoverdown.prototype.hoverOutDelay = function () {
|
61
|
+
var _self = this;
|
62
|
+
|
63
|
+
window.setTimeout(function () {
|
64
|
+
_self.closeMenu();
|
65
|
+
}, this.options.delay);
|
66
|
+
};
|
67
|
+
|
68
|
+
Hoverdown.prototype.openMenu = function () {
|
69
|
+
this.$parent.addClass('open');
|
70
|
+
this.$dropmenu.trigger('show.bs.dropdown');
|
71
|
+
};
|
72
|
+
|
73
|
+
Hoverdown.prototype.closeMenu = function () {
|
74
|
+
this.$parent.removeClass('open');
|
75
|
+
this.$dropmenu.trigger('hide.bs.dropdown');
|
76
|
+
};
|
77
|
+
|
78
|
+
// HOVERDOWN PLUGIN DEFINITION
|
79
|
+
// ===========================
|
80
|
+
|
81
|
+
function Plugin(option) {
|
82
|
+
return this.each(function () {
|
83
|
+
var $this = $(this);
|
84
|
+
var data = $this.data('bs.hoverdown');
|
85
|
+
var options = typeof option === 'object' && option;
|
86
|
+
|
87
|
+
if (!data) $this.data('bs.hoverdown', (data = new Hoverdown(this, options)));
|
88
|
+
if (typeof option === 'string') data[option]();
|
89
|
+
});
|
90
|
+
}
|
91
|
+
|
92
|
+
var old = $.fn.hoverdown;
|
93
|
+
|
94
|
+
$.fn.hoverdown = Plugin;
|
95
|
+
$.fn.hoverdown.Constructor = Hoverdown;
|
96
|
+
|
97
|
+
// HOVERDOWN NO CONFLICT
|
98
|
+
// =====================
|
99
|
+
|
100
|
+
$.fn.hoverdown.noConflict = function () {
|
101
|
+
$.fn.hoverdown = old;
|
102
|
+
return this;
|
103
|
+
};
|
104
|
+
|
105
|
+
// HOVERDOWN DATA-API
|
106
|
+
// ==================
|
107
|
+
|
108
|
+
$(document).on('ready.bs.hoverdown.data-api', function () {
|
109
|
+
$('[data-hover="dropdown"]').each(function () {
|
110
|
+
var $this = $(this);
|
111
|
+
if ($this.data('hoverdown')) return;
|
112
|
+
Plugin.call($this, $this.data());
|
113
|
+
});
|
114
|
+
});
|
115
|
+
|
116
|
+
}(jQuery);
|