@rainbow-oh/yee-c 0.6.3 → 0.7.0

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.
Files changed (131) hide show
  1. package/dist/cjs/Button/style/index.less +5 -4
  2. package/dist/cjs/Checkbox/style/index.less +1 -1
  3. package/dist/cjs/Drawer/drawer.js +1 -1
  4. package/dist/cjs/Drawer/interface.d.ts +1 -1
  5. package/dist/cjs/Drawer/style/index.less +1 -0
  6. package/dist/cjs/List/demo/virtual.d.ts +3 -0
  7. package/dist/cjs/List/demo/virtual.js +53 -0
  8. package/dist/cjs/List/hooks/useListKeyboard.d.ts +28 -0
  9. package/dist/cjs/List/hooks/useListKeyboard.js +188 -0
  10. package/dist/cjs/List/interface.d.ts +29 -2
  11. package/dist/cjs/List/list.js +141 -21
  12. package/dist/cjs/List/style/index.less +24 -0
  13. package/dist/cjs/Select/demo/columns.d.ts +3 -0
  14. package/dist/cjs/Select/demo/columns.js +62 -0
  15. package/dist/cjs/Select/hooks/useSelectKeyboard.d.ts +13 -1
  16. package/dist/cjs/Select/hooks/useSelectKeyboard.js +81 -10
  17. package/dist/cjs/Select/interface.d.ts +30 -3
  18. package/dist/cjs/Select/option.js +4 -3
  19. package/dist/cjs/Select/options.js +90 -8
  20. package/dist/cjs/Select/select.js +32 -8
  21. package/dist/cjs/Select/style/index.less +14 -0
  22. package/dist/cjs/Selector/interface.d.ts +4 -0
  23. package/dist/cjs/Selector/selector.js +5 -3
  24. package/dist/cjs/Table/interface.d.ts +1 -1
  25. package/dist/cjs/Table/style/index.less +1 -1
  26. package/dist/cjs/Tree/demo/draggable.js +2 -0
  27. package/dist/cjs/Tree/interface.d.ts +46 -23
  28. package/dist/cjs/Tree/tree-node.d.ts +1 -1
  29. package/dist/cjs/Tree/tree-node.js +30 -23
  30. package/dist/cjs/Tree/tree.d.ts +13 -12
  31. package/dist/cjs/Tree/tree.js +452 -227
  32. package/dist/cjs/Tree/utils/tree-tools.d.ts +43 -10
  33. package/dist/cjs/Tree/utils/tree-tools.js +129 -91
  34. package/dist/cjs/locale/context.d.ts +5 -4
  35. package/dist/cjs/locale/context.js +15 -8
  36. package/dist/cjs/locale/interface.d.ts +20 -0
  37. package/dist/cjs/locale/util.d.ts +3 -3
  38. package/dist/cjs/style/color.css +1 -0
  39. package/dist/cjs/style/size.css +2 -1
  40. package/dist/cjs/style/themes.css +1 -1
  41. package/dist/cjs/style/variables.css +4 -2
  42. package/dist/cjs/utils/isEqual.d.ts +1 -1
  43. package/dist/cjs/utils/isEqual.js +24 -13
  44. package/dist/cjs/version.d.ts +1 -1
  45. package/dist/cjs/version.js +1 -1
  46. package/dist/esm/Button/style/index.less +5 -4
  47. package/dist/esm/Checkbox/style/index.less +1 -1
  48. package/dist/esm/Drawer/drawer.js +2 -1
  49. package/dist/esm/Drawer/interface.d.ts +1 -1
  50. package/dist/esm/Drawer/style/index.less +1 -0
  51. package/dist/esm/List/demo/virtual.d.ts +3 -0
  52. package/dist/esm/List/demo/virtual.js +22 -0
  53. package/dist/esm/List/hooks/useListKeyboard.d.ts +28 -0
  54. package/dist/esm/List/hooks/useListKeyboard.js +173 -0
  55. package/dist/esm/List/interface.d.ts +29 -2
  56. package/dist/esm/List/list.js +171 -14
  57. package/dist/esm/List/style/index.less +24 -0
  58. package/dist/esm/Select/demo/columns.d.ts +3 -0
  59. package/dist/esm/Select/demo/columns.js +36 -0
  60. package/dist/esm/Select/hooks/useSelectKeyboard.d.ts +13 -1
  61. package/dist/esm/Select/hooks/useSelectKeyboard.js +91 -14
  62. package/dist/esm/Select/interface.d.ts +30 -3
  63. package/dist/esm/Select/option.js +6 -2
  64. package/dist/esm/Select/options.js +114 -32
  65. package/dist/esm/Select/select.js +40 -11
  66. package/dist/esm/Select/style/index.less +14 -0
  67. package/dist/esm/Selector/interface.d.ts +4 -0
  68. package/dist/esm/Selector/selector.js +10 -4
  69. package/dist/esm/Table/interface.d.ts +1 -1
  70. package/dist/esm/Table/style/index.less +1 -1
  71. package/dist/esm/Tree/demo/draggable.js +2 -0
  72. package/dist/esm/Tree/interface.d.ts +46 -23
  73. package/dist/esm/Tree/tree-node.d.ts +1 -1
  74. package/dist/esm/Tree/tree-node.js +26 -31
  75. package/dist/esm/Tree/tree.d.ts +13 -12
  76. package/dist/esm/Tree/tree.js +572 -163
  77. package/dist/esm/Tree/utils/tree-tools.d.ts +43 -10
  78. package/dist/esm/Tree/utils/tree-tools.js +219 -104
  79. package/dist/esm/locale/context.d.ts +5 -4
  80. package/dist/esm/locale/context.js +25 -9
  81. package/dist/esm/locale/interface.d.ts +20 -0
  82. package/dist/esm/locale/util.d.ts +3 -3
  83. package/dist/esm/style/color.css +1 -0
  84. package/dist/esm/style/size.css +2 -1
  85. package/dist/esm/style/themes.css +1 -1
  86. package/dist/esm/style/variables.css +4 -2
  87. package/dist/esm/utils/isEqual.d.ts +1 -1
  88. package/dist/esm/utils/isEqual.js +31 -15
  89. package/dist/esm/version.d.ts +1 -1
  90. package/dist/esm/version.js +1 -1
  91. package/dist/umd/yee-c.min.css +2 -2
  92. package/dist/umd/yee-c.min.js +1 -1
  93. package/package.json +1 -1
  94. package/src/Button/style/index.less +5 -4
  95. package/src/Checkbox/style/index.less +1 -1
  96. package/src/Drawer/drawer.tsx +1 -1
  97. package/src/Drawer/interface.ts +1 -0
  98. package/src/Drawer/style/index.less +1 -0
  99. package/src/List/demo/virtual.tsx +20 -0
  100. package/src/List/hooks/useListKeyboard.ts +235 -0
  101. package/src/List/index.en-US.md +6 -0
  102. package/src/List/index.zh-CN.md +6 -0
  103. package/src/List/interface.ts +29 -2
  104. package/src/List/list.tsx +157 -19
  105. package/src/List/style/index.less +24 -0
  106. package/src/Select/demo/columns.tsx +35 -0
  107. package/src/Select/hooks/useSelectKeyboard.ts +112 -15
  108. package/src/Select/index.en-US.md +4 -0
  109. package/src/Select/index.zh-CN.md +4 -0
  110. package/src/Select/interface.ts +31 -4
  111. package/src/Select/option.tsx +9 -3
  112. package/src/Select/options.tsx +119 -26
  113. package/src/Select/select.tsx +41 -8
  114. package/src/Select/style/index.less +14 -0
  115. package/src/Selector/interface.ts +4 -0
  116. package/src/Selector/selector.tsx +8 -3
  117. package/src/Table/interface.ts +1 -1
  118. package/src/Table/style/index.less +1 -1
  119. package/src/Tree/demo/draggable.tsx +2 -0
  120. package/src/Tree/interface.ts +46 -23
  121. package/src/Tree/tree-node.tsx +26 -29
  122. package/src/Tree/tree.tsx +573 -274
  123. package/src/Tree/utils/tree-tools.ts +231 -125
  124. package/src/locale/_README.md +22 -13
  125. package/src/locale/context.tsx +33 -16
  126. package/src/locale/interface.ts +24 -0
  127. package/src/locale/util.ts +6 -6
  128. package/src/style/color.css +1 -0
  129. package/src/style/size.css +2 -1
  130. package/src/utils/isEqual.ts +35 -14
  131. package/src/version.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  import { DEFAULT_LOCALE_CONFIG } from './constants';
