@rainbow-oh/yee-c 0.4.4 → 0.5.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 (272) hide show
  1. package/dist/cjs/Button/button.d.ts +1 -1
  2. package/dist/cjs/CSV/download.d.ts +1 -1
  3. package/dist/cjs/Carousel/carousel.d.ts +2 -2
  4. package/dist/cjs/Carousel/carousel.js +9 -2
  5. package/dist/cjs/Carousel/interface.d.ts +5 -0
  6. package/dist/cjs/Dialog/demo/basic.js +1 -1
  7. package/dist/cjs/Dialog/dialog.js +1 -1
  8. package/dist/cjs/Drawer/style/index.less +4 -0
  9. package/dist/cjs/Field/demo/validation.js +23 -3
  10. package/dist/cjs/Field/field.js +1 -1
  11. package/dist/cjs/FloatButton/float-button.d.ts +1 -1
  12. package/dist/cjs/Form/Field.js +1 -4
  13. package/dist/cjs/Form/Form.js +1 -1
  14. package/dist/cjs/Form/Group.js +36 -14
  15. package/dist/cjs/Form/List.js +23 -3
  16. package/dist/cjs/Form/demo/async-validate.d.ts +3 -0
  17. package/dist/cjs/Form/demo/async-validate.js +108 -0
  18. package/dist/cjs/Form/demo/basic.js +2 -2
  19. package/dist/cjs/Form/demo/virtual.js +1 -1
  20. package/dist/cjs/Form/form-store.d.ts +4 -4
  21. package/dist/cjs/Form/form-store.js +55 -25
  22. package/dist/cjs/Form/interface.d.ts +10 -7
  23. package/dist/cjs/Form/style/index.less +15 -0
  24. package/dist/cjs/Form/utils/validate.d.ts +23 -2
  25. package/dist/cjs/Form/utils/validate.js +59 -10
  26. package/dist/cjs/Input/style/index.less +0 -17
  27. package/dist/cjs/InputNumber/style/index.less +0 -29
  28. package/dist/cjs/PickerPanel/interface.d.ts +44 -2
  29. package/dist/cjs/PickerPanel/panels/DatePanel/DateBody.d.ts +2 -1
  30. package/dist/cjs/PickerPanel/panels/DatePanel/DateHeader.d.ts +2 -1
  31. package/dist/cjs/PickerPanel/panels/DatePanel/DateHeader.js +1 -1
  32. package/dist/cjs/PickerPanel/panels/DatePanel/index.d.ts +2 -1
  33. package/dist/cjs/PickerPanel/panels/DateTimePanel/index.d.ts +7 -1
  34. package/dist/cjs/PickerPanel/panels/DateTimePanel/index.js +18 -4
  35. package/dist/cjs/PickerPanel/panels/DecadePanel/DecadeBody.d.ts +2 -1
  36. package/dist/cjs/PickerPanel/panels/DecadePanel/DecadeBody.js +1 -1
  37. package/dist/cjs/PickerPanel/panels/DecadePanel/DecadeHeader.d.ts +2 -1
  38. package/dist/cjs/PickerPanel/panels/DecadePanel/DecadeHeader.js +1 -1
  39. package/dist/cjs/PickerPanel/panels/DecadePanel/index.d.ts +2 -1
  40. package/dist/cjs/PickerPanel/panels/DecadePanel/index.js +1 -1
  41. package/dist/cjs/PickerPanel/panels/Header.d.ts +13 -1
  42. package/dist/cjs/PickerPanel/panels/MonthPanel/MonthBody.d.ts +2 -1
  43. package/dist/cjs/PickerPanel/panels/MonthPanel/MonthHeader.d.ts +2 -1
  44. package/dist/cjs/PickerPanel/panels/MonthPanel/MonthHeader.js +1 -1
  45. package/dist/cjs/PickerPanel/panels/MonthPanel/index.d.ts +2 -1
  46. package/dist/cjs/PickerPanel/panels/MonthPanel/index.js +1 -1
  47. package/dist/cjs/PickerPanel/panels/PanelBody.d.ts +21 -1
  48. package/dist/cjs/PickerPanel/panels/PanelBody.js +3 -3
  49. package/dist/cjs/PickerPanel/panels/QuarterPanel/QuarterBody.d.ts +2 -1
  50. package/dist/cjs/PickerPanel/panels/QuarterPanel/QuarterHeader.d.ts +2 -1
  51. package/dist/cjs/PickerPanel/panels/QuarterPanel/index.d.ts +2 -1
  52. package/dist/cjs/PickerPanel/panels/RangePanel/index.d.ts +2 -1
  53. package/dist/cjs/PickerPanel/panels/RangePanel/index.js +2 -2
  54. package/dist/cjs/PickerPanel/panels/RangePanel/interface.d.ts +5 -5
  55. package/dist/cjs/PickerPanel/panels/TimePanel/TimeBody.d.ts +17 -1
  56. package/dist/cjs/PickerPanel/panels/TimePanel/TimeCell.d.ts +7 -1
  57. package/dist/cjs/PickerPanel/panels/TimePanel/TimeCell.js +1 -1
  58. package/dist/cjs/PickerPanel/panels/TimePanel/TimeColumn.d.ts +14 -1
  59. package/dist/cjs/PickerPanel/panels/TimePanel/TimeColumn.js +1 -1
  60. package/dist/cjs/PickerPanel/panels/TimePanel/TimeHeader.d.ts +4 -1
  61. package/dist/cjs/PickerPanel/panels/TimePanel/index.d.ts +9 -1
  62. package/dist/cjs/PickerPanel/panels/WeekPanel/WeekBody.d.ts +2 -1
  63. package/dist/cjs/PickerPanel/panels/WeekPanel/WeekHeader.d.ts +2 -1
  64. package/dist/cjs/PickerPanel/panels/WeekPanel/index.d.ts +2 -1
  65. package/dist/cjs/PickerPanel/panels/YearPanel/YearBody.d.ts +2 -1
  66. package/dist/cjs/PickerPanel/panels/YearPanel/YearBody.js +2 -2
  67. package/dist/cjs/PickerPanel/panels/YearPanel/YearHeader.d.ts +2 -1
  68. package/dist/cjs/PickerPanel/panels/YearPanel/YearHeader.js +7 -1
  69. package/dist/cjs/PickerPanel/panels/YearPanel/index.d.ts +2 -1
  70. package/dist/cjs/PickerPanel/panels/YearPanel/index.js +1 -1
  71. package/dist/cjs/PickerPanel/utils/pickerUtils.d.ts +7 -7
  72. package/dist/cjs/PickerPanel/utils/pickerUtils.js +2 -2
  73. package/dist/cjs/Select/demo/basic.js +1 -1
  74. package/dist/cjs/Select/demo/virtual.d.ts +3 -0
  75. package/dist/cjs/Select/demo/virtual.js +55 -0
  76. package/dist/cjs/Select/hooks/useSelectKeyboard.d.ts +7 -1
  77. package/dist/cjs/Select/hooks/useSelectKeyboard.js +16 -6
  78. package/dist/cjs/Select/interface.d.ts +44 -0
  79. package/dist/cjs/Select/option.js +3 -2
  80. package/dist/cjs/Select/options.js +115 -15
  81. package/dist/cjs/Select/select.js +20 -4
  82. package/dist/cjs/Select/style/index.less +17 -13
  83. package/dist/cjs/Selector/style/index.less +2 -137
  84. package/dist/cjs/Table/style/index.less +19 -0
  85. package/dist/cjs/TextArea/style/index.less +0 -17
  86. package/dist/cjs/hooks/index.d.ts +2 -1
  87. package/dist/cjs/hooks/index.js +3 -1
  88. package/dist/cjs/hooks/useEvent.js +4 -1
  89. package/dist/cjs/hooks/useVirtualList.d.ts +71 -0
  90. package/dist/cjs/hooks/useVirtualList.js +117 -0
  91. package/dist/cjs/style/size.css +1 -0
  92. package/dist/cjs/style/themes.css +1 -1
  93. package/dist/cjs/style/variables.css +2 -1
  94. package/dist/cjs/version.d.ts +1 -1
  95. package/dist/cjs/version.js +1 -1
  96. package/dist/esm/Button/button.d.ts +1 -1
  97. package/dist/esm/CSV/download.d.ts +1 -1
  98. package/dist/esm/Carousel/carousel.d.ts +2 -2
  99. package/dist/esm/Carousel/carousel.js +5 -1
  100. package/dist/esm/Carousel/interface.d.ts +5 -0
  101. package/dist/esm/Dialog/demo/basic.js +1 -1
  102. package/dist/esm/Dialog/dialog.js +1 -1
  103. package/dist/esm/Drawer/style/index.less +4 -0
  104. package/dist/esm/Field/demo/validation.js +30 -9
  105. package/dist/esm/Field/field.js +2 -1
  106. package/dist/esm/FloatButton/float-button.d.ts +1 -1
  107. package/dist/esm/Form/Field.js +3 -4
  108. package/dist/esm/Form/Form.js +1 -1
  109. package/dist/esm/Form/Group.js +142 -53
  110. package/dist/esm/Form/List.js +61 -42
  111. package/dist/esm/Form/demo/async-validate.d.ts +3 -0
  112. package/dist/esm/Form/demo/async-validate.js +95 -0
  113. package/dist/esm/Form/demo/basic.js +4 -2
  114. package/dist/esm/Form/demo/virtual.js +1 -1
  115. package/dist/esm/Form/form-store.d.ts +4 -4
  116. package/dist/esm/Form/form-store.js +187 -93
  117. package/dist/esm/Form/interface.d.ts +10 -7
  118. package/dist/esm/Form/style/index.less +15 -0
  119. package/dist/esm/Form/utils/validate.d.ts +23 -2
  120. package/dist/esm/Form/utils/validate.js +122 -17
  121. package/dist/esm/Input/style/index.less +0 -17
  122. package/dist/esm/InputNumber/style/index.less +0 -29
  123. package/dist/esm/PickerPanel/interface.d.ts +44 -2
  124. package/dist/esm/PickerPanel/panels/DatePanel/DateBody.d.ts +2 -1
  125. package/dist/esm/PickerPanel/panels/DatePanel/DateHeader.d.ts +2 -1
  126. package/dist/esm/PickerPanel/panels/DatePanel/DateHeader.js +1 -1
  127. package/dist/esm/PickerPanel/panels/DatePanel/index.d.ts +2 -1
  128. package/dist/esm/PickerPanel/panels/DateTimePanel/index.d.ts +7 -1
  129. package/dist/esm/PickerPanel/panels/DateTimePanel/index.js +11 -7
  130. package/dist/esm/PickerPanel/panels/DecadePanel/DecadeBody.d.ts +2 -1
  131. package/dist/esm/PickerPanel/panels/DecadePanel/DecadeBody.js +2 -1
  132. package/dist/esm/PickerPanel/panels/DecadePanel/DecadeHeader.d.ts +2 -1
  133. package/dist/esm/PickerPanel/panels/DecadePanel/DecadeHeader.js +2 -1
  134. package/dist/esm/PickerPanel/panels/DecadePanel/index.d.ts +2 -1
  135. package/dist/esm/PickerPanel/panels/DecadePanel/index.js +1 -1
  136. package/dist/esm/PickerPanel/panels/Header.d.ts +13 -1
  137. package/dist/esm/PickerPanel/panels/MonthPanel/MonthBody.d.ts +2 -1
  138. package/dist/esm/PickerPanel/panels/MonthPanel/MonthHeader.d.ts +2 -1
  139. package/dist/esm/PickerPanel/panels/MonthPanel/MonthHeader.js +2 -1
  140. package/dist/esm/PickerPanel/panels/MonthPanel/index.d.ts +2 -1
  141. package/dist/esm/PickerPanel/panels/MonthPanel/index.js +1 -1
  142. package/dist/esm/PickerPanel/panels/PanelBody.d.ts +21 -1
  143. package/dist/esm/PickerPanel/panels/PanelBody.js +2 -4
  144. package/dist/esm/PickerPanel/panels/QuarterPanel/QuarterBody.d.ts +2 -1
  145. package/dist/esm/PickerPanel/panels/QuarterPanel/QuarterHeader.d.ts +2 -1
  146. package/dist/esm/PickerPanel/panels/QuarterPanel/index.d.ts +2 -1
  147. package/dist/esm/PickerPanel/panels/RangePanel/index.d.ts +2 -1
  148. package/dist/esm/PickerPanel/panels/RangePanel/index.js +2 -2
  149. package/dist/esm/PickerPanel/panels/RangePanel/interface.d.ts +5 -5
  150. package/dist/esm/PickerPanel/panels/TimePanel/TimeBody.d.ts +17 -1
  151. package/dist/esm/PickerPanel/panels/TimePanel/TimeCell.d.ts +7 -1
  152. package/dist/esm/PickerPanel/panels/TimePanel/TimeCell.js +1 -1
  153. package/dist/esm/PickerPanel/panels/TimePanel/TimeColumn.d.ts +14 -1
  154. package/dist/esm/PickerPanel/panels/TimePanel/TimeColumn.js +1 -1
  155. package/dist/esm/PickerPanel/panels/TimePanel/TimeHeader.d.ts +4 -1
  156. package/dist/esm/PickerPanel/panels/TimePanel/index.d.ts +9 -1
  157. package/dist/esm/PickerPanel/panels/WeekPanel/WeekBody.d.ts +2 -1
  158. package/dist/esm/PickerPanel/panels/WeekPanel/WeekHeader.d.ts +2 -1
  159. package/dist/esm/PickerPanel/panels/WeekPanel/index.d.ts +2 -1
  160. package/dist/esm/PickerPanel/panels/YearPanel/YearBody.d.ts +2 -1
  161. package/dist/esm/PickerPanel/panels/YearPanel/YearBody.js +3 -2
  162. package/dist/esm/PickerPanel/panels/YearPanel/YearHeader.d.ts +2 -1
  163. package/dist/esm/PickerPanel/panels/YearPanel/YearHeader.js +2 -1
  164. package/dist/esm/PickerPanel/panels/YearPanel/index.d.ts +2 -1
  165. package/dist/esm/PickerPanel/panels/YearPanel/index.js +1 -1
  166. package/dist/esm/PickerPanel/picker-panel.js +3 -0
  167. package/dist/esm/PickerPanel/utils/pickerUtils.d.ts +7 -7
  168. package/dist/esm/PickerPanel/utils/pickerUtils.js +4 -10
  169. package/dist/esm/Select/demo/basic.js +1 -1
  170. package/dist/esm/Select/demo/virtual.d.ts +3 -0
  171. package/dist/esm/Select/demo/virtual.js +38 -0
  172. package/dist/esm/Select/hooks/useSelectKeyboard.d.ts +7 -1
  173. package/dist/esm/Select/hooks/useSelectKeyboard.js +25 -9
  174. package/dist/esm/Select/interface.d.ts +44 -0
  175. package/dist/esm/Select/option.js +4 -2
  176. package/dist/esm/Select/options.js +132 -13
  177. package/dist/esm/Select/select.js +19 -4
  178. package/dist/esm/Select/style/index.less +17 -13
  179. package/dist/esm/Selector/style/index.less +2 -137
  180. package/dist/esm/Table/style/index.less +19 -0
  181. package/dist/esm/TextArea/style/index.less +0 -17
  182. package/dist/esm/hooks/index.d.ts +2 -1
  183. package/dist/esm/hooks/index.js +2 -1
  184. package/dist/esm/hooks/useVirtualList.d.ts +71 -0
  185. package/dist/esm/hooks/useVirtualList.js +129 -0
  186. package/dist/esm/style/size.css +1 -0
  187. package/dist/esm/style/themes.css +1 -1
  188. package/dist/esm/style/variables.css +2 -1
  189. package/dist/esm/version.d.ts +1 -1
  190. package/dist/esm/version.js +1 -1
  191. package/dist/umd/yee-c.min.css +2 -2
  192. package/dist/umd/yee-c.min.js +1 -1
  193. package/package.json +1 -1
  194. package/src/Carousel/carousel.tsx +14 -3
  195. package/src/Carousel/interface.ts +6 -0
  196. package/src/Cascader/cascader.tsx +3 -1
  197. package/src/Cascader/column.tsx +1 -1
  198. package/src/Dialog/demo/basic.tsx +1 -1
  199. package/src/Dialog/dialog.tsx +1 -1
  200. package/src/Drawer/style/index.less +4 -0
  201. package/src/Dropdown/dropdown.tsx +1 -1
  202. package/src/Field/demo/validation.tsx +2 -2
  203. package/src/Field/field.tsx +2 -1
  204. package/src/Field/index.en-US.md +1 -1
  205. package/src/Field/index.zh-CN.md +1 -1
  206. package/src/FloatButton/float-button.tsx +5 -3
  207. package/src/Form/Field.tsx +3 -4
  208. package/src/Form/Form.tsx +1 -1
  209. package/src/Form/Group.tsx +15 -12
  210. package/src/Form/List.tsx +3 -3
  211. package/src/Form/demo/async-validate.tsx +71 -0
  212. package/src/Form/demo/basic.tsx +2 -2
  213. package/src/Form/demo/virtual.tsx +1 -1
  214. package/src/Form/form-store.ts +37 -21
  215. package/src/Form/index.en-US.md +6 -5
  216. package/src/Form/index.zh-CN.md +6 -5
  217. package/src/Form/interface.ts +13 -7
  218. package/src/Form/style/index.less +15 -0
  219. package/src/Form/utils/validate.ts +65 -13
  220. package/src/Input/style/index.less +0 -17
  221. package/src/InputNumber/style/index.less +0 -29
  222. package/src/PickerPanel/interface.ts +43 -2
  223. package/src/PickerPanel/panels/DatePanel/DateBody.tsx +2 -1
  224. package/src/PickerPanel/panels/DatePanel/DateHeader.tsx +3 -2
  225. package/src/PickerPanel/panels/DatePanel/index.tsx +2 -1
  226. package/src/PickerPanel/panels/DateTimePanel/index.tsx +12 -5
  227. package/src/PickerPanel/panels/DecadePanel/DecadeBody.tsx +3 -2
  228. package/src/PickerPanel/panels/DecadePanel/DecadeHeader.tsx +3 -2
  229. package/src/PickerPanel/panels/DecadePanel/index.tsx +3 -2
  230. package/src/PickerPanel/panels/Header.tsx +14 -1
  231. package/src/PickerPanel/panels/MonthPanel/MonthBody.tsx +2 -1
  232. package/src/PickerPanel/panels/MonthPanel/MonthHeader.tsx +3 -2
  233. package/src/PickerPanel/panels/MonthPanel/index.tsx +3 -2
  234. package/src/PickerPanel/panels/PanelBody.tsx +27 -5
  235. package/src/PickerPanel/panels/QuarterPanel/QuarterBody.tsx +2 -1
  236. package/src/PickerPanel/panels/QuarterPanel/QuarterHeader.tsx +2 -1
  237. package/src/PickerPanel/panels/QuarterPanel/index.tsx +2 -1
  238. package/src/PickerPanel/panels/RangePanel/index.tsx +11 -9
  239. package/src/PickerPanel/panels/RangePanel/interface.ts +5 -5
  240. package/src/PickerPanel/panels/TimePanel/TimeBody.tsx +21 -5
  241. package/src/PickerPanel/panels/TimePanel/TimeCell.tsx +9 -2
  242. package/src/PickerPanel/panels/TimePanel/TimeColumn.tsx +15 -2
  243. package/src/PickerPanel/panels/TimePanel/TimeHeader.tsx +5 -1
  244. package/src/PickerPanel/panels/TimePanel/index.tsx +10 -1
  245. package/src/PickerPanel/panels/WeekPanel/WeekBody.tsx +2 -1
  246. package/src/PickerPanel/panels/WeekPanel/WeekHeader.tsx +2 -1
  247. package/src/PickerPanel/panels/WeekPanel/index.tsx +2 -1
  248. package/src/PickerPanel/panels/YearPanel/YearBody.tsx +4 -3
  249. package/src/PickerPanel/panels/YearPanel/YearHeader.tsx +9 -3
  250. package/src/PickerPanel/panels/YearPanel/index.tsx +3 -2
  251. package/src/PickerPanel/picker-panel.tsx +5 -3
  252. package/src/PickerPanel/utils/pickerUtils.ts +17 -8
  253. package/src/Select/demo/basic.tsx +1 -1
  254. package/src/Select/demo/virtual.tsx +25 -0
  255. package/src/Select/hooks/useSelectKeyboard.ts +30 -6
  256. package/src/Select/index.en-US.md +4 -0
  257. package/src/Select/index.zh-CN.md +4 -0
  258. package/src/Select/interface.ts +48 -2
  259. package/src/Select/option.tsx +2 -1
  260. package/src/Select/options.tsx +139 -8
  261. package/src/Select/select.tsx +23 -1
  262. package/src/Select/style/index.less +17 -13
  263. package/src/Selector/style/index.less +2 -137
  264. package/src/Splitter/hooks/useMove.ts +2 -2
  265. package/src/Table/style/index.less +19 -0
  266. package/src/TextArea/style/index.less +0 -17
  267. package/src/hooks/index.ts +2 -0
  268. package/src/hooks/useEvent.ts +7 -4
  269. package/src/hooks/useMergedState.ts +6 -4
  270. package/src/hooks/useVirtualList.ts +169 -0
  271. package/src/style/size.css +1 -0
  272. package/src/version.ts +1 -1
