@varlet/cli 1.27.20 → 2.0.0-alpha.1663742071515
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/LICENCE +1 -1
- package/lib/commands/commitLint.js +1 -1
- package/lib/commands/compile.d.ts +5 -3
- package/lib/commands/compile.js +2 -2
- package/lib/commands/create.d.ts +8 -3
- package/lib/commands/create.js +100 -51
- package/lib/commands/dev.d.ts +4 -2
- package/lib/commands/dev.js +3 -3
- package/lib/commands/gen.d.ts +8 -1
- package/lib/commands/gen.js +61 -33
- package/lib/commands/jest.js +11 -7
- package/lib/commands/release.d.ts +4 -2
- package/lib/commands/release.js +2 -2
- package/lib/commands/test.d.ts +7 -0
- package/lib/commands/test.js +26 -0
- package/lib/commands/useVite.d.ts +1 -0
- package/lib/commands/useVite.js +70 -0
- package/lib/commands/vite.d.ts +3 -0
- package/lib/commands/vite.js +69 -0
- package/lib/compiler/compileModule.js +9 -5
- package/lib/compiler/compileSFC.js +14 -11
- package/lib/compiler/compileScript.js +4 -12
- package/lib/compiler/compileStyle.d.ts +1 -1
- package/lib/compiler/compileStyle.js +7 -17
- package/lib/compiler/compileTypes.js +4 -7
- package/lib/config/jest.config.js +1 -0
- package/lib/config/vite.config.js +1 -1
- package/lib/config/vitest.config.d.ts +2 -0
- package/lib/config/vitest.config.js +28 -0
- package/lib/index.js +22 -3
- package/lib/shared/constant.js +1 -1
- package/lib/shared/logger.d.ts +1 -0
- package/lib/shared/logger.js +3 -0
- package/package.json +16 -12
- package/site/components/button/Button.vue +45 -23
- package/site/components/button/button.less +6 -6
- package/site/components/button/props.ts +10 -2
- package/site/components/cell/Cell.vue +24 -12
- package/site/components/cell/cell.less +11 -7
- package/site/components/cell/props.ts +2 -2
- package/site/components/code-example/CodeExample.vue +17 -23
- package/site/components/context/index.ts +4 -0
- package/site/components/context/lock.ts +30 -41
- package/site/components/icon/Icon.vue +16 -9
- package/site/components/loading/Loading.vue +54 -25
- package/site/components/loading/loading.less +120 -35
- package/site/components/loading/props.ts +7 -2
- package/site/components/popup/Popup.tsx +102 -0
- package/site/components/popup/index.ts +10 -0
- package/site/components/popup/popup.less +125 -0
- package/site/components/popup/props.ts +63 -0
- package/site/components/progress/Progress.vue +28 -24
- package/site/components/progress/progress.less +16 -13
- package/site/components/progress/props.ts +1 -1
- package/site/components/ripple/index.ts +28 -7
- package/site/components/ripple/ripple.less +3 -0
- package/site/components/snackbar/Snackbar.vue +10 -7
- package/site/components/snackbar/core.vue +37 -22
- package/site/components/snackbar/index.tsx +14 -14
- package/site/components/snackbar/props.ts +10 -7
- package/site/components/utils/components.ts +49 -1
- package/site/components/utils/elements.ts +17 -0
- package/site/mobile/App.vue +42 -42
- package/site/mobile/components/AppHome.vue +1 -1
- package/site/mobile/components/app-bar/AppBar.vue +17 -21
- package/site/mobile/components/app-bar/appBar.less +2 -1
- package/site/mobile/main.ts +6 -2
- package/site/pc/Layout.vue +93 -67
- package/site/pc/components/AnimationBox.vue +3 -15
- package/site/pc/components/AppHeader.vue +110 -97
- package/site/pc/components/AppMobile.vue +8 -2
- package/site/pc/components/AppSidebar.vue +19 -10
- package/site/pc/components/LogoAnimation.vue +29 -31
- package/site/pc/floating.ts +3 -3
- package/site/pc/main.ts +6 -0
- package/site/pc/pages/index/index.less +142 -197
- package/site/pc/pages/index/index.vue +65 -80
- package/site/pc/pages/index/locale/en-US.ts +1 -5
- package/site/pc/pages/index/locale/zh-CN.ts +1 -5
- package/site/useProgress.ts +14 -17
- package/site/utils.ts +32 -20
- package/template/create/__tests__/index.spec.ejs +8 -0
- package/template/create/docs/en-US.md +0 -0
- package/template/create/docs/zh-CN.md +0 -0
- package/template/create/example/index.ejs +15 -0
- package/template/create/example/locale/en-US.ts +3 -0
- package/{generators/config/i18n/sfc/src/button → template/create}/example/locale/index.ts +0 -0
- package/template/create/example/locale/zh-CN.ts +3 -0
- package/template/create/index.ejs +12 -0
- package/template/create/less.ejs +3 -0
- package/template/create/props.ts +1 -0
- package/template/create/tsx.ejs +13 -0
- package/template/create/vue.ejs +17 -0
- package/{generators → template/generators}/base/.prettierignore +0 -0
- package/{generators → template/generators}/base/.prettierrc +0 -0
- package/{generators → template/generators}/base/README.md +0 -0
- package/{generators → template/generators}/base/babel.config.js +0 -0
- package/{generators → template/generators}/base/public/highlight.css +0 -0
- package/{generators → template/generators}/base/public/logo.svg +0 -0
- package/{generators → template/generators}/base/shims/shims-md.d.ts +0 -0
- package/{generators → template/generators}/base/shims/shims-vue.d.ts +0 -0
- package/{generators → template/generators}/base/tsconfig.json +0 -0
- package/{generators → template/generators}/config/default/base/docs/home.zh-CN.md +0 -0
- package/{generators → template/generators}/config/default/base/package.json +1 -1
- package/{generators → template/generators}/config/default/base/types/basicComponent.d.ts +0 -0
- package/{generators → template/generators}/config/default/base/types/button.d.ts +0 -0
- package/{generators → template/generators}/config/default/base/types/index.d.ts +0 -0
- package/{generators → template/generators}/config/default/base/varlet.config.js +1 -1
- package/{generators → template/generators}/config/default/sfc/src/button/Button.vue +6 -6
- package/{generators → template/generators}/config/default/sfc/src/button/__tests__/index.spec.js +0 -0
- package/{generators/config/default/tsx → template/generators/config/default/sfc}/src/button/button.less +1 -1
- package/{generators → template/generators}/config/default/sfc/src/button/docs/zh-CN.md +0 -0
- package/{generators → template/generators}/config/default/sfc/src/button/example/BasicUse.vue +0 -0
- package/{generators → template/generators}/config/default/sfc/src/button/example/ModifyColor.vue +0 -0
- package/{generators → template/generators}/config/default/sfc/src/button/example/index.vue +2 -2
- package/{generators → template/generators}/config/default/sfc/src/button/index.ts +0 -0
- package/{generators → template/generators}/config/default/tsx/src/button/Button.tsx +11 -13
- package/{generators → template/generators}/config/default/tsx/src/button/__tests__/index.spec.js +0 -0
- package/{generators/config/i18n → template/generators/config/default}/tsx/src/button/button.less +1 -1
- package/{generators → template/generators}/config/default/tsx/src/button/docs/zh-CN.md +0 -0
- package/{generators → template/generators}/config/default/tsx/src/button/example/BasicUse.vue +0 -0
- package/{generators → template/generators}/config/default/tsx/src/button/example/ModifyColor.vue +0 -0
- package/{generators → template/generators}/config/default/tsx/src/button/example/index.vue +2 -2
- package/{generators → template/generators}/config/default/tsx/src/button/index.ts +0 -0
- package/{generators → template/generators}/config/i18n/base/docs/home.en-US.md +0 -0
- package/{generators → template/generators}/config/i18n/base/docs/home.zh-CN.md +0 -0
- package/{generators → template/generators}/config/i18n/base/package.json +1 -1
- package/{generators → template/generators}/config/i18n/base/types/basicComponent.d.ts +0 -0
- package/{generators → template/generators}/config/i18n/base/types/button.d.ts +0 -0
- package/{generators → template/generators}/config/i18n/base/types/index.d.ts +0 -0
- package/{generators → template/generators}/config/i18n/base/types/locale.d.ts +0 -0
- package/{generators → template/generators}/config/i18n/base/varlet.config.js +3 -3
- package/{generators → template/generators}/config/i18n/sfc/src/button/Button.vue +7 -7
- package/{generators → template/generators}/config/i18n/sfc/src/button/__tests__/index.spec.js +0 -0
- package/{generators → template/generators}/config/i18n/sfc/src/button/button.less +1 -1
- package/{generators → template/generators}/config/i18n/sfc/src/button/docs/en-US.md +0 -0
- package/{generators → template/generators}/config/i18n/sfc/src/button/docs/zh-CN.md +0 -0
- package/{generators → template/generators}/config/i18n/sfc/src/button/example/BasicUse.vue +0 -0
- package/{generators → template/generators}/config/i18n/sfc/src/button/example/ModifyColor.vue +0 -0
- package/{generators → template/generators}/config/i18n/sfc/src/button/example/index.vue +1 -1
- package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/button/example/locale/en-US.ts +1 -1
- package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/button/example/locale/index.ts +0 -0
- package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/button/example/locale/zh-CN.ts +1 -1
- package/{generators → template/generators}/config/i18n/sfc/src/button/index.ts +0 -0
- package/{generators → template/generators}/config/i18n/sfc/src/locale/__tests__/index.spec.js +0 -0
- package/{generators → template/generators}/config/i18n/sfc/src/locale/docs/en-US.md +0 -0
- package/{generators → template/generators}/config/i18n/sfc/src/locale/docs/zh-CN.md +0 -0
- package/{generators → template/generators}/config/i18n/sfc/src/locale/en-US.d.ts +0 -0
- package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/locale/en-US.ts +1 -1
- package/{generators → template/generators}/config/i18n/sfc/src/locale/index.ts +0 -0
- package/{generators → template/generators}/config/i18n/sfc/src/locale/zh-CN.d.ts +0 -0
- package/{generators/config/i18n/tsx → template/generators/config/i18n/sfc}/src/locale/zh-CN.ts +1 -1
- package/{generators → template/generators}/config/i18n/tsx/src/button/Button.tsx +12 -14
- package/{generators → template/generators}/config/i18n/tsx/src/button/__tests__/index.spec.js +0 -0
- package/{generators/config/default/sfc → template/generators/config/i18n/tsx}/src/button/button.less +1 -1
- package/{generators → template/generators}/config/i18n/tsx/src/button/docs/en-US.md +0 -0
- package/{generators → template/generators}/config/i18n/tsx/src/button/docs/zh-CN.md +0 -0
- package/{generators → template/generators}/config/i18n/tsx/src/button/example/BasicUse.vue +0 -0
- package/{generators → template/generators}/config/i18n/tsx/src/button/example/ModifyColor.vue +0 -0
- package/{generators → template/generators}/config/i18n/tsx/src/button/example/index.vue +1 -1
- package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/button/example/locale/en-US.ts +1 -1
- package/template/generators/config/i18n/tsx/src/button/example/locale/index.ts +23 -0
- package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/button/example/locale/zh-CN.ts +1 -1
- package/{generators → template/generators}/config/i18n/tsx/src/button/index.ts +0 -0
- package/{generators → template/generators}/config/i18n/tsx/src/locale/__tests__/index.spec.js +0 -0
- package/{generators → template/generators}/config/i18n/tsx/src/locale/docs/en-US.md +0 -0
- package/{generators → template/generators}/config/i18n/tsx/src/locale/docs/zh-CN.md +0 -0
- package/{generators → template/generators}/config/i18n/tsx/src/locale/en-US.d.ts +0 -0
- package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/locale/en-US.ts +1 -1
- package/{generators → template/generators}/config/i18n/tsx/src/locale/index.ts +0 -0
- package/{generators → template/generators}/config/i18n/tsx/src/locale/zh-CN.d.ts +0 -0
- package/{generators/config/i18n/sfc → template/generators/config/i18n/tsx}/src/locale/zh-CN.ts +1 -1
- package/varlet.default.config.js +137 -15
- package/site/mobile/components/styles/common.less +0 -64
- package/site/mobile/components/styles/elevation.less +0 -126
- package/site/mobile/components/styles/var.less +0 -27
|
@@ -1,44 +1,23 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import AnimationBox from '../../components/AnimationBox.vue'
|
|
3
3
|
import config from '@config'
|
|
4
|
-
import VarSiteButton from '../../../components/button'
|
|
5
|
-
import VarSiteIcon from '../../../components/icon'
|
|
6
4
|
import { get } from 'lodash-es'
|
|
7
|
-
import { ref, watch
|
|
5
|
+
import { ref, watch } from 'vue'
|
|
8
6
|
import { useRoute, useRouter } from 'vue-router'
|
|
9
|
-
import {
|
|
10
|
-
import { getPCLocationInfo,
|
|
11
|
-
import
|
|
12
|
-
import zh_CN from './locale/zh-CN'
|
|
13
|
-
import type { Ref, ComputedRef } from 'vue'
|
|
7
|
+
import { getBrowserTheme, setTheme, Theme } from "../../../utils";
|
|
8
|
+
import { getPCLocationInfo, watchTheme } from '@varlet/cli/site/utils'
|
|
9
|
+
import type { Ref } from 'vue'
|
|
14
10
|
|
|
15
11
|
const route = useRoute()
|
|
16
12
|
const router = useRouter()
|
|
17
|
-
const packs = {
|
|
18
|
-
'zh-CN': zh_CN,
|
|
19
|
-
'en-US': en_US,
|
|
20
|
-
} as any
|
|
21
13
|
|
|
22
14
|
const github = get(config, 'pc.header.github')
|
|
23
|
-
const
|
|
24
|
-
const currentThemes = ref(getBrowserThemes(themesKey))
|
|
15
|
+
const currentTheme = ref(getBrowserTheme())
|
|
25
16
|
const darkMode: Ref<boolean> = ref(get(config, 'pc.header.darkMode'))
|
|
26
17
|
const title: Ref<string> = ref(get(config, 'title'))
|
|
27
18
|
const language: Ref<string> = ref(get(config, 'defaultLanguage'))
|
|
28
19
|
const languages: Ref<Record<string, string>> = ref(get(config, 'pc.header.i18n'))
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
const description: ComputedRef<string> = computed(() => {
|
|
32
|
-
const { indexPage = {} } = get(config, 'pc')
|
|
33
|
-
|
|
34
|
-
return indexPage?.description?.[language.value] || pack.value.description
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
const started: ComputedRef<string> = computed(() => {
|
|
38
|
-
const { indexPage = {} } = get(config, 'pc')
|
|
39
|
-
|
|
40
|
-
return indexPage?.started?.[language.value] || pack.value.started
|
|
41
|
-
})
|
|
20
|
+
const indexPage: Ref<Record<string, any>> = get(config, 'pc.indexPage')
|
|
42
21
|
|
|
43
22
|
const goGithub = () => {
|
|
44
23
|
window.open(github)
|
|
@@ -48,18 +27,18 @@ const getStar = () => {
|
|
|
48
27
|
router.push(`/${language.value}/home`)
|
|
49
28
|
}
|
|
50
29
|
|
|
51
|
-
const
|
|
30
|
+
const getThemeMessage = () => ({ action: 'theme-change', from: 'pc', data: currentTheme.value })
|
|
52
31
|
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
window.localStorage.setItem(
|
|
32
|
+
const setCurrentTheme = (theme: Theme) => {
|
|
33
|
+
currentTheme.value = theme
|
|
34
|
+
setTheme(config, currentTheme.value)
|
|
35
|
+
window.localStorage.setItem(get(config, 'themeKey'), currentTheme.value)
|
|
57
36
|
}
|
|
58
37
|
|
|
59
38
|
const toggleTheme = () => {
|
|
60
|
-
|
|
61
|
-
window.postMessage(
|
|
62
|
-
|
|
39
|
+
setCurrentTheme(currentTheme.value === 'darkTheme' ? 'lightTheme' : 'darkTheme')
|
|
40
|
+
window.postMessage(getThemeMessage(), '*')
|
|
41
|
+
;(document.getElementById('mobile') as HTMLIFrameElement)?.contentWindow!.postMessage(getThemeMessage(), '*')
|
|
63
42
|
}
|
|
64
43
|
|
|
65
44
|
const setLocale = () => {
|
|
@@ -67,7 +46,6 @@ const setLocale = () => {
|
|
|
67
46
|
if (!lang) return
|
|
68
47
|
|
|
69
48
|
language.value = lang
|
|
70
|
-
pack.value = packs[lang]
|
|
71
49
|
document.title = get(config, 'pc.title')[lang] as string
|
|
72
50
|
}
|
|
73
51
|
|
|
@@ -81,61 +59,68 @@ const toggleLanguages = () => {
|
|
|
81
59
|
router.replace(replaceStr)
|
|
82
60
|
}
|
|
83
61
|
|
|
84
|
-
|
|
62
|
+
setTheme(config, currentTheme.value)
|
|
85
63
|
|
|
86
|
-
window.postMessage(
|
|
64
|
+
window.postMessage(getThemeMessage(), '*')
|
|
87
65
|
|
|
88
|
-
|
|
89
|
-
from === 'mobile' &&
|
|
66
|
+
watchTheme((theme, from) => {
|
|
67
|
+
from === 'mobile' && setCurrentTheme(theme)
|
|
90
68
|
})
|
|
91
69
|
|
|
92
70
|
watch(() => route.path, setLocale, { immediate: true })
|
|
93
71
|
</script>
|
|
94
72
|
|
|
95
73
|
<template>
|
|
96
|
-
<div class="
|
|
97
|
-
<div class="
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
<div class="
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
</
|
|
74
|
+
<div class="varlet-doc-index">
|
|
75
|
+
<div class="varlet-doc-index__layout">
|
|
76
|
+
<div class="varlet-doc-index__logo-container">
|
|
77
|
+
<div class="varlet-doc-index__logo-background-mask"></div>
|
|
78
|
+
<animation-box class="varlet-doc-index__logo" />
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<div class="varlet-doc-index__title">{{ title }}</div>
|
|
82
|
+
<div class="varlet-doc-index__description">{{ indexPage.description[language] }}</div>
|
|
83
|
+
<div class="varlet-doc-index__link-button-group">
|
|
84
|
+
<var-button class="varlet-doc-index__link-button" text outline @click="goGithub">
|
|
85
|
+
<var-icon name="github" size="24px" />
|
|
86
|
+
</var-button>
|
|
87
|
+
<var-button class="varlet-doc-index__link-button" text outline v-if="darkMode" @click="toggleTheme">
|
|
88
|
+
<var-icon size="24px" :name="currentTheme === 'lightTheme' ? 'white-balance-sunny' : 'weather-night'" />
|
|
89
|
+
</var-button>
|
|
90
|
+
<var-button
|
|
91
|
+
class="varlet-doc-index__link-button"
|
|
92
|
+
text
|
|
93
|
+
outline
|
|
94
|
+
v-if="languages"
|
|
95
|
+
@click="toggleLanguages"
|
|
96
|
+
>
|
|
97
|
+
<var-icon name="translate" size="24px" />
|
|
98
|
+
</var-button>
|
|
99
|
+
<var-button class="varlet-doc-index__link-button" type="primary" style="line-height: 1.2" @click="getStar">
|
|
100
|
+
<span class="varlet-doc-index__link-button-text">{{ indexPage.started[language] }}</span>
|
|
101
|
+
<var-icon style="transform: rotate(-90deg)" name="arrow-down" size="24px" />
|
|
102
|
+
</var-button>
|
|
103
|
+
</div>
|
|
121
104
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
<var-site-icon style="margin-left: 10px; transform: rotate(-90deg)" name="arrow-down" size="24px" />
|
|
127
|
-
</div>
|
|
128
|
-
</var-site-button>
|
|
129
|
-
<var-site-button
|
|
130
|
-
class="common-button extra-button margin-left"
|
|
131
|
-
text
|
|
132
|
-
v-if="languages"
|
|
133
|
-
@click="toggleLanguages"
|
|
134
|
-
>
|
|
135
|
-
<var-site-icon name="translate" size="24px" />
|
|
136
|
-
</var-site-button>
|
|
105
|
+
<div class="varlet-doc-index__features" v-if="indexPage.features">
|
|
106
|
+
<div class="varlet-doc-index__feature" v-for="feature in indexPage.features">
|
|
107
|
+
<div class="varlet-doc-index__feature-name">{{ feature.name[language] }}</div>
|
|
108
|
+
<div class="varlet-doc-index__feature-description">{{ feature.description[language] }}</div>
|
|
137
109
|
</div>
|
|
138
110
|
</div>
|
|
111
|
+
|
|
112
|
+
<div class="varlet-doc-index__contributors" v-if="indexPage.contributors">
|
|
113
|
+
<div class="varlet-doc-index__contributors-title">{{ indexPage.contributors.label[language] }}</div>
|
|
114
|
+
|
|
115
|
+
<a class="varlet-doc-index__contributors-link" :href="indexPage.contributors.link">
|
|
116
|
+
<img class="varlet-doc-index__contributors-image" :src="indexPage.contributors.image">
|
|
117
|
+
</a>
|
|
118
|
+
</div>
|
|
119
|
+
|
|
120
|
+
<div class="varlet-doc-index__footer">
|
|
121
|
+
<div class="varlet-doc-index__license">{{ indexPage.license[language] }}</div>
|
|
122
|
+
<div class="varlet-doc-index__copyright">{{ indexPage.copyright[language] }}</div>
|
|
123
|
+
</div>
|
|
139
124
|
</div>
|
|
140
125
|
</div>
|
|
141
126
|
</template>
|
|
@@ -1,5 +1 @@
|
|
|
1
|
-
|
|
2
|
-
started: 'GET STARTED',
|
|
3
|
-
description: 'Varlet is a Material design mobile component library developed based on Vue3, developed and maintained by partners in the community. ' +
|
|
4
|
-
'Support Typescript, import on demand, dark mode, theme customization, internationalization, and provide VSCode plugin to ensure a good development experience',
|
|
5
|
-
}
|
|
1
|
+
// this file used to generate route path ('/en-US/index')
|
package/site/useProgress.ts
CHANGED
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
import Progress from './components/progress'
|
|
2
|
-
import { reactive } from 'vue'
|
|
3
2
|
import config from '@config'
|
|
4
|
-
import {
|
|
3
|
+
import { reactive } from 'vue'
|
|
4
|
+
import { getBrowserTheme, mountInstance, Theme, watchTheme } from "./utils";
|
|
5
5
|
import { get } from 'lodash-es'
|
|
6
6
|
|
|
7
|
-
function getColor(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return get(config, `${themes ?? getBrowserThemes(themesKey)}.color-progress`)
|
|
7
|
+
function getColor(theme?: Theme) {
|
|
8
|
+
return get(config, `${theme ?? getBrowserTheme()}.color-progress`)
|
|
11
9
|
}
|
|
12
10
|
|
|
13
|
-
function getTrackColor(
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return get(config, `${themes ?? getBrowserThemes(themesKey)}.color-progress-track`)
|
|
11
|
+
function getTrackColor(theme?: Theme) {
|
|
12
|
+
return get(config, `${theme ?? getBrowserTheme()}.color-progress-track`)
|
|
17
13
|
}
|
|
18
14
|
|
|
19
15
|
export function useProgress() {
|
|
20
16
|
let timer: number
|
|
21
|
-
let
|
|
17
|
+
let currentTheme: Theme
|
|
18
|
+
|
|
22
19
|
const trackColor = getTrackColor()
|
|
23
20
|
const color = getColor()
|
|
24
21
|
|
|
@@ -36,10 +33,10 @@ export function useProgress() {
|
|
|
36
33
|
value: 0,
|
|
37
34
|
})
|
|
38
35
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
props.trackColor = getTrackColor(
|
|
42
|
-
props.color = props.value === 100 ? getTrackColor(
|
|
36
|
+
watchTheme((theme) => {
|
|
37
|
+
currentTheme = theme
|
|
38
|
+
props.trackColor = getTrackColor(theme)
|
|
39
|
+
props.color = props.value === 100 ? getTrackColor(theme) : getColor(theme)
|
|
43
40
|
}, false)
|
|
44
41
|
|
|
45
42
|
const changeValue = () => {
|
|
@@ -56,13 +53,13 @@ export function useProgress() {
|
|
|
56
53
|
|
|
57
54
|
const start = () => {
|
|
58
55
|
props.value = 0
|
|
59
|
-
setTimeout(() => (props.color = getColor(
|
|
56
|
+
setTimeout(() => (props.color = getColor(currentTheme)), 200)
|
|
60
57
|
changeValue()
|
|
61
58
|
}
|
|
62
59
|
|
|
63
60
|
const end = () => {
|
|
64
61
|
props.value = 100
|
|
65
|
-
setTimeout(() => (props.color = getTrackColor(
|
|
62
|
+
setTimeout(() => (props.color = getTrackColor(currentTheme)), 300)
|
|
66
63
|
window.clearTimeout(timer)
|
|
67
64
|
}
|
|
68
65
|
|
package/site/utils.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { onMounted, onUnmounted } from 'vue'
|
|
2
2
|
import { get } from 'lodash-es'
|
|
3
3
|
import { formatStyleVars } from './components/utils/elements'
|
|
4
|
+
import config from '@config'
|
|
4
5
|
|
|
5
6
|
export * from './components/utils/components'
|
|
6
7
|
export * from './components/utils/elements'
|
|
@@ -86,26 +87,26 @@ export function watchPlatform(cb: (platform: string) => void) {
|
|
|
86
87
|
handleHashchange()
|
|
87
88
|
}
|
|
88
89
|
|
|
89
|
-
export function
|
|
90
|
-
cb: (
|
|
90
|
+
export function watchTheme(
|
|
91
|
+
cb: (theme: Theme, from: 'pc' | 'mobile' | 'default' | 'playground') => void,
|
|
91
92
|
shouldUnmount = true
|
|
92
93
|
) {
|
|
93
|
-
const
|
|
94
|
+
const handleThemeChange = (event: MessageEvent) => {
|
|
94
95
|
const { data } = event
|
|
95
|
-
if (data.action === '
|
|
96
|
+
if (data.action === 'theme-change') {
|
|
96
97
|
cb(data.data, data.from)
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
window.addEventListener('message',
|
|
101
|
+
window.addEventListener('message', handleThemeChange)
|
|
101
102
|
|
|
102
103
|
if (shouldUnmount) {
|
|
103
104
|
onUnmounted(() => {
|
|
104
|
-
window.removeEventListener('message',
|
|
105
|
+
window.removeEventListener('message', handleThemeChange)
|
|
105
106
|
})
|
|
106
107
|
}
|
|
107
108
|
|
|
108
|
-
cb(
|
|
109
|
+
cb(getBrowserTheme(), 'default')
|
|
109
110
|
}
|
|
110
111
|
|
|
111
112
|
export function addRouteListener(cb: () => void) {
|
|
@@ -119,9 +120,11 @@ export function addRouteListener(cb: () => void) {
|
|
|
119
120
|
})
|
|
120
121
|
}
|
|
121
122
|
|
|
122
|
-
export
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
export type Theme = 'lightTheme' | 'darkTheme'
|
|
124
|
+
|
|
125
|
+
export function setTheme(config: Record<string, any>, name: Theme) {
|
|
126
|
+
const themeConfig = get(config, name, {})
|
|
127
|
+
const styleVars = Object.entries(themeConfig).reduce((styleVars, [key, value]) => {
|
|
125
128
|
styleVars[`--site-config-${key}`] = value as string
|
|
126
129
|
return styleVars
|
|
127
130
|
}, {} as StyleVars)
|
|
@@ -129,22 +132,31 @@ export function setThemes(config: Record<string, any>, name: 'themes' | 'darkThe
|
|
|
129
132
|
StyleProvider(styleVars)
|
|
130
133
|
}
|
|
131
134
|
|
|
132
|
-
export function
|
|
133
|
-
|
|
135
|
+
export function getBrowserTheme(): Theme {
|
|
136
|
+
const themeKey = get(config, 'themeKey')
|
|
137
|
+
const darkThemeConfig = get(config, 'darkTheme')
|
|
138
|
+
|
|
139
|
+
if (!darkThemeConfig) {
|
|
140
|
+
return 'lightTheme'
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const storageTheme = window.localStorage.getItem(themeKey) as Theme
|
|
144
|
+
|
|
145
|
+
if (!storageTheme) {
|
|
146
|
+
const preferTheme = window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'darkTheme' : 'lightTheme'
|
|
147
|
+
window.localStorage.setItem(themeKey, preferTheme)
|
|
134
148
|
|
|
135
|
-
|
|
136
|
-
currentThemes = window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'darkThemes' : 'themes'
|
|
137
|
-
window.localStorage.setItem(themes, currentThemes)
|
|
149
|
+
return preferTheme
|
|
138
150
|
}
|
|
139
151
|
|
|
140
|
-
return
|
|
152
|
+
return storageTheme
|
|
141
153
|
}
|
|
142
154
|
|
|
143
|
-
export function watchDarkMode(dark: StyleVars, cb?: (
|
|
144
|
-
|
|
145
|
-
StyleProvider(
|
|
155
|
+
export function watchDarkMode(dark: StyleVars, cb?: (theme: Theme) => void) {
|
|
156
|
+
watchTheme((theme) => {
|
|
157
|
+
StyleProvider(theme === 'darkTheme' ? dark : null)
|
|
146
158
|
|
|
147
|
-
cb?.(
|
|
159
|
+
cb?.(theme)
|
|
148
160
|
})
|
|
149
161
|
}
|
|
150
162
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import <%- bigCamelizeName %> from '..'
|
|
2
|
+
import { createApp } from 'vue'
|
|
3
|
+
import { mount } from '@vue/test-utils'
|
|
4
|
+
|
|
5
|
+
test('test <%- kebabCaseName %> use', () => {
|
|
6
|
+
const app = createApp({}).use(<%- bigCamelizeName %>)
|
|
7
|
+
expect(app.component(<%- bigCamelizeName %>.name)).toBeTruthy()
|
|
8
|
+
})
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import <%- bigCamelizeNamespace + bigCamelizeName %> from '../index'
|
|
3
|
+
import AppType from '@varlet/cli/site/mobile/components/AppType'
|
|
4
|
+
<% if (locale) { -%>
|
|
5
|
+
import { watchLang } from '@varlet/cli/site/utils'
|
|
6
|
+
import { use, pack } from './locale'
|
|
7
|
+
|
|
8
|
+
watchLang(use)
|
|
9
|
+
<% } -%>
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<template>
|
|
13
|
+
<app-type>Mobile phone example code</app-type>
|
|
14
|
+
<var-<%- kebabCaseName %>/>
|
|
15
|
+
</template>
|
|
File without changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Component entry, the folder where the file exists will be exposed to the user
|
|
2
|
+
|
|
3
|
+
import <%- bigCamelizeName %> from './<%- bigCamelizeName %>.vue'
|
|
4
|
+
import type { App } from 'vue'
|
|
5
|
+
|
|
6
|
+
<%- bigCamelizeName %>.install = function(app: App) {
|
|
7
|
+
app.component(<%- bigCamelizeName %>.name, <%- bigCamelizeName %>)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const _<%- bigCamelizeName %>Component = <%- bigCamelizeName %>
|
|
11
|
+
|
|
12
|
+
export default <%- bigCamelizeName %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const props = {}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineComponent } from 'vue'
|
|
2
|
+
import { props } from './props'
|
|
3
|
+
import './<%- kebabCaseName %>.less'
|
|
4
|
+
|
|
5
|
+
export default defineComponent({
|
|
6
|
+
name: '<%- bigCamelizeNamespace + bigCamelizeName %>',
|
|
7
|
+
props,
|
|
8
|
+
setup(props, { slots }) {
|
|
9
|
+
return () => {
|
|
10
|
+
return <div>{ slots.default?.() }</div>
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
})
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="var-<%- kebabCaseName %>"></div>
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script lang="ts">
|
|
6
|
+
import { defineComponent } from 'vue'
|
|
7
|
+
import { props } from './props'
|
|
8
|
+
|
|
9
|
+
export default defineComponent({
|
|
10
|
+
name: '<%- bigCamelizeNamespace + bigCamelizeName %>',
|
|
11
|
+
props
|
|
12
|
+
})
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<style lang="less">
|
|
16
|
+
@import './<%- kebabCaseName %>.less';
|
|
17
|
+
</style>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -26,7 +26,7 @@ module.exports = {
|
|
|
26
26
|
'color-pc-language-active-background': '#00968821',
|
|
27
27
|
'color-mobile-language-active': '#009688',
|
|
28
28
|
'color-mobile-language-active-background': '#00968821',
|
|
29
|
-
'color-mobile-cell-hover': '#009688'
|
|
29
|
+
'color-mobile-cell-hover': '#009688',
|
|
30
30
|
},
|
|
31
31
|
darkThemes: {
|
|
32
32
|
'color-body': '#121212',
|
|
@@ -10,21 +10,21 @@ export default defineComponent({
|
|
|
10
10
|
name: 'BButton',
|
|
11
11
|
props: {
|
|
12
12
|
color: {
|
|
13
|
-
type: String
|
|
13
|
+
type: String,
|
|
14
14
|
},
|
|
15
15
|
onClick: {
|
|
16
|
-
type: Function as PropType<(e: Event) => void
|
|
17
|
-
}
|
|
16
|
+
type: Function as PropType<(e: Event) => void>,
|
|
17
|
+
},
|
|
18
18
|
},
|
|
19
19
|
setup(props) {
|
|
20
20
|
const handleClick = (e: Event) => props.onClick?.(e)
|
|
21
21
|
return {
|
|
22
|
-
handleClick
|
|
22
|
+
handleClick,
|
|
23
23
|
}
|
|
24
|
-
}
|
|
24
|
+
},
|
|
25
25
|
})
|
|
26
26
|
</script>
|
|
27
27
|
|
|
28
28
|
<style lang="less">
|
|
29
|
-
@import
|
|
29
|
+
@import './button';
|
|
30
30
|
</style>
|
package/{generators → template/generators}/config/default/sfc/src/button/__tests__/index.spec.js
RENAMED
|
File without changes
|
|
File without changes
|
package/{generators → template/generators}/config/default/sfc/src/button/example/BasicUse.vue
RENAMED
|
File without changes
|
package/{generators → template/generators}/config/default/sfc/src/button/example/ModifyColor.vue
RENAMED
|
File without changes
|
|
File without changes
|
|
@@ -5,11 +5,11 @@ export default defineComponent({
|
|
|
5
5
|
name: 'BButton',
|
|
6
6
|
props: {
|
|
7
7
|
color: {
|
|
8
|
-
type: String
|
|
8
|
+
type: String,
|
|
9
9
|
},
|
|
10
10
|
onClick: {
|
|
11
|
-
type: Function as PropType<(e: Event) => void
|
|
12
|
-
}
|
|
11
|
+
type: Function as PropType<(e: Event) => void>,
|
|
12
|
+
},
|
|
13
13
|
},
|
|
14
14
|
setup(props, { slots }) {
|
|
15
15
|
const handleClick = (e: Event) => props.onClick?.(e)
|
|
@@ -17,15 +17,13 @@ export default defineComponent({
|
|
|
17
17
|
return () => {
|
|
18
18
|
const { color } = props
|
|
19
19
|
|
|
20
|
-
return
|
|
21
|
-
|
|
22
|
-
class="basic-button"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
</button>
|
|
28
|
-
</>
|
|
20
|
+
return (
|
|
21
|
+
<>
|
|
22
|
+
<button class="basic-button" style={{ background: color }} onClick={handleClick}>
|
|
23
|
+
{slots.default?.()}
|
|
24
|
+
</button>
|
|
25
|
+
</>
|
|
26
|
+
)
|
|
29
27
|
}
|
|
30
|
-
}
|
|
28
|
+
},
|
|
31
29
|
})
|
package/{generators → template/generators}/config/default/tsx/src/button/__tests__/index.spec.js
RENAMED
|
File without changes
|