smart-admin-web 10.14.0 → 10.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/api/index.d.ts +41 -2
- package/dist/api/index.js +36 -15
- package/dist/api/index.js.map +1 -1
- package/dist/api/schema.d.ts +418 -6
- package/dist/assets/icons/ph-subset.json.js +7 -7
- package/dist/assets/smart-logo.svg.js +5 -0
- package/dist/assets/smart-logo.svg.js.map +1 -0
- package/dist/components/AppIcon.vue.js +9 -9
- package/dist/components/AppIcon.vue.js.map +1 -1
- package/dist/components/AppWatermark.vue.d.ts +14 -0
- package/dist/components/AppWatermark.vue.js +38 -0
- package/dist/components/AppWatermark.vue.js.map +1 -0
- package/dist/components/AppWatermark2.vue.js +5 -0
- package/dist/components/AppWatermark2.vue.js.map +1 -0
- package/dist/components/Chart/PieChart.vue.d.ts +1 -1
- package/dist/components/Chart/echarts.js +15 -20
- package/dist/components/Chart/echarts.js.map +1 -1
- package/dist/components/CronEditor/index.vue.js +1 -1
- package/dist/components/CronEditor/index2.vue.js +2 -1
- package/dist/components/CronEditor/index2.vue.js.map +1 -1
- package/dist/components/DetailPage/index.vue.js +2 -2
- package/dist/components/DetailPage/index2.vue.js.map +1 -1
- package/dist/components/DictTag/index.vue.js.map +1 -1
- package/dist/components/ErrorBoundary/index.vue.js +2 -2
- package/dist/components/ErrorBoundary/index2.vue.js +1 -1
- package/dist/components/ErrorBoundary/index2.vue.js.map +1 -1
- package/dist/components/FormContainer/index.vue.js +91 -56
- package/dist/components/FormContainer/index.vue.js.map +1 -1
- package/dist/components/ImportWizard/index.vue.js +1 -1
- package/dist/components/ImportWizard/index2.vue.js +44 -41
- package/dist/components/ImportWizard/index2.vue.js.map +1 -1
- package/dist/components/MenuSearch.vue.js +2 -2
- package/dist/components/MenuSearch2.vue.js +19 -18
- package/dist/components/MenuSearch2.vue.js.map +1 -1
- package/dist/components/PasswordStrength/index.vue.js +2 -2
- package/dist/components/PasswordStrength/index2.vue.js +20 -18
- package/dist/components/PasswordStrength/index2.vue.js.map +1 -1
- package/dist/components/SmartLogo.vue.d.ts +3 -0
- package/dist/components/SmartLogo.vue.js +1 -1
- package/dist/components/SmartLogo2.vue.js +22 -64
- package/dist/components/SmartLogo2.vue.js.map +1 -1
- package/dist/{views/system/config/components/GroupExtraConfig.vue.d.ts → components/TableTotal/index.vue.d.ts} +1 -4
- package/dist/components/{SelectTable → TableTotal}/index.vue.js +1 -1
- package/dist/components/TableTotal/index2.vue.js +16 -0
- package/dist/components/TableTotal/index2.vue.js.map +1 -0
- package/dist/components/TableZoomButton/index.vue.js.map +1 -1
- package/dist/components/UserPicker/index.vue.js +2 -2
- package/dist/components/UserPicker/index2.vue.js +176 -117
- package/dist/components/UserPicker/index2.vue.js.map +1 -1
- package/dist/composables/useBatchDelete.js.map +1 -1
- package/dist/composables/useLayoutMenu.js +17 -16
- package/dist/composables/useLayoutMenu.js.map +1 -1
- package/dist/composables/useLoginHero.d.ts +2 -0
- package/dist/composables/useLoginHero.js +22 -0
- package/dist/composables/useLoginHero.js.map +1 -0
- package/dist/composables/useModule.js +39 -29
- package/dist/composables/useModule.js.map +1 -1
- package/dist/composables/usePageTitle.js +16 -14
- package/dist/composables/usePageTitle.js.map +1 -1
- package/dist/composables/useShellBreakpoint.d.ts +19 -0
- package/dist/composables/useShellBreakpoint.js +37 -0
- package/dist/composables/useShellBreakpoint.js.map +1 -0
- package/dist/composables/useSite.d.ts +20 -0
- package/dist/composables/useSite.js +18 -13
- package/dist/composables/useSite.js.map +1 -1
- package/dist/composables/useTabTitle.js.map +1 -1
- package/dist/composables/useTableTitle.d.ts +6 -0
- package/dist/composables/useTableTitle.js +11 -0
- package/dist/composables/useTableTitle.js.map +1 -0
- package/dist/composables/useTableZoom.d.ts +5 -0
- package/dist/composables/useTableZoom.js.map +1 -1
- package/dist/composables/useTheme.d.ts +2 -2
- package/dist/composables/useTheme.js +23 -20
- package/dist/composables/useTheme.js.map +1 -1
- package/dist/createSmartAdmin.d.ts +12 -2
- package/dist/createSmartAdmin.js +72 -60
- package/dist/createSmartAdmin.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +223 -208
- package/dist/index.js.map +1 -1
- package/dist/layouts/AccentPicker.vue.js +8 -0
- package/dist/layouts/AccentPicker.vue.js.map +1 -0
- package/dist/layouts/AccentPicker2.vue.js +131 -0
- package/dist/layouts/AccentPicker2.vue.js.map +1 -0
- package/dist/layouts/AppHeader.vue.d.ts +8 -1
- package/dist/layouts/AppHeader.vue.js +2 -2
- package/dist/layouts/AppHeader2.vue.js +317 -235
- package/dist/layouts/AppHeader2.vue.js.map +1 -1
- package/dist/layouts/NoticeBell.vue.js +2 -2
- package/dist/layouts/NoticeBell2.vue.js +1 -1
- package/dist/layouts/NoticeBell2.vue.js.map +1 -1
- package/dist/layouts/PersonalLayout.vue.js +2 -2
- package/dist/layouts/PersonalLayout2.vue.js +69 -47
- package/dist/layouts/PersonalLayout2.vue.js.map +1 -1
- package/dist/layouts/SettingsDrawer.vue.js +3 -3
- package/dist/layouts/SettingsDrawer2.vue.js +261 -325
- package/dist/layouts/SettingsDrawer2.vue.js.map +1 -1
- package/dist/layouts/TabsBar.vue.js +2 -2
- package/dist/layouts/TabsBar2.vue.js +97 -69
- package/dist/layouts/TabsBar2.vue.js.map +1 -1
- package/dist/layouts/components/SideNav.vue.d.ts +3 -0
- package/dist/layouts/components/SideNav.vue.js +1 -1
- package/dist/layouts/components/SideNav2.vue.js +54 -26
- package/dist/layouts/components/SideNav2.vue.js.map +1 -1
- package/dist/layouts/default.vue.js +1 -1
- package/dist/layouts/default2.vue.js +170 -140
- package/dist/layouts/default2.vue.js.map +1 -1
- package/dist/lib/favicon.d.ts +1 -0
- package/dist/lib/favicon.js +12 -0
- package/dist/lib/favicon.js.map +1 -0
- package/dist/lib/loginHero.d.ts +16 -0
- package/dist/lib/loginHero.js +33 -0
- package/dist/lib/loginHero.js.map +1 -0
- package/dist/lib/logoCrop.d.ts +25 -0
- package/dist/lib/logoCrop.js +22 -0
- package/dist/lib/logoCrop.js.map +1 -0
- package/dist/lib/runtime.d.ts +2 -0
- package/dist/lib/runtime.js +1 -1
- package/dist/lib/runtime.js.map +1 -1
- package/dist/lib/securityRules.d.ts +26 -0
- package/dist/lib/securityRules.js +86 -0
- package/dist/lib/securityRules.js.map +1 -0
- package/dist/lib/watermark.d.ts +110 -0
- package/dist/lib/watermark.js +151 -0
- package/dist/lib/watermark.js.map +1 -0
- package/dist/locales/en-US.d.ts +462 -42
- package/dist/locales/en-US.js +491 -78
- package/dist/locales/en-US.js.map +1 -1
- package/dist/locales/kernelMenuTitles.d.ts +1 -0
- package/dist/locales/kernelMenuTitles.js +128 -0
- package/dist/locales/kernelMenuTitles.js.map +1 -0
- package/dist/locales/menuTitle.d.ts +3 -0
- package/dist/locales/menuTitle.js +14 -12
- package/dist/locales/menuTitle.js.map +1 -1
- package/dist/locales/zh-CN.d.ts +462 -42
- package/dist/locales/zh-CN.js +490 -81
- package/dist/locales/zh-CN.js.map +1 -1
- package/dist/router/index.js +41 -32
- package/dist/router/index.js.map +1 -1
- package/dist/router/namedPage.d.ts +4 -0
- package/dist/router/namedPage.js +7 -7
- package/dist/router/namedPage.js.map +1 -1
- package/dist/router/viewRegistry.js +12 -12
- package/dist/router/viewRegistry.js.map +1 -1
- package/dist/stores/app.d.ts +0 -12
- package/dist/stores/app.js +11 -12
- package/dist/stores/app.js.map +1 -1
- package/dist/stores/tabs.js.map +1 -1
- package/dist/stores/user.d.ts +10 -0
- package/dist/stores/user.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/theme/accentTokens.d.ts +27 -0
- package/dist/theme/accentTokens.js +54 -0
- package/dist/theme/accentTokens.js.map +1 -0
- package/dist/theme/accents.d.ts +21 -1
- package/dist/theme/accents.js +11 -2
- package/dist/theme/accents.js.map +1 -1
- package/dist/theme/mix.d.ts +58 -7
- package/dist/theme/mix.js +115 -30
- package/dist/theme/mix.js.map +1 -1
- package/dist/theme/naive-theme.d.ts +5 -2
- package/dist/theme/naive-theme.js +405 -75
- package/dist/theme/naive-theme.js.map +1 -1
- package/dist/utils/jwt.d.ts +8 -0
- package/dist/utils/jwt.js +14 -0
- package/dist/utils/jwt.js.map +1 -0
- package/dist/utils/menuIcon.d.ts +2 -0
- package/dist/utils/menuIcon.js +8 -0
- package/dist/utils/menuIcon.js.map +1 -0
- package/dist/utils/oauthBrand.d.ts +34 -9
- package/dist/utils/oauthBrand.js +70 -74
- package/dist/utils/oauthBrand.js.map +1 -1
- package/dist/utils/tableFilter.d.ts +88 -0
- package/dist/utils/tableFilter.js +116 -0
- package/dist/utils/tableFilter.js.map +1 -0
- package/dist/utils/tableToolbar.d.ts +18 -0
- package/dist/utils/tableToolbar.js +11 -0
- package/dist/utils/tableToolbar.js.map +1 -0
- package/dist/utils/treeFilter.d.ts +20 -0
- package/dist/utils/treeFilter.js +24 -0
- package/dist/utils/treeFilter.js.map +1 -0
- package/dist/views/dashboard/ShortcutPicker.vue.js +1 -1
- package/dist/views/dashboard/ShortcutPicker2.vue.js +73 -48
- package/dist/views/dashboard/ShortcutPicker2.vue.js.map +1 -1
- package/dist/views/dashboard/biz.vue.js +1 -1
- package/dist/views/dashboard/biz2.vue.js +310 -257
- package/dist/views/dashboard/biz2.vue.js.map +1 -1
- package/dist/views/dashboard/workbench.vue.js +2 -2
- package/dist/views/dashboard/workbench2.vue.js +141 -155
- package/dist/views/dashboard/workbench2.vue.js.map +1 -1
- package/dist/views/embed/iframe.vue.js +2 -2
- package/dist/views/embed/iframe2.vue.js +22 -15
- package/dist/views/embed/iframe2.vue.js.map +1 -1
- package/dist/views/error/404.vue.js +2 -2
- package/dist/views/error/4042.vue.js +33 -24
- package/dist/views/error/4042.vue.js.map +1 -1
- package/dist/views/error/BootError.vue.js +1 -1
- package/dist/views/error/BootError2.vue.js +59 -48
- package/dist/views/error/BootError2.vue.js.map +1 -1
- package/dist/views/error/MissingRoute.vue.js +2 -2
- package/dist/views/error/MissingRoute2.vue.js +34 -15
- package/dist/views/error/MissingRoute2.vue.js.map +1 -1
- package/dist/views/login/LoginForm.vue.d.ts +7 -1
- package/dist/views/login/LoginForm.vue.js +2 -2
- package/dist/views/login/LoginForm2.vue.js +580 -488
- package/dist/views/login/LoginForm2.vue.js.map +1 -1
- package/dist/views/login/components/LoginDesk.vue.d.ts +36 -0
- package/dist/views/login/components/LoginDesk.vue.js +9 -0
- package/dist/views/login/components/LoginDesk.vue.js.map +1 -0
- package/dist/views/login/components/LoginDesk2.vue.js +100 -0
- package/dist/views/login/components/LoginDesk2.vue.js.map +1 -0
- package/dist/views/login/components/LoginHeroPanel.vue.d.ts +18 -0
- package/dist/views/login/components/LoginHeroPanel.vue.js +8 -0
- package/dist/views/login/components/LoginHeroPanel.vue.js.map +1 -0
- package/dist/views/login/components/LoginHeroPanel2.vue.js +61 -0
- package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -0
- package/dist/views/login/index.vue.js +1 -1
- package/dist/views/login/index2.vue.js +141 -71
- package/dist/views/login/index2.vue.js.map +1 -1
- package/dist/views/login/layout.d.ts +11 -0
- package/dist/views/login/layout.js +27 -0
- package/dist/views/login/layout.js.map +1 -0
- package/dist/views/mfa/index.vue.js +2 -2
- package/dist/views/mfa/index2.vue.js +367 -321
- package/dist/views/mfa/index2.vue.js.map +1 -1
- package/dist/views/module/index.vue.js +2 -2
- package/dist/views/module/index2.vue.js +132 -99
- package/dist/views/module/index2.vue.js.map +1 -1
- package/dist/views/oauth/callback.vue.js +2 -2
- package/dist/views/oauth/callback2.vue.js +65 -51
- package/dist/views/oauth/callback2.vue.js.map +1 -1
- package/dist/views/personal/bindings.vue.js +2 -2
- package/dist/views/personal/bindings2.vue.js +98 -94
- package/dist/views/personal/bindings2.vue.js.map +1 -1
- package/dist/views/personal/notice2.vue.js +103 -76
- package/dist/views/personal/notice2.vue.js.map +1 -1
- package/dist/views/personal/password2.vue.js +47 -40
- package/dist/views/personal/password2.vue.js.map +1 -1
- package/dist/views/personal/profile.vue.js +3 -3
- package/dist/views/personal/profile2.vue.js +24 -18
- package/dist/views/personal/profile2.vue.js.map +1 -1
- package/dist/views/personal/security.vue.js +2 -2
- package/dist/views/personal/security2.vue.js +65 -53
- package/dist/views/personal/security2.vue.js.map +1 -1
- package/dist/views/personal/sessions.vue.js +2 -2
- package/dist/views/personal/sessions2.vue.js +67 -62
- package/dist/views/personal/sessions2.vue.js.map +1 -1
- package/dist/views/system/ai-model/components/ProviderCard.vue.js +2 -2
- package/dist/views/system/ai-model/components/ProviderCard2.vue.js +142 -130
- package/dist/views/system/ai-model/components/ProviderCard2.vue.js.map +1 -1
- package/dist/views/system/ai-model/components/ProviderForm.vue.js +2 -2
- package/dist/views/system/ai-model/components/ProviderForm2.vue.js +71 -70
- package/dist/views/system/ai-model/components/ProviderForm2.vue.js.map +1 -1
- package/dist/views/system/ai-model/index.vue.js +2 -2
- package/dist/views/system/ai-model/index2.vue.js +99 -99
- package/dist/views/system/ai-model/index2.vue.js.map +1 -1
- package/dist/views/system/ai-model/presets.d.ts +1 -1
- package/dist/views/system/ai-model/presets.js +18 -18
- package/dist/views/system/ai-model/presets.js.map +1 -1
- package/dist/views/system/ai-usage/index.vue.js +2 -2
- package/dist/views/system/ai-usage/index2.vue.js +356 -258
- package/dist/views/system/ai-usage/index2.vue.js.map +1 -1
- package/dist/views/system/api-docs/index.vue.js +5 -2
- package/dist/views/system/api-docs/index.vue.js.map +1 -1
- package/dist/views/system/api-docs/index2.vue.js +92 -42
- package/dist/views/system/api-docs/index2.vue.js.map +1 -1
- package/dist/views/system/cache/index.vue.js +2 -2
- package/dist/views/system/cache/index2.vue.js +74 -80
- package/dist/views/system/cache/index2.vue.js.map +1 -1
- package/dist/views/system/config/components/AdminMock.vue.js +8 -0
- package/dist/views/system/config/components/AdminMock.vue.js.map +1 -0
- package/dist/views/system/config/components/AdminMock2.vue.js +93 -0
- package/dist/views/system/config/components/AdminMock2.vue.js.map +1 -0
- package/dist/views/system/config/components/AdvancedSection.vue.js +8 -0
- package/dist/views/system/config/components/AdvancedSection.vue.js.map +1 -0
- package/dist/views/system/config/components/AdvancedSection2.vue.js +163 -0
- package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/BrandSection.vue.d.ts +7 -0
- package/dist/views/system/config/components/BrandSection.vue.js +8 -0
- package/dist/views/system/config/components/BrandSection.vue.js.map +1 -0
- package/dist/views/system/config/components/BrandSection2.vue.js +266 -0
- package/dist/views/system/config/components/BrandSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgGroup.vue.d.ts +18 -0
- package/dist/views/system/config/components/CfgGroup.vue.js +8 -0
- package/dist/views/system/config/components/CfgGroup.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgGroup2.vue.js +22 -0
- package/dist/views/system/config/components/CfgGroup2.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgRow.vue.d.ts +26 -0
- package/dist/views/system/config/components/CfgRow.vue.js +9 -0
- package/dist/views/system/config/components/CfgRow.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgRow2.vue.js +54 -0
- package/dist/views/system/config/components/CfgRow2.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgSegment.vue.d.ts +28 -0
- package/dist/views/system/config/components/CfgSegment.vue.js +8 -0
- package/dist/views/system/config/components/CfgSegment.vue.js.map +1 -0
- package/dist/views/system/config/components/CfgSegment2.vue.js +45 -0
- package/dist/views/system/config/components/CfgSegment2.vue.js.map +1 -0
- package/dist/views/system/config/components/ConfigFormModal.vue.js +4 -1
- package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -1
- package/dist/views/system/config/components/ConfigFormModal2.vue.js +72 -60
- package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -1
- package/dist/views/system/config/components/JobSection.vue.js +8 -0
- package/dist/views/system/config/components/JobSection.vue.js.map +1 -0
- package/dist/views/system/config/components/JobSection2.vue.js +140 -0
- package/dist/views/system/config/components/JobSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/LoginMock.vue.d.ts +8 -0
- package/dist/views/system/config/components/LoginMock.vue.js +8 -0
- package/dist/views/system/config/components/LoginMock.vue.js.map +1 -0
- package/dist/views/system/config/components/LoginMock2.vue.js +132 -0
- package/dist/views/system/config/components/LoginMock2.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoCropper.vue.d.ts +10 -0
- package/dist/views/system/config/components/LogoCropper.vue.js +8 -0
- package/dist/views/system/config/components/LogoCropper.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoCropper2.vue.js +122 -0
- package/dist/views/system/config/components/LogoCropper2.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoEditor.vue.js +8 -0
- package/dist/views/system/config/components/LogoEditor.vue.js.map +1 -0
- package/dist/views/system/config/components/LogoEditor2.vue.js +161 -0
- package/dist/views/system/config/components/LogoEditor2.vue.js.map +1 -0
- package/dist/views/system/config/components/ProviderSheet.vue.d.ts +17 -0
- package/dist/views/system/config/components/ProviderSheet.vue.js +8 -0
- package/dist/views/system/config/components/ProviderSheet.vue.js.map +1 -0
- package/dist/views/system/config/components/ProviderSheet2.vue.js +343 -0
- package/dist/views/system/config/components/ProviderSheet2.vue.js.map +1 -0
- package/dist/{layouts/SettingRow.vue.d.ts → views/system/config/components/ScaleToFit.vue.d.ts} +2 -1
- package/dist/views/system/config/components/ScaleToFit.vue.js +8 -0
- package/dist/views/system/config/components/ScaleToFit.vue.js.map +1 -0
- package/dist/views/system/config/components/ScaleToFit2.vue.js +41 -0
- package/dist/views/system/config/components/ScaleToFit2.vue.js.map +1 -0
- package/dist/views/system/config/components/SectionLayout.vue.d.ts +30 -0
- package/dist/views/system/config/components/SectionLayout.vue.js +8 -0
- package/dist/views/system/config/components/SectionLayout.vue.js.map +1 -0
- package/dist/views/system/config/components/SectionLayout2.vue.js +69 -0
- package/dist/views/system/config/components/SectionLayout2.vue.js.map +1 -0
- package/dist/views/system/config/components/SecuritySection.vue.js +8 -0
- package/dist/views/system/config/components/SecuritySection.vue.js.map +1 -0
- package/dist/views/system/config/components/SecuritySection2.vue.js +417 -0
- package/dist/views/system/config/components/SecuritySection2.vue.js.map +1 -0
- package/dist/views/system/config/components/SensitiveSection.vue.js +8 -0
- package/dist/views/system/config/components/SensitiveSection.vue.js.map +1 -0
- package/dist/views/system/config/components/SensitiveSection2.vue.js +214 -0
- package/dist/views/system/config/components/SensitiveSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/SigninSection.vue.js +8 -0
- package/dist/views/system/config/components/SigninSection.vue.js.map +1 -0
- package/dist/views/system/config/components/SigninSection2.vue.js +201 -0
- package/dist/views/system/config/components/SigninSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/UploadSection.vue.js +8 -0
- package/dist/views/system/config/components/UploadSection.vue.js.map +1 -0
- package/dist/views/system/config/components/UploadSection2.vue.js +176 -0
- package/dist/views/system/config/components/UploadSection2.vue.js.map +1 -0
- package/dist/views/system/config/components/WatermarkSection.vue.js +8 -0
- package/dist/views/system/config/components/WatermarkSection.vue.js.map +1 -0
- package/dist/views/system/config/components/WatermarkSection2.vue.js +284 -0
- package/dist/views/system/config/components/WatermarkSection2.vue.js.map +1 -0
- package/dist/views/system/config/draft.d.ts +148 -0
- package/dist/views/system/config/draft.js +170 -0
- package/dist/views/system/config/draft.js.map +1 -0
- package/dist/views/system/config/flash.d.ts +2 -0
- package/dist/views/system/config/flash.js +9 -0
- package/dist/views/system/config/flash.js.map +1 -0
- package/dist/views/system/config/groups.d.ts +38 -7
- package/dist/views/system/config/groups.js +104 -14
- package/dist/views/system/config/groups.js.map +1 -1
- package/dist/views/system/config/index.vue.js +6 -2
- package/dist/views/system/config/index.vue.js.map +1 -1
- package/dist/views/system/config/index2.vue.js +201 -111
- package/dist/views/system/config/index2.vue.js.map +1 -1
- package/dist/views/system/config/layoutMode.d.ts +23 -0
- package/dist/views/system/config/layoutMode.js +28 -0
- package/dist/views/system/config/layoutMode.js.map +1 -0
- package/dist/views/system/config/providerForm.d.ts +33 -0
- package/dist/views/system/config/providerForm.js +63 -0
- package/dist/views/system/config/providerForm.js.map +1 -0
- package/dist/views/system/dict/index.vue.js +2 -2
- package/dist/views/system/dict/index2.vue.js +471 -366
- package/dist/views/system/dict/index2.vue.js.map +1 -1
- package/dist/views/system/file/index2.vue.js +91 -76
- package/dist/views/system/file/index2.vue.js.map +1 -1
- package/dist/views/system/job/index.vue.js +3 -3
- package/dist/views/system/job/index2.vue.js +897 -828
- package/dist/views/system/job/index2.vue.js.map +1 -1
- package/dist/views/system/job-log/components/AttemptTable.vue.d.ts +8 -0
- package/dist/views/system/job-log/components/AttemptTable.vue.js +5 -0
- package/dist/views/system/job-log/components/AttemptTable.vue.js.map +1 -0
- package/dist/views/system/job-log/components/AttemptTable2.vue.js +54 -0
- package/dist/views/system/job-log/components/AttemptTable2.vue.js.map +1 -0
- package/dist/views/system/job-log/index.vue.js +2 -2
- package/dist/views/system/job-log/index2.vue.js +193 -207
- package/dist/views/system/job-log/index2.vue.js.map +1 -1
- package/dist/views/system/job-log/runStatus.d.ts +13 -0
- package/dist/views/system/job-log/runStatus.js +26 -0
- package/dist/views/system/job-log/runStatus.js.map +1 -0
- package/dist/views/system/job-monitor/index.vue.js +2 -2
- package/dist/views/system/job-monitor/index2.vue.js +172 -180
- package/dist/views/system/job-monitor/index2.vue.js.map +1 -1
- package/dist/views/system/log/exception/index.vue.js +2 -2
- package/dist/views/system/log/exception/index2.vue.js +135 -96
- package/dist/views/system/log/exception/index2.vue.js.map +1 -1
- package/dist/views/system/log/login/index2.vue.js +62 -41
- package/dist/views/system/log/login/index2.vue.js.map +1 -1
- package/dist/views/system/log/op/index.vue.js +2 -2
- package/dist/views/system/log/op/index2.vue.js +200 -162
- package/dist/views/system/log/op/index2.vue.js.map +1 -1
- package/dist/views/system/menu/components/ButtonManager.vue.js +2 -2
- package/dist/views/system/menu/components/ButtonManager2.vue.js +206 -190
- package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -1
- package/dist/views/system/menu/components/MenuFormModal.vue.js +2 -2
- package/dist/views/system/menu/components/MenuFormModal2.vue.js +127 -118
- package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -1
- package/dist/views/system/menu/index.vue.js +1 -1
- package/dist/views/system/menu/index2.vue.js +216 -183
- package/dist/views/system/menu/index2.vue.js.map +1 -1
- package/dist/views/system/module/index.vue.js +1 -1
- package/dist/views/system/module/index2.vue.js +177 -144
- package/dist/views/system/module/index2.vue.js.map +1 -1
- package/dist/views/system/monitor/index.vue.js +2 -2
- package/dist/views/system/monitor/index2.vue.js +134 -149
- package/dist/views/system/monitor/index2.vue.js.map +1 -1
- package/dist/views/system/notice/index.vue.js +1 -1
- package/dist/views/system/notice/index2.vue.js +209 -181
- package/dist/views/system/notice/index2.vue.js.map +1 -1
- package/dist/views/system/org/index.vue.js +1 -1
- package/dist/views/system/org/index2.vue.js +278 -248
- package/dist/views/system/org/index2.vue.js.map +1 -1
- package/dist/views/system/position/index.vue.js +5 -2
- package/dist/views/system/position/index.vue.js.map +1 -1
- package/dist/views/system/position/index2.vue.js +128 -92
- package/dist/views/system/position/index2.vue.js.map +1 -1
- package/dist/views/system/recycle/index.vue.js +2 -2
- package/dist/views/system/recycle/index2.vue.js +90 -67
- package/dist/views/system/recycle/index2.vue.js.map +1 -1
- package/dist/views/system/role/components/GrantMenuSheet.vue.d.ts +20 -0
- package/dist/views/system/role/components/GrantMenuSheet.vue.js +8 -0
- package/dist/views/system/role/components/GrantMenuSheet.vue.js.map +1 -0
- package/dist/views/system/role/components/GrantMenuSheet2.vue.js +117 -0
- package/dist/views/system/role/components/GrantMenuSheet2.vue.js.map +1 -0
- package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +6 -4
- package/dist/views/system/role/components/GrantMenuTable.vue.js +2 -2
- package/dist/views/system/role/components/GrantMenuTable2.vue.js +279 -177
- package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -1
- package/dist/views/system/role/components/MatchText.vue.d.ts +7 -0
- package/dist/views/system/role/components/MatchText.vue.js +8 -0
- package/dist/views/system/role/components/MatchText.vue.js.map +1 -0
- package/dist/views/system/role/components/MatchText2.vue.js +29 -0
- package/dist/views/system/role/components/MatchText2.vue.js.map +1 -0
- package/dist/views/system/role/components/grantMenuGroups.d.ts +36 -0
- package/dist/views/system/role/components/grantMenuGroups.js +110 -48
- package/dist/views/system/role/components/grantMenuGroups.js.map +1 -1
- package/dist/views/system/role/index.vue.js +5 -2
- package/dist/views/system/role/index.vue.js.map +1 -1
- package/dist/views/system/role/index2.vue.js +181 -165
- package/dist/views/system/role/index2.vue.js.map +1 -1
- package/dist/views/system/session/index2.vue.js +75 -49
- package/dist/views/system/session/index2.vue.js.map +1 -1
- package/dist/views/system/user/components/ResetPasswordModal.vue.js +2 -2
- package/dist/views/system/user/components/ResetPasswordModal2.vue.js +2 -0
- package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -1
- package/dist/views/system/user/components/UserFormModal.vue.js +2 -2
- package/dist/views/system/user/components/UserFormModal2.vue.js +77 -76
- package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -1
- package/dist/views/system/user/index.vue.js +2 -2
- package/dist/views/system/user/index2.vue.js +362 -275
- package/dist/views/system/user/index2.vue.js.map +1 -1
- package/package.json +6 -8
- package/dist/components/SelectTable/index.vue.d.ts +0 -76
- package/dist/components/SelectTable/index2.vue.js +0 -256
- package/dist/components/SelectTable/index2.vue.js.map +0 -1
- package/dist/composables/useTableRowSort.d.ts +0 -20
- package/dist/composables/useTableRowSort.js +0 -59
- package/dist/composables/useTableRowSort.js.map +0 -1
- package/dist/layouts/LayoutModeCards.vue.js +0 -8
- package/dist/layouts/LayoutModeCards.vue.js.map +0 -1
- package/dist/layouts/LayoutModeCards2.vue.js +0 -67
- package/dist/layouts/LayoutModeCards2.vue.js.map +0 -1
- package/dist/layouts/SettingRow.vue.js +0 -8
- package/dist/layouts/SettingRow.vue.js.map +0 -1
- package/dist/layouts/SettingRow2.vue.js +0 -23
- package/dist/layouts/SettingRow2.vue.js.map +0 -1
- package/dist/views/login/skins/AuroraGlass.vue.js +0 -8
- package/dist/views/login/skins/AuroraGlass.vue.js.map +0 -1
- package/dist/views/login/skins/AuroraGlass2.vue.js +0 -80
- package/dist/views/login/skins/AuroraGlass2.vue.js.map +0 -1
- package/dist/views/login/skins/SplitPanel.vue.js +0 -8
- package/dist/views/login/skins/SplitPanel.vue.js.map +0 -1
- package/dist/views/login/skins/SplitPanel2.vue.js +0 -85
- package/dist/views/login/skins/SplitPanel2.vue.js.map +0 -1
- package/dist/views/login/skins/Spotlight.vue.js +0 -8
- package/dist/views/login/skins/Spotlight.vue.js.map +0 -1
- package/dist/views/login/skins/Spotlight2.vue.js +0 -36
- package/dist/views/login/skins/Spotlight2.vue.js.map +0 -1
- package/dist/views/login/skins.d.ts +0 -8
- package/dist/views/login/skins.js +0 -13
- package/dist/views/login/skins.js.map +0 -1
- package/dist/views/system/config/components/ExternalAuthConfig.vue.js +0 -8
- package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +0 -218
- package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/GroupExtraConfig.vue.js +0 -8
- package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/GroupExtraConfig2.vue.js +0 -108
- package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/HighSensConfig.vue.js +0 -5
- package/dist/views/system/config/components/HighSensConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/HighSensConfig2.vue.js +0 -134
- package/dist/views/system/config/components/HighSensConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/JobConfig.vue.js +0 -5
- package/dist/views/system/config/components/JobConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/JobConfig2.vue.js +0 -116
- package/dist/views/system/config/components/JobConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/OtherConfig.vue.js +0 -5
- package/dist/views/system/config/components/OtherConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/OtherConfig2.vue.js +0 -121
- package/dist/views/system/config/components/OtherConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/SecurityConfig.vue.js +0 -8
- package/dist/views/system/config/components/SecurityConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/SecurityConfig2.vue.js +0 -456
- package/dist/views/system/config/components/SecurityConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/SysBaseConfig.vue.js +0 -5
- package/dist/views/system/config/components/SysBaseConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/SysBaseConfig2.vue.js +0 -107
- package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +0 -1
- package/dist/views/system/config/components/UploadConfig.vue.d.ts +0 -3
- package/dist/views/system/config/components/UploadConfig.vue.js +0 -5
- package/dist/views/system/config/components/UploadConfig.vue.js.map +0 -1
- package/dist/views/system/config/components/UploadConfig2.vue.js +0 -135
- package/dist/views/system/config/components/UploadConfig2.vue.js.map +0 -1
- /package/dist/components/{SelectTable → TableTotal}/index.vue.js.map +0 -0
- /package/dist/layouts/{LayoutModeCards.vue.d.ts → AccentPicker.vue.d.ts} +0 -0
- /package/dist/views/{login/skins/AuroraGlass.vue.d.ts → system/config/components/AdminMock.vue.d.ts} +0 -0
- /package/dist/views/{login/skins/SplitPanel.vue.d.ts → system/config/components/AdvancedSection.vue.d.ts} +0 -0
- /package/dist/views/{login/skins/Spotlight.vue.d.ts → system/config/components/JobSection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{ExternalAuthConfig.vue.d.ts → LogoEditor.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{HighSensConfig.vue.d.ts → SecuritySection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{JobConfig.vue.d.ts → SensitiveSection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{OtherConfig.vue.d.ts → SigninSection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{SecurityConfig.vue.d.ts → UploadSection.vue.d.ts} +0 -0
- /package/dist/views/system/config/components/{SysBaseConfig.vue.d.ts → WatermarkSection.vue.d.ts} +0 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { defineComponent as W, ref as x, computed as p, openBlock as X, createBlock as Z, unref as e, withCtx as a, createVNode as i, isRef as g, createElementVNode as R, normalizeClass as _, toDisplayString as M, withDirectives as O, vShow as T } from "vue";
|
|
2
|
+
import { NInput as f, NSwitch as j } from "naive-ui";
|
|
3
|
+
import { useI18n as q } from "vue-i18n";
|
|
4
|
+
import { splitLoginHeroFeatures as J } from "../../../../lib/loginHero.js";
|
|
5
|
+
import { useAppStore as Q } from "../../../../stores/app.js";
|
|
6
|
+
import { SUBTITLE_KEY as K, LOGIN_LOCALES as V, heroKeys as B, SHOW_FEATURES_KEY as C, LOGO_KEY as ee, BRAND_KEYS as le } from "../groups.js";
|
|
7
|
+
import { useConfigDraft as oe, useDraftFields as ie } from "../draft.js";
|
|
8
|
+
import { useConfigLayout as te } from "../layoutMode.js";
|
|
9
|
+
import ae from "./SectionLayout.vue.js";
|
|
10
|
+
import D from "./CfgGroup.vue.js";
|
|
11
|
+
import s from "./CfgRow.vue.js";
|
|
12
|
+
import H from "./CfgSegment.vue.js";
|
|
13
|
+
import I from "./ScaleToFit.vue.js";
|
|
14
|
+
import ne from "./LogoEditor.vue.js";
|
|
15
|
+
import se from "./AdminMock.vue.js";
|
|
16
|
+
import re from "./LoginMock.vue.js";
|
|
17
|
+
const Le = /* @__PURE__ */ W({
|
|
18
|
+
__name: "BrandSection",
|
|
19
|
+
setup(ue, { expose: G }) {
|
|
20
|
+
const { t: l } = q(), P = Q(), { values: c } = oe(), { str: v } = ie(), { ctl: r } = te(), y = v("sys.site.title"), w = v("sys.site.copyright"), k = v("sys.site.copyrightUrl"), S = v(K), u = x("admin"), Y = p(() => [
|
|
21
|
+
{ value: "admin", label: l("config.brand.previewAdmin") },
|
|
22
|
+
{ value: "login", label: l("config.brand.previewLogin") }
|
|
23
|
+
]), d = x(P.locale === "en-US" ? "en-US" : "zh-CN"), $ = p(
|
|
24
|
+
() => V.map((n) => ({
|
|
25
|
+
value: n,
|
|
26
|
+
label: l(`config.login.locale${n === "zh-CN" ? "Zh" : "En"}`)
|
|
27
|
+
}))
|
|
28
|
+
);
|
|
29
|
+
function N(n) {
|
|
30
|
+
d.value = n, u.value = "login";
|
|
31
|
+
}
|
|
32
|
+
const A = p(() => B(d.value)), U = (n) => p({
|
|
33
|
+
get: () => c[A.value[n]] ?? "",
|
|
34
|
+
set: (o) => {
|
|
35
|
+
c[A.value[n]] = o;
|
|
36
|
+
}
|
|
37
|
+
}), h = U("headline"), b = U("highlight"), m = U("features"), z = p({
|
|
38
|
+
get: () => c[C] !== "false",
|
|
39
|
+
set: (n) => {
|
|
40
|
+
c[C] = n ? "true" : "false";
|
|
41
|
+
}
|
|
42
|
+
}), E = p(() => {
|
|
43
|
+
const n = h.value.trim(), o = b.value.trim();
|
|
44
|
+
return !!n && !!o && !n.includes(o);
|
|
45
|
+
}), L = p(
|
|
46
|
+
() => J(m.value, Number.MAX_SAFE_INTEGER).length > 5
|
|
47
|
+
), F = (n) => V.map((o) => B(o)[n]);
|
|
48
|
+
return G({ setLocale: N }), (n, o) => (X(), Z(ae, {
|
|
49
|
+
title: e(l)("config.tab.brand"),
|
|
50
|
+
desc: e(l)("config.brand.desc"),
|
|
51
|
+
"preview-title": e(l)("config.brand.preview")
|
|
52
|
+
}, {
|
|
53
|
+
"preview-extra": a(() => [
|
|
54
|
+
i(H, {
|
|
55
|
+
modelValue: u.value,
|
|
56
|
+
"onUpdate:modelValue": o[10] || (o[10] = (t) => u.value = t),
|
|
57
|
+
options: Y.value,
|
|
58
|
+
label: e(l)("config.brand.preview")
|
|
59
|
+
}, null, 8, ["modelValue", "options", "label"])
|
|
60
|
+
]),
|
|
61
|
+
preview: a(() => [
|
|
62
|
+
O(i(I, {
|
|
63
|
+
width: 880,
|
|
64
|
+
height: 540
|
|
65
|
+
}, {
|
|
66
|
+
default: a(() => [
|
|
67
|
+
i(se)
|
|
68
|
+
]),
|
|
69
|
+
_: 1
|
|
70
|
+
}, 512), [
|
|
71
|
+
[T, u.value === "admin"]
|
|
72
|
+
]),
|
|
73
|
+
O(i(I, {
|
|
74
|
+
width: 880,
|
|
75
|
+
height: 540
|
|
76
|
+
}, {
|
|
77
|
+
default: a(() => [
|
|
78
|
+
i(re, { locale: d.value }, null, 8, ["locale"])
|
|
79
|
+
]),
|
|
80
|
+
_: 1
|
|
81
|
+
}, 512), [
|
|
82
|
+
[T, u.value === "login"]
|
|
83
|
+
])
|
|
84
|
+
]),
|
|
85
|
+
default: a(() => [
|
|
86
|
+
i(D, {
|
|
87
|
+
title: e(l)("config.brand.groupSite"),
|
|
88
|
+
onFocusin: o[3] || (o[3] = (t) => u.value = "admin")
|
|
89
|
+
}, {
|
|
90
|
+
default: a(() => [
|
|
91
|
+
i(s, {
|
|
92
|
+
label: e(l)("config.logo.title"),
|
|
93
|
+
hint: e(l)("config.logo.help"),
|
|
94
|
+
keys: [e(ee)],
|
|
95
|
+
class: "logo-row"
|
|
96
|
+
}, {
|
|
97
|
+
default: a(() => [
|
|
98
|
+
i(ne)
|
|
99
|
+
]),
|
|
100
|
+
_: 1
|
|
101
|
+
}, 8, ["label", "hint", "keys"]),
|
|
102
|
+
i(s, {
|
|
103
|
+
label: e(l)("config.base.siteTitle"),
|
|
104
|
+
keys: [e(le)[0]]
|
|
105
|
+
}, {
|
|
106
|
+
default: a(() => [
|
|
107
|
+
i(e(f), {
|
|
108
|
+
value: e(y),
|
|
109
|
+
"onUpdate:value": o[0] || (o[0] = (t) => g(y) ? y.value = t : null),
|
|
110
|
+
size: e(r),
|
|
111
|
+
placeholder: "SmartAdmin",
|
|
112
|
+
"input-props": { "aria-label": e(l)("config.base.siteTitle") }
|
|
113
|
+
}, null, 8, ["value", "size", "input-props"])
|
|
114
|
+
]),
|
|
115
|
+
_: 1
|
|
116
|
+
}, 8, ["label", "keys"]),
|
|
117
|
+
i(s, {
|
|
118
|
+
label: e(l)("config.base.copyright"),
|
|
119
|
+
keys: ["sys.site.copyright"]
|
|
120
|
+
}, {
|
|
121
|
+
default: a(() => [
|
|
122
|
+
i(e(f), {
|
|
123
|
+
value: e(w),
|
|
124
|
+
"onUpdate:value": o[1] || (o[1] = (t) => g(w) ? w.value = t : null),
|
|
125
|
+
size: e(r),
|
|
126
|
+
placeholder: e(l)("config.brand.copyrightPh"),
|
|
127
|
+
"input-props": { "aria-label": e(l)("config.base.copyright") }
|
|
128
|
+
}, null, 8, ["value", "size", "placeholder", "input-props"])
|
|
129
|
+
]),
|
|
130
|
+
_: 1
|
|
131
|
+
}, 8, ["label"]),
|
|
132
|
+
i(s, {
|
|
133
|
+
label: e(l)("config.base.copyrightUrl"),
|
|
134
|
+
hint: e(l)("config.brand.copyrightUrlHint"),
|
|
135
|
+
keys: ["sys.site.copyrightUrl"]
|
|
136
|
+
}, {
|
|
137
|
+
default: a(() => [
|
|
138
|
+
i(e(f), {
|
|
139
|
+
value: e(k),
|
|
140
|
+
"onUpdate:value": o[2] || (o[2] = (t) => g(k) ? k.value = t : null),
|
|
141
|
+
size: e(r),
|
|
142
|
+
placeholder: "https://",
|
|
143
|
+
"input-props": { "aria-label": e(l)("config.base.copyrightUrl") }
|
|
144
|
+
}, null, 8, ["value", "size", "input-props"])
|
|
145
|
+
]),
|
|
146
|
+
_: 1
|
|
147
|
+
}, 8, ["label", "hint"])
|
|
148
|
+
]),
|
|
149
|
+
_: 1
|
|
150
|
+
}, 8, ["title"]),
|
|
151
|
+
i(D, {
|
|
152
|
+
title: e(l)("config.brand.groupLogin"),
|
|
153
|
+
onFocusin: o[9] || (o[9] = (t) => u.value = "login")
|
|
154
|
+
}, {
|
|
155
|
+
extra: a(() => [
|
|
156
|
+
i(H, {
|
|
157
|
+
"model-value": d.value,
|
|
158
|
+
options: $.value,
|
|
159
|
+
label: e(l)("config.login.language"),
|
|
160
|
+
"data-testid": "login-locale",
|
|
161
|
+
"onUpdate:modelValue": N
|
|
162
|
+
}, null, 8, ["model-value", "options", "label"])
|
|
163
|
+
]),
|
|
164
|
+
default: a(() => [
|
|
165
|
+
i(s, {
|
|
166
|
+
label: e(l)("config.base.siteSubtitle"),
|
|
167
|
+
keys: [e(K)]
|
|
168
|
+
}, {
|
|
169
|
+
default: a(() => [
|
|
170
|
+
i(e(f), {
|
|
171
|
+
value: e(S),
|
|
172
|
+
"onUpdate:value": o[4] || (o[4] = (t) => g(S) ? S.value = t : null),
|
|
173
|
+
size: e(r),
|
|
174
|
+
placeholder: e(l)("login.subtitle", {}, { locale: d.value }),
|
|
175
|
+
"input-props": { "aria-label": e(l)("config.base.siteSubtitle") }
|
|
176
|
+
}, null, 8, ["value", "size", "placeholder", "input-props"])
|
|
177
|
+
]),
|
|
178
|
+
_: 1
|
|
179
|
+
}, 8, ["label", "keys"]),
|
|
180
|
+
i(s, {
|
|
181
|
+
label: e(l)("config.login.headline"),
|
|
182
|
+
keys: F("headline")
|
|
183
|
+
}, {
|
|
184
|
+
default: a(() => [
|
|
185
|
+
i(e(f), {
|
|
186
|
+
value: e(h),
|
|
187
|
+
"onUpdate:value": o[5] || (o[5] = (t) => g(h) ? h.value = t : null),
|
|
188
|
+
size: e(r),
|
|
189
|
+
placeholder: e(l)("config.login.headlinePlaceholder"),
|
|
190
|
+
"input-props": { "aria-label": e(l)("config.login.headline") }
|
|
191
|
+
}, null, 8, ["value", "size", "placeholder", "input-props"])
|
|
192
|
+
]),
|
|
193
|
+
_: 1
|
|
194
|
+
}, 8, ["label", "keys"]),
|
|
195
|
+
i(s, {
|
|
196
|
+
label: e(l)("config.login.highlight"),
|
|
197
|
+
keys: F("highlight")
|
|
198
|
+
}, {
|
|
199
|
+
hint: a(() => [
|
|
200
|
+
R("span", {
|
|
201
|
+
class: _({ warn: E.value })
|
|
202
|
+
}, M(E.value ? e(l)("config.login.highlightMissing") : e(l)("config.login.highlightHint")), 3)
|
|
203
|
+
]),
|
|
204
|
+
default: a(() => [
|
|
205
|
+
i(e(f), {
|
|
206
|
+
value: e(b),
|
|
207
|
+
"onUpdate:value": o[6] || (o[6] = (t) => g(b) ? b.value = t : null),
|
|
208
|
+
size: e(r),
|
|
209
|
+
status: E.value ? "warning" : void 0,
|
|
210
|
+
placeholder: e(l)("config.login.highlightPlaceholder"),
|
|
211
|
+
"input-props": { "aria-label": e(l)("config.login.highlight") }
|
|
212
|
+
}, null, 8, ["value", "size", "status", "placeholder", "input-props"])
|
|
213
|
+
]),
|
|
214
|
+
_: 1
|
|
215
|
+
}, 8, ["label", "keys"]),
|
|
216
|
+
i(s, {
|
|
217
|
+
label: e(l)("config.login.showFeatures"),
|
|
218
|
+
keys: [e(C)]
|
|
219
|
+
}, {
|
|
220
|
+
default: a(() => [
|
|
221
|
+
i(e(j), {
|
|
222
|
+
value: z.value,
|
|
223
|
+
"onUpdate:value": o[7] || (o[7] = (t) => z.value = t),
|
|
224
|
+
"aria-label": e(l)("config.login.showFeatures")
|
|
225
|
+
}, null, 8, ["value", "aria-label"])
|
|
226
|
+
]),
|
|
227
|
+
_: 1
|
|
228
|
+
}, 8, ["label", "keys"]),
|
|
229
|
+
i(s, {
|
|
230
|
+
label: e(l)("config.login.features"),
|
|
231
|
+
keys: F("features"),
|
|
232
|
+
disabled: !z.value,
|
|
233
|
+
tall: "",
|
|
234
|
+
class: "feat"
|
|
235
|
+
}, {
|
|
236
|
+
hint: a(() => [
|
|
237
|
+
R("span", {
|
|
238
|
+
class: _({ err: L.value })
|
|
239
|
+
}, M(L.value ? e(l)("config.login.tooManyFeatures") : e(l)("config.login.featuresHint")), 3)
|
|
240
|
+
]),
|
|
241
|
+
default: a(() => [
|
|
242
|
+
i(e(f), {
|
|
243
|
+
value: e(m),
|
|
244
|
+
"onUpdate:value": o[8] || (o[8] = (t) => g(m) ? m.value = t : null),
|
|
245
|
+
type: "textarea",
|
|
246
|
+
size: e(r),
|
|
247
|
+
status: L.value ? "error" : void 0,
|
|
248
|
+
autosize: { minRows: 2, maxRows: 4 },
|
|
249
|
+
placeholder: e(l)("config.login.featuresPlaceholder"),
|
|
250
|
+
"input-props": { "aria-label": e(l)("config.login.features") }
|
|
251
|
+
}, null, 8, ["value", "size", "status", "placeholder", "input-props"])
|
|
252
|
+
]),
|
|
253
|
+
_: 1
|
|
254
|
+
}, 8, ["label", "keys", "disabled"])
|
|
255
|
+
]),
|
|
256
|
+
_: 1
|
|
257
|
+
}, 8, ["title"])
|
|
258
|
+
]),
|
|
259
|
+
_: 1
|
|
260
|
+
}, 8, ["title", "desc", "preview-title"]));
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
export {
|
|
264
|
+
Le as default
|
|
265
|
+
};
|
|
266
|
+
//# sourceMappingURL=BrandSection2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrandSection2.vue.js","sources":["../../../../../src/views/system/config/components/BrandSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 品牌与登录页:左边「站点」「登录页」两组设置,右边一块预览,用分段控件切「后台 / 登录页」。\n// 预览跟着焦点走:编辑站点组时看后台,编辑登录页组时看登录页,也可手动切。\n// 登录页文案中英文分开配,组名右侧切语言,预览同步切到该语言。\nimport { computed, ref } from 'vue'\nimport { NInput, NSwitch } from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport { splitLoginHeroFeatures } from '#/lib/loginHero'\nimport { useAppStore } from '#/stores/app'\nimport {\n BRAND_KEYS,\n heroKeys,\n LOGIN_LOCALES,\n LOGO_KEY,\n SHOW_FEATURES_KEY,\n SUBTITLE_KEY,\n type LoginLocale,\n} from '../groups'\nimport { useConfigDraft, useDraftFields } from '../draft'\nimport { useConfigLayout } from '../layoutMode'\nimport SectionLayout from './SectionLayout.vue'\nimport CfgGroup from './CfgGroup.vue'\nimport CfgRow from './CfgRow.vue'\nimport CfgSegment from './CfgSegment.vue'\nimport ScaleToFit from './ScaleToFit.vue'\nimport LogoEditor from './LogoEditor.vue'\nimport AdminMock from './AdminMock.vue'\nimport LoginMock from './LoginMock.vue'\n\nconst { t } = useI18n()\nconst app = useAppStore()\nconst { values } = useConfigDraft()\nconst { str } = useDraftFields()\nconst { ctl } = useConfigLayout()\n\nconst title = str('sys.site.title')\nconst copyright = str('sys.site.copyright')\nconst copyrightUrl = str('sys.site.copyrightUrl')\nconst subtitle = str(SUBTITLE_KEY)\n\nconst view = ref<'admin' | 'login'>('admin')\nconst viewOptions = computed(() => [\n { value: 'admin' as const, label: t('config.brand.previewAdmin') },\n { value: 'login' as const, label: t('config.brand.previewLogin') },\n])\n\nconst locale = ref<LoginLocale>(app.locale === 'en-US' ? 'en-US' : 'zh-CN')\nconst localeOptions = computed(() =>\n LOGIN_LOCALES.map(l => ({\n value: l,\n label: t(`config.login.locale${l === 'zh-CN' ? 'Zh' : 'En'}`),\n })),\n)\nfunction setLocale(l: LoginLocale) {\n locale.value = l\n view.value = 'login'\n}\nconst keys = computed(() => heroKeys(locale.value))\nconst field = (name: 'headline' | 'highlight' | 'features') =>\n computed({\n get: () => values[keys.value[name]] ?? '',\n set: (v: string) => {\n values[keys.value[name]] = v\n },\n })\nconst headline = field('headline')\nconst highlight = field('highlight')\nconst features = field('features')\n// 缺省视为开:库里没有这个键时登录页照常显示亮点\nconst showFeatures = computed({\n get: () => values[SHOW_FEATURES_KEY] !== 'false',\n set: v => {\n values[SHOW_FEATURES_KEY] = v ? 'true' : 'false'\n },\n})\nconst highlightMissing = computed(() => {\n const h = headline.value.trim()\n const k = highlight.value.trim()\n return !!h && !!k && !h.includes(k)\n})\nconst tooManyFeatures = computed(\n () => splitLoginHeroFeatures(features.value, Number.MAX_SAFE_INTEGER).length > 5,\n)\nconst heroRowKeys = (name: 'headline' | 'highlight' | 'features') =>\n LOGIN_LOCALES.map(l => heroKeys(l)[name])\n\ndefineExpose({ setLocale })\n</script>\n\n<template>\n <SectionLayout\n :title=\"t('config.tab.brand')\"\n :desc=\"t('config.brand.desc')\"\n :preview-title=\"t('config.brand.preview')\"\n >\n <CfgGroup :title=\"t('config.brand.groupSite')\" @focusin=\"view = 'admin'\">\n <CfgRow\n :label=\"t('config.logo.title')\"\n :hint=\"t('config.logo.help')\"\n :keys=\"[LOGO_KEY]\"\n class=\"logo-row\"\n >\n <LogoEditor />\n </CfgRow>\n <CfgRow :label=\"t('config.base.siteTitle')\" :keys=\"[BRAND_KEYS[0]]\">\n <n-input\n v-model:value=\"title\"\n :size=\"ctl\"\n placeholder=\"SmartAdmin\"\n :input-props=\"{ 'aria-label': t('config.base.siteTitle') }\"\n />\n </CfgRow>\n <CfgRow :label=\"t('config.base.copyright')\" :keys=\"['sys.site.copyright']\">\n <n-input\n v-model:value=\"copyright\"\n :size=\"ctl\"\n :placeholder=\"t('config.brand.copyrightPh')\"\n :input-props=\"{ 'aria-label': t('config.base.copyright') }\"\n />\n </CfgRow>\n <CfgRow\n :label=\"t('config.base.copyrightUrl')\"\n :hint=\"t('config.brand.copyrightUrlHint')\"\n :keys=\"['sys.site.copyrightUrl']\"\n >\n <n-input\n v-model:value=\"copyrightUrl\"\n :size=\"ctl\"\n placeholder=\"https://\"\n :input-props=\"{ 'aria-label': t('config.base.copyrightUrl') }\"\n />\n </CfgRow>\n </CfgGroup>\n\n <CfgGroup :title=\"t('config.brand.groupLogin')\" @focusin=\"view = 'login'\">\n <template #extra>\n <CfgSegment\n :model-value=\"locale\"\n :options=\"localeOptions\"\n :label=\"t('config.login.language')\"\n data-testid=\"login-locale\"\n @update:model-value=\"setLocale\"\n />\n </template>\n <CfgRow :label=\"t('config.base.siteSubtitle')\" :keys=\"[SUBTITLE_KEY]\">\n <n-input\n v-model:value=\"subtitle\"\n :size=\"ctl\"\n :placeholder=\"t('login.subtitle', {}, { locale })\"\n :input-props=\"{ 'aria-label': t('config.base.siteSubtitle') }\"\n />\n </CfgRow>\n <CfgRow :label=\"t('config.login.headline')\" :keys=\"heroRowKeys('headline')\">\n <n-input\n v-model:value=\"headline\"\n :size=\"ctl\"\n :placeholder=\"t('config.login.headlinePlaceholder')\"\n :input-props=\"{ 'aria-label': t('config.login.headline') }\"\n />\n </CfgRow>\n <CfgRow :label=\"t('config.login.highlight')\" :keys=\"heroRowKeys('highlight')\">\n <template #hint>\n <span :class=\"{ warn: highlightMissing }\">\n {{\n highlightMissing\n ? t('config.login.highlightMissing')\n : t('config.login.highlightHint')\n }}\n </span>\n </template>\n <n-input\n v-model:value=\"highlight\"\n :size=\"ctl\"\n :status=\"highlightMissing ? 'warning' : undefined\"\n :placeholder=\"t('config.login.highlightPlaceholder')\"\n :input-props=\"{ 'aria-label': t('config.login.highlight') }\"\n />\n </CfgRow>\n <CfgRow :label=\"t('config.login.showFeatures')\" :keys=\"[SHOW_FEATURES_KEY]\">\n <n-switch v-model:value=\"showFeatures\" :aria-label=\"t('config.login.showFeatures')\" />\n </CfgRow>\n <CfgRow\n :label=\"t('config.login.features')\"\n :keys=\"heroRowKeys('features')\"\n :disabled=\"!showFeatures\"\n tall\n class=\"feat\"\n >\n <template #hint>\n <span :class=\"{ err: tooManyFeatures }\">\n {{\n tooManyFeatures ? t('config.login.tooManyFeatures') : t('config.login.featuresHint')\n }}\n </span>\n </template>\n <n-input\n v-model:value=\"features\"\n type=\"textarea\"\n :size=\"ctl\"\n :status=\"tooManyFeatures ? 'error' : undefined\"\n :autosize=\"{ minRows: 2, maxRows: 4 }\"\n :placeholder=\"t('config.login.featuresPlaceholder')\"\n :input-props=\"{ 'aria-label': t('config.login.features') }\"\n />\n </CfgRow>\n </CfgGroup>\n\n <template #preview-extra>\n <CfgSegment v-model=\"view\" :options=\"viewOptions\" :label=\"t('config.brand.preview')\" />\n </template>\n <template #preview>\n <ScaleToFit v-show=\"view === 'admin'\" :width=\"880\" :height=\"540\">\n <AdminMock />\n </ScaleToFit>\n <ScaleToFit v-show=\"view === 'login'\" :width=\"880\" :height=\"540\">\n <LoginMock :locale=\"locale\" />\n </ScaleToFit>\n </template>\n </SectionLayout>\n</template>\n\n<style scoped>\n.logo-row {\n min-height: 72px;\n}\n.feat :deep(.ctl) {\n flex: 1.8 1 0;\n}\n.warn {\n color: var(--warn);\n}\n.err {\n color: var(--err);\n}\n</style>\n"],"names":["t","useI18n","app","useAppStore","values","useConfigDraft","str","useDraftFields","ctl","useConfigLayout","title","copyright","copyrightUrl","subtitle","SUBTITLE_KEY","view","ref","viewOptions","computed","locale","localeOptions","LOGIN_LOCALES","l","setLocale","keys","heroKeys","field","name","v","headline","highlight","features","showFeatures","SHOW_FEATURES_KEY","highlightMissing","h","k","tooManyFeatures","splitLoginHeroFeatures","heroRowKeys","__expose","_createBlock","SectionLayout","_unref","_createVNode","CfgSegment","$event","ScaleToFit","AdminMock","LoginMock","CfgGroup","CfgRow","LOGO_KEY","LogoEditor","BRAND_KEYS","NInput","_createElementVNode","NSwitch"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
title?: string;
|
|
3
|
+
};
|
|
4
|
+
declare var __VLS_1: {}, __VLS_3: {};
|
|
5
|
+
type __VLS_Slots = {} & {
|
|
6
|
+
extra?: (props: typeof __VLS_1) => any;
|
|
7
|
+
} & {
|
|
8
|
+
default?: (props: typeof __VLS_3) => any;
|
|
9
|
+
};
|
|
10
|
+
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
11
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
12
|
+
declare const _default: typeof __VLS_export;
|
|
13
|
+
export default _default;
|
|
14
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
15
|
+
new (): {
|
|
16
|
+
$slots: S;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import o from "./CfgGroup2.vue.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import f from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const m = /* @__PURE__ */ f(o, [["__scopeId", "data-v-b7e2ff62"]]);
|
|
5
|
+
export {
|
|
6
|
+
m as default
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=CfgGroup.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CfgGroup.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { defineComponent as n, openBlock as o, createElementBlock as s, createElementVNode as r, toDisplayString as i, renderSlot as l, createCommentVNode as a } from "vue";
|
|
2
|
+
const c = { class: "cfg-group" }, d = { key: 0 }, u = { class: "cfg-list" }, f = /* @__PURE__ */ n({
|
|
3
|
+
__name: "CfgGroup",
|
|
4
|
+
props: {
|
|
5
|
+
title: {}
|
|
6
|
+
},
|
|
7
|
+
setup(t) {
|
|
8
|
+
return (e, m) => (o(), s("div", c, [
|
|
9
|
+
t.title || e.$slots.extra ? (o(), s("h4", d, [
|
|
10
|
+
r("span", null, i(t.title), 1),
|
|
11
|
+
l(e.$slots, "extra", {}, void 0, !0)
|
|
12
|
+
])) : a("", !0),
|
|
13
|
+
r("div", u, [
|
|
14
|
+
l(e.$slots, "default", {}, void 0, !0)
|
|
15
|
+
])
|
|
16
|
+
]));
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
export {
|
|
20
|
+
f as default
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=CfgGroup2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CfgGroup2.vue.js","sources":["../../../../../src/views/system/config/components/CfgGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 圆角分组列表(仿 macOS「系统设置」):组名在卡片外的左上方,#extra 放在组名右侧(如语言切换)。\ndefineProps<{ title?: string }>()\n</script>\n\n<template>\n <div class=\"cfg-group\">\n <h4 v-if=\"title || $slots.extra\">\n <span>{{ title }}</span>\n <slot name=\"extra\" />\n </h4>\n <div class=\"cfg-list\">\n <slot />\n </div>\n </div>\n</template>\n\n<style scoped>\n.cfg-group {\n flex: none;\n min-width: 0;\n}\nh4 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n min-height: 28px;\n margin: 0 0 4px 12px;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-2);\n}\n/* 列表卡:不描边、不投影,靠半透明填充底和卡片拉开层次 */\n.cfg-list {\n border-radius: var(--radius-lg);\n background: var(--fill);\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","__props","$slots","_hoisted_2","_createElementVNode","_renderSlot","_ctx","_hoisted_3"],"mappings":";;;;;;;sBAMEA,EAAA,GAAAC,EAQM,OARNC,GAQM;AAAA,MAPMC,EAAA,SAASC,EAAAA,OAAO,cAA1BH,EAGK,MAAAI,GAAA;AAAA,QAFHC,EAAwB,gBAAfH,EAAA,KAAK,GAAA,CAAA;AAAA,QACdI,EAAqBC,EAAA,QAAA,SAAA,CAAA,GAAA,QAAA,EAAA;AAAA,MAAA;MAEvBF,EAEM,OAFNG,GAEM;AAAA,QADJF,EAAQC,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,MAAA;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
label?: string;
|
|
3
|
+
hint?: string;
|
|
4
|
+
keys?: readonly string[];
|
|
5
|
+
sub?: boolean;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
/** 控件比一行高(多行输入、标签组):顶端对齐 */
|
|
8
|
+
tall?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
|
|
11
|
+
type __VLS_Slots = {} & {
|
|
12
|
+
label?: (props: typeof __VLS_1) => any;
|
|
13
|
+
} & {
|
|
14
|
+
hint?: (props: typeof __VLS_3) => any;
|
|
15
|
+
} & {
|
|
16
|
+
default?: (props: typeof __VLS_5) => any;
|
|
17
|
+
};
|
|
18
|
+
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
19
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
20
|
+
declare const _default: typeof __VLS_export;
|
|
21
|
+
export default _default;
|
|
22
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
23
|
+
new (): {
|
|
24
|
+
$slots: S;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import o from "./CfgRow2.vue.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
/* empty css */
|
|
4
|
+
import t from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
5
|
+
const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-2191e0b7"]]);
|
|
6
|
+
export {
|
|
7
|
+
_ as default
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=CfgRow.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CfgRow.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { defineComponent as y, computed as v, openBlock as s, createElementBlock as o, normalizeClass as g, unref as c, createElementVNode as n, createCommentVNode as l, renderSlot as i, createTextVNode as u, toDisplayString as d } from "vue";
|
|
2
|
+
import { useI18n as k } from "vue-i18n";
|
|
3
|
+
import { useConfigDraft as C } from "../draft.js";
|
|
4
|
+
import { useConfigLayout as p } from "../layoutMode.js";
|
|
5
|
+
const B = ["aria-disabled"], $ = { class: "lb" }, N = { class: "name" }, V = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "dot",
|
|
8
|
+
"aria-hidden": "true"
|
|
9
|
+
}, w = {
|
|
10
|
+
key: 1,
|
|
11
|
+
class: "sr-only"
|
|
12
|
+
}, D = { key: 0 }, E = { class: "ctl" }, I = /* @__PURE__ */ y({
|
|
13
|
+
__name: "CfgRow",
|
|
14
|
+
props: {
|
|
15
|
+
label: {},
|
|
16
|
+
hint: {},
|
|
17
|
+
keys: {},
|
|
18
|
+
sub: { type: Boolean },
|
|
19
|
+
disabled: { type: Boolean },
|
|
20
|
+
tall: { type: Boolean }
|
|
21
|
+
},
|
|
22
|
+
setup(e) {
|
|
23
|
+
const m = e, { t: f } = k(), h = C(), { nar: b } = p(), a = v(() => {
|
|
24
|
+
var t;
|
|
25
|
+
return !!((t = m.keys) != null && t.some((r) => h.dirtyKeys.value.includes(r)));
|
|
26
|
+
});
|
|
27
|
+
return (t, r) => (s(), o("div", {
|
|
28
|
+
class: g(["cfg-row", { sub: e.sub, off: e.disabled, tall: e.tall, changed: a.value, nar: c(b) }]),
|
|
29
|
+
"aria-disabled": e.disabled || void 0
|
|
30
|
+
}, [
|
|
31
|
+
n("div", $, [
|
|
32
|
+
n("span", N, [
|
|
33
|
+
a.value ? (s(), o("i", V)) : l("", !0),
|
|
34
|
+
i(t.$slots, "label", {}, () => [
|
|
35
|
+
u(d(e.label), 1)
|
|
36
|
+
], !0),
|
|
37
|
+
a.value ? (s(), o("span", w, d(c(f)("config.unsavedTab")), 1)) : l("", !0)
|
|
38
|
+
]),
|
|
39
|
+
e.hint || t.$slots.hint ? (s(), o("small", D, [
|
|
40
|
+
i(t.$slots, "hint", {}, () => [
|
|
41
|
+
u(d(e.hint), 1)
|
|
42
|
+
], !0)
|
|
43
|
+
])) : l("", !0)
|
|
44
|
+
]),
|
|
45
|
+
n("div", E, [
|
|
46
|
+
i(t.$slots, "default", {}, void 0, !0)
|
|
47
|
+
])
|
|
48
|
+
], 10, B));
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
export {
|
|
52
|
+
I as default
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=CfgRow2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CfgRow2.vue.js","sources":["../../../../../src/views/system/config/components/CfgRow.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 分组列表里的一行:左边标签(可带一行灰色说明),右边控件。\n// keys 里任一键有未保存改动,标签前出现橙点——用户一眼看出改了哪几项。\n// sub 是缩进的从属项(如「验证码类型」),disabled 让整行变灰不可操作(从属的总开关关着)。\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useConfigDraft } from '../draft'\nimport { useConfigLayout } from '../layoutMode'\n\nconst props = defineProps<{\n label?: string\n hint?: string\n keys?: readonly string[]\n sub?: boolean\n disabled?: boolean\n /** 控件比一行高(多行输入、标签组):顶端对齐 */\n tall?: boolean\n}>()\n\nconst { t } = useI18n()\nconst draft = useConfigDraft()\nconst { nar } = useConfigLayout()\nconst changed = computed(() => !!props.keys?.some(key => draft.dirtyKeys.value.includes(key)))\n</script>\n\n<template>\n <div\n :class=\"['cfg-row', { sub, off: disabled, tall, changed, nar }]\"\n :aria-disabled=\"disabled || undefined\"\n >\n <div class=\"lb\">\n <span class=\"name\">\n <i v-if=\"changed\" class=\"dot\" aria-hidden=\"true\" />\n <slot name=\"label\">{{ label }}</slot>\n <span v-if=\"changed\" class=\"sr-only\">{{ t('config.unsavedTab') }}</span>\n </span>\n <small v-if=\"hint || $slots.hint\">\n <slot name=\"hint\">{{ hint }}</slot>\n </small>\n </div>\n <div class=\"ctl\">\n <slot />\n </div>\n </div>\n</template>\n\n<style scoped>\n.cfg-row {\n position: relative;\n display: flex;\n align-items: center;\n gap: 12px;\n min-height: 48px;\n padding: 6px 14px;\n font-size: 14px;\n}\n.cfg-row + .cfg-row::before {\n content: '';\n position: absolute;\n top: 0;\n left: 14px;\n right: 0;\n border-top: 1px solid var(--separator);\n}\n.cfg-row.sub {\n padding-left: 34px;\n}\n.cfg-row.sub::before {\n left: 34px;\n}\n.cfg-row.tall {\n align-items: flex-start;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.cfg-row.off .lb,\n.cfg-row.off .ctl {\n opacity: 0.45;\n pointer-events: none;\n}\n.lb {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 130px;\n}\n.name {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n color: var(--text-1);\n}\n.dot {\n position: absolute;\n left: -11px;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--warn);\n}\nsmall {\n font-size: 13px;\n line-height: 1.4;\n color: var(--text-3);\n}\n.ctl {\n display: flex;\n flex: 0 1 auto;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n min-width: 0;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n/* 窄档:从属项的缩进收一点 */\n.cfg-row.nar.sub {\n padding-left: 24px;\n}\n.cfg-row.nar.sub::before {\n left: 24px;\n}\n</style>\n\n<style>\n/* 带文本输入框的行:标签与输入按 1:1.8 分(输入框是主角,要宽),输入框铺满自己那一份。\n 放在非 scoped 块里::has() 要看子孙里有没有输入框,scoped 的属性选择器改写会打乱它。 */\n.cfg-row:has(> .ctl > :is(.n-input, .n-select)) > .lb {\n flex: 1 1 0;\n}\n.cfg-row:has(> .ctl > :is(.n-input, .n-select)) > .ctl {\n flex: 1.8 1 0;\n}\n.cfg-row > .ctl > :is(.n-input, .n-select) {\n flex: 1;\n min-width: 0;\n}\n/* 窄档:设置行上下排,标签一行、控件占满一行(带开关的行保持左右一行,开关本来就小) */\n.cfg-row.nar:not(:has(> .ctl > .n-switch)) {\n flex-wrap: wrap;\n row-gap: 8px;\n}\n.cfg-row.nar:not(:has(> .ctl > .n-switch)) > .lb {\n flex: 1 1 100%;\n}\n.cfg-row.nar:not(:has(> .ctl > .n-switch)) > .ctl,\n.cfg-row.nar:has(> .ctl > :is(.n-input, .n-select)) > .ctl {\n flex: 1 1 100%;\n}\n.cfg-row.nar:not(:has(> .ctl > .n-switch)) > .ctl {\n justify-content: flex-start;\n}\n.cfg-row.nar > .ctl > .n-input-number {\n width: 120px;\n}\n.cfg-row.nar > .ctl > .n-slider {\n flex: 1;\n width: auto;\n}\n</style>\n"],"names":["props","__props","t","useI18n","draft","useConfigDraft","nar","useConfigLayout","changed","computed","_a","key","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_hoisted_2","_hoisted_3","_openBlock","_hoisted_4","_renderSlot","_ctx","_hoisted_5","_toDisplayString","$slots","_hoisted_6","_hoisted_7"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AASA,UAAMA,IAAQC,GAUR,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAQC,EAAA,GACR,EAAE,KAAAC,EAAA,IAAQC,EAAA,GACVC,IAAUC,EAAS,MAAA;;AAAM,cAAC,GAACC,IAAAV,EAAM,SAAN,QAAAU,EAAY,KAAK,CAAAC,MAAOP,EAAM,UAAU,MAAM,SAASO,CAAG;AAAA,KAAE;2BAI3FC,EAiBM,OAAA;AAAA,MAhBH,OAAKC,EAAA,CAAA,WAAA,EAAA,KAAgBZ,OAAG,KAAOA,EAAA,gBAAUA,EAAA,MAAI,SAAEO,EAAA,OAAO,KAAEM,EAAAR,CAAA,EAAA,CAAG,CAAA;AAAA,MAC3D,iBAAeL,EAAA,YAAY;AAAA,IAAA;MAE5Bc,EASM,OATNC,GASM;AAAA,QARJD,EAIO,QAJPE,GAIO;AAAA,UAHIT,EAAA,SAATU,EAAA,GAAAN,EAAmD,KAAnDO,CAAmD;UACnDC,EAAqCC,uBAArC,MAAqC;AAAA,gBAAfpB,EAAA,KAAK,GAAA,CAAA;AAAA,UAAA;UACfO,EAAA,cAAZI,EAAwE,QAAxEU,GAAwEC,EAAhCT,EAAAZ,CAAA,EAAC,mBAAA,CAAA,GAAA,CAAA;;QAE9BD,EAAA,QAAQuB,EAAAA,OAAO,aAA5BZ,EAEQ,SAAAa,GAAA;AAAA,UADNL,EAAmCC,sBAAnC,MAAmC;AAAA,gBAAdpB,EAAA,IAAI,GAAA,CAAA;AAAA,UAAA;;;MAG7Bc,EAEM,OAFNW,GAEM;AAAA,QADJN,EAAQC,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,MAAA;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
declare const __VLS_export: <T extends string>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
2
|
+
props: import('vue').PublicProps & __VLS_PrettifyLocal<({
|
|
3
|
+
options: readonly {
|
|
4
|
+
value: T;
|
|
5
|
+
label: string;
|
|
6
|
+
}[];
|
|
7
|
+
label?: string;
|
|
8
|
+
} & {
|
|
9
|
+
modelValue: T;
|
|
10
|
+
}) & {
|
|
11
|
+
"onUpdate:modelValue"?: ((value: T) => any) | undefined;
|
|
12
|
+
}> & (typeof globalThis extends {
|
|
13
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
14
|
+
} ? P : {});
|
|
15
|
+
expose: (exposed: {}) => void;
|
|
16
|
+
attrs: any;
|
|
17
|
+
slots: {};
|
|
18
|
+
emit: (event: "update:modelValue", value: T) => void;
|
|
19
|
+
}>) => import('vue').VNode & {
|
|
20
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
21
|
+
};
|
|
22
|
+
declare const _default: typeof __VLS_export;
|
|
23
|
+
export default _default;
|
|
24
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
25
|
+
[K in keyof T]: T[K];
|
|
26
|
+
} : {
|
|
27
|
+
[K in keyof T as K]: T[K];
|
|
28
|
+
}) & {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import o from "./CfgSegment2.vue.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import t from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const r = /* @__PURE__ */ t(o, [["__scopeId", "data-v-0e49f97e"]]);
|
|
5
|
+
export {
|
|
6
|
+
r as default
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=CfgSegment.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CfgSegment.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { defineComponent as p, useModel as f, openBlock as u, createElementBlock as i, normalizeClass as c, unref as g, Fragment as k, renderList as y, toDisplayString as b, mergeModels as h } from "vue";
|
|
2
|
+
import { useConfigLayout as w } from "../layoutMode.js";
|
|
3
|
+
const x = ["aria-label"], C = ["aria-checked", "tabindex", "data-value", "onClick"], D = /* @__PURE__ */ p({
|
|
4
|
+
__name: "CfgSegment",
|
|
5
|
+
props: /* @__PURE__ */ h({
|
|
6
|
+
options: {},
|
|
7
|
+
label: {}
|
|
8
|
+
}, {
|
|
9
|
+
modelValue: { required: !0 },
|
|
10
|
+
modelModifiers: {}
|
|
11
|
+
}),
|
|
12
|
+
emits: ["update:modelValue"],
|
|
13
|
+
setup(o) {
|
|
14
|
+
const l = o, t = f(o, "modelValue"), { nar: d } = w();
|
|
15
|
+
function v(a) {
|
|
16
|
+
var s;
|
|
17
|
+
const n = a.key === "ArrowRight" || a.key === "ArrowDown" ? 1 : a.key === "ArrowLeft" || a.key === "ArrowUp" ? -1 : 0;
|
|
18
|
+
if (!n) return;
|
|
19
|
+
a.preventDefault();
|
|
20
|
+
const e = l.options.findIndex((m) => m.value === t.value), r = l.options[(e + n + l.options.length) % l.options.length];
|
|
21
|
+
t.value = r.value, (s = a.currentTarget.querySelector(`[data-value="${r.value}"]`)) == null || s.focus();
|
|
22
|
+
}
|
|
23
|
+
return (a, n) => (u(), i("span", {
|
|
24
|
+
class: c(["seg", { large: g(d) }]),
|
|
25
|
+
role: "radiogroup",
|
|
26
|
+
"aria-label": o.label,
|
|
27
|
+
onKeydown: v
|
|
28
|
+
}, [
|
|
29
|
+
(u(!0), i(k, null, y(o.options, (e) => (u(), i("button", {
|
|
30
|
+
key: e.value,
|
|
31
|
+
type: "button",
|
|
32
|
+
role: "radio",
|
|
33
|
+
"aria-checked": t.value === e.value,
|
|
34
|
+
tabindex: t.value === e.value ? 0 : -1,
|
|
35
|
+
"data-value": e.value,
|
|
36
|
+
class: c({ on: t.value === e.value }),
|
|
37
|
+
onClick: (r) => t.value = e.value
|
|
38
|
+
}, b(e.label), 11, C))), 128))
|
|
39
|
+
], 42, x));
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
export {
|
|
43
|
+
D as default
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=CfgSegment2.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CfgSegment2.vue.js","sources":["../../../../../src/views/system/config/components/CfgSegment.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends string\">\n// 分段控件(仿 macOS):一组互斥选项,选中的一格浮起。语义上是 radiogroup,方向键切换。\n// 外观是 Radio 按钮款的分段控件(轨道 + 滑块);窄档放大到手指好点的高度。\nimport { useConfigLayout } from '../layoutMode'\n\nconst props = defineProps<{\n options: readonly { value: T; label: string }[]\n label?: string\n}>()\nconst model = defineModel<T>({ required: true })\nconst { nar } = useConfigLayout()\n\nfunction onKey(e: KeyboardEvent) {\n const step =\n e.key === 'ArrowRight' || e.key === 'ArrowDown'\n ? 1\n : e.key === 'ArrowLeft' || e.key === 'ArrowUp'\n ? -1\n : 0\n if (!step) return\n e.preventDefault()\n const i = props.options.findIndex(o => o.value === model.value)\n const next = props.options[(i + step + props.options.length) % props.options.length]\n model.value = next.value\n ;(e.currentTarget as HTMLElement)\n .querySelector<HTMLElement>(`[data-value=\"${next.value}\"]`)\n ?.focus()\n}\n</script>\n\n<template>\n <span :class=\"['seg', { large: nar }]\" role=\"radiogroup\" :aria-label=\"label\" @keydown=\"onKey\">\n <button\n v-for=\"o in options\"\n :key=\"o.value\"\n type=\"button\"\n role=\"radio\"\n :aria-checked=\"model === o.value\"\n :tabindex=\"model === o.value ? 0 : -1\"\n :data-value=\"o.value\"\n :class=\"{ on: model === o.value }\"\n @click=\"model = o.value\"\n >\n {{ o.label }}\n </button>\n </span>\n</template>\n\n<style scoped>\n.seg {\n display: inline-flex;\n flex: none;\n padding: 2px;\n border-radius: var(--radius-md);\n background: var(--cfg-seg-track, var(--fill));\n}\nbutton {\n padding: 0 12px;\n border: 0;\n border-radius: 6px;\n background: none;\n font: inherit;\n font-size: 13px;\n line-height: 24px;\n color: var(--text-2);\n cursor: pointer;\n white-space: nowrap;\n}\nbutton:hover {\n color: var(--text-1);\n}\nbutton.on {\n background: var(--cfg-seg-thumb, var(--color-bg-container-solid));\n color: var(--text-1);\n font-weight: 500;\n}\nbutton:focus-visible {\n outline: 2px solid var(--signal);\n outline-offset: 1px;\n}\n.seg.large button {\n padding: 0 16px;\n font-size: 14px;\n line-height: 36px;\n}\n</style>\n"],"names":["props","__props","model","_useModel","nar","useConfigLayout","onKey","e","step","i","o","next","_a","_createElementBlock","_unref","_Fragment","_renderList","_normalizeClass","$event","_toDisplayString","_hoisted_2"],"mappings":";;;;;;;;;;;;;AAKA,UAAMA,IAAQC,GAIRC,IAAQC,EAAcF,GAAA,YAAmB,GACzC,EAAE,KAAAG,EAAA,IAAQC,EAAA;AAEhB,aAASC,EAAMC,GAAkB;;AAC/B,YAAMC,IACJD,EAAE,QAAQ,gBAAgBA,EAAE,QAAQ,cAChC,IACAA,EAAE,QAAQ,eAAeA,EAAE,QAAQ,YACjC,KACA;AACR,UAAI,CAACC,EAAM;AACX,MAAAD,EAAE,eAAA;AACF,YAAME,IAAIT,EAAM,QAAQ,UAAU,OAAKU,EAAE,UAAUR,EAAM,KAAK,GACxDS,IAAOX,EAAM,SAASS,IAAID,IAAOR,EAAM,QAAQ,UAAUA,EAAM,QAAQ,MAAM;AACnF,MAAAE,EAAM,QAAQS,EAAK,QACjBC,IAAAL,EAAE,cACD,cAA2B,gBAAgBI,EAAK,KAAK,IAAI,MAD1D,QAAAC,EAEE;AAAA,IACN;2BAIEC,EAcO,QAAA;AAAA,MAdA,0BAAwBC,EAAAV,CAAA,EAAA,CAAG,CAAA;AAAA,MAAK,MAAK;AAAA,MAAc,cAAYH,EAAA;AAAA,MAAQ,WAASK;AAAA,IAAA;cACrFO,EAYSE,GAAA,MAAAC,EAXKf,EAAA,SAAO,CAAZS,YADTG,EAYS,UAAA;AAAA,QAVN,KAAKH,EAAE;AAAA,QACR,MAAK;AAAA,QACL,MAAK;AAAA,QACJ,gBAAcR,EAAA,UAAUQ,EAAE;AAAA,QAC1B,UAAUR,EAAA,UAAUQ,EAAE,QAAK,IAAA;AAAA,QAC3B,cAAYA,EAAE;AAAA,QACd,OAAKO,EAAA,EAAA,IAAQf,EAAA,UAAUQ,EAAE,OAAK;AAAA,QAC9B,SAAK,CAAAQ,MAAEhB,EAAA,QAAQQ,EAAE;AAAA,MAAA,GAEfS,EAAAT,EAAE,KAAK,GAAA,IAAAU,CAAA;;;;"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o from "./ConfigFormModal2.vue.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import r from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const f = /* @__PURE__ */ r(o, [["__scopeId", "data-v-c621e546"]]);
|
|
2
5
|
export {
|
|
3
6
|
f as default
|
|
4
7
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigFormModal.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfigFormModal.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|