admin-lte 4.0.0-rc6 → 4.0.0
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.
- package/CHANGELOG.md +96 -0
- package/README.md +44 -18
- package/dist/UI/general.html +311 -92
- package/dist/UI/icons.html +311 -92
- package/dist/UI/timeline.html +311 -92
- package/dist/css/adminlte.css +2814 -1138
- package/dist/css/adminlte.css.map +1 -1
- package/dist/css/adminlte.min.css +2 -2
- package/dist/css/adminlte.min.css.map +1 -1
- package/dist/css/adminlte.rtl.css +2814 -1138
- package/dist/css/adminlte.rtl.css.map +1 -1
- package/dist/css/adminlte.rtl.min.css +2 -2
- package/dist/css/adminlte.rtl.min.css.map +1 -1
- package/dist/docs/browser-support.html +291 -385
- package/dist/docs/color-mode.html +283 -381
- package/dist/docs/components/main-header.html +269 -363
- package/dist/docs/components/main-sidebar.html +284 -378
- package/dist/docs/customization.html +1056 -0
- package/dist/docs/deployment.html +1121 -0
- package/dist/docs/faq.html +887 -397
- package/dist/docs/getting-started.html +967 -0
- package/dist/docs/how-to-contribute.html +365 -450
- package/dist/docs/index.html +16 -0
- package/dist/docs/integrations.html +1207 -0
- package/dist/docs/introduction.html +483 -434
- package/dist/docs/javascript/accessibility.html +925 -0
- package/dist/docs/javascript/card-widget.html +995 -0
- package/dist/docs/javascript/direct-chat.html +872 -0
- package/dist/docs/javascript/fullscreen.html +881 -0
- package/dist/docs/javascript/layout.html +884 -0
- package/dist/docs/javascript/plugins-overview.html +1120 -0
- package/dist/docs/javascript/pushmenu.html +522 -377
- package/dist/docs/javascript/treeview.html +498 -390
- package/dist/docs/layout-blueprint.html +1063 -0
- package/dist/docs/layout.html +316 -402
- package/dist/docs/license.html +282 -375
- package/dist/docs/migration.html +1125 -0
- package/dist/docs/recipes.html +1161 -0
- package/dist/docs/rtl.html +933 -0
- package/dist/examples/lockscreen.html +66 -2
- package/dist/examples/login-v2.html +65 -1
- package/dist/examples/login.html +65 -1
- package/dist/examples/register-v2.html +65 -1
- package/dist/examples/register.html +65 -1
- package/dist/forms/elements.html +1381 -0
- package/dist/forms/{general.html → layout.html} +382 -452
- package/dist/forms/validation.html +1251 -0
- package/dist/forms/wizard.html +1386 -0
- package/dist/generate/theme.html +135 -5
- package/dist/index.html +311 -92
- package/dist/index2.html +314 -92
- package/dist/index3.html +311 -92
- package/dist/js/adminlte.js +135 -314
- package/dist/js/adminlte.js.map +1 -1
- package/dist/js/adminlte.min.js +3 -3
- package/dist/js/adminlte.min.js.map +1 -1
- package/dist/layout/collapsed-sidebar-without-hover.html +1120 -0
- package/dist/layout/collapsed-sidebar.html +311 -92
- package/dist/layout/fixed-complete.html +311 -92
- package/dist/layout/fixed-footer.html +311 -92
- package/dist/layout/fixed-header.html +311 -92
- package/dist/layout/fixed-sidebar.html +311 -92
- package/dist/layout/layout-custom-area.html +311 -92
- package/dist/layout/layout-rtl.html +311 -92
- package/dist/layout/logo-switch.html +135 -5
- package/dist/layout/sidebar-mini.html +311 -92
- package/dist/layout/unfixed-sidebar.html +311 -92
- package/dist/mailbox/compose.html +1127 -0
- package/dist/mailbox/inbox.html +1477 -0
- package/dist/mailbox/read.html +1178 -0
- package/dist/pages/404.html +213 -0
- package/dist/pages/500.html +201 -0
- package/dist/pages/calendar.html +1242 -0
- package/dist/pages/chat.html +1403 -0
- package/dist/pages/faq.html +1359 -0
- package/dist/pages/file-manager.html +1811 -0
- package/dist/pages/invoice.html +1175 -0
- package/dist/pages/kanban.html +1415 -0
- package/dist/pages/maintenance.html +204 -0
- package/dist/pages/pricing.html +1255 -0
- package/dist/pages/profile.html +1358 -0
- package/dist/pages/projects.html +1620 -0
- package/dist/pages/settings.html +1363 -0
- package/dist/tables/data.html +1295 -0
- package/dist/tables/simple.html +311 -92
- package/dist/widgets/cards.html +311 -92
- package/dist/widgets/info-box.html +311 -92
- package/dist/widgets/small-box.html +311 -92
- package/netlify.toml +16 -0
- package/package.json +32 -26
- package/src/scss/_accessibility.scss +44 -0
- package/src/scss/_app-footer.scss +9 -0
- package/src/scss/_app-header.scss +27 -0
- package/src/scss/_app-sidebar.scss +73 -74
- package/src/scss/_bootstrap-variables.scss +12 -5
- package/src/scss/_docs.scss +816 -0
- package/src/scss/_table.scss +4 -4
- package/src/scss/adminlte.scss +4 -1
- package/src/scss/pages/_login_and_register.scss +1 -1
- package/src/ts/accessibility.ts +9 -7
- package/src/ts/adminlte.ts +2 -14
- package/src/ts/fullscreen.ts +8 -4
- package/src/ts/layout.ts +34 -16
- package/src/ts/push-menu.ts +257 -104
- package/src/ts/util/index.ts +10 -0
- package/.claude/settings.local.json +0 -33
- package/CLAUDE.md +0 -79
package/src/scss/_table.scss
CHANGED
|
@@ -8,17 +8,17 @@
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
// fixed table head
|
|
11
|
+
// Uses Bootstrap CSS variables so the sticky header follows light/dark mode
|
|
12
|
+
// automatically. Fixes #6026.
|
|
11
13
|
&.table-head-fixed {
|
|
12
14
|
thead tr:nth-child(1) th {
|
|
13
15
|
position: sticky;
|
|
14
16
|
top: 0;
|
|
15
17
|
z-index: 10;
|
|
16
|
-
background-color: $white;
|
|
18
|
+
background-color: var(--bs-body-bg, #{$white});
|
|
17
19
|
border-bottom: 0;
|
|
18
|
-
box-shadow: inset 0 1px 0 $table-border-color, inset 0 -1px 0 $table-border-color;
|
|
20
|
+
box-shadow: inset 0 1px 0 var(--bs-border-color, #{$table-border-color}), inset 0 -1px 0 var(--bs-border-color, #{$table-border-color});
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
// Note: Dark table styling for fixed headers is handled by Bootstrap's built-in dark table classes
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// no border
|
package/src/scss/adminlte.scss
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* AdminLTE v4.0.0
|
|
2
|
+
* AdminLTE v4.0.0
|
|
3
3
|
* Author: Colorlib
|
|
4
4
|
* Website: AdminLTE.io <https://adminlte.io>
|
|
5
5
|
* License: Open source - MIT <https://opensource.org/licenses/MIT>
|
|
@@ -76,3 +76,6 @@
|
|
|
76
76
|
|
|
77
77
|
// AdminLTE Accessibility Styles - WCAG 2.1 AA Compliance
|
|
78
78
|
@import "accessibility";
|
|
79
|
+
|
|
80
|
+
// AdminLTE Documentation Styles (only applies to pages with body.docs-page)
|
|
81
|
+
@import "docs";
|
package/src/ts/accessibility.ts
CHANGED
|
@@ -159,15 +159,17 @@ export class AccessibilityManager {
|
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
private handleEscapeKey(event: KeyboardEvent): void {
|
|
162
|
-
// Close
|
|
162
|
+
// Close dropdowns, but let Bootstrap handle its own modal keyboard behavior
|
|
163
163
|
const activeModal = document.querySelector('.modal.show')
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
|
|
166
165
|
if (activeModal) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
166
|
+
// Do not interfere — Bootstrap handles Escape for modals,
|
|
167
|
+
// including respecting keyboard: false and stacked modals
|
|
168
|
+
return
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const activeDropdown = document.querySelector('.dropdown-menu.show')
|
|
172
|
+
if (activeDropdown) {
|
|
171
173
|
const toggleButton = document.querySelector('[data-bs-toggle="dropdown"][aria-expanded="true"]') as HTMLElement
|
|
172
174
|
toggleButton?.click()
|
|
173
175
|
event.preventDefault()
|
package/src/ts/adminlte.ts
CHANGED
|
@@ -8,20 +8,13 @@ import PushMenu from './push-menu.js'
|
|
|
8
8
|
import { initAccessibility } from './accessibility.js'
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* AdminLTE v4.0.0
|
|
11
|
+
* AdminLTE v4.0.0
|
|
12
12
|
* Author: Colorlib
|
|
13
13
|
* Website: AdminLTE.io <https://adminlte.io>
|
|
14
14
|
* License: Open source - MIT <https://opensource.org/licenses/MIT>
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
onDOMContentLoaded(() => {
|
|
18
|
-
/**
|
|
19
|
-
* Initialize AdminLTE Core Components
|
|
20
|
-
* -------------------------------
|
|
21
|
-
*/
|
|
22
|
-
const layout = new Layout(document.body)
|
|
23
|
-
layout.holdTransition()
|
|
24
|
-
|
|
25
18
|
/**
|
|
26
19
|
* Initialize Accessibility Features - WCAG 2.1 AA Compliance
|
|
27
20
|
* --------------------------------------------------------
|
|
@@ -33,14 +26,9 @@ onDOMContentLoaded(() => {
|
|
|
33
26
|
keyboardNavigation: true,
|
|
34
27
|
reducedMotion: true
|
|
35
28
|
})
|
|
36
|
-
|
|
29
|
+
|
|
37
30
|
// Add semantic landmarks
|
|
38
31
|
accessibilityManager.addLandmarks()
|
|
39
|
-
|
|
40
|
-
// Mark app as loaded after initialization
|
|
41
|
-
setTimeout(() => {
|
|
42
|
-
document.body.classList.add('app-loaded')
|
|
43
|
-
}, 400)
|
|
44
32
|
})
|
|
45
33
|
|
|
46
34
|
export {
|
package/src/ts/fullscreen.ts
CHANGED
|
@@ -44,12 +44,16 @@ class FullScreen {
|
|
|
44
44
|
|
|
45
45
|
void document.documentElement.requestFullscreen()
|
|
46
46
|
|
|
47
|
+
// Toggle Bootstrap's .d-none utility instead of hardcoding inline
|
|
48
|
+
// display:block. The previous approach overrode the icon library's
|
|
49
|
+
// natural display value (eg. some icon fonts use inline-block) and
|
|
50
|
+
// caused the icon to shift its position. Fixes #6021.
|
|
47
51
|
if (iconMaximize) {
|
|
48
|
-
iconMaximize.
|
|
52
|
+
iconMaximize.classList.add('d-none')
|
|
49
53
|
}
|
|
50
54
|
|
|
51
55
|
if (iconMinimize) {
|
|
52
|
-
iconMinimize.
|
|
56
|
+
iconMinimize.classList.remove('d-none')
|
|
53
57
|
}
|
|
54
58
|
|
|
55
59
|
this._element.dispatchEvent(event)
|
|
@@ -64,11 +68,11 @@ class FullScreen {
|
|
|
64
68
|
void document.exitFullscreen()
|
|
65
69
|
|
|
66
70
|
if (iconMaximize) {
|
|
67
|
-
iconMaximize.
|
|
71
|
+
iconMaximize.classList.remove('d-none')
|
|
68
72
|
}
|
|
69
73
|
|
|
70
74
|
if (iconMinimize) {
|
|
71
|
-
iconMinimize.
|
|
75
|
+
iconMinimize.classList.add('d-none')
|
|
72
76
|
}
|
|
73
77
|
|
|
74
78
|
this._element.dispatchEvent(event)
|
package/src/ts/layout.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
3
|
* @file AdminLTE layout.ts
|
|
4
4
|
* @description Layout for AdminLTE.
|
|
5
5
|
* @license MIT
|
|
6
|
-
*
|
|
6
|
+
* ----------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import {
|
|
@@ -11,41 +11,59 @@ import {
|
|
|
11
11
|
} from './util/index'
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* ----------------------------------------------------------------------------
|
|
15
15
|
* Constants
|
|
16
|
-
*
|
|
16
|
+
* ----------------------------------------------------------------------------
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
const CLASS_NAME_HOLD_TRANSITIONS = 'hold-transition'
|
|
20
20
|
const CLASS_NAME_APP_LOADED = 'app-loaded'
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
+
* ----------------------------------------------------------------------------
|
|
23
24
|
* Class Definition
|
|
24
|
-
*
|
|
25
|
+
* ----------------------------------------------------------------------------
|
|
25
26
|
*/
|
|
26
27
|
|
|
27
28
|
class Layout {
|
|
28
29
|
_element: HTMLElement
|
|
30
|
+
_holdTransitionTimer: ReturnType<typeof setTimeout> | undefined
|
|
29
31
|
|
|
30
32
|
constructor(element: HTMLElement) {
|
|
31
33
|
this._element = element
|
|
34
|
+
this._holdTransitionTimer = undefined
|
|
32
35
|
}
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
/*
|
|
38
|
+
* Hold the layout transitions by the specified time. This will disable CSS
|
|
39
|
+
* transitions and animations of the main layout elements (sidebar, navbar,
|
|
40
|
+
* content) for the given time.
|
|
41
|
+
*
|
|
42
|
+
* @param time Number of milliseconds to hold the transitions.
|
|
43
|
+
*/
|
|
44
|
+
holdTransition(time: number = 100): void {
|
|
45
|
+
if (this._holdTransitionTimer) {
|
|
46
|
+
clearTimeout(this._holdTransitionTimer)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
document.body.classList.add(CLASS_NAME_HOLD_TRANSITIONS)
|
|
50
|
+
|
|
51
|
+
this._holdTransitionTimer = setTimeout(() => {
|
|
52
|
+
document.body.classList.remove(CLASS_NAME_HOLD_TRANSITIONS)
|
|
53
|
+
}, time)
|
|
43
54
|
}
|
|
44
55
|
}
|
|
45
56
|
|
|
57
|
+
/**
|
|
58
|
+
* ----------------------------------------------------------------------------
|
|
59
|
+
* Data Api implementation
|
|
60
|
+
* ----------------------------------------------------------------------------
|
|
61
|
+
*/
|
|
62
|
+
|
|
46
63
|
onDOMContentLoaded(() => {
|
|
47
|
-
const
|
|
48
|
-
|
|
64
|
+
const layout = new Layout(document.body)
|
|
65
|
+
window.addEventListener('resize', () => layout.holdTransition(200))
|
|
66
|
+
|
|
49
67
|
setTimeout(() => {
|
|
50
68
|
document.body.classList.add(CLASS_NAME_APP_LOADED)
|
|
51
69
|
}, 400)
|