adminlte.js 22 KB

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