jinda_adminlte 0.6.0 → 0.7.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/bootstrap.css.map +1 -0
  3. data/app/assets/javascripts/jindalte.js +9 -0
  4. data/app/assets/javascripts/popper.min.js +4 -0
  5. data/app/assets/jinda_assets/AdminLTE.min.css +7 -0
  6. data/app/assets/jinda_assets/Chart.js +3477 -0
  7. data/app/assets/jinda_assets/adminlte.min.js +14 -0
  8. data/app/assets/jinda_assets/bootstrap-datepicker.min.css +7 -0
  9. data/app/assets/jinda_assets/bootstrap-datepicker.min.js +8 -0
  10. data/app/assets/jinda_assets/bootstrap.css +6759 -0
  11. data/app/assets/jinda_assets/bootstrap.min.css.map +1 -0
  12. data/app/assets/jinda_assets/bootstrap.min.js +7 -0
  13. data/app/assets/jinda_assets/bootstrap3-wysihtml5.all.js +14975 -0
  14. data/app/assets/jinda_assets/bootstrap3-wysihtml5.all.min.js +8 -0
  15. data/app/assets/jinda_assets/bootstrap3-wysihtml5.min.css +3 -0
  16. data/app/assets/jinda_assets/daterangepicker.css +269 -0
  17. data/app/assets/jinda_assets/daterangepicker.js +1626 -0
  18. data/app/assets/jinda_assets/daterangepicker.scss +611 -0
  19. data/app/assets/jinda_assets/dist/css/AdminLTE.css +5673 -0
  20. data/app/assets/jinda_assets/dist/css/AdminLTE.min.css +7 -0
  21. data/app/assets/jinda_assets/dist/css/adminlte.css.map +140 -0
  22. data/app/assets/jinda_assets/dist/css/adminlte.min.css.map +140 -0
  23. data/app/assets/jinda_assets/dist/css/alt/AdminLTE-bootstrap-social.css +760 -0
  24. data/app/assets/jinda_assets/dist/css/alt/AdminLTE-bootstrap-social.min.css +1 -0
  25. data/app/assets/jinda_assets/dist/css/alt/AdminLTE-fullcalendar.css +93 -0
  26. data/app/assets/jinda_assets/dist/css/alt/AdminLTE-fullcalendar.min.css +1 -0
  27. data/app/assets/jinda_assets/dist/css/alt/AdminLTE-select2.css +100 -0
  28. data/app/assets/jinda_assets/dist/css/alt/AdminLTE-select2.min.css +1 -0
  29. data/app/assets/jinda_assets/dist/css/alt/AdminLTE-without-plugins.css +4002 -0
  30. data/app/assets/jinda_assets/dist/css/alt/AdminLTE-without-plugins.min.css +7 -0
  31. data/app/assets/jinda_assets/dist/css/skins/_all-skins.css +1781 -0
  32. data/app/assets/jinda_assets/dist/css/skins/_all-skins.min.css +1 -0
  33. data/app/assets/jinda_assets/dist/css/skins/skin-black-light.css +171 -0
  34. data/app/assets/jinda_assets/dist/css/skins/skin-black-light.min.css +1 -0
  35. data/app/assets/jinda_assets/dist/css/skins/skin-black.css +161 -0
  36. data/app/assets/jinda_assets/dist/css/skins/skin-black.min.css +1 -0
  37. data/app/assets/jinda_assets/dist/css/skins/skin-blue-light.css +163 -0
  38. data/app/assets/jinda_assets/dist/css/skins/skin-blue-light.min.css +1 -0
  39. data/app/assets/jinda_assets/dist/css/skins/skin-blue.css +142 -0
  40. data/app/assets/jinda_assets/dist/css/skins/skin-blue.min.css +1 -0
  41. data/app/assets/jinda_assets/dist/css/skins/skin-green-light.css +152 -0
  42. data/app/assets/jinda_assets/dist/css/skins/skin-green-light.min.css +1 -0
  43. data/app/assets/jinda_assets/dist/css/skins/skin-green.css +134 -0
  44. data/app/assets/jinda_assets/dist/css/skins/skin-green.min.css +1 -0
  45. data/app/assets/jinda_assets/dist/css/skins/skin-purple-light.css +152 -0
  46. data/app/assets/jinda_assets/dist/css/skins/skin-purple-light.min.css +1 -0
  47. data/app/assets/jinda_assets/dist/css/skins/skin-purple.css +134 -0
  48. data/app/assets/jinda_assets/dist/css/skins/skin-purple.min.css +1 -0
  49. data/app/assets/jinda_assets/dist/css/skins/skin-red-light.css +152 -0
  50. data/app/assets/jinda_assets/dist/css/skins/skin-red-light.min.css +1 -0
  51. data/app/assets/jinda_assets/dist/css/skins/skin-red.css +134 -0
  52. data/app/assets/jinda_assets/dist/css/skins/skin-red.min.css +1 -0
  53. data/app/assets/jinda_assets/dist/css/skins/skin-yellow-light.css +152 -0
  54. data/app/assets/jinda_assets/dist/css/skins/skin-yellow-light.min.css +1 -0
  55. data/app/assets/jinda_assets/dist/css/skins/skin-yellow.css +134 -0
  56. data/app/assets/jinda_assets/dist/css/skins/skin-yellow.min.css +1 -0
  57. data/app/assets/jinda_assets/dist/img/avatar.png +0 -0
  58. data/app/assets/jinda_assets/dist/img/avatar04.png +0 -0
  59. data/app/assets/jinda_assets/dist/img/avatar2.png +0 -0
  60. data/app/assets/jinda_assets/dist/img/avatar3.png +0 -0
  61. data/app/assets/jinda_assets/dist/img/avatar5.png +0 -0
  62. data/app/assets/jinda_assets/dist/img/boxed-bg.jpg +0 -0
  63. data/app/assets/jinda_assets/dist/img/boxed-bg.png +0 -0
  64. data/app/assets/jinda_assets/dist/img/credit/american-express.png +0 -0
  65. data/app/assets/jinda_assets/dist/img/credit/cirrus.png +0 -0
  66. data/app/assets/jinda_assets/dist/img/credit/mastercard.png +0 -0
  67. data/app/assets/jinda_assets/dist/img/credit/mestro.png +0 -0
  68. data/app/assets/jinda_assets/dist/img/credit/paypal.png +0 -0
  69. data/app/assets/jinda_assets/dist/img/credit/paypal2.png +0 -0
  70. data/app/assets/jinda_assets/dist/img/credit/visa.png +0 -0
  71. data/app/assets/jinda_assets/dist/img/default-50x50.gif +0 -0
  72. data/app/assets/jinda_assets/dist/img/icons.png +0 -0
  73. data/app/assets/jinda_assets/dist/img/photo1.png +0 -0
  74. data/app/assets/jinda_assets/dist/img/photo2.png +0 -0
  75. data/app/assets/jinda_assets/dist/img/photo3.jpg +0 -0
  76. data/app/assets/jinda_assets/dist/img/photo4.jpg +0 -0
  77. data/app/assets/jinda_assets/dist/img/user1-128x128.jpg +0 -0
  78. data/app/assets/jinda_assets/dist/img/user2-160x160.jpg +0 -0
  79. data/app/assets/jinda_assets/dist/img/user3-128x128.jpg +0 -0
  80. data/app/assets/jinda_assets/dist/img/user4-128x128.jpg +0 -0
  81. data/app/assets/jinda_assets/dist/img/user5-128x128.jpg +0 -0
  82. data/app/assets/jinda_assets/dist/img/user6-128x128.jpg +0 -0
  83. data/app/assets/jinda_assets/dist/img/user7-128x128.jpg +0 -0
  84. data/app/assets/jinda_assets/dist/img/user8-128x128.jpg +0 -0
  85. data/app/assets/jinda_assets/dist/js/adminlte.js +1127 -0
  86. data/app/assets/jinda_assets/dist/js/adminlte.min.js +14 -0
  87. data/app/assets/jinda_assets/dist/js/demo.js +349 -0
  88. data/app/assets/jinda_assets/dist/js/pages/dashboard.js +210 -0
  89. data/app/assets/jinda_assets/dist/js/pages/dashboard2.js +274 -0
  90. data/app/assets/jinda_assets/fastclick.js +841 -0
  91. data/app/assets/jinda_assets/ionicons.min.css +11 -0
  92. data/app/assets/jinda_assets/jquery-jvectormap-1.2.2.css +40 -0
  93. data/app/assets/jinda_assets/jquery-jvectormap-1.2.2.min.js +8 -0
  94. data/app/assets/jinda_assets/jquery-jvectormap-world-mill-en.js +1 -0
  95. data/app/assets/jinda_assets/jquery-jvectormap.css +135 -0
  96. data/app/assets/jinda_assets/jquery-ui.min.js +13 -0
  97. data/app/assets/jinda_assets/jquery.knob.min.js +1 -0
  98. data/app/assets/jinda_assets/jquery.min.js +5 -0
  99. data/app/assets/jinda_assets/jquery.slimscroll.min.js +16 -0
  100. data/app/assets/jinda_assets/jquery.sparkline.min.js +6 -0
  101. data/app/assets/jinda_assets/moment.min.js +7 -0
  102. data/app/assets/jinda_assets/popper.min.js +4 -0
  103. data/app/assets/jinda_assets/skins/_all-skins.min.css +1 -0
  104. data/app/assets/stylesheets/app.scss +84 -0
  105. data/app/assets/stylesheets/fonts/sarabun.eot +0 -0
  106. data/app/assets/stylesheets/fonts/sarabun.ttf +0 -0
  107. data/app/assets/stylesheets/fonts/sarabun.woff +0 -0
  108. data/app/assets/stylesheets/fonts/sarabun_bold.ttf +0 -0
  109. data/app/assets/stylesheets/fonts/sarabun_bolditalic.ttf +0 -0
  110. data/app/assets/stylesheets/fonts/sarabun_italic.ttf +0 -0
  111. data/app/assets/stylesheets/fonts/thsarabunnew-webfont.eot +0 -0
  112. data/app/assets/stylesheets/fonts/thsarabunnew-webfont.ttf +0 -0
  113. data/app/assets/stylesheets/fonts/thsarabunnew-webfont.woff +0 -0
  114. data/app/assets/stylesheets/fonts/thsarabunnew.css +47 -0
  115. data/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.eot +0 -0
  116. data/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.ttf +0 -0
  117. data/app/assets/stylesheets/fonts/thsarabunnew_bold-webfont.woff +0 -0
  118. data/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.eot +0 -0
  119. data/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.ttf +0 -0
  120. data/app/assets/stylesheets/fonts/thsarabunnew_bolditalic-webfont.woff +0 -0
  121. data/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.eot +0 -0
  122. data/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.ttf +0 -0
  123. data/app/assets/stylesheets/fonts/thsarabunnew_italic-webfont.woff +0 -0
  124. data/app/assets/stylesheets/images/ajax-loader.gif +0 -0
  125. data/app/assets/stylesheets/images/button_black.png +0 -0
  126. data/app/assets/stylesheets/images/button_blue.png +0 -0
  127. data/app/assets/stylesheets/images/button_red.png +0 -0
  128. data/app/assets/stylesheets/images/icons-18-black.png +0 -0
  129. data/app/assets/stylesheets/images/icons-18-white.png +0 -0
  130. data/app/assets/stylesheets/images/icons-36-black.png +0 -0
  131. data/app/assets/stylesheets/images/icons-36-white.png +0 -0
  132. data/app/assets/stylesheets/images/indicator.gif +0 -0
  133. data/app/assets/stylesheets/jindalte.css +32 -0
  134. data/app/assets/stylesheets/kul-4.2.css +1516 -0
  135. data/app/assets/stylesheets/kul-4.2.min.css +11 -0
  136. data/app/assets/stylesheets/sarabun.css +37 -0
  137. data/app/assets/stylesheets/social.scss +133 -0
  138. data/lib/generators/jinda_adminlte/install_generator.rb +6 -2
  139. data/lib/generators/jinda_adminlte/templates/app/views/identities/new.html.haml +45 -0
  140. data/lib/generators/jinda_adminlte/templates/app/views/layouts/lte/_menu.haml +0 -10
  141. data/lib/generators/jinda_adminlte/templates/app/views/sessions/new.html.haml +35 -0
  142. data/lib/generators/jinda_adminlte/templates/{application.css → application.scss} +1 -1
  143. data/lib/generators/jinda_adminlte/templates/jinda.scss +185 -0
  144. data/lib/generators/jinda_adminlte/templates/{jindalte.css → jindalte.scss} +0 -0
  145. data/lib/jinda_adminlte/version.rb +1 -1
  146. metadata +147 -9
  147. data/lib/generators/jinda_adminlte/templates/jinda.css +0 -52