@@ -83,7 +83,10 @@ var Select = (baseprops) => {
83
83
  optionFilterProp = "label",
84
84
  disabled,
85
85
  onChange,
86
- onFilter
86
+ onFilter,
87
+ virtual,
88
+ itemHeight,
89
+ listHeight
87
90
  } = _a, rest = __objRest(_a, [
88
91
  "prefixCls",
89
92
  "options",
@@ -94,7 +97,10 @@ var Select = (baseprops) => {
94
97
  "optionFilterProp",
95
98
  "disabled",
96
99
  "onChange",
97
- "onFilter"
100
+ "onFilter",
101
+ "virtual",
102
+ "itemHeight",
103
+ "listHeight"
98
104
  ]);
99
105
  const single = mode !== "multiple" && mode !== "tags" ? true : false;
100
106
  const handleState = (value2) => {
@@ -114,6 +120,11 @@ var Select = (baseprops) => {
114
120
  const [searchValue, setSearchValue] = (0, import_react.useState)("");
115
121
  const [open, setOpen] = (0, import_react.useState)(false);
116
122
  const popupRef = (0, import_react.useRef)(null);
123
+ const virtualApiRef = (0, import_react.useRef)(null);
124
+ const handleVirtualScrollToIndex = (0, import_react.useCallback)((index) => {
125
+ var _a2;
126
+ (_a2 = virtualApiRef.current) == null ? void 0 : _a2.scrollToIndex(index);
127
+ }, []);
117
128
  const getOptions = (keys) => {
118
129
  if (keys === "" || keys === null) {
119
130
  return void 0;
@@ -184,7 +195,8 @@ var Select = (baseprops) => {
184
195
  onSelect: handleSelect,
185
196
  onClose: () => setOpen(false),
186
197
  onOpenChange: handleOpenChange,
187
- containerRef: popupRef
198
+ containerRef: popupRef,
199
+ scrollToIndex: virtual ? handleVirtualScrollToIndex : void 0
188
200
  });
189
201
  const popup = /* @__PURE__ */ import_react.default.createElement(
190
202
  import_options.default,
@@ -196,7 +208,11 @@ var Select = (baseprops) => {
196
208
  selectedKeys: mergedValue,
197
209
  dataTestId: rest["data-testid"],
198
210
  onSelect: handleSelect,
199
- ref: popupRef
211
+ ref: popupRef,
212
+ virtual,
213
+ itemHeight,
214
+ listHeight,
215
+ virtualApiRef
200
216
  }
201
217
  );
202
218
  return /* @__PURE__ */ import_react.default.createElement(
@@ -8,6 +8,17 @@
8
8
  overflow: auto;
9
9
  }
10
10
 
11
+ // Virtual mode: the popup no longer scrolls itself; the inner viewport does.
12
+ // Without this override there would be two scrollbars.
13
+ &-popup-virtual {
14
+ max-height: none;
15
+ overflow: visible;
16
+ }
17
+
18
+ &-popup-viewport {
19
+ overflow-y: auto;
20
+ }
21
+
11
22
  &-option {
12
23
  display: flex;
13
24
  padding: var(--yee-select-option-padding);
@@ -37,20 +48,13 @@
37
48
  }
38
49
  }
39
50
 
40
- &-empty {
41
- padding: var(--yee-select-option-padding);
42
- }
43
- }
44
-
45
- // form error status
46
- .yee-form-item-error {
47
- @{pls} {
48
- border-color: var(--yee-error-color);
51
+ // In virtual mode each option has a fixed inline height; center its content
52
+ // vertically so it stays aligned regardless of the inherited line-height.
53
+ &-popup-virtual &-option {
54
+ align-items: center;
49
55
  }
50
- }
51
56
 
52
- .yee-form-item-warning {
53
- @{pls} {
54
- border-color: var(--yee-warning-color);
57
+ &-empty {
58
+ padding: var(--yee-select-option-padding);
55
59
  }
56
60
  }
@@ -5,8 +5,7 @@
5
5
  box-sizing: border-box;
6
6
  width: 100%;
7
7
  padding: var(--yee-selector-padding);
8
- border: var(--yee-selector-border-width) solid
9
- var(--yee-selector-border-color);
8
+ border: var(--yee-selector-border-width) solid var(--yee-input-border-color);
10
9
  border-radius: var(--yee-selector-border-radius);
11
10
 
12
11
  &-small {
@@ -145,7 +144,7 @@
145
144
 
146
145
  &:not(@{pls}-disabled) {
147
146
  &:hover {
148
- border-color: var(--yee-selector-hover-border-color);
147
+ border-color: var(--yee-input-hover-border-color);
149
148
  }
150
149
  }
151
150
 
@@ -206,137 +205,3 @@
206
205
  }
207
206
  }
208
207
  }
209
-
210
- // .yee-tags-searchable {
211
- // cursor: text;
212
-
213
- // .yee-tags-input-wrapper {
214
- // width: 100%;
215
- // padding: 0;
216
- // border: none;
217
- // outline: none;
218
-
219
- // &:focus {
220
- // border: none;
221
- // box-shadow: none;
222
- // }
223
- // }
224
-
225
- // .yee-tags-icon {
226
- // width: auto;
227
- // }
228
- // }
229
-
230
- // .yee-tags-single-mode {
231
- // height: var(--yee-tags-height);
232
-
233
- // .yee-tags-input-container {
234
- // position: absolute;
235
- // z-index: -1;
236
- // width: 100%;
237
- // font-size: var(--yee-tags-input-font-size);
238
- // line-height: var(--yee-tags-input-line-height);
239
-
240
- // input {
241
- // width: 100%;
242
- // }
243
- // }
244
-
245
- // &.yee-tags-searchable {
246
- // .yee-tags-single-option {
247
- // width: 100%;
248
- // }
249
-
250
- // .yee-tags-container {
251
- // &:focus-within,
252
- // &:focus {
253
- // .yee-tags-input-container {
254
- // z-index: 1;
255
- // opacity: var(--yee-tags-input-focus-opacity);
256
-
257
- // &.has-value {
258
- // opacity: 1;
259
-
260
- // + .yee-tags-single-option {
261
- // display: none;
262
- // }
263
- // }
264
- // }
265
-
266
- // .yee-tags-single-option {
267
- // opacity: var(--yee-tags-single-option-focus-opacity);
268
- // }
269
- // }
270
- // }
271
- // }
272
- // }
273
-
274
- // .yee-tags-multi-mode {
275
- // height: auto;
276
- // min-height: var(--yee-tags-multi-min-height);
277
-
278
- // &.yee-tags-searchable {
279
- // .yee-tag {
280
- // max-width: var(--yee-tags-multi-tag-max-width);
281
- // height: var(--yee-tags-multi-tag-height);
282
- // }
283
- // }
284
-
285
- // .yee-tags-container {
286
- // flex-wrap: wrap;
287
- // }
288
-
289
- // .yee-tags-input-container {
290
- // display: inline-grid;
291
- // // color: var(--yee-tags-input-container-font-color);
292
- // flex: 1 1 auto;
293
- // grid-area: 1 / 1 / 2 / 3;
294
- // grid-template-columns: 0 min-content;
295
- // box-sizing: border-box;
296
- // height: var(--yee-tags-multi-input-height);
297
-
298
- // &::after {
299
- // grid-area: 1 / 2 / auto / auto;
300
- // min-width: var(--yee-tags-multi-input-after-min-width);
301
- // margin: 0;
302
- // padding: 0;
303
- // font: inherit;
304
- // white-space: pre;
305
- // border: 0;
306
- // outline: 0;
307
- // visibility: hidden;
308
- // content: attr(data-value) ' ';
309
- // }
310
-
311
- // & > input {
312
- // grid-area: 1 / 2 / auto / auto;
313
- // width: 100%;
314
- // min-width: var(--yee-tags-multi-input-min-width);
315
- // height: var(--yee-tags-multi-input-height);
316
- // margin: 0;
317
- // padding: 0;
318
- // font: inherit;
319
- // background-color: transparent;
320
- // border: 0;
321
- // outline: 0;
322
- // opacity: 1;
323
- // }
324
- // }
325
- // }
326
-
327
- // form error status
328
- .yee-form-item-error {
329
- @{pls} {
330
- border-color: var(--yee-error-color);
331
-
332
- &:hover {
333
- border-color: var(--yee-error-color-hover);
334
- }
335
- }
336
- }
337
-
338
- .yee-form-item-warning {
339
- @{pls} {
340
- border-color: var(--yee-warning-color);
341
- }
342
- }
@@ -23,13 +23,32 @@
23
23
  var(--yee-table-tbody-td-borderbottom-color);
24
24
  }
25
25
  }
