jinda_adminlte 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/lib/generators/jinda_adminlte/install_generator.rb +44 -0
  3. data/lib/generators/jinda_adminlte/templates/adminltes_controller.rb +2 -0
  4. data/lib/generators/jinda_adminlte/templates/app/assets/bootstrap.css.map +1 -0
  5. data/lib/generators/jinda_adminlte/templates/app/assets/javascripts/popper.min.js +4 -0
  6. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/AdminLTE.min.css +7 -0
  7. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/adminlte.min.js +14 -0
  8. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/bootstrap.min.css +6 -0
  9. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/bootstrap.min.css.map +1 -0
  10. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/bootstrap.min.js +7 -0
  11. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/AdminLTE.css +5673 -0
  12. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/AdminLTE.min.css +7 -0
  13. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/adminlte.css.map +140 -0
  14. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/adminlte.min.css.map +140 -0
  15. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/alt/AdminLTE-bootstrap-social.css +760 -0
  16. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/alt/AdminLTE-bootstrap-social.min.css +1 -0
  17. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/alt/AdminLTE-fullcalendar.css +93 -0
  18. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/alt/AdminLTE-fullcalendar.min.css +1 -0
  19. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/alt/AdminLTE-select2.css +100 -0
  20. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/alt/AdminLTE-select2.min.css +1 -0
  21. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/alt/AdminLTE-without-plugins.css +4002 -0
  22. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/alt/AdminLTE-without-plugins.min.css +7 -0
  23. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/_all-skins.css +1781 -0
  24. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/_all-skins.min.css +1 -0
  25. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-black-light.css +171 -0
  26. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-black-light.min.css +1 -0
  27. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-black.css +161 -0
  28. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-black.min.css +1 -0
  29. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-blue-light.css +163 -0
  30. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-blue-light.min.css +1 -0
  31. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-blue.css +142 -0
  32. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-blue.min.css +1 -0
  33. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-green-light.css +152 -0
  34. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-green-light.min.css +1 -0
  35. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-green.css +134 -0
  36. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-green.min.css +1 -0
  37. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-purple-light.css +152 -0
  38. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-purple-light.min.css +1 -0
  39. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-purple.css +134 -0
  40. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-purple.min.css +1 -0
  41. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-red-light.css +152 -0
  42. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-red-light.min.css +1 -0
  43. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-red.css +134 -0
  44. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-red.min.css +1 -0
  45. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-yellow-light.css +152 -0
  46. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-yellow-light.min.css +1 -0
  47. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-yellow.css +134 -0
  48. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/css/skins/skin-yellow.min.css +1 -0
  49. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/avatar.png +0 -0
  50. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/avatar04.png +0 -0
  51. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/avatar2.png +0 -0
  52. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/avatar3.png +0 -0
  53. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/avatar5.png +0 -0
  54. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/boxed-bg.jpg +0 -0
  55. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/boxed-bg.png +0 -0
  56. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/credit/american-express.png +0 -0
  57. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/credit/cirrus.png +0 -0
  58. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/credit/mastercard.png +0 -0
  59. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/credit/mestro.png +0 -0
  60. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/credit/paypal.png +0 -0
  61. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/credit/paypal2.png +0 -0
  62. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/credit/visa.png +0 -0
  63. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/default-50x50.gif +0 -0
  64. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/icons.png +0 -0
  65. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/photo1.png +0 -0
  66. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/photo2.png +0 -0
  67. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/photo3.jpg +0 -0
  68. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/photo4.jpg +0 -0
  69. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/user1-128x128.jpg +0 -0
  70. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/user2-160x160.jpg +0 -0
  71. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/user3-128x128.jpg +0 -0
  72. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/user4-128x128.jpg +0 -0
  73. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/user5-128x128.jpg +0 -0
  74. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/user6-128x128.jpg +0 -0
  75. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/user7-128x128.jpg +0 -0
  76. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/img/user8-128x128.jpg +0 -0
  77. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/js/adminlte.js +1127 -0
  78. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/js/adminlte.min.js +14 -0
  79. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/js/demo.js +349 -0
  80. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/js/pages/dashboard.js +210 -0
  81. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/dist/js/pages/dashboard2.js +274 -0
  82. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/ionicons.min.css +11 -0
  83. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/jquery-ui.min.js +13 -0
  84. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/popper.min.js +4 -0
  85. data/lib/generators/jinda_adminlte/templates/app/assets/jinda_assets/skins/_all-skins.min.css +1 -0
  86. data/lib/generators/jinda_adminlte/templates/app/controllers/adminltes_controller.rb +6 -0
  87. data/lib/generators/jinda_adminlte/templates/app/index.mm +180 -0
  88. data/lib/generators/jinda_adminlte/templates/app/views/adminltes/dashboard1.haml +461 -0
  89. data/lib/generators/jinda_adminlte/templates/app/views/adminltes/dashboard2.haml +656 -0
  90. data/lib/generators/jinda_adminlte/templates/app/views/articles/edit.haml +12 -0
  91. data/lib/generators/jinda_adminlte/templates/app/views/articles/edit_article/edit_article.html.erb +13 -0
  92. data/lib/generators/jinda_adminlte/templates/app/views/articles/edit_article/select_article.html.erb +12 -0
  93. data/lib/generators/jinda_adminlte/templates/app/views/articles/index.haml +23 -0
  94. data/lib/generators/jinda_adminlte/templates/app/views/articles/my.haml +55 -0
  95. data/lib/generators/jinda_adminlte/templates/app/views/articles/new_article/form_article.html.erb +15 -0
  96. data/lib/generators/jinda_adminlte/templates/app/views/articles/show.html.haml +24 -0
  97. data/lib/generators/jinda_adminlte/templates/app/views/articles/xedit_article/edit_article.html.erb +13 -0
  98. data/lib/generators/jinda_adminlte/templates/app/views/articles/xedit_article/xedit_article.html.erb +11 -0
  99. data/lib/generators/jinda_adminlte/templates/app/views/layouts/lte/_footer.haml +7 -0
  100. data/lib/generators/jinda_adminlte/templates/app/views/layouts/lte/_header.haml +100 -0
  101. data/lib/generators/jinda_adminlte/templates/app/views/layouts/lte/_layout.haml +2 -0
  102. data/lib/generators/jinda_adminlte/templates/app/views/layouts/lte/_menu.haml +45 -0
  103. data/lib/generators/jinda_adminlte/templates/app/views/layouts/lte/_menu_mm.haml +36 -0
  104. data/lib/generators/jinda_adminlte/templates/app/views/layouts/lte/_rightbar.haml +123 -0
  105. data/lib/generators/jinda_adminlte/templates/app/views/layouts/lte/_sidebar.haml +152 -0
  106. data/lib/generators/jinda_adminlte/templates/application.css.scss +22 -0
  107. data/lib/generators/jinda_adminlte/templates/application.haml +65 -0
  108. data/lib/generators/jinda_adminlte/templates/application.js +15 -0
  109. data/lib/generators/jinda_adminlte/templates/index.mm +184 -0
  110. data/lib/generators/jinda_adminlte/templates/jindalte.css.scss +30 -0
  111. data/lib/generators/jinda_adminlte/templates/jindalte.js +30 -0
  112. data/lib/jinda_adminlte/version.rb +3 -0
  113. data/lib/jinda_adminlte.rb +6 -0
  114. metadata +198 -0
