bootstrap-jasny 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.rdoc +27 -0
  4. data/lib/bootstrap-jasny.rb +51 -0
  5. data/lib/bootstrap-jasny/compass_functions.rb +24 -0
  6. data/lib/bootstrap-jasny/engine.rb +7 -0
  7. data/lib/bootstrap-jasny/less_functions.rb +14 -0
  8. data/vendor/assets/fonts/bootstrap/iconic/iconic_fill.eot +0 -0
  9. data/vendor/assets/fonts/bootstrap/iconic/iconic_fill.otf +0 -0
  10. data/vendor/assets/fonts/bootstrap/iconic/iconic_fill.svg +475 -0
  11. data/vendor/assets/fonts/bootstrap/iconic/iconic_fill.ttf +0 -0
  12. data/vendor/assets/fonts/bootstrap/iconic/iconic_fill.woff +0 -0
  13. data/vendor/assets/fonts/bootstrap/iconic/iconic_stroke.eot +0 -0
  14. data/vendor/assets/fonts/bootstrap/iconic/iconic_stroke.otf +0 -0
  15. data/vendor/assets/fonts/bootstrap/iconic/iconic_stroke.svg +492 -0
  16. data/vendor/assets/fonts/bootstrap/iconic/iconic_stroke.ttf +0 -0
  17. data/vendor/assets/fonts/bootstrap/iconic/iconic_stroke.woff +0 -0
  18. data/vendor/assets/images/bootstrap/glyphicons-halflings-white.png +0 -0
  19. data/vendor/assets/images/bootstrap/glyphicons-halflings.png +0 -0
  20. data/vendor/assets/javascripts/bootstrap-affix.js +117 -0
  21. data/vendor/assets/javascripts/bootstrap-alert.js +99 -0
  22. data/vendor/assets/javascripts/bootstrap-button.js +105 -0
  23. data/vendor/assets/javascripts/bootstrap-carousel.js +207 -0
  24. data/vendor/assets/javascripts/bootstrap-collapse.js +167 -0
  25. data/vendor/assets/javascripts/bootstrap-dropdown.js +165 -0
  26. data/vendor/assets/javascripts/bootstrap-fileupload.js +169 -0
  27. data/vendor/assets/javascripts/bootstrap-inputmask.js +355 -0
  28. data/vendor/assets/javascripts/bootstrap-modal.js +247 -0
  29. data/vendor/assets/javascripts/bootstrap-popover.js +114 -0
  30. data/vendor/assets/javascripts/bootstrap-rowlink.js +71 -0
  31. data/vendor/assets/javascripts/bootstrap-scrollspy.js +162 -0
  32. data/vendor/assets/javascripts/bootstrap-tab.js +144 -0
  33. data/vendor/assets/javascripts/bootstrap-tooltip.js +361 -0
  34. data/vendor/assets/javascripts/bootstrap-transition.js +60 -0
  35. data/vendor/assets/javascripts/bootstrap-typeahead.js +524 -0
  36. data/vendor/assets/javascripts/bootstrap.js +21 -0
  37. data/vendor/assets/stylesheets/bootstrap-responsive.less +1 -0
  38. data/vendor/assets/stylesheets/bootstrap.less +2 -0
  39. data/vendor/assets/stylesheets/bootstrap/accordion.less +34 -0
  40. data/vendor/assets/stylesheets/bootstrap/action-areas.less +14 -0
  41. data/vendor/assets/stylesheets/bootstrap/action-links.less +57 -0
  42. data/vendor/assets/stylesheets/bootstrap/alerts.less +79 -0
  43. data/vendor/assets/stylesheets/bootstrap/bootstrap.less +63 -0
  44. data/vendor/assets/stylesheets/bootstrap/breadcrumbs.less +24 -0
  45. data/vendor/assets/stylesheets/bootstrap/button-groups.less +229 -0
  46. data/vendor/assets/stylesheets/bootstrap/buttons.less +228 -0
  47. data/vendor/assets/stylesheets/bootstrap/carousel.less +158 -0
  48. data/vendor/assets/stylesheets/bootstrap/close.less +32 -0
  49. data/vendor/assets/stylesheets/bootstrap/code.less +61 -0
  50. data/vendor/assets/stylesheets/bootstrap/component-animations.less +22 -0
  51. data/vendor/assets/stylesheets/bootstrap/dropdowns.less +237 -0
  52. data/vendor/assets/stylesheets/bootstrap/fileupload.less +105 -0
  53. data/vendor/assets/stylesheets/bootstrap/forms-uneditable.less +159 -0
  54. data/vendor/assets/stylesheets/bootstrap/forms.less +690 -0
  55. data/vendor/assets/stylesheets/bootstrap/grid.less +21 -0
  56. data/vendor/assets/stylesheets/bootstrap/hero-unit.less +25 -0
  57. data/vendor/assets/stylesheets/bootstrap/iconic.less +209 -0
  58. data/vendor/assets/stylesheets/bootstrap/jasny-bootstrap.less +31 -0
  59. data/vendor/assets/stylesheets/bootstrap/jasny-forms.less +99 -0
  60. data/vendor/assets/stylesheets/bootstrap/jasny-forms.responsive-1200px-min.less +16 -0
  61. data/vendor/assets/stylesheets/bootstrap/jasny-forms.responsive-767px-max.less +17 -0
  62. data/vendor/assets/stylesheets/bootstrap/jasny-forms.responsive-768px-979px.less +36 -0
  63. data/vendor/assets/stylesheets/bootstrap/jasny-navs-tabbable.less +148 -0
  64. data/vendor/assets/stylesheets/bootstrap/jasny-responsive.less +27 -0
  65. data/vendor/assets/stylesheets/bootstrap/labels-badges.less +84 -0
  66. data/vendor/assets/stylesheets/bootstrap/layouts-semifluid.less +11 -0
  67. data/vendor/assets/stylesheets/bootstrap/layouts-semifluid.responsive-1200px-min.less +7 -0
  68. data/vendor/assets/stylesheets/bootstrap/layouts.less +16 -0
  69. data/vendor/assets/stylesheets/bootstrap/media.less +55 -0
  70. data/vendor/assets/stylesheets/bootstrap/mixins.less +702 -0
  71. data/vendor/assets/stylesheets/bootstrap/modals.less +95 -0
  72. data/vendor/assets/stylesheets/bootstrap/navbar.less +497 -0
  73. data/vendor/assets/stylesheets/bootstrap/navs.less +409 -0
  74. data/vendor/assets/stylesheets/bootstrap/page-alert.less +23 -0
  75. data/vendor/assets/stylesheets/bootstrap/page-alert.responsive-1200px-min.less +11 -0
  76. data/vendor/assets/stylesheets/bootstrap/page-alert.responsive-767px-max.less +20 -0
  77. data/vendor/assets/stylesheets/bootstrap/pager.less +43 -0
  78. data/vendor/assets/stylesheets/bootstrap/pagination.less +123 -0
  79. data/vendor/assets/stylesheets/bootstrap/popovers.less +133 -0
  80. data/vendor/assets/stylesheets/bootstrap/progress-bars.less +122 -0
  81. data/vendor/assets/stylesheets/bootstrap/reset.less +216 -0
  82. data/vendor/assets/stylesheets/bootstrap/responsive-1200px-min.less +28 -0
  83. data/vendor/assets/stylesheets/bootstrap/responsive-767px-max.less +193 -0
  84. data/vendor/assets/stylesheets/bootstrap/responsive-768px-979px.less +19 -0
  85. data/vendor/assets/stylesheets/bootstrap/responsive-navbar.less +189 -0
  86. data/vendor/assets/stylesheets/bootstrap/responsive-row-desktop.less +23 -0
  87. data/vendor/assets/stylesheets/bootstrap/responsive-tables.less +30 -0
  88. data/vendor/assets/stylesheets/bootstrap/responsive-utilities.less +59 -0
  89. data/vendor/assets/stylesheets/bootstrap/responsive.less +48 -0
  90. data/vendor/assets/stylesheets/bootstrap/rowlink.less +20 -0
  91. data/vendor/assets/stylesheets/bootstrap/scaffolding.less +53 -0
  92. data/vendor/assets/stylesheets/bootstrap/sprites.less +197 -0
  93. data/vendor/assets/stylesheets/bootstrap/tables.less +244 -0
  94. data/vendor/assets/stylesheets/bootstrap/thumbnails.less +53 -0
  95. data/vendor/assets/stylesheets/bootstrap/tooltip.less +70 -0
  96. data/vendor/assets/stylesheets/bootstrap/type.less +247 -0
  97. data/vendor/assets/stylesheets/bootstrap/utilities.less +30 -0
  98. data/vendor/assets/stylesheets/bootstrap/variables.less +302 -0
  99. data/vendor/assets/stylesheets/bootstrap/wells.less +29 -0
  100. metadata +241 -0
