@mediusinc/mng-commons-layout 6.0.0-rc.4 → 6.0.0-rc.6
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/components/pages/error/index.d.ts +1 -3
- package/components/pages/not-found/index.d.ts +1 -3
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs +6 -7
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs +3 -3
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs +6 -7
- package/fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-layout-components.mjs +62 -58
- package/fesm2022/mediusinc-mng-commons-layout-components.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-layout.mjs +21 -14
- package/fesm2022/mediusinc-mng-commons-layout.mjs.map +1 -1
- package/package.json +11 -21
- package/scss/commons.scss +1 -0
- package/scss/layout/_breadcrumb.scss +14 -11
- package/scss/layout/_config.scss +75 -7
- package/scss/layout/_content.scss +1 -1
- package/scss/layout/_main.scss +7 -9
- package/scss/layout/_profile.scss +1 -1
- package/scss/layout/_responsive.scss +4 -2
- package/scss/layout/_sass_variables.scss +1 -0
- package/scss/layout/_sidebar_drawer.scss +6 -5
- package/scss/layout/_sidebar_horizontal.scss +15 -11
- package/scss/layout/_sidebar_reveal.scss +16 -10
- package/scss/layout/_sidebar_slim.scss +5 -3
- package/scss/layout/_sidebar_slim_plus.scss +5 -2
- package/scss/layout/_sidebar_vertical.scss +13 -7
- package/scss/layout/_topbar.scss +75 -45
- package/scss/layout/_utils.scss +1 -5
- package/scss/layout/layout.scss +29 -22
- package/scss/layout/mng/{_mng_layout_menu.scss → layout/_mng_layout_menu.scss} +0 -4
- package/scss/layout/mng/{_mng_layout_topbar.scss → layout/_mng_layout_topbar.scss} +2 -2
- package/scss/layout/mng/theme/_mng_theme_button.scss +63 -0
- package/scss/{theme/theme-base/mng → layout/mng/theme}/_mng_theme_dialog.scss +44 -46
- package/scss/{theme/theme-base/mng → layout/mng/theme}/_mng_theme_toast.scss +4 -4
- package/scss/layout/mng/theme/_mng_theme_toggleswitch.scss +3 -0
- package/scss/layout/mng/variables/_mng-variables-common.scss +22 -0
- package/scss/layout/variables/_common.scss +15 -0
- package/scss/layout/variables/_dark.scss +10 -0
- package/scss/layout/variables/_light.scss +10 -0
- package/version-info.json +3 -3
- package/esm2022/components/index.mjs +0 -12
- package/esm2022/components/lib/components/breadcrumb.component.mjs +0 -29
- package/esm2022/components/lib/components/footer.component.mjs +0 -23
- package/esm2022/components/lib/components/main-layout.component.mjs +0 -86
- package/esm2022/components/lib/components/menu-item.component.mjs +0 -169
- package/esm2022/components/lib/components/menu.component.mjs +0 -36
- package/esm2022/components/lib/components/settings.component.mjs +0 -87
- package/esm2022/components/lib/components/sidebar.component.mjs +0 -51
- package/esm2022/components/lib/components/topbar-user.component.mjs +0 -51
- package/esm2022/components/lib/components/topbar.component.mjs +0 -37
- package/esm2022/components/lib/components/version.component.mjs +0 -95
- package/esm2022/components/mediusinc-mng-commons-layout-components.mjs +0 -5
- package/esm2022/components/pages/error/index.mjs +0 -4
- package/esm2022/components/pages/error/lib/error.page.component.mjs +0 -20
- package/esm2022/components/pages/error/mediusinc-mng-commons-layout-components-pages-error.mjs +0 -5
- package/esm2022/components/pages/main/index.mjs +0 -3
- package/esm2022/components/pages/main/lazy/index.mjs +0 -2
- package/esm2022/components/pages/main/lazy/lib/route-builder.mjs +0 -11
- package/esm2022/components/pages/main/lazy/mediusinc-mng-commons-layout-components-pages-main-lazy.mjs +0 -5
- package/esm2022/components/pages/main/lib/main-layout.component.mjs +0 -84
- package/esm2022/components/pages/main/lib/route-builder.mjs +0 -12
- package/esm2022/components/pages/main/mediusinc-mng-commons-layout-components-pages-main.mjs +0 -5
- package/esm2022/components/pages/not-found/index.mjs +0 -4
- package/esm2022/components/pages/not-found/lib/not-found.page.component.mjs +0 -20
- package/esm2022/components/pages/not-found/mediusinc-mng-commons-layout-components-pages-not-found.mjs +0 -5
- package/esm2022/index.mjs +0 -13
- package/esm2022/lib/helpers/menu-items.mjs +0 -29
- package/esm2022/lib/models/layout-state.model.mjs +0 -2
- package/esm2022/lib/models/menu.model.mjs +0 -2
- package/esm2022/lib/provide.mjs +0 -25
- package/esm2022/lib/services/layout-feature-config.token.mjs +0 -3
- package/esm2022/lib/services/layout.service.mjs +0 -167
- package/esm2022/lib/services/menu.service.mjs +0 -121
- package/esm2022/lib/services/version.service.mjs +0 -45
- package/esm2022/mediusinc-mng-commons-layout.mjs +0 -5
- package/scss/commons-dark.scss +0 -9
- package/scss/commons-light.scss +0 -9
- package/scss/layout/_animation.scss +0 -53
- package/scss/layout/_fonts.scss +0 -40
- package/scss/layout/_layout_dark.scss +0 -12
- package/scss/layout/_layout_light.scss +0 -12
- package/scss/layout/_typography.scss +0 -67
- package/scss/layout/mng/_mng_layout_styles.scss +0 -4
- package/scss/layout/preloading.scss +0 -84
- package/scss/theme/extensions/_fullcalendar.scss +0 -328
- package/scss/theme/theme-base/_colors.scss +0 -17
- package/scss/theme/theme-base/_common.scss +0 -76
- package/scss/theme/theme-base/_components.scss +0 -110
- package/scss/theme/theme-base/_mixins.scss +0 -337
- package/scss/theme/theme-base/components/button/_button.scss +0 -576
- package/scss/theme/theme-base/components/button/_speeddial.scss +0 -96
- package/scss/theme/theme-base/components/button/_splitbutton.scss +0 -348
- package/scss/theme/theme-base/components/data/_carousel.scss +0 -37
- package/scss/theme/theme-base/components/data/_datatable.scss +0 -338
- package/scss/theme/theme-base/components/data/_dataview.scss +0 -46
- package/scss/theme/theme-base/components/data/_filter.scss +0 -137
- package/scss/theme/theme-base/components/data/_orderlist.scss +0 -114
- package/scss/theme/theme-base/components/data/_organizationchart.scss +0 -50
- package/scss/theme/theme-base/components/data/_paginator.scss +0 -92
- package/scss/theme/theme-base/components/data/_picklist.scss +0 -114
- package/scss/theme/theme-base/components/data/_timeline.scss +0 -35
- package/scss/theme/theme-base/components/data/_tree.scss +0 -150
- package/scss/theme/theme-base/components/data/_treetable.scss +0 -255
- package/scss/theme/theme-base/components/data/_virtualscroller.scss +0 -28
- package/scss/theme/theme-base/components/file/_fileupload.scss +0 -64
- package/scss/theme/theme-base/components/input/_autocomplete.scss +0 -136
- package/scss/theme/theme-base/components/input/_calendar.scss +0 -267
- package/scss/theme/theme-base/components/input/_cascadeselect.scss +0 -135
- package/scss/theme/theme-base/components/input/_checkbox.scss +0 -94
- package/scss/theme/theme-base/components/input/_chips.scss +0 -65
- package/scss/theme/theme-base/components/input/_colorpicker.scss +0 -19
- package/scss/theme/theme-base/components/input/_dropdown.scss +0 -151
- package/scss/theme/theme-base/components/input/_editor.scss +0 -122
- package/scss/theme/theme-base/components/input/_inputgroup.scss +0 -74
- package/scss/theme/theme-base/components/input/_inputmask.scss +0 -16
- package/scss/theme/theme-base/components/input/_inputnumber.scss +0 -28
- package/scss/theme/theme-base/components/input/_inputswitch.scss +0 -60
- package/scss/theme/theme-base/components/input/_inputtext.scss +0 -100
- package/scss/theme/theme-base/components/input/_listbox.scss +0 -97
- package/scss/theme/theme-base/components/input/_multiselect.scss +0 -177
- package/scss/theme/theme-base/components/input/_password.scss +0 -52
- package/scss/theme/theme-base/components/input/_radiobutton.scss +0 -78
- package/scss/theme/theme-base/components/input/_rating.scss +0 -60
- package/scss/theme/theme-base/components/input/_selectbutton.scss +0 -50
- package/scss/theme/theme-base/components/input/_slider.scss +0 -75
- package/scss/theme/theme-base/components/input/_togglebutton.scss +0 -48
- package/scss/theme/theme-base/components/input/_treeselect.scss +0 -139
- package/scss/theme/theme-base/components/menu/_breadcrumb.scss +0 -42
- package/scss/theme/theme-base/components/menu/_contextmenu.scss +0 -39
- package/scss/theme/theme-base/components/menu/_dock.scss +0 -95
- package/scss/theme/theme-base/components/menu/_megamenu.scss +0 -55
- package/scss/theme/theme-base/components/menu/_menu.scss +0 -37
- package/scss/theme/theme-base/components/menu/_menubar.scss +0 -140
- package/scss/theme/theme-base/components/menu/_panelmenu.scss +0 -153
- package/scss/theme/theme-base/components/menu/_slidemenu.scss +0 -59
- package/scss/theme/theme-base/components/menu/_steps.scss +0 -56
- package/scss/theme/theme-base/components/menu/_tabmenu.scss +0 -73
- package/scss/theme/theme-base/components/menu/_tieredmenu.scss +0 -43
- package/scss/theme/theme-base/components/messages/_inlinemessage.scss +0 -69
- package/scss/theme/theme-base/components/messages/_message.scss +0 -107
- package/scss/theme/theme-base/components/messages/_toast.scss +0 -99
- package/scss/theme/theme-base/components/misc/_avatar.scss +0 -30
- package/scss/theme/theme-base/components/misc/_badge.scss +0 -48
- package/scss/theme/theme-base/components/misc/_blockui.scss +0 -0
- package/scss/theme/theme-base/components/misc/_chip.scss +0 -42
- package/scss/theme/theme-base/components/misc/_inplace.scss +0 -16
- package/scss/theme/theme-base/components/misc/_progressbar.scss +0 -17
- package/scss/theme/theme-base/components/misc/_scrolltop.scss +0 -25
- package/scss/theme/theme-base/components/misc/_skeleton.scss +0 -8
- package/scss/theme/theme-base/components/misc/_tag.scss +0 -40
- package/scss/theme/theme-base/components/misc/_terminal.scss +0 -12
- package/scss/theme/theme-base/components/multimedia/_galleria.scss +0 -155
- package/scss/theme/theme-base/components/multimedia/_image.scss +0 -49
- package/scss/theme/theme-base/components/overlay/_confirmpopup.scss +0 -70
- package/scss/theme/theme-base/components/overlay/_dialog.scss +0 -69
- package/scss/theme/theme-base/components/overlay/_overlaypanel.scss +0 -62
- package/scss/theme/theme-base/components/overlay/_sidebar.scss +0 -27
- package/scss/theme/theme-base/components/overlay/_tooltip.scss +0 -33
- package/scss/theme/theme-base/components/panel/_accordion.scss +0 -119
- package/scss/theme/theme-base/components/panel/_card.scss +0 -30
- package/scss/theme/theme-base/components/panel/_divider.scss +0 -31
- package/scss/theme/theme-base/components/panel/_fieldset.scss +0 -47
- package/scss/theme/theme-base/components/panel/_panel.scss +0 -63
- package/scss/theme/theme-base/components/panel/_scrollpanel.scss +0 -6
- package/scss/theme/theme-base/components/panel/_splitter.scss +0 -19
- package/scss/theme/theme-base/components/panel/_tabview.scss +0 -82
- package/scss/theme/theme-base/components/panel/_toolbar.scss +0 -11
- package/scss/theme/theme-base/mng/_mng_mixins.scss +0 -69
- package/scss/theme/theme-base/mng/_mng_theme_autocomplete.scss +0 -34
- package/scss/theme/theme-base/mng/_mng_theme_button.scss +0 -68
- package/scss/theme/theme-base/mng/_mng_theme_datatable.scss +0 -157
- package/scss/theme/theme-base/mng/_mng_theme_datepicker.scss +0 -21
- package/scss/theme/theme-base/mng/_mng_theme_dropdown.scss +0 -32
- package/scss/theme/theme-base/mng/_mng_theme_fileupload.scss +0 -24
- package/scss/theme/theme-base/mng/_mng_theme_forms.scss +0 -66
- package/scss/theme/theme-base/mng/_mng_theme_image.scss +0 -27
- package/scss/theme/theme-base/mng/_mng_theme_input.scss +0 -42
- package/scss/theme/theme-base/mng/_mng_theme_menu.scss +0 -5
- package/scss/theme/theme-base/mng/_mng_theme_multiselect.scss +0 -20
- package/scss/theme/theme-base/mng/_mng_theme_styles.scss +0 -19
- package/scss/theme/theme-base/mng/_mng_theme_table.scss +0 -54
- package/scss/theme/theme-base/mng/_mng_theme_tableview.scss +0 -41
- package/scss/theme/theme-base/mng/_mng_theme_tabview.scss +0 -14
- package/scss/theme/theme-base/mng/_mng_theme_tag.scss +0 -11
- package/scss/theme/theme-base/mng/_mng_theme_toolbar.scss +0 -5
- package/scss/theme/theme-base/mng/_mng_variables.scss +0 -15
- package/scss/theme/theme-dark/_extensions.scss +0 -109
- package/scss/theme/theme-dark/_variables.scss +0 -941
- package/scss/theme/theme-dark/blue/theme.scss +0 -14
- package/scss/theme/theme-light/_extensions.scss +0 -109
- package/scss/theme/theme-light/_variables.scss +0 -937
- package/scss/theme/theme-light/blue/theme.scss +0 -14
- /package/scss/layout/mng/{_mng_layout_footer.scss → layout/_mng_layout_footer.scss} +0 -0
- /package/scss/layout/mng/{_mng_sidebar_vertical.scss → layout/_mng_sidebar_vertical.scss} +0 -0
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
@import 'mng_variables';
|
|
2
|
-
|
|
3
1
|
.p-dialog {
|
|
4
2
|
.p-dialog-header {
|
|
5
|
-
border-top-right-radius:
|
|
6
|
-
border-top-left-radius:
|
|
3
|
+
border-top-right-radius: var(--p-dialog-border-radius);
|
|
4
|
+
border-top-left-radius: var(--p-dialog-border-radius);
|
|
7
5
|
}
|
|
8
6
|
|
|
9
7
|
.p-dialog-footer {
|
|
10
|
-
border-bottom-right-radius:
|
|
11
|
-
border-bottom-left-radius:
|
|
8
|
+
border-bottom-right-radius: var(--p-dialog-border-radius);
|
|
9
|
+
border-bottom-left-radius: var(--p-dialog-border-radius);
|
|
12
10
|
}
|
|
13
11
|
|
|
14
12
|
&.mng-dialog {
|
|
15
13
|
height: 90vh;
|
|
16
|
-
width:
|
|
14
|
+
width: 90vw;
|
|
17
15
|
|
|
18
|
-
@
|
|
16
|
+
@media (screen(md)) {
|
|
19
17
|
width: 80vw;
|
|
20
18
|
}
|
|
21
19
|
|
|
22
|
-
@
|
|
23
|
-
width:
|
|
20
|
+
@media (screen(lg)) {
|
|
21
|
+
width: 60vw;
|
|
24
22
|
}
|
|
25
23
|
|
|
26
24
|
&.mng-dialog-xl {
|
|
@@ -30,53 +28,53 @@
|
|
|
30
28
|
|
|
31
29
|
&.mng-dialog-lg {
|
|
32
30
|
height: 95vh;
|
|
33
|
-
width:
|
|
31
|
+
width: 90vw;
|
|
34
32
|
|
|
35
|
-
@
|
|
33
|
+
@media (screen(md)) {
|
|
36
34
|
width: 85vw;
|
|
37
35
|
}
|
|
38
36
|
|
|
39
|
-
@
|
|
40
|
-
width:
|
|
37
|
+
@media (screen(lg)) {
|
|
38
|
+
width: 80vw;
|
|
41
39
|
}
|
|
42
40
|
}
|
|
43
41
|
|
|
44
42
|
&.mng-dialog-sm {
|
|
45
|
-
width:
|
|
46
|
-
height:
|
|
43
|
+
width: 90vw;
|
|
44
|
+
height: 80vh;
|
|
47
45
|
|
|
48
|
-
@
|
|
49
|
-
width:
|
|
50
|
-
height: 80vh;
|
|
46
|
+
@media (screen(sm)) {
|
|
47
|
+
width: 80vw;
|
|
51
48
|
}
|
|
52
49
|
|
|
53
|
-
@
|
|
54
|
-
width:
|
|
50
|
+
@media (screen(md)) {
|
|
51
|
+
width: 70vw;
|
|
55
52
|
}
|
|
56
53
|
|
|
57
|
-
@
|
|
58
|
-
width:
|
|
54
|
+
@media (screen(lg)) {
|
|
55
|
+
width: 50vw;
|
|
56
|
+
height: 70vh;
|
|
59
57
|
}
|
|
60
58
|
}
|
|
61
59
|
|
|
62
60
|
&.mng-dialog-xs {
|
|
63
|
-
width:
|
|
61
|
+
width: 90vw;
|
|
64
62
|
height: initial;
|
|
65
63
|
|
|
66
|
-
@media (
|
|
67
|
-
width:
|
|
64
|
+
@media (screen(sm)) {
|
|
65
|
+
width: 70vw;
|
|
68
66
|
}
|
|
69
67
|
|
|
70
|
-
@
|
|
68
|
+
@media (screen(md)) {
|
|
71
69
|
width: 60vw;
|
|
72
70
|
}
|
|
73
71
|
|
|
74
|
-
@
|
|
75
|
-
width:
|
|
72
|
+
@media (screen(lg)) {
|
|
73
|
+
width: 45vw;
|
|
76
74
|
}
|
|
77
75
|
|
|
78
|
-
@
|
|
79
|
-
width:
|
|
76
|
+
@media (screen(2xl)) {
|
|
77
|
+
width: 30vw;
|
|
80
78
|
}
|
|
81
79
|
}
|
|
82
80
|
|
|
@@ -85,15 +83,15 @@
|
|
|
85
83
|
height: initial;
|
|
86
84
|
max-height: 90vh;
|
|
87
85
|
|
|
88
|
-
@
|
|
86
|
+
@media (screen(sm)) {
|
|
89
87
|
width: 90vw;
|
|
90
88
|
}
|
|
91
89
|
|
|
92
|
-
@
|
|
90
|
+
@media (screen(md)) {
|
|
93
91
|
width: 80vw;
|
|
94
92
|
}
|
|
95
93
|
|
|
96
|
-
@
|
|
94
|
+
@media (screen(lg)) {
|
|
97
95
|
width: 70vw;
|
|
98
96
|
}
|
|
99
97
|
}
|
|
@@ -102,8 +100,8 @@
|
|
|
102
100
|
&.mng-action-editor-dialog,
|
|
103
101
|
&.mng-formly-field-table-multiselect-dialog {
|
|
104
102
|
.p-dialog-content {
|
|
105
|
-
border-bottom-left-radius:
|
|
106
|
-
border-bottom-right-radius:
|
|
103
|
+
border-bottom-left-radius: var(--p-dialog-border-radius);
|
|
104
|
+
border-bottom-right-radius: var(--p-dialog-border-radius);
|
|
107
105
|
}
|
|
108
106
|
}
|
|
109
107
|
|
|
@@ -114,12 +112,12 @@
|
|
|
114
112
|
}
|
|
115
113
|
|
|
116
114
|
.formly-field-table-multiselect-dialog-form-container {
|
|
117
|
-
padding:
|
|
115
|
+
padding: var(--p-dialog-content-padding);
|
|
118
116
|
overflow: auto;
|
|
119
117
|
}
|
|
120
118
|
|
|
121
119
|
.mng-formly-field-table-multiselect-dialog-footer {
|
|
122
|
-
padding:
|
|
120
|
+
padding: var(--mng-dialog-footer-padding);
|
|
123
121
|
|
|
124
122
|
button {
|
|
125
123
|
width: initial;
|
|
@@ -134,11 +132,11 @@
|
|
|
134
132
|
}
|
|
135
133
|
|
|
136
134
|
.mng-formly-field-table-multiselect-dialog-table {
|
|
137
|
-
padding:
|
|
135
|
+
padding: var(--p-dialog-content-padding);
|
|
138
136
|
}
|
|
139
137
|
|
|
140
138
|
.p-dialog-footer {
|
|
141
|
-
padding:
|
|
139
|
+
padding: var(--mng-dialog-footer-padding);
|
|
142
140
|
|
|
143
141
|
button {
|
|
144
142
|
margin: 0.15rem 0.15rem;
|
|
@@ -153,12 +151,12 @@
|
|
|
153
151
|
}
|
|
154
152
|
|
|
155
153
|
.mng-action-editor-form-container {
|
|
156
|
-
padding:
|
|
154
|
+
padding: var(--p-dialog-content-padding);
|
|
157
155
|
overflow-y: auto;
|
|
158
156
|
}
|
|
159
157
|
|
|
160
158
|
.mng-action-editor-footer-container {
|
|
161
|
-
padding:
|
|
159
|
+
padding: var(--mng-dialog-footer-padding);
|
|
162
160
|
}
|
|
163
161
|
}
|
|
164
162
|
}
|
|
@@ -175,25 +173,25 @@
|
|
|
175
173
|
&-info {
|
|
176
174
|
.p-dialog-header,
|
|
177
175
|
.p-dialog-content {
|
|
178
|
-
border-left-color:
|
|
176
|
+
border-left-color: var(--p-toast-info-color);
|
|
179
177
|
}
|
|
180
178
|
}
|
|
181
179
|
&-success {
|
|
182
180
|
.p-dialog-header,
|
|
183
181
|
.p-dialog-content {
|
|
184
|
-
border-left-color:
|
|
182
|
+
border-left-color: var(--p-toast-success-color);
|
|
185
183
|
}
|
|
186
184
|
}
|
|
187
185
|
&-warn {
|
|
188
186
|
.p-dialog-header,
|
|
189
187
|
.p-dialog-content {
|
|
190
|
-
border-left-color:
|
|
188
|
+
border-left-color: var(--p-toast-warn-color);
|
|
191
189
|
}
|
|
192
190
|
}
|
|
193
191
|
&-error {
|
|
194
192
|
.p-dialog-header,
|
|
195
193
|
.p-dialog-content {
|
|
196
|
-
border-left-color:
|
|
194
|
+
border-left-color: var(--p-toast-error-color);
|
|
197
195
|
}
|
|
198
196
|
}
|
|
199
197
|
}
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
|
|
4
4
|
.p-toast-message {
|
|
5
5
|
&.p-toast-message-info {
|
|
6
|
-
background: var(--
|
|
6
|
+
background: var(--p-content-background);
|
|
7
7
|
}
|
|
8
8
|
&.p-toast-message-success {
|
|
9
|
-
background: var(--
|
|
9
|
+
background: var(--p-content-background);
|
|
10
10
|
}
|
|
11
11
|
&.p-toast-message-warn {
|
|
12
|
-
background: var(--
|
|
12
|
+
background: var(--p-content-background);
|
|
13
13
|
}
|
|
14
14
|
&.p-toast-message-error {
|
|
15
|
-
background: var(--
|
|
15
|
+
background: var(--p-content-background);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.p-toast-detail {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--mng-dialog-footer-padding: 1.25rem 1.75rem;
|
|
3
|
+
--mng-form-field-xs-font-size: 0.75rem;
|
|
4
|
+
--mng-button-xs-font-size: var(--mng-form-field-xs-font-size);
|
|
5
|
+
--mng-form-field-xl-font-size: 1.25rem;
|
|
6
|
+
--mng-button-xl-font-size: var(--mng-form-field-xl-font-size);
|
|
7
|
+
--mng-form-field-xs-padding-x: 0.5rem;
|
|
8
|
+
--mng-button-xs-padding-x: var(--mng-form-field-xs-padding-x);
|
|
9
|
+
--mng-form-field-xl-padding-x: 1rem;
|
|
10
|
+
--mng-button-xl-padding-x: var(--mng-form-field-xl-padding-x);
|
|
11
|
+
--mng-form-field-xs-padding-y: 0.25rem;
|
|
12
|
+
--mng-button-xs-padding-y: var(--mng-form-field-xs-padding-y);
|
|
13
|
+
--mng-form-field-xl-padding-y: 0.75rem;
|
|
14
|
+
--mng-button-xl-padding-y: var(--mng-form-field-xl-padding-y);
|
|
15
|
+
--mng-button-icon-only-xs-width: 2rem;
|
|
16
|
+
--mng-button-icon-only-sm-width: 2.25rem;
|
|
17
|
+
--mng-button-icon-only-lg-width: 2.75rem;
|
|
18
|
+
--mng-button-icon-only-xl-width: 3rem;
|
|
19
|
+
--mng-action-button-margin-x: 0.15rem;
|
|
20
|
+
--mng-action-button-margin-y: 0.15rem;
|
|
21
|
+
--mng-tag-secondary-outlined-border: var(--p-content-border-color);
|
|
22
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--primary-color: var(--p-primary-color);
|
|
3
|
+
--primary-color-text: var(--p-primary-contrast-color);
|
|
4
|
+
--text-color: var(--p-text-color);
|
|
5
|
+
--text-color-secondary: var(--p-text-muted-color);
|
|
6
|
+
--surface-border: var(--p-content-border-color);
|
|
7
|
+
--surface-card: var(--p-content-background);
|
|
8
|
+
--surface-hover: var(--p-content-hover-background);
|
|
9
|
+
--surface-overlay: var(--p-overlay-popover-background);
|
|
10
|
+
--transition-duration: var(--p-transition-duration);
|
|
11
|
+
--maskbg: var(--p-mask-background);
|
|
12
|
+
--border-radius: var(--p-content-border-radius);
|
|
13
|
+
--layout-section-transition-duration: 0.2s;
|
|
14
|
+
--focus-ring-shadow: var(--p-focus-ring-shadow);
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
:root[class*='app-dark'] {
|
|
2
|
+
--surface-ground: var(--p-surface-950);
|
|
3
|
+
--sidebar-shadow: none;
|
|
4
|
+
--sidebar-border: 1px solid var(--surface-border);
|
|
5
|
+
--card-shadow: none;
|
|
6
|
+
--body-bg: var(--p-surface-950);
|
|
7
|
+
--body-image: url('/assets/images/mng/effect-ondark.svg');
|
|
8
|
+
--root-menu-item-hover-bg: rgba(255, 255, 255, 0.05);
|
|
9
|
+
--exception-pages-image: url('/assets/images/mng/exception-ondark.png');
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--surface-ground: var(--p-surface-100);
|
|
3
|
+
--sidebar-shadow: 0px 4px 50px #d9ddfc;
|
|
4
|
+
--sidebar-border: 1px solid transparent;
|
|
5
|
+
--card-shadow: 0px 4px 30px rgba(221, 224, 255, 0.54);
|
|
6
|
+
--body-bg: var(--p-surface-50);
|
|
7
|
+
--body-image: url('/assets/images/mng/effect-onlight.svg');
|
|
8
|
+
--root-menu-item-hover-bg: rgba(68, 72, 109, 0.07);
|
|
9
|
+
--exception-pages-image: url('/assets/images/mng/pages/exception-onlight.png');
|
|
10
|
+
}
|
package/version-info.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mediusinc/mng-commons-layout",
|
|
3
|
-
"version": "6.0.0-rc.
|
|
3
|
+
"version": "6.0.0-rc.6",
|
|
4
4
|
"tag": null,
|
|
5
5
|
"distance": null,
|
|
6
|
-
"hash": "
|
|
6
|
+
"hash": "65c2b24",
|
|
7
7
|
"dirty": true,
|
|
8
8
|
"semver": null,
|
|
9
9
|
"buildTimestamp": null,
|
|
10
|
-
"raw": "6.0.0-rc.
|
|
10
|
+
"raw": "6.0.0-rc.6-65c2b24-dirty"
|
|
11
11
|
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// components
|
|
2
|
-
export * from './lib/components/footer.component';
|
|
3
|
-
export * from './lib/components/breadcrumb.component';
|
|
4
|
-
export * from './lib/components/main-layout.component';
|
|
5
|
-
export * from './lib/components/menu.component';
|
|
6
|
-
export * from './lib/components/menu-item.component';
|
|
7
|
-
export * from './lib/components/settings.component';
|
|
8
|
-
export * from './lib/components/sidebar.component';
|
|
9
|
-
export * from './lib/components/topbar.component';
|
|
10
|
-
export * from './lib/components/topbar-user.component';
|
|
11
|
-
export * from './lib/components/version.component';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhO0FBQ2IsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGNvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9vdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbWFpbi1sYXlvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbWVudS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tZW51LWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2V0dGluZ3MuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2lkZWJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b3BiYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9wYmFyLXVzZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmVyc2lvbi5jb21wb25lbnQnO1xuIl19
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
|
|
2
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
3
|
-
import { CommonsService } from '@mediusinc/mng-commons/core';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@ngx-translate/core";
|
|
6
|
-
export class BreadcrumbComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.commons = inject(CommonsService);
|
|
9
|
-
this.mappedBreadcrumbs = computed(() => {
|
|
10
|
-
const items = this.commons.breadcrumbs();
|
|
11
|
-
return items.map(el => this.mapMenuItem(el));
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
mapMenuItem(item) {
|
|
15
|
-
return {
|
|
16
|
-
...item,
|
|
17
|
-
url: item.href,
|
|
18
|
-
badgeStyleClass: item.badgeClassName,
|
|
19
|
-
styleClass: item.className
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BreadcrumbComponent, isStandalone: true, selector: "mng-breadcrumb", ngImport: i0, template: "<div class=\"layout-breadcrumb flex align-items-center relative h-3rem\">\n <nav>\n <ol class=\"relative z-2\">\n @for (item of mappedBreadcrumbs(); track item.id; let last = $last) {\n <li>{{ item.label! | translate }}</li>\n @if (!last) {\n <li class=\"layout-breadcrumb-chevron\">/</li>\n }\n }\n </ol>\n </nav>\n</div>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
|
-
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
26
|
-
type: Component,
|
|
27
|
-
args: [{ standalone: true, selector: 'mng-breadcrumb', imports: [TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-breadcrumb flex align-items-center relative h-3rem\">\n <nav>\n <ol class=\"relative z-2\">\n @for (item of mappedBreadcrumbs(); track item.id; let last = $last) {\n <li>{{ item.label! | translate }}</li>\n @if (!last) {\n <li class=\"layout-breadcrumb-chevron\">/</li>\n }\n }\n </ol>\n </nav>\n</div>\n" }]
|
|
28
|
-
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9icmVhZGNydW1iLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUdwRCxPQUFPLEVBQWtCLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7QUFTNUUsTUFBTSxPQUFPLG1CQUFtQjtJQVBoQztRQVFZLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbEMsc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxNQUFNLEtBQUssR0FBc0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1RCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7S0FVTjtJQVJXLFdBQVcsQ0FBQyxJQUFxQjtRQUNyQyxPQUFPO1lBQ0gsR0FBRyxJQUFJO1lBQ1AsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2QsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUztTQUM3QixDQUFDO0lBQ04sQ0FBQzsrR0FmUSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwwRUNkaEMsZ2JBWUEsMkNERmMsZUFBZTs7NEZBSWhCLG1CQUFtQjtrQkFQL0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sZ0JBQWdCLFdBQ2pCLENBQUMsZUFBZSxDQUFDLG1CQUVULHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7Q29tbW9uc01lbnVJdGVtLCBDb21tb25zU2VydmljZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy1icmVhZGNydW1iJyxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSBjb21tb25zID0gaW5qZWN0KENvbW1vbnNTZXJ2aWNlKTtcblxuICAgIHB1YmxpYyBtYXBwZWRCcmVhZGNydW1icyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgaXRlbXM6IENvbW1vbnNNZW51SXRlbVtdID0gdGhpcy5jb21tb25zLmJyZWFkY3J1bWJzKCk7XG4gICAgICAgIHJldHVybiBpdGVtcy5tYXAoZWwgPT4gdGhpcy5tYXBNZW51SXRlbShlbCkpO1xuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSBtYXBNZW51SXRlbShpdGVtOiBDb21tb25zTWVudUl0ZW0pOiBNZW51SXRlbSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgdXJsOiBpdGVtLmhyZWYsXG4gICAgICAgICAgICBiYWRnZVN0eWxlQ2xhc3M6IGl0ZW0uYmFkZ2VDbGFzc05hbWUsXG4gICAgICAgICAgICBzdHlsZUNsYXNzOiBpdGVtLmNsYXNzTmFtZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsYXlvdXQtYnJlYWRjcnVtYiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciByZWxhdGl2ZSBoLTNyZW1cIj5cbiAgICA8bmF2PlxuICAgICAgICA8b2wgY2xhc3M9XCJyZWxhdGl2ZSB6LTJcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbWFwcGVkQnJlYWRjcnVtYnMoKTsgdHJhY2sgaXRlbS5pZDsgbGV0IGxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgIDxsaT57eyBpdGVtLmxhYmVsISB8IHRyYW5zbGF0ZSB9fTwvbGk+XG4gICAgICAgICAgICAgICAgQGlmICghbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsYXlvdXQtYnJlYWRjcnVtYi1jaGV2cm9uXCI+LzwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L29sPlxuICAgIDwvbmF2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
|
|
2
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
3
|
-
import { COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService } from '@mediusinc/mng-commons-layout';
|
|
4
|
-
import { CommonsService, ComponentDirective } from '@mediusinc/mng-commons/core';
|
|
5
|
-
import { VersionComponent } from './version.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@ngx-translate/core";
|
|
8
|
-
export class FooterComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, { optional: true });
|
|
11
|
-
this.layout = inject(LayoutService);
|
|
12
|
-
this.commons = inject(CommonsService);
|
|
13
|
-
this.currentYear = signal(new Date().getFullYear());
|
|
14
|
-
this.versionComponent = signal(this.config?.components?.version === false ? undefined : (this.config?.components?.version ?? VersionComponent));
|
|
15
|
-
}
|
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: FooterComponent, isStandalone: true, selector: "mng-footer", ngImport: i0, template: "<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n @if (layout.appLogo()) {\n <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n }\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-column\">\n <div>\n <span class=\"copyright\">© {{ commons.appOwner() | translate }} - {{ currentYear() }}</span>\n </div>\n @if (versionComponent()) {\n <div class=\"version\" [mngComponent]=\"versionComponent()\" [inputs]=\"{version: commons.appVersion()}\" [attachToHost]=\"true\"></div>\n }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FooterComponent, decorators: [{
|
|
20
|
-
type: Component,
|
|
21
|
-
args: [{ standalone: true, selector: 'mng-footer', imports: [TranslateModule, ComponentDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n @if (layout.appLogo()) {\n <img id=\"footer-logo\" [src]=\"layout.appLogo()\" alt=\"atlantis-layout\" />\n }\n <span class=\"app-name\">{{ commons.appName() | translate }}</span>\n </div>\n <div class=\"flex flex-column\">\n <div>\n <span class=\"copyright\">© {{ commons.appOwner() | translate }} - {{ currentYear() }}</span>\n </div>\n @if (versionComponent()) {\n <div class=\"version\" [mngComponent]=\"versionComponent()\" [inputs]=\"{version: commons.appVersion()}\" [attachToHost]=\"true\"></div>\n }\n </div>\n</div>\n" }]
|
|
22
|
-
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBUSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUUsYUFBYSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDOUYsT0FBTyxFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRS9FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFTckQsTUFBTSxPQUFPLGVBQWU7SUFQNUI7UUFRWSxXQUFNLEdBQUcsTUFBTSxDQUFDLGdDQUFnQyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDNUQsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4QyxZQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWpDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMvQyxxQkFBZ0IsR0FBRyxNQUFNLENBQXdCLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0tBQzVLOytHQVBZLGVBQWU7bUdBQWYsZUFBZSxzRUNoQjVCLDJyQkFnQkEsMkNESGMsZUFBZSw0RkFBRSxrQkFBa0I7OzRGQUdwQyxlQUFlO2tCQVAzQixTQUFTO2lDQUNNLElBQUksWUFDTixZQUFZLFdBRWIsQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLENBQUMsbUJBQzdCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFR5cGUsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge0NPTU1PTlNfTEFZT1VUX0ZFQVRVUkVfQ09ORklHX0lULCBMYXlvdXRTZXJ2aWNlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zLWxheW91dCc7XG5pbXBvcnQge0NvbW1vbnNTZXJ2aWNlLCBDb21wb25lbnREaXJlY3RpdmV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7VmVyc2lvbkNvbXBvbmVudH0gZnJvbSAnLi92ZXJzaW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZm9vdGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2Zvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgQ29tcG9uZW50RGlyZWN0aXZlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGb290ZXJDb21wb25lbnQge1xuICAgIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KENPTU1PTlNfTEFZT1VUX0ZFQVRVUkVfQ09ORklHX0lULCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0ID0gaW5qZWN0KExheW91dFNlcnZpY2UpO1xuICAgIHB1YmxpYyBjb21tb25zID0gaW5qZWN0KENvbW1vbnNTZXJ2aWNlKTtcblxuICAgIHB1YmxpYyBjdXJyZW50WWVhciA9IHNpZ25hbChuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpO1xuICAgIHB1YmxpYyB2ZXJzaW9uQ29tcG9uZW50ID0gc2lnbmFsPFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odGhpcy5jb25maWc/LmNvbXBvbmVudHM/LnZlcnNpb24gPT09IGZhbHNlID8gdW5kZWZpbmVkIDogKHRoaXMuY29uZmlnPy5jb21wb25lbnRzPy52ZXJzaW9uID8/IFZlcnNpb25Db21wb25lbnQpKTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJsYXlvdXQtZm9vdGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZvb3Rlci1sb2dvLWNvbnRhaW5lclwiPlxuICAgICAgICBAaWYgKGxheW91dC5hcHBMb2dvKCkpIHtcbiAgICAgICAgICAgIDxpbWcgaWQ9XCJmb290ZXItbG9nb1wiIFtzcmNdPVwibGF5b3V0LmFwcExvZ28oKVwiIGFsdD1cImF0bGFudGlzLWxheW91dFwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtbmFtZVwiPnt7IGNvbW1vbnMuYXBwTmFtZSgpIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvcHlyaWdodFwiPiYjMTY5OyB7eyBjb21tb25zLmFwcE93bmVyKCkgfCB0cmFuc2xhdGUgfX0gLSB7eyBjdXJyZW50WWVhcigpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmICh2ZXJzaW9uQ29tcG9uZW50KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJzaW9uXCIgW21uZ0NvbXBvbmVudF09XCJ2ZXJzaW9uQ29tcG9uZW50KClcIiBbaW5wdXRzXT1cInt2ZXJzaW9uOiBjb21tb25zLmFwcFZlcnNpb24oKX1cIiBbYXR0YWNoVG9Ib3N0XT1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, Renderer2, inject, signal, viewChild } from '@angular/core';
|
|
3
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { RouterModule } from '@angular/router';
|
|
5
|
-
import { COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutService, MenuService } from '@mediusinc/mng-commons-layout';
|
|
6
|
-
import { ComponentDirective, NotificationWrapperComponent } from '@mediusinc/mng-commons/core';
|
|
7
|
-
import { BreadcrumbComponent } from './breadcrumb.component';
|
|
8
|
-
import { FooterComponent } from './footer.component';
|
|
9
|
-
import { TopbarComponent } from './topbar.component';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/router";
|
|
12
|
-
export class MainLayoutComponent {
|
|
13
|
-
constructor() {
|
|
14
|
-
// private readonly commonsService = inject(CommonsService);
|
|
15
|
-
this.config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, { optional: true });
|
|
16
|
-
this.layout = inject(LayoutService);
|
|
17
|
-
this.menuService = inject(MenuService);
|
|
18
|
-
this.renderer = inject(Renderer2);
|
|
19
|
-
this.appTopbar = viewChild('topbarCmp');
|
|
20
|
-
this.ripple = signal(this.config?.ripple ?? true);
|
|
21
|
-
this.topbarComponent = signal(this.config?.components?.topbar === false ? undefined : (this.config?.components?.topbar ?? TopbarComponent));
|
|
22
|
-
this.breadcrumbsComponent = signal(this.config?.components?.breadcrumb === false ? undefined : (this.config?.components?.breadcrumb ?? BreadcrumbComponent));
|
|
23
|
-
this.footerComponent = signal(this.config?.components?.footer === false ? undefined : (this.config?.components?.footer ?? FooterComponent));
|
|
24
|
-
this.useNotificationWrapper = signal(!this.config?.disableNotificationWrapper);
|
|
25
|
-
this.layout.overlayOpen$.pipe(takeUntilDestroyed()).subscribe(() => {
|
|
26
|
-
if (!this.menuOutsideClickListener) {
|
|
27
|
-
this.menuOutsideClickListener = this.renderer.listen('document', 'click', event => {
|
|
28
|
-
const isOutsideClicked = !(this.appTopbar()?.nativeElement.isSameNode(event.target) || this.appTopbar()?.nativeElement.contains(event.target));
|
|
29
|
-
if (isOutsideClicked) {
|
|
30
|
-
this.hideMenu();
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
if (this.layout.state().staticMenuMobileActive) {
|
|
35
|
-
this.blockBodyScroll();
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
blockBodyScroll() {
|
|
40
|
-
if (document.body.classList) {
|
|
41
|
-
document.body.classList.add('blocked-scroll');
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
document.body.className += ' blocked-scroll';
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
unblockBodyScroll() {
|
|
48
|
-
if (document.body.classList) {
|
|
49
|
-
document.body.classList.remove('blocked-scroll');
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
document.body.className = document.body.className.replace(new RegExp('(^|\\b)' + 'blocked-scroll'.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
hideMenu() {
|
|
56
|
-
this.layout.state.update(state => ({
|
|
57
|
-
...state,
|
|
58
|
-
overlayMenuActive: false,
|
|
59
|
-
staticMenuMobileActive: false,
|
|
60
|
-
menuHoverActive: false
|
|
61
|
-
}));
|
|
62
|
-
if (this.layout.submenuOverlayKey() !== undefined) {
|
|
63
|
-
this.layout.onOverlaySubmenuClose();
|
|
64
|
-
}
|
|
65
|
-
if (!(this.layout.isSlim() || this.layout.isSlimPlus())) {
|
|
66
|
-
this.menuService.reset();
|
|
67
|
-
}
|
|
68
|
-
if (this.menuOutsideClickListener) {
|
|
69
|
-
this.menuOutsideClickListener();
|
|
70
|
-
this.menuOutsideClickListener = null;
|
|
71
|
-
}
|
|
72
|
-
this.unblockBodyScroll();
|
|
73
|
-
}
|
|
74
|
-
ngOnDestroy() {
|
|
75
|
-
if (this.menuOutsideClickListener) {
|
|
76
|
-
this.menuOutsideClickListener();
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MainLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: MainLayoutComponent, isStandalone: true, selector: "mng-main-layout", viewQueries: [{ propertyName: "appTopbar", first: true, predicate: ["topbarCmp"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-container\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "parentInjector"], outputs: ["instanceCreated"] }, { kind: "component", type: NotificationWrapperComponent, selector: "mng-notification-wrapper" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
81
|
-
}
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MainLayoutComponent, decorators: [{
|
|
83
|
-
type: Component,
|
|
84
|
-
args: [{ standalone: true, selector: 'mng-main-layout', imports: [NgClass, RouterModule, ComponentDirective, NotificationWrapperComponent, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (useNotificationWrapper()) {\n <mng-notification-wrapper>\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n </mng-notification-wrapper>\n} @else {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n}\n\n<ng-template #content>\n <div\n class=\"layout-container\"\n [ngClass]=\"{\n 'layout-light': layout.colorScheme() === 'light',\n 'layout-dark': layout.colorScheme() === 'dark',\n 'layout-overlay': layout.menuMode() === 'overlay',\n 'layout-static': layout.menuMode() === 'static',\n 'layout-reveal': layout.menuMode() === 'reveal',\n 'layout-drawer': layout.menuMode() === 'drawer',\n 'layout-slim': layout.menuMode() === 'slim',\n 'layout-slim-plus': layout.menuMode() === 'slim-plus',\n 'layout-static-inactive': layout.state().staticMenuDesktopInactive && layout.menuMode() === 'static',\n 'layout-overlay-active': layout.state().overlayMenuActive,\n 'layout-mobile-active': layout.state().staticMenuMobileActive,\n 'p-ripple-disabled': !ripple(),\n 'layout-sidebar-active': layout.state().sidebarActive,\n 'layout-sidebar-anchored': layout.state().anchored\n }\">\n <div class=\"layout-content-wrapper\">\n @if (topbarComponent()) {\n <div #topbarCmp class=\"layout-topbar-wrapper\" [mngComponent]=\"topbarComponent()\" [attachToHost]=\"true\"></div>\n }\n @if (breadcrumbsComponent()) {\n <div class=\"content-breadcrumb\">\n <div [mngComponent]=\"breadcrumbsComponent()\" [attachToHost]=\"true\"></div>\n </div>\n }\n <div class=\"layout-content\">\n <router-outlet></router-outlet>\n </div>\n <div class=\"layout-mask\"></div>\n @if (footerComponent()) {\n <div [mngComponent]=\"footerComponent()\" [attachToHost]=\"true\"></div>\n }\n </div>\n </div>\n</ng-template>\n" }]
|
|
85
|
-
}], ctorParameters: () => [] });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbWFpbi1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbWFpbi1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQXlCLFNBQVMsRUFBUSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFDLGdDQUFnQyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsNEJBQTRCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDOzs7QUFTbkQsTUFBTSxPQUFPLG1CQUFtQjtJQW9CNUI7UUFuQkEsNERBQTREO1FBQzNDLFdBQU0sR0FBRyxNQUFNLENBQUMsZ0NBQWdDLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNyRSxXQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlCLGdC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TCxDQUFDOytHQTlFUSxtQkFBbUI7bUdBQW5CLG1CQUFtQixtTUNuQmhDLGlrRUE4Q0EsNENEL0JjLE9BQU8sbUZBQUUsWUFBWSx5TUFBRSxrQkFBa0IsaUxBQUUsNEJBQTRCLHFFQUFFLGdCQUFnQjs7NEZBSTFGLG1CQUFtQjtrQkFQL0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04saUJBQWlCLFdBQ2xCLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSw0QkFBNEIsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFFbkYsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBSZW5kZXJlcjIsIFR5cGUsIGluamVjdCwgc2lnbmFsLCB2aWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Um91dGVyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0NPTU1PTlNfTEFZT1VUX0ZFQVRVUkVfQ09ORklHX0lULCBMYXlvdXRTZXJ2aWNlLCBNZW51U2VydmljZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy1sYXlvdXQnO1xuaW1wb3J0IHtDb21wb25lbnREaXJlY3RpdmUsIE5vdGlmaWNhdGlvbldyYXBwZXJDb21wb25lbnR9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7QnJlYWRjcnVtYkNvbXBvbmVudH0gZnJvbSAnLi9icmVhZGNydW1iLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvb3RlckNvbXBvbmVudH0gZnJvbSAnLi9mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7VG9wYmFyQ29tcG9uZW50fSBmcm9tICcuL3RvcGJhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLW1haW4tbGF5b3V0JyxcbiAgICBpbXBvcnRzOiBbTmdDbGFzcywgUm91dGVyTW9kdWxlLCBDb21wb25lbnREaXJlY3RpdmUsIE5vdGlmaWNhdGlvbldyYXBwZXJDb21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYWluLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTWFpbkxheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgLy8gcHJpdmF0ZSByZWFkb25seSBjb21tb25zU2VydmljZSA9IGluamVjdChDb21tb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoQ09NTU9OU19MQVlPVVRfRkVBVFVSRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHB1YmxpYyByZWFkb25seSBsYXlvdXQgPSBpbmplY3QoTGF5b3V0U2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW51U2VydmljZSA9IGluamVjdChNZW51U2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXG4gICAgcHJpdmF0ZSBhcHBUb3BiYXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ3RvcGJhckNtcCcpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHJpcHBsZSA9IHNpZ25hbCh0aGlzLmNvbmZpZz8ucmlwcGxlID8/IHRydWUpO1xuXG4gICAgcHVibGljIHRvcGJhckNvbXBvbmVudCA9IHNpZ25hbDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KHRoaXMuY29uZmlnPy5jb21wb25lbnRzPy50b3BiYXIgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogKHRoaXMuY29uZmlnPy5jb21wb25lbnRzPy50b3BiYXIgPz8gVG9wYmFyQ29tcG9uZW50KSk7XG4gICAgcHVibGljIGJyZWFkY3J1bWJzQ29tcG9uZW50ID0gc2lnbmFsPFR5cGU8YW55PiB8IHVuZGVmaW5lZD4oXG4gICAgICAgIHRoaXMuY29uZmlnPy5jb21wb25lbnRzPy5icmVhZGNydW1iID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6ICh0aGlzLmNvbmZpZz8uY29tcG9uZW50cz8uYnJlYWRjcnVtYiA/PyBCcmVhZGNydW1iQ29tcG9uZW50KVxuICAgICk7XG4gICAgcHVibGljIGZvb3RlckNvbXBvbmVudCA9IHNpZ25hbDxUeXBlPGFueT4gfCB1bmRlZmluZWQ+KHRoaXMuY29uZmlnPy5jb21wb25lbnRzPy5mb290ZXIgPT09IGZhbHNlID8gdW5kZWZpbmVkIDogKHRoaXMuY29uZmlnPy5jb21wb25lbnRzPy5mb290ZXIgPz8gRm9vdGVyQ29tcG9uZW50KSk7XG5cbiAgICBwdWJsaWMgdXNlTm90aWZpY2F0aW9uV3JhcHBlciA9IHNpZ25hbCghdGhpcy5jb25maWc/LmRpc2FibGVOb3RpZmljYXRpb25XcmFwcGVyKTtcbiAgICBwcml2YXRlIG1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcjogYW55O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGF5b3V0Lm92ZXJsYXlPcGVuJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc091dHNpZGVDbGlja2VkID0gISh0aGlzLmFwcFRvcGJhcigpPy5uYXRpdmVFbGVtZW50LmlzU2FtZU5vZGUoZXZlbnQudGFyZ2V0KSB8fCB0aGlzLmFwcFRvcGJhcigpPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPdXRzaWRlQ2xpY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQuc3RhdGUoKS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja0JvZHlTY3JvbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYmxvY2tCb2R5U2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnYmxvY2tlZC1zY3JvbGwnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lICs9ICcgYmxvY2tlZC1zY3JvbGwnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5ibG9ja0JvZHlTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdibG9ja2VkLXNjcm9sbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoJyhefFxcXFxiKScgKyAnYmxvY2tlZC1zY3JvbGwnLnNwbGl0KCcgJykuam9pbignfCcpICsgJyhcXFxcYnwkKScsICdnaScpLCAnICcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGlkZU1lbnUoKSB7XG4gICAgICAgIHRoaXMubGF5b3V0LnN0YXRlLnVwZGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBvdmVybGF5TWVudUFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICBzdGF0aWNNZW51TW9iaWxlQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIG1lbnVIb3ZlckFjdGl2ZTogZmFsc2VcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGlmICh0aGlzLmxheW91dC5zdWJtZW51T3ZlcmxheUtleSgpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0Lm9uT3ZlcmxheVN1Ym1lbnVDbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKHRoaXMubGF5b3V0LmlzU2xpbSgpIHx8IHRoaXMubGF5b3V0LmlzU2xpbVBsdXMoKSkpIHtcbiAgICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UucmVzZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5tZW51T3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMubWVudU91dHNpZGVDbGlja0xpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVuYmxvY2tCb2R5U2Nyb2xsKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVPdXRzaWRlQ2xpY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5tZW51T3V0c2lkZUNsaWNrTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAodXNlTm90aWZpY2F0aW9uV3JhcHBlcigpKSB7XG4gICAgPG1uZy1ub3RpZmljYXRpb24td3JhcHBlcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbW5nLW5vdGlmaWNhdGlvbi13cmFwcGVyPlxufSBAZWxzZSB7XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxufVxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImxheW91dC1jb250YWluZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnbGF5b3V0LWxpZ2h0JzogbGF5b3V0LmNvbG9yU2NoZW1lKCkgPT09ICdsaWdodCcsXG4gICAgICAgICAgICAnbGF5b3V0LWRhcmsnOiBsYXlvdXQuY29sb3JTY2hlbWUoKSA9PT0gJ2RhcmsnLFxuICAgICAgICAgICAgJ2xheW91dC1vdmVybGF5JzogbGF5b3V0Lm1lbnVNb2RlKCkgPT09ICdvdmVybGF5JyxcbiAgICAgICAgICAgICdsYXlvdXQtc3RhdGljJzogbGF5b3V0Lm1lbnVNb2RlKCkgPT09ICdzdGF0aWMnLFxuICAgICAgICAgICAgJ2xheW91dC1yZXZlYWwnOiBsYXlvdXQubWVudU1vZGUoKSA9PT0gJ3JldmVhbCcsXG4gICAgICAgICAgICAnbGF5b3V0LWRyYXdlcic6IGxheW91dC5tZW51TW9kZSgpID09PSAnZHJhd2VyJyxcbiAgICAgICAgICAgICdsYXlvdXQtc2xpbSc6IGxheW91dC5tZW51TW9kZSgpID09PSAnc2xpbScsXG4gICAgICAgICAgICAnbGF5b3V0LXNsaW0tcGx1cyc6IGxheW91dC5tZW51TW9kZSgpID09PSAnc2xpbS1wbHVzJyxcbiAgICAgICAgICAgICdsYXlvdXQtc3RhdGljLWluYWN0aXZlJzogbGF5b3V0LnN0YXRlKCkuc3RhdGljTWVudURlc2t0b3BJbmFjdGl2ZSAmJiBsYXlvdXQubWVudU1vZGUoKSA9PT0gJ3N0YXRpYycsXG4gICAgICAgICAgICAnbGF5b3V0LW92ZXJsYXktYWN0aXZlJzogbGF5b3V0LnN0YXRlKCkub3ZlcmxheU1lbnVBY3RpdmUsXG4gICAgICAgICAgICAnbGF5b3V0LW1vYmlsZS1hY3RpdmUnOiBsYXlvdXQuc3RhdGUoKS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlLFxuICAgICAgICAgICAgJ3AtcmlwcGxlLWRpc2FibGVkJzogIXJpcHBsZSgpLFxuICAgICAgICAgICAgJ2xheW91dC1zaWRlYmFyLWFjdGl2ZSc6IGxheW91dC5zdGF0ZSgpLnNpZGViYXJBY3RpdmUsXG4gICAgICAgICAgICAnbGF5b3V0LXNpZGViYXItYW5jaG9yZWQnOiBsYXlvdXQuc3RhdGUoKS5hbmNob3JlZFxuICAgICAgICB9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29udGVudC13cmFwcGVyXCI+XG4gICAgICAgICAgICBAaWYgKHRvcGJhckNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiAjdG9wYmFyQ21wIGNsYXNzPVwibGF5b3V0LXRvcGJhci13cmFwcGVyXCIgW21uZ0NvbXBvbmVudF09XCJ0b3BiYXJDb21wb25lbnQoKVwiIFthdHRhY2hUb0hvc3RdPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChicmVhZGNydW1ic0NvbXBvbmVudCgpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtYnJlYWRjcnVtYlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFttbmdDb21wb25lbnRdPVwiYnJlYWRjcnVtYnNDb21wb25lbnQoKVwiIFthdHRhY2hUb0hvc3RdPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LW1hc2tcIj48L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoZm9vdGVyQ29tcG9uZW50KCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IFttbmdDb21wb25lbnRdPVwiZm9vdGVyQ29tcG9uZW50KClcIiBbYXR0YWNoVG9Ib3N0XT1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|