26
+
27
+ @{pls}-cell {
28
+ &::before {
29
+ display: none;
30
+ }
31
+ }
26
32
  }
27
33
 
28
34
  &-thead {
29
35
  color: var(--yee-table-thead-color);
30
36
 
31
37
  @{pls}-cell {
38
+ position: relative;
32
39
  background-color: var(--yee-table-thead-bg-color);
40
+
41
+ &:not(:last-child):not(@{pls}-expand-col) {
42
+ &::before {
43
+ position: absolute;
44
+ content: '';
45
+ width: 1.5px;
46
+ height: 30%;
47
+ top: 35%;
48
+ right: 0;
49
+ background-color: var(--yee-table-head-cell-split-line-color, #eee);
50
+ }
51
+ }
33
52
  }
34
53
 
35
54
  &-cell {
@@ -98,20 +98,3 @@
98
98
  cursor: not-allowed;
99
99
  }
100
100
  }
101
-
102
- // form error status
103
- .yee-form-item-error {
104
- @{pls} {
105
- border-color: var(--yee-error-color);
106
-
107
- &:hover {
108
- border-color: var(--yee-error-color-hover);
109
- }
110
- }
111
- }
112
-
113
- .yee-form-item-warning {
114
- @{pls} {
115
- border-color: var(--yee-warning-color);
116
- }
117
- }
@@ -16,4 +16,5 @@ import useMount from './useMount';
16
16
  import usePrevious from './usePrevious';
17
17
  import useUpdateEffect from './useUpdateEffect';
18
18
  import useVirtualForm from './useVirtualForm';
19
- export { useBreakpoint, useDebounceFunction, useDebounceValue, useDeepCompareEffect, useDeepCompareMemo, useDeepCompareMemoize, useDelayState, useEsc, useEvent, useIntersectionObserver, useKeyControl, useLatest, useLayoutEffect, useMergedState, useMount, usePrevious, useUpdateEffect, useVirtualForm, };
19
+ import useVirtualList from './useVirtualList';
20
+ export { useBreakpoint, useDebounceFunction, useDebounceValue, useDeepCompareEffect, useDeepCompareMemo, useDeepCompareMemoize, useDelayState, useEsc, useEvent, useIntersectionObserver, useKeyControl, useLatest, useLayoutEffect, useMergedState, useMount, usePrevious, useUpdateEffect, useVirtualForm, useVirtualList, };
@@ -46,7 +46,8 @@ __export(hooks_exports, {
46
46
  useMount: () => import_useMount.default,
47
47
  usePrevious: () => import_usePrevious.default,
48
48
  useUpdateEffect: () => import_useUpdateEffect.default,
49
- useVirtualForm: () => import_useVirtualForm.default
49
+ useVirtualForm: () => import_useVirtualForm.default,
50
+ useVirtualList: () => import_useVirtualList.default
50
51
  });
51
52
  module.exports = __toCommonJS(hooks_exports);
52
53
  var import_useBreakpoint = __toESM(require("./useBreakpoint"));
@@ -67,3 +68,4 @@ var import_useMount = __toESM(require("./useMount"));
67
68
  var import_usePrevious = __toESM(require("./usePrevious"));
68
69
  var import_useUpdateEffect = __toESM(require("./useUpdateEffect"));
69
70
  var import_useVirtualForm = __toESM(require("./useVirtualForm"));
71
+ var import_useVirtualList = __toESM(require("./useVirtualList"));
@@ -39,7 +39,10 @@ function useEvent(callback) {
39
39
  const memoFn = import_react.default.useCallback(
40
40
  (...args) => {
41
41
  var _a;
42
- return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);
42
+ return (_a = ref.current) == null ? void 0 : _a.call(
43
+ ref,
44
+ ...args
45
+ );
43
46
  },
44
47
  []
45
48
  );
@@ -0,0 +1,71 @@
1
+ import React from 'react';
2
+ export interface UseVirtualListOptions {
3
+ /**
4
+ * Total number of items in the list.
5
+ */
6
+ itemCount: number;
7
+ /**
8
+ * Fixed height of every item in pixels.
9
+ */
10
+ itemHeight: number;
11
+ /**
12
+ * Extra items rendered above and below the visible window
13
+ * to avoid white flashes while scrolling.
14
+ * @default 4
15
+ */
16
+ overscan?: number;
17
+ }
18
+ export interface UseVirtualListResult {
19
+ /**
20
+ * Inclusive start index of the render window (already includes overscan).
21
+ */
22
+ start: number;
23
+ /**
24
+ * Exclusive end index of the render window (already includes overscan).
25
+ */
26
+ end: number;
27
+ /**
28
+ * Vertical offset to apply to the rendered block, equal to `start * itemHeight`.
29
+ * Use it as `transform: translateY(offsetY)` or `top: offsetY`.
30
+ */
31
+ offsetY: number;
32
+ /**
33
+ * Total scrollable height, equal to `itemCount * itemHeight`.
34
+ * Apply it to the inner spacer element so the scrollbar matches the full list.
35
+ */
36
+ totalHeight: number;
37
+ /**
38
+ * Ref to bind to the scroll container element.
39
+ */
40
+ viewportRef: React.RefObject<HTMLDivElement | null>;
41
+ /**
42
+ * Stable scroll handler (rAF-throttled). Bind to the viewport's `onScroll`.
43
+ */
44
+ onScroll: () => void;
45
+ /**
46
+ * Scroll the viewport so that the item at `index` is visible.
47
+ * Used by keyboard navigation to replace `scrollIntoView`.
48
+ */
49
+ scrollToIndex: (index: number) => void;
50
+ }
51
+ /**
52
+ * Fixed-height virtual scrolling hook.
53
+ *
54
+ * Renders only the items inside the visible window (plus an `overscan` buffer)
55
+ * and keeps the DOM node count constant regardless of `itemCount`.
56
+ *
57
+ * Usage:
58
+ * const { start, end, offsetY, totalHeight, viewportRef, onScroll, scrollToIndex } =
59
+ * useVirtualList({ itemCount, itemHeight });
60
+ *
61
+ * <div ref={viewportRef} onScroll={onScroll} style={{ maxHeight: 200, overflowY: 'auto' }}>
62
+ * <div style={{ height: totalHeight, position: 'relative' }}>
63
+ * {items.slice(start, end).map((it, i) => (
64
+ * <div key={it.key} style={{ position: 'absolute', height: itemHeight, transform: `translateY(${offsetY + i * itemHeight}px)` }}>
65
+ * {it.content}
66
+ * </div>
67
+ * ))}
68
+ * </div>
69
+ * </div>
70
+ */
71
+ export default function useVirtualList({ itemCount, itemHeight, overscan, }: UseVirtualListOptions): UseVirtualListResult;
@@ -0,0 +1,117 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/hooks/useVirtualList.ts
30
+ var useVirtualList_exports = {};
31
+ __export(useVirtualList_exports, {
32
+ default: () => useVirtualList
33
+ });
34
+ module.exports = __toCommonJS(useVirtualList_exports);
35
+ var import_react = require("react");
36
+ var import_useEvent = __toESM(require("./useEvent"));
37
+ var import_useResizeObserver = __toESM(require("./useResizeObserver"));
38
+ function useVirtualList({
39
+ itemCount,
40
+ itemHeight,
41
+ overscan = 4
42
+ }) {
43
+ const [scrollTop, setScrollTop] = (0, import_react.useState)(0);
44
+ const [visibleHeight, setVisibleHeight] = (0, import_react.useState)(0);
45
+ const rafRef = (0, import_react.useRef)(null);
46
+ const { ref: viewportRef } = (0, import_useResizeObserver.default)((entries) => {
47
+ const entry = entries[0];
48
+ if (!entry)
49
+ return;
50
+ const h = entry.contentRect.height;
51
+ setVisibleHeight((prev) => prev === h ? prev : h);
52
+ });
53
+ const totalHeight = itemCount * itemHeight;
54
+ const readViewport = (0, import_useEvent.default)(() => {
55
+ const viewport = viewportRef.current;
56
+ if (!viewport)
57
+ return;
58
+ const top = viewport.scrollTop;
59
+ const h = viewport.clientHeight;
60
+ setScrollTop((prev) => prev === top ? prev : top);
61
+ setVisibleHeight((prev) => prev === h ? prev : h);
62
+ });
63
+ const onScroll = (0, import_useEvent.default)(() => {
64
+ if (rafRef.current !== null)
65
+ return;
66
+ rafRef.current = requestAnimationFrame(() => {
67
+ rafRef.current = null;
68
+ readViewport();
69
+ });
70
+ });
71
+ (0, import_react.useEffect)(
72
+ () => () => {
73
+ if (rafRef.current !== null) {
74
+ cancelAnimationFrame(rafRef.current);
75
+ }
76
+ },
77
+ []
78
+ );
79
+ (0, import_react.useEffect)(() => {
80
+ readViewport();
81
+ }, [readViewport]);
82
+ (0, import_react.useEffect)(() => {
83
+ const viewport = viewportRef.current;
84
+ if (!viewport)
85
+ return;
86
+ const maxScroll = Math.max(0, totalHeight - viewport.clientHeight);
87
+ if (viewport.scrollTop > maxScroll) {
88
+ viewport.scrollTop = maxScroll;
89
+ setScrollTop(maxScroll);
90
+ }
91
+ }, [totalHeight, viewportRef]);
92
+ const scrollToIndex = (0, import_useEvent.default)((index) => {
93
+ const viewport = viewportRef.current;
94
+ if (!viewport)
95
+ return;
96
+ const maxScroll = Math.max(0, totalHeight - viewport.clientHeight);
97
+ const target = Math.min(Math.max(0, index * itemHeight), maxScroll);
98
+ if (viewport.scrollTop !== target) {
99
+ viewport.scrollTop = target;
100
+ }
101
+ readViewport();
102
+ });
103
+ const effectiveVisibleHeight = visibleHeight || itemHeight;
104
+ const visibleCount = Math.ceil(effectiveVisibleHeight / itemHeight);
105
+ const start = Math.max(0, Math.floor(scrollTop / itemHeight) - overscan);
106
+ const end = Math.min(itemCount, start + visibleCount + overscan * 2);
107
+ const offsetY = start * itemHeight;
108
+ return {
109
+ start,
110
+ end,
111
+ offsetY,
112
+ totalHeight,
113
+ viewportRef,
114
+ onScroll,
115
+ scrollToIndex
116
+ };
117
+ }
@@ -246,6 +246,7 @@
246
246
  --yee-drawer-body-padding: 20px 24px;
247
247
  --yee-drawer-close-top: 20px;
248
248
  --yee-drawer-close-right: 20px;
249
+ --yee-drawer-title-font-weight: 500;
249
250
 
250
251
  /* --Field-- */
251
252
  --yee-field-gap: 8px;
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * @rainbow-oh/yee-c CSS Variables
3
3
  * Auto-generated, do not edit manually
4
- * Generated on 2026-07-03T02:41:11.107Z
4
+ * Generated on 2026-07-07T06:37:47.907Z
5
5
  */
6
6
 
7
7
  /* ========== color.blue.css ========== */
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * @rainbow-oh/yee-c CSS Variables
3
3
  * Auto-generated, do not edit manually
4
- * Generated on 2026-07-03T02:41:11.107Z
4
+ * Generated on 2026-07-07T06:37:47.907Z
5
5
  */
6
6
 
7
7
  /* ========== color.css ========== */
@@ -1364,6 +1364,7 @@
1364
1364
  --yee-drawer-body-padding: 20px 24px;
1365
1365
  --yee-drawer-close-top: 20px;
1366
1366
  --yee-drawer-close-right: 20px;
1367
+ --yee-drawer-title-font-weight: 500;
1367
1368
 
1368
1369
  /* --Field-- */
1369
1370
  --yee-field-gap: 8px;
@@ -3,4 +3,4 @@ declare global {
3
3
  __yee_c_version__: string;
4
4
  }
5
5
  }
