el-plus 0.0.57 → 0.0.59
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/CHANGELOG.md +12 -0
- package/dist/index.full.js +93 -279
- package/dist/index.full.min.js +2 -1
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +2 -1
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +93 -279
- package/es/components/buttons/index.d.ts +6 -6
- package/es/components/buttons/src/buttons-vue.d.ts +2 -2
- package/es/components/date-picker-range/index.d.ts +3 -3
- package/es/components/date-picker-range/src/date-picker-range.vue.d.ts +1 -1
- package/es/components/input/index.d.ts +3 -3
- package/es/components/input/src/input.vue.d.ts +1 -1
- package/es/components/search-list-page/index.d.ts +30 -30
- package/es/components/search-list-page/src/search-list-page.vue.d.ts +10 -10
- package/es/components/search-list-page/src/use-search-list-page.d.ts +10 -10
- package/es/components/table/index.d.ts +6 -6
- package/es/components/table/src/table.vue.d.ts +2 -2
- package/es/components/table/src/use-table.d.ts +2 -2
- package/es/components/uni-vue/src/use-uni-vue.mjs +66 -20
- package/es/components/uni-vue/src/use-uni-vue.mjs.map +1 -1
- package/es/hooks/use-locale.mjs +20 -50
- package/es/hooks/use-locale.mjs.map +1 -1
- package/es/hooks/use-navigation.mjs +6 -6
- package/es/hooks/use-navigation.mjs.map +1 -1
- package/es/package.json.mjs +1 -1
- package/es/types/global.d.ts +1 -0
- package/lib/components/buttons/index.d.ts +6 -6
- package/lib/components/buttons/src/buttons-vue.d.ts +2 -2
- package/lib/components/date-picker-range/index.d.ts +3 -3
- package/lib/components/date-picker-range/src/date-picker-range.vue.d.ts +1 -1
- package/lib/components/input/index.d.ts +3 -3
- package/lib/components/input/src/input.vue.d.ts +1 -1
- package/lib/components/search-list-page/index.d.ts +30 -30
- package/lib/components/search-list-page/src/search-list-page.vue.d.ts +10 -10
- package/lib/components/search-list-page/src/use-search-list-page.d.ts +10 -10
- package/lib/components/table/index.d.ts +6 -6
- package/lib/components/table/src/table.vue.d.ts +2 -2
- package/lib/components/table/src/use-table.d.ts +2 -2
- package/lib/components/uni-vue/src/use-uni-vue.js +65 -19
- package/lib/components/uni-vue/src/use-uni-vue.js.map +1 -1
- package/lib/hooks/use-locale.js +20 -50
- package/lib/hooks/use-locale.js.map +1 -1
- package/lib/hooks/use-navigation.js +6 -6
- package/lib/hooks/use-navigation.js.map +1 -1
- package/lib/package.json.js +1 -1
- package/lib/types/global.d.ts +1 -0
- package/package.json +1 -1
|
@@ -40,8 +40,12 @@ const useUniVue = (props) => {
|
|
|
40
40
|
Object.keys(attrs).forEach((key) => {
|
|
41
41
|
if (key.startsWith("on")) {
|
|
42
42
|
let eventName = key.slice(2);
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
if (eventName.startsWith("Update:")) {
|
|
44
|
+
eventName = "update:" + eventName.slice(7);
|
|
45
|
+
} else {
|
|
46
|
+
eventName = eventName.replace(/([A-Z])/g, "-$1").toLowerCase();
|
|
47
|
+
eventName = eventName.slice(1);
|
|
48
|
+
}
|
|
45
49
|
events[eventName] = attrs[key];
|
|
46
50
|
} else {
|
|
47
51
|
_props[key] = attrs[key];
|
|
@@ -73,7 +77,17 @@ const useUniVue = (props) => {
|
|
|
73
77
|
return "";
|
|
74
78
|
}
|
|
75
79
|
};
|
|
76
|
-
const
|
|
80
|
+
const loadStaticJsResource = async () => {
|
|
81
|
+
const promises = [];
|
|
82
|
+
if (!isBpm && !window.ElementUIComponents) {
|
|
83
|
+
await new Promise((resolve, reject) => {
|
|
84
|
+
const script = document.createElement("script");
|
|
85
|
+
script.src = "/element-ui.js";
|
|
86
|
+
script.onload = resolve;
|
|
87
|
+
script.onerror = reject;
|
|
88
|
+
document.body.appendChild(script);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
77
91
|
let globalName;
|
|
78
92
|
if (isAddress) {
|
|
79
93
|
globalName = "hxAddress";
|
|
@@ -81,24 +95,39 @@ const useUniVue = (props) => {
|
|
|
81
95
|
if (isBpm) {
|
|
82
96
|
globalName = "index";
|
|
83
97
|
}
|
|
84
|
-
if (window[globalName])
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
98
|
+
if (globalName && !window[globalName]) {
|
|
99
|
+
promises.push(
|
|
100
|
+
new Promise((resolve, reject) => {
|
|
101
|
+
const script = document.createElement("script");
|
|
102
|
+
script.src = getStaticJsUrl();
|
|
103
|
+
script.onload = () => resolve();
|
|
104
|
+
script.onerror = reject;
|
|
105
|
+
document.body.appendChild(script);
|
|
106
|
+
})
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
return Promise.all(promises);
|
|
96
110
|
};
|
|
97
111
|
const loadStaticCssResource = async () => {
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
112
|
+
const cssPromises = [];
|
|
113
|
+
if (!isBpm) {
|
|
114
|
+
cssPromises.push(
|
|
115
|
+
index.http.request("/element-ui.css", {
|
|
116
|
+
responseReturn: "raw",
|
|
117
|
+
baseURL: ""
|
|
118
|
+
}).then((res) => res.data)
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
const staticCssUrl = getStaticCssUrl();
|
|
122
|
+
if (staticCssUrl) {
|
|
123
|
+
cssPromises.push(
|
|
124
|
+
index.http.request(staticCssUrl, {
|
|
125
|
+
responseReturn: "raw"
|
|
126
|
+
}).then((res) => res.data)
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
const cssContents = await Promise.all(cssPromises);
|
|
130
|
+
return cssContents.join("\n");
|
|
102
131
|
};
|
|
103
132
|
let instance;
|
|
104
133
|
const setupInstance = async () => {
|
|
@@ -132,6 +161,23 @@ const useUniVue = (props) => {
|
|
|
132
161
|
render: (h) => h(props.name, prepareVueAttributes())
|
|
133
162
|
});
|
|
134
163
|
};
|
|
164
|
+
vue.watch(
|
|
165
|
+
() => attrs,
|
|
166
|
+
() => {
|
|
167
|
+
if (instance) {
|
|
168
|
+
const { props: newProps, on: newEvents } = prepareVueAttributes();
|
|
169
|
+
Object.keys(newProps).forEach((key) => {
|
|
170
|
+
instance.$props[key] = newProps[key];
|
|
171
|
+
});
|
|
172
|
+
Object.keys(newEvents).forEach((eventName) => {
|
|
173
|
+
instance.$off(eventName);
|
|
174
|
+
instance.$on(eventName, newEvents[eventName]);
|
|
175
|
+
});
|
|
176
|
+
instance.$forceUpdate();
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{ deep: true }
|
|
180
|
+
);
|
|
135
181
|
vue.onMounted(() => {
|
|
136
182
|
setupInstance();
|
|
137
183
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-uni-vue.js","sources":["../../../../../../packages/components/uni-vue/src/use-uni-vue.ts"],"sourcesContent":["import { onMounted, ref, useAttrs, useTemplateRef } from 'vue'\nimport { http } from '@el-plus/utils/http'\nimport Vue2 from 'vue2'\nimport VueRouter3 from 'vue-router3'\nimport { componentType } from './uni-vue'\nimport axios from 'axios'\nimport { ElMessage, ElLoading } from 'element-plus'\nexport const useUniVue = (props) => {\n const uniVue = useTemplateRef<HTMLElement>('uniVue')\n const { type } = props\n const loading = ref(true)\n const isAddress = type === 'address'\n const isBpm = type === 'bpm'\n // 是否需要加载静态资源\n const isLoadStatic = componentType.indexOf(type) > -1\n const attrs = useAttrs()\n const setupWindow = () => {\n Vue2.use(VueRouter3)\n if (!window.Vue) {\n window.Vue = Vue2\n }\n // 地址\n if (isAddress) {\n if (!window.axios) {\n window.axios = axios\n }\n if (!window.ElementUI) {\n window.ElementUI = {\n Message: ElMessage,\n Loading: ElLoading,\n }\n }\n }\n }\n setupWindow()\n const prepareVueAttributes = () => {\n const events = {}\n const _props = {}\n Object.keys(attrs).forEach((key) => {\n // 如果key以on开头,就是事件,转换为下划线\n if (key.startsWith('on')) {\n let eventName = key.slice(2) // 去掉 'on' 前缀\n // 将驼峰命名转换为下划线命名\n eventName = eventName.replace(/([A-Z])/g, '-$1').toLowerCase()\n // 删除第一位的-\n eventName = eventName.slice(1)\n events[eventName] = attrs[key]\n } else {\n _props[key] = attrs[key]\n }\n })\n return {\n on: events,\n props: _props,\n }\n }\n\n const cdn = '//j01.hongxinshop.com/'\n const getStaticJsUrl = () => {\n switch (type) {\n case 'bpm':\n return `${cdn}bpm-common/common/index.umd.min.js`\n case 'address':\n return `${cdn}address/static/hx-address-full.js`\n default:\n return ''\n }\n }\n const getStaticCssUrl = () => {\n switch (type) {\n case 'bpm':\n return `/bpm-common/common/index.css`\n case 'address':\n return `/address/static/hx-address.css`\n default:\n return ''\n }\n }\n const hasLoadStaticJsResource = () => {\n let globalName\n if (isAddress) {\n globalName = 'hxAddress'\n }\n if (isBpm) {\n globalName = 'index'\n }\n if (window[globalName]) return true\n return false\n }\n const loadStaticJsResource = async () => {\n return new Promise((resolve, reject) => {\n if (hasLoadStaticJsResource()) return resolve('')\n const script = document.createElement('script')\n script.src = getStaticJsUrl()\n script.onload = resolve\n script.onerror = reject\n document.body.appendChild(script)\n })\n }\n const loadStaticCssResource = async () => {\n const { data: css } = await http.request<string>(getStaticCssUrl(), {\n responseReturn: 'raw',\n })\n return css\n }\n let instance\n const setupInstance = async () => {\n if (instance) {\n return\n }\n // if (import.meta.hot) return // 每次热更新都会执行,在这里阻止,防止每次热更新页面都会重复插入组件\n const el = uniVue.value // 选择一个宿主元素\n const shadowRoot = el!.attachShadow({ mode: 'open' }) // 创建一个开放模式的 shadow root\n const container = document.createElement('div')\n if (isLoadStatic) {\n try {\n loading.value = true\n const [_res1, css] = await Promise.all([\n loadStaticJsResource(),\n loadStaticCssResource(),\n ])\n const style = document.createElement('style')\n style.textContent = css\n shadowRoot.appendChild(style)\n } catch (error) {\n console.log(error)\n } finally {\n loading.value = false\n }\n }\n shadowRoot.appendChild(container)\n instance = new Vue2({\n el: container,\n // @ts-expect-error 缺少类型定义\n router: new VueRouter3(),\n render: (h) => h(props.name, prepareVueAttributes()),\n })\n }\n onMounted(() => {\n setupInstance()\n })\n return {\n loading,\n }\n}\n"],"names":["uniVue","useTemplateRef","ref","componentType","useAttrs","ElMessage","ElLoading","http","onMounted"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-uni-vue.js","sources":["../../../../../../packages/components/uni-vue/src/use-uni-vue.ts"],"sourcesContent":["import { onMounted, ref, useAttrs, useTemplateRef, watch } from 'vue'\nimport { http } from '@el-plus/utils/http'\nimport Vue2 from 'vue2'\nimport VueRouter3 from 'vue-router3'\nimport { componentType } from './uni-vue'\nimport axios from 'axios'\nimport { ElMessage, ElLoading } from 'element-plus'\nexport const useUniVue = (props) => {\n const uniVue = useTemplateRef<HTMLElement>('uniVue')\n const { type } = props\n const loading = ref(true)\n const isAddress = type === 'address'\n const isBpm = type === 'bpm'\n // 是否需要加载静态资源\n const isLoadStatic = componentType.indexOf(type) > -1\n const attrs = useAttrs()\n const setupWindow = () => {\n Vue2.use(VueRouter3)\n if (!window.Vue) {\n window.Vue = Vue2\n }\n // 地址\n if (isAddress) {\n if (!window.axios) {\n window.axios = axios\n }\n if (!window.ElementUI) {\n window.ElementUI = {\n Message: ElMessage,\n Loading: ElLoading,\n }\n }\n }\n }\n setupWindow()\n const prepareVueAttributes = () => {\n const events = {}\n const _props = {}\n Object.keys(attrs).forEach((key) => {\n if (key.startsWith('on')) {\n let eventName = key.slice(2) // 去掉 'on' 前缀\n if (eventName.startsWith('Update:')) {\n // 处理 v-model:xxx 事件,转换为 update:xxx\n // 例如:onUpdate:modelValue -> update:modelValue\n eventName = 'update:' + eventName.slice(7)\n } else {\n // 将驼峰命名转换为短横线命名\n // 例如:onClick -> click\n eventName = eventName.replace(/([A-Z])/g, '-$1').toLowerCase()\n // 删除第一位的-\n eventName = eventName.slice(1)\n }\n events[eventName] = attrs[key]\n } else {\n _props[key] = attrs[key]\n }\n })\n return {\n on: events,\n props: _props,\n }\n }\n\n const cdn = '//j01.hongxinshop.com/'\n const getStaticJsUrl = () => {\n switch (type) {\n case 'bpm':\n return `${cdn}bpm-common/common/index.umd.min.js`\n case 'address':\n return `${cdn}address/static/hx-address-full.js`\n default:\n return ''\n }\n }\n const getStaticCssUrl = () => {\n switch (type) {\n case 'bpm':\n return `/bpm-common/common/index.css`\n case 'address':\n return `/address/static/hx-address.css`\n default:\n return ''\n }\n }\n const loadStaticJsResource = async () => {\n const promises: Promise<void>[] = []\n\n // 检查并加载element-ui.js(非bpm类型)\n if (!isBpm && !window.ElementUIComponents) {\n await new Promise((resolve, reject) => {\n const script = document.createElement('script')\n script.src = '/element-ui.js'\n script.onload = resolve\n script.onerror = reject\n document.body.appendChild(script)\n })\n }\n\n // 检查并加载原有的JS资源\n let globalName\n if (isAddress) {\n globalName = 'hxAddress'\n }\n if (isBpm) {\n globalName = 'index'\n }\n\n if (globalName && !window[globalName]) {\n promises.push(\n new Promise((resolve, reject) => {\n const script = document.createElement('script')\n script.src = getStaticJsUrl()\n script.onload = () => resolve()\n script.onerror = reject\n document.body.appendChild(script)\n }),\n )\n }\n\n return Promise.all(promises)\n }\n const loadStaticCssResource = async () => {\n const cssPromises: Promise<string>[] = []\n\n // 为非bpm类型加载element-ui.css\n if (!isBpm) {\n cssPromises.push(\n http\n .request<string>('/element-ui.css', {\n responseReturn: 'raw',\n baseURL: '',\n })\n .then((res) => res.data),\n )\n }\n\n // 加载原有的CSS资源\n const staticCssUrl = getStaticCssUrl()\n if (staticCssUrl) {\n cssPromises.push(\n http\n .request<string>(staticCssUrl, {\n responseReturn: 'raw',\n })\n .then((res) => res.data),\n )\n }\n\n const cssContents = await Promise.all(cssPromises)\n return cssContents.join('\\n')\n }\n let instance\n const setupInstance = async () => {\n if (instance) {\n return\n }\n // if (import.meta.hot) return // 每次热更新都会执行,在这里阻止,防止每次热更新页面都会重复插入组件\n const el = uniVue.value // 选择一个宿主元素\n const shadowRoot = el!.attachShadow({ mode: 'open' }) // 创建一个开放模式的 shadow root\n const container = document.createElement('div')\n if (isLoadStatic) {\n try {\n loading.value = true\n const [_res1, css] = await Promise.all([\n loadStaticJsResource(),\n loadStaticCssResource(),\n ])\n const style = document.createElement('style')\n style.textContent = css\n shadowRoot.appendChild(style)\n } catch (error) {\n console.log(error)\n } finally {\n loading.value = false\n }\n }\n shadowRoot.appendChild(container)\n instance = new Vue2({\n el: container,\n // @ts-expect-error 缺少类型定义\n router: new VueRouter3(),\n render: (h) => h(props.name, prepareVueAttributes()),\n })\n }\n\n // 监听 attrs 变化,更新 Vue 2 组件\n watch(\n () => attrs,\n () => {\n if (instance) {\n const { props: newProps, on: newEvents } = prepareVueAttributes()\n // 更新 props\n Object.keys(newProps).forEach((key) => {\n instance.$props[key] = newProps[key]\n })\n // 更新事件\n Object.keys(newEvents).forEach((eventName) => {\n instance.$off(eventName)\n instance.$on(eventName, newEvents[eventName])\n })\n // 强制重新渲染\n instance.$forceUpdate()\n }\n },\n { deep: true },\n )\n onMounted(() => {\n setupInstance()\n })\n\n return {\n loading,\n }\n}\n"],"names":["uniVue","useTemplateRef","ref","componentType","useAttrs","ElMessage","ElLoading","http","watch","onMounted"],"mappings":";;;;;;;;;;AAOO,MAAM,SAAA,GAAY,CAAC,KAAA,KAAU;AAClC,EAAA,MAAMA,QAAA,GAASC,mBAA4B,QAAQ,CAAA;AACnD,EAAA,MAAM,EAAE,MAAK,GAAI,KAAA;AACjB,EAAA,MAAM,OAAA,GAAUC,QAAI,IAAI,CAAA;AACxB,EAAA,MAAM,YAAY,IAAA,KAAS,SAAA;AAC3B,EAAA,MAAM,QAAQ,IAAA,KAAS,KAAA;AAEvB,EAAA,MAAM,YAAA,GAAeC,oBAAA,CAAc,OAAA,CAAQ,IAAI,CAAA,GAAI,EAAA;AACnD,EAAA,MAAM,QAAQC,YAAA,EAAS;AACvB,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAA,CAAK,IAAI,UAAU,CAAA;AACnB,IAAA,IAAI,CAAC,OAAO,GAAA,EAAK;AACf,MAAA,MAAA,CAAO,GAAA,GAAM,IAAA;AAAA,IACf;AAEA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,IAAI,CAAC,OAAO,KAAA,EAAO;AACjB,QAAA,MAAA,CAAO,KAAA,GAAQ,KAAA;AAAA,MACjB;AACA,MAAA,IAAI,CAAC,OAAO,SAAA,EAAW;AACrB,QAAA,MAAA,CAAO,SAAA,GAAY;AAAA,UACjB,OAAA,EAASC,qBAAA;AAAA,UACT,OAAA,EAASC;AAAA,SACX;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA;AACA,EAAA,WAAA,EAAY;AACZ,EAAA,MAAM,uBAAuB,MAAM;AACjC,IAAA,MAAM,SAAS,EAAC;AAChB,IAAA,MAAM,SAAS,EAAC;AAChB,IAAA,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAClC,MAAA,IAAI,GAAA,CAAI,UAAA,CAAW,IAAI,CAAA,EAAG;AACxB,QAAA,IAAI,SAAA,GAAY,GAAA,CAAI,KAAA,CAAM,CAAC,CAAA;AAC3B,QAAA,IAAI,SAAA,CAAU,UAAA,CAAW,SAAS,CAAA,EAAG;AAGnC,UAAA,SAAA,GAAY,SAAA,GAAY,SAAA,CAAU,KAAA,CAAM,CAAC,CAAA;AAAA,QAC3C,CAAA,MAAO;AAGL,UAAA,SAAA,GAAY,SAAA,CAAU,OAAA,CAAQ,UAAA,EAAY,KAAK,EAAE,WAAA,EAAY;AAE7D,UAAA,SAAA,GAAY,SAAA,CAAU,MAAM,CAAC,CAAA;AAAA,QAC/B;AACA,QAAA,MAAA,CAAO,SAAS,CAAA,GAAI,KAAA,CAAM,GAAG,CAAA;AAAA,MAC/B,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA,CAAM,GAAG,CAAA;AAAA,MACzB;AAAA,IACF,CAAC,CAAA;AACD,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,MAAA;AAAA,MACJ,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,GAAA,GAAM,wBAAA;AACZ,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,QAAQ,IAAA;AAAM,MACZ,KAAK,KAAA;AACH,QAAA,OAAO,GAAG,GAAG,CAAA,kCAAA,CAAA;AAAA,MACf,KAAK,SAAA;AACH,QAAA,OAAO,GAAG,GAAG,CAAA,iCAAA,CAAA;AAAA,MACf;AACE,QAAA,OAAO,EAAA;AAAA;AACX,EACF,CAAA;AACA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,QAAQ,IAAA;AAAM,MACZ,KAAK,KAAA;AACH,QAAA,OAAO,CAAA,4BAAA,CAAA;AAAA,MACT,KAAK,SAAA;AACH,QAAA,OAAO,CAAA,8BAAA,CAAA;AAAA,MACT;AACE,QAAA,OAAO,EAAA;AAAA;AACX,EACF,CAAA;AACA,EAAA,MAAM,uBAAuB,YAAY;AACvC,IAAA,MAAM,WAA4B,EAAC;AAGnC,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,MAAA,CAAO,mBAAA,EAAqB;AACzC,MAAA,MAAM,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACrC,QAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,QAAA,MAAA,CAAO,GAAA,GAAM,gBAAA;AACb,QAAA,MAAA,CAAO,MAAA,GAAS,OAAA;AAChB,QAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AACjB,QAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,MAClC,CAAC,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,UAAA;AACJ,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,UAAA,GAAa,WAAA;AAAA,IACf;AACA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,UAAA,GAAa,OAAA;AAAA,IACf;AAEA,IAAA,IAAI,UAAA,IAAc,CAAC,MAAA,CAAO,UAAU,CAAA,EAAG;AACrC,MAAA,QAAA,CAAS,IAAA;AAAA,QACP,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AAC/B,UAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,QAAQ,CAAA;AAC9C,UAAA,MAAA,CAAO,MAAM,cAAA,EAAe;AAC5B,UAAA,MAAA,CAAO,MAAA,GAAS,MAAM,OAAA,EAAQ;AAC9B,UAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AACjB,UAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAAA,QAClC,CAAC;AAAA,OACH;AAAA,IACF;AAEA,IAAA,OAAO,OAAA,CAAQ,IAAI,QAAQ,CAAA;AAAA,EAC7B,CAAA;AACA,EAAA,MAAM,wBAAwB,YAAY;AACxC,IAAA,MAAM,cAAiC,EAAC;AAGxC,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,WAAA,CAAY,IAAA;AAAA,QACVC,UAAA,CACG,QAAgB,iBAAA,EAAmB;AAAA,UAClC,cAAA,EAAgB,KAAA;AAAA,UAChB,OAAA,EAAS;AAAA,SACV,CAAA,CACA,IAAA,CAAK,CAAC,GAAA,KAAQ,IAAI,IAAI;AAAA,OAC3B;AAAA,IACF;AAGA,IAAA,MAAM,eAAe,eAAA,EAAgB;AACrC,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,WAAA,CAAY,IAAA;AAAA,QACVA,UAAA,CACG,QAAgB,YAAA,EAAc;AAAA,UAC7B,cAAA,EAAgB;AAAA,SACjB,CAAA,CACA,IAAA,CAAK,CAAC,GAAA,KAAQ,IAAI,IAAI;AAAA,OAC3B;AAAA,IACF;AAEA,IAAA,MAAM,WAAA,GAAc,MAAM,OAAA,CAAQ,GAAA,CAAI,WAAW,CAAA;AACjD,IAAA,OAAO,WAAA,CAAY,KAAK,IAAI,CAAA;AAAA,EAC9B,CAAA;AACA,EAAA,IAAI,QAAA;AACJ,EAAA,MAAM,gBAAgB,YAAY;AAChC,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAKP,QAAA,CAAO,KAAA;AAClB,IAAA,MAAM,aAAa,EAAA,CAAI,YAAA,CAAa,EAAE,IAAA,EAAM,QAAQ,CAAA;AACpD,IAAA,MAAM,SAAA,GAAY,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAC9C,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,IAAI;AACF,QAAA,OAAA,CAAQ,KAAA,GAAQ,IAAA;AAChB,QAAA,MAAM,CAAC,KAAA,EAAO,GAAG,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,UACrC,oBAAA,EAAqB;AAAA,UACrB,qBAAA;AAAsB,SACvB,CAAA;AACD,QAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAC5C,QAAA,KAAA,CAAM,WAAA,GAAc,GAAA;AACpB,QAAA,UAAA,CAAW,YAAY,KAAK,CAAA;AAAA,MAC9B,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,IAAI,KAAK,CAAA;AAAA,MACnB,CAAA,SAAE;AACA,QAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAAA,MAClB;AAAA,IACF;AACA,IAAA,UAAA,CAAW,YAAY,SAAS,CAAA;AAChC,IAAA,QAAA,GAAW,IAAI,IAAA,CAAK;AAAA,MAClB,EAAA,EAAI,SAAA;AAAA;AAAA,MAEJ,MAAA,EAAQ,IAAI,UAAA,EAAW;AAAA,MACvB,QAAQ,CAAC,CAAA,KAAM,EAAE,KAAA,CAAM,IAAA,EAAM,sBAAsB;AAAA,KACpD,CAAA;AAAA,EACH,CAAA;AAGA,EAAAQ,SAAA;AAAA,IACE,MAAM,KAAA;AAAA,IACN,MAAM;AACJ,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,EAAA,EAAI,SAAA,KAAc,oBAAA,EAAqB;AAEhE,QAAA,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AACrC,UAAA,QAAA,CAAS,MAAA,CAAO,GAAG,CAAA,GAAI,QAAA,CAAS,GAAG,CAAA;AAAA,QACrC,CAAC,CAAA;AAED,QAAA,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA,CAAE,OAAA,CAAQ,CAAC,SAAA,KAAc;AAC5C,UAAA,QAAA,CAAS,KAAK,SAAS,CAAA;AACvB,UAAA,QAAA,CAAS,GAAA,CAAI,SAAA,EAAW,SAAA,CAAU,SAAS,CAAC,CAAA;AAAA,QAC9C,CAAC,CAAA;AAED,QAAA,QAAA,CAAS,YAAA,EAAa;AAAA,MACxB;AAAA,IACF,CAAA;AAAA,IACA,EAAE,MAAM,IAAA;AAAK,GACf;AACA,EAAAC,aAAA,CAAU,MAAM;AACd,IAAA,aAAA,EAAc;AAAA,EAChB,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF;;;;"}
|
package/lib/hooks/use-locale.js
CHANGED
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var vue = require('vue');
|
|
4
4
|
var elementPlus = require('element-plus');
|
|
5
|
-
var zhCn = require('../locale/lang/zh-cn.js');
|
|
6
5
|
|
|
6
|
+
const elLocaleModules = undefined(
|
|
7
|
+
"/node_modules/element-plus/es/locale/lang/*.mjs"
|
|
8
|
+
);
|
|
9
|
+
const localeModules = undefined("../locale/lang/*.{mjs,ts}");
|
|
7
10
|
const TRANSLATER_KEY = /* @__PURE__ */ Symbol("TRANSLATER_KEY");
|
|
8
11
|
let cachedTranslater = null;
|
|
9
12
|
const useLocale = () => {
|
|
@@ -31,29 +34,15 @@ const useLocale = () => {
|
|
|
31
34
|
const provideFn = inSetup2 ? vue.provide : app.provide;
|
|
32
35
|
return new Promise(async (resolve) => {
|
|
33
36
|
try {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
);
|
|
41
|
-
locale = lang;
|
|
42
|
-
} catch (e) {
|
|
43
|
-
try {
|
|
44
|
-
const { default: en } = await Promise.resolve().then(function () { return require(
|
|
45
|
-
/* @vite-ignore */
|
|
46
|
-
'../locale/lang/en.js'
|
|
47
|
-
); });
|
|
48
|
-
locale = en;
|
|
49
|
-
} catch (enError) {
|
|
50
|
-
console.error(
|
|
51
|
-
"Failed to load both specified locale and English locale, using Chinese locale as fallback:",
|
|
52
|
-
enError
|
|
53
|
-
);
|
|
54
|
-
}
|
|
37
|
+
const basePath = "../locale/lang/";
|
|
38
|
+
const ext = "production" === "production" ? ".mjs" : ".ts";
|
|
39
|
+
const modulePath = basePath + localeLang + ext;
|
|
40
|
+
let loader = localeModules[modulePath];
|
|
41
|
+
if (!loader) {
|
|
42
|
+
loader = localeModules[basePath + "en" + ext];
|
|
55
43
|
}
|
|
56
|
-
const
|
|
44
|
+
const module = await loader();
|
|
45
|
+
const { t } = elementPlus.useLocale(vue.ref(module.default));
|
|
57
46
|
provideFn(TRANSLATER_KEY, t);
|
|
58
47
|
resolve();
|
|
59
48
|
addLangClass(window.hxlang);
|
|
@@ -63,34 +52,15 @@ const useLocale = () => {
|
|
|
63
52
|
});
|
|
64
53
|
};
|
|
65
54
|
const loadElLocale = async () => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
elLocalePath
|
|
73
|
-
);
|
|
74
|
-
elLocale = lang;
|
|
75
|
-
} catch (e) {
|
|
76
|
-
try {
|
|
77
|
-
const { default: en } = await import(
|
|
78
|
-
/* @vite-ignore */
|
|
79
|
-
'element-plus/es/locale/lang/en'
|
|
80
|
-
);
|
|
81
|
-
elLocale = en;
|
|
82
|
-
} catch (enError) {
|
|
83
|
-
console.error(
|
|
84
|
-
"Failed to load both specified locale and English locale, using Chinese locale as fallback:",
|
|
85
|
-
enError
|
|
86
|
-
);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return elLocale;
|
|
90
|
-
} catch (error) {
|
|
91
|
-
console.error(error);
|
|
92
|
-
return zhCn.default;
|
|
55
|
+
const basePath = "/node_modules/element-plus/es/locale/lang/";
|
|
56
|
+
const ext = ".mjs";
|
|
57
|
+
const modulePath = basePath + localeLang + ext;
|
|
58
|
+
let loader = elLocaleModules[modulePath];
|
|
59
|
+
if (!loader) {
|
|
60
|
+
loader = elLocaleModules[basePath + "en" + ext];
|
|
93
61
|
}
|
|
62
|
+
const module = await loader();
|
|
63
|
+
return module.default;
|
|
94
64
|
};
|
|
95
65
|
return {
|
|
96
66
|
loadLocale,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-locale.js","sources":["../../../../packages/hooks/use-locale.ts"],"sourcesContent":["import {\n ref,\n inject,\n provide,\n getCurrentInstance,\n type App,\n nextTick,\n} from 'vue'\nimport { useLocale as useElLocale } from 'element-plus'\nimport type { Language } from 'element-plus/es/locale'\
|
|
1
|
+
{"version":3,"file":"use-locale.js","sources":["../../../../packages/hooks/use-locale.ts"],"sourcesContent":["import {\n ref,\n inject,\n provide,\n getCurrentInstance,\n type App,\n nextTick,\n} from 'vue'\nimport { useLocale as useElLocale } from 'element-plus'\nimport type { Language } from 'element-plus/es/locale'\nconst elLocaleModules = import.meta.glob(\n '/node_modules/element-plus/es/locale/lang/*.mjs',\n)\nconst localeModules = import.meta.glob('../locale/lang/*.{mjs,ts}')\n\nconst TRANSLATER_KEY = Symbol('TRANSLATER_KEY')\nexport type Translater = (key: string) => string\nlet cachedTranslater: Translater | null = null\nexport const useLocale = () => {\n const localeLang = window.hxlang?.toLocaleLowerCase().split('_').join('-')\n const addLangClass = async (lang: string) => {\n await nextTick()\n const el = document.querySelector('html')\n const langclass = 'no-cn'\n if (el && lang !== 'ZH_CN') {\n el.classList.add(langclass)\n }\n }\n const inSetup = !!getCurrentInstance()\n const translater = inSetup ? inject<Translater>(TRANSLATER_KEY) : null\n if (translater) {\n cachedTranslater = translater\n }\n const loadLocale = (app?: App) => {\n const inSetup = !!getCurrentInstance()\n if (!inSetup && !app) {\n return console.error(\n 'app is required when useLocale is called outside of setup',\n )\n }\n const provideFn = inSetup ? provide : app!.provide\n // eslint-disable-next-line no-async-promise-executor\n return new Promise<void>(async (resolve) => {\n try {\n const basePath = '../locale/lang/'\n const ext = process.env.NODE_ENV === 'production' ? '.mjs' : '.ts'\n const modulePath = basePath + localeLang + ext\n let loader = localeModules[modulePath]\n if (!loader) {\n loader = localeModules[basePath + 'en' + ext]\n }\n const module = (await loader()) as { default: Language }\n const { t } = useElLocale(ref(module.default as unknown as Language))\n provideFn(TRANSLATER_KEY, t)\n resolve()\n addLangClass(window.hxlang!)\n } catch (error) {\n console.error(error)\n }\n })\n }\n const loadElLocale = async () => {\n const basePath = '/node_modules/element-plus/es/locale/lang/'\n const ext = '.mjs'\n const modulePath = basePath + localeLang + ext\n let loader = elLocaleModules[modulePath]\n if (!loader) {\n loader = elLocaleModules[basePath + 'en' + ext]\n }\n const module = (await loader()) as { default: Language }\n return module.default\n }\n return {\n loadLocale,\n loadElLocale,\n t: (key) => {\n // // 如果已经有缓存的 translater,直接使用\n if (cachedTranslater) {\n return cachedTranslater(key)\n }\n // const translater = inject<Translater>(TRANSLATER_KEY)\n if (translater) {\n // cachedTranslater = translater // 缓存起来\n return translater(key)\n }\n return key\n },\n }\n}\n"],"names":["nextTick","getCurrentInstance","inject","inSetup","provide","useElLocale","ref"],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ var qs__namespace = /*#__PURE__*/_interopNamespaceDefault(qs);
|
|
|
25
25
|
|
|
26
26
|
const useNavigation = () => {
|
|
27
27
|
const router = vueRouter.useRouter();
|
|
28
|
+
const route = vueRouter.useRoute();
|
|
28
29
|
const $goto = (r) => {
|
|
29
30
|
const item = {
|
|
30
31
|
id: Date.now(),
|
|
@@ -56,11 +57,11 @@ const useNavigation = () => {
|
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
};
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
60
|
+
const route2 = findRoute(routes, r);
|
|
61
|
+
if (route2) {
|
|
61
62
|
item.id = r.id || item.id;
|
|
62
|
-
item.name = r.title || (window.$hxt ? window.$hxt(
|
|
63
|
-
item.url = `${projectRootPath}#${
|
|
63
|
+
item.name = r.title || (window.$hxt ? window.$hxt(route2.meta.title) : route2.meta.title);
|
|
64
|
+
item.url = `${projectRootPath}#${route2.path}${qs__namespace.stringify(r.query, { encode: false })}`;
|
|
64
65
|
if (openTab) {
|
|
65
66
|
openTab(item);
|
|
66
67
|
} else {
|
|
@@ -82,8 +83,7 @@ const useNavigation = () => {
|
|
|
82
83
|
window.parent?.openMenuSelect?.(preTag);
|
|
83
84
|
};
|
|
84
85
|
const mode = vue.computed(() => {
|
|
85
|
-
|
|
86
|
-
return query.mode;
|
|
86
|
+
return route.query.mode;
|
|
87
87
|
});
|
|
88
88
|
const isBrowse = vue.computed(() => mode.value === "browse");
|
|
89
89
|
const isEdit = vue.computed(() => mode.value === "edit");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-navigation.js","sources":["../../../../packages/hooks/use-navigation.ts"],"sourcesContent":["import { useRouter, useRoute } from 'vue-router'\nimport { computed } from 'vue'\nimport type { NavigationConfig } from '@el-plus/utils'\nimport * as qs from 'qs'\nexport type PageMode = 'add' | 'edit' | 'browse'\n\nexport const useNavigation = () => {\n const router = useRouter()\n /**\n * 打开saas窗口\n * @param id 菜单id\n * @param name 路由模块name, 适用于内部跳转\n * @param title 菜单名称,适用于传外部url跳转\n * @param url 菜单url\n * @param query url参数\n */\n const $goto = (r: NavigationConfig) => {\n const item: NavigationConfig = {\n id: Date.now(),\n name: '',\n url: '',\n }\n const openTab = window.parent.openMenuSelect\n\n if (r.url) {\n item.url = r.url\n item.name = r.name\n if (openTab) {\n openTab(item)\n } else {\n window.open(item.url)\n }\n return\n }\n const routes = router.getRoutes() || []\n\n const projectRootPath = window.location.pathname\n\n const findRoute = (routes, distRoute) => {\n let queen = [...routes]\n\n while (queen.length) {\n const first = queen.shift()\n if (first.children) {\n queen = queen.concat(first.children)\n }\n\n if (first.name == distRoute.name) {\n return first\n }\n }\n }\n const route = findRoute(routes, r)\n\n if (route) {\n item.id = r.id || item.id\n\n item.name =\n r.title ||\n (window.$hxt ? window.$hxt(route.meta.title) : route.meta.title)\n\n item.url = `${projectRootPath}#${route.path}${qs.stringify(r.query, { encode: false })}`\n\n if (openTab) {\n openTab(item)\n } else {\n router.push(r)\n }\n } else {\n console.error('没有找到对应的路由')\n }\n }\n\n const $closeTag = () => {\n if (!window.parent.selectedRouterTags) {\n return\n }\n const currentRouterTagIndex = window.parent.currentRouterTagIndex!\n const preIndex = window.parent.currentRouterTagIndex! - 1\n const currentTag = window.parent.selectedRouterTags[currentRouterTagIndex]\n const preTag = window.parent.selectedRouterTags[preIndex]\n window.parent?.closeTag?.(currentTag)\n window.parent?.openMenuSelect?.(preTag)\n }\n const mode = computed(() => {\n
|
|
1
|
+
{"version":3,"file":"use-navigation.js","sources":["../../../../packages/hooks/use-navigation.ts"],"sourcesContent":["import { useRouter, useRoute } from 'vue-router'\nimport { computed } from 'vue'\nimport type { NavigationConfig } from '@el-plus/utils'\nimport * as qs from 'qs'\nexport type PageMode = 'add' | 'edit' | 'browse'\n\nexport const useNavigation = () => {\n const router = useRouter()\n const route = useRoute()\n /**\n * 打开saas窗口\n * @param id 菜单id\n * @param name 路由模块name, 适用于内部跳转\n * @param title 菜单名称,适用于传外部url跳转\n * @param url 菜单url\n * @param query url参数\n */\n const $goto = (r: NavigationConfig) => {\n const item: NavigationConfig = {\n id: Date.now(),\n name: '',\n url: '',\n }\n const openTab = window.parent.openMenuSelect\n\n if (r.url) {\n item.url = r.url\n item.name = r.name\n if (openTab) {\n openTab(item)\n } else {\n window.open(item.url)\n }\n return\n }\n const routes = router.getRoutes() || []\n\n const projectRootPath = window.location.pathname\n\n const findRoute = (routes, distRoute) => {\n let queen = [...routes]\n\n while (queen.length) {\n const first = queen.shift()\n if (first.children) {\n queen = queen.concat(first.children)\n }\n\n if (first.name == distRoute.name) {\n return first\n }\n }\n }\n const route = findRoute(routes, r)\n\n if (route) {\n item.id = r.id || item.id\n\n item.name =\n r.title ||\n (window.$hxt ? window.$hxt(route.meta.title) : route.meta.title)\n\n item.url = `${projectRootPath}#${route.path}${qs.stringify(r.query, { encode: false })}`\n\n if (openTab) {\n openTab(item)\n } else {\n router.push(r)\n }\n } else {\n console.error('没有找到对应的路由')\n }\n }\n\n const $closeTag = () => {\n if (!window.parent.selectedRouterTags) {\n return\n }\n const currentRouterTagIndex = window.parent.currentRouterTagIndex!\n const preIndex = window.parent.currentRouterTagIndex! - 1\n const currentTag = window.parent.selectedRouterTags[currentRouterTagIndex]\n const preTag = window.parent.selectedRouterTags[preIndex]\n window.parent?.closeTag?.(currentTag)\n window.parent?.openMenuSelect?.(preTag)\n }\n const mode = computed(() => {\n return route.query.mode as PageMode\n })\n const isBrowse = computed(() => mode.value === 'browse')\n const isEdit = computed(() => mode.value === 'edit')\n const isAdd = computed(() => mode.value === 'add')\n return {\n $goto,\n $closeTag,\n mode,\n isBrowse,\n isEdit,\n isAdd,\n }\n}\n"],"names":["useRouter","useRoute","routes","route","qs","computed"],"mappings":"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"}
|
package/lib/package.json.js
CHANGED
package/lib/types/global.d.ts
CHANGED