adminlte.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913
  1. /*!
  2. * AdminLTE v3.0.0-beta.2 (https://adminlte.io)
  3. * Copyright 2014-2019 Colorlib <http://colorlib.com>
  4. * Licensed under MIT (https://github.com/almasaeed2010/AdminLTE/blob/master/LICENSE)
  5. */
  6. (function (global, factory) {
  7. typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
  8. typeof define === 'function' && define.amd ? define(['exports'], factory) :
  9. (global = global || self, factory(global.adminlte = {}));
  10. }(this, function (exports) { 'use strict';
  11. /**
  12. * --------------------------------------------
  13. * AdminLTE ControlSidebar.js
  14. * License MIT
  15. * --------------------------------------------
  16. */
  17. var ControlSidebar = function ($) {
  18. /**
  19. * Constants
  20. * ====================================================
  21. */
  22. var NAME = 'ControlSidebar';
  23. var DATA_KEY = 'lte.control.sidebar';
  24. var JQUERY_NO_CONFLICT = $.fn[NAME];
  25. var Selector = {
  26. CONTROL_SIDEBAR: '.control-sidebar',
  27. DATA_TOGGLE: '[data-widget="control-sidebar"]',
  28. MAIN_HEADER: '.main-header'
  29. };
  30. var ClassName = {
  31. CONTROL_SIDEBAR_ANIMATE: 'control-sidebar-animate',
  32. CONTROL_SIDEBAR_OPEN: 'control-sidebar-open',
  33. CONTROL_SIDEBAR_SLIDE: 'control-sidebar-slide-open'
  34. };
  35. var Default = {
  36. slide: true
  37. /**
  38. * Class Definition
  39. * ====================================================
  40. */
  41. };
  42. var ControlSidebar =
  43. /*#__PURE__*/
  44. function () {
  45. function ControlSidebar(element, config) {
  46. this._element = element;
  47. this._config = this._getConfig(config);
  48. } // Public
  49. var _proto = ControlSidebar.prototype;
  50. _proto.show = function show() {
  51. // Show the control sidebar
  52. if (this._config.slide) {
  53. $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
  54. $('body').removeClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function () {
  55. $(Selector.CONTROL_SIDEBAR).hide();
  56. $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
  57. $(this).dequeue();
  58. });
  59. } else {
  60. $('body').removeClass(ClassName.CONTROL_SIDEBAR_OPEN);
  61. }
  62. };
  63. _proto.collapse = function collapse() {
  64. // Collapse the control sidebar
  65. if (this._config.slide) {
  66. $('html').addClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
  67. $(Selector.CONTROL_SIDEBAR).show().delay(100).queue(function () {
  68. $('body').addClass(ClassName.CONTROL_SIDEBAR_SLIDE).delay(300).queue(function () {
  69. $('html').removeClass(ClassName.CONTROL_SIDEBAR_ANIMATE);
  70. $(this).dequeue();
  71. });
  72. $(this).dequeue();
  73. });
  74. } else {
  75. $('body').addClass(ClassName.CONTROL_SIDEBAR_OPEN);
  76. }
  77. };
  78. _proto.toggle = function toggle() {
  79. this._setMargin();
  80. var shouldOpen = $('body').hasClass(ClassName.CONTROL_SIDEBAR_OPEN) || $('body').hasClass(ClassName.CONTROL_SIDEBAR_SLIDE);
  81. if (shouldOpen) {
  82. // Open the control sidebar
  83. this.show();
  84. } else {
  85. // Close the control sidebar
  86. this.collapse();
  87. }
  88. } // Private
  89. ;
  90. _proto._getConfig = function _getConfig(config) {
  91. return $.extend({}, Default, config);
  92. };
  93. _proto._setMargin = function _setMargin() {
  94. $(Selector.CONTROL_SIDEBAR).css({
  95. top: $(Selector.MAIN_HEADER).innerHeight()
  96. });
  97. } // Static
  98. ;
  99. ControlSidebar._jQueryInterface = function _jQueryInterface(operation) {
  100. return this.each(function () {
  101. var data = $(this).data(DATA_KEY);
  102. if (!data) {
  103. data = new ControlSidebar(this, $(this).data());
  104. $(this).data(DATA_KEY, data);
  105. }
  106. if (data[operation] === 'undefined') {
  107. throw new Error(operation + " is not a function");
  108. }
  109. data[operation]();
  110. });
  111. };
  112. return ControlSidebar;
  113. }();
  114. /**
  115. *
  116. * Data Api implementation
  117. * ====================================================
  118. */
  119. $(document).on('click', Selector.DATA_TOGGLE, function (event) {
  120. event.preventDefault();
  121. ControlSidebar._jQueryInterface.call($(this), 'toggle');
  122. });
  123. /**
  124. * jQuery API
  125. * ====================================================
  126. */
  127. $.fn[NAME] = ControlSidebar._jQueryInterface;
  128. $.fn[NAME].Constructor = ControlSidebar;
  129. $.fn[NAME].noConflict = function () {
  130. $.fn[NAME] = JQUERY_NO_CONFLICT;
  131. return ControlSidebar._jQueryInterface;
  132. };
  133. return ControlSidebar;
  134. }(jQuery);
  135. /**
  136. * --------------------------------------------
  137. * AdminLTE Layout.js
  138. * License MIT
  139. * --------------------------------------------
  140. */
  141. var Layout = function ($) {
  142. /**
  143. * Constants
  144. * ====================================================
  145. */
  146. var NAME = 'Layout';
  147. var DATA_KEY = 'lte.layout';
  148. var JQUERY_NO_CONFLICT = $.fn[NAME];
  149. var Selector = {
  150. HEADER: '.main-header',
  151. MAIN_SIDEBAR: '.main-sidebar',
  152. SIDEBAR: '.main-sidebar .sidebar',
  153. CONTENT: '.content-wrapper',
  154. BRAND: '.brand-link',
  155. CONTENT_HEADER: '.content-header',
  156. WRAPPER: '.wrapper',
  157. CONTROL_SIDEBAR: '.control-sidebar',
  158. LAYOUT_FIXED: '.layout-fixed',
  159. FOOTER: '.main-footer'
  160. };
  161. var ClassName = {
  162. HOLD: 'hold-transition',
  163. SIDEBAR: 'main-sidebar',
  164. CONTENT_FIXED: 'content-fixed',
  165. SIDEBAR_FOCUSED: 'sidebar-focused',
  166. LAYOUT_FIXED: 'layout-fixed',
  167. NAVBAR_FIXED: 'layout-navbar-fixed',
  168. FOOTER_FIXED: 'layout-footer-fixed'
  169. };
  170. var Default = {
  171. scrollbarTheme: 'os-theme-light',
  172. scrollbarAutoHide: 'l'
  173. /**
  174. * Class Definition
  175. * ====================================================
  176. */
  177. };
  178. var Layout =
  179. /*#__PURE__*/
  180. function () {
  181. function Layout(element, config) {
  182. this._config = config;
  183. this._element = element;
  184. this._init();
  185. } // Public
  186. var _proto = Layout.prototype;
  187. _proto.fixLayoutHeight = function fixLayoutHeight() {
  188. var heights = {
  189. window: $(window).height(),
  190. header: $(Selector.HEADER).outerHeight(),
  191. footer: $(Selector.FOOTER).outerHeight(),
  192. sidebar: $(Selector.SIDEBAR).height()
  193. };
  194. var max = this._max(heights);
  195. if ($('body').hasClass(ClassName.LAYOUT_FIXED)) {
  196. $(Selector.CONTENT).css('min-height', max - heights.header - heights.footer); // $(Selector.SIDEBAR).css('min-height', max - heights.header)
  197. $(Selector.CONTROL_SIDEBAR + ' .control-sidebar-content').css('height', max - heights.header);
  198. if (typeof $.fn.overlayScrollbars !== 'undefined') {
  199. $(Selector.SIDEBAR).overlayScrollbars({
  200. className: this._config.scrollbarTheme,
  201. sizeAutoCapable: true,
  202. scrollbars: {
  203. autoHide: this._config.scrollbarAutoHide,
  204. clickScrolling: true
  205. }
  206. });
  207. $(Selector.CONTROL_SIDEBAR + ' .control-sidebar-content').overlayScrollbars({
  208. className: this._config.scrollbarTheme,
  209. sizeAutoCapable: true,
  210. scrollbars: {
  211. autoHide: this._config.scrollbarAutoHide,
  212. clickScrolling: true
  213. }
  214. });
  215. }
  216. } else {
  217. if (heights.window > heights.sidebar) {
  218. $(Selector.CONTENT).css('min-height', heights.window - heights.header - heights.footer);
  219. } else {
  220. $(Selector.CONTENT).css('min-height', heights.sidebar - heights.header);
  221. }
  222. }
  223. } // Private
  224. ;
  225. _proto._init = function _init() {
  226. var _this = this;
  227. // Enable transitions
  228. $('body').removeClass(ClassName.HOLD); // Activate layout height watcher
  229. this.fixLayoutHeight();
  230. $(Selector.SIDEBAR).on('collapsed.lte.treeview expanded.lte.treeview collapsed.lte.pushmenu expanded.lte.pushmenu', function () {
  231. _this.fixLayoutHeight();
  232. });
  233. $(window).resize(function () {
  234. _this.fixLayoutHeight();
  235. });
  236. $('body, html').css('height', 'auto');
  237. };
  238. _proto._max = function _max(numbers) {
  239. // Calculate the maximum number in a list
  240. var max = 0;
  241. Object.keys(numbers).forEach(function (key) {
  242. if (numbers[key] > max) {
  243. max = numbers[key];
  244. }
  245. });
  246. return max;
  247. } // Static
  248. ;
  249. Layout._jQueryInterface = function _jQueryInterface(config) {
  250. return this.each(function () {
  251. var data = $(this).data(DATA_KEY);
  252. var _config = $.extend({}, Default, $(this).data());
  253. if (!data) {
  254. data = new Layout($(this), _config);
  255. $(this).data(DATA_KEY, data);
  256. }
  257. if (config === 'init') {
  258. data[config]();
  259. }
  260. });
  261. };
  262. return Layout;
  263. }();
  264. /**
  265. * Data API
  266. * ====================================================
  267. */
  268. $(window).on('load', function () {
  269. Layout._jQueryInterface.call($('body'));
  270. });
  271. $(Selector.SIDEBAR + ' a').on('focusin', function () {
  272. $(Selector.MAIN_SIDEBAR).addClass(ClassName.SIDEBAR_FOCUSED);
  273. });
  274. $(Selector.SIDEBAR + ' a').on('focusout', function () {
  275. $(Selector.MAIN_SIDEBAR).removeClass(ClassName.SIDEBAR_FOCUSED);
  276. });
  277. /**
  278. * jQuery API
  279. * ====================================================
  280. */
  281. $.fn[NAME] = Layout._jQueryInterface;
  282. $.fn[NAME].Constructor = Layout;
  283. $.fn[NAME].noConflict = function () {
  284. $.fn[NAME] = JQUERY_NO_CONFLICT;
  285. return Layout._jQueryInterface;
  286. };
  287. return Layout;
  288. }(jQuery);
  289. /**
  290. * --------------------------------------------
  291. * AdminLTE PushMenu.js
  292. * License MIT
  293. * --------------------------------------------
  294. */
  295. var PushMenu = function ($) {
  296. /**
  297. * Constants
  298. * ====================================================
  299. */
  300. var NAME = 'PushMenu';
  301. var DATA_KEY = 'lte.pushmenu';
  302. var EVENT_KEY = "." + DATA_KEY;
  303. var JQUERY_NO_CONFLICT = $.fn[NAME];
  304. var Event = {
  305. COLLAPSED: "collapsed" + EVENT_KEY,
  306. SHOWN: "shown" + EVENT_KEY
  307. };
  308. var Default = {
  309. autoCollapseSize: false,
  310. screenCollapseSize: 768
  311. };
  312. var Selector = {
  313. TOGGLE_BUTTON: '[data-widget="pushmenu"]',
  314. SIDEBAR_MINI: '.sidebar-mini',
  315. SIDEBAR_COLLAPSED: '.sidebar-collapse',
  316. BODY: 'body',
  317. OVERLAY: '#sidebar-overlay',
  318. WRAPPER: '.wrapper'
  319. };
  320. var ClassName = {
  321. SIDEBAR_OPEN: 'sidebar-open',
  322. COLLAPSED: 'sidebar-collapse',
  323. OPEN: 'sidebar-open',
  324. SIDEBAR_MINI: 'sidebar-mini'
  325. /**
  326. * Class Definition
  327. * ====================================================
  328. */
  329. };
  330. var PushMenu =
  331. /*#__PURE__*/
  332. function () {
  333. function PushMenu(element, options) {
  334. this._element = element;
  335. this._options = $.extend({}, Default, options);
  336. this._init();
  337. if (!$(Selector.OVERLAY).length) {
  338. this._addOverlay();
  339. }
  340. } // Public
  341. var _proto = PushMenu.prototype;
  342. _proto.show = function show() {
  343. $(Selector.BODY).addClass(ClassName.OPEN).removeClass(ClassName.COLLAPSED);
  344. var shownEvent = $.Event(Event.SHOWN);
  345. $(this._element).trigger(shownEvent);
  346. };
  347. _proto.collapse = function collapse() {
  348. $(Selector.BODY).removeClass(ClassName.OPEN).addClass(ClassName.COLLAPSED);
  349. var collapsedEvent = $.Event(Event.COLLAPSED);
  350. $(this._element).trigger(collapsedEvent);
  351. };
  352. _proto.isShown = function isShown() {
  353. if ($(window).width() >= this._options.screenCollapseSize) {
  354. return !$(Selector.BODY).hasClass(ClassName.COLLAPSED);
  355. } else {
  356. return $(Selector.BODY).hasClass(ClassName.OPEN);
  357. }
  358. };
  359. _proto.toggle = function toggle() {
  360. if (this.isShown()) {
  361. this.collapse();
  362. } else {
  363. this.show();
  364. }
  365. };
  366. _proto.autoCollapse = function autoCollapse() {
  367. if (this._options.autoCollapseSize) {
  368. if ($(window).width() <= this._options.autoCollapseSize) {
  369. if (this.isShown()) {
  370. this.toggle();
  371. }
  372. } else {
  373. if (!this.isShown()) {
  374. this.toggle();
  375. }
  376. }
  377. }
  378. } // Private
  379. ;
  380. _proto._init = function _init() {
  381. var _this = this;
  382. this.autoCollapse();
  383. $(window).resize(function () {
  384. _this.autoCollapse();
  385. });
  386. };
  387. _proto._addOverlay = function _addOverlay() {
  388. var _this2 = this;
  389. var overlay = $('<div />', {
  390. id: 'sidebar-overlay'
  391. });
  392. overlay.on('click', function () {
  393. _this2.collapse();
  394. });
  395. $(Selector.WRAPPER).append(overlay);
  396. } // Static
  397. ;
  398. PushMenu._jQueryInterface = function _jQueryInterface(operation) {
  399. return this.each(function () {
  400. var data = $(this).data(DATA_KEY);
  401. var _options = $.extend({}, Default, $(this).data());
  402. if (!data) {
  403. data = new PushMenu(this, _options);
  404. $(this).data(DATA_KEY, data);
  405. }
  406. if (operation === 'toggle') {
  407. data[operation]();
  408. }
  409. });
  410. };
  411. return PushMenu;
  412. }();
  413. /**
  414. * Data API
  415. * ====================================================
  416. */
  417. $(document).on('click', Selector.TOGGLE_BUTTON, function (event) {
  418. event.preventDefault();
  419. var button = event.currentTarget;
  420. if ($(button).data('widget') !== 'pushmenu') {
  421. button = $(button).closest(Selector.TOGGLE_BUTTON);
  422. }
  423. PushMenu._jQueryInterface.call($(button), 'toggle');
  424. });
  425. $(window).on('load', function () {
  426. PushMenu._jQueryInterface.call($(Selector.TOGGLE_BUTTON));
  427. });
  428. /**
  429. * jQuery API
  430. * ====================================================
  431. */
  432. $.fn[NAME] = PushMenu._jQueryInterface;
  433. $.fn[NAME].Constructor = PushMenu;
  434. $.fn[NAME].noConflict = function () {
  435. $.fn[NAME] = JQUERY_NO_CONFLICT;
  436. return PushMenu._jQueryInterface;
  437. };
  438. return PushMenu;
  439. }(jQuery);
  440. /**
  441. * --------------------------------------------
  442. * AdminLTE Treeview.js
  443. * License MIT
  444. * --------------------------------------------
  445. */
  446. var Treeview = function ($) {
  447. /**
  448. * Constants
  449. * ====================================================
  450. */
  451. var NAME = 'Treeview';
  452. var DATA_KEY = 'lte.treeview';
  453. var EVENT_KEY = "." + DATA_KEY;
  454. var JQUERY_NO_CONFLICT = $.fn[NAME];
  455. var Event = {
  456. SELECTED: "selected" + EVENT_KEY,
  457. EXPANDED: "expanded" + EVENT_KEY,
  458. COLLAPSED: "collapsed" + EVENT_KEY,
  459. LOAD_DATA_API: "load" + EVENT_KEY
  460. };
  461. var Selector = {
  462. LI: '.nav-item',
  463. LINK: '.nav-link',
  464. TREEVIEW_MENU: '.nav-treeview',
  465. OPEN: '.menu-open',
  466. DATA_WIDGET: '[data-widget="treeview"]'
  467. };
  468. var ClassName = {
  469. LI: 'nav-item',
  470. LINK: 'nav-link',
  471. TREEVIEW_MENU: 'nav-treeview',
  472. OPEN: 'menu-open'
  473. };
  474. var Default = {
  475. trigger: Selector.DATA_WIDGET + " " + Selector.LINK,
  476. animationSpeed: 300,
  477. accordion: true
  478. /**
  479. * Class Definition
  480. * ====================================================
  481. */
  482. };
  483. var Treeview =
  484. /*#__PURE__*/
  485. function () {
  486. function Treeview(element, config) {
  487. this._config = config;
  488. this._element = element;
  489. } // Public
  490. var _proto = Treeview.prototype;
  491. _proto.init = function init() {
  492. this._setupListeners();
  493. };
  494. _proto.expand = function expand(treeviewMenu, parentLi) {
  495. var _this = this;
  496. var expandedEvent = $.Event(Event.EXPANDED);
  497. if (this._config.accordion) {
  498. var openMenuLi = parentLi.siblings(Selector.OPEN).first();
  499. var openTreeview = openMenuLi.find(Selector.TREEVIEW_MENU).first();
  500. this.collapse(openTreeview, openMenuLi);
  501. }
  502. treeviewMenu.slideDown(this._config.animationSpeed, function () {
  503. parentLi.addClass(ClassName.OPEN);
  504. $(_this._element).trigger(expandedEvent);
  505. });
  506. };
  507. _proto.collapse = function collapse(treeviewMenu, parentLi) {
  508. var _this2 = this;
  509. var collapsedEvent = $.Event(Event.COLLAPSED);
  510. treeviewMenu.slideUp(this._config.animationSpeed, function () {
  511. parentLi.removeClass(ClassName.OPEN);
  512. $(_this2._element).trigger(collapsedEvent);
  513. treeviewMenu.find(Selector.OPEN + " > " + Selector.TREEVIEW_MENU).slideUp();
  514. treeviewMenu.find(Selector.OPEN).removeClass(ClassName.OPEN);
  515. });
  516. };
  517. _proto.toggle = function toggle(event) {
  518. var $relativeTarget = $(event.currentTarget);
  519. var treeviewMenu = $relativeTarget.next();
  520. if (!treeviewMenu.is(Selector.TREEVIEW_MENU)) {
  521. return;
  522. }
  523. event.preventDefault();
  524. var parentLi = $relativeTarget.parents(Selector.LI).first();
  525. var isOpen = parentLi.hasClass(ClassName.OPEN);
  526. if (isOpen) {
  527. this.collapse($(treeviewMenu), parentLi);
  528. } else {
  529. this.expand($(treeviewMenu), parentLi);
  530. }
  531. } // Private
  532. ;
  533. _proto._setupListeners = function _setupListeners() {
  534. var _this3 = this;
  535. $(document).on('click', this._config.trigger, function (event) {
  536. _this3.toggle(event);
  537. });
  538. } // Static
  539. ;
  540. Treeview._jQueryInterface = function _jQueryInterface(config) {
  541. return this.each(function () {
  542. var data = $(this).data(DATA_KEY);
  543. var _config = $.extend({}, Default, $(this).data());
  544. if (!data) {
  545. data = new Treeview($(this), _config);
  546. $(this).data(DATA_KEY, data);
  547. }
  548. if (config === 'init') {
  549. data[config]();
  550. }
  551. });
  552. };
  553. return Treeview;
  554. }();
  555. /**
  556. * Data API
  557. * ====================================================
  558. */
  559. $(window).on(Event.LOAD_DATA_API, function () {
  560. $(Selector.DATA_WIDGET).each(function () {
  561. Treeview._jQueryInterface.call($(this), 'init');
  562. });
  563. });
  564. /**
  565. * jQuery API
  566. * ====================================================
  567. */
  568. $.fn[NAME] = Treeview._jQueryInterface;
  569. $.fn[NAME].Constructor = Treeview;
  570. $.fn[NAME].noConflict = function () {
  571. $.fn[NAME] = JQUERY_NO_CONFLICT;
  572. return Treeview._jQueryInterface;
  573. };
  574. return Treeview;
  575. }(jQuery);
  576. /**
  577. * --------------------------------------------
  578. * AdminLTE Widget.js
  579. * License MIT
  580. * --------------------------------------------
  581. */
  582. var Widget = function ($) {
  583. /**
  584. * Constants
  585. * ====================================================
  586. */
  587. var NAME = 'Widget';
  588. var DATA_KEY = 'lte.widget';
  589. var EVENT_KEY = "." + DATA_KEY;
  590. var JQUERY_NO_CONFLICT = $.fn[NAME];
  591. var Event = {
  592. EXPANDED: "expanded" + EVENT_KEY,
  593. COLLAPSED: "collapsed" + EVENT_KEY,
  594. MAXIMIZED: "maximized" + EVENT_KEY,
  595. MINIMIZED: "minimized" + EVENT_KEY,
  596. REMOVED: "removed" + EVENT_KEY
  597. };
  598. var Selector = {
  599. DATA_REMOVE: '[data-widget="remove"]',
  600. DATA_COLLAPSE: '[data-widget="collapse"]',
  601. DATA_MAXIMIZE: '[data-widget="maximize"]',
  602. CARD: '.card',
  603. CARD_HEADER: '.card-header',
  604. CARD_BODY: '.card-body',
  605. CARD_FOOTER: '.card-footer',
  606. COLLAPSED: '.collapsed-card',
  607. COLLAPSE_ICON: '.fa-minus',
  608. EXPAND_ICON: '.fa-plus'
  609. };
  610. var ClassName = {
  611. COLLAPSED: 'collapsed-card',
  612. WAS_COLLAPSED: 'was-collapsed',
  613. MAXIMIZED: 'maximized-card',
  614. COLLAPSE_ICON: 'fa-minus',
  615. EXPAND_ICON: 'fa-plus',
  616. MAXIMIZE_ICON: 'fa-expand',
  617. MINIMIZE_ICON: 'fa-compress'
  618. };
  619. var Default = {
  620. animationSpeed: 'normal',
  621. collapseTrigger: Selector.DATA_COLLAPSE,
  622. removeTrigger: Selector.DATA_REMOVE
  623. };
  624. var Widget =
  625. /*#__PURE__*/
  626. function () {
  627. function Widget(element, settings) {
  628. this._element = element;
  629. this._parent = element.parents(Selector.CARD).first();
  630. this._settings = $.extend({}, Default, settings);
  631. }
  632. var _proto = Widget.prototype;
  633. _proto.collapse = function collapse() {
  634. var _this = this;
  635. this._parent.children(Selector.CARD_BODY + ", " + Selector.CARD_FOOTER).slideUp(this._settings.animationSpeed, function () {
  636. _this._parent.addClass(ClassName.COLLAPSED);
  637. });
  638. this._element.children(Selector.COLLAPSE_ICON).addClass(ClassName.EXPAND_ICON).removeClass(ClassName.COLLAPSE_ICON);
  639. var collapsed = $.Event(Event.COLLAPSED);
  640. this._element.trigger(collapsed, this._parent);
  641. };
  642. _proto.expand = function expand() {
  643. var _this2 = this;
  644. this._parent.children(Selector.CARD_BODY + ", " + Selector.CARD_FOOTER).slideDown(this._settings.animationSpeed, function () {
  645. _this2._parent.removeClass(ClassName.COLLAPSED);
  646. });
  647. this._element.children(Selector.EXPAND_ICON).addClass(ClassName.COLLAPSE_ICON).removeClass(ClassName.EXPAND_ICON);
  648. var expanded = $.Event(Event.EXPANDED);
  649. this._element.trigger(expanded, this._parent);
  650. };
  651. _proto.remove = function remove() {
  652. this._parent.slideUp();
  653. var removed = $.Event(Event.REMOVED);
  654. this._element.trigger(removed, this._parent);
  655. };
  656. _proto.toggle = function toggle() {
  657. if (this._parent.hasClass(ClassName.COLLAPSED)) {
  658. this.expand();
  659. return;
  660. }
  661. this.collapse();
  662. };
  663. _proto.toggleMaximize = function toggleMaximize() {
  664. var button = this._element.find('i');
  665. if (this._parent.hasClass(ClassName.MAXIMIZED)) {
  666. button.addClass(ClassName.MAXIMIZE_ICON).removeClass(ClassName.MINIMIZE_ICON);
  667. this._parent.css('cssText', 'height:' + this._parent[0].style.height + ' !important;' + 'width:' + this._parent[0].style.width + ' !important; transition: all .15s;').delay(100).queue(function () {
  668. $(this).removeClass(ClassName.MAXIMIZED);
  669. $('html').removeClass(ClassName.MAXIMIZED);
  670. $(this).trigger(Event.MINIMIZED);
  671. $(this).css({
  672. 'height': 'inherit',
  673. 'width': 'inherit'
  674. });
  675. if ($(this).hasClass(ClassName.WAS_COLLAPSED)) {
  676. $(this).removeClass(ClassName.WAS_COLLAPSED);
  677. }
  678. $(this).dequeue();
  679. });
  680. } else {
  681. button.addClass(ClassName.MINIMIZE_ICON).removeClass(ClassName.MAXIMIZE_ICON);
  682. this._parent.css({
  683. 'height': this._parent.height(),
  684. 'width': this._parent.width(),
  685. 'transition': 'all .15s'
  686. }).delay(150).queue(function () {
  687. $(this).addClass(ClassName.MAXIMIZED);
  688. $('html').addClass(ClassName.MAXIMIZED);
  689. $(this).trigger(Event.MAXIMIZED);
  690. if ($(this).hasClass(ClassName.COLLAPSED)) {
  691. $(this).addClass(ClassName.WAS_COLLAPSED);
  692. }
  693. $(this).dequeue();
  694. });
  695. }
  696. } // Private
  697. ;
  698. _proto._init = function _init(card) {
  699. var _this3 = this;
  700. this._parent = card;
  701. $(this).find(this._settings.collapseTrigger).click(function () {
  702. _this3.toggle();
  703. });
  704. $(this).find(this._settings.removeTrigger).click(function () {
  705. _this3.remove();
  706. });
  707. } // Static
  708. ;
  709. Widget._jQueryInterface = function _jQueryInterface(config) {
  710. return this.each(function () {
  711. var data = $(this).data(DATA_KEY);
  712. if (!data) {
  713. data = new Widget($(this), data);
  714. $(this).data(DATA_KEY, typeof config === 'string' ? data : config);
  715. }
  716. if (typeof config === 'string' && config.match(/remove|toggle/)) {
  717. data[config]();
  718. } else if (typeof config === 'object') {
  719. data._init($(this));
  720. }
  721. });
  722. };
  723. return Widget;
  724. }();
  725. /**
  726. * Data API
  727. * ====================================================
  728. */
  729. $(document).on('click', Selector.DATA_COLLAPSE, function (event) {
  730. if (event) {
  731. event.preventDefault();
  732. }
  733. Widget._jQueryInterface.call($(this), 'toggle');
  734. });
  735. $(document).on('click', Selector.DATA_REMOVE, function (event) {
  736. if (event) {
  737. event.preventDefault();
  738. }
  739. Widget._jQueryInterface.call($(this), 'remove');
  740. });
  741. $(document).on('click', Selector.DATA_MAXIMIZE, function (event) {
  742. if (event) {
  743. event.preventDefault();
  744. }
  745. Widget._jQueryInterface.call($(this), 'toggleMaximize');
  746. });
  747. /**
  748. * jQuery API
  749. * ====================================================
  750. */
  751. $.fn[NAME] = Widget._jQueryInterface;
  752. $.fn[NAME].Constructor = Widget;
  753. $.fn[NAME].noConflict = function () {
  754. $.fn[NAME] = JQUERY_NO_CONFLICT;
  755. return Widget._jQueryInterface;
  756. };
  757. return Widget;
  758. }(jQuery);
  759. exports.ControlSidebar = ControlSidebar;
  760. exports.Layout = Layout;
  761. exports.PushMenu = PushMenu;
  762. exports.Treeview = Treeview;
  763. exports.Widget = Widget;
  764. Object.defineProperty(exports, '__esModule', { value: true });
  765. }));
  766. //# sourceMappingURL=adminlte.js.map