@@ -0,0 +1,167 @@
1
+ /* =============================================================
2
+ * bootstrap-collapse.js v2.3.1
3
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
4
+ * =============================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ============================================================ */
19
+
20
+
21
+ !function ($) {
22
+
23
+ "use strict"; // jshint ;_;
24
+
25
+
26
+ /* COLLAPSE PUBLIC CLASS DEFINITION
27
+ * ================================ */
28
+
29
+ var Collapse = function (element, options) {
30
+ this.$element = $(element)
31
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
32
+
33
+ if (this.options.parent) {
34
+ this.$parent = $(this.options.parent)
35
+ }
36
+
37
+ this.options.toggle && this.toggle()
38
+ }
39
+
40
+ Collapse.prototype = {
41
+
42
+ constructor: Collapse
43
+
44
+ , dimension: function () {
45
+ var hasWidth = this.$element.hasClass('width')
46
+ return hasWidth ? 'width' : 'height'
47
+ }
48
+
49
+ , show: function () {
50
+ var dimension
51
+ , scroll
52
+ , actives
53
+ , hasData
54
+
55
+ if (this.transitioning || this.$element.hasClass('in')) return
56
+
57
+ dimension = this.dimension()
58
+ scroll = $.camelCase(['scroll', dimension].join('-'))
59
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
60
+
61
+ if (actives && actives.length) {
62
+ hasData = actives.data('collapse')
63
+ if (hasData && hasData.transitioning) return
64
+ actives.collapse('hide')
65
+ hasData || actives.data('collapse', null)
66
+ }
67
+
68
+ this.$element[dimension](0)
69
+ this.transition('addClass', $.Event('show'), 'shown')
70
+ $.support.transition && this.$element[dimension](this.$element[0][scroll])
71
+ }
72
+
73
+ , hide: function () {
74
+ var dimension
75
+ if (this.transitioning || !this.$element.hasClass('in')) return
76
+ dimension = this.dimension()
77
+ this.reset(this.$element[dimension]())
78
+ this.transition('removeClass', $.Event('hide'), 'hidden')
79
+ this.$element[dimension](0)
80
+ }
81
+
82
+ , reset: function (size) {
83
+ var dimension = this.dimension()
84
+
85
+ this.$element
86
+ .removeClass('collapse')
87
+ [dimension](size || 'auto')
88
+ [0].offsetWidth
89
+
90
+ this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
91
+
92
+ return this
93
+ }
94
+
95
+ , transition: function (method, startEvent, completeEvent) {
96
+ var that = this
97
+ , complete = function () {
98
+ if (startEvent.type == 'show') that.reset()
99
+ that.transitioning = 0
100
+ that.$element.trigger(completeEvent)
101
+ }
102
+
103
+ this.$element.trigger(startEvent)
104
+
105
+ if (startEvent.isDefaultPrevented()) return
106
+
107
+ this.transitioning = 1
108
+
109
+ this.$element[method]('in')
110
+
111
+ $.support.transition && this.$element.hasClass('collapse') ?
112
+ this.$element.one($.support.transition.end, complete) :
113
+ complete()
114
+ }
115
+
116
+ , toggle: function () {
117
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
118
+ }
119
+
120
+ }
121
+
122
+
123
+ /* COLLAPSE PLUGIN DEFINITION
124
+ * ========================== */
125
+
126
+ var old = $.fn.collapse
127
+
128
+ $.fn.collapse = function (option) {
129
+ return this.each(function () {
130
+ var $this = $(this)
131
+ , data = $this.data('collapse')
132
+ , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
133
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
134
+ if (typeof option == 'string') data[option]()
135
+ })
136
+ }
137
+
138
+ $.fn.collapse.defaults = {
139
+ toggle: true
140
+ }
141
+
142
+ $.fn.collapse.Constructor = Collapse
143
+
144
+
145
+ /* COLLAPSE NO CONFLICT
146
+ * ==================== */
147
+
148
+ $.fn.collapse.noConflict = function () {
149
+ $.fn.collapse = old
150
+ return this
151
+ }
152
+
153
+
154
+ /* COLLAPSE DATA-API
155
+ * ================= */
156
+
157
+ $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
158
+ var $this = $(this), href
159
+ , target = $this.attr('data-target')
160
+ || e.preventDefault()
161
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
162
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
163
+ $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
164
+ $(target).collapse(option)
165
+ })
166
+
167
+ }(window.jQuery);
@@ -0,0 +1,165 @@
1
+ /* ============================================================
2
+ * bootstrap-dropdown.js v2.3.1
3
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
4
+ * ============================================================
5
+ * Copyright 2012 Twitter, Inc.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ============================================================ */
19
+
20
+
21
+ !function ($) {
22
+
23
+ "use strict"; // jshint ;_;
24
+
25
+
26
+ /* DROPDOWN CLASS DEFINITION
27
+ * ========================= */
28
+
29
+ var toggle = '[data-toggle=dropdown]'
30
+ , Dropdown = function (element) {
31
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
32
+ $('html').on('click.dropdown.data-api', function () {
33
+ $el.parent().removeClass('open')
34
+ })
35
+ }
36
+
37
+ Dropdown.prototype = {
38
+
39
+ constructor: Dropdown
40
+
41
+ , toggle: function (e) {
42
+ var $this = $(this)
43
+ , $parent
44
+ , isActive
45
+
46
+ if ($this.is('.disabled, :disabled')) return
47
+
48
+ $parent = getParent($this)
49
+
50
+ isActive = $parent.hasClass('open')
51
+
52
+ clearMenus()
53
+
54
+ if (!isActive) {
55
+ $parent.toggleClass('open')
56
+ }
57
+
58
+ $this.focus()
59
+
60
+ return false
61
+ }
62
+
63
+ , keydown: function (e) {
64
+ var $this
65
+ , $items
66
+ , $active
67
+ , $parent
68
+ , isActive
69
+ , index
70
+
71
+ if (!/(38|40|27)/.test(e.keyCode)) return
72
+
73
+ $this = $(this)
74
+
75
+ e.preventDefault()
76
+ e.stopPropagation()
77
+
78
+ if ($this.is('.disabled, :disabled')) return
79
+
80
+ $parent = getParent($this)
81
+
82
+ isActive = $parent.hasClass('open')
83
+
84
+ if (!isActive || (isActive && e.keyCode == 27)) {
85
+ if (e.which == 27) $parent.find(toggle).focus()
86
+ return $this.click()
87
+ }
88
+
89
+ $items = $('[role=menu] li:not(.divider):visible a', $parent)
90
+
91
+ if (!$items.length) return
92
+
93
+ index = $items.index($items.filter(':focus'))
94
+
95
+ if (e.keyCode == 38 && index > 0) index-- // up
96
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
97
+ if (!~index) index = 0
98
+
99
+ $items
100
+ .eq(index)
101
+ .focus()
102
+ }
103
+
104
+ }
105
+
106
+ function clearMenus() {
107
+ $(toggle).each(function () {
108
+ getParent($(this)).removeClass('open')
109
+ })
110
+ }
111
+
112
+ function getParent($this) {
113
+ var selector = $this.attr('data-target')
114
+ , $parent
115
+
116
+ if (!selector) {
117
+ selector = $this.attr('href')
118
+ selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
119
+ }
120
+
121
+ $parent = selector && $(selector)
122
+
123
+ if (!$parent || !$parent.length) $parent = $this.parent()
124
+
125
+ return $parent
126
+ }
127
+
128
+
129
+ /* DROPDOWN PLUGIN DEFINITION
130
+ * ========================== */
131
+
132
+ var old = $.fn.dropdown
133
+
134
+ $.fn.dropdown = function (option) {
135
+ return this.each(function () {
136
+ var $this = $(this)
137
+ , data = $this.data('dropdown')
138
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
139
+ if (typeof option == 'string') data[option].call($this)
140
+ })
141
+ }
142
+
143
+ $.fn.dropdown.Constructor = Dropdown
144
+
145
+
146
+ /* DROPDOWN NO CONFLICT
147
+ * ==================== */
148
+
149
+ $.fn.dropdown.noConflict = function () {
150
+ $.fn.dropdown = old
151
+ return this
152
+ }
153
+
154
+
155
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
156
+ * =================================== */
157
+
158
+ $(document)
159
+ .on('click.dropdown.data-api', clearMenus)
160
+ .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
161
+ .on('click.dropdown-menu', function (e) { e.stopPropagation() })
162
+ .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
163
+ .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
164
+
165
+ }(window.jQuery);
@@ -0,0 +1,169 @@
1
+ /* ===========================================================
2
+ * bootstrap-fileupload.js j2
3
+ * http://jasny.github.com/bootstrap/javascript.html#fileupload
4
+ * ===========================================================
5
+ * Copyright 2012 Jasny BV, Netherlands.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License")
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * ========================================================== */
19
+
20
+ !function ($) {
21
+
22
+ "use strict"; // jshint ;_
23
+
24
+ /* FILEUPLOAD PUBLIC CLASS DEFINITION
25
+ * ================================= */
26
+
27
+ var Fileupload = function (element, options) {
28
+ this.$element = $(element)
29
+ this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? "image" : "file")
30
+
31
+ this.$input = this.$element.find(':file')
32
+ if (this.$input.length === 0) return
33
+
34
+ this.name = this.$input.attr('name') || options.name
35
+
36
+ this.$hidden = this.$element.find('input[type=hidden][name="'+this.name+'"]')
37
+ if (this.$hidden.length === 0) {
38
+ this.$hidden = $('<input type="hidden" />')
39
+ this.$element.prepend(this.$hidden)
40
+ }
41
+
42
+ this.$preview = this.$element.find('.fileupload-preview')
43
+ var height = this.$preview.css('height')
44
+ if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height)
45
+
46
+ this.original = {
47
+ 'exists': this.$element.hasClass('fileupload-exists'),
48
+ 'preview': this.$preview.html(),
49
+ 'hiddenVal': this.$hidden.val()
50
+ }
51
+
52
+ this.$remove = this.$element.find('[data-dismiss="fileupload"]')
53
+
54
+ this.$element.find('[data-trigger="fileupload"]').on('click.fileupload', $.proxy(this.trigger, this))
55
+
56
+ this.listen()
57
+ }
58
+
59
+ Fileupload.prototype = {
60
+
61
+ listen: function() {
62
+ this.$input.on('change.fileupload', $.proxy(this.change, this))
63
+ $(this.$input[0].form).on('reset.fileupload', $.proxy(this.reset, this))
64
+ if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this))
65
+ },
66
+
67
+ change: function(e, invoked) {
68
+ if (invoked === 'clear') return
69
+
70
+ var file = e.target.files !== undefined ? e.target.files[0] : (e.target.value ? { name: e.target.value.replace(/^.+\\/, '') } : null)
71
+
72
+ if (!file) {
73
+ this.clear()
74
+ return
75
+ }
76
+
77
+ this.$hidden.val('')
78
+ this.$hidden.attr('name', '')
79
+ this.$input.attr('name', this.name)
80
+
81
+ if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") {
82
+ var reader = new FileReader()
83
+ var preview = this.$preview
84
+ var element = this.$element
85
+
86
+ reader.onload = function(e) {
87
+ preview.html('<img src="' + e.target.result + '" ' + (preview.css('max-height') != 'none' ? 'style="max-height: ' + preview.css('max-height') + ';"' : '') + ' />')
88
+ element.addClass('fileupload-exists').removeClass('fileupload-new')
89
+ }
90
+
91
+ reader.readAsDataURL(file)
92
+ } else {
93
+ this.$preview.text(file.name)
94
+ this.$element.addClass('fileupload-exists').removeClass('fileupload-new')
95
+ }
96
+ },
97
+
98
+ clear: function(e) {
99
+ this.$hidden.val('')
100
+ this.$hidden.attr('name', this.name)
101
+ this.$input.attr('name', '')
102
+
103
+ //ie8+ doesn't support changing the value of input with type=file so clone instead
104
+ if (navigator.userAgent.match(/msie/i)){
105
+ var inputClone = this.$input.clone(true);
106
+ this.$input.after(inputClone);
107
+ this.$input.remove();
108
+ this.$input = inputClone;
109
+ }else{
110
+ this.$input.val('')
111
+ }
112
+
113
+ this.$preview.html('')
114
+ this.$element.addClass('fileupload-new').removeClass('fileupload-exists')
115
+
116
+ if (e) {
117
+ this.$input.trigger('change', [ 'clear' ])
118
+ e.preventDefault()
119
+ }
120
+ },
121
+
122
+ reset: function(e) {
123
+ this.clear()
124
+
125
+ this.$hidden.val(this.original.hiddenVal)
126
+ this.$preview.html(this.original.preview)
127
+
128
+ if (this.original.exists) this.$element.addClass('fileupload-exists').removeClass('fileupload-new')
129
+ else this.$element.addClass('fileupload-new').removeClass('fileupload-exists')
130
+ },
131
+
132
+ trigger: function(e) {
133
+ this.$input.trigger('click')
134
+ e.preventDefault()
135
+ }
136
+ }
137
+
138
+
139
+ /* FILEUPLOAD PLUGIN DEFINITION
140
+ * =========================== */
141
+
142
+ $.fn.fileupload = function (options) {
143
+ return this.each(function () {
144
+ var $this = $(this)
145
+ , data = $this.data('fileupload')
146
+ if (!data) $this.data('fileupload', (data = new Fileupload(this, options)))
147
+ if (typeof options == 'string') data[options]()
148
+ })
149
+ }
150
+
151
+ $.fn.fileupload.Constructor = Fileupload
152
+
153
+
154
+ /* FILEUPLOAD DATA-API
155
+ * ================== */
156
+
157
+ $(document).on('click.fileupload.data-api', '[data-provides="fileupload"]', function (e) {
158
+ var $this = $(this)
159
+ if ($this.data('fileupload')) return
160
+ $this.fileupload($this.data())
161
+
162
+ var $target = $(e.target).closest('[data-dismiss="fileupload"],[data-trigger="fileupload"]');
163
+ if ($target.length > 0) {
164
+ $target.trigger('click.fileupload')
165
+ e.preventDefault()
166
+ }
167
+ })
168
+
169
+ }(window.jQuery);