@wsxjs/wsx-base-components 0.0.21 → 0.0.23

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wsxjs/wsx-base-components",
3
- "version": "0.0.21",
3
+ "version": "0.0.23",
4
4
  "description": "Base UI components built with WSXJS",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -19,8 +19,8 @@
19
19
  ],
20
20
  "dependencies": {
21
21
  "prismjs": "^1.30.0",
22
- "@wsxjs/wsx-logger": "0.0.21",
23
- "@wsxjs/wsx-core": "0.0.21"
22
+ "@wsxjs/wsx-core": "0.0.23",
23
+ "@wsxjs/wsx-logger": "0.0.23"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/prismjs": "^1.26.5",
@@ -33,8 +33,8 @@
33
33
  "typescript": "^5.0.0",
34
34
  "vite": "^5.4.19",
35
35
  "vitest": "^2.1.8",
36
- "@wsxjs/eslint-plugin-wsx": "0.0.21",
37
- "@wsxjs/wsx-vite-plugin": "0.0.21"
36
+ "@wsxjs/eslint-plugin-wsx": "0.0.23",
37
+ "@wsxjs/wsx-vite-plugin": "0.0.23"
38
38
  },
39
39
  "keywords": [
40
40
  "wsx",
package/src/Button.wsx CHANGED
@@ -215,6 +215,7 @@ export default class Button extends WebComponent {
215
215
  * 组件连接到DOM后的初始化
216
216
  */
217
217
  protected onConnected(): void {
218
+ super.onConnected?.();
218
219
  this.addEventListener("click", this.handleClick);
219
220
  }
220
221
 
@@ -222,6 +223,7 @@ export default class Button extends WebComponent {
222
223
  * 组件从DOM断开时的清理
223
224
  */
224
225
  protected onDisconnected(): void {
226
+ super.onDisconnected?.();
225
227
  this.removeEventListener("click", this.handleClick);
226
228
  }
227
229
 
@@ -60,6 +60,7 @@ export default class ButtonGroup extends WebComponent {
60
60
  * 组件连接到DOM后的初始化
61
61
  */
62
62
  protected onConnected(): void {
63
+ super.onConnected?.();
63
64
  // 初始化时设置子按钮的disabled状态
64
65
  this.updateChildrenDisabledState();
65
66
  }
package/src/CodeBlock.wsx CHANGED
@@ -52,6 +52,7 @@ export default class CodeBlock extends LightComponent {
52
52
  private isHighlighting: boolean = false; // 防止重复高亮
53
53
 
54
54
  protected onRendered() {
55
+ super.onRendered?.();
55
56
  // 在渲染完成后应用语法高亮(防止重复高亮)
56
57
  if (!this.isHighlighting) {
57
58
  this.highlightCode();
@@ -347,6 +347,7 @@ export default class ColorPicker extends WebComponent {
347
347
  * 组件连接到DOM后的初始化
348
348
  */
349
349
  protected onConnected(): void {
350
+ super.onConnected?.();
350
351
  // 绑定全局点击事件以关闭面板
351
352
  document.addEventListener("click", this.handleDocumentClick);
352
353
 
@@ -357,6 +358,7 @@ export default class ColorPicker extends WebComponent {
357
358
  * 组件从DOM断开时的清理
358
359
  */
359
360
  protected onDisconnected(): void {
361
+ super.onDisconnected?.();
360
362
  document.removeEventListener("click", this.handleDocumentClick);
361
363
 
362
364
  logger.info("ColorPicker disconnected from DOM");
package/src/Combobox.wsx CHANGED
@@ -347,6 +347,7 @@ export default class Combobox extends WebComponent {
347
347
  * 组件断开连接时清理
348
348
  */
349
349
  protected onDisconnected(): void {
350
+ super.onDisconnected?.();
350
351
  this.detachOutsideClickHandler();
351
352
  }
352
353
  }
package/src/Dropdown.wsx CHANGED
@@ -216,6 +216,7 @@ export default class Dropdown extends WebComponent {
216
216
  * 组件断开连接时清理
217
217
  */
218
218
  protected onDisconnected(): void {
219
+ super.onDisconnected?.();
219
220
  this.detachOutsideClickHandler();
220
221
  }
221
222
  }
@@ -6,8 +6,6 @@
6
6
  */
7
7
  import { WebComponent, autoRegister, state } from "@wsxjs/wsx-core";
8
8
  import { i18nInstance } from "@wsxjs/wsx-i18next";
9
- import styles from "./LanguageSwitcher.css?inline";
10
-
11
9
  /**
12
10
  * 语言选项接口
13
11
  */
@@ -18,7 +16,7 @@ export interface LanguageOption {
18
16
  name: string;
19
17
  }
20
18
 
21
- @autoRegister({ tagName: "language-switcher" })
19
+ @autoRegister({ tagName: "wsx-language-switcher" })
22
20
  export default class LanguageSwitcher extends WebComponent {
23
21
  /** 支持的语言列表 */
24
22
  private languages: LanguageOption[] = [
@@ -41,13 +39,6 @@ export default class LanguageSwitcher extends WebComponent {
41
39
  private dropdownElement?: HTMLElement;
42
40
  private buttonElement?: HTMLElement;
43
41
 
44
- constructor() {
45
- super({
46
- styles,
47
- styleName: "language-switcher",
48
- });
49
- }
50
-
51
42
  render(): HTMLElement {
52
43
  const currentLang = this.languages.find((lang) => lang.code === this.currentLanguage);
53
44
  const displayName = currentLang?.name || this.currentLanguage.toUpperCase();
@@ -98,13 +89,9 @@ export default class LanguageSwitcher extends WebComponent {
98
89
  */
99
90
  private toggleDropdown = (): void => {
100
91
  this.isOpen = !this.isOpen;
101
- this.rerender();
102
92
 
103
93
  if (this.isOpen) {
104
- // 点击外部关闭下拉菜单
105
- setTimeout(() => {
106
- document.addEventListener("click", this.handleOutsideClick, true);
107
- }, 0);
94
+ document.addEventListener("click", this.handleOutsideClick, true);
108
95
  }
109
96
  };
110
97
 
@@ -120,7 +107,6 @@ export default class LanguageSwitcher extends WebComponent {
120
107
  !this.buttonElement.contains(target)
121
108
  ) {
122
109
  this.isOpen = false;
123
- this.rerender();
124
110
  document.removeEventListener("click", this.handleOutsideClick, true);
125
111
  }
126
112
  };
@@ -131,7 +117,6 @@ export default class LanguageSwitcher extends WebComponent {
131
117
  private selectLanguage = (languageCode: string): void => {
132
118
  if (languageCode === this.currentLanguage) {
133
119
  this.isOpen = false;
134
- this.rerender();
135
120
  return;
136
121
  }
137
122
 
@@ -139,7 +124,6 @@ export default class LanguageSwitcher extends WebComponent {
139
124
  i18nInstance.changeLanguage(languageCode).then(() => {
140
125
  this.currentLanguage = languageCode;
141
126
  this.isOpen = false;
142
- this.rerender();
143
127
 
144
128
  // 保存到 localStorage
145
129
  localStorage.setItem("wsx-language", languageCode);
@@ -149,7 +133,8 @@ export default class LanguageSwitcher extends WebComponent {
149
133
  /**
150
134
  * 组件连接时初始化
151
135
  */
152
- protected onConnected(): void {
136
+ onConnected(): void {
137
+ super.onConnected?.();
153
138
  // 从 localStorage 或 i18next 获取当前语言
154
139
  const savedLanguage = localStorage.getItem("wsx-language");
155
140
  const i18nLanguage = i18nInstance.language || i18nInstance.options.fallbackLng || "en";
@@ -172,7 +157,8 @@ export default class LanguageSwitcher extends WebComponent {
172
157
  /**
173
158
  * 组件断开连接时清理
174
159
  */
175
- protected onDisconnected(): void {
160
+ onDisconnected(): void {
161
+ super.onDisconnected?.();
176
162
  i18nInstance.off("languageChanged", this.handleLanguageChanged);
177
163
  document.removeEventListener("click", this.handleOutsideClick, true);
178
164
  }
@@ -184,7 +170,6 @@ export default class LanguageSwitcher extends WebComponent {
184
170
  const baseLanguage = lng.split("-")[0];
185
171
  if (baseLanguage !== this.currentLanguage) {
186
172
  this.currentLanguage = baseLanguage;
187
- this.rerender();
188
173
  }
189
174
  };
190
175
  }
@@ -374,6 +374,7 @@ export default class ResponsiveNav extends WebComponent {
374
374
  * 组件连接时初始化
375
375
  */
376
376
  protected onConnected(): void {
377
+ super.onConnected?.();
377
378
  // 如果配置未初始化,从属性读取
378
379
  if (!this.navigation?.items || this.navigation?.items.length === 0) {
379
380
  try {
@@ -431,6 +432,7 @@ export default class ResponsiveNav extends WebComponent {
431
432
  * 组件断开连接时清理
432
433
  */
433
434
  protected onDisconnected(): void {
435
+ super.onDisconnected?.();
434
436
  if (this.resizeHandler) {
435
437
  window.removeEventListener("resize", this.resizeHandler);
436
438
  }