admin-lte 4.0.0-alpha1 → 4.0.0-alpha2
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/.bundlewatch.config.json +2 -2
- package/.cache/.eslintcache +1 -0
- package/.cache/.stylelintcache +1 -0
- package/.eslintignore +1 -0
- package/.eslintrc.json +16 -0
- package/.stylelintrc.json +47 -0
- package/LICENSE +1 -1
- package/README.md +5 -6
- package/dist/css/adminlte.css +2383 -2754
- 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/{rtl/adminlte.rtl.css → adminlte.rtl.css} +2377 -2749
- package/dist/css/adminlte.rtl.css.map +1 -0
- package/dist/css/adminlte.rtl.min.css +7 -0
- package/dist/css/adminlte.rtl.min.css.map +1 -0
- package/dist/js/adminlte.js +173 -182
- package/dist/js/adminlte.js.map +1 -1
- package/dist/js/adminlte.min.js +6 -1
- package/dist/js/adminlte.min.js.map +1 -1
- package/dist/pages/UI/timeline.html +698 -0
- package/dist/pages/docs/browser-support.html +614 -0
- package/dist/pages/docs/color-mode.html +855 -0
- package/dist/pages/docs/components/main-header.html +926 -0
- package/dist/pages/docs/layout.html +617 -0
- package/dist/pages/docs.html +617 -0
- package/dist/pages/examples/login.html +114 -187
- package/dist/pages/examples/register.html +117 -190
- package/dist/pages/forms/general.html +598 -647
- package/dist/pages/index.html +1091 -0
- package/dist/pages/index2.html +1452 -0
- package/dist/pages/index3.html +950 -0
- package/dist/pages/layout/fixed-sidebar.html +590 -638
- package/dist/pages/layout/layout-rtl.html +623 -0
- package/dist/pages/layout/sidebar-mini.html +623 -0
- package/dist/pages/layout/unfixed-sidebar.html +589 -638
- package/dist/pages/tables/simple.html +837 -938
- package/dist/pages/widgets/cards.html +814 -698
- package/dist/pages/widgets/info-box.html +864 -951
- package/dist/pages/widgets/small-box.html +625 -678
- package/index.html +1 -6
- package/package.json +53 -36
- package/src/config/assets.config.mjs +8 -0
- package/src/config/astro.config.mjs +17 -0
- package/src/config/postcss.config.mjs +15 -0
- package/src/config/rollup.config.js +20 -0
- package/src/html/.eslintrc.json +24 -0
- package/src/html/.tsconfig.json +4 -0
- package/src/html/components/_head.astro +31 -0
- package/src/html/components/_scripts.astro +40 -0
- package/src/html/components/dashboard/_footer.astro +12 -0
- package/src/html/components/dashboard/_sidenav.astro +323 -0
- package/src/{partials/dashboard/_topbar.html → html/components/dashboard/_topbar.astro} +20 -46
- package/src/html/components/docs/browser-support/index.md +22 -0
- package/src/html/components/docs/color-mode/navbar-html.md +80 -0
- package/src/{partials/_scripts.html → html/components/docs/color-mode/toggle-script.md} +5 -52
- package/src/html/components/docs/components/main-header-1.md +159 -0
- package/src/html/components/docs/introduction/index.md +35 -0
- package/src/html/env.d.ts +1 -0
- package/src/html/pages/UI/timeline.astro +158 -0
- package/src/html/pages/docs/browser-support.astro +58 -0
- package/src/html/pages/docs/color-mode.astro +224 -0
- package/src/html/pages/docs/components/main-header.astro +232 -0
- package/src/html/pages/docs/index.astro +58 -0
- package/src/html/pages/docs/layout.astro +77 -0
- package/src/{pages/examples/login.html → html/pages/examples/login.astro} +13 -13
- package/src/{pages/examples/register.html → html/pages/examples/register.astro} +13 -13
- package/src/{pages/forms/general.html → html/pages/forms/general.astro} +26 -30
- package/src/{index.html → html/pages/index.astro} +266 -189
- package/src/{index2.html → html/pages/index2.astro} +229 -284
- package/src/{index3.html → html/pages/index3.astro} +151 -169
- package/src/{pages/layout/fixed-sidebar.html → html/pages/layout/fixed-sidebar.astro} +26 -29
- package/src/html/pages/layout/layout-rtl.astro +84 -0
- package/src/html/pages/layout/sidebar-mini.astro +83 -0
- package/src/{pages/layout/unfixed-sidebar.html → html/pages/layout/unfixed-sidebar.astro} +26 -30
- package/src/{pages/tables/simple.html → html/pages/tables/simple.astro} +26 -30
- package/src/html/pages/widgets/cards.astro +308 -0
- package/src/{pages/widgets/info-box.html → html/pages/widgets/info-box.astro} +26 -31
- package/src/html/pages/widgets/small-box.astro +121 -0
- package/src/scss/_app-footer.scss +15 -0
- package/src/scss/_app-header.scss +26 -0
- package/src/scss/_app-main.scss +20 -0
- package/src/scss/_app-sidebar.scss +429 -0
- package/src/scss/{_wrapper.scss → _app-wrapper.scss} +8 -4
- package/src/scss/_bootstrap-variables.scss +41 -26
- package/src/scss/_callouts.scss +34 -0
- package/src/scss/_cards.scss +30 -224
- package/src/scss/_direct-chat.scss +15 -9
- package/src/scss/_docs.scss +4 -0
- package/src/scss/_dropdown.scss +7 -5
- package/src/scss/_info-box.scss +2 -6
- package/src/scss/_miscellaneous.scss +0 -455
- package/src/scss/_mixins.scss +0 -6
- package/src/scss/_root.scss +2 -58
- package/src/scss/_small-box.scss +15 -38
- package/src/scss/_table.scss +0 -50
- package/src/scss/_timeline.scss +120 -0
- package/src/scss/_variables-dark.scss +15 -8
- package/src/scss/_variables.scss +30 -135
- package/src/scss/adminlte.scss +1 -1
- package/src/scss/mixins/_animations.scss +4 -0
- package/src/scss/mixins/_scrollbar.scss +2 -2
- package/src/scss/pages/_login_and_register.scss +1 -2
- package/src/scss/parts/_core.scss +7 -15
- package/src/scss/parts/_extra-components.scss +1 -2
- package/src/ts/adminlte.ts +0 -2
- package/src/ts/card-widget.ts +42 -18
- package/src/ts/direct-chat.ts +33 -8
- package/src/ts/layout.ts +6 -4
- package/src/ts/push-menu.ts +94 -145
- package/src/ts/treeview.ts +17 -23
- package/src/ts/util/index.ts +2 -2
- package/src/utils/index.js +11 -0
- package/tsconfig.json +11 -3
- package/.stylelintrc +0 -40
- package/CHECKLIST.md +0 -0
- package/dist/css/rtl/adminlte.rtl.css.map +0 -1
- package/dist/css/rtl/adminlte.rtl.min.css +0 -7
- package/dist/css/rtl/adminlte.rtl.min.css.map +0 -1
- package/dist/index.html +0 -1065
- package/dist/index2.html +0 -1629
- package/dist/index3.html +0 -1015
- package/gulpfile.js +0 -315
- package/src/pages/widgets/cards.html +0 -143
- package/src/pages/widgets/small-box.html +0 -124
- package/src/partials/_head.html +0 -31
- package/src/partials/dashboard/_footer.html +0 -9
- package/src/partials/dashboard/_sidenav.html +0 -244
- package/src/scss/_brand-container.scss +0 -72
- package/src/scss/_content-header.scss +0 -9
- package/src/scss/_content-wrapper.scss +0 -6
- package/src/scss/_content.scss +0 -3
- package/src/scss/_layout-fixed.scss +0 -43
- package/src/scss/_layout-mobile.scss +0 -22
- package/src/scss/_main-footer.scss +0 -28
- package/src/scss/_main-header.scss +0 -40
- package/src/scss/_main-sidebar.scss +0 -63
- package/src/scss/_nav-sidebar.scss +0 -66
- package/src/scss/_products.scss +0 -55
- package/src/scss/_sidebar-close.scss +0 -6
- package/src/scss/_sidebar-collapse.scss +0 -120
- package/src/scss/_sidebar-horizontal.scss +0 -67
- package/src/scss/_sidebar.scss +0 -11
- package/src/scss/_users-list.scss +0 -45
- package/src/scss/mixins/_brand-variant.scss +0 -9
- package/src/scss/mixins/_cards.scss +0 -53
- package/src/scss/mixins/_direct-chat.scss +0 -17
- package/src/scss/mixins/_header-variant.scss +0 -22
- package/src/scss/mixins/_nav-treeview-dark.scss +0 -87
- package/src/scss/mixins/_nav-treeview-light.scss +0 -89
- package/src/scss/mixins/_sidebar-color.scss +0 -9
package/src/ts/direct-chat.ts
CHANGED
|
@@ -14,6 +14,11 @@ import {
|
|
|
14
14
|
* ====================================================
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
const DATA_KEY = 'lte.direct-chat'
|
|
18
|
+
const EVENT_KEY = `.${DATA_KEY}`
|
|
19
|
+
const EVENT_EXPANDED = `expanded${EVENT_KEY}`
|
|
20
|
+
const EVENT_COLLAPSED = `collapsed${EVENT_KEY}`
|
|
21
|
+
|
|
17
22
|
const SELECTOR_DATA_TOGGLE = '[data-lte-toggle="chat-pane"]'
|
|
18
23
|
const SELECTOR_DIRECT_CHAT = '.direct-chat'
|
|
19
24
|
|
|
@@ -25,9 +30,25 @@ const CLASS_NAME_DIRECT_CHAT_OPEN = 'direct-chat-contacts-open'
|
|
|
25
30
|
*/
|
|
26
31
|
|
|
27
32
|
class DirectChat {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
_element: HTMLElement
|
|
34
|
+
constructor(element: HTMLElement) {
|
|
35
|
+
this._element = element
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
toggle(): void {
|
|
39
|
+
if (this._element.classList.contains(CLASS_NAME_DIRECT_CHAT_OPEN)) {
|
|
40
|
+
const event = new Event(EVENT_COLLAPSED)
|
|
41
|
+
|
|
42
|
+
this._element.classList.remove(CLASS_NAME_DIRECT_CHAT_OPEN)
|
|
43
|
+
|
|
44
|
+
this._element.dispatchEvent(event)
|
|
45
|
+
} else {
|
|
46
|
+
const event = new Event(EVENT_EXPANDED)
|
|
47
|
+
|
|
48
|
+
this._element.classList.add(CLASS_NAME_DIRECT_CHAT_OPEN)
|
|
49
|
+
|
|
50
|
+
this._element.dispatchEvent(event)
|
|
51
|
+
}
|
|
31
52
|
}
|
|
32
53
|
}
|
|
33
54
|
|
|
@@ -40,14 +61,18 @@ class DirectChat {
|
|
|
40
61
|
domReady(() => {
|
|
41
62
|
const button = document.querySelectorAll(SELECTOR_DATA_TOGGLE)
|
|
42
63
|
|
|
43
|
-
|
|
64
|
+
button.forEach(btn => {
|
|
44
65
|
btn.addEventListener('click', event => {
|
|
45
66
|
event.preventDefault()
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
|
|
67
|
+
const target = event.target as HTMLElement
|
|
68
|
+
const chatPane = target.closest(SELECTOR_DIRECT_CHAT) as HTMLElement | undefined
|
|
69
|
+
|
|
70
|
+
if (chatPane) {
|
|
71
|
+
const data = new DirectChat(chatPane)
|
|
72
|
+
data.toggle()
|
|
73
|
+
}
|
|
49
74
|
})
|
|
50
|
-
}
|
|
75
|
+
})
|
|
51
76
|
})
|
|
52
77
|
|
|
53
78
|
export default DirectChat
|
package/src/ts/layout.ts
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
const CLASS_NAME_HOLD_TRANSITIONS = 'hold-transition'
|
|
19
|
+
const CLASS_NAME_APP_LOADED = 'app-loaded'
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Class Definition
|
|
@@ -24,11 +25,9 @@ const CLASS_NAME_HOLD_TRANSITIONS = 'hold-transition'
|
|
|
24
25
|
|
|
25
26
|
class Layout {
|
|
26
27
|
_element: HTMLElement
|
|
27
|
-
_config: undefined
|
|
28
28
|
|
|
29
|
-
constructor(element: HTMLElement
|
|
29
|
+
constructor(element: HTMLElement) {
|
|
30
30
|
this._element = element
|
|
31
|
-
this._config = config as unknown as undefined
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
holdTransition(): void {
|
|
@@ -44,8 +43,11 @@ class Layout {
|
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
domReady(() => {
|
|
47
|
-
const data = new Layout(document.body
|
|
46
|
+
const data = new Layout(document.body)
|
|
48
47
|
data.holdTransition()
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
document.body.classList.add(CLASS_NAME_APP_LOADED)
|
|
50
|
+
}, 400)
|
|
49
51
|
})
|
|
50
52
|
|
|
51
53
|
export default Layout
|
package/src/ts/push-menu.ts
CHANGED
|
@@ -15,29 +15,35 @@ import {
|
|
|
15
15
|
* ------------------------------------------------------------------------
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
+
const DATA_KEY = 'lte.push-menu'
|
|
19
|
+
const EVENT_KEY = `.${DATA_KEY}`
|
|
20
|
+
|
|
21
|
+
const EVENT_OPEN = `open${EVENT_KEY}`
|
|
22
|
+
const EVENT_COLLAPSE = `collapse${EVENT_KEY}`
|
|
23
|
+
|
|
18
24
|
const CLASS_NAME_SIDEBAR_MINI = 'sidebar-mini'
|
|
19
|
-
const CLASS_NAME_SIDEBAR_MINI_HAD = 'sidebar-mini-had'
|
|
20
|
-
const CLASS_NAME_SIDEBAR_HORIZONTAL = 'sidebar-horizontal'
|
|
21
25
|
const CLASS_NAME_SIDEBAR_COLLAPSE = 'sidebar-collapse'
|
|
22
|
-
const CLASS_NAME_SIDEBAR_CLOSE = 'sidebar-close'
|
|
23
26
|
const CLASS_NAME_SIDEBAR_OPEN = 'sidebar-open'
|
|
24
|
-
const CLASS_NAME_SIDEBAR_OPENING = 'sidebar-is-opening'
|
|
25
|
-
const CLASS_NAME_SIDEBAR_COLLAPSING = 'sidebar-is-collapsing'
|
|
26
27
|
const CLASS_NAME_SIDEBAR_IS_HOVER = 'sidebar-is-hover'
|
|
28
|
+
const CLASS_NAME_SIDEBAR_EXPAND = 'sidebar-expand'
|
|
29
|
+
const CLASS_NAME_SIDEBAR_OVERLAY = 'sidebar-overlay'
|
|
27
30
|
const CLASS_NAME_MENU_OPEN = 'menu-open'
|
|
28
|
-
const CLASS_NAME_LAYOUT_MOBILE = 'layout-mobile'
|
|
29
31
|
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
+
const SELECTOR_APP_SIDEBAR = '.app-sidebar'
|
|
33
|
+
const SELECTOR_SIDEBAR_WRAPPER = '.sidebar-wrapper'
|
|
34
|
+
const SELECTOR_SIDEBAR_MENU = '.sidebar-menu'
|
|
32
35
|
const SELECTOR_NAV_ITEM = '.nav-item'
|
|
33
36
|
const SELECTOR_NAV_TREEVIEW = '.nav-treeview'
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
|
|
37
|
+
const SELECTOR_APP_WRAPPER = '.app-wrapper'
|
|
38
|
+
const SELECTOR_SIDEBAR_EXPAND = `[class*="${CLASS_NAME_SIDEBAR_EXPAND}"]`
|
|
39
|
+
const SELECTOR_SIDEBAR_TOGGLE = '[data-lte-toggle="sidebar"]'
|
|
40
|
+
|
|
41
|
+
type Config = {
|
|
42
|
+
sidebarBreakpoint: number;
|
|
43
|
+
}
|
|
38
44
|
|
|
39
45
|
const Defaults = {
|
|
40
|
-
|
|
46
|
+
sidebarBreakpoint: 992
|
|
41
47
|
}
|
|
42
48
|
|
|
43
49
|
/**
|
|
@@ -46,138 +52,87 @@ const Defaults = {
|
|
|
46
52
|
*/
|
|
47
53
|
|
|
48
54
|
class PushMenu {
|
|
49
|
-
_element: HTMLElement
|
|
50
|
-
_config:
|
|
51
|
-
_bodyClass: DOMTokenList
|
|
52
|
-
constructor(element: HTMLElement | undefined, config: undefined) {
|
|
53
|
-
this._element = element
|
|
54
|
-
|
|
55
|
-
const bodyElement = document.body as HTMLBodyElement
|
|
56
|
-
this._bodyClass = bodyElement.classList
|
|
57
|
-
|
|
58
|
-
this._config = config
|
|
59
|
-
}
|
|
55
|
+
_element: HTMLElement
|
|
56
|
+
_config: Config
|
|
60
57
|
|
|
61
|
-
|
|
62
|
-
this.
|
|
63
|
-
|
|
64
|
-
this._bodyClass.remove(CLASS_NAME_SIDEBAR_OPENING)
|
|
65
|
-
}, 1000)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
sidebarColllapsing(): void {
|
|
69
|
-
this._bodyClass.add(CLASS_NAME_SIDEBAR_COLLAPSING)
|
|
70
|
-
setTimeout(() => {
|
|
71
|
-
this._bodyClass.remove(CLASS_NAME_SIDEBAR_COLLAPSING)
|
|
72
|
-
}, 1000)
|
|
58
|
+
constructor(element: HTMLElement, config: Config) {
|
|
59
|
+
this._element = element
|
|
60
|
+
this._config = { ...Defaults, ...config }
|
|
73
61
|
}
|
|
74
62
|
|
|
75
|
-
|
|
63
|
+
// TODO
|
|
64
|
+
menusClose() {
|
|
76
65
|
const navTreeview = document.querySelectorAll<HTMLElement>(SELECTOR_NAV_TREEVIEW)
|
|
77
66
|
|
|
78
|
-
|
|
67
|
+
navTreeview.forEach(navTree => {
|
|
79
68
|
navTree.style.removeProperty('display')
|
|
80
69
|
navTree.style.removeProperty('height')
|
|
81
|
-
}
|
|
70
|
+
})
|
|
82
71
|
|
|
83
|
-
const navSidebar = document.querySelector(
|
|
72
|
+
const navSidebar = document.querySelector(SELECTOR_SIDEBAR_MENU)
|
|
84
73
|
const navItem = navSidebar?.querySelectorAll(SELECTOR_NAV_ITEM)
|
|
85
74
|
|
|
86
75
|
if (navItem) {
|
|
87
|
-
|
|
76
|
+
navItem.forEach(navI => {
|
|
88
77
|
navI.classList.remove(CLASS_NAME_MENU_OPEN)
|
|
89
|
-
}
|
|
78
|
+
})
|
|
90
79
|
}
|
|
91
80
|
}
|
|
92
81
|
|
|
93
|
-
expand()
|
|
94
|
-
|
|
82
|
+
expand() {
|
|
83
|
+
const event = new Event(EVENT_OPEN)
|
|
95
84
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
this._bodyClass.add(CLASS_NAME_SIDEBAR_OPEN)
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
collapse(): void {
|
|
102
|
-
this.sidebarColllapsing()
|
|
85
|
+
document.body.classList.remove(CLASS_NAME_SIDEBAR_COLLAPSE)
|
|
86
|
+
document.body.classList.add(CLASS_NAME_SIDEBAR_OPEN)
|
|
103
87
|
|
|
104
|
-
this.
|
|
88
|
+
this._element.dispatchEvent(event)
|
|
105
89
|
}
|
|
106
90
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
this._bodyClass.remove(CLASS_NAME_SIDEBAR_OPEN)
|
|
110
|
-
this._bodyClass.remove(CLASS_NAME_SIDEBAR_COLLAPSE)
|
|
91
|
+
collapse() {
|
|
92
|
+
const event = new Event(EVENT_COLLAPSE)
|
|
111
93
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
94
|
+
document.body.classList.remove(CLASS_NAME_SIDEBAR_OPEN)
|
|
95
|
+
document.body.classList.add(CLASS_NAME_SIDEBAR_COLLAPSE)
|
|
96
|
+
|
|
97
|
+
this._element.dispatchEvent(event)
|
|
115
98
|
}
|
|
116
99
|
|
|
117
|
-
sidebarHover()
|
|
118
|
-
const selSidebar = document.querySelector(
|
|
100
|
+
sidebarHover() {
|
|
101
|
+
const selSidebar = document.querySelector(SELECTOR_SIDEBAR_WRAPPER)
|
|
119
102
|
|
|
120
103
|
if (selSidebar) {
|
|
121
104
|
selSidebar.addEventListener('mouseover', () => {
|
|
122
|
-
|
|
105
|
+
document.body.classList.add(CLASS_NAME_SIDEBAR_IS_HOVER)
|
|
123
106
|
})
|
|
124
107
|
|
|
125
108
|
selSidebar.addEventListener('mouseout', () => {
|
|
126
|
-
|
|
109
|
+
document.body.classList.remove(CLASS_NAME_SIDEBAR_IS_HOVER)
|
|
127
110
|
})
|
|
128
111
|
}
|
|
129
112
|
}
|
|
130
113
|
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (widthOutput >= Defaults.onLayouMobile) {
|
|
140
|
-
bodyClass.remove(CLASS_NAME_LAYOUT_MOBILE)
|
|
141
|
-
this.expand()
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
removeOverlaySidebar(): void {
|
|
146
|
-
const bodyClass = document.body.classList
|
|
147
|
-
if (bodyClass.contains(CLASS_NAME_LAYOUT_MOBILE)) {
|
|
148
|
-
bodyClass.remove(CLASS_NAME_SIDEBAR_OPEN)
|
|
149
|
-
bodyClass.remove(CLASS_NAME_SIDEBAR_COLLAPSE)
|
|
150
|
-
bodyClass.add(CLASS_NAME_SIDEBAR_CLOSE)
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
closeSidebar(): void {
|
|
155
|
-
const widthOutput: number = window.innerWidth
|
|
156
|
-
if (widthOutput < Defaults.onLayouMobile) {
|
|
157
|
-
document.body.classList.add(CLASS_NAME_SIDEBAR_CLOSE)
|
|
158
|
-
}
|
|
159
|
-
}
|
|
114
|
+
addSidebarBreakPoint() {
|
|
115
|
+
const sidebarExpandList = document.querySelector(SELECTOR_SIDEBAR_EXPAND)?.classList ?? []
|
|
116
|
+
const sidebarExpand = Array.from(sidebarExpandList).find(className => className.startsWith(CLASS_NAME_SIDEBAR_EXPAND)) ?? ''
|
|
117
|
+
const sidebar = document.getElementsByClassName(sidebarExpand)[0]
|
|
118
|
+
const sidebarContent = window.getComputedStyle(sidebar, '::before').getPropertyValue('content')
|
|
119
|
+
this._config = { ...this._config, sidebarBreakpoint: Number(sidebarContent.replace(/[^\d.-]/g, '')) }
|
|
160
120
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
this.expand()
|
|
121
|
+
if (window.innerWidth <= this._config.sidebarBreakpoint) {
|
|
122
|
+
this.collapse()
|
|
164
123
|
} else {
|
|
165
|
-
|
|
166
|
-
|
|
124
|
+
if (!document.body.classList.contains(CLASS_NAME_SIDEBAR_MINI)) {
|
|
125
|
+
this.expand()
|
|
126
|
+
}
|
|
167
127
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
128
|
+
if (document.body.classList.contains(CLASS_NAME_SIDEBAR_MINI)) {
|
|
129
|
+
this.collapse()
|
|
130
|
+
}
|
|
171
131
|
}
|
|
172
132
|
}
|
|
173
133
|
|
|
174
|
-
|
|
175
|
-
if (
|
|
176
|
-
this._bodyClass.remove(CLASS_NAME_SIDEBAR_MINI_HAD)
|
|
177
|
-
this._bodyClass.add(CLASS_NAME_SIDEBAR_MINI)
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (this._bodyClass.contains(CLASS_NAME_SIDEBAR_COLLAPSE)) {
|
|
134
|
+
toggle() {
|
|
135
|
+
if (document.body.classList.contains(CLASS_NAME_SIDEBAR_COLLAPSE)) {
|
|
181
136
|
this.expand()
|
|
182
137
|
} else {
|
|
183
138
|
this.collapse()
|
|
@@ -185,18 +140,8 @@ class PushMenu {
|
|
|
185
140
|
}
|
|
186
141
|
|
|
187
142
|
init() {
|
|
188
|
-
this.
|
|
143
|
+
this.addSidebarBreakPoint()
|
|
189
144
|
this.sidebarHover()
|
|
190
|
-
|
|
191
|
-
const selSidebarSm = document.querySelector(SELECTOR_SIDEBAR_SM)
|
|
192
|
-
const selContentWrapper = selSidebarSm?.querySelector(SELECTOR_CONTENT_WRAPPER)
|
|
193
|
-
|
|
194
|
-
if (selContentWrapper) {
|
|
195
|
-
selContentWrapper.addEventListener('touchstart', this.removeOverlaySidebar)
|
|
196
|
-
selContentWrapper.addEventListener('click', this.removeOverlaySidebar)
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
this.closeSidebar()
|
|
200
145
|
}
|
|
201
146
|
}
|
|
202
147
|
|
|
@@ -207,49 +152,53 @@ class PushMenu {
|
|
|
207
152
|
*/
|
|
208
153
|
|
|
209
154
|
domReady(() => {
|
|
210
|
-
const
|
|
211
|
-
data.init()
|
|
155
|
+
const sidebar = document?.querySelector(SELECTOR_APP_SIDEBAR) as HTMLElement | undefined
|
|
212
156
|
|
|
213
|
-
|
|
157
|
+
if (sidebar) {
|
|
158
|
+
const data = new PushMenu(sidebar, Defaults)
|
|
214
159
|
data.init()
|
|
215
|
-
})
|
|
216
|
-
|
|
217
|
-
const fullBtn = document.querySelectorAll(SELECTOR_FULL_TOGGLE)
|
|
218
|
-
|
|
219
|
-
for (const btn of fullBtn) {
|
|
220
|
-
btn.addEventListener('click', event => {
|
|
221
|
-
event.preventDefault()
|
|
222
|
-
|
|
223
|
-
let button = event.currentTarget as HTMLElement | undefined
|
|
224
160
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
if (button) {
|
|
230
|
-
const data = new PushMenu(button, undefined)
|
|
231
|
-
data.toggleFull()
|
|
232
|
-
}
|
|
161
|
+
window.addEventListener('resize', () => {
|
|
162
|
+
data.init()
|
|
233
163
|
})
|
|
234
164
|
}
|
|
235
165
|
|
|
236
|
-
const
|
|
166
|
+
const sidebarOverlay = document.createElement('div')
|
|
167
|
+
sidebarOverlay.className = CLASS_NAME_SIDEBAR_OVERLAY
|
|
168
|
+
document.querySelector(SELECTOR_APP_WRAPPER)?.append(sidebarOverlay)
|
|
237
169
|
|
|
238
|
-
|
|
170
|
+
sidebarOverlay.addEventListener('touchstart', event => {
|
|
171
|
+
event.preventDefault()
|
|
172
|
+
const target = event.currentTarget as HTMLElement
|
|
173
|
+
const data = new PushMenu(target, Defaults)
|
|
174
|
+
data.collapse()
|
|
175
|
+
})
|
|
176
|
+
sidebarOverlay.addEventListener('click', event => {
|
|
177
|
+
event.preventDefault()
|
|
178
|
+
const target = event.currentTarget as HTMLElement
|
|
179
|
+
const data = new PushMenu(target, Defaults)
|
|
180
|
+
data.collapse()
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
const fullBtn = document.querySelectorAll(SELECTOR_SIDEBAR_TOGGLE)
|
|
184
|
+
|
|
185
|
+
fullBtn.forEach(btn => {
|
|
239
186
|
btn.addEventListener('click', event => {
|
|
240
187
|
event.preventDefault()
|
|
241
188
|
|
|
242
189
|
let button = event.currentTarget as HTMLElement | undefined
|
|
243
|
-
|
|
244
|
-
|
|
190
|
+
|
|
191
|
+
if (button?.dataset.lteToggle !== 'sidebar') {
|
|
192
|
+
button = button?.closest(SELECTOR_SIDEBAR_TOGGLE) as HTMLElement | undefined
|
|
245
193
|
}
|
|
246
194
|
|
|
247
195
|
if (button) {
|
|
248
|
-
|
|
249
|
-
data
|
|
196
|
+
event?.preventDefault()
|
|
197
|
+
const data = new PushMenu(button, Defaults)
|
|
198
|
+
data.toggle()
|
|
250
199
|
}
|
|
251
200
|
})
|
|
252
|
-
}
|
|
201
|
+
})
|
|
253
202
|
})
|
|
254
203
|
|
|
255
204
|
export default PushMenu
|
package/src/ts/treeview.ts
CHANGED
|
@@ -26,7 +26,6 @@ const EVENT_COLLAPSED = `collapsed${EVENT_KEY}`
|
|
|
26
26
|
// const EVENT_LOAD_DATA_API = `load${EVENT_KEY}`
|
|
27
27
|
|
|
28
28
|
const CLASS_NAME_MENU_OPEN = 'menu-open'
|
|
29
|
-
const CLASS_NAME_MENU_IS_OPEN = 'menu-is-open'
|
|
30
29
|
const SELECTOR_NAV_ITEM = '.nav-item'
|
|
31
30
|
const SELECTOR_TREEVIEW_MENU = '.nav-treeview'
|
|
32
31
|
const SELECTOR_DATA_TOGGLE = '[data-lte-toggle="treeview"]'
|
|
@@ -47,46 +46,40 @@ type Config = {
|
|
|
47
46
|
class Treeview {
|
|
48
47
|
_element: HTMLElement
|
|
49
48
|
_config: Config
|
|
50
|
-
|
|
51
|
-
_childNavItem: HTMLElement | undefined | undefined
|
|
49
|
+
_childNavItem: HTMLElement | undefined
|
|
52
50
|
|
|
53
51
|
constructor(element: HTMLElement, config: Config) {
|
|
54
52
|
this._element = element
|
|
55
53
|
this._config = { ...Default, ...config }
|
|
56
|
-
this.
|
|
57
|
-
this._childNavItem = this._navItem?.querySelector(SELECTOR_TREEVIEW_MENU) as HTMLElement | undefined
|
|
54
|
+
this._childNavItem = this._element.querySelector(SELECTOR_TREEVIEW_MENU) as HTMLElement | undefined
|
|
58
55
|
}
|
|
59
56
|
|
|
60
57
|
open(): void {
|
|
61
58
|
const event = new Event(EVENT_EXPANDED)
|
|
62
59
|
|
|
63
|
-
|
|
64
|
-
this._navItem.classList.add(CLASS_NAME_MENU_OPEN)
|
|
65
|
-
this._navItem.classList.add(CLASS_NAME_MENU_IS_OPEN)
|
|
66
|
-
}
|
|
60
|
+
this._element.classList.add(CLASS_NAME_MENU_OPEN)
|
|
67
61
|
|
|
68
62
|
if (this._childNavItem) {
|
|
69
63
|
slideDown(this._childNavItem, this._config.animationSpeed)
|
|
70
|
-
this._element.dispatchEvent(event)
|
|
71
64
|
}
|
|
65
|
+
|
|
66
|
+
this._element.dispatchEvent(event)
|
|
72
67
|
}
|
|
73
68
|
|
|
74
69
|
close(): void {
|
|
75
70
|
const event = new Event(EVENT_COLLAPSED)
|
|
76
71
|
|
|
77
|
-
|
|
78
|
-
this._navItem.classList.remove(CLASS_NAME_MENU_IS_OPEN)
|
|
79
|
-
this._navItem.classList.remove(CLASS_NAME_MENU_OPEN)
|
|
80
|
-
}
|
|
72
|
+
this._element.classList.remove(CLASS_NAME_MENU_OPEN)
|
|
81
73
|
|
|
82
74
|
if (this._childNavItem) {
|
|
83
75
|
slideUp(this._childNavItem, this._config.animationSpeed)
|
|
84
|
-
this._element.dispatchEvent(event)
|
|
85
76
|
}
|
|
77
|
+
|
|
78
|
+
this._element.dispatchEvent(event)
|
|
86
79
|
}
|
|
87
80
|
|
|
88
81
|
toggle(): void {
|
|
89
|
-
if (this.
|
|
82
|
+
if (this._element.classList.contains(CLASS_NAME_MENU_OPEN)) {
|
|
90
83
|
this.close()
|
|
91
84
|
} else {
|
|
92
85
|
this.open()
|
|
@@ -103,16 +96,17 @@ class Treeview {
|
|
|
103
96
|
domReady(() => {
|
|
104
97
|
const button = document.querySelectorAll(SELECTOR_DATA_TOGGLE)
|
|
105
98
|
|
|
106
|
-
|
|
99
|
+
button.forEach(btn => {
|
|
107
100
|
btn.addEventListener('click', event => {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const treeviewMenu = event.target as HTMLElement
|
|
101
|
+
const target = event.target as HTMLElement
|
|
102
|
+
const targetItem = target.closest(SELECTOR_NAV_ITEM) as HTMLElement | undefined
|
|
111
103
|
|
|
112
|
-
|
|
113
|
-
|
|
104
|
+
if (targetItem) {
|
|
105
|
+
const data = new Treeview(targetItem, Default)
|
|
106
|
+
data.toggle()
|
|
107
|
+
}
|
|
114
108
|
})
|
|
115
|
-
}
|
|
109
|
+
})
|
|
116
110
|
})
|
|
117
111
|
|
|
118
112
|
export default Treeview
|
package/src/ts/util/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const domReady = (callBack: () => void)
|
|
1
|
+
const domReady = (callBack: () => void) => {
|
|
2
2
|
if (document.readyState === 'loading') {
|
|
3
3
|
document.addEventListener('DOMContentLoaded', callBack)
|
|
4
4
|
} else {
|
|
@@ -6,7 +6,7 @@ const domReady = (callBack: () => void): void => {
|
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
const windowReady = (callBack: () => void)
|
|
9
|
+
const windowReady = (callBack: () => void) => {
|
|
10
10
|
if (document.readyState === 'complete') {
|
|
11
11
|
callBack()
|
|
12
12
|
} else {
|
package/tsconfig.json
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
+
"root": true,
|
|
2
3
|
"compilerOptions": {
|
|
4
|
+
"noFallthroughCasesInSwitch": true,
|
|
3
5
|
"noUnusedParameters": true,
|
|
4
6
|
"noImplicitReturns": true,
|
|
5
7
|
"noUnusedLocals": true,
|
|
6
8
|
"noImplicitAny": true,
|
|
7
|
-
"target": "es2018",
|
|
8
9
|
"module": "esnext",
|
|
10
|
+
"alwaysStrict": true,
|
|
9
11
|
"strict": true,
|
|
10
12
|
"strictNullChecks": true,
|
|
11
13
|
"strictBindCallApply": true,
|
|
12
14
|
"strictFunctionTypes": true,
|
|
13
|
-
"strictPropertyInitialization": true
|
|
15
|
+
"strictPropertyInitialization": true,
|
|
16
|
+
"baseUrl": ".",
|
|
17
|
+
"paths": {
|
|
18
|
+
"@components/*": ["src/html/components/*"],
|
|
19
|
+
},
|
|
20
|
+
/* Language and Environment */
|
|
21
|
+
"target": "es6",
|
|
22
|
+
"lib": ["es2018", "DOM"],
|
|
14
23
|
},
|
|
15
24
|
"include": [
|
|
16
25
|
"src/ts/**/*"
|
|
@@ -18,6 +27,5 @@
|
|
|
18
27
|
"exclude": [
|
|
19
28
|
"dist",
|
|
20
29
|
"node_modules",
|
|
21
|
-
"plugins"
|
|
22
30
|
]
|
|
23
31
|
}
|
package/.stylelintrc
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": [
|
|
3
|
-
"stylelint-config-twbs-bootstrap"
|
|
4
|
-
],
|
|
5
|
-
"rules": {
|
|
6
|
-
"declaration-no-important": null,
|
|
7
|
-
"declaration-property-value-disallowed-list": {
|
|
8
|
-
"border": "none",
|
|
9
|
-
"outline": "none"
|
|
10
|
-
},
|
|
11
|
-
"function-disallowed-list": [
|
|
12
|
-
"calc",
|
|
13
|
-
"lighten",
|
|
14
|
-
"darken"
|
|
15
|
-
],
|
|
16
|
-
"keyframes-name-pattern": null,
|
|
17
|
-
"property-disallowed-list": [
|
|
18
|
-
"border-radius",
|
|
19
|
-
"border-top-left-radius",
|
|
20
|
-
"border-top-right-radius",
|
|
21
|
-
"border-bottom-right-radius",
|
|
22
|
-
"border-bottom-left-radius",
|
|
23
|
-
"transition"
|
|
24
|
-
],
|
|
25
|
-
"scss/dollar-variable-default": [
|
|
26
|
-
true,
|
|
27
|
-
{
|
|
28
|
-
"ignore": "local"
|
|
29
|
-
}
|
|
30
|
-
],
|
|
31
|
-
"scss/selector-no-union-class-name": true,
|
|
32
|
-
"selector-max-class": null,
|
|
33
|
-
"selector-max-combinators": null,
|
|
34
|
-
"selector-max-compound-selectors": null,
|
|
35
|
-
"selector-max-id": null,
|
|
36
|
-
"selector-max-specificity": null,
|
|
37
|
-
"selector-max-type": null,
|
|
38
|
-
"selector-no-qualifying-type": null
|
|
39
|
-
}
|
|
40
|
-
}
|
package/CHECKLIST.md
DELETED
|
File without changes
|