From 9408e7eb764e913add4fb7cf14d7a2bb1da2dddc Mon Sep 17 00:00:00 2001
From: jeremywu <15975785+JeremyWuuuuu@users.noreply.github.com>
Date: Fri, 24 Sep 2021 01:19:18 +0800
Subject: [PATCH] feat(docs): document add changelog page (#3596)
* feat(docs): document add changelog page
- Add changelog and markdown component for changelog.md
- Add changelog page
- Add some locale for change log
- Fix a bug that caused ToC not working
* Add minimal width to changelog selector
* Add width to changelog selector
* fix selector width issue
---
.../crowdin/en-US/component/changelog.json | 5 +
.../crowdin/en-US/component/edit-link.json | 4 +
.../.vitepress/crowdin/en-US/pages/guide.json | 6 +-
docs/.vitepress/lang.js | 15 ++-
.../components/common/vp-markdown.vue | 33 +++++
.../doc-content/vp-table-of-content.vue | 2 +-
.../components/globals/vp-changelog.vue | 118 ++++++++++++++++++
.../vitepress/composables/edit-link.ts | 59 ++++++---
.../vitepress/composables/locale.ts | 9 ++
docs/.vitepress/vitepress/index.ts | 2 +
.../styles/content/hero-content.scss | 3 +
docs/.vitepress/vitepress/utils.ts | 13 ++
docs/en-US/guide/changelog.md | 18 +++
docs/examples/input/mixed-input.vue | 5 +-
docs/package.json | 2 +
pnpm-lock.yaml | 36 +++++-
16 files changed, 300 insertions(+), 30 deletions(-)
create mode 100644 docs/.vitepress/crowdin/en-US/component/changelog.json
create mode 100644 docs/.vitepress/crowdin/en-US/component/edit-link.json
create mode 100644 docs/.vitepress/vitepress/components/common/vp-markdown.vue
create mode 100644 docs/.vitepress/vitepress/components/globals/vp-changelog.vue
create mode 100644 docs/.vitepress/vitepress/composables/locale.ts
create mode 100644 docs/en-US/guide/changelog.md
diff --git a/docs/.vitepress/crowdin/en-US/component/changelog.json b/docs/.vitepress/crowdin/en-US/component/changelog.json
new file mode 100644
index 0000000000..bfd034a528
--- /dev/null
+++ b/docs/.vitepress/crowdin/en-US/component/changelog.json
@@ -0,0 +1,5 @@
+{
+ "published-by": "Published by",
+ "open-link": "Open link",
+ "select-version": "Select a version"
+}
diff --git a/docs/.vitepress/crowdin/en-US/component/edit-link.json b/docs/.vitepress/crowdin/en-US/component/edit-link.json
new file mode 100644
index 0000000000..6746413c8d
--- /dev/null
+++ b/docs/.vitepress/crowdin/en-US/component/edit-link.json
@@ -0,0 +1,4 @@
+{
+ "edit-on-github": "Edit this page on GitHub",
+ "edit-on-crowdin": "Edit this page on Crowdin"
+}
diff --git a/docs/.vitepress/crowdin/en-US/pages/guide.json b/docs/.vitepress/crowdin/en-US/pages/guide.json
index 2a1dd7f397..aa3f80a9dc 100644
--- a/docs/.vitepress/crowdin/en-US/pages/guide.json
+++ b/docs/.vitepress/crowdin/en-US/pages/guide.json
@@ -20,7 +20,11 @@
{ "text": "i18n", "link": "/guide/i18n" },
{ "text": "Migration", "link": "/guide/migration" },
{ "text": "Theming", "link": "/guide/theming" },
- { "text": "Built-in Transitions", "link": "/guide/transitions" }
+ { "text": "Built-in Transitions", "link": "/guide/transitions" },
+ {
+ "text": "Changelog",
+ "link": "/guide/changelog"
+ }
]
}
}
diff --git a/docs/.vitepress/lang.js b/docs/.vitepress/lang.js
index c4e4b2b124..5aa38a0c27 100644
--- a/docs/.vitepress/lang.js
+++ b/docs/.vitepress/lang.js
@@ -1,15 +1,24 @@
;(() => {
const supportedLangs = window.supportedLangs
+ let userPreferredLang = localStorage.getItem('preferred_lang')
- const userPreferredLang =
- localStorage.getItem('preferred_lang') || navigator.language
+ if (!userPreferredLang) {
+ const systemLang = navigator.language
+ localStorage.setItem('preferred_lang', systemLang)
+ userPreferredLang = systemLang
+ }
if (
supportedLangs.includes(userPreferredLang) &&
!location.pathname.startsWith(`/${userPreferredLang}`)
) {
- location.pathname = [`/${userPreferredLang}`]
+ const toPath = [`/${userPreferredLang}`]
.concat(location.pathname.split('/').slice(2))
.join('/')
+ location.pathname = toPath.endsWith('.html')
+ ? toPath
+ : toPath.endsWith('/')
+ ? toPath
+ : toPath.concat('/')
}
})()
diff --git a/docs/.vitepress/vitepress/components/common/vp-markdown.vue b/docs/.vitepress/vitepress/components/common/vp-markdown.vue
new file mode 100644
index 0000000000..f40ec0e705
--- /dev/null
+++ b/docs/.vitepress/vitepress/components/common/vp-markdown.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
diff --git a/docs/.vitepress/vitepress/components/doc-content/vp-table-of-content.vue b/docs/.vitepress/vitepress/components/doc-content/vp-table-of-content.vue
index 955b209321..81061450d5 100644
--- a/docs/.vitepress/vitepress/components/doc-content/vp-table-of-content.vue
+++ b/docs/.vitepress/vitepress/components/doc-content/vp-table-of-content.vue
@@ -22,7 +22,7 @@ useActiveSidebarLinks(container, marker)
{{ text }}
-
diff --git a/docs/.vitepress/vitepress/components/globals/vp-changelog.vue b/docs/.vitepress/vitepress/components/globals/vp-changelog.vue
new file mode 100644
index 0000000000..e8d793c74a
--- /dev/null
+++ b/docs/.vitepress/vitepress/components/globals/vp-changelog.vue
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
{{ changelog['select-version'] }}:
+
+
+ {{ release.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/.vitepress/vitepress/composables/edit-link.ts b/docs/.vitepress/vitepress/composables/edit-link.ts
index 441096aede..7945d4410f 100644
--- a/docs/.vitepress/vitepress/composables/edit-link.ts
+++ b/docs/.vitepress/vitepress/composables/edit-link.ts
@@ -1,30 +1,55 @@
import { computed } from 'vue'
import { useData } from 'vitepress'
-import { createGitHubUrl } from '../utils'
+import { useLang } from '../composables/lang'
+import { useLocale } from '../composables/locale'
+import { defaultLang } from '../constant'
+import { createGitHubUrl, createCrowdinUrl } from '../utils'
+import editLinkLocale from '../../i18n/component/edit-link.json'
export function useEditLink() {
const { page, theme, frontmatter } = useData()
+ const lang = useLang()
+ const editLink = useLocale(editLinkLocale)
+
+ const canEditSource = computed(() => {
+ return lang.value === defaultLang
+ })
+
const url = computed(() => {
- const {
- repo,
- docsDir = '',
- docsBranch = 'dev',
- docsRepo = repo,
- editLinks,
- } = theme.value
- const showEditLink =
- frontmatter.value.editLink != null
- ? frontmatter.value.editLink
- : editLinks
- const { relativePath } = page.value
- if (!showEditLink || !relativePath || !repo) {
- return null
+ if (canEditSource.value) {
+ const {
+ repo,
+ docsDir = '',
+ docsBranch = 'dev',
+ docsRepo = repo,
+ editLinks,
+ } = theme.value
+ const showEditLink =
+ frontmatter.value.editLink != null
+ ? frontmatter.value.editLink
+ : editLinks
+ const { relativePath } = page.value
+ if (!showEditLink || !relativePath || !repo) {
+ return null
+ }
+ return createGitHubUrl(
+ docsRepo,
+ docsDir,
+ docsBranch,
+ relativePath,
+ '',
+ ''
+ )
}
- return createGitHubUrl(docsRepo, docsDir, docsBranch, relativePath, '', '')
+
+ return createCrowdinUrl(lang.value)
})
const text = computed(() => {
- return theme.value.editLinkText || 'Edit this page'
+ return canEditSource.value
+ ? editLink.value['edit-on-github']
+ : editLink.value['edit-on-crowdin']
})
+
return {
url,
text,
diff --git a/docs/.vitepress/vitepress/composables/locale.ts b/docs/.vitepress/vitepress/composables/locale.ts
new file mode 100644
index 0000000000..68018a8894
--- /dev/null
+++ b/docs/.vitepress/vitepress/composables/locale.ts
@@ -0,0 +1,9 @@
+import { computed } from 'vue'
+import { useLang } from './lang'
+
+export const useLocale = (
+ localeJson: Record>
+) => {
+ const lang = useLang()
+ return computed(() => localeJson[lang.value])
+}
diff --git a/docs/.vitepress/vitepress/index.ts b/docs/.vitepress/vitepress/index.ts
index a90c0f00c2..4e14dc24d9 100644
--- a/docs/.vitepress/vitepress/index.ts
+++ b/docs/.vitepress/vitepress/index.ts
@@ -6,6 +6,7 @@ import './styles/app.scss'
import VPApp from './components/vp-app.vue'
import VPDemo from './components/vp-demo.vue'
+import Changelog from './components/globals/vp-changelog.vue'
import MainColor from './components/globals/main-color.vue'
import NeutralColor from './components/globals/neutral-color.vue'
import SecondaryColors from './components/globals/secondary-colors.vue'
@@ -19,4 +20,5 @@ export const globals = [
['NeutralColor', NeutralColor],
['SecondaryColors', SecondaryColors],
['IconList', IconList],
+ ['Changelog', Changelog],
]
diff --git a/docs/.vitepress/vitepress/styles/content/hero-content.scss b/docs/.vitepress/vitepress/styles/content/hero-content.scss
index e69de29bb2..2101b3f4cf 100644
--- a/docs/.vitepress/vitepress/styles/content/hero-content.scss
+++ b/docs/.vitepress/vitepress/styles/content/hero-content.scss
@@ -0,0 +1,3 @@
+.hero-content {
+ padding: 55px 40px 0;
+}
diff --git a/docs/.vitepress/vitepress/utils.ts b/docs/.vitepress/vitepress/utils.ts
index 72e102f00c..9cd3cd4d9f 100644
--- a/docs/.vitepress/vitepress/utils.ts
+++ b/docs/.vitepress/vitepress/utils.ts
@@ -4,6 +4,7 @@ import {
endingSlashRE,
isExternal,
} from 'vitepress/dist/client/theme-default/utils'
+
import type { Route } from 'vitepress'
export * from 'vitepress/dist/client/theme-default/utils'
@@ -56,3 +57,15 @@ export function createGitHubUrl(
}
export const isServer = typeof window === 'undefined'
+
+export function createCrowdinUrl(targetLang: string) {
+ let translateLang = ''
+ // for zh-CN zh-HK zh-TW, maybe later we will have cases like Chinese lang
+ // for now we just keep it as simple as possible.
+ if (targetLang.startsWith('zh-')) {
+ translateLang = targetLang.split('-').join('').toLocaleLowerCase()
+ } else {
+ translateLang = targetLang.split('-').shift().toLocaleLowerCase()
+ }
+ return `https://crowdin.com/translate/element-plus/all/en-${translateLang}`
+}
diff --git a/docs/en-US/guide/changelog.md b/docs/en-US/guide/changelog.md
new file mode 100644
index 0000000000..2e794f2ea8
--- /dev/null
+++ b/docs/en-US/guide/changelog.md
@@ -0,0 +1,18 @@
+---
+title: 'Changelog'
+---
+
+
+
+# Changelog
+
+Element Plus team uses **weekly** release strategy under normal circumstance, but critical bug fixes would require hotfix so the actual release number **could be** more than 1 per week.
+
+On this page you can only see the latest 30 records of our [changelog](https://github.com/element-plus/element-plus/blob/dev/CHANGELOG.en-US.md).
+
+
diff --git a/docs/examples/input/mixed-input.vue b/docs/examples/input/mixed-input.vue
index 1859b8e809..d4cd0f86fe 100644
--- a/docs/examples/input/mixed-input.vue
+++ b/docs/examples/input/mixed-input.vue
@@ -16,7 +16,7 @@
class="input-with-select"
>
-
+
@@ -44,9 +44,6 @@ export default defineComponent({