jinda_adminlte 0.6.0 → 0.6.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) 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/jinda_adminlte/version.rb +1 -1
  139. metadata +137 -1
@@ -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)