6
- export declare const version = "0.4.4";
6
+ export declare const version = "0.5.0";
@@ -22,7 +22,7 @@ __export(version_exports, {
22
22
  version: () => version
23
23
  });
24
24
  module.exports = __toCommonJS(version_exports);
25
- var version = "0.4.4";
25
+ var version = "0.5.0";
26
26
  if (typeof window !== "undefined") {
27
27
  window.__yee_c_version__ = version;
28
28
  }
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { ButtonProps } from './interface';
3
3
  import './style/index.less';
4
- declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
4
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
5
5
  export default Button;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import type { CSVDownloderProps } from './interface';
3
- declare const Link: React.ForwardRefExoticComponent<CSVDownloderProps & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
3
+ declare const Link: React.ForwardRefExoticComponent<CSVDownloderProps & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
4
4
  export default Link;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import type { CarouselProps } from './interface';
2
+ import type { CarouselContextProps, CarouselProps } from './interface';
3
3
  import './style/index.less';
4
- export declare const CarouselCtx: React.Context<any>;
4
+ export declare const CarouselCtx: React.Context<CarouselContextProps>;
5
5
  declare const Carousel: React.ForwardRefExoticComponent<CarouselProps & React.RefAttributes<HTMLDivElement>>;
6
6
  export default Carousel;
