admin-lte 4.0.0-alpha1 → 4.0.0-alpha3
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 +8 -8
- package/.cache/.eslintcache +1 -0
- package/.cache/.stylelintcache +1 -0
- package/.eslintignore +1 -0
- package/.eslintrc.json +16 -0
- package/.gitpod.yml +1 -1
- package/.idea/AdminLTE.iml +4 -0
- package/.idea/codeStyles/Project.xml +24 -0
- package/.idea/dbnavigator.xml +421 -0
- package/.idea/git_toolbox_prj.xml +15 -0
- package/.idea/jsLibraryMappings.xml +6 -0
- package/.idea/jsLinters/eslint.xml +6 -0
- package/.idea/vcs.xml +6 -0
- package/.stylelintrc.json +47 -0
- package/LICENSE +1 -1
- package/README.md +6 -7
- package/dist/assets/img/AdminLTEFullLogo.png +0 -0
- package/dist/css/adminlte.css +2716 -2710
- 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} +2715 -2710
- 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 +204 -233
- 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 +869 -0
- package/dist/pages/docs/browser-support.html +755 -0
- package/dist/pages/docs/color-mode.html +1067 -0
- package/dist/pages/docs/components/main-header.html +1137 -0
- package/dist/pages/docs/components/main-sidebar.html +858 -0
- package/dist/pages/docs/faq.html +743 -0
- package/dist/pages/docs/how-to-contribute.html +783 -0
- package/dist/pages/docs/introduction.html +767 -0
- package/dist/pages/docs/javascript/treeview.html +762 -0
- package/dist/pages/docs/layout.html +788 -0
- package/dist/pages/docs/license.html +746 -0
- package/dist/pages/examples/lockscreen.html +107 -0
- package/dist/pages/examples/login-v2.html +148 -0
- package/dist/pages/examples/login.html +128 -196
- package/dist/pages/examples/register-v2.html +155 -0
- package/dist/pages/examples/register.html +131 -199
- package/dist/pages/forms/general.html +1065 -652
- package/dist/pages/index.html +1320 -0
- package/dist/pages/index2.html +1776 -0
- package/dist/pages/index3.html +1111 -0
- package/dist/pages/layout/collapsed-sidebar.html +766 -0
- package/dist/pages/layout/fixed-complete.html +867 -0
- package/dist/pages/layout/fixed-sidebar.html +749 -654
- package/dist/pages/layout/layout-rtl.html +766 -0
- package/dist/pages/layout/logo-switch.html +433 -0
- package/dist/pages/layout/sidebar-mini.html +766 -0
- package/dist/pages/layout/unfixed-sidebar.html +747 -654
- package/dist/pages/tables/simple.html +1049 -946
- package/dist/pages/widgets/cards.html +974 -713
- package/dist/pages/widgets/info-box.html +1062 -966
- package/dist/pages/widgets/small-box.html +792 -694
- package/index.html +6 -15
- package/package.json +59 -39
- package/src/assets/img/AdminLTEFullLogo.png +0 -0
- package/src/config/assets.config.mjs +8 -0
- package/src/config/astro.config.mjs +19 -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/.prettierrc.js +11 -0
- package/src/html/.tsconfig.json +4 -0
- package/src/html/components/_head.astro +47 -0
- package/src/html/components/_scripts.astro +51 -0
- package/src/html/components/dashboard/_footer.astro +18 -0
- package/src/html/components/dashboard/_sidenav.astro +553 -0
- package/src/html/components/dashboard/_topbar.astro +213 -0
- package/src/html/components/docs/browser-support.mdx +23 -0
- package/src/html/components/docs/color-mode.mdx +169 -0
- package/src/{partials/dashboard/_topbar.html → html/components/docs/components/main-header.mdx} +67 -67
- package/src/html/components/docs/components/main-sidebar.mdx +129 -0
- package/src/html/components/docs/faq.mdx +11 -0
- package/src/html/components/docs/how-to-contribute.mdx +34 -0
- package/src/html/components/docs/introduction.mdx +60 -0
- package/src/html/components/docs/license.mdx +9 -0
- package/src/html/components/javascript/treeview.mdx +39 -0
- package/src/html/env.d.ts +1 -0
- package/src/html/pages/UI/timeline.astro +221 -0
- package/src/html/pages/docs/browser-support.astro +71 -0
- package/src/html/pages/docs/color-mode.astro +271 -0
- package/src/html/pages/docs/components/main-header.astro +319 -0
- package/src/html/pages/docs/components/main-sidebar.astro +71 -0
- package/src/html/pages/docs/faq.astro +71 -0
- package/src/html/pages/docs/how-to-contribute.astro +71 -0
- package/src/html/pages/docs/introduction.astro +71 -0
- package/src/html/pages/docs/javascript/treeview.astro +71 -0
- package/src/html/pages/docs/layout.astro +120 -0
- package/src/html/pages/docs/license.astro +71 -0
- package/src/html/pages/examples/lockscreen.astro +63 -0
- package/src/html/pages/examples/login-v2.astro +109 -0
- package/src/{pages/examples/login.html → html/pages/examples/login.astro} +40 -22
- package/src/html/pages/examples/register-v2.astro +116 -0
- package/src/{pages/examples/register.html → html/pages/examples/register.astro} +42 -24
- package/src/html/pages/forms/general.astro +624 -0
- package/src/html/pages/index.astro +790 -0
- package/src/html/pages/index2.astro +1345 -0
- package/src/html/pages/index3.astro +513 -0
- package/src/html/pages/layout/collapsed-sidebar.astro +110 -0
- package/src/html/pages/layout/fixed-complete.astro +209 -0
- package/src/html/pages/layout/fixed-sidebar.astro +109 -0
- package/src/html/pages/layout/layout-rtl.astro +109 -0
- package/src/html/pages/layout/logo-switch.astro +212 -0
- package/src/html/pages/layout/sidebar-mini.astro +108 -0
- package/src/html/pages/layout/unfixed-sidebar.astro +107 -0
- package/src/html/pages/tables/simple.astro +472 -0
- package/src/html/pages/widgets/cards.astro +373 -0
- package/src/{pages/widgets/info-box.html → html/pages/widgets/info-box.astro} +110 -60
- package/src/html/pages/widgets/small-box.astro +182 -0
- package/src/scss/_app-content.scss +52 -0
- package/src/scss/_app-footer.scss +15 -0
- package/src/scss/_app-header.scss +26 -0
- package/src/scss/_app-main.scss +17 -0
- package/src/scss/_app-sidebar.scss +603 -0
- package/src/scss/{_wrapper.scss → _app-wrapper.scss} +8 -4
- package/src/scss/_bootstrap-variables.scss +42 -27
- package/src/scss/_callouts.scss +34 -0
- package/src/scss/_cards.scss +54 -224
- package/src/scss/_compact-mode.scss +79 -0
- 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 -41
- 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 +48 -136
- package/src/scss/adminlte.scss +1 -1
- package/src/scss/mixins/_animations.scss +0 -1
- package/src/scss/mixins/_scrollbar.scss +2 -2
- package/src/scss/pages/_lockscreen.scss +74 -0
- package/src/scss/pages/_login_and_register.scss +1 -5
- package/src/scss/parts/_core.scss +9 -15
- package/src/scss/parts/_extra-components.scss +1 -2
- package/src/scss/parts/_pages.scss +1 -0
- package/src/ts/adminlte.ts +0 -2
- package/src/ts/card-widget.ts +57 -66
- package/src/ts/direct-chat.ts +35 -10
- package/src/ts/layout.ts +8 -6
- package/src/ts/push-menu.ts +90 -158
- package/src/ts/treeview.ts +30 -30
- package/src/ts/util/index.ts +14 -12
- package/src/utils/index.js +28 -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/index.html +0 -476
- package/src/index2.html +0 -968
- package/src/index3.html +0 -430
- package/src/pages/forms/general.html +0 -97
- package/src/pages/layout/fixed-sidebar.html +0 -87
- package/src/pages/layout/unfixed-sidebar.html +0 -87
- package/src/pages/tables/simple.html +0 -336
- 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/_scripts.html +0 -95
- 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/push-menu.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
-
|
|
9
|
+
onDOMContentLoaded
|
|
10
10
|
} from './util/index'
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -15,29 +15,33 @@ 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
|
|
25
|
-
const
|
|
26
|
-
const CLASS_NAME_SIDEBAR_IS_HOVER = 'sidebar-is-hover'
|
|
27
|
+
const CLASS_NAME_SIDEBAR_EXPAND = 'sidebar-expand'
|
|
28
|
+
const CLASS_NAME_SIDEBAR_OVERLAY = 'sidebar-overlay'
|
|
27
29
|
const CLASS_NAME_MENU_OPEN = 'menu-open'
|
|
28
|
-
const CLASS_NAME_LAYOUT_MOBILE = 'layout-mobile'
|
|
29
30
|
|
|
30
|
-
const
|
|
31
|
-
const
|
|
31
|
+
const SELECTOR_APP_SIDEBAR = '.app-sidebar'
|
|
32
|
+
const SELECTOR_SIDEBAR_MENU = '.sidebar-menu'
|
|
32
33
|
const SELECTOR_NAV_ITEM = '.nav-item'
|
|
33
34
|
const SELECTOR_NAV_TREEVIEW = '.nav-treeview'
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
|
|
35
|
+
const SELECTOR_APP_WRAPPER = '.app-wrapper'
|
|
36
|
+
const SELECTOR_SIDEBAR_EXPAND = `[class*="${CLASS_NAME_SIDEBAR_EXPAND}"]`
|
|
37
|
+
const SELECTOR_SIDEBAR_TOGGLE = '[data-lte-toggle="sidebar"]'
|
|
38
|
+
|
|
39
|
+
type Config = {
|
|
40
|
+
sidebarBreakpoint: number;
|
|
41
|
+
}
|
|
38
42
|
|
|
39
43
|
const Defaults = {
|
|
40
|
-
|
|
44
|
+
sidebarBreakpoint: 992
|
|
41
45
|
}
|
|
42
46
|
|
|
43
47
|
/**
|
|
@@ -46,138 +50,73 @@ const Defaults = {
|
|
|
46
50
|
*/
|
|
47
51
|
|
|
48
52
|
class PushMenu {
|
|
49
|
-
_element: HTMLElement
|
|
50
|
-
_config:
|
|
51
|
-
_bodyClass: DOMTokenList
|
|
52
|
-
constructor(element: HTMLElement | undefined, config: undefined) {
|
|
53
|
-
this._element = element
|
|
53
|
+
_element: HTMLElement
|
|
54
|
+
_config: Config
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
this.
|
|
57
|
-
|
|
58
|
-
this._config = config
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
sidebarOpening(): void {
|
|
62
|
-
this._bodyClass.add(CLASS_NAME_SIDEBAR_OPENING)
|
|
63
|
-
setTimeout(() => {
|
|
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)
|
|
56
|
+
constructor(element: HTMLElement, config: Config) {
|
|
57
|
+
this._element = element
|
|
58
|
+
this._config = { ...Defaults, ...config }
|
|
73
59
|
}
|
|
74
60
|
|
|
75
|
-
|
|
61
|
+
// TODO
|
|
62
|
+
menusClose() {
|
|
76
63
|
const navTreeview = document.querySelectorAll<HTMLElement>(SELECTOR_NAV_TREEVIEW)
|
|
77
64
|
|
|
78
|
-
|
|
65
|
+
navTreeview.forEach(navTree => {
|
|
79
66
|
navTree.style.removeProperty('display')
|
|
80
67
|
navTree.style.removeProperty('height')
|
|
81
|
-
}
|
|
68
|
+
})
|
|
82
69
|
|
|
83
|
-
const navSidebar = document.querySelector(
|
|
70
|
+
const navSidebar = document.querySelector(SELECTOR_SIDEBAR_MENU)
|
|
84
71
|
const navItem = navSidebar?.querySelectorAll(SELECTOR_NAV_ITEM)
|
|
85
72
|
|
|
86
73
|
if (navItem) {
|
|
87
|
-
|
|
74
|
+
navItem.forEach(navI => {
|
|
88
75
|
navI.classList.remove(CLASS_NAME_MENU_OPEN)
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
expand(): void {
|
|
94
|
-
this.sidebarOpening()
|
|
95
|
-
|
|
96
|
-
this._bodyClass.remove(CLASS_NAME_SIDEBAR_CLOSE)
|
|
97
|
-
this._bodyClass.remove(CLASS_NAME_SIDEBAR_COLLAPSE)
|
|
98
|
-
this._bodyClass.add(CLASS_NAME_SIDEBAR_OPEN)
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
collapse(): void {
|
|
102
|
-
this.sidebarColllapsing()
|
|
103
|
-
|
|
104
|
-
this._bodyClass.add(CLASS_NAME_SIDEBAR_COLLAPSE)
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
close(): void {
|
|
108
|
-
this._bodyClass.add(CLASS_NAME_SIDEBAR_CLOSE)
|
|
109
|
-
this._bodyClass.remove(CLASS_NAME_SIDEBAR_OPEN)
|
|
110
|
-
this._bodyClass.remove(CLASS_NAME_SIDEBAR_COLLAPSE)
|
|
111
|
-
|
|
112
|
-
if (this._bodyClass.contains(CLASS_NAME_SIDEBAR_HORIZONTAL)) {
|
|
113
|
-
this.menusClose()
|
|
76
|
+
})
|
|
114
77
|
}
|
|
115
78
|
}
|
|
116
79
|
|
|
117
|
-
|
|
118
|
-
const
|
|
80
|
+
expand() {
|
|
81
|
+
const event = new Event(EVENT_OPEN)
|
|
119
82
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
this._bodyClass.add(CLASS_NAME_SIDEBAR_IS_HOVER)
|
|
123
|
-
})
|
|
83
|
+
document.body.classList.remove(CLASS_NAME_SIDEBAR_COLLAPSE)
|
|
84
|
+
document.body.classList.add(CLASS_NAME_SIDEBAR_OPEN)
|
|
124
85
|
|
|
125
|
-
|
|
126
|
-
this._bodyClass.remove(CLASS_NAME_SIDEBAR_IS_HOVER)
|
|
127
|
-
})
|
|
128
|
-
}
|
|
86
|
+
this._element.dispatchEvent(event)
|
|
129
87
|
}
|
|
130
88
|
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
const widthOutput = window.innerWidth
|
|
89
|
+
collapse() {
|
|
90
|
+
const event = new Event(EVENT_COLLAPSE)
|
|
134
91
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
92
|
+
document.body.classList.remove(CLASS_NAME_SIDEBAR_OPEN)
|
|
93
|
+
document.body.classList.add(CLASS_NAME_SIDEBAR_COLLAPSE)
|
|
138
94
|
|
|
139
|
-
|
|
140
|
-
bodyClass.remove(CLASS_NAME_LAYOUT_MOBILE)
|
|
141
|
-
this.expand()
|
|
142
|
-
}
|
|
95
|
+
this._element.dispatchEvent(event)
|
|
143
96
|
}
|
|
144
97
|
|
|
145
|
-
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
152
|
-
}
|
|
98
|
+
addSidebarBreakPoint() {
|
|
99
|
+
const sidebarExpandList = document.querySelector(SELECTOR_SIDEBAR_EXPAND)?.classList ?? []
|
|
100
|
+
const sidebarExpand = Array.from(sidebarExpandList).find(className => className.startsWith(CLASS_NAME_SIDEBAR_EXPAND)) ?? ''
|
|
101
|
+
const sidebar = document.getElementsByClassName(sidebarExpand)[0]
|
|
102
|
+
const sidebarContent = window.getComputedStyle(sidebar, '::before').getPropertyValue('content')
|
|
103
|
+
this._config = { ...this._config, sidebarBreakpoint: Number(sidebarContent.replace(/[^\d.-]/g, '')) }
|
|
153
104
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (widthOutput < Defaults.onLayouMobile) {
|
|
157
|
-
document.body.classList.add(CLASS_NAME_SIDEBAR_CLOSE)
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
toggleFull(): void {
|
|
162
|
-
if (this._bodyClass.contains(CLASS_NAME_SIDEBAR_CLOSE)) {
|
|
163
|
-
this.expand()
|
|
105
|
+
if (window.innerWidth <= this._config.sidebarBreakpoint) {
|
|
106
|
+
this.collapse()
|
|
164
107
|
} else {
|
|
165
|
-
|
|
166
|
-
|
|
108
|
+
if (!document.body.classList.contains(CLASS_NAME_SIDEBAR_MINI)) {
|
|
109
|
+
this.expand()
|
|
110
|
+
}
|
|
167
111
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
112
|
+
if (document.body.classList.contains(CLASS_NAME_SIDEBAR_MINI) && document.body.classList.contains(CLASS_NAME_SIDEBAR_COLLAPSE)) {
|
|
113
|
+
this.collapse()
|
|
114
|
+
}
|
|
171
115
|
}
|
|
172
116
|
}
|
|
173
117
|
|
|
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)) {
|
|
118
|
+
toggle() {
|
|
119
|
+
if (document.body.classList.contains(CLASS_NAME_SIDEBAR_COLLAPSE)) {
|
|
181
120
|
this.expand()
|
|
182
121
|
} else {
|
|
183
122
|
this.collapse()
|
|
@@ -185,18 +124,7 @@ class PushMenu {
|
|
|
185
124
|
}
|
|
186
125
|
|
|
187
126
|
init() {
|
|
188
|
-
this.
|
|
189
|
-
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()
|
|
127
|
+
this.addSidebarBreakPoint()
|
|
200
128
|
}
|
|
201
129
|
}
|
|
202
130
|
|
|
@@ -206,50 +134,54 @@ class PushMenu {
|
|
|
206
134
|
* ------------------------------------------------------------------------
|
|
207
135
|
*/
|
|
208
136
|
|
|
209
|
-
|
|
210
|
-
const
|
|
211
|
-
data.init()
|
|
137
|
+
onDOMContentLoaded(() => {
|
|
138
|
+
const sidebar = document?.querySelector(SELECTOR_APP_SIDEBAR) as HTMLElement | undefined
|
|
212
139
|
|
|
213
|
-
|
|
140
|
+
if (sidebar) {
|
|
141
|
+
const data = new PushMenu(sidebar, Defaults)
|
|
214
142
|
data.init()
|
|
215
|
-
})
|
|
216
|
-
|
|
217
|
-
const fullBtn = document.querySelectorAll(SELECTOR_FULL_TOGGLE)
|
|
218
143
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
event.preventDefault()
|
|
222
|
-
|
|
223
|
-
let button = event.currentTarget as HTMLElement | undefined
|
|
224
|
-
|
|
225
|
-
if (button?.dataset.lteToggle !== 'sidebar-full') {
|
|
226
|
-
button = button?.closest(SELECTOR_FULL_TOGGLE) as HTMLElement | undefined
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
if (button) {
|
|
230
|
-
const data = new PushMenu(button, undefined)
|
|
231
|
-
data.toggleFull()
|
|
232
|
-
}
|
|
144
|
+
window.addEventListener('resize', () => {
|
|
145
|
+
data.init()
|
|
233
146
|
})
|
|
234
147
|
}
|
|
235
148
|
|
|
236
|
-
const
|
|
149
|
+
const sidebarOverlay = document.createElement('div')
|
|
150
|
+
sidebarOverlay.className = CLASS_NAME_SIDEBAR_OVERLAY
|
|
151
|
+
document.querySelector(SELECTOR_APP_WRAPPER)?.append(sidebarOverlay)
|
|
152
|
+
|
|
153
|
+
sidebarOverlay.addEventListener('touchstart', event => {
|
|
154
|
+
event.preventDefault()
|
|
155
|
+
const target = event.currentTarget as HTMLElement
|
|
156
|
+
const data = new PushMenu(target, Defaults)
|
|
157
|
+
data.collapse()
|
|
158
|
+
})
|
|
159
|
+
sidebarOverlay.addEventListener('click', event => {
|
|
160
|
+
event.preventDefault()
|
|
161
|
+
const target = event.currentTarget as HTMLElement
|
|
162
|
+
const data = new PushMenu(target, Defaults)
|
|
163
|
+
data.collapse()
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
const fullBtn = document.querySelectorAll(SELECTOR_SIDEBAR_TOGGLE)
|
|
237
167
|
|
|
238
|
-
|
|
168
|
+
fullBtn.forEach(btn => {
|
|
239
169
|
btn.addEventListener('click', event => {
|
|
240
170
|
event.preventDefault()
|
|
241
171
|
|
|
242
172
|
let button = event.currentTarget as HTMLElement | undefined
|
|
243
|
-
|
|
244
|
-
|
|
173
|
+
|
|
174
|
+
if (button?.dataset.lteToggle !== 'sidebar') {
|
|
175
|
+
button = button?.closest(SELECTOR_SIDEBAR_TOGGLE) as HTMLElement | undefined
|
|
245
176
|
}
|
|
246
177
|
|
|
247
178
|
if (button) {
|
|
248
|
-
|
|
249
|
-
data
|
|
179
|
+
event?.preventDefault()
|
|
180
|
+
const data = new PushMenu(button, Defaults)
|
|
181
|
+
data.toggle()
|
|
250
182
|
}
|
|
251
183
|
})
|
|
252
|
-
}
|
|
184
|
+
})
|
|
253
185
|
})
|
|
254
186
|
|
|
255
187
|
export default PushMenu
|
package/src/ts/treeview.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
-
|
|
9
|
+
onDOMContentLoaded,
|
|
10
10
|
slideDown,
|
|
11
11
|
slideUp
|
|
12
12
|
} from './util/index'
|
|
@@ -26,8 +26,8 @@ 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'
|
|
30
|
+
const SELECTOR_NAV_LINK = '.nav-link'
|
|
31
31
|
const SELECTOR_TREEVIEW_MENU = '.nav-treeview'
|
|
32
32
|
const SELECTOR_DATA_TOGGLE = '[data-lte-toggle="treeview"]'
|
|
33
33
|
|
|
@@ -47,46 +47,40 @@ type Config = {
|
|
|
47
47
|
class Treeview {
|
|
48
48
|
_element: HTMLElement
|
|
49
49
|
_config: Config
|
|
50
|
-
_navItem: HTMLElement | undefined
|
|
51
|
-
_childNavItem: HTMLElement | undefined | undefined
|
|
52
50
|
|
|
53
51
|
constructor(element: HTMLElement, config: Config) {
|
|
54
52
|
this._element = element
|
|
55
53
|
this._config = { ...Default, ...config }
|
|
56
|
-
this._navItem = this._element?.closest(SELECTOR_NAV_ITEM) as HTMLElement | undefined
|
|
57
|
-
this._childNavItem = this._navItem?.querySelector(SELECTOR_TREEVIEW_MENU) as HTMLElement | undefined
|
|
58
54
|
}
|
|
59
55
|
|
|
60
56
|
open(): void {
|
|
61
57
|
const event = new Event(EVENT_EXPANDED)
|
|
62
58
|
|
|
63
|
-
|
|
64
|
-
this._navItem.classList.add(CLASS_NAME_MENU_OPEN)
|
|
65
|
-
this._navItem.classList.add(CLASS_NAME_MENU_IS_OPEN)
|
|
66
|
-
}
|
|
59
|
+
this._element.classList.add(CLASS_NAME_MENU_OPEN)
|
|
67
60
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
this.
|
|
61
|
+
const childElement = this._element?.querySelector(SELECTOR_TREEVIEW_MENU) as HTMLElement | undefined
|
|
62
|
+
if (childElement) {
|
|
63
|
+
slideDown(childElement, this._config.animationSpeed)
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
this.
|
|
74
|
+
const childElement = this._element?.querySelector(SELECTOR_TREEVIEW_MENU) as HTMLElement | undefined
|
|
75
|
+
if (childElement) {
|
|
76
|
+
slideUp(childElement, this._config.animationSpeed)
|
|
85
77
|
}
|
|
78
|
+
|
|
79
|
+
this._element.dispatchEvent(event)
|
|
86
80
|
}
|
|
87
81
|
|
|
88
82
|
toggle(): void {
|
|
89
|
-
if (this.
|
|
83
|
+
if (this._element.classList.contains(CLASS_NAME_MENU_OPEN)) {
|
|
90
84
|
this.close()
|
|
91
85
|
} else {
|
|
92
86
|
this.open()
|
|
@@ -100,19 +94,25 @@ class Treeview {
|
|
|
100
94
|
* ------------------------------------------------------------------------
|
|
101
95
|
*/
|
|
102
96
|
|
|
103
|
-
|
|
97
|
+
onDOMContentLoaded(() => {
|
|
104
98
|
const button = document.querySelectorAll(SELECTOR_DATA_TOGGLE)
|
|
105
99
|
|
|
106
|
-
|
|
100
|
+
button.forEach(btn => {
|
|
107
101
|
btn.addEventListener('click', event => {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
102
|
+
const target = event.target as HTMLElement
|
|
103
|
+
const targetItem = target.closest(SELECTOR_NAV_ITEM) as HTMLElement | undefined
|
|
104
|
+
const targetLink = target.closest(SELECTOR_NAV_LINK) as HTMLAnchorElement | undefined
|
|
105
|
+
|
|
106
|
+
if (target?.getAttribute('href') === '#' || targetLink?.getAttribute('href') === '#') {
|
|
107
|
+
event.preventDefault()
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (targetItem) {
|
|
111
|
+
const data = new Treeview(targetItem, Default)
|
|
112
|
+
data.toggle()
|
|
113
|
+
}
|
|
114
114
|
})
|
|
115
|
-
}
|
|
115
|
+
})
|
|
116
116
|
})
|
|
117
117
|
|
|
118
118
|
export default Treeview
|
package/src/ts/util/index.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
const
|
|
1
|
+
const domContentLoadedCallbacks: Array<() => void> = []
|
|
2
|
+
|
|
3
|
+
const onDOMContentLoaded = (callback: () => void): void => {
|
|
2
4
|
if (document.readyState === 'loading') {
|
|
3
|
-
document
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
// add listener on the first call when the document is in loading state
|
|
6
|
+
if (!domContentLoadedCallbacks.length) {
|
|
7
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
8
|
+
for (const callback of domContentLoadedCallbacks) {
|
|
9
|
+
callback()
|
|
10
|
+
}
|
|
11
|
+
})
|
|
12
|
+
}
|
|
8
13
|
|
|
9
|
-
|
|
10
|
-
if (document.readyState === 'complete') {
|
|
11
|
-
callBack()
|
|
14
|
+
domContentLoadedCallbacks.push(callback)
|
|
12
15
|
} else {
|
|
13
|
-
|
|
16
|
+
callback()
|
|
14
17
|
}
|
|
15
18
|
}
|
|
16
19
|
|
|
@@ -91,8 +94,7 @@ const slideToggle = (target: HTMLElement, duration = 500) => {
|
|
|
91
94
|
}
|
|
92
95
|
|
|
93
96
|
export {
|
|
94
|
-
|
|
95
|
-
windowReady,
|
|
97
|
+
onDOMContentLoaded,
|
|
96
98
|
slideUp,
|
|
97
99
|
slideDown,
|
|
98
100
|
slideToggle
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
function convertPathToHtml(path) {
|
|
2
|
+
let count = 0
|
|
3
|
+
let htmlPath = ''
|
|
4
|
+
while (path.startsWith('../')) {
|
|
5
|
+
count++
|
|
6
|
+
path = path.slice(3)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
if (count === 2) {
|
|
10
|
+
htmlPath = '.'
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (count === 3) {
|
|
14
|
+
htmlPath = '..'
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (count === 4) {
|
|
18
|
+
htmlPath = '../..'
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (count === 5) {
|
|
22
|
+
htmlPath = '../../..'
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return htmlPath
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { convertPathToHtml }
|
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
|