py-test-component 1.0.3 → 1.0.5

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.
@@ -6,6 +6,12 @@
6
6
 
7
7
  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
8
8
 
9
+ /**
10
+ * vue-custom-element v3.3.0
11
+ * (c) 2021 Karol Fabjańczuk
12
+ * @license MIT
13
+ */
14
+
9
15
  /**
10
16
  * @license
11
17
  * Lodash <https://lodash.com/>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "py-test-component",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Vue2 + ElementUI 组件库,支持 React 使用",
5
5
  "main": "dist/py-component.js",
6
6
  "module": "dist/py-component.esm.js",
@@ -33,24 +33,25 @@
33
33
  "dev": "webpack --mode development --watch"
34
34
  },
35
35
  "dependencies": {
36
- "vue": "^2.7.14",
37
- "element-ui": "^2.15.13"
36
+ "element-ui": "^2.15.0",
37
+ "vue": "^2.7.0",
38
+ "vue-custom-element": "^3.3.0"
38
39
  },
39
40
  "devDependencies": {
40
- "webpack": "^5.88.0",
41
- "webpack-cli": "^5.1.0",
42
- "vue-loader": "^15.10.1",
43
- "vue-template-compiler": "^2.7.14",
44
- "css-loader": "^6.8.1",
45
- "style-loader": "^1.3.0",
46
- "babel-loader": "^9.1.2",
47
41
  "@babel/core": "^7.22.0",
48
42
  "@babel/preset-env": "^7.22.0",
49
- "@vue/web-component-wrapper": "^1.3.0"
43
+ "@vue/web-component-wrapper": "^1.3.0",
44
+ "babel-loader": "^9.1.2",
45
+ "css-loader": "^6.8.1",
46
+ "style-loader": "^1.3.0",
47
+ "vue-loader": "^15.10.1",
48
+ "vue-template-compiler": "^2.7.14",
49
+ "webpack": "^5.88.0",
50
+ "webpack-cli": "^5.1.0"
50
51
  },
51
52
  "peerDependencies": {
52
- "vue": "^2.7.0",
53
- "element-ui": "^2.15.0"
53
+ "element-ui": "^2.15.0",
54
+ "vue": "^2.7.0"
54
55
  },
55
56
  "peerDependenciesMeta": {
56
57
  "vue": {
@@ -1,5 +1,21 @@
1
1
  import { createElement, useEffect, useRef, useState, forwardRef, useImperativeHandle } from 'react';
2
2
 
3
+ // 注入 ElementUI CSS(只执行一次)
4
+ let cssInjected = false;
5
+ function injectElementUICSS() {
6
+ if (cssInjected || typeof document === 'undefined') return;
7
+ cssInjected = true;
8
+
9
+ // 检查是否已存在
10
+ if (document.querySelector('link[data-py-component-css]')) return;
11
+
12
+ const link = document.createElement('link');
13
+ link.rel = 'stylesheet';
14
+ link.href = 'https://unpkg.com/element-ui/lib/theme-chalk/index.css';
15
+ link.dataset.pyComponentCss = 'true';
16
+ document.head.appendChild(link);
17
+ }
18
+
3
19
  // 加载状态管理
4
20
  let loadPromise = null;
5
21
  let isLoaded = false;
@@ -46,6 +62,9 @@ function usePyComponent() {
46
62
  const [error, setError] = useState(null);
47
63
 
48
64
  useEffect(() => {
65
+ // 自动注入 CSS
66
+ injectElementUICSS();
67
+
49
68
  if (isLoaded) {
50
69
  setLoaded(true);
51
70
  return;
@@ -75,6 +94,7 @@ export const PyTable = forwardRef(function PyTable({ data, loading: propsLoading
75
94
 
76
95
  useEffect(() => {
77
96
  if (elRef.current && data && loaded) {
97
+ // 通过属性传递数据(vue-custom-element 会自动解析 JSON 字符串)
78
98
  elRef.current.setAttribute('table-data', JSON.stringify(data));
79
99
  }
80
100
  }, [data, loaded]);