@@ -27,7 +27,11 @@ import mergeContextToProps from "../utils/mergeContextToProps";
27
27
  import Item from "./carousel-item";
28
28
  import "./style/index.less";
29
29
  var DEFAULT_ANIMATION_DURATION = 500;
30
- export var CarouselCtx = /*#__PURE__*/React.createContext({});
30
+ export var CarouselCtx = /*#__PURE__*/React.createContext({
31
+ prefixCls: 'yee-carousel',
32
+ effect: 'scrollx',
33
+ current: 1
34
+ });
31
35
  var Carousel = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
32
36
  var _useContext = useContext(GlobalContext),
33
37
  carousel = _useContext.carousel;
@@ -1,5 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  export type SemanticDOM = 'dot' | 'prev' | 'next';
3
+ export interface CarouselContextProps {
4
+ prefixCls: string;
5
+ effect: 'fade' | 'scrollx';
6
+ current: number;
7
+ }
3
8
  export interface CarouselItemProps {
4
9
  index: number;
5
10
  style?: React.CSSProperties;
@@ -30,7 +30,7 @@ export default (function () {
30
30
  // form.resetFields();
31
31
  },
32
32
  onConfirm: function onConfirm() {
33
- return form.submit();
33
+ return void form.submit();
34
34
  }
35
35
  }, /*#__PURE__*/React.createElement(Form, {
36
36
  form: form,
@@ -116,7 +116,7 @@ var Dialog = function Dialog(baseprops) {
116
116
  useFocusManage(contentRef.current, delayOpen);
117
117
  var cls = clsx(prefixCls, _defineProperty(_defineProperty({}, "".concat(prefixCls, "-open"), delayOpen), "".concat(prefixCls, "-fullscreen"), fullscreen));
118
118
  var renderFooter = function renderFooter() {
119
- if (footer === false) {
119
+ if (footer === false || footer === null) {
120
120
  return null;
121
121
  }
122
122
  if (footer === true || footer === undefined) {
@@ -37,6 +37,10 @@
37
37
  padding: var(--yee-drawer-header-padding);
38
38
  }
39
39
 
40
+ &-title {
41
+ font-weight: var(--yee-drawer-title-font-weight);
42
+ }
43
+
40
44
  &-body {
41
45
  flex: 1;
42
46
  padding: var(--yee-drawer-body-padding);