rayyy-vue-table-components 1.3.19 → 1.3.21
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/dist/index.es.js +3609 -3584
- package/dist/index.umd.js +20 -20
- package/dist/src/index.d.ts +1 -1
- package/dist/src/plugins/i18n.d.ts +2 -2
- package/dist/src/utils/languageSwitcher.d.ts +34 -10
- package/package.json +1 -1
- package/src/components/LanguageSwitcher.vue +5 -5
- package/src/utils/languageSwitcher.ts +77 -14
package/dist/src/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { default as TitleTable } from './components/tables/TitleTable.vue';
|
|
|
8
8
|
import { default as SearchBar } from './components/items/SearchBar.vue';
|
|
9
9
|
export * from './types';
|
|
10
10
|
export * from './utils/tableHelper';
|
|
11
|
-
export { switchLanguage, getCurrentLocale, availableLocales, getLanguageName, initLanguageSwitcher, type LocaleCode } from './utils/languageSwitcher';
|
|
11
|
+
export { switchLanguage, getCurrentLocale, availableLocales, getLanguageName, initLanguageSwitcher, configureLanguageSwitcher, type LocaleCode, type LanguageConfig, type ExternalI18nHandler } from './utils/languageSwitcher';
|
|
12
12
|
export { BaseTable, BaseBtn, BaseInput, BaseDialog, SortTable, TitleTable, SearchBar };
|
|
13
13
|
export type { BaseTableProps, BaseTableEmits, BaseTableInstance, BaseBtnProps, BaseBtnEmits, BaseBtnInstance, BaseDialogProps, BaseDialogEmits, BaseDialogInstance, PluginOptions, VueTableComponentsPlugin, } from './types/components';
|
|
14
14
|
export * from './components';
|
|
@@ -73,7 +73,7 @@ export declare const i18n: import('vue-i18n').I18n<{
|
|
|
73
73
|
export declare const switchLanguage: (locale: "zh-TW" | "en-US") => void;
|
|
74
74
|
export declare const getCurrentLocale: () => "zh-TW" | "en-US";
|
|
75
75
|
export declare const availableLocales: {
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
value: string;
|
|
77
|
+
label: string;
|
|
78
78
|
}[];
|
|
79
79
|
export declare const initLocale: () => void;
|
|
@@ -2,15 +2,39 @@
|
|
|
2
2
|
* 語言切換工具
|
|
3
3
|
* 供外部專案使用的語言切換功能
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
readonly
|
|
7
|
-
readonly
|
|
5
|
+
declare const defaultLocales: readonly [{
|
|
6
|
+
readonly value: "zh-TW";
|
|
7
|
+
readonly label: "繁體中文";
|
|
8
8
|
}, {
|
|
9
|
-
readonly
|
|
10
|
-
readonly
|
|
9
|
+
readonly value: "en-US";
|
|
10
|
+
readonly label: "English";
|
|
11
11
|
}];
|
|
12
|
-
export type LocaleCode = typeof
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
export type LocaleCode = typeof defaultLocales[number]['value'];
|
|
13
|
+
export interface ExternalI18nHandler {
|
|
14
|
+
switchLanguage: (locale: string) => void;
|
|
15
|
+
getCurrentLocale: () => string;
|
|
16
|
+
availableLocales: () => Array<{
|
|
17
|
+
value: string;
|
|
18
|
+
label: string;
|
|
19
|
+
}>;
|
|
20
|
+
getLanguageName?: (locale: string) => string;
|
|
21
|
+
}
|
|
22
|
+
export interface LanguageConfig {
|
|
23
|
+
locales: Array<{
|
|
24
|
+
value: string;
|
|
25
|
+
label: string;
|
|
26
|
+
}>;
|
|
27
|
+
defaultLocale: string;
|
|
28
|
+
storageKey?: string;
|
|
29
|
+
externalHandler?: ExternalI18nHandler;
|
|
30
|
+
}
|
|
31
|
+
export declare const availableLocales: () => {
|
|
32
|
+
value: string;
|
|
33
|
+
label: string;
|
|
34
|
+
}[];
|
|
35
|
+
export declare const configureLanguageSwitcher: (config: Partial<LanguageConfig>) => void;
|
|
36
|
+
export declare const switchLanguage: (locale: string) => void;
|
|
37
|
+
export declare const getCurrentLocale: () => string;
|
|
38
|
+
export declare const getLanguageName: (locale: string) => string;
|
|
39
|
+
export declare const initLanguageSwitcher: () => string;
|
|
40
|
+
export {};
|
package/package.json
CHANGED
|
@@ -12,8 +12,8 @@ const handleLanguageChange = (newLocale: "zh-TW" | "en-US") => {
|
|
|
12
12
|
|
|
13
13
|
// 當前語言顯示名稱
|
|
14
14
|
const currentLanguageName = computed(() => {
|
|
15
|
-
const currentLocale = availableLocales.find(l => l.
|
|
16
|
-
return currentLocale?.
|
|
15
|
+
const currentLocale = availableLocales.find(l => l.value === locale.value)
|
|
16
|
+
return currentLocale?.label || '繁體中文'
|
|
17
17
|
})
|
|
18
18
|
</script>
|
|
19
19
|
|
|
@@ -38,10 +38,10 @@ const currentLanguageName = computed(() => {
|
|
|
38
38
|
<el-dropdown-menu>
|
|
39
39
|
<el-dropdown-item
|
|
40
40
|
v-for="item in availableLocales"
|
|
41
|
-
:key="item.
|
|
42
|
-
:command="item.
|
|
41
|
+
:key="item.value"
|
|
42
|
+
:command="item.value"
|
|
43
43
|
>
|
|
44
|
-
{{ item.
|
|
44
|
+
{{ item.label }}
|
|
45
45
|
</el-dropdown-item>
|
|
46
46
|
</el-dropdown-menu>
|
|
47
47
|
</template>
|
|
@@ -3,18 +3,71 @@
|
|
|
3
3
|
* 供外部專案使用的語言切換功能
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
{
|
|
9
|
-
{
|
|
6
|
+
// 預設語言列表
|
|
7
|
+
const defaultLocales = [
|
|
8
|
+
{ value: 'zh-TW', label: '繁體中文' },
|
|
9
|
+
{ value: 'en-US', label: 'English' },
|
|
10
10
|
] as const
|
|
11
11
|
|
|
12
|
-
export type LocaleCode = typeof
|
|
12
|
+
export type LocaleCode = typeof defaultLocales[number]['value']
|
|
13
|
+
|
|
14
|
+
// 外部 i18n 切換函數接口
|
|
15
|
+
export interface ExternalI18nHandler {
|
|
16
|
+
switchLanguage: (locale: string) => void
|
|
17
|
+
getCurrentLocale: () => string
|
|
18
|
+
availableLocales: () => Array<{ value: string; label: string }>
|
|
19
|
+
getLanguageName?: (locale: string) => string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// 語言配置接口
|
|
23
|
+
export interface LanguageConfig {
|
|
24
|
+
locales: Array<{ value: string; label: string }>
|
|
25
|
+
defaultLocale: string
|
|
26
|
+
storageKey?: string
|
|
27
|
+
externalHandler?: ExternalI18nHandler
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// 全域語言配置
|
|
31
|
+
let languageConfig: LanguageConfig = {
|
|
32
|
+
locales: [...defaultLocales],
|
|
33
|
+
defaultLocale: 'zh-TW',
|
|
34
|
+
storageKey: 'locale'
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// 可用的語言列表(動態)
|
|
38
|
+
export const availableLocales = () => {
|
|
39
|
+
// 如果有外部處理器,使用外部處理器
|
|
40
|
+
if (languageConfig.externalHandler) {
|
|
41
|
+
return languageConfig.externalHandler.availableLocales()
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return languageConfig.locales
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// 配置語言切換器
|
|
48
|
+
export const configureLanguageSwitcher = (config: Partial<LanguageConfig>) => {
|
|
49
|
+
languageConfig = {
|
|
50
|
+
...languageConfig,
|
|
51
|
+
...config
|
|
52
|
+
}
|
|
53
|
+
}
|
|
13
54
|
|
|
14
55
|
// 語言切換功能
|
|
15
|
-
export const switchLanguage = (locale:
|
|
56
|
+
export const switchLanguage = (locale: string) => {
|
|
57
|
+
// 如果有外部處理器,使用外部處理器
|
|
58
|
+
if (languageConfig.externalHandler) {
|
|
59
|
+
languageConfig.externalHandler.switchLanguage(locale)
|
|
60
|
+
return
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// 檢查語言是否在配置中
|
|
64
|
+
if (!languageConfig.locales.some(l => l.value === locale)) {
|
|
65
|
+
console.warn(`Language ${locale} is not configured`)
|
|
66
|
+
return
|
|
67
|
+
}
|
|
68
|
+
|
|
16
69
|
// 保存到 localStorage
|
|
17
|
-
localStorage.setItem(
|
|
70
|
+
localStorage.setItem(languageConfig.storageKey!, locale)
|
|
18
71
|
|
|
19
72
|
// 觸發自定義事件,讓外部專案監聽
|
|
20
73
|
window.dispatchEvent(new CustomEvent('languageChanged', {
|
|
@@ -23,17 +76,27 @@ export const switchLanguage = (locale: LocaleCode) => {
|
|
|
23
76
|
}
|
|
24
77
|
|
|
25
78
|
// 獲取當前語言
|
|
26
|
-
export const getCurrentLocale = ():
|
|
27
|
-
|
|
28
|
-
|
|
79
|
+
export const getCurrentLocale = (): string => {
|
|
80
|
+
// 如果有外部處理器,使用外部處理器
|
|
81
|
+
if (languageConfig.externalHandler) {
|
|
82
|
+
return languageConfig.externalHandler.getCurrentLocale()
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const savedLocale = localStorage.getItem(languageConfig.storageKey!)
|
|
86
|
+
return savedLocale && languageConfig.locales.some(l => l.value === savedLocale)
|
|
29
87
|
? savedLocale
|
|
30
|
-
:
|
|
88
|
+
: languageConfig.defaultLocale
|
|
31
89
|
}
|
|
32
90
|
|
|
33
91
|
// 獲取語言顯示名稱
|
|
34
|
-
export const getLanguageName = (locale:
|
|
35
|
-
|
|
36
|
-
|
|
92
|
+
export const getLanguageName = (locale: string): string => {
|
|
93
|
+
// 如果有外部處理器且提供此功能
|
|
94
|
+
if (languageConfig.externalHandler?.getLanguageName) {
|
|
95
|
+
return languageConfig.externalHandler.getLanguageName(locale)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const language = languageConfig.locales.find(l => l.value === locale)
|
|
99
|
+
return language?.label || languageConfig.locales[0]?.label || 'Unknown'
|
|
37
100
|
}
|
|
38
101
|
|
|
39
102
|
// 初始化語言設定(供外部專案調用)
|