@@ -0,0 +1 @@
1
+ .skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus,.skin-yellow-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .main-sidebar{border-right:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-yellow-light .sidebar-menu .treeview-menu>li.active>a,.skin-yellow-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
@@ -0,0 +1,134 @@
1
+ /*
2
+ * Skin: Yellow
3
+ * ------------
4
+ */
5
+ .skin-yellow .main-header .navbar {
6
+ background-color: #f39c12;
7
+ }
8
+ .skin-yellow .main-header .navbar .nav > li > a {
9
+ color: #ffffff;
10
+ }
11
+ .skin-yellow .main-header .navbar .nav > li > a:hover,
12
+ .skin-yellow .main-header .navbar .nav > li > a:active,
13
+ .skin-yellow .main-header .navbar .nav > li > a:focus,
14
+ .skin-yellow .main-header .navbar .nav .open > a,
15
+ .skin-yellow .main-header .navbar .nav .open > a:hover,
16
+ .skin-yellow .main-header .navbar .nav .open > a:focus,
17
+ .skin-yellow .main-header .navbar .nav > .active > a {
18
+ background: rgba(0, 0, 0, 0.1);
19
+ color: #f6f6f6;
20
+ }
21
+ .skin-yellow .main-header .navbar .sidebar-toggle {
22
+ color: #ffffff;
23
+ }
24
+ .skin-yellow .main-header .navbar .sidebar-toggle:hover {
25
+ color: #f6f6f6;
26
+ background: rgba(0, 0, 0, 0.1);
27
+ }
28
+ .skin-yellow .main-header .navbar .sidebar-toggle {
29
+ color: #fff;
30
+ }
31
+ .skin-yellow .main-header .navbar .sidebar-toggle:hover {
32
+ background-color: #e08e0b;
33
+ }
34
+ @media (max-width: 767px) {
35
+ .skin-yellow .main-header .navbar .dropdown-menu li.divider {
36
+ background-color: rgba(255, 255, 255, 0.1);
37
+ }
38
+ .skin-yellow .main-header .navbar .dropdown-menu li a {
39
+ color: #fff;
40
+ }
41
+ .skin-yellow .main-header .navbar .dropdown-menu li a:hover {
42
+ background: #e08e0b;
43
+ }
44
+ }
45
+ .skin-yellow .main-header .logo {
46
+ background-color: #e08e0b;
47
+ color: #ffffff;
48
+ border-bottom: 0 solid transparent;
49
+ }
50
+ .skin-yellow .main-header .logo:hover {
51
+ background-color: #db8b0b;
52
+ }
53
+ .skin-yellow .main-header li.user-header {
54
+ background-color: #f39c12;
55
+ }
56
+ .skin-yellow .content-header {
57
+ background: transparent;
58
+ }
59
+ .skin-yellow .wrapper,
60
+ .skin-yellow .main-sidebar,
61
+ .skin-yellow .left-side {
62
+ background-color: #222d32;
63
+ }
64
+ .skin-yellow .user-panel > .info,
65
+ .skin-yellow .user-panel > .info > a {
66
+ color: #fff;
67
+ }
68
+ .skin-yellow .sidebar-menu > li.header {
69
+ color: #4b646f;
70
+ background: #1a2226;
71
+ }
72
+ .skin-yellow .sidebar-menu > li > a {
73
+ border-left: 3px solid transparent;
74
+ }
75
+ .skin-yellow .sidebar-menu > li:hover > a,
76
+ .skin-yellow .sidebar-menu > li.active > a,
77
+ .skin-yellow .sidebar-menu > li.menu-open > a {
78
+ color: #ffffff;
79
+ background: #1e282c;
80
+ }
81
+ .skin-yellow .sidebar-menu > li.active > a {
82
+ border-left-color: #f39c12;
83
+ }
84
+ .skin-yellow .sidebar-menu > li > .treeview-menu {
85
+ margin: 0 1px;
86
+ background: #2c3b41;
87
+ }
88
+ .skin-yellow .sidebar a {
89
+ color: #b8c7ce;
90
+ }
91
+ .skin-yellow .sidebar a:hover {
92
+ text-decoration: none;
93
+ }
94
+ .skin-yellow .sidebar-menu .treeview-menu > li > a {
95
+ color: #8aa4af;
96
+ }
97
+ .skin-yellow .sidebar-menu .treeview-menu > li.active > a,
98
+ .skin-yellow .sidebar-menu .treeview-menu > li > a:hover {
99
+ color: #ffffff;
100
+ }
101
+ .skin-yellow .sidebar-form {
102
+ border-radius: 3px;
103
+ border: 1px solid #374850;
104
+ margin: 10px 10px;
105
+ }
106
+ .skin-yellow .sidebar-form input[type="text"],
107
+ .skin-yellow .sidebar-form .btn {
108
+ box-shadow: none;
109
+ background-color: #374850;
110
+ border: 1px solid transparent;
111
+ height: 35px;
112
+ }
113
+ .skin-yellow .sidebar-form input[type="text"] {
114
+ color: #666;
115
+ border-top-left-radius: 2px;
116
+ border-top-right-radius: 0;
117
+ border-bottom-right-radius: 0;
118
+ border-bottom-left-radius: 2px;
119
+ }
120
+ .skin-yellow .sidebar-form input[type="text"]:focus,
121
+ .skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
122
+ background-color: #fff;
123
+ color: #666;
124
+ }
125
+ .skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
126
+ border-left-color: #fff;
127
+ }
128
+ .skin-yellow .sidebar-form .btn {
129
+ color: #999;
130
+ border-top-left-radius: 0;
131
+ border-top-right-radius: 2px;
132
+ border-bottom-right-radius: 2px;
133
+ border-bottom-left-radius: 0;
134
+ }
@@ -0,0 +1 @@
1
+ .skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus,.skin-yellow .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a,.skin-yellow .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-yellow .sidebar-menu>li.active>a{border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-yellow .sidebar-menu .treeview-menu>li.active>a,.skin-yellow .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius: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)