@mptw/skylens-ui 1.5.0 → 1.5.1
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/AGENTS.md +59 -0
- package/CLAUDE.md +36 -0
- package/README.md +7 -7
- package/app/app.config.ts +11 -2
- package/app/app.vue +5 -0
- package/app/assets/css/layout.css +134 -0
- package/app/assets/css/main.css +189 -0
- package/app/components/SLAlertModal.vue +24 -16
- package/app/components/SLBreadcrumbs.vue +12 -8
- package/app/components/SLButton.vue +196 -163
- package/app/components/SLCalendarButton.vue +40 -34
- package/app/components/SLCalendarPopup.vue +79 -53
- package/app/components/SLCard.vue +57 -41
- package/app/components/SLChart.vue +6 -3
- package/app/components/SLCheckbox.vue +92 -49
- package/app/components/SLCircleButton.vue +25 -16
- package/app/components/SLCollapsableBlock.vue +44 -33
- package/app/components/SLCollapsableMulitPillSelect.vue +20 -15
- package/app/components/SLConfirmModal.vue +9 -6
- package/app/components/SLContextMenu.vue +88 -48
- package/app/components/SLDateInput.vue +109 -92
- package/app/components/SLDatePicker.vue +9 -7
- package/app/components/SLDistributor.vue +1 -1
- package/app/components/SLDownloadButton.vue +39 -29
- package/app/components/SLDraggable.vue +2 -2
- package/app/components/SLDropdown.vue +33 -25
- package/app/components/SLDropdownItem.vue +9 -5
- package/app/components/SLElementWithTitle.vue +12 -7
- package/app/components/SLEyeCheckbox.vue +44 -31
- package/app/components/SLFileInput.vue +23 -16
- package/app/components/SLGenderAgeSelect.vue +52 -36
- package/app/components/SLHourRangeInput.vue +45 -32
- package/app/components/SLIOSSwitch.vue +81 -60
- package/app/components/SLIcon.vue +4 -3
- package/app/components/SLIconButton.vue +31 -29
- package/app/components/SLInfoTip.vue +51 -40
- package/app/components/SLInsightSitePage.vue +12 -7
- package/app/components/SLLegend.vue +19 -12
- package/app/components/SLLinearProgressBar.vue +7 -20
- package/app/components/SLLink.vue +12 -8
- package/app/components/SLLoading.vue +34 -31
- package/app/components/SLMapChart.vue +5 -4
- package/app/components/SLModal.vue +90 -66
- package/app/components/SLMonthCalendarButton.vue +91 -45
- package/app/components/SLMonthPicker.vue +42 -37
- package/app/components/SLMultiEmailInput.vue +163 -113
- package/app/components/SLMultiSelect.vue +37 -26
- package/app/components/SLNoData.vue +16 -11
- package/app/components/SLNotification.vue +133 -129
- package/app/components/SLPageModal.vue +14 -9
- package/app/components/SLPagination.vue +45 -33
- package/app/components/SLPillCheckbox.vue +50 -42
- package/app/components/SLPillLabel.vue +43 -28
- package/app/components/SLPopupMenuButton.vue +26 -17
- package/app/components/SLProfileButton.vue +28 -20
- package/app/components/SLProjectShareItem.vue +30 -17
- package/app/components/SLRadioButton.vue +41 -33
- package/app/components/SLRadioButtonGroup.vue +28 -23
- package/app/components/SLRadioGroup.vue +90 -78
- package/app/components/SLRangeInput.vue +53 -38
- package/app/components/SLRegionsMapChart.vue +5 -4
- package/app/components/SLRightSider.vue +50 -40
- package/app/components/SLSearchInput.vue +24 -19
- package/app/components/SLSelect.vue +114 -87
- package/app/components/SLSelectAllToggle.vue +52 -37
- package/app/components/SLSidebarNav.vue +253 -193
- package/app/components/SLSidebarNavGroupItem.vue +13 -10
- package/app/components/SLSidebarNavGroupItemSection.vue +240 -179
- package/app/components/SLSidebarNavLinkItem.vue +131 -109
- package/app/components/SLSidebarNavSectionItem.vue +21 -18
- package/app/components/SLSitePage.vue +35 -24
- package/app/components/SLSkyInsightSitePage.vue +13 -8
- package/app/components/SLSortByDropdown.vue +35 -22
- package/app/components/SLSpinIcon.vue +6 -3
- package/app/components/SLStayRangeInput.vue +47 -36
- package/app/components/SLTab.vue +7 -2
- package/app/components/SLTable.vue +330 -313
- package/app/components/SLTableTooltip.vue +44 -30
- package/app/components/SLTabs.vue +333 -280
- package/app/components/SLTextInput.vue +162 -134
- package/app/components/SLTextarea.vue +40 -29
- package/app/components/SLToast.vue +19 -11
- package/app/components/SLToggleButton.vue +18 -11
- package/app/components/SLTwoLayerMultiSelect.vue +180 -85
- package/app/components/SLTwoLayerSelect.vue +47 -37
- package/app/components/SLTwoLayerSingleSelect.vue +52 -33
- package/app/components/SLWarnModal.vue +9 -7
- package/app/interface/commons.ts +7 -0
- package/app/utils/index.ts +213 -146
- package/eslint.config.js +3 -0
- package/nuxt.config.ts +17 -14
- package/package.json +9 -8
- package/skills-lock.json +59 -0
- package/tsconfig.json +1 -6
- package/.eslintrc.cjs +0 -4
- package/app/assets/css/layout.styl +0 -98
- package/app/assets/css/tailwind.css +0 -3
- package/app/pages/index.vue +0 -15
- package/interface/commons.ts +0 -7
- package/tailwind.config.js +0 -271
- /package/{interface → app/interface}/IDateRange.ts +0 -0
- /package/{interface → app/interface}/IHourRange.ts +0 -0
- /package/{interface → app/interface}/IInputOption.ts +0 -0
- /package/{interface → app/interface}/ILegendItem.ts +0 -0
- /package/{interface → app/interface}/IOrganization.ts +0 -0
- /package/{interface → app/interface}/IPopupMenuButton.ts +0 -0
- /package/{interface → app/interface}/IStayRange.ts +0 -0
- /package/{interface → app/interface}/ITableField.ts +0 -0
- /package/{interface → app/interface}/IWeb.ts +0 -0
- /package/{interface → app/interface}/NavConfigType.ts +0 -0
- /package/{models → app/models}/DateRange.ts +0 -0
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
.sidebar-wrapper
|
|
6
6
|
.sidebar-logo
|
|
7
7
|
a.logo(href="javascript:;" @click="onClickedLogo")
|
|
8
|
-
img.color-big(src="
|
|
9
|
-
img.white-big(src="
|
|
10
|
-
img.color-small(src='
|
|
11
|
-
img.white-small(src='
|
|
8
|
+
img.color-big(src="~ui/app/assets/images/commons/app-logo-big.svg", @load='onLogoLoaded')
|
|
9
|
+
img.white-big(src="~ui/app/assets/images/commons/app-logo-big-white.svg", @load='onLogoLoaded')
|
|
10
|
+
img.color-small(src='~ui/app/assets/images/commons/app-logo-small.svg', @load='onLogoLoaded')
|
|
11
|
+
img.white-small(src='~ui/app/assets/images/commons/app-logo-small-white.svg', @load='onLogoLoaded')
|
|
12
12
|
nav.site-nav
|
|
13
13
|
.nav-wrapper.custom-scrollbar-y
|
|
14
14
|
template(v-for='item in config')
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
|
|
65
65
|
<script lang="ts">
|
|
66
66
|
import type { PropType } from "vue";
|
|
67
|
-
import { createPopper } from
|
|
68
|
-
import type { Instance as PopperInstance } from
|
|
69
|
-
import { NavType, type NavConfigType } from "
|
|
67
|
+
import { createPopper } from "@popperjs/core";
|
|
68
|
+
import type { Instance as PopperInstance } from "@popperjs/core";
|
|
69
|
+
import { NavType, type NavConfigType } from "~ui/app/interface/NavConfigType";
|
|
70
70
|
|
|
71
71
|
export default defineComponent({
|
|
72
72
|
name: "SLSidebarNav",
|
|
@@ -84,21 +84,30 @@ export default defineComponent({
|
|
|
84
84
|
default: () => [],
|
|
85
85
|
},
|
|
86
86
|
navIntros: {
|
|
87
|
-
type: Array as PropType<
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
type: Array as PropType<
|
|
88
|
+
{
|
|
89
|
+
code: string;
|
|
90
|
+
title: string;
|
|
91
|
+
content: string;
|
|
92
|
+
targetCode: string;
|
|
93
|
+
}[]
|
|
94
|
+
>,
|
|
93
95
|
default: () => [],
|
|
94
96
|
},
|
|
95
97
|
switchColor: {
|
|
96
98
|
type: String,
|
|
97
|
-
default:
|
|
98
|
-
validator: (v: string) => [
|
|
99
|
+
default: "",
|
|
100
|
+
validator: (v: string) => ["", "primary-600", "primary"].includes(v),
|
|
99
101
|
},
|
|
100
102
|
},
|
|
101
|
-
emits: [
|
|
103
|
+
emits: [
|
|
104
|
+
"click:logo",
|
|
105
|
+
"update:dark",
|
|
106
|
+
"update:closured",
|
|
107
|
+
"click:insight",
|
|
108
|
+
"close:intro",
|
|
109
|
+
"logo:loaded",
|
|
110
|
+
],
|
|
102
111
|
setup(props, { emit }) {
|
|
103
112
|
const { closured, navIntros } = toRefs(props);
|
|
104
113
|
|
|
@@ -107,7 +116,7 @@ export default defineComponent({
|
|
|
107
116
|
|
|
108
117
|
const closuredProxy = computed({
|
|
109
118
|
get: () => closured.value,
|
|
110
|
-
set: (newValue) => emit(
|
|
119
|
+
set: (newValue) => emit("update:closured", newValue),
|
|
111
120
|
});
|
|
112
121
|
|
|
113
122
|
let introPopperInstance: PopperInstance | null = null;
|
|
@@ -129,7 +138,7 @@ export default defineComponent({
|
|
|
129
138
|
| "click:logo"
|
|
130
139
|
| "update:dark"
|
|
131
140
|
| "update:closured"
|
|
132
|
-
| "click:insight"
|
|
141
|
+
| "click:insight",
|
|
133
142
|
) {
|
|
134
143
|
emit(eventName);
|
|
135
144
|
}
|
|
@@ -143,20 +152,22 @@ export default defineComponent({
|
|
|
143
152
|
|
|
144
153
|
if (!navLinkIntro.value) return;
|
|
145
154
|
|
|
146
|
-
const navLinkIndexEl = document.getElementById(
|
|
155
|
+
const navLinkIndexEl = document.getElementById(
|
|
156
|
+
`nav-link-${navLinkIntro.value.targetCode}`,
|
|
157
|
+
);
|
|
147
158
|
|
|
148
159
|
if (!introEl.value || !navLinkIndexEl) return;
|
|
149
160
|
|
|
150
161
|
introPopperInstance = createPopper(navLinkIndexEl, introEl.value, {
|
|
151
162
|
modifiers: [
|
|
152
163
|
{
|
|
153
|
-
name:
|
|
164
|
+
name: "offset",
|
|
154
165
|
options: {
|
|
155
166
|
offset: [-6, 39],
|
|
156
167
|
},
|
|
157
168
|
},
|
|
158
169
|
],
|
|
159
|
-
placement:
|
|
170
|
+
placement: "right-start",
|
|
160
171
|
});
|
|
161
172
|
}
|
|
162
173
|
|
|
@@ -172,12 +183,12 @@ export default defineComponent({
|
|
|
172
183
|
|
|
173
184
|
if (!introEl.value || !introPopperInstance) return;
|
|
174
185
|
|
|
175
|
-
introEl.value.setAttribute(
|
|
186
|
+
introEl.value.setAttribute("data-show", "");
|
|
176
187
|
introPopperInstance.setOptions((options) => ({
|
|
177
188
|
...options,
|
|
178
189
|
modifiers: [
|
|
179
190
|
...(options.modifiers || []),
|
|
180
|
-
{ name:
|
|
191
|
+
{ name: "eventListeners", enabled: true },
|
|
181
192
|
],
|
|
182
193
|
}));
|
|
183
194
|
introPopperInstance.update();
|
|
@@ -189,12 +200,12 @@ export default defineComponent({
|
|
|
189
200
|
|
|
190
201
|
if (!introEl.value || !introPopperInstance) return;
|
|
191
202
|
|
|
192
|
-
introEl.value.removeAttribute(
|
|
203
|
+
introEl.value.removeAttribute("data-show");
|
|
193
204
|
introPopperInstance.setOptions((options) => ({
|
|
194
205
|
...options,
|
|
195
206
|
modifiers: [
|
|
196
207
|
...(options.modifiers || []),
|
|
197
|
-
{ name:
|
|
208
|
+
{ name: "eventListeners", enabled: false },
|
|
198
209
|
],
|
|
199
210
|
}));
|
|
200
211
|
}
|
|
@@ -211,11 +222,11 @@ export default defineComponent({
|
|
|
211
222
|
|
|
212
223
|
if (!navLinkIntro.value) return;
|
|
213
224
|
|
|
214
|
-
emit(
|
|
225
|
+
emit("close:intro", navLinkIntro.value.code);
|
|
215
226
|
}
|
|
216
227
|
|
|
217
228
|
function onLogoLoaded() {
|
|
218
|
-
emit(
|
|
229
|
+
emit("logo:loaded");
|
|
219
230
|
}
|
|
220
231
|
|
|
221
232
|
return {
|
|
@@ -235,193 +246,242 @@ export default defineComponent({
|
|
|
235
246
|
});
|
|
236
247
|
</script>
|
|
237
248
|
|
|
238
|
-
<style
|
|
239
|
-
.
|
|
240
|
-
@apply relative h-full
|
|
249
|
+
<style>
|
|
250
|
+
@reference '~ui/app/assets/css/main.css';
|
|
241
251
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
252
|
+
.sidebar {
|
|
253
|
+
@apply relative h-full;
|
|
254
|
+
}
|
|
245
255
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
img.color-small
|
|
250
|
-
@apply s('lg:hidden')
|
|
256
|
+
.sidebar.dark .sidebar-wrapper {
|
|
257
|
+
@apply bg-primary-800;
|
|
258
|
+
}
|
|
251
259
|
|
|
252
|
-
|
|
253
|
-
|
|
260
|
+
.sidebar.dark.closure .sidebar-logo .logo img.color-small {
|
|
261
|
+
@apply lg:hidden;
|
|
262
|
+
}
|
|
254
263
|
|
|
255
|
-
|
|
256
|
-
|
|
264
|
+
.sidebar.dark.closure .sidebar-logo .logo img.white-big {
|
|
265
|
+
@apply lg:hidden;
|
|
266
|
+
}
|
|
257
267
|
|
|
258
|
-
|
|
259
|
-
|
|
268
|
+
.sidebar.dark.closure .sidebar-logo .logo img.white-small {
|
|
269
|
+
@apply lg:block;
|
|
270
|
+
}
|
|
260
271
|
|
|
261
|
-
|
|
262
|
-
|
|
272
|
+
.sidebar.dark.closure .sidebar-toggle {
|
|
273
|
+
@apply bg-primary-900;
|
|
274
|
+
}
|
|
263
275
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
@apply hidden
|
|
268
|
-
|
|
269
|
-
img.white-big
|
|
270
|
-
@apply block
|
|
271
|
-
|
|
272
|
-
nav
|
|
273
|
-
.nav-wrapper.custom-scrollbar-y
|
|
274
|
-
/* Handle */
|
|
275
|
-
&::-webkit-scrollbar-thumb
|
|
276
|
-
@apply bg-primary-600
|
|
277
|
-
|
|
278
|
-
/* Handle on hover */
|
|
279
|
-
&::-webkit-scrollbar-thumb:hover
|
|
280
|
-
@apply bg-primary-600
|
|
281
|
-
|
|
282
|
-
.sidebar-mode-setting
|
|
283
|
-
@apply text-white
|
|
284
|
-
|
|
285
|
-
.ios-switch
|
|
286
|
-
label
|
|
287
|
-
@apply bg-nav-color-switch-bg border-primary-600
|
|
288
|
-
|
|
289
|
-
&:before
|
|
290
|
-
@apply border-primary-600 bg-primary-300
|
|
291
|
-
|
|
292
|
-
.sidebar-toggle
|
|
293
|
-
@apply bg-primary-900 text-white
|
|
294
|
-
|
|
295
|
-
&:hover
|
|
296
|
-
@apply bg-primary-600
|
|
297
|
-
|
|
298
|
-
&.closure
|
|
299
|
-
.sidebar-modal
|
|
300
|
-
@apply hidden
|
|
301
|
-
|
|
302
|
-
.sidebar-wrapper
|
|
303
|
-
@apply s('-ml-[188px]')
|
|
304
|
-
@apply s('lg:ml-0') s('lg:w-[84px]')
|
|
305
|
-
|
|
306
|
-
.sidebar-logo
|
|
307
|
-
@apply s('lg:py-3') s('lg:px-0')
|
|
308
|
-
.logo
|
|
309
|
-
img.color-big
|
|
310
|
-
@apply s('lg:hidden')
|
|
311
|
-
|
|
312
|
-
img.color-small
|
|
313
|
-
@apply s('lg:block')
|
|
314
|
-
|
|
315
|
-
.sidebar-toggle
|
|
316
|
-
@apply s('-mr-5') bg-primary-300 rounded-l-none rounded-r-xl text-white
|
|
317
|
-
|
|
318
|
-
&:hover
|
|
319
|
-
@apply bg-primary-400 text-white
|
|
320
|
-
|
|
321
|
-
.icon-chevron-left
|
|
322
|
-
@apply hidden
|
|
323
|
-
|
|
324
|
-
.icon-chevron-right
|
|
325
|
-
@apply inline-block
|
|
326
|
-
|
|
327
|
-
nav.site-nav
|
|
328
|
-
.nav-wrapper
|
|
329
|
-
@apply s('lg:items-center')
|
|
330
|
-
|
|
331
|
-
.sidebar-mode-setting
|
|
332
|
-
@apply p-0 justify-center space-x-0
|
|
333
|
-
|
|
334
|
-
&-title
|
|
335
|
-
@apply hidden
|
|
336
|
-
|
|
337
|
-
.ios-switch
|
|
338
|
-
@apply flex-grow-0 flex-shrink-0
|
|
339
|
-
|
|
340
|
-
&.introing
|
|
341
|
-
.sidebar-intro-modal
|
|
342
|
-
@apply block
|
|
343
|
-
|
|
344
|
-
.sidebar-wrapper
|
|
345
|
-
@apply pointer-events-none
|
|
346
|
-
|
|
347
|
-
&-modal
|
|
348
|
-
@apply fixed top-0 left-0 w-full h-full bg-white opacity-0
|
|
349
|
-
@apply s('lg:hidden')
|
|
350
|
-
|
|
351
|
-
&-intro-modal
|
|
352
|
-
@apply fixed top-0 left-0 w-full h-full s('bg-mask/80') hidden
|
|
353
|
-
|
|
354
|
-
&-wrapper
|
|
355
|
-
@apply relative flex flex-col s('w-[188px]') h-full bg-white rounded-r-lg shadow transition-all
|
|
356
|
-
|
|
357
|
-
&-logo
|
|
358
|
-
@apply flex-grow-0 flex-shrink-0 relative flex justify-center py-4 pr-11 pl-6 transition-all
|
|
359
|
-
|
|
360
|
-
.logo
|
|
361
|
-
@apply block
|
|
362
|
-
|
|
363
|
-
img.white-big, img.white-small, img.color-small
|
|
364
|
-
@apply hidden
|
|
365
|
-
|
|
366
|
-
nav.site-nav
|
|
367
|
-
@apply flex-grow px-1 overflow-hidden
|
|
368
|
-
|
|
369
|
-
.nav-wrapper
|
|
370
|
-
@apply flex flex-col h-full px-3
|
|
371
|
-
|
|
372
|
-
.sidebar-nav-divide-item
|
|
373
|
-
@apply w-full h-px my-2 bg-primary-200
|
|
276
|
+
.sidebar.dark.closure .sidebar-toggle:hover {
|
|
277
|
+
@apply bg-primary-600;
|
|
278
|
+
}
|
|
374
279
|
|
|
375
|
-
|
|
376
|
-
|
|
280
|
+
.sidebar.dark .sidebar-logo .logo img.color-big {
|
|
281
|
+
@apply hidden;
|
|
282
|
+
}
|
|
377
283
|
|
|
378
|
-
|
|
379
|
-
|
|
284
|
+
.sidebar.dark .sidebar-logo .logo img.white-big {
|
|
285
|
+
@apply block;
|
|
286
|
+
}
|
|
380
287
|
|
|
381
|
-
|
|
382
|
-
|
|
288
|
+
.sidebar.dark nav .nav-wrapper.custom-scrollbar-y::-webkit-scrollbar-thumb {
|
|
289
|
+
@apply bg-primary-600;
|
|
290
|
+
}
|
|
383
291
|
|
|
384
|
-
|
|
385
|
-
|
|
292
|
+
.sidebar.dark
|
|
293
|
+
nav
|
|
294
|
+
.nav-wrapper.custom-scrollbar-y::-webkit-scrollbar-thumb:hover {
|
|
295
|
+
@apply bg-primary-600;
|
|
296
|
+
}
|
|
386
297
|
|
|
387
|
-
|
|
388
|
-
|
|
298
|
+
.sidebar.dark .sidebar-mode-setting {
|
|
299
|
+
@apply text-white;
|
|
300
|
+
}
|
|
389
301
|
|
|
390
|
-
|
|
391
|
-
|
|
302
|
+
.sidebar.dark .sidebar-mode-setting .ios-switch label {
|
|
303
|
+
@apply bg-nav-color-switch-bg border-primary-600;
|
|
304
|
+
}
|
|
392
305
|
|
|
393
|
-
|
|
394
|
-
|
|
306
|
+
.sidebar.dark .sidebar-mode-setting .ios-switch label::before {
|
|
307
|
+
@apply border-primary-600 bg-primary-300;
|
|
308
|
+
}
|
|
395
309
|
|
|
396
|
-
|
|
397
|
-
|
|
310
|
+
.sidebar.dark .sidebar-toggle {
|
|
311
|
+
@apply bg-primary-900 text-white;
|
|
312
|
+
}
|
|
398
313
|
|
|
399
|
-
|
|
400
|
-
|
|
314
|
+
.sidebar.dark .sidebar-toggle:hover {
|
|
315
|
+
@apply bg-primary-600;
|
|
316
|
+
}
|
|
401
317
|
|
|
402
|
-
|
|
403
|
-
|
|
318
|
+
.sidebar.closure .sidebar-modal {
|
|
319
|
+
@apply hidden;
|
|
320
|
+
}
|
|
404
321
|
|
|
405
|
-
|
|
406
|
-
|
|
322
|
+
.sidebar.closure .sidebar-wrapper {
|
|
323
|
+
@apply -ml-[188px] lg:ml-0 lg:w-[84px];
|
|
324
|
+
}
|
|
407
325
|
|
|
408
|
-
|
|
409
|
-
|
|
326
|
+
.sidebar.closure .sidebar-logo {
|
|
327
|
+
@apply lg:py-3 lg:px-0;
|
|
328
|
+
}
|
|
410
329
|
|
|
411
|
-
|
|
412
|
-
|
|
330
|
+
.sidebar.closure .sidebar-logo .logo img.color-big {
|
|
331
|
+
@apply lg:hidden;
|
|
332
|
+
}
|
|
413
333
|
|
|
414
|
-
|
|
415
|
-
|
|
334
|
+
.sidebar.closure .sidebar-logo .logo img.color-small {
|
|
335
|
+
@apply lg:block;
|
|
336
|
+
}
|
|
416
337
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
338
|
+
.sidebar.closure .sidebar-toggle {
|
|
339
|
+
@apply -mr-5 bg-primary-300 rounded-l-none rounded-r-xl text-white;
|
|
340
|
+
}
|
|
420
341
|
|
|
421
|
-
|
|
422
|
-
|
|
342
|
+
.sidebar.closure .sidebar-toggle:hover {
|
|
343
|
+
@apply bg-primary-400 text-white;
|
|
344
|
+
}
|
|
423
345
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
346
|
+
.sidebar.closure .sidebar-toggle .icon-chevron-left {
|
|
347
|
+
@apply hidden;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.sidebar.closure .sidebar-toggle .icon-chevron-right {
|
|
351
|
+
@apply inline-block;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.sidebar.closure nav.site-nav .nav-wrapper {
|
|
355
|
+
@apply lg:items-center;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.sidebar.closure .sidebar-mode-setting {
|
|
359
|
+
@apply p-0 justify-center space-x-0;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.sidebar.closure .sidebar-mode-setting-title {
|
|
363
|
+
@apply hidden;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.sidebar.closure .sidebar-mode-setting .ios-switch {
|
|
367
|
+
@apply grow-0 shrink-0;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
.sidebar.introing .sidebar-intro-modal {
|
|
371
|
+
@apply block;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
.sidebar.introing .sidebar-wrapper {
|
|
375
|
+
@apply pointer-events-none;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
.sidebar-modal {
|
|
379
|
+
@apply fixed top-0 left-0 w-full h-full bg-white opacity-0 lg:hidden;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
.sidebar-intro-modal {
|
|
383
|
+
@apply fixed top-0 left-0 w-full h-full bg-mask/80 hidden;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
.sidebar-wrapper {
|
|
387
|
+
@apply relative flex flex-col w-[188px] h-full bg-white rounded-r-lg shadow-default transition-all;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.sidebar-logo {
|
|
391
|
+
@apply grow-0 shrink-0 relative flex justify-center py-4 pr-11 pl-6 transition-all;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.sidebar-logo .logo {
|
|
395
|
+
@apply block;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.sidebar-logo .logo img.white-big,
|
|
399
|
+
.sidebar-logo .logo img.white-small,
|
|
400
|
+
.sidebar-logo .logo img.color-small {
|
|
401
|
+
@apply hidden;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
.sidebar nav.site-nav {
|
|
405
|
+
@apply grow px-1 overflow-hidden;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
.sidebar nav.site-nav .nav-wrapper {
|
|
409
|
+
@apply flex flex-col h-full px-3;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
.sidebar nav.site-nav .nav-wrapper .sidebar-nav-divide-item {
|
|
413
|
+
@apply w-full h-px my-2 bg-primary-200;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
.sidebar .sidebar-mode-setting {
|
|
417
|
+
@apply grow-0 shrink-0 flex items-center justify-start my-4 pl-4 space-x-2 text-xs text-primary;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.sidebar .sidebar-mode-setting-title {
|
|
421
|
+
@apply grow-0 shrink-0;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.sidebar .sidebar-mode-setting .ios-switch {
|
|
425
|
+
@apply grow-0 shrink-0;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.sidebar .sidebar-mode-setting .ios-switch label {
|
|
429
|
+
@apply border-primary-100 bg-primary-25;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.sidebar .sidebar-mode-setting .ios-switch label::before {
|
|
433
|
+
@apply border-primary-100;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
.sidebar-toggle {
|
|
437
|
+
@apply absolute top-0 right-0 flex justify-center items-center w-5 h-10 mt-2.5 bg-primary-50 rounded-l-xl text-sm text-primary-500 leading-none transition-all;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
.sidebar-toggle:hover {
|
|
441
|
+
@apply bg-primary-300 text-white;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
.sidebar-toggle .icon-chevron-right {
|
|
445
|
+
@apply hidden;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
.sidebar-nav-intro {
|
|
449
|
+
@apply w-[288px] p-4 bg-white rounded-lg hidden;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
.sidebar-nav-intro[data-show] {
|
|
453
|
+
@apply block;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
.sidebar-nav-intro[data-popper-placement^="right"] > .sidebar-nav-intro-arrow {
|
|
457
|
+
@apply -left-3.75 top-4;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
.sidebar-nav-intro-header {
|
|
461
|
+
@apply mb-2 text-base font-bold text-primary;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
.sidebar-nav-intro-body {
|
|
465
|
+
@apply mb-4 text-base text-pgray-2 whitespace-pre-line;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
.sidebar-nav-intro-footer {
|
|
469
|
+
@apply text-right;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
.sidebar-nav-intro-arrow,
|
|
473
|
+
.sidebar-nav-intro-arrow::before {
|
|
474
|
+
@apply absolute w-[17px] h-[20px] bg-contain;
|
|
475
|
+
background: url("~ui/app/assets/images/commons/nav-intro-arrow.svg") top left
|
|
476
|
+
no-repeat;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
.sidebar-nav-intro-arrow {
|
|
480
|
+
@apply invisible;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
.sidebar-nav-intro-arrow::before {
|
|
484
|
+
content: "";
|
|
485
|
+
@apply visible;
|
|
486
|
+
}
|
|
487
|
+
</style>
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
</template>
|
|
12
12
|
|
|
13
13
|
<script lang="ts">
|
|
14
|
-
import type { NavItemGroup } from
|
|
14
|
+
import type { NavItemGroup } from "~ui/app/interface/NavConfigType";
|
|
15
15
|
|
|
16
16
|
export default defineComponent({
|
|
17
|
-
name:
|
|
17
|
+
name: "SLSidebarNavGroupItem",
|
|
18
18
|
props: {
|
|
19
19
|
navCollapsed: {
|
|
20
20
|
type: Boolean,
|
|
@@ -29,18 +29,21 @@ export default defineComponent({
|
|
|
29
29
|
required: true,
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
|
-
emits: [
|
|
32
|
+
emits: ["click:item"],
|
|
33
33
|
setup() {
|
|
34
34
|
return {};
|
|
35
35
|
},
|
|
36
36
|
});
|
|
37
37
|
</script>
|
|
38
38
|
|
|
39
|
-
<style
|
|
40
|
-
.
|
|
41
|
-
.sidebar-nav-group-item
|
|
42
|
-
@apply bg-primary-900
|
|
39
|
+
<style>
|
|
40
|
+
@reference '~ui/app/assets/css/main.css';
|
|
43
41
|
|
|
44
|
-
.sidebar-nav-group-item
|
|
45
|
-
@apply
|
|
46
|
-
|
|
42
|
+
.sidebar.dark .sidebar-nav-group-item {
|
|
43
|
+
@apply bg-primary-900;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.sidebar-nav-group-item {
|
|
47
|
+
@apply w-full mt-1 p-2 space-y-1 bg-primary-50 rounded-lg;
|
|
48
|
+
}
|
|
49
|
+
</style>
|