admin-lte 4.0.0-alpha2 → 4.0.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/.bundlewatch.config.json +6 -6
  2. package/.cache/.eslintcache +1 -1
  3. package/.cache/.stylelintcache +1 -1
  4. package/.gitpod.yml +1 -1
  5. package/README.md +9 -4
  6. package/dist/assets/img/AdminLTEFullLogo.png +0 -0
  7. package/dist/css/adminlte.css +879 -418
  8. package/dist/css/adminlte.css.map +1 -1
  9. package/dist/css/adminlte.min.css +2 -2
  10. package/dist/css/adminlte.min.css.map +1 -1
  11. package/dist/css/adminlte.rtl.css +886 -416
  12. package/dist/css/adminlte.rtl.css.map +1 -1
  13. package/dist/css/adminlte.rtl.min.css +2 -2
  14. package/dist/css/adminlte.rtl.min.css.map +1 -1
  15. package/dist/js/adminlte.js +178 -96
  16. package/dist/js/adminlte.js.map +1 -1
  17. package/dist/js/adminlte.min.js +3 -3
  18. package/dist/js/adminlte.min.js.map +1 -1
  19. package/dist/pages/UI/general.html +895 -0
  20. package/dist/pages/UI/timeline.html +309 -515
  21. package/dist/pages/docs/browser-support.html +265 -433
  22. package/dist/pages/docs/color-mode.html +482 -615
  23. package/dist/pages/docs/components/main-header.html +516 -703
  24. package/dist/pages/docs/components/main-sidebar.html +550 -0
  25. package/dist/pages/docs/faq.html +433 -0
  26. package/dist/pages/docs/how-to-contribute.html +474 -0
  27. package/dist/pages/docs/introduction.html +463 -0
  28. package/dist/pages/docs/javascript/treeview.html +453 -0
  29. package/dist/pages/docs/layout.html +293 -433
  30. package/dist/pages/docs/license.html +436 -0
  31. package/dist/pages/examples/lockscreen.html +69 -0
  32. package/dist/pages/examples/login-v2.html +88 -0
  33. package/dist/pages/examples/login.html +49 -100
  34. package/dist/pages/examples/register-v2.html +90 -0
  35. package/dist/pages/examples/register.html +50 -103
  36. package/dist/pages/forms/general.html +430 -454
  37. package/dist/pages/index.html +466 -740
  38. package/dist/pages/index2.html +672 -1041
  39. package/dist/pages/index3.html +371 -629
  40. package/dist/pages/layout/collapsed-sidebar.html +441 -0
  41. package/dist/pages/layout/fixed-complete.html +541 -0
  42. package/dist/pages/layout/fixed-sidebar.html +263 -446
  43. package/dist/pages/layout/layout-rtl.html +263 -445
  44. package/dist/pages/layout/logo-switch.html +234 -0
  45. package/dist/pages/layout/sidebar-mini.html +263 -445
  46. package/dist/pages/layout/unfixed-sidebar.html +263 -445
  47. package/dist/pages/tables/simple.html +314 -499
  48. package/dist/pages/widgets/cards.html +326 -629
  49. package/dist/pages/widgets/info-box.html +348 -674
  50. package/dist/pages/widgets/small-box.html +279 -465
  51. package/index.html +6 -10
  52. package/package.json +34 -30
  53. package/src/assets/img/AdminLTEFullLogo.png +0 -0
  54. package/src/config/astro.config.mjs +3 -1
  55. package/src/html/.prettierrc.js +11 -0
  56. package/src/html/components/_head.astro +32 -26
  57. package/src/html/components/_scripts.astro +27 -28
  58. package/src/html/components/dashboard/_footer.astro +14 -8
  59. package/src/html/components/dashboard/_sidenav.astro +352 -113
  60. package/src/html/components/dashboard/_topbar.astro +99 -50
  61. package/src/html/components/docs/{browser-support/index.md → browser-support.mdx} +2 -1
  62. package/src/html/components/docs/color-mode.mdx +169 -0
  63. package/src/html/components/docs/components/{main-header-1.md → main-header.mdx} +60 -21
  64. package/src/html/components/docs/components/main-sidebar.mdx +129 -0
  65. package/src/html/components/docs/faq.mdx +11 -0
  66. package/src/html/components/docs/how-to-contribute.mdx +34 -0
  67. package/src/html/components/docs/{introduction/index.md → introduction.mdx} +30 -5
  68. package/src/html/components/docs/license.mdx +9 -0
  69. package/src/html/components/javascript/treeview.mdx +39 -0
  70. package/src/html/pages/UI/general.astro +1451 -0
  71. package/src/html/pages/UI/timeline.astro +111 -48
  72. package/src/html/pages/docs/browser-support.astro +24 -11
  73. package/src/html/pages/docs/color-mode.astro +91 -42
  74. package/src/html/pages/docs/components/main-header.astro +134 -46
  75. package/src/html/pages/docs/components/main-sidebar.astro +71 -0
  76. package/src/html/pages/docs/faq.astro +71 -0
  77. package/src/html/pages/docs/how-to-contribute.astro +71 -0
  78. package/src/html/pages/docs/{index.astro → introduction.astro} +24 -11
  79. package/src/html/pages/docs/javascript/treeview.astro +71 -0
  80. package/src/html/pages/docs/layout.astro +62 -19
  81. package/src/html/pages/docs/license.astro +71 -0
  82. package/src/html/pages/examples/lockscreen.astro +63 -0
  83. package/src/html/pages/examples/login-v2.astro +109 -0
  84. package/src/html/pages/examples/login.astro +34 -16
  85. package/src/html/pages/examples/register-v2.astro +116 -0
  86. package/src/html/pages/examples/register.astro +36 -18
  87. package/src/html/pages/forms/general.astro +568 -37
  88. package/src/html/pages/index.astro +403 -157
  89. package/src/html/pages/index2.astro +715 -255
  90. package/src/html/pages/index3.astro +298 -197
  91. package/src/html/pages/layout/collapsed-sidebar.astro +110 -0
  92. package/src/html/pages/layout/fixed-complete.astro +209 -0
  93. package/src/html/pages/layout/fixed-sidebar.astro +52 -27
  94. package/src/html/pages/layout/layout-rtl.astro +53 -28
  95. package/src/html/pages/layout/logo-switch.astro +212 -0
  96. package/src/html/pages/layout/sidebar-mini.astro +53 -28
  97. package/src/html/pages/layout/unfixed-sidebar.astro +51 -27
  98. package/src/html/pages/tables/simple.astro +226 -86
  99. package/src/html/pages/widgets/cards.astro +137 -72
  100. package/src/html/pages/widgets/info-box.astro +96 -41
  101. package/src/html/pages/widgets/small-box.astro +93 -32
  102. package/src/scss/_app-content.scss +52 -0
  103. package/src/scss/_app-footer.scss +1 -1
  104. package/src/scss/_app-main.scss +6 -5
  105. package/src/scss/_app-sidebar.scss +244 -70
  106. package/src/scss/_bootstrap-variables.scss +26 -22
  107. package/src/scss/_callouts.scss +6 -0
  108. package/src/scss/_cards.scss +32 -7
  109. package/src/scss/_compact-mode.scss +79 -0
  110. package/src/scss/_direct-chat.scss +5 -0
  111. package/src/scss/_dropdown.scss +1 -0
  112. package/src/scss/_info-box.scss +2 -10
  113. package/src/scss/_small-box.scss +0 -3
  114. package/src/scss/_timeline.scss +1 -0
  115. package/src/scss/_toasts.scss +33 -0
  116. package/src/scss/_variables.scss +32 -9
  117. package/src/scss/adminlte.scss +1 -2
  118. package/src/scss/mixins/_animations.scss +0 -5
  119. package/src/scss/pages/_lockscreen.scss +75 -0
  120. package/src/scss/pages/_login_and_register.scss +1 -3
  121. package/src/scss/parts/_core.scss +2 -0
  122. package/src/scss/parts/_extra-components.scss +1 -0
  123. package/src/scss/parts/_pages.scss +1 -0
  124. package/src/ts/adminlte.ts +3 -1
  125. package/src/ts/card-widget.ts +20 -52
  126. package/src/ts/direct-chat.ts +5 -4
  127. package/src/ts/fullscreen.ts +110 -0
  128. package/src/ts/layout.ts +5 -4
  129. package/src/ts/push-menu.ts +6 -22
  130. package/src/ts/treeview.ts +34 -11
  131. package/src/ts/util/index.ts +15 -13
  132. package/src/utils/index.js +20 -3
  133. package/.idea/AdminLTE.iml +0 -12
  134. package/.idea/codeStyles/Project.xml +0 -29
  135. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  136. package/.idea/inspectionProfiles/Project_Default.xml +0 -7
  137. package/.idea/modules.xml +0 -8
  138. package/.idea/php.xml +0 -28
  139. package/.idea/vcs.xml +0 -6
  140. package/dist/pages/docs.html +0 -617
  141. package/src/html/components/docs/color-mode/navbar-html.md +0 -80
  142. package/src/html/components/docs/color-mode/toggle-script.md +0 -48
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * AdminLTE v4.0.0-alpha2 (https://adminlte.io)
3
- * Copyright 2014-2023 Colorlib <https://colorlib.com>
2
+ * AdminLTE v4.0.0-beta1 (https://adminlte.io)
3
+ * Copyright 2014-2024 Colorlib <https://colorlib.com>
4
4
  * Licensed under MIT (https://github.com/ColorlibHQ/AdminLTE/blob/master/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
@@ -9,12 +9,21 @@
9
9
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.adminlte = {}));
10
10
  })(this, (function (exports) { 'use strict';
11
11
 
12
- const domReady = (callBack) => {
12
+ const domContentLoadedCallbacks = [];
13
+ const onDOMContentLoaded = (callback) => {
13
14
  if (document.readyState === 'loading') {
14
- document.addEventListener('DOMContentLoaded', callBack);
15
+ // add listener on the first call when the document is in loading state
16
+ if (!domContentLoadedCallbacks.length) {
17
+ document.addEventListener('DOMContentLoaded', () => {
18
+ for (const callback of domContentLoadedCallbacks) {
19
+ callback();
20
+ }
21
+ });
22
+ }
23
+ domContentLoadedCallbacks.push(callback);
15
24
  }
16
25
  else {
17
- callBack();
26
+ callback();
18
27
  }
19
28
  };
20
29
  /* SLIDE UP */
@@ -78,8 +87,9 @@
78
87
 
79
88
  /**
80
89
  * --------------------------------------------
81
- * AdminLTE layout.ts
82
- * License MIT
90
+ * @file AdminLTE layout.ts
91
+ * @description Layout for AdminLTE.
92
+ * @license MIT
83
93
  * --------------------------------------------
84
94
  */
85
95
  /**
@@ -108,7 +118,7 @@
108
118
  });
109
119
  }
110
120
  }
111
- domReady(() => {
121
+ onDOMContentLoaded(() => {
112
122
  const data = new Layout(document.body);
113
123
  data.holdTransition();
114
124
  setTimeout(() => {
@@ -118,8 +128,9 @@
118
128
 
119
129
  /**
120
130
  * --------------------------------------------
121
- * AdminLTE push-menu.ts
122
- * License MIT
131
+ * @file AdminLTE push-menu.ts
132
+ * @description Push menu for AdminLTE.
133
+ * @license MIT
123
134
  * --------------------------------------------
124
135
  */
125
136
  /**
@@ -127,19 +138,17 @@
127
138
  * Constants
128
139
  * ------------------------------------------------------------------------
129
140
  */
130
- const DATA_KEY$3 = 'lte.push-menu';
131
- const EVENT_KEY$3 = `.${DATA_KEY$3}`;
132
- const EVENT_OPEN = `open${EVENT_KEY$3}`;
133
- const EVENT_COLLAPSE = `collapse${EVENT_KEY$3}`;
141
+ const DATA_KEY$4 = 'lte.push-menu';
142
+ const EVENT_KEY$4 = `.${DATA_KEY$4}`;
143
+ const EVENT_OPEN = `open${EVENT_KEY$4}`;
144
+ const EVENT_COLLAPSE = `collapse${EVENT_KEY$4}`;
134
145
  const CLASS_NAME_SIDEBAR_MINI = 'sidebar-mini';
135
146
  const CLASS_NAME_SIDEBAR_COLLAPSE = 'sidebar-collapse';
136
147
  const CLASS_NAME_SIDEBAR_OPEN = 'sidebar-open';
137
- const CLASS_NAME_SIDEBAR_IS_HOVER = 'sidebar-is-hover';
138
148
  const CLASS_NAME_SIDEBAR_EXPAND = 'sidebar-expand';
139
149
  const CLASS_NAME_SIDEBAR_OVERLAY = 'sidebar-overlay';
140
150
  const CLASS_NAME_MENU_OPEN$1 = 'menu-open';
141
151
  const SELECTOR_APP_SIDEBAR = '.app-sidebar';
142
- const SELECTOR_SIDEBAR_WRAPPER = '.sidebar-wrapper';
143
152
  const SELECTOR_SIDEBAR_MENU = '.sidebar-menu';
144
153
  const SELECTOR_NAV_ITEM$1 = '.nav-item';
145
154
  const SELECTOR_NAV_TREEVIEW = '.nav-treeview';
@@ -185,17 +194,6 @@
185
194
  document.body.classList.add(CLASS_NAME_SIDEBAR_COLLAPSE);
186
195
  this._element.dispatchEvent(event);
187
196
  }
188
- sidebarHover() {
189
- const selSidebar = document.querySelector(SELECTOR_SIDEBAR_WRAPPER);
190
- if (selSidebar) {
191
- selSidebar.addEventListener('mouseover', () => {
192
- document.body.classList.add(CLASS_NAME_SIDEBAR_IS_HOVER);
193
- });
194
- selSidebar.addEventListener('mouseout', () => {
195
- document.body.classList.remove(CLASS_NAME_SIDEBAR_IS_HOVER);
196
- });
197
- }
198
- }
199
197
  addSidebarBreakPoint() {
200
198
  var _a, _b, _c;
201
199
  const sidebarExpandList = (_b = (_a = document.querySelector(SELECTOR_SIDEBAR_EXPAND)) === null || _a === void 0 ? void 0 : _a.classList) !== null && _b !== void 0 ? _b : [];
@@ -210,7 +208,7 @@
210
208
  if (!document.body.classList.contains(CLASS_NAME_SIDEBAR_MINI)) {
211
209
  this.expand();
212
210
  }
213
- if (document.body.classList.contains(CLASS_NAME_SIDEBAR_MINI)) {
211
+ if (document.body.classList.contains(CLASS_NAME_SIDEBAR_MINI) && document.body.classList.contains(CLASS_NAME_SIDEBAR_COLLAPSE)) {
214
212
  this.collapse();
215
213
  }
216
214
  }
@@ -225,7 +223,6 @@
225
223
  }
226
224
  init() {
227
225
  this.addSidebarBreakPoint();
228
- this.sidebarHover();
229
226
  }
230
227
  }
231
228
  /**
@@ -233,7 +230,7 @@
233
230
  * Data Api implementation
234
231
  * ------------------------------------------------------------------------
235
232
  */
236
- domReady(() => {
233
+ onDOMContentLoaded(() => {
237
234
  var _a;
238
235
  const sidebar = document === null || document === void 0 ? void 0 : document.querySelector(SELECTOR_APP_SIDEBAR);
239
236
  if (sidebar) {
@@ -277,8 +274,9 @@
277
274
 
278
275
  /**
279
276
  * --------------------------------------------
280
- * AdminLTE treeview.ts
281
- * License MIT
277
+ * @file AdminLTE treeview.ts
278
+ * @description Treeview plugin for AdminLTE.
279
+ * @license MIT
282
280
  * --------------------------------------------
283
281
  */
284
282
  /**
@@ -287,17 +285,19 @@
287
285
  * ------------------------------------------------------------------------
288
286
  */
289
287
  // const NAME = 'Treeview'
290
- const DATA_KEY$2 = 'lte.treeview';
291
- const EVENT_KEY$2 = `.${DATA_KEY$2}`;
292
- const EVENT_EXPANDED$2 = `expanded${EVENT_KEY$2}`;
293
- const EVENT_COLLAPSED$2 = `collapsed${EVENT_KEY$2}`;
288
+ const DATA_KEY$3 = 'lte.treeview';
289
+ const EVENT_KEY$3 = `.${DATA_KEY$3}`;
290
+ const EVENT_EXPANDED$2 = `expanded${EVENT_KEY$3}`;
291
+ const EVENT_COLLAPSED$2 = `collapsed${EVENT_KEY$3}`;
294
292
  // const EVENT_LOAD_DATA_API = `load${EVENT_KEY}`
295
293
  const CLASS_NAME_MENU_OPEN = 'menu-open';
296
294
  const SELECTOR_NAV_ITEM = '.nav-item';
295
+ const SELECTOR_NAV_LINK = '.nav-link';
297
296
  const SELECTOR_TREEVIEW_MENU = '.nav-treeview';
298
297
  const SELECTOR_DATA_TOGGLE$1 = '[data-lte-toggle="treeview"]';
299
298
  const Default$1 = {
300
- animationSpeed: 300
299
+ animationSpeed: 300,
300
+ accordion: true
301
301
  };
302
302
  /**
303
303
  * Class Definition
@@ -307,21 +307,36 @@
307
307
  constructor(element, config) {
308
308
  this._element = element;
309
309
  this._config = Object.assign(Object.assign({}, Default$1), config);
310
- this._childNavItem = this._element.querySelector(SELECTOR_TREEVIEW_MENU);
311
310
  }
312
311
  open() {
312
+ var _a, _b;
313
313
  const event = new Event(EVENT_EXPANDED$2);
314
+ if (this._config.accordion) {
315
+ const openMenuList = (_a = this._element.parentElement) === null || _a === void 0 ? void 0 : _a.querySelectorAll(`${SELECTOR_NAV_ITEM}.${CLASS_NAME_MENU_OPEN}`);
316
+ openMenuList === null || openMenuList === void 0 ? void 0 : openMenuList.forEach(openMenu => {
317
+ if (openMenu !== this._element.parentElement) {
318
+ openMenu.classList.remove(CLASS_NAME_MENU_OPEN);
319
+ const childElement = openMenu === null || openMenu === void 0 ? void 0 : openMenu.querySelector(SELECTOR_TREEVIEW_MENU);
320
+ if (childElement) {
321
+ slideUp(childElement, this._config.animationSpeed);
322
+ }
323
+ }
324
+ });
325
+ }
314
326
  this._element.classList.add(CLASS_NAME_MENU_OPEN);
315
- if (this._childNavItem) {
316
- slideDown(this._childNavItem, this._config.animationSpeed);
327
+ const childElement = (_b = this._element) === null || _b === void 0 ? void 0 : _b.querySelector(SELECTOR_TREEVIEW_MENU);
328
+ if (childElement) {
329
+ slideDown(childElement, this._config.animationSpeed);
317
330
  }
318
331
  this._element.dispatchEvent(event);
319
332
  }
320
333
  close() {
334
+ var _a;
321
335
  const event = new Event(EVENT_COLLAPSED$2);
322
336
  this._element.classList.remove(CLASS_NAME_MENU_OPEN);
323
- if (this._childNavItem) {
324
- slideUp(this._childNavItem, this._config.animationSpeed);
337
+ const childElement = (_a = this._element) === null || _a === void 0 ? void 0 : _a.querySelector(SELECTOR_TREEVIEW_MENU);
338
+ if (childElement) {
339
+ slideUp(childElement, this._config.animationSpeed);
325
340
  }
326
341
  this._element.dispatchEvent(event);
327
342
  }
@@ -339,12 +354,16 @@
339
354
  * Data Api implementation
340
355
  * ------------------------------------------------------------------------
341
356
  */
342
- domReady(() => {
357
+ onDOMContentLoaded(() => {
343
358
  const button = document.querySelectorAll(SELECTOR_DATA_TOGGLE$1);
344
359
  button.forEach(btn => {
345
360
  btn.addEventListener('click', event => {
346
361
  const target = event.target;
347
362
  const targetItem = target.closest(SELECTOR_NAV_ITEM);
363
+ const targetLink = target.closest(SELECTOR_NAV_LINK);
364
+ if ((target === null || target === void 0 ? void 0 : target.getAttribute('href')) === '#' || (targetLink === null || targetLink === void 0 ? void 0 : targetLink.getAttribute('href')) === '#') {
365
+ event.preventDefault();
366
+ }
348
367
  if (targetItem) {
349
368
  const data = new Treeview(targetItem, Default$1);
350
369
  data.toggle();
@@ -355,18 +374,19 @@
355
374
 
356
375
  /**
357
376
  * --------------------------------------------
358
- * AdminLTE direct-chat.ts
359
- * License MIT
377
+ * @file AdminLTE direct-chat.ts
378
+ * @description Direct chat for AdminLTE.
379
+ * @license MIT
360
380
  * --------------------------------------------
361
381
  */
362
382
  /**
363
383
  * Constants
364
384
  * ====================================================
365
385
  */
366
- const DATA_KEY$1 = 'lte.direct-chat';
367
- const EVENT_KEY$1 = `.${DATA_KEY$1}`;
368
- const EVENT_EXPANDED$1 = `expanded${EVENT_KEY$1}`;
369
- const EVENT_COLLAPSED$1 = `collapsed${EVENT_KEY$1}`;
386
+ const DATA_KEY$2 = 'lte.direct-chat';
387
+ const EVENT_KEY$2 = `.${DATA_KEY$2}`;
388
+ const EVENT_EXPANDED$1 = `expanded${EVENT_KEY$2}`;
389
+ const EVENT_COLLAPSED$1 = `collapsed${EVENT_KEY$2}`;
370
390
  const SELECTOR_DATA_TOGGLE = '[data-lte-toggle="chat-pane"]';
371
391
  const SELECTOR_DIRECT_CHAT = '.direct-chat';
372
392
  const CLASS_NAME_DIRECT_CHAT_OPEN = 'direct-chat-contacts-open';
@@ -396,7 +416,7 @@
396
416
  * Data Api implementation
397
417
  * ====================================================
398
418
  */
399
- domReady(() => {
419
+ onDOMContentLoaded(() => {
400
420
  const button = document.querySelectorAll(SELECTOR_DATA_TOGGLE);
401
421
  button.forEach(btn => {
402
422
  btn.addEventListener('click', event => {
@@ -413,43 +433,39 @@
413
433
 
414
434
  /**
415
435
  * --------------------------------------------
416
- * AdminLTE card-widget.ts
417
- * License MIT
436
+ * @file AdminLTE card-widget.ts
437
+ * @description Card widget for AdminLTE.
438
+ * @license MIT
418
439
  * --------------------------------------------
419
440
  */
420
441
  /**
421
442
  * Constants
422
443
  * ====================================================
423
444
  */
424
- const DATA_KEY = 'lte.card-widget';
425
- const EVENT_KEY = `.${DATA_KEY}`;
426
- const EVENT_COLLAPSED = `collapsed${EVENT_KEY}`;
427
- const EVENT_EXPANDED = `expanded${EVENT_KEY}`;
428
- const EVENT_REMOVE = `remove${EVENT_KEY}`;
429
- const EVENT_MAXIMIZED = `maximized${EVENT_KEY}`;
430
- const EVENT_MINIMIZED = `minimized${EVENT_KEY}`;
445
+ const DATA_KEY$1 = 'lte.card-widget';
446
+ const EVENT_KEY$1 = `.${DATA_KEY$1}`;
447
+ const EVENT_COLLAPSED = `collapsed${EVENT_KEY$1}`;
448
+ const EVENT_EXPANDED = `expanded${EVENT_KEY$1}`;
449
+ const EVENT_REMOVE = `remove${EVENT_KEY$1}`;
450
+ const EVENT_MAXIMIZED$1 = `maximized${EVENT_KEY$1}`;
451
+ const EVENT_MINIMIZED$1 = `minimized${EVENT_KEY$1}`;
431
452
  const CLASS_NAME_CARD = 'card';
432
453
  const CLASS_NAME_COLLAPSED = 'collapsed-card';
433
454
  const CLASS_NAME_COLLAPSING = 'collapsing-card';
434
455
  const CLASS_NAME_EXPANDING = 'expanding-card';
435
456
  const CLASS_NAME_WAS_COLLAPSED = 'was-collapsed';
436
457
  const CLASS_NAME_MAXIMIZED = 'maximized-card';
437
- const SELECTOR_DATA_REMOVE = '[data-lte-dismiss="card-remove"]';
458
+ const SELECTOR_DATA_REMOVE = '[data-lte-toggle="card-remove"]';
438
459
  const SELECTOR_DATA_COLLAPSE = '[data-lte-toggle="card-collapse"]';
439
460
  const SELECTOR_DATA_MAXIMIZE = '[data-lte-toggle="card-maximize"]';
440
461
  const SELECTOR_CARD = `.${CLASS_NAME_CARD}`;
441
- const SELECTOR_CARD_HEADER = '.card-header';
442
462
  const SELECTOR_CARD_BODY = '.card-body';
443
463
  const SELECTOR_CARD_FOOTER = '.card-footer';
444
464
  const Default = {
445
465
  animationSpeed: 500,
446
466
  collapseTrigger: SELECTOR_DATA_COLLAPSE,
447
467
  removeTrigger: SELECTOR_DATA_REMOVE,
448
- maximizeTrigger: SELECTOR_DATA_MAXIMIZE,
449
- collapseIcon: 'fa-minus',
450
- expandIcon: 'fa-plus',
451
- maximizeIcon: 'fa-expand',
452
- minimizeIcon: 'fa-compress'
468
+ maximizeTrigger: SELECTOR_DATA_MAXIMIZE
453
469
  };
454
470
  class CardWidget {
455
471
  constructor(element, config) {
@@ -461,7 +477,7 @@
461
477
  this._config = Object.assign(Object.assign({}, Default), config);
462
478
  }
463
479
  collapse() {
464
- var _a, _b, _c;
480
+ var _a, _b;
465
481
  const event = new Event(EVENT_COLLAPSED);
466
482
  if (this._parent) {
467
483
  this._parent.classList.add(CLASS_NAME_COLLAPSING);
@@ -478,15 +494,10 @@
478
494
  }
479
495
  }, this._config.animationSpeed);
480
496
  }
481
- const icon = (_b = this._parent) === null || _b === void 0 ? void 0 : _b.querySelector(`${SELECTOR_CARD_HEADER} ${this._config.collapseTrigger} .${this._config.collapseIcon}`);
482
- if (icon) {
483
- icon.classList.remove(this._config.collapseIcon);
484
- icon.classList.add(this._config.expandIcon);
485
- }
486
- (_c = this._element) === null || _c === void 0 ? void 0 : _c.dispatchEvent(event);
497
+ (_b = this._element) === null || _b === void 0 ? void 0 : _b.dispatchEvent(event);
487
498
  }
488
499
  expand() {
489
- var _a, _b, _c;
500
+ var _a, _b;
490
501
  const event = new Event(EVENT_EXPANDED);
491
502
  if (this._parent) {
492
503
  this._parent.classList.add(CLASS_NAME_EXPANDING);
@@ -503,12 +514,7 @@
503
514
  }
504
515
  }, this._config.animationSpeed);
505
516
  }
506
- const icon = (_b = this._parent) === null || _b === void 0 ? void 0 : _b.querySelector(`${SELECTOR_CARD_HEADER} ${this._config.collapseTrigger} .${this._config.expandIcon}`);
507
- if (icon) {
508
- icon.classList.add(this._config.collapseIcon);
509
- icon.classList.remove(this._config.expandIcon);
510
- }
511
- (_c = this._element) === null || _c === void 0 ? void 0 : _c.dispatchEvent(event);
517
+ (_b = this._element) === null || _b === void 0 ? void 0 : _b.dispatchEvent(event);
512
518
  }
513
519
  remove() {
514
520
  var _a;
@@ -528,15 +534,10 @@
528
534
  }
529
535
  maximize() {
530
536
  var _a;
531
- const event = new Event(EVENT_MAXIMIZED);
537
+ const event = new Event(EVENT_MAXIMIZED$1);
532
538
  if (this._parent) {
533
- const maxElm = this._parent.querySelector(`${this._config.maximizeTrigger} .${this._config.maximizeIcon}`);
534
- if (maxElm) {
535
- maxElm.classList.add(this._config.minimizeIcon);
536
- maxElm.classList.remove(this._config.maximizeIcon);
537
- }
538
- this._parent.style.height = `${this._parent.scrollHeight}px`;
539
- this._parent.style.width = `${this._parent.scrollWidth}px`;
539
+ this._parent.style.height = `${this._parent.offsetHeight}px`;
540
+ this._parent.style.width = `${this._parent.offsetWidth}px`;
540
541
  this._parent.style.transition = 'all .15s';
541
542
  setTimeout(() => {
542
543
  const htmlTag = document.querySelector('html');
@@ -555,14 +556,11 @@
555
556
  }
556
557
  minimize() {
557
558
  var _a;
558
- const event = new Event(EVENT_MINIMIZED);
559
+ const event = new Event(EVENT_MINIMIZED$1);
559
560
  if (this._parent) {
560
- const minElm = this._parent.querySelector(`${this._config.maximizeTrigger} .${this._config.minimizeIcon}`);
561
- if (minElm) {
562
- minElm.classList.add(this._config.maximizeIcon);
563
- minElm.classList.remove(this._config.minimizeIcon);
564
- }
565
- this._parent.style.cssText = `height: ${this._parent.style.height} !important; width: ${this._parent.style.width} !important; transition: all .15s;`;
561
+ this._parent.style.height = 'auto';
562
+ this._parent.style.width = 'auto';
563
+ this._parent.style.transition = 'all .15s';
566
564
  setTimeout(() => {
567
565
  var _a;
568
566
  const htmlTag = document.querySelector('html');
@@ -593,7 +591,7 @@
593
591
  * Data Api implementation
594
592
  * ====================================================
595
593
  */
596
- domReady(() => {
594
+ onDOMContentLoaded(() => {
597
595
  const collapseBtn = document.querySelectorAll(SELECTOR_DATA_COLLAPSE);
598
596
  collapseBtn.forEach(btn => {
599
597
  btn.addEventListener('click', event => {
@@ -623,8 +621,92 @@
623
621
  });
624
622
  });
625
623
 
624
+ /**
625
+ * --------------------------------------------
626
+ * @file AdminLTE fullscreen.ts
627
+ * @description Fullscreen plugin for AdminLTE.
628
+ * @license MIT
629
+ * --------------------------------------------
630
+ */
631
+ /**
632
+ * Constants
633
+ * ============================================================================
634
+ */
635
+ const DATA_KEY = 'lte.fullscreen';
636
+ const EVENT_KEY = `.${DATA_KEY}`;
637
+ const EVENT_MAXIMIZED = `maximized${EVENT_KEY}`;
638
+ const EVENT_MINIMIZED = `minimized${EVENT_KEY}`;
639
+ const SELECTOR_FULLSCREEN_TOGGLE = '[data-lte-toggle="fullscreen"]';
640
+ const SELECTOR_MAXIMIZE_ICON = '[data-lte-icon="maximize"]';
641
+ const SELECTOR_MINIMIZE_ICON = '[data-lte-icon="minimize"]';
642
+ /**
643
+ * Class Definition.
644
+ * ============================================================================
645
+ */
646
+ class FullScreen {
647
+ constructor(element, config) {
648
+ this._element = element;
649
+ this._config = config;
650
+ }
651
+ inFullScreen() {
652
+ const event = new Event(EVENT_MAXIMIZED);
653
+ const iconMaximize = document.querySelector(SELECTOR_MAXIMIZE_ICON);
654
+ const iconMinimize = document.querySelector(SELECTOR_MINIMIZE_ICON);
655
+ void document.documentElement.requestFullscreen();
656
+ if (iconMaximize) {
657
+ iconMaximize.style.display = 'none';
658
+ }
659
+ if (iconMinimize) {
660
+ iconMinimize.style.display = 'block';
661
+ }
662
+ this._element.dispatchEvent(event);
663
+ }
664
+ outFullscreen() {
665
+ const event = new Event(EVENT_MINIMIZED);
666
+ const iconMaximize = document.querySelector(SELECTOR_MAXIMIZE_ICON);
667
+ const iconMinimize = document.querySelector(SELECTOR_MINIMIZE_ICON);
668
+ void document.exitFullscreen();
669
+ if (iconMaximize) {
670
+ iconMaximize.style.display = 'block';
671
+ }
672
+ if (iconMinimize) {
673
+ iconMinimize.style.display = 'none';
674
+ }
675
+ this._element.dispatchEvent(event);
676
+ }
677
+ toggleFullScreen() {
678
+ if (document.fullscreenEnabled) {
679
+ if (document.fullscreenElement) {
680
+ this.outFullscreen();
681
+ }
682
+ else {
683
+ this.inFullScreen();
684
+ }
685
+ }
686
+ }
687
+ }
688
+ /**
689
+ * Data Api implementation
690
+ * ============================================================================
691
+ */
692
+ onDOMContentLoaded(() => {
693
+ const buttons = document.querySelectorAll(SELECTOR_FULLSCREEN_TOGGLE);
694
+ buttons.forEach(btn => {
695
+ btn.addEventListener('click', event => {
696
+ event.preventDefault();
697
+ const target = event.target;
698
+ const button = target.closest(SELECTOR_FULLSCREEN_TOGGLE);
699
+ if (button) {
700
+ const data = new FullScreen(button, undefined);
701
+ data.toggleFullScreen();
702
+ }
703
+ });
704
+ });
705
+ });
706
+
626
707
  exports.CardWidget = CardWidget;
627
708
  exports.DirectChat = DirectChat;
709
+ exports.FullScreen = FullScreen;
628
710
  exports.Layout = Layout;
629
711
  exports.PushMenu = PushMenu;
630
712
  exports.Treeview = Treeview;