2
- import type { Locale } from './interface';
2
+ import type { DeepPartial, Locale } from './interface';
3
3
 
4
4
  /**
5
5
  * Deep get object value
@@ -45,9 +45,9 @@ export function isValidLocale(obj: any): obj is Locale {
45
45
  */
46
46
  export function deepMerge<T extends Record<string, any>>(
47
47
  target: T,
48
- source: Partial<T>,
48
+ source: DeepPartial<NoInfer<T>>,
49
49
  ): T {
50
- const result = { ...target };
50
+ const result: Record<string, any> = { ...target };
51
51
 
52
52
  for (const key in source) {
53
53
  if (Object.prototype.hasOwnProperty.call(source, key)) {
@@ -64,18 +64,18 @@ export function deepMerge<T extends Record<string, any>>(
64
64
  ) {
65
65
  result[key] = deepMerge(targetValue, sourceValue);
66
66
  } else {
67
- result[key] = sourceValue as T[Extract<keyof T, string>];
67
+ result[key] = sourceValue;
68
68
  }
69
69
  }
70
70
  }
71
71
 
72
- return result;
72
+ return result as T;
73
73
  }
74
74
 
75
75
  /**
76
76
  * Ensure locale pack completeness, fill missing fields with default values
77
77
  */
78
- export function normalizeLocale(locale: Partial<Locale>): Locale {
78
+ export function normalizeLocale(locale: DeepPartial<Locale>): Locale {
79
79
  return deepMerge(DEFAULT_LOCALE_CONFIG, locale);
80
80
  }
81
81
 
@@ -2,6 +2,7 @@
2
2
  --yee-primary-color: #777af2;
3
3
  --yee-primary-color-hover: #39364e;
4
4
  --yee-primary-color-active: #39364e;
5
+ --yee-primary-color-border: #bbbcfb;
5
6
  --yee-link-color: #777af2;
6
7
  --yee-link-color-hover: #39364e;
7
8
  --yee-link-color-active: #39364e;
@@ -248,7 +248,8 @@
248
248
  --yee-drawer-body-padding: 20px 24px;
249
249
  --yee-drawer-close-top: 20px;
250
250
  --yee-drawer-close-right: 20px;
251
- --yee-drawer-title-font-weight: 500;
251
+ --yee-drawer-title-font-weight: 600;
252
+ --yee-drawer-title-font-size: 18px;
252
253
 
253
254
  /* --Field-- */
254
255
  --yee-field-gap: 8px;
@@ -1,4 +1,8 @@
1
- export default function isEqual(a: unknown, b: unknown) {
1
+ export default function isEqual(
2
+ a: unknown,
3
+ b: unknown,
4
+ seen?: Map<object, Set<object>>,
5
+ ): boolean {
2
6
  // Compare reference types
3
7
  if (a === b) return true;
4
8
 
@@ -18,17 +22,38 @@ export default function isEqual(a: unknown, b: unknown) {
18
22
  return a.source === b.source && a.flags === b.flags;
19
23
  }
20
24
 
21
- // Compare arrays
22
- if (Array.isArray(a) && Array.isArray(b)) {
23
- if (a.length !== b.length) return false;
24
- for (let i = 0; i < a.length; i++) {
25
- if (!isEqual(a[i], b[i])) return false;
26
- }
27
- return true;
25
+ // Compare functions
26
+ if (typeof a === 'function' && typeof b === 'function') {
27
+ return a.toString() === b.toString();
28
28
  }
29
29
 
30
- // Compare objects
30
+ // For objects and arrays, detect circular references
31
31
  if (typeof a === 'object' && typeof b === 'object') {
32
+ const seenMap = seen || new Map();
33
+
34
+ // If we've already started comparing this pair, assume equal to break the cycle
35
+ const seenForA = seenMap.get(a as object);
36
+ if (seenForA && seenForA.has(b as object)) {
37
+ return true;
38
+ }
39
+
40
+ // Mark this pair as being compared
41
+ if (!seenForA) {
42
+ seenMap.set(a as object, new Set([b as object]));
43
+ } else {
44
+ seenForA.add(b as object);
45
+ }
46
+
47
+ // Compare arrays
48
+ if (Array.isArray(a) && Array.isArray(b)) {
49
+ if (a.length !== b.length) return false;
50
+ for (let i = 0; i < a.length; i++) {
51
+ if (!isEqual(a[i], b[i], seenMap)) return false;
52
+ }
53
+ return true;
54
+ }
55
+
56
+ // Compare objects
32
57
  const keysA = Object.keys(a);
33
58
  const keysB = Object.keys(b);
34
59
  if (keysA.length !== keysB.length) return false;
@@ -38,6 +63,7 @@ export default function isEqual(a: unknown, b: unknown) {
38
63
  !isEqual(
39
64
  (a as Record<string, unknown>)[key],
40
65
  (b as Record<string, unknown>)[key],
66
+ seenMap,
41
67
  )
42
68
  )
43
69
  return false;
@@ -45,11 +71,6 @@ export default function isEqual(a: unknown, b: unknown) {
45
71
  return true;
46
72
  }
47
73
 
48
- // Compare functions
49
- if (typeof a === 'function' && typeof b === 'function') {
50
- return a.toString() === b.toString();
51
- }
52
-
53
74
  // Other cases
54
75
  return false;
55
76
  }
package/src/version.ts CHANGED
@@ -4,7 +4,7 @@ declare global {
4
4
  }
5
5
  }
6
6
 
7
- export const version = "0.6.3";
7
+ export const version = "0.7.0";
8
8
 
9
9
  if (typeof window !== 'undefined') {
10
10
  window.__yee_c_version__ = version;