@@ -0,0 +1,1127 @@
1
+ /*! AdminLTE app.js
2
+ * ================
3
+ * Main JS application file for AdminLTE v2. This file
4
+ * should be included in all pages. It controls some layout
5
+ * options and implements exclusive AdminLTE plugins.
6
+ *
7
+ * @Author Almsaeed Studio
8
+ * @Support <https://www.almsaeedstudio.com>
9
+ * @Email <abdullah@almsaeedstudio.com>
10
+ * @version 2.4.0
11
+ * @repository git://github.com/almasaeed2010/AdminLTE.git
12
+ * @license MIT <http://opensource.org/licenses/MIT>
13
+ */
14
+
15
+ // Make sure jQuery has been loaded
16
+ if (typeof jQuery === 'undefined') {
17
+ throw new Error('AdminLTE requires jQuery')
18
+ }
19
+
20
+ /* BoxRefresh()
21
+ * =========
22
+ * Adds AJAX content control to a box.
23
+ *
24
+ * @Usage: $('#my-box').boxRefresh(options)
25
+ * or add [data-widget="box-refresh"] to the box element
26
+ * Pass any option as data-option="value"
27
+ */
28
+ +function ($) {
29
+ 'use strict'
30
+
31
+ var DataKey = 'lte.boxrefresh'
32
+
33
+ var Default = {
34
+ source : '',
35
+ params : {},
36
+ trigger : '.refresh-btn',
37
+ content : '.box-body',
38
+ loadInContent : true,
39
+ responseType : '',
40
+ overlayTemplate: '<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>',
41
+ onLoadStart : function () {
42
+ },
43
+ onLoadDone : function (response) {
44
+ return response
45
+ }
46
+ }
47
+
48
+ var Selector = {
49
+ data: '[data-widget="box-refresh"]'
50
+ }
51
+
52
+ // BoxRefresh Class Definition
53
+ // =========================
54
+ var BoxRefresh = function (element, options) {
55
+ this.element = element
56
+ this.options = options
57
+ this.$overlay = $(options.overlay)
58
+
59
+ if (options.source === '') {
60
+ throw new Error('Source url was not defined. Please specify a url in your BoxRefresh source option.')
61
+ }
62
+
63
+ this._setUpListeners()
64
+ this.load()
65
+ }
66
+
67
+ BoxRefresh.prototype.load = function () {
68
+ this._addOverlay()
69
+ this.options.onLoadStart.call($(this))
70
+
71
+ $.get(this.options.source, this.options.params, function (response) {
72
+ if (this.options.loadInContent) {
73
+ $(this.options.content).html(response)
74
+ }
75
+ this.options.onLoadDone.call($(this), response)
76
+ this._removeOverlay()
77
+ }.bind(this), this.options.responseType !== '' && this.options.responseType)
78
+ }
79
+
80
+ // Private
81
+
82
+ BoxRefresh.prototype._setUpListeners = function () {
83
+ $(this.element).on('click', Selector.trigger, function (event) {
84
+ if (event) event.preventDefault()
85
+ this.load()
86
+ }.bind(this))
87
+ }
88
+
89
+ BoxRefresh.prototype._addOverlay = function () {
90
+ $(this.element).append(this.$overlay)
91
+ }
92
+
93
+ BoxRefresh.prototype._removeOverlay = function () {
94
+ $(this.element).remove(this.$overlay)
95
+ }
96
+
97
+ // Plugin Definition
98
+ // =================
99
+ function Plugin(option) {
100
+ return this.each(function () {
101
+ var $this = $(this)
102
+ var data = $this.data(DataKey)
103
+
104
+ if (!data) {
105
+ var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option)
106
+ $this.data(DataKey, (data = new BoxRefresh($this, options)))
107
+ }
108
+
109
+ if (typeof data == 'string') {
110
+ if (typeof data[option] == 'undefined') {
111
+ throw new Error('No method named ' + option)
112
+ }
113
+ data[option]()
114
+ }
115
+ })
116
+ }
117
+
118
+ var old = $.fn.boxRefresh
119
+
120
+ $.fn.boxRefresh = Plugin
121
+ $.fn.boxRefresh.Constructor = BoxRefresh
122
+
123
+ // No Conflict Mode
124
+ // ================
125
+ $.fn.boxRefresh.noConflict = function () {
126
+ $.fn.boxRefresh = old
127
+ return this
128
+ }
129
+
130
+ // BoxRefresh Data API
131
+ // =================
132
+ $(window).on('load', function () {
133
+ $(Selector.data).each(function () {
134
+ Plugin.call($(this))
135
+ })
136
+ })
137
+
138
+ }(jQuery)
139
+
140
+
141
+ /* BoxWidget()
142
+ * ======
143
+ * Adds box widget functions to boxes.
144
+ *
145
+ * @Usage: $('.my-box').boxWidget(options)
146
+ * This plugin auto activates on any element using the `.box` class
147
+ * Pass any option as data-option="value"
148
+ */
149
+ +function ($) {
150
+ 'use strict'
151
+
152
+ var DataKey = 'lte.boxwidget'
153
+
154
+ var Default = {
155
+ animationSpeed : 500,
156
+ collapseTrigger: '[data-widget="collapse"]',
157
+ removeTrigger : '[data-widget="remove"]',
158
+ collapseIcon : 'fa-minus',
159
+ expandIcon : 'fa-plus',
160
+ removeIcon : 'fa-times'
161
+ }
162
+
163
+ var Selector = {
164
+ data : '.box',
165
+ collapsed: '.collapsed-box',
166
+ body : '.box-body',
167
+ footer : '.box-footer',
168
+ tools : '.box-tools'
169
+ }
170
+
171
+ var ClassName = {
172
+ collapsed: 'collapsed-box'
173
+ }
174
+
175
+ var Event = {
176
+ collapsed: 'collapsed.boxwidget',
177
+ expanded : 'expanded.boxwidget',
178
+ removed : 'removed.boxwidget'
179
+ }
180
+
181
+ // BoxWidget Class Definition
182
+ // =====================
183
+ var BoxWidget = function (element, options) {
184
+ this.element = element
185
+ this.options = options
186
+
187
+ this._setUpListeners()
188
+ }
189
+
190
+ BoxWidget.prototype.toggle = function () {
191
+ var isOpen = !$(this.element).is(Selector.collapsed)
192
+
193
+ if (isOpen) {
194
+ this.collapse()
195
+ } else {
196
+ this.expand()
197
+ }
198
+ }
199
+
200
+ BoxWidget.prototype.expand = function () {
201
+ var expandedEvent = $.Event(Event.expanded)
202
+ var collapseIcon = this.options.collapseIcon
203
+ var expandIcon = this.options.expandIcon
204
+
205
+ $(this.element).removeClass(ClassName.collapsed)
206
+
207
+ $(this.element)
208
+ .find(Selector.tools)
209
+ .find('.' + expandIcon)
210
+ .removeClass(expandIcon)
211
+ .addClass(collapseIcon)
212
+
213
+ $(this.element).find(Selector.body + ', ' + Selector.footer)
214
+ .slideDown(this.options.animationSpeed, function () {
215
+ $(this.element).trigger(expandedEvent)
216
+ }.bind(this))
217
+ }
218
+
219
+ BoxWidget.prototype.collapse = function () {
220
+ var collapsedEvent = $.Event(Event.collapsed)
221
+ var collapseIcon = this.options.collapseIcon
222
+ var expandIcon = this.options.expandIcon
223
+
224
+ $(this.element)
225
+ .find(Selector.tools)
226
+ .find('.' + collapseIcon)
227
+ .removeClass(collapseIcon)
228
+ .addClass(expandIcon)
229
+
230
+ $(this.element).find(Selector.body + ', ' + Selector.footer)
231
+ .slideUp(this.options.animationSpeed, function () {
232
+ $(this.element).addClass(ClassName.collapsed)
233
+ $(this.element).trigger(collapsedEvent)
234
+ }.bind(this))
235
+ }
236
+
237
+ BoxWidget.prototype.remove = function () {
238
+ var removedEvent = $.Event(Event.removed)
239
+
240
+ $(this.element).slideUp(this.options.animationSpeed, function () {
241
+ $(this.element).trigger(removedEvent)
242
+ $(this.element).remove()
243
+ }.bind(this))
244
+ }
245
+
246
+ // Private
247
+
248
+ BoxWidget.prototype._setUpListeners = function () {
249
+ var that = this
250
+
251
+ $(this.element).on('click', this.options.collapseTrigger, function (event) {
252
+ if (event) event.preventDefault()
253
+ that.toggle()
254
+ })
255
+
256
+ $(this.element).on('click', this.options.removeTrigger, function (event) {
257
+ if (event) event.preventDefault()
258
+ that.remove()
259
+ })
260
+ }
261
+
262
+ // Plugin Definition
263
+ // =================
264
+ function Plugin(option) {
265
+ return this.each(function () {
266
+ var $this = $(this)
267
+ var data = $this.data(DataKey)
268
+
269
+ if (!data) {
270
+ var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option)
271
+ $this.data(DataKey, (data = new BoxWidget($this, options)))
272
+ }
273
+
274
+ if (typeof option == 'string') {
275
+ if (typeof data[option] == 'undefined') {
276
+ throw new Error('No method named ' + option)
277
+ }
278
+ data[option]()
279
+ }
280
+ })
281
+ }
282
+
283
+ var old = $.fn.boxWidget
284
+
285
+ $.fn.boxWidget = Plugin
286
+ $.fn.boxWidget.Constructor = BoxWidget
287
+
288
+ // No Conflict Mode
289
+ // ================
290
+ $.fn.boxWidget.noConflict = function () {
291
+ $.fn.boxWidget = old
292
+ return this
293
+ }
294
+
295
+ // BoxWidget Data API
296
+ // ==================
297
+ $(window).on('load', function () {
298
+ $(Selector.data).each(function () {
299
+ Plugin.call($(this))
300
+ })
301
+ })
302
+
303
+ }(jQuery)
304
+
305
+
306
+ /* ControlSidebar()
307
+ * ===============
308
+ * Toggles the state of the control sidebar
309
+ *
310
+ * @Usage: $('#control-sidebar-trigger').controlSidebar(options)
311
+ * or add [data-toggle="control-sidebar"] to the trigger
312
+ * Pass any option as data-option="value"
313
+ */
314
+ +function ($) {
315
+ 'use strict'
316
+
317
+ var DataKey = 'lte.controlsidebar'
318
+
319
+ var Default = {
320
+ slide: true
321
+ }
322
+
323
+ var Selector = {
324
+ sidebar: '.control-sidebar',
325
+ data : '[data-toggle="control-sidebar"]',
326
+ open : '.control-sidebar-open',
327
+ bg : '.control-sidebar-bg',
328
+ wrapper: '.wrapper',
329
+ content: '.content-wrapper',
330
+ boxed : '.layout-boxed'
331
+ }
332
+
333
+ var ClassName = {
334
+ open : 'control-sidebar-open',
335
+ fixed: 'fixed'
336
+ }
337
+
338
+ var Event = {
339
+ collapsed: 'collapsed.controlsidebar',
340
+ expanded : 'expanded.controlsidebar'
341
+ }
342
+
343
+ // ControlSidebar Class Definition
344
+ // ===============================
345
+ var ControlSidebar = function (element, options) {
346
+ this.element = element
347
+ this.options = options
348
+ this.hasBindedResize = false
349
+
350
+ this.init()
351
+ }
352
+
353
+ ControlSidebar.prototype.init = function () {
354
+ // Add click listener if the element hasn't been
355
+ // initialized using the data API
356
+ if (!$(this.element).is(Selector.data)) {
357
+ $(this).on('click', this.toggle)
358
+ }
359
+
360
+ this.fix()
361
+ $(window).resize(function () {
362
+ this.fix()
363
+ }.bind(this))
364
+ }
365
+
366
+ ControlSidebar.prototype.toggle = function (event) {
367
+ if (event) event.preventDefault()
368
+
369
+ this.fix()
370
+
371
+ if (!$(Selector.sidebar).is(Selector.open) && !$('body').is(Selector.open)) {
372
+ this.expand()
373
+ } else {
374
+ this.collapse()
375
+ }
376
+ }
377
+
378
+ ControlSidebar.prototype.expand = function () {
379
+ if (!this.options.slide) {
380
+ $('body').addClass(ClassName.open)
381
+ } else {
382
+ $(Selector.sidebar).addClass(ClassName.open)
383
+ }
384
+
385
+ $(this.element).trigger($.Event(Event.expanded))
386
+ }
387
+
388
+ ControlSidebar.prototype.collapse = function () {
389
+ $('body, ' + Selector.sidebar).removeClass(ClassName.open)
390
+ $(this.element).trigger($.Event(Event.collapsed))
391
+ }
392
+
393
+ ControlSidebar.prototype.fix = function () {
394
+ if ($('body').is(Selector.boxed)) {
395
+ this._fixForBoxed($(Selector.bg))
396
+ }
397
+ }
398
+
399
+ // Private
400
+
401
+ ControlSidebar.prototype._fixForBoxed = function (bg) {
402
+ bg.css({
403
+ position: 'absolute',
404
+ height : $(Selector.wrapper).height()
405
+ })
406
+ }
407
+
408
+ // Plugin Definition
409
+ // =================
410
+ function Plugin(option) {
411
+ return this.each(function () {
412
+ var $this = $(this)
413
+ var data = $this.data(DataKey)
414
+
415
+ if (!data) {
416
+ var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option)
417
+ $this.data(DataKey, (data = new ControlSidebar($this, options)))
418
+ }
419
+
420
+ if (typeof option == 'string') data.toggle()
421
+ })
422
+ }
423
+
424
+ var old = $.fn.controlSidebar
425
+
426
+ $.fn.controlSidebar = Plugin
427
+ $.fn.controlSidebar.Constructor = ControlSidebar
428
+
429
+ // No Conflict Mode
430
+ // ================
431
+ $.fn.controlSidebar.noConflict = function () {
432
+ $.fn.controlSidebar = old
433
+ return this
434
+ }
435
+
436
+ // ControlSidebar Data API
437
+ // =======================
438
+ $(document).on('click', Selector.data, function (event) {
439
+ if (event) event.preventDefault()
440
+ Plugin.call($(this), 'toggle')
441
+ })
442
+
443
+ }(jQuery)
444
+
445
+
446
+ /* DirectChat()
447
+ * ===============
448
+ * Toggles the state of the control sidebar
449
+ *
450
+ * @Usage: $('#my-chat-box').directChat()
451
+ * or add [data-widget="direct-chat"] to the trigger
452
+ */
453
+ +function ($) {
454
+ 'use strict'
455
+
456
+ var DataKey = 'lte.directchat'
457
+
458
+ var Selector = {
459
+ data: '[data-widget="chat-pane-toggle"]',
460
+ box : '.direct-chat'
461
+ }
462
+
463
+ var ClassName = {
464
+ open: 'direct-chat-contacts-open'
465
+ }
466
+
467
+ // DirectChat Class Definition
468
+ // ===========================
469
+ var DirectChat = function (element) {
470
+ this.element = element
471
+ }
472
+
473
+ DirectChat.prototype.toggle = function ($trigger) {
474
+ $trigger.parents(Selector.box).first().toggleClass(ClassName.open)
475
+ }
476
+
477
+ // Plugin Definition
478
+ // =================
479
+ function Plugin(option) {
480
+ return this.each(function () {
481
+ var $this = $(this)
482
+ var data = $this.data(DataKey)
483
+
484
+ if (!data) {
485
+ $this.data(DataKey, (data = new DirectChat($this)))
486
+ }
487
+
488
+ if (typeof option == 'string') data.toggle($this)
489
+ })
490
+ }
491
+
492
+ var old = $.fn.directChat
493
+
494
+ $.fn.directChat = Plugin
495
+ $.fn.directChat.Constructor = DirectChat
496
+
497
+ // No Conflict Mode
498
+ // ================
499
+ $.fn.directChat.noConflict = function () {
500
+ $.fn.directChat = old
501
+ return this
502
+ }
503
+
504
+ // DirectChat Data API
505
+ // ===================
506
+ $(document).on('click', Selector.data, function (event) {
507
+ if (event) event.preventDefault()
508
+ Plugin.call($(this), 'toggle')
509
+ })
510
+
511
+ }(jQuery)
512
+
513
+
514
+ /* Layout()
515
+ * ========
516
+ * Implements AdminLTE layout.
517
+ * Fixes the layout height in case min-height fails.
518
+ *
519
+ * @usage activated automatically upon window load.
520
+ * Configure any options by passing data-option="value"
521
+ * to the body tag.
522
+ */
523
+ +function ($) {
524
+ 'use strict'
525
+
526
+ var DataKey = 'lte.layout'
527
+
528
+ var Default = {
529
+ slimscroll : true,
530
+ resetHeight: true
531
+ }
532
+
533
+ var Selector = {
534
+ wrapper : '.wrapper',
535
+ contentWrapper: '.content-wrapper',
536
+ layoutBoxed : '.layout-boxed',
537
+ mainFooter : '.main-footer',
538
+ mainHeader : '.main-header',
539
+ sidebar : '.sidebar',
540
+ controlSidebar: '.control-sidebar',
541
+ fixed : '.fixed',
542
+ sidebarMenu : '.sidebar-menu',
543
+ logo : '.main-header .logo'
544
+ }
545
+
546
+ var ClassName = {
547
+ fixed : 'fixed',
548
+ holdTransition: 'hold-transition'
549
+ }
550
+
551
+ var Layout = function (options) {
552
+ this.options = options
553
+ this.bindedResize = false
554
+ this.activate()
555
+ }
556
+
557
+ Layout.prototype.activate = function () {
558
+ this.fix()
559
+ this.fixSidebar()
560
+
561
+ $('body').removeClass(ClassName.holdTransition)
562
+
563
+ if (this.options.resetHeight) {
564
+ $('body, html, ' + Selector.wrapper).css({
565
+ 'height' : 'auto',
566
+ 'min-height': '100%'
567
+ })
568
+ }
569
+
570
+ if (!this.bindedResize) {
571
+ $(window).resize(function () {
572
+ this.fix()
573
+ this.fixSidebar()
574
+
575
+ $(Selector.logo + ', ' + Selector.sidebar).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function () {
576
+ this.fix()
577
+ this.fixSidebar()
578
+ }.bind(this))
579
+ }.bind(this))
580
+
581
+ this.bindedResize = true
582
+ }
583
+
584
+ $(Selector.sidebarMenu).on('expanded.tree', function () {
585
+ this.fix()
586
+ this.fixSidebar()
587
+ }.bind(this))
588
+
589
+ $(Selector.sidebarMenu).on('collapsed.tree', function () {
590
+ this.fix()
591
+ this.fixSidebar()
592
+ }.bind(this))
593
+ }
594
+
595
+ Layout.prototype.fix = function () {
596
+ // Remove overflow from .wrapper if layout-boxed exists
597
+ $(Selector.layoutBoxed + ' > ' + Selector.wrapper).css('overflow', 'hidden')
598
+
599
+ // Get window height and the wrapper height
600
+ var footerHeight = $(Selector.mainFooter).outerHeight() || 0
601
+ var neg = $(Selector.mainHeader).outerHeight() + footerHeight
602
+ var windowHeight = $(window).height()
603
+ var sidebarHeight = $(Selector.sidebar).height() || 0
604
+
605
+ // Set the min-height of the content and sidebar based on
606
+ // the height of the document.
607
+ if ($('body').hasClass(ClassName.fixed)) {
608
+ $(Selector.contentWrapper).css('min-height', windowHeight - footerHeight)
609
+ } else {
610
+ var postSetHeight
611
+
612
+ if (windowHeight >= sidebarHeight) {
613
+ $(Selector.contentWrapper).css('min-height', windowHeight - neg)
614
+ postSetHeight = windowHeight - neg
615
+ } else {
616
+ $(Selector.contentWrapper).css('min-height', sidebarHeight)
617
+ postSetHeight = sidebarHeight
618
+ }
619
+
620
+ // Fix for the control sidebar height
621
+ var $controlSidebar = $(Selector.controlSidebar)
622
+ if (typeof $controlSidebar !== 'undefined') {
623
+ if ($controlSidebar.height() > postSetHeight)
624
+ $(Selector.contentWrapper).css('min-height', $controlSidebar.height())
625
+ }
626
+ }
627
+ }
628
+
629
+ Layout.prototype.fixSidebar = function () {
630
+ // Make sure the body tag has the .fixed class
631
+ if (!$('body').hasClass(ClassName.fixed)) {
632
+ if (typeof $.fn.slimScroll !== 'undefined') {
633
+ $(Selector.sidebar).slimScroll({ destroy: true }).height('auto')
634
+ }
635
+ return
636
+ }
637
+
638
+ // Enable slimscroll for fixed layout
639
+ if (this.options.slimscroll) {
640
+ if (typeof $.fn.slimScroll !== 'undefined') {
641
+ // Destroy if it exists
642
+ // $(Selector.sidebar).slimScroll({ destroy: true }).height('auto')
643
+
644
+ // Add slimscroll
645
+ $(Selector.sidebar).slimScroll({
646
+ height: ($(window).height() - $(Selector.mainHeader).height()) + 'px',
647
+ color : 'rgba(0,0,0,0.2)',
648
+ size : '3px'
649
+ })
650
+ }
651
+ }
652
+ }
653
+
654
+ // Plugin Definition
655
+ // =================
656
+ function Plugin(option) {
657
+ return this.each(function () {
658
+ var $this = $(this)
659
+ var data = $this.data(DataKey)
660
+
661
+ if (!data) {
662
+ var options = $.extend({}, Default, $this.data(), typeof option === 'object' && option)
663
+ $this.data(DataKey, (data = new Layout(options)))
664
+ }
665
+
666
+ if (typeof option === 'string') {
667
+ if (typeof data[option] === 'undefined') {
668
+ throw new Error('No method named ' + option)
669
+ }
670
+ data[option]()
671
+ }
672
+ })
673
+ }
674
+
675
+ var old = $.fn.layout
676
+
677
+ $.fn.layout = Plugin
678
+ $.fn.layout.Constuctor = Layout
679
+
680
+ // No conflict mode
681
+ // ================
682
+ $.fn.layout.noConflict = function () {
683
+ $.fn.layout = old
684
+ return this
685
+ }
686
+
687
+ // Layout DATA-API
688
+ // ===============
689
+ $(window).on('load', function () {
690
+ Plugin.call($('body'))
691
+ })
692
+ }(jQuery)
693
+
694
+
695
+ /* PushMenu()
696
+ * ==========
697
+ * Adds the push menu functionality to the sidebar.
698
+ *
699
+ * @usage: $('.btn').pushMenu(options)
700
+ * or add [data-toggle="push-menu"] to any button
701
+ * Pass any option as data-option="value"
702
+ */
703
+ +function ($) {
704
+ 'use strict'
705
+
706
+ var DataKey = 'lte.pushmenu'
707
+
708
+ var Default = {
709
+ collapseScreenSize : 767,
710
+ expandOnHover : false,
711
+ expandTransitionDelay: 200
712
+ }
713
+
714
+ var Selector = {
715
+ collapsed : '.sidebar-collapse',
716
+ open : '.sidebar-open',
717
+ mainSidebar : '.main-sidebar',
718
+ contentWrapper: '.content-wrapper',
719
+ searchInput : '.sidebar-form .form-control',
720
+ button : '[data-toggle="push-menu"]',
721
+ mini : '.sidebar-mini',
722
+ expanded : '.sidebar-expanded-on-hover',
723
+ layoutFixed : '.fixed'
724
+ }
725
+
726
+ var ClassName = {
727
+ collapsed : 'sidebar-collapse',
728
+ open : 'sidebar-open',
729
+ mini : 'sidebar-mini',
730
+ expanded : 'sidebar-expanded-on-hover',
731
+ expandFeature: 'sidebar-mini-expand-feature',
732
+ layoutFixed : 'fixed'
733
+ }
734
+
735
+ var Event = {
736
+ expanded : 'expanded.pushMenu',
737
+ collapsed: 'collapsed.pushMenu'
738
+ }
739
+
740
+ // PushMenu Class Definition
741
+ // =========================
742
+ var PushMenu = function (options) {
743
+ this.options = options
744
+ this.init()
745
+ }
746
+
747
+ PushMenu.prototype.init = function () {
748
+ if (this.options.expandOnHover
749
+ || ($('body').is(Selector.mini + Selector.layoutFixed))) {
750
+ this.expandOnHover()
751
+ $('body').addClass(ClassName.expandFeature)
752
+ }
753
+
754
+ $(Selector.contentWrapper).click(function () {
755
+ // Enable hide menu when clicking on the content-wrapper on small screens
756
+ if ($(window).width() <= this.options.collapseScreenSize && $('body').hasClass(ClassName.open)) {
757
+ this.close()
758
+ }
759
+ }.bind(this))
760
+
761
+ // __Fix for android devices
762
+ $(Selector.searchInput).click(function (e) {
763
+ e.stopPropagation()
764
+ })
765
+ }
766
+
767
+ PushMenu.prototype.toggle = function () {
768
+ var windowWidth = $(window).width()
769
+ var isOpen = !$('body').hasClass(ClassName.collapsed)
770
+
771
+ if (windowWidth <= this.options.collapseScreenSize) {
772
+ isOpen = $('body').hasClass(ClassName.open)
773
+ }
774
+
775
+ if (!isOpen) {
776
+ this.open()
777
+ } else {
778
+ this.close()
779
+ }
780
+ }
781
+
782
+ PushMenu.prototype.open = function () {
783
+ var windowWidth = $(window).width()
784
+
785
+ if (windowWidth > this.options.collapseScreenSize) {
786
+ $('body').removeClass(ClassName.collapsed)
787
+ .trigger($.Event(Event.expanded))
788
+ }
789
+ else {
790
+ $('body').addClass(ClassName.open)
791
+ .trigger($.Event(Event.expanded))
792
+ }
793
+ }
794
+
795
+ PushMenu.prototype.close = function () {
796
+ var windowWidth = $(window).width()
797
+ if (windowWidth > this.options.collapseScreenSize) {
798
+ $('body').addClass(ClassName.collapsed)
799
+ .trigger($.Event(Event.collapsed))
800
+ } else {
801
+ $('body').removeClass(ClassName.open + ' ' + ClassName.collapsed)
802
+ .trigger($.Event(Event.collapsed))
803
+ }
804
+ }
805
+
806
+ PushMenu.prototype.expandOnHover = function () {
807
+ $(Selector.mainSidebar).hover(function () {
808
+ if ($('body').is(Selector.mini + Selector.collapsed)
809
+ && $(window).width() > this.options.collapseScreenSize) {
810
+ this.expand()
811
+ }
812
+ }.bind(this), function () {
813
+ if ($('body').is(Selector.expanded)) {
814
+ this.collapse()
815
+ }
816
+ }.bind(this))
817
+ }
818
+
819
+ PushMenu.prototype.expand = function () {
820
+ setTimeout(function () {
821
+ $('body').removeClass(ClassName.collapsed)
822
+ .addClass(ClassName.expanded)
823
+ }, this.options.expandTransitionDelay)
824
+ }
825
+
826
+ PushMenu.prototype.collapse = function () {
827
+ setTimeout(function () {
828
+ $('body').removeClass(ClassName.expanded)
829
+ .addClass(ClassName.collapsed)
830
+ }, this.options.expandTransitionDelay)
831
+ }
832
+
833
+ // PushMenu Plugin Definition
834
+ // ==========================
835
+ function Plugin(option) {
836
+ return this.each(function () {
837
+ var $this = $(this)
838
+ var data = $this.data(DataKey)
839
+
840
+ if (!data) {
841
+ var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option)
842
+ $this.data(DataKey, (data = new PushMenu(options)))
843
+ }
844
+
845
+ if (option === 'toggle') data.toggle()
846
+ })
847
+ }
848
+
849
+ var old = $.fn.pushMenu
850
+
851
+ $.fn.pushMenu = Plugin
852
+ $.fn.pushMenu.Constructor = PushMenu
853
+
854
+ // No Conflict Mode
855
+ // ================
856
+ $.fn.pushMenu.noConflict = function () {
857
+ $.fn.pushMenu = old
858
+ return this
859
+ }
860
+
861
+ // Data API
862
+ // ========
863
+ $(document).on('click', Selector.button, function (e) {
864
+ e.preventDefault()
865
+ Plugin.call($(this), 'toggle')
866
+ })
867
+ $(window).on('load', function () {
868
+ Plugin.call($(Selector.button))
869
+ })
870
+ }(jQuery)
871
+
872
+
873
+ /* TodoList()
874
+ * =========
875
+ * Converts a list into a todoList.
876
+ *
877
+ * @Usage: $('.my-list').todoList(options)
878
+ * or add [data-widget="todo-list"] to the ul element
879
+ * Pass any option as data-option="value"
880
+ */
881
+ +function ($) {
882
+ 'use strict'
883
+
884
+ var DataKey = 'lte.todolist'
885
+
886
+ var Default = {
887
+ onCheck : function (item) {
888
+ return item
889
+ },
890
+ onUnCheck: function (item) {
891
+ return item
892
+ }
893
+ }
894
+
895
+ var Selector = {
896
+ data: '[data-widget="todo-list"]'
897
+ }
898
+
899
+ var ClassName = {
900
+ done: 'done'
901
+ }
902
+
903
+ // TodoList Class Definition
904
+ // =========================
905
+ var TodoList = function (element, options) {
906
+ this.element = element
907
+ this.options = options
908
+
909
+ this._setUpListeners()
910
+ }
911
+
912
+ TodoList.prototype.toggle = function (item) {
913
+ item.parents(Selector.li).first().toggleClass(ClassName.done)
914
+ if (!item.prop('checked')) {
915
+ this.unCheck(item)
916
+ return
917
+ }
918
+
919
+ this.check(item)
920
+ }
921
+
922
+ TodoList.prototype.check = function (item) {
923
+ this.options.onCheck.call(item)
924
+ }
925
+
926
+ TodoList.prototype.unCheck = function (item) {
927
+ this.options.onUnCheck.call(item)
928
+ }
929
+
930
+ // Private
931
+
932
+ TodoList.prototype._setUpListeners = function () {
933
+ var that = this
934
+ $(this.element).on('change ifChanged', 'input:checkbox', function () {
935
+ that.toggle($(this))
936
+ })
937
+ }
938
+
939
+ // Plugin Definition
940
+ // =================
941
+ function Plugin(option) {
942
+ return this.each(function () {
943
+ var $this = $(this)
944
+ var data = $this.data(DataKey)
945
+
946
+ if (!data) {
947
+ var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option)
948
+ $this.data(DataKey, (data = new TodoList($this, options)))
949
+ }
950
+
951
+ if (typeof data == 'string') {
952
+ if (typeof data[option] == 'undefined') {
953
+ throw new Error('No method named ' + option)
954
+ }
955
+ data[option]()
956
+ }
957
+ })
958
+ }
959
+
960
+ var old = $.fn.todoList
961
+
962
+ $.fn.todoList = Plugin
963
+ $.fn.todoList.Constructor = TodoList
964
+
965
+ // No Conflict Mode
966
+ // ================
967
+ $.fn.todoList.noConflict = function () {
968
+ $.fn.todoList = old
969
+ return this
970
+ }
971
+
972
+ // TodoList Data API
973
+ // =================
974
+ $(window).on('load', function () {
975
+ $(Selector.data).each(function () {
976
+ Plugin.call($(this))
977
+ })
978
+ })
979
+
980
+ }(jQuery)
981
+
982
+
983
+ /* Tree()
984
+ * ======
985
+ * Converts a nested list into a multilevel
986
+ * tree view menu.
987
+ *
988
+ * @Usage: $('.my-menu').tree(options)
989
+ * or add [data-widget="tree"] to the ul element
990
+ * Pass any option as data-option="value"
991
+ */
992
+ +function ($) {
993
+ 'use strict'
994
+
995
+ var DataKey = 'lte.tree'
996
+
997
+ var Default = {
998
+ animationSpeed: 500,
999
+ accordion : true,
1000
+ followLink : false,
1001
+ trigger : '.treeview a'
1002
+ }
1003
+
1004
+ var Selector = {
1005
+ tree : '.tree',
1006
+ treeview : '.treeview',
1007
+ treeviewMenu: '.treeview-menu',
1008
+ open : '.menu-open, .active',
1009
+ li : 'li',
1010
+ data : '[data-widget="tree"]',
1011
+ active : '.active'
1012
+ }
1013
+
1014
+ var ClassName = {
1015
+ open: 'menu-open',
1016
+ tree: 'tree'
1017
+ }
1018
+
1019
+ var Event = {
1020
+ collapsed: 'collapsed.tree',
1021
+ expanded : 'expanded.tree'
1022
+ }
1023
+
1024
+ // Tree Class Definition
1025
+ // =====================
1026
+ var Tree = function (element, options) {
1027
+ this.element = element
1028
+ this.options = options
1029
+
1030
+ $(this.element).addClass(ClassName.tree)
1031
+
1032
+ $(Selector.treeview + Selector.active, this.element).addClass(ClassName.open)
1033
+
1034
+ this._setUpListeners()
1035
+ }
1036
+
1037
+ Tree.prototype.toggle = function (link, event) {
1038
+ var treeviewMenu = link.next(Selector.treeviewMenu)
1039
+ var parentLi = link.parent()
1040
+ var isOpen = parentLi.hasClass(ClassName.open)
1041
+
1042
+ if (!parentLi.is(Selector.treeview)) {
1043
+ return
1044
+ }
1045
+
1046
+ if (!this.options.followLink || link.attr('href') === '#') {
1047
+ event.preventDefault()
1048
+ }
1049
+
1050
+ if (isOpen) {
1051
+ this.collapse(treeviewMenu, parentLi)
1052
+ } else {
1053
+ this.expand(treeviewMenu, parentLi)
1054
+ }
1055
+ }
1056
+
1057
+ Tree.prototype.expand = function (tree, parent) {
1058
+ var expandedEvent = $.Event(Event.expanded)
1059
+
1060
+ if (this.options.accordion) {
1061
+ var openMenuLi = parent.siblings(Selector.open)
1062
+ var openTree = openMenuLi.children(Selector.treeviewMenu)
1063
+ this.collapse(openTree, openMenuLi)
1064
+ }
1065
+
1066
+ parent.addClass(ClassName.open)
1067
+ tree.slideDown(this.options.animationSpeed, function () {
1068
+ $(this.element).trigger(expandedEvent)
1069
+ }.bind(this))
1070
+ }
1071
+
1072
+ Tree.prototype.collapse = function (tree, parentLi) {
1073
+ var collapsedEvent = $.Event(Event.collapsed)
1074
+
1075
+ tree.find(Selector.open).removeClass(ClassName.open)
1076
+ parentLi.removeClass(ClassName.open)
1077
+ tree.slideUp(this.options.animationSpeed, function () {
1078
+ tree.find(Selector.open + ' > ' + Selector.treeview).slideUp()
1079
+ $(this.element).trigger(collapsedEvent)
1080
+ }.bind(this))
1081
+ }
1082
+
1083
+ // Private
1084
+
1085
+ Tree.prototype._setUpListeners = function () {
1086
+ var that = this
1087
+
1088
+ $(this.element).on('click', this.options.trigger, function (event) {
1089
+ that.toggle($(this), event)
1090
+ })
1091
+ }
1092
+
1093
+ // Plugin Definition
1094
+ // =================
1095
+ function Plugin(option) {
1096
+ return this.each(function () {
1097
+ var $this = $(this)
1098
+ var data = $this.data(DataKey)
1099
+
1100
+ if (!data) {
1101
+ var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option)
1102
+ $this.data(DataKey, new Tree($this, options))
1103
+ }
1104
+ })
1105
+ }
1106
+
1107
+ var old = $.fn.tree
1108
+
1109
+ $.fn.tree = Plugin
1110
+ $.fn.tree.Constructor = Tree
1111
+
1112
+ // No Conflict Mode
1113
+ // ================
1114
+ $.fn.tree.noConflict = function () {
1115
+ $.fn.tree = old
1116
+ return this
1117
+ }
1118
+
1119
+ // Tree Data API
1120
+ // =============
1121
+ $(window).on('load', function () {
1122
+ $(Selector.data).each(function () {
1123
+ Plugin.call($(this))
1124
+ })
1125
+ })
1126
+
1127
+ }(jQuery)