|
@@ -1,774 +0,0 @@
|
|
|
-/*! (DEPRECATED) AdminLTE app.js
|
|
|
- * =============================
|
|
|
- * Main JS application file for AdminLTE v2. This file
|
|
|
- * should be included in all pages. It controls some layout
|
|
|
- * options and implements exclusive AdminLTE plugins.
|
|
|
- *
|
|
|
- * @Author Almsaeed Studio
|
|
|
- * @Support <http://www.almsaeedstudio.com>
|
|
|
- * @Email <abdullah@almsaeedstudio.com>
|
|
|
- * @version 2.3.12
|
|
|
- * @license MIT <http://opensource.org/licenses/MIT>
|
|
|
- * @deprecated since 2.3.11
|
|
|
- */
|
|
|
-/* jshint ignore:start */
|
|
|
-// jscs:disable
|
|
|
-//Make sure jQuery has been loaded before app.js
|
|
|
-if (typeof jQuery === "undefined") {
|
|
|
- throw new Error("AdminLTE requires jQuery");
|
|
|
-}
|
|
|
-
|
|
|
-/* AdminLTE
|
|
|
- *
|
|
|
- * @type Object
|
|
|
- * @description $.AdminLTE is the main object for the template's app.
|
|
|
- * It's used for implementing functions and options related
|
|
|
- * to the template. Keeping everything wrapped in an object
|
|
|
- * prevents conflict with other plugins and is a better
|
|
|
- * way to organize our code.
|
|
|
- */
|
|
|
-$.AdminLTE = {};
|
|
|
-
|
|
|
-/* --------------------
|
|
|
- * - AdminLTE Options -
|
|
|
- * --------------------
|
|
|
- * Modify these options to suit your implementation
|
|
|
- */
|
|
|
-$.AdminLTE.options = {
|
|
|
- //Add slimscroll to navbar menus
|
|
|
- //This requires you to load the slimscroll plugin
|
|
|
- //in every page before app.js
|
|
|
- navbarMenuSlimscroll: true,
|
|
|
- navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
|
|
|
- navbarMenuHeight: "200px", //The height of the inner menu
|
|
|
- //General animation speed for JS animated elements such as box collapse/expand and
|
|
|
- //sidebar treeview slide up/down. This option accepts an integer as milliseconds,
|
|
|
- //'fast', 'normal', or 'slow'
|
|
|
- animationSpeed: 500,
|
|
|
- //Sidebar push menu toggle button selector
|
|
|
- sidebarToggleSelector: "[data-toggle='offcanvas']",
|
|
|
- //Activate sidebar push menu
|
|
|
- sidebarPushMenu: true,
|
|
|
- //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
|
|
|
- sidebarSlimScroll: true,
|
|
|
- //Enable sidebar expand on hover effect for sidebar mini
|
|
|
- //This option is forced to true if both the fixed layout and sidebar mini
|
|
|
- //are used together
|
|
|
- sidebarExpandOnHover: false,
|
|
|
- //BoxRefresh Plugin
|
|
|
- enableBoxRefresh: true,
|
|
|
- //Bootstrap.js tooltip
|
|
|
- enableBSToppltip: true,
|
|
|
- BSTooltipSelector: "[data-toggle='tooltip']",
|
|
|
- //Enable Fast Click. Fastclick.js creates a more
|
|
|
- //native touch experience with touch devices. If you
|
|
|
- //choose to enable the plugin, make sure you load the script
|
|
|
- //before AdminLTE's app.js
|
|
|
- enableFastclick: false,
|
|
|
- //Control Sidebar Tree views
|
|
|
- enableControlTreeView: true,
|
|
|
- //Control Sidebar Options
|
|
|
- enableControlSidebar: true,
|
|
|
- controlSidebarOptions: {
|
|
|
- //Which button should trigger the open/close event
|
|
|
- toggleBtnSelector: "[data-toggle='control-sidebar']",
|
|
|
- //The sidebar selector
|
|
|
- selector: ".control-sidebar",
|
|
|
- //Enable slide over content
|
|
|
- slide: true
|
|
|
- },
|
|
|
- //Box Widget Plugin. Enable this plugin
|
|
|
- //to allow boxes to be collapsed and/or removed
|
|
|
- enableBoxWidget: true,
|
|
|
- //Box Widget plugin options
|
|
|
- boxWidgetOptions: {
|
|
|
- boxWidgetIcons: {
|
|
|
- //Collapse icon
|
|
|
- collapse: 'fa-minus',
|
|
|
- //Open icon
|
|
|
- open: 'fa-plus',
|
|
|
- //Remove icon
|
|
|
- remove: 'fa-times'
|
|
|
- },
|
|
|
- boxWidgetSelectors: {
|
|
|
- //Remove button selector
|
|
|
- remove: '[data-widget="remove"]',
|
|
|
- //Collapse button selector
|
|
|
- collapse: '[data-widget="collapse"]'
|
|
|
- }
|
|
|
- },
|
|
|
- //Direct Chat plugin options
|
|
|
- directChat: {
|
|
|
- //Enable direct chat by default
|
|
|
- enable: true,
|
|
|
- //The button to open and close the chat contacts pane
|
|
|
- contactToggleSelector: '[data-widget="chat-pane-toggle"]'
|
|
|
- },
|
|
|
- //Define the set of colors to use globally around the website
|
|
|
- colors: {
|
|
|
- lightBlue: "#3c8dbc",
|
|
|
- red: "#f56954",
|
|
|
- green: "#00a65a",
|
|
|
- aqua: "#00c0ef",
|
|
|
- yellow: "#f39c12",
|
|
|
- blue: "#0073b7",
|
|
|
- navy: "#001F3F",
|
|
|
- teal: "#39CCCC",
|
|
|
- olive: "#3D9970",
|
|
|
- lime: "#01FF70",
|
|
|
- orange: "#FF851B",
|
|
|
- fuchsia: "#F012BE",
|
|
|
- purple: "#8E24AA",
|
|
|
- maroon: "#D81B60",
|
|
|
- black: "#222222",
|
|
|
- gray: "#d2d6de"
|
|
|
- },
|
|
|
- //The standard screen sizes that bootstrap uses.
|
|
|
- //If you change these in the variables.less file, change
|
|
|
- //them here too.
|
|
|
- screenSizes: {
|
|
|
- xs: 480,
|
|
|
- sm: 768,
|
|
|
- md: 992,
|
|
|
- lg: 1200
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-/* ------------------
|
|
|
- * - Implementation -
|
|
|
- * ------------------
|
|
|
- * The next block of code implements AdminLTE's
|
|
|
- * functions and plugins as specified by the
|
|
|
- * options above.
|
|
|
- */
|
|
|
-$(function () {
|
|
|
- "use strict";
|
|
|
-
|
|
|
- //Fix for IE page transitions
|
|
|
- $("body").removeClass("hold-transition");
|
|
|
-
|
|
|
- //Extend options if external options exist
|
|
|
- if (typeof AdminLTEOptions !== "undefined") {
|
|
|
- $.extend(true,
|
|
|
- $.AdminLTE.options,
|
|
|
- AdminLTEOptions);
|
|
|
- }
|
|
|
-
|
|
|
- //Easy access to options
|
|
|
- var o = $.AdminLTE.options;
|
|
|
-
|
|
|
- //Set up the object
|
|
|
- _init();
|
|
|
-
|
|
|
- //Activate the layout maker
|
|
|
- $.AdminLTE.layout.activate();
|
|
|
-
|
|
|
- //Enable sidebar tree view controls
|
|
|
- if (o.enableControlTreeView) {
|
|
|
- $.AdminLTE.tree('.sidebar');
|
|
|
- }
|
|
|
-
|
|
|
- //Enable control sidebar
|
|
|
- if (o.enableControlSidebar) {
|
|
|
- $.AdminLTE.controlSidebar.activate();
|
|
|
- }
|
|
|
-
|
|
|
- //Add slimscroll to navbar dropdown
|
|
|
- if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {
|
|
|
- $(".navbar .menu").slimscroll({
|
|
|
- height: o.navbarMenuHeight,
|
|
|
- alwaysVisible: false,
|
|
|
- size: o.navbarMenuSlimscrollWidth
|
|
|
- }).css("width", "100%");
|
|
|
- }
|
|
|
-
|
|
|
- //Activate sidebar push menu
|
|
|
- if (o.sidebarPushMenu) {
|
|
|
- $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector);
|
|
|
- }
|
|
|
-
|
|
|
- //Activate Bootstrap tooltip
|
|
|
- if (o.enableBSToppltip) {
|
|
|
- $('body').tooltip({
|
|
|
- selector: o.BSTooltipSelector,
|
|
|
- container: 'body'
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- //Activate box widget
|
|
|
- if (o.enableBoxWidget) {
|
|
|
- $.AdminLTE.boxWidget.activate();
|
|
|
- }
|
|
|
-
|
|
|
- //Activate fast click
|
|
|
- if (o.enableFastclick && typeof FastClick != 'undefined') {
|
|
|
- FastClick.attach(document.body);
|
|
|
- }
|
|
|
-
|
|
|
- //Activate direct chat widget
|
|
|
- if (o.directChat.enable) {
|
|
|
- $(document).on('click', o.directChat.contactToggleSelector, function () {
|
|
|
- var box = $(this).parents('.direct-chat').first();
|
|
|
- box.toggleClass('direct-chat-contacts-open');
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- * INITIALIZE BUTTON TOGGLE
|
|
|
- * ------------------------
|
|
|
- */
|
|
|
- $('.btn-group[data-toggle="btn-toggle"]').each(function () {
|
|
|
- var group = $(this);
|
|
|
- $(this).find(".btn").on('click', function (e) {
|
|
|
- group.find(".btn.active").removeClass("active");
|
|
|
- $(this).addClass("active");
|
|
|
- e.preventDefault();
|
|
|
- });
|
|
|
-
|
|
|
- });
|
|
|
-});
|
|
|
-
|
|
|
-/* ----------------------------------
|
|
|
- * - Initialize the AdminLTE Object -
|
|
|
- * ----------------------------------
|
|
|
- * All AdminLTE functions are implemented below.
|
|
|
- */
|
|
|
-function _init() {
|
|
|
- 'use strict';
|
|
|
- /* Layout
|
|
|
- * ======
|
|
|
- * Fixes the layout height in case min-height fails.
|
|
|
- *
|
|
|
- * @type Object
|
|
|
- * @usage $.AdminLTE.layout.activate()
|
|
|
- * $.AdminLTE.layout.fix()
|
|
|
- * $.AdminLTE.layout.fixSidebar()
|
|
|
- */
|
|
|
- $.AdminLTE.layout = {
|
|
|
- activate: function () {
|
|
|
- var _this = this;
|
|
|
- _this.fix();
|
|
|
- _this.fixSidebar();
|
|
|
- $('body, html, .wrapper').css('height', 'auto');
|
|
|
- $(window, ".wrapper").resize(function () {
|
|
|
- _this.fix();
|
|
|
- _this.fixSidebar();
|
|
|
- });
|
|
|
- },
|
|
|
- fix: function () {
|
|
|
- // Remove overflow from .wrapper if layout-boxed exists
|
|
|
- $(".layout-boxed > .wrapper").css('overflow', 'hidden');
|
|
|
- //Get window height and the wrapper height
|
|
|
- var footer_height = $('.main-footer').outerHeight() || 0;
|
|
|
- var neg = $('.main-header').outerHeight() + footer_height;
|
|
|
- var window_height = $(window).height();
|
|
|
- var sidebar_height = $(".sidebar").height() || 0;
|
|
|
- //Set the min-height of the content and sidebar based on the
|
|
|
- //the height of the document.
|
|
|
- if ($("body").hasClass("fixed")) {
|
|
|
- $(".content-wrapper, .right-side").css('min-height', window_height - footer_height);
|
|
|
- } else {
|
|
|
- var postSetWidth;
|
|
|
- if (window_height >= sidebar_height) {
|
|
|
- $(".content-wrapper, .right-side").css('min-height', window_height - neg);
|
|
|
- postSetWidth = window_height - neg;
|
|
|
- } else {
|
|
|
- $(".content-wrapper, .right-side").css('min-height', sidebar_height);
|
|
|
- postSetWidth = sidebar_height;
|
|
|
- }
|
|
|
-
|
|
|
- //Fix for the control sidebar height
|
|
|
- var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector);
|
|
|
- if (typeof controlSidebar !== "undefined") {
|
|
|
- if (controlSidebar.height() > postSetWidth)
|
|
|
- $(".content-wrapper, .right-side").css('min-height', controlSidebar.height());
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- },
|
|
|
- fixSidebar: function () {
|
|
|
- //Make sure the body tag has the .fixed class
|
|
|
- if (!$("body").hasClass("fixed")) {
|
|
|
- if (typeof $.fn.slimScroll != 'undefined') {
|
|
|
- $(".sidebar").slimScroll({destroy: true}).height("auto");
|
|
|
- }
|
|
|
- return;
|
|
|
- } else if (typeof $.fn.slimScroll == 'undefined' && window.console) {
|
|
|
- window.console.error("Error: the fixed layout requires the slimscroll plugin!");
|
|
|
- }
|
|
|
- //Enable slimscroll for fixed layout
|
|
|
- if ($.AdminLTE.options.sidebarSlimScroll) {
|
|
|
- if (typeof $.fn.slimScroll != 'undefined') {
|
|
|
- //Destroy if it exists
|
|
|
- $(".sidebar").slimScroll({destroy: true}).height("auto");
|
|
|
- //Add slimscroll
|
|
|
- $(".sidebar").slimScroll({
|
|
|
- height: ($(window).height() - $(".main-header").height()) + "px",
|
|
|
- color: "rgba(0,0,0,0.2)",
|
|
|
- size: "3px"
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- /* PushMenu()
|
|
|
- * ==========
|
|
|
- * Adds the push menu functionality to the sidebar.
|
|
|
- *
|
|
|
- * @type Function
|
|
|
- * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']")
|
|
|
- */
|
|
|
- $.AdminLTE.pushMenu = {
|
|
|
- activate: function (toggleBtn) {
|
|
|
- //Get the screen sizes
|
|
|
- var screenSizes = $.AdminLTE.options.screenSizes;
|
|
|
-
|
|
|
- //Enable sidebar toggle
|
|
|
- $(document).on('click', toggleBtn, function (e) {
|
|
|
- e.preventDefault();
|
|
|
-
|
|
|
- //Enable sidebar push menu
|
|
|
- if ($(window).width() > (screenSizes.sm - 1)) {
|
|
|
- if ($("body").hasClass('sidebar-collapse')) {
|
|
|
- $("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu');
|
|
|
- } else {
|
|
|
- $("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu');
|
|
|
- }
|
|
|
- }
|
|
|
- //Handle sidebar push menu for small screens
|
|
|
- else {
|
|
|
- if ($("body").hasClass('sidebar-open')) {
|
|
|
- $("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu');
|
|
|
- } else {
|
|
|
- $("body").addClass('sidebar-open').trigger('expanded.pushMenu');
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- $(".content-wrapper").click(function () {
|
|
|
- //Enable hide menu when clicking on the content-wrapper on small screens
|
|
|
- if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) {
|
|
|
- $("body").removeClass('sidebar-open');
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- //Enable expand on hover for sidebar mini
|
|
|
- if ($.AdminLTE.options.sidebarExpandOnHover
|
|
|
- || ($('body').hasClass('fixed')
|
|
|
- && $('body').hasClass('sidebar-mini'))) {
|
|
|
- this.expandOnHover();
|
|
|
- }
|
|
|
- },
|
|
|
- expandOnHover: function () {
|
|
|
- var _this = this;
|
|
|
- var screenWidth = $.AdminLTE.options.screenSizes.sm - 1;
|
|
|
- //Expand sidebar on hover
|
|
|
- $('.main-sidebar').hover(function () {
|
|
|
- if ($('body').hasClass('sidebar-mini')
|
|
|
- && $("body").hasClass('sidebar-collapse')
|
|
|
- && $(window).width() > screenWidth) {
|
|
|
- _this.expand();
|
|
|
- }
|
|
|
- }, function () {
|
|
|
- if ($('body').hasClass('sidebar-mini')
|
|
|
- && $('body').hasClass('sidebar-expanded-on-hover')
|
|
|
- && $(window).width() > screenWidth) {
|
|
|
- _this.collapse();
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
- expand: function () {
|
|
|
- $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover');
|
|
|
- },
|
|
|
- collapse: function () {
|
|
|
- if ($('body').hasClass('sidebar-expanded-on-hover')) {
|
|
|
- $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse');
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- /* Tree()
|
|
|
- * ======
|
|
|
- * Converts the sidebar into a multilevel
|
|
|
- * tree view menu.
|
|
|
- *
|
|
|
- * @type Function
|
|
|
- * @Usage: $.AdminLTE.tree('.sidebar')
|
|
|
- */
|
|
|
- $.AdminLTE.tree = function (menu) {
|
|
|
- var _this = this;
|
|
|
- var animationSpeed = $.AdminLTE.options.animationSpeed;
|
|
|
- $(document).off('click', menu + ' li a')
|
|
|
- .on('click', menu + ' li a', function (e) {
|
|
|
- //Get the clicked link and the next element
|
|
|
- var $this = $(this);
|
|
|
- var checkElement = $this.next();
|
|
|
-
|
|
|
- //Check if the next element is a menu and is visible
|
|
|
- if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) {
|
|
|
- //Close the menu
|
|
|
- checkElement.slideUp(animationSpeed, function () {
|
|
|
- checkElement.removeClass('menu-open');
|
|
|
- //Fix the layout in case the sidebar stretches over the height of the window
|
|
|
- //_this.layout.fix();
|
|
|
- });
|
|
|
- checkElement.parent("li").removeClass("active");
|
|
|
- }
|
|
|
- //If the menu is not visible
|
|
|
- else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {
|
|
|
- //Get the parent menu
|
|
|
- var parent = $this.parents('ul').first();
|
|
|
- //Close all open menus within the parent
|
|
|
- var ul = parent.find('ul:visible').slideUp(animationSpeed);
|
|
|
- //Remove the menu-open class from the parent
|
|
|
- ul.removeClass('menu-open');
|
|
|
- //Get the parent li
|
|
|
- var parent_li = $this.parent("li");
|
|
|
-
|
|
|
- //Open the target menu and add the menu-open class
|
|
|
- checkElement.slideDown(animationSpeed, function () {
|
|
|
- //Add the class active to the parent li
|
|
|
- checkElement.addClass('menu-open');
|
|
|
- parent.find('li.active').removeClass('active');
|
|
|
- parent_li.addClass('active');
|
|
|
- //Fix the layout in case the sidebar stretches over the height of the window
|
|
|
- _this.layout.fix();
|
|
|
- });
|
|
|
- }
|
|
|
- //if this isn't a link, prevent the page from being redirected
|
|
|
- if (checkElement.is('.treeview-menu')) {
|
|
|
- e.preventDefault();
|
|
|
- }
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
- /* ControlSidebar
|
|
|
- * ==============
|
|
|
- * Adds functionality to the right sidebar
|
|
|
- *
|
|
|
- * @type Object
|
|
|
- * @usage $.AdminLTE.controlSidebar.activate(options)
|
|
|
- */
|
|
|
- $.AdminLTE.controlSidebar = {
|
|
|
- //instantiate the object
|
|
|
- activate: function () {
|
|
|
- //Get the object
|
|
|
- var _this = this;
|
|
|
- //Update options
|
|
|
- var o = $.AdminLTE.options.controlSidebarOptions;
|
|
|
- //Get the sidebar
|
|
|
- var sidebar = $(o.selector);
|
|
|
- //The toggle button
|
|
|
- var btn = $(o.toggleBtnSelector);
|
|
|
-
|
|
|
- //Listen to the click event
|
|
|
- btn.on('click', function (e) {
|
|
|
- e.preventDefault();
|
|
|
- //If the sidebar is not open
|
|
|
- if (!sidebar.hasClass('control-sidebar-open')
|
|
|
- && !$('body').hasClass('control-sidebar-open')) {
|
|
|
- //Open the sidebar
|
|
|
- _this.open(sidebar, o.slide);
|
|
|
- } else {
|
|
|
- _this.close(sidebar, o.slide);
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- //If the body has a boxed layout, fix the sidebar bg position
|
|
|
- var bg = $(".control-sidebar-bg");
|
|
|
- _this._fix(bg);
|
|
|
-
|
|
|
- //If the body has a fixed layout, make the control sidebar fixed
|
|
|
- if ($('body').hasClass('fixed')) {
|
|
|
- _this._fixForFixed(sidebar);
|
|
|
- } else {
|
|
|
- //If the content height is less than the sidebar's height, force max height
|
|
|
- if ($('.content-wrapper, .right-side').height() < sidebar.height()) {
|
|
|
- _this._fixForContent(sidebar);
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- //Open the control sidebar
|
|
|
- open: function (sidebar, slide) {
|
|
|
- //Slide over content
|
|
|
- if (slide) {
|
|
|
- sidebar.addClass('control-sidebar-open');
|
|
|
- } else {
|
|
|
- //Push the content by adding the open class to the body instead
|
|
|
- //of the sidebar itself
|
|
|
- $('body').addClass('control-sidebar-open');
|
|
|
- }
|
|
|
- },
|
|
|
- //Close the control sidebar
|
|
|
- close: function (sidebar, slide) {
|
|
|
- if (slide) {
|
|
|
- sidebar.removeClass('control-sidebar-open');
|
|
|
- } else {
|
|
|
- $('body').removeClass('control-sidebar-open');
|
|
|
- }
|
|
|
- },
|
|
|
- _fix: function (sidebar) {
|
|
|
- var _this = this;
|
|
|
- if ($("body").hasClass('layout-boxed')) {
|
|
|
- sidebar.css('position', 'absolute');
|
|
|
- sidebar.height($(".wrapper").height());
|
|
|
- if (_this.hasBindedResize) {
|
|
|
- return;
|
|
|
- }
|
|
|
- $(window).resize(function () {
|
|
|
- _this._fix(sidebar);
|
|
|
- });
|
|
|
- _this.hasBindedResize = true;
|
|
|
- } else {
|
|
|
- sidebar.css({
|
|
|
- 'position': 'fixed',
|
|
|
- 'height': 'auto'
|
|
|
- });
|
|
|
- }
|
|
|
- },
|
|
|
- _fixForFixed: function (sidebar) {
|
|
|
- sidebar.css({
|
|
|
- 'position': 'fixed',
|
|
|
- 'max-height': '100%',
|
|
|
- 'overflow': 'auto',
|
|
|
- 'padding-bottom': '50px'
|
|
|
- });
|
|
|
- },
|
|
|
- _fixForContent: function (sidebar) {
|
|
|
- $(".content-wrapper, .right-side").css('min-height', sidebar.height());
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- /* BoxWidget
|
|
|
- * =========
|
|
|
- * BoxWidget is a plugin to handle collapsing and
|
|
|
- * removing boxes from the screen.
|
|
|
- *
|
|
|
- * @type Object
|
|
|
- * @usage $.AdminLTE.boxWidget.activate()
|
|
|
- * Set all your options in the main $.AdminLTE.options object
|
|
|
- */
|
|
|
- $.AdminLTE.boxWidget = {
|
|
|
- selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,
|
|
|
- icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,
|
|
|
- animationSpeed: $.AdminLTE.options.animationSpeed,
|
|
|
- activate: function (_box) {
|
|
|
- var _this = this;
|
|
|
- if (!_box) {
|
|
|
- _box = document; // activate all boxes per default
|
|
|
- }
|
|
|
- //Listen for collapse event triggers
|
|
|
- $(_box).on('click', _this.selectors.collapse, function (e) {
|
|
|
- e.preventDefault();
|
|
|
- _this.collapse($(this));
|
|
|
- });
|
|
|
-
|
|
|
- //Listen for remove event triggers
|
|
|
- $(_box).on('click', _this.selectors.remove, function (e) {
|
|
|
- e.preventDefault();
|
|
|
- _this.remove($(this));
|
|
|
- });
|
|
|
- },
|
|
|
- collapse: function (element) {
|
|
|
- var _this = this;
|
|
|
- //Find the box parent
|
|
|
- var box = element.parents(".box").first();
|
|
|
- //Find the body and the footer
|
|
|
- var box_content = box.find("> .box-body, > .box-footer, > form >.box-body, > form > .box-footer");
|
|
|
- if (!box.hasClass("collapsed-box")) {
|
|
|
- //Convert minus into plus
|
|
|
- element.children(":first")
|
|
|
- .removeClass(_this.icons.collapse)
|
|
|
- .addClass(_this.icons.open);
|
|
|
- //Hide the content
|
|
|
- box_content.slideUp(_this.animationSpeed, function () {
|
|
|
- box.addClass("collapsed-box");
|
|
|
- });
|
|
|
- } else {
|
|
|
- //Convert plus into minus
|
|
|
- element.children(":first")
|
|
|
- .removeClass(_this.icons.open)
|
|
|
- .addClass(_this.icons.collapse);
|
|
|
- //Show the content
|
|
|
- box_content.slideDown(_this.animationSpeed, function () {
|
|
|
- box.removeClass("collapsed-box");
|
|
|
- });
|
|
|
- }
|
|
|
- },
|
|
|
- remove: function (element) {
|
|
|
- //Find the box parent
|
|
|
- var box = element.parents(".box").first();
|
|
|
- box.slideUp(this.animationSpeed);
|
|
|
- }
|
|
|
- };
|
|
|
-}
|
|
|
-
|
|
|
-/* ------------------
|
|
|
- * - Custom Plugins -
|
|
|
- * ------------------
|
|
|
- * All custom plugins are defined below.
|
|
|
- */
|
|
|
-
|
|
|
-/*
|
|
|
- * BOX REFRESH BUTTON
|
|
|
- * ------------------
|
|
|
- * This is a custom plugin to use with the component BOX. It allows you to add
|
|
|
- * a refresh button to the box. It converts the box's state to a loading state.
|
|
|
- *
|
|
|
- * @type plugin
|
|
|
- * @usage $("#box-widget").boxRefresh( options );
|
|
|
- */
|
|
|
-(function ($) {
|
|
|
-
|
|
|
- "use strict";
|
|
|
-
|
|
|
- $.fn.boxRefresh = function (options) {
|
|
|
-
|
|
|
- // Render options
|
|
|
- var settings = $.extend({
|
|
|
- //Refresh button selector
|
|
|
- trigger: ".refresh-btn",
|
|
|
- //File source to be loaded (e.g: ajax/src.php)
|
|
|
- source: "",
|
|
|
- //Callbacks
|
|
|
- onLoadStart: function (box) {
|
|
|
- return box;
|
|
|
- }, //Right after the button has been clicked
|
|
|
- onLoadDone: function (box) {
|
|
|
- return box;
|
|
|
- } //When the source has been loaded
|
|
|
-
|
|
|
- }, options);
|
|
|
-
|
|
|
- //The overlay
|
|
|
- var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');
|
|
|
-
|
|
|
- return this.each(function () {
|
|
|
- //if a source is specified
|
|
|
- if (settings.source === "") {
|
|
|
- if (window.console) {
|
|
|
- window.console.log("Please specify a source first - boxRefresh()");
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
- //the box
|
|
|
- var box = $(this);
|
|
|
- //the button
|
|
|
- var rBtn = box.find(settings.trigger).first();
|
|
|
-
|
|
|
- //On trigger click
|
|
|
- rBtn.on('click', function (e) {
|
|
|
- e.preventDefault();
|
|
|
- //Add loading overlay
|
|
|
- start(box);
|
|
|
-
|
|
|
- //Perform ajax call
|
|
|
- box.find(".box-body").load(settings.source, function () {
|
|
|
- done(box);
|
|
|
- });
|
|
|
- });
|
|
|
- });
|
|
|
-
|
|
|
- function start(box) {
|
|
|
- //Add overlay and loading img
|
|
|
- box.append(overlay);
|
|
|
-
|
|
|
- settings.onLoadStart.call(box);
|
|
|
- }
|
|
|
-
|
|
|
- function done(box) {
|
|
|
- //Remove overlay and loading img
|
|
|
- box.find(overlay).remove();
|
|
|
-
|
|
|
- settings.onLoadDone.call(box);
|
|
|
- }
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
-})(jQuery);
|
|
|
-
|
|
|
-/*
|
|
|
- * EXPLICIT BOX CONTROLS
|
|
|
- * -----------------------
|
|
|
- * This is a custom plugin to use with the component BOX. It allows you to activate
|
|
|
- * a box inserted in the DOM after the app.js was loaded, toggle and remove box.
|
|
|
- *
|
|
|
- * @type plugin
|
|
|
- * @usage $("#box-widget").activateBox();
|
|
|
- * @usage $("#box-widget").toggleBox();
|
|
|
- * @usage $("#box-widget").removeBox();
|
|
|
- */
|
|
|
-(function ($) {
|
|
|
-
|
|
|
- 'use strict';
|
|
|
-
|
|
|
- $.fn.activateBox = function () {
|
|
|
- $.AdminLTE.boxWidget.activate(this);
|
|
|
- };
|
|
|
-
|
|
|
- $.fn.toggleBox = function () {
|
|
|
- var button = $($.AdminLTE.boxWidget.selectors.collapse, this);
|
|
|
- $.AdminLTE.boxWidget.collapse(button);
|
|
|
- };
|
|
|
-
|
|
|
- $.fn.removeBox = function () {
|
|
|
- var button = $($.AdminLTE.boxWidget.selectors.remove, this);
|
|
|
- $.AdminLTE.boxWidget.remove(button);
|
|
|
- };
|
|
|
-
|
|
|
-})(jQuery);
|
|
|
-
|
|
|
-/*
|
|
|
- * TODO LIST CUSTOM PLUGIN
|
|
|
- * -----------------------
|
|
|
- * This plugin depends on iCheck plugin for checkbox and radio inputs
|
|
|
- *
|
|
|
- * @type plugin
|
|
|
- * @usage $("#todo-widget").todolist( options );
|
|
|
- */
|
|
|
-(function ($) {
|
|
|
-
|
|
|
- 'use strict';
|
|
|
-
|
|
|
- $.fn.todolist = function (options) {
|
|
|
- // Render options
|
|
|
- var settings = $.extend({
|
|
|
- //When the user checks the input
|
|
|
- onCheck: function (ele) {
|
|
|
- return ele;
|
|
|
- },
|
|
|
- //When the user unchecks the input
|
|
|
- onUncheck: function (ele) {
|
|
|
- return ele;
|
|
|
- }
|
|
|
- }, options);
|
|
|
-
|
|
|
- return this.each(function () {
|
|
|
-
|
|
|
- if (typeof $.fn.iCheck != 'undefined') {
|
|
|
- $('input', this).on('ifChecked', function () {
|
|
|
- var ele = $(this).parents("li").first();
|
|
|
- ele.toggleClass("done");
|
|
|
- settings.onCheck.call(ele);
|
|
|
- });
|
|
|
-
|
|
|
- $('input', this).on('ifUnchecked', function () {
|
|
|
- var ele = $(this).parents("li").first();
|
|
|
- ele.toggleClass("done");
|
|
|
- settings.onUncheck.call(ele);
|
|
|
- });
|
|
|
- } else {
|
|
|
- $('input', this).on('change', function () {
|
|
|
- var ele = $(this).parents("li").first();
|
|
|
- ele.toggleClass("done");
|
|
|
- if ($('input', ele).is(":checked")) {
|
|
|
- settings.onCheck.call(ele);
|
|
|
- } else {
|
|
|
- settings.onUncheck.call(ele);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
- };
|
|
|
-}(jQuery));
|