wssf-kage-ui 0.1.0 → 0.1.2

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 (306) hide show
  1. package/README.md +4 -4
  2. package/dist/cjs/Anchor/index.d.ts +56 -0
  3. package/dist/cjs/Anchor/index.js +307 -0
  4. package/dist/cjs/Anchor/style.less +183 -0
  5. package/dist/cjs/AutoComplete/index.d.ts +54 -0
  6. package/dist/cjs/AutoComplete/index.js +273 -0
  7. package/dist/cjs/AutoComplete/style.less +325 -0
  8. package/dist/cjs/Avatar/index.d.ts +47 -0
  9. package/dist/cjs/Avatar/index.js +147 -0
  10. package/dist/cjs/Avatar/style.less +193 -0
  11. package/dist/cjs/Badge/index.d.ts +48 -0
  12. package/dist/cjs/Badge/index.js +141 -0
  13. package/dist/cjs/Badge/style.less +237 -0
  14. package/dist/cjs/Breadcrumb/index.d.ts +51 -0
  15. package/dist/cjs/Breadcrumb/index.js +129 -0
  16. package/dist/cjs/Breadcrumb/style.less +96 -0
  17. package/dist/cjs/Calendar/index.d.ts +33 -0
  18. package/dist/cjs/Calendar/index.js +296 -0
  19. package/dist/cjs/Calendar/style.less +384 -0
  20. package/dist/cjs/Card/index.d.ts +68 -0
  21. package/dist/cjs/Card/index.js +155 -0
  22. package/dist/cjs/Card/style.less +356 -0
  23. package/dist/cjs/Carousel/index.d.ts +33 -0
  24. package/dist/cjs/Carousel/index.js +169 -0
  25. package/dist/cjs/Carousel/style.less +232 -0
  26. package/dist/cjs/Cascader/index.d.ts +53 -0
  27. package/dist/cjs/Cascader/index.js +338 -0
  28. package/dist/cjs/Cascader/style.less +457 -0
  29. package/dist/cjs/Checkbox/index.d.ts +52 -0
  30. package/dist/cjs/Checkbox/index.js +158 -0
  31. package/dist/cjs/Checkbox/style.less +211 -0
  32. package/dist/cjs/Collapse/index.d.ts +55 -0
  33. package/dist/cjs/Collapse/index.js +191 -0
  34. package/dist/cjs/Collapse/style.less +217 -0
  35. package/dist/cjs/ColorPicker/index.d.ts +28 -0
  36. package/dist/cjs/ColorPicker/index.js +381 -0
  37. package/dist/cjs/ColorPicker/style.less +276 -0
  38. package/dist/cjs/DatePicker/index.d.ts +32 -0
  39. package/dist/cjs/DatePicker/index.js +377 -0
  40. package/dist/cjs/DatePicker/style.less +498 -0
  41. package/dist/cjs/Descriptions/index.d.ts +54 -0
  42. package/dist/cjs/Descriptions/index.js +181 -0
  43. package/dist/cjs/Descriptions/style.less +259 -0
  44. package/dist/cjs/Divider/index.d.ts +24 -0
  45. package/dist/cjs/Divider/index.js +75 -0
  46. package/dist/cjs/Divider/style.less +144 -0
  47. package/dist/cjs/Dropdown/index.d.ts +88 -0
  48. package/dist/cjs/Dropdown/index.js +253 -0
  49. package/dist/cjs/Dropdown/style.less +430 -0
  50. package/dist/cjs/Empty/index.d.ts +21 -0
  51. package/dist/cjs/Empty/index.js +115 -0
  52. package/dist/cjs/Empty/style.less +103 -0
  53. package/dist/cjs/Flex/index.d.ts +37 -0
  54. package/dist/cjs/Flex/index.js +76 -0
  55. package/dist/cjs/Flex/style.less +13 -0
  56. package/dist/cjs/Form/index.d.ts +89 -0
  57. package/dist/cjs/Form/index.js +421 -0
  58. package/dist/cjs/Form/style.less +203 -0
  59. package/dist/cjs/Grid/index.d.ts +69 -0
  60. package/dist/cjs/Grid/index.js +171 -0
  61. package/dist/cjs/Grid/style.less +273 -0
  62. package/dist/cjs/Image/index.d.ts +30 -0
  63. package/dist/cjs/Image/index.js +153 -0
  64. package/dist/cjs/Image/style.less +156 -0
  65. package/dist/cjs/Input/index.d.ts +24 -0
  66. package/dist/cjs/Input/index.js +158 -0
  67. package/dist/cjs/Input/style.less +276 -0
  68. package/dist/cjs/InputNumber/index.d.ts +47 -0
  69. package/dist/cjs/InputNumber/index.js +323 -0
  70. package/dist/cjs/InputNumber/style.less +392 -0
  71. package/dist/cjs/Layout/index.d.ts +74 -0
  72. package/dist/cjs/Layout/index.js +166 -0
  73. package/dist/cjs/Layout/style.less +145 -0
  74. package/dist/cjs/Masonry/index.d.ts +18 -0
  75. package/dist/cjs/Masonry/index.js +146 -0
  76. package/dist/cjs/Masonry/style.less +15 -0
  77. package/dist/cjs/Mentions/index.d.ts +57 -0
  78. package/dist/cjs/Mentions/index.js +378 -0
  79. package/dist/cjs/Mentions/style.less +297 -0
  80. package/dist/cjs/Menu/index.d.ts +87 -0
  81. package/dist/cjs/Menu/index.js +306 -0
  82. package/dist/cjs/Menu/style.less +363 -0
  83. package/dist/cjs/Pagination/index.d.ts +38 -0
  84. package/dist/cjs/Pagination/index.js +255 -0
  85. package/dist/cjs/Pagination/style.less +353 -0
  86. package/dist/cjs/Popover/index.d.ts +30 -0
  87. package/dist/cjs/Popover/index.js +131 -0
  88. package/dist/cjs/Popover/style.less +279 -0
  89. package/dist/cjs/QRCode/index.d.ts +30 -0
  90. package/dist/cjs/QRCode/index.js +167 -0
  91. package/dist/cjs/QRCode/style.less +201 -0
  92. package/dist/cjs/Radio/index.d.ts +70 -0
  93. package/dist/cjs/Radio/index.js +199 -0
  94. package/dist/cjs/Radio/style.less +326 -0
  95. package/dist/cjs/Rate/index.d.ts +37 -0
  96. package/dist/cjs/Rate/index.js +151 -0
  97. package/dist/cjs/Rate/style.less +170 -0
  98. package/dist/cjs/Segmented/index.d.ts +31 -0
  99. package/dist/cjs/Segmented/index.js +121 -0
  100. package/dist/cjs/Segmented/style.less +167 -0
  101. package/dist/cjs/Select/index.d.ts +67 -0
  102. package/dist/cjs/Select/index.js +403 -0
  103. package/dist/cjs/Select/style.less +523 -0
  104. package/dist/cjs/Slider/index.d.ts +41 -0
  105. package/dist/cjs/Slider/index.js +325 -0
  106. package/dist/cjs/Slider/style.less +287 -0
  107. package/dist/cjs/Space/index.d.ts +41 -0
  108. package/dist/cjs/Space/index.js +137 -0
  109. package/dist/cjs/Space/style.less +116 -0
  110. package/dist/cjs/Splitter/index.d.ts +43 -0
  111. package/dist/cjs/Splitter/index.js +219 -0
  112. package/dist/cjs/Splitter/style.less +99 -0
  113. package/dist/cjs/Statistic/index.d.ts +26 -0
  114. package/dist/cjs/Statistic/index.js +71 -0
  115. package/dist/cjs/Statistic/style.less +94 -0
  116. package/dist/cjs/Steps/index.d.ts +58 -0
  117. package/dist/cjs/Steps/index.js +180 -0
  118. package/dist/cjs/Steps/style.less +507 -0
  119. package/dist/cjs/Switch/index.d.ts +28 -0
  120. package/dist/cjs/Switch/index.js +71 -0
  121. package/dist/cjs/Switch/style.less +212 -0
  122. package/dist/cjs/Table/index.d.ts +188 -0
  123. package/dist/cjs/Table/index.js +787 -0
  124. package/dist/cjs/Table/style.less +663 -0
  125. package/dist/cjs/Tabs/index.d.ts +58 -0
  126. package/dist/cjs/Tabs/index.js +196 -0
  127. package/dist/cjs/Tabs/style.less +423 -0
  128. package/dist/cjs/Tag/index.d.ts +51 -0
  129. package/dist/cjs/Tag/index.js +142 -0
  130. package/dist/cjs/Tag/style.less +356 -0
  131. package/dist/cjs/TimePicker/index.d.ts +51 -0
  132. package/dist/cjs/TimePicker/index.js +332 -0
  133. package/dist/cjs/TimePicker/style.less +384 -0
  134. package/dist/cjs/Timeline/index.d.ts +47 -0
  135. package/dist/cjs/Timeline/index.js +127 -0
  136. package/dist/cjs/Timeline/style.less +265 -0
  137. package/dist/cjs/Tooltip/index.d.ts +53 -0
  138. package/dist/cjs/Tooltip/index.js +468 -0
  139. package/dist/cjs/Tooltip/style.less +237 -0
  140. package/dist/cjs/Transfer/index.d.ts +52 -0
  141. package/dist/cjs/Transfer/index.js +344 -0
  142. package/dist/cjs/Transfer/style.less +331 -0
  143. package/dist/cjs/TreeSelect/index.d.ts +54 -0
  144. package/dist/cjs/TreeSelect/index.js +373 -0
  145. package/dist/cjs/TreeSelect/style.less +471 -0
  146. package/dist/cjs/Typography/index.d.ts +102 -0
  147. package/dist/cjs/Typography/index.js +168 -0
  148. package/dist/cjs/Typography/style.less +246 -0
  149. package/dist/cjs/Upload/index.d.ts +65 -0
  150. package/dist/cjs/Upload/index.js +517 -0
  151. package/dist/cjs/Upload/style.less +424 -0
  152. package/dist/cjs/index.d.ts +100 -0
  153. package/dist/cjs/index.js +487 -1
  154. package/dist/esm/Anchor/index.d.ts +56 -0
  155. package/dist/esm/Anchor/index.js +302 -0
  156. package/dist/esm/Anchor/style.less +183 -0
  157. package/dist/esm/AutoComplete/index.d.ts +54 -0
  158. package/dist/esm/AutoComplete/index.js +268 -0
  159. package/dist/esm/AutoComplete/style.less +325 -0
  160. package/dist/esm/Avatar/index.d.ts +47 -0
  161. package/dist/esm/Avatar/index.js +142 -0
  162. package/dist/esm/Avatar/style.less +193 -0
  163. package/dist/esm/Badge/index.d.ts +48 -0
  164. package/dist/esm/Badge/index.js +137 -0
  165. package/dist/esm/Badge/style.less +237 -0
  166. package/dist/esm/Breadcrumb/index.d.ts +51 -0
  167. package/dist/esm/Breadcrumb/index.js +124 -0
  168. package/dist/esm/Breadcrumb/style.less +96 -0
  169. package/dist/esm/Calendar/index.d.ts +33 -0
  170. package/dist/esm/Calendar/index.js +291 -0
  171. package/dist/esm/Calendar/style.less +384 -0
  172. package/dist/esm/Card/index.d.ts +68 -0
  173. package/dist/esm/Card/index.js +149 -0
  174. package/dist/esm/Card/style.less +356 -0
  175. package/dist/esm/Carousel/index.d.ts +33 -0
  176. package/dist/esm/Carousel/index.js +163 -0
  177. package/dist/esm/Carousel/style.less +232 -0
  178. package/dist/esm/Cascader/index.d.ts +53 -0
  179. package/dist/esm/Cascader/index.js +333 -0
  180. package/dist/esm/Cascader/style.less +457 -0
  181. package/dist/esm/Checkbox/index.d.ts +52 -0
  182. package/dist/esm/Checkbox/index.js +152 -0
  183. package/dist/esm/Checkbox/style.less +211 -0
  184. package/dist/esm/Collapse/index.d.ts +55 -0
  185. package/dist/esm/Collapse/index.js +187 -0
  186. package/dist/esm/Collapse/style.less +217 -0
  187. package/dist/esm/ColorPicker/index.d.ts +28 -0
  188. package/dist/esm/ColorPicker/index.js +375 -0
  189. package/dist/esm/ColorPicker/style.less +276 -0
  190. package/dist/esm/DatePicker/index.d.ts +32 -0
  191. package/dist/esm/DatePicker/index.js +371 -0
  192. package/dist/esm/DatePicker/style.less +498 -0
  193. package/dist/esm/Descriptions/index.d.ts +54 -0
  194. package/dist/esm/Descriptions/index.js +179 -0
  195. package/dist/esm/Descriptions/style.less +259 -0
  196. package/dist/esm/Divider/index.d.ts +24 -0
  197. package/dist/esm/Divider/index.js +68 -0
  198. package/dist/esm/Divider/style.less +144 -0
  199. package/dist/esm/Dropdown/index.d.ts +88 -0
  200. package/dist/esm/Dropdown/index.js +249 -0
  201. package/dist/esm/Dropdown/style.less +430 -0
  202. package/dist/esm/Empty/index.d.ts +21 -0
  203. package/dist/esm/Empty/index.js +109 -0
  204. package/dist/esm/Empty/style.less +103 -0
  205. package/dist/esm/Flex/index.d.ts +37 -0
  206. package/dist/esm/Flex/index.js +69 -0
  207. package/dist/esm/Flex/style.less +13 -0
  208. package/dist/esm/Form/index.d.ts +89 -0
  209. package/dist/esm/Form/index.js +416 -0
  210. package/dist/esm/Form/style.less +203 -0
  211. package/dist/esm/Grid/index.d.ts +69 -0
  212. package/dist/esm/Grid/index.js +165 -0
  213. package/dist/esm/Grid/style.less +273 -0
  214. package/dist/esm/Image/index.d.ts +30 -0
  215. package/dist/esm/Image/index.js +149 -0
  216. package/dist/esm/Image/style.less +156 -0
  217. package/dist/esm/Input/index.d.ts +24 -0
  218. package/dist/esm/Input/index.js +151 -0
  219. package/dist/esm/Input/style.less +276 -0
  220. package/dist/esm/InputNumber/index.d.ts +47 -0
  221. package/dist/esm/InputNumber/index.js +316 -0
  222. package/dist/esm/InputNumber/style.less +392 -0
  223. package/dist/esm/Layout/index.d.ts +74 -0
  224. package/dist/esm/Layout/index.js +161 -0
  225. package/dist/esm/Layout/style.less +145 -0
  226. package/dist/esm/Masonry/index.d.ts +18 -0
  227. package/dist/esm/Masonry/index.js +138 -0
  228. package/dist/esm/Masonry/style.less +15 -0
  229. package/dist/esm/Mentions/index.d.ts +57 -0
  230. package/dist/esm/Mentions/index.js +374 -0
  231. package/dist/esm/Mentions/style.less +297 -0
  232. package/dist/esm/Menu/index.d.ts +87 -0
  233. package/dist/esm/Menu/index.js +301 -0
  234. package/dist/esm/Menu/style.less +363 -0
  235. package/dist/esm/Pagination/index.d.ts +38 -0
  236. package/dist/esm/Pagination/index.js +247 -0
  237. package/dist/esm/Pagination/style.less +353 -0
  238. package/dist/esm/Popover/index.d.ts +30 -0
  239. package/dist/esm/Popover/index.js +126 -0
  240. package/dist/esm/Popover/style.less +279 -0
  241. package/dist/esm/QRCode/index.d.ts +30 -0
  242. package/dist/esm/QRCode/index.js +158 -0
  243. package/dist/esm/QRCode/style.less +201 -0
  244. package/dist/esm/Radio/index.d.ts +70 -0
  245. package/dist/esm/Radio/index.js +193 -0
  246. package/dist/esm/Radio/style.less +326 -0
  247. package/dist/esm/Rate/index.d.ts +37 -0
  248. package/dist/esm/Rate/index.js +143 -0
  249. package/dist/esm/Rate/style.less +170 -0
  250. package/dist/esm/Segmented/index.d.ts +31 -0
  251. package/dist/esm/Segmented/index.js +113 -0
  252. package/dist/esm/Segmented/style.less +167 -0
  253. package/dist/esm/Select/index.d.ts +67 -0
  254. package/dist/esm/Select/index.js +398 -0
  255. package/dist/esm/Select/style.less +523 -0
  256. package/dist/esm/Slider/index.d.ts +41 -0
  257. package/dist/esm/Slider/index.js +318 -0
  258. package/dist/esm/Slider/style.less +287 -0
  259. package/dist/esm/Space/index.d.ts +41 -0
  260. package/dist/esm/Space/index.js +131 -0
  261. package/dist/esm/Space/style.less +116 -0
  262. package/dist/esm/Splitter/index.d.ts +43 -0
  263. package/dist/esm/Splitter/index.js +214 -0
  264. package/dist/esm/Splitter/style.less +99 -0
  265. package/dist/esm/Statistic/index.d.ts +26 -0
  266. package/dist/esm/Statistic/index.js +65 -0
  267. package/dist/esm/Statistic/style.less +94 -0
  268. package/dist/esm/Steps/index.d.ts +58 -0
  269. package/dist/esm/Steps/index.js +174 -0
  270. package/dist/esm/Steps/style.less +507 -0
  271. package/dist/esm/Switch/index.d.ts +28 -0
  272. package/dist/esm/Switch/index.js +63 -0
  273. package/dist/esm/Switch/style.less +212 -0
  274. package/dist/esm/Table/index.d.ts +188 -0
  275. package/dist/esm/Table/index.js +797 -0
  276. package/dist/esm/Table/style.less +663 -0
  277. package/dist/esm/Tabs/index.d.ts +58 -0
  278. package/dist/esm/Tabs/index.js +193 -0
  279. package/dist/esm/Tabs/style.less +423 -0
  280. package/dist/esm/Tag/index.d.ts +51 -0
  281. package/dist/esm/Tag/index.js +144 -0
  282. package/dist/esm/Tag/style.less +356 -0
  283. package/dist/esm/TimePicker/index.d.ts +51 -0
  284. package/dist/esm/TimePicker/index.js +327 -0
  285. package/dist/esm/TimePicker/style.less +384 -0
  286. package/dist/esm/Timeline/index.d.ts +47 -0
  287. package/dist/esm/Timeline/index.js +130 -0
  288. package/dist/esm/Timeline/style.less +265 -0
  289. package/dist/esm/Tooltip/index.d.ts +53 -0
  290. package/dist/esm/Tooltip/index.js +471 -0
  291. package/dist/esm/Tooltip/style.less +237 -0
  292. package/dist/esm/Transfer/index.d.ts +52 -0
  293. package/dist/esm/Transfer/index.js +340 -0
  294. package/dist/esm/Transfer/style.less +331 -0
  295. package/dist/esm/TreeSelect/index.d.ts +54 -0
  296. package/dist/esm/TreeSelect/index.js +369 -0
  297. package/dist/esm/TreeSelect/style.less +471 -0
  298. package/dist/esm/Typography/index.d.ts +102 -0
  299. package/dist/esm/Typography/index.js +161 -0
  300. package/dist/esm/Typography/style.less +246 -0
  301. package/dist/esm/Upload/index.d.ts +65 -0
  302. package/dist/esm/Upload/index.js +513 -0
  303. package/dist/esm/Upload/style.less +424 -0
  304. package/dist/esm/index.d.ts +100 -0
  305. package/dist/esm/index.js +51 -1
  306. package/package.json +14 -8
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.Flex = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ require("./style.less");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
12
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
16
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
17
+ var gapSizeMap = {
18
+ small: 8,
19
+ middle: 16,
20
+ large: 24
21
+ };
22
+ var Flex = exports.Flex = function Flex(_ref) {
23
+ var _ref$vertical = _ref.vertical,
24
+ vertical = _ref$vertical === void 0 ? false : _ref$vertical,
25
+ direction = _ref.direction,
26
+ wrap = _ref.wrap,
27
+ justify = _ref.justify,
28
+ align = _ref.align,
29
+ alignContent = _ref.alignContent,
30
+ gap = _ref.gap,
31
+ _ref$inline = _ref.inline,
32
+ inline = _ref$inline === void 0 ? false : _ref$inline,
33
+ flex = _ref.flex,
34
+ children = _ref.children,
35
+ _ref$className = _ref.className,
36
+ className = _ref$className === void 0 ? '' : _ref$className,
37
+ style = _ref.style,
38
+ _ref$component = _ref.component,
39
+ Component = _ref$component === void 0 ? 'div' : _ref$component;
40
+ // 处理 direction
41
+ var flexDirection = direction || (vertical ? 'column' : 'row');
42
+
43
+ // 处理 wrap
44
+ var flexWrap = typeof wrap === 'boolean' ? wrap ? 'wrap' : 'nowrap' : wrap;
45
+
46
+ // 处理 gap
47
+ var getGap = function getGap() {
48
+ if (gap === undefined) return undefined;
49
+ if (typeof gap === 'string') {
50
+ return "".concat(gapSizeMap[gap], "px");
51
+ }
52
+ if (typeof gap === 'number') {
53
+ return "".concat(gap, "px");
54
+ }
55
+ if (Array.isArray(gap)) {
56
+ return "".concat(gap[0], "px ").concat(gap[1], "px");
57
+ }
58
+ return undefined;
59
+ };
60
+ var classNames = ['kage-flex', inline && 'kage-flex-inline', className].filter(Boolean).join(' ');
61
+ var flexStyle = _objectSpread({
62
+ flexDirection: flexDirection,
63
+ flexWrap: flexWrap,
64
+ justifyContent: justify,
65
+ alignItems: align,
66
+ alignContent: alignContent,
67
+ gap: getGap(),
68
+ flex: flex
69
+ }, style);
70
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, {
71
+ className: classNames,
72
+ style: flexStyle,
73
+ children: children
74
+ });
75
+ };
76
+ var _default = exports.default = Flex;
@@ -0,0 +1,13 @@
1
+ // Flex 弹性布局组件样式
2
+
3
+ @prefix: kage-flex;
4
+
5
+ .@{prefix} {
6
+ display: flex;
7
+ box-sizing: border-box;
8
+
9
+ &-inline {
10
+ display: inline-flex;
11
+ }
12
+ }
13
+
@@ -0,0 +1,89 @@
1
+ import React from 'react';
2
+ import './style.less';
3
+ export interface Rule {
4
+ /** 是否必填 */
5
+ required?: boolean;
6
+ /** 最小长度 */
7
+ min?: number;
8
+ /** 最大长度 */
9
+ max?: number;
10
+ /** 正则表达式 */
11
+ pattern?: RegExp;
12
+ /** 自定义验证函数 */
13
+ validator?: (value: any) => Promise<void> | void;
14
+ /** 错误提示 */
15
+ message?: string;
16
+ /** 类型 */
17
+ type?: 'email' | 'url' | 'number';
18
+ }
19
+ export interface FormProps {
20
+ /** 初始值 */
21
+ initialValues?: Record<string, any>;
22
+ /** 表单布局 */
23
+ layout?: 'horizontal' | 'vertical' | 'inline';
24
+ /** label 布局 */
25
+ labelCol?: {
26
+ span?: number;
27
+ };
28
+ /** 内容布局 */
29
+ wrapperCol?: {
30
+ span?: number;
31
+ };
32
+ /** 是否禁用 */
33
+ disabled?: boolean;
34
+ /** 提交回调 */
35
+ onFinish?: (values: Record<string, any>) => void;
36
+ /** 提交失败回调 */
37
+ onFinishFailed?: (errors: Record<string, string>) => void;
38
+ /** 值变化回调 */
39
+ onValuesChange?: (changedValues: Record<string, any>, allValues: Record<string, any>) => void;
40
+ /** 子元素 */
41
+ children?: React.ReactNode;
42
+ /** 自定义类名 */
43
+ className?: string;
44
+ /** 自定义样式 */
45
+ style?: React.CSSProperties;
46
+ }
47
+ export declare const Form: React.FC<FormProps> & {
48
+ Item: typeof FormItem;
49
+ useForm: typeof useForm;
50
+ };
51
+ export interface FormItemProps {
52
+ /** 字段名 */
53
+ name?: string;
54
+ /** 标签 */
55
+ label?: React.ReactNode;
56
+ /** 验证规则 */
57
+ rules?: Rule[];
58
+ /** 是否必填(显示红色星号) */
59
+ required?: boolean;
60
+ /** 额外提示 */
61
+ extra?: React.ReactNode;
62
+ /** 帮助信息 */
63
+ help?: React.ReactNode;
64
+ /** label 布局 */
65
+ labelCol?: {
66
+ span?: number;
67
+ };
68
+ /** 内容布局 */
69
+ wrapperCol?: {
70
+ span?: number;
71
+ };
72
+ /** 子元素 */
73
+ children?: React.ReactNode;
74
+ /** 自定义类名 */
75
+ className?: string;
76
+ /** 自定义样式 */
77
+ style?: React.CSSProperties;
78
+ }
79
+ export declare const FormItem: React.FC<FormItemProps>;
80
+ export interface FormInstance {
81
+ getFieldValue: (name: string) => any;
82
+ getFieldsValue: () => Record<string, any>;
83
+ setFieldValue: (name: string, value: any) => void;
84
+ setFieldsValue: (values: Record<string, any>) => void;
85
+ resetFields: () => void;
86
+ validateFields: () => Promise<Record<string, any>>;
87
+ }
88
+ export declare const useForm: () => [FormInstance];
89
+ export default Form;
@@ -0,0 +1,421 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useForm = exports.default = exports.FormItem = exports.Form = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ require("./style.less");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
14
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
15
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
16
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
17
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
21
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
22
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
23
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
24
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
25
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
26
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
27
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // ============ Form Context ============
28
+ var FormContext = /*#__PURE__*/(0, _react.createContext)(null);
29
+
30
+ // ============ Rule Type ============
31
+
32
+ // ============ Form Props ============
33
+
34
+ // ============ Form Component ============
35
+ var Form = exports.Form = function Form(_ref) {
36
+ var _ref$initialValues = _ref.initialValues,
37
+ initialValues = _ref$initialValues === void 0 ? {} : _ref$initialValues,
38
+ _ref$layout = _ref.layout,
39
+ layout = _ref$layout === void 0 ? 'horizontal' : _ref$layout,
40
+ labelCol = _ref.labelCol,
41
+ wrapperCol = _ref.wrapperCol,
42
+ _ref$disabled = _ref.disabled,
43
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
44
+ onFinish = _ref.onFinish,
45
+ onFinishFailed = _ref.onFinishFailed,
46
+ onValuesChange = _ref.onValuesChange,
47
+ children = _ref.children,
48
+ _ref$className = _ref.className,
49
+ className = _ref$className === void 0 ? '' : _ref$className,
50
+ style = _ref.style;
51
+ var _useState = (0, _react.useState)(initialValues),
52
+ _useState2 = _slicedToArray(_useState, 2),
53
+ values = _useState2[0],
54
+ setValues = _useState2[1];
55
+ var _useState3 = (0, _react.useState)({}),
56
+ _useState4 = _slicedToArray(_useState3, 2),
57
+ errors = _useState4[0],
58
+ setErrors = _useState4[1];
59
+ var fieldsRef = (0, _react.useRef)(new Map());
60
+ var setFieldValue = (0, _react.useCallback)(function (name, value) {
61
+ setValues(function (prev) {
62
+ var newValues = _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, name, value));
63
+ onValuesChange === null || onValuesChange === void 0 || onValuesChange(_defineProperty({}, name, value), newValues);
64
+ return newValues;
65
+ });
66
+ // 清除错误
67
+ setErrors(function (prev) {
68
+ var newErrors = _objectSpread({}, prev);
69
+ delete newErrors[name];
70
+ return newErrors;
71
+ });
72
+ }, [onValuesChange]);
73
+ var setFieldError = (0, _react.useCallback)(function (name, error) {
74
+ setErrors(function (prev) {
75
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, name, error));
76
+ });
77
+ }, []);
78
+ var validateField = (0, _react.useCallback)( /*#__PURE__*/function () {
79
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(name) {
80
+ var rules, value, _iterator, _step, rule;
81
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
82
+ while (1) switch (_context.prev = _context.next) {
83
+ case 0:
84
+ rules = fieldsRef.current.get(name);
85
+ value = values[name];
86
+ if (!(!rules || rules.length === 0)) {
87
+ _context.next = 4;
88
+ break;
89
+ }
90
+ return _context.abrupt("return", true);
91
+ case 4:
92
+ _iterator = _createForOfIteratorHelper(rules);
93
+ _context.prev = 5;
94
+ _iterator.s();
95
+ case 7:
96
+ if ((_step = _iterator.n()).done) {
97
+ _context.next = 41;
98
+ break;
99
+ }
100
+ rule = _step.value;
101
+ if (!(rule.required && (value === undefined || value === null || value === ''))) {
102
+ _context.next = 12;
103
+ break;
104
+ }
105
+ setFieldError(name, rule.message || '此项为必填项');
106
+ return _context.abrupt("return", false);
107
+ case 12:
108
+ if (!(value === undefined || value === null || value === '')) {
109
+ _context.next = 14;
110
+ break;
111
+ }
112
+ return _context.abrupt("continue", 39);
113
+ case 14:
114
+ if (!(rule.min !== undefined && String(value).length < rule.min)) {
115
+ _context.next = 17;
116
+ break;
117
+ }
118
+ setFieldError(name, rule.message || "\u957F\u5EA6\u4E0D\u80FD\u5C0F\u4E8E ".concat(rule.min));
119
+ return _context.abrupt("return", false);
120
+ case 17:
121
+ if (!(rule.max !== undefined && String(value).length > rule.max)) {
122
+ _context.next = 20;
123
+ break;
124
+ }
125
+ setFieldError(name, rule.message || "\u957F\u5EA6\u4E0D\u80FD\u5927\u4E8E ".concat(rule.max));
126
+ return _context.abrupt("return", false);
127
+ case 20:
128
+ if (!(rule.pattern && !rule.pattern.test(String(value)))) {
129
+ _context.next = 23;
130
+ break;
131
+ }
132
+ setFieldError(name, rule.message || '格式不正确');
133
+ return _context.abrupt("return", false);
134
+ case 23:
135
+ if (!(rule.type === 'email' && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(value)))) {
136
+ _context.next = 26;
137
+ break;
138
+ }
139
+ setFieldError(name, rule.message || '请输入有效的邮箱地址');
140
+ return _context.abrupt("return", false);
141
+ case 26:
142
+ if (!(rule.type === 'url' && !/^https?:\/\/.+/.test(String(value)))) {
143
+ _context.next = 29;
144
+ break;
145
+ }
146
+ setFieldError(name, rule.message || '请输入有效的网址');
147
+ return _context.abrupt("return", false);
148
+ case 29:
149
+ if (!rule.validator) {
150
+ _context.next = 39;
151
+ break;
152
+ }
153
+ _context.prev = 30;
154
+ _context.next = 33;
155
+ return rule.validator(value);
156
+ case 33:
157
+ _context.next = 39;
158
+ break;
159
+ case 35:
160
+ _context.prev = 35;
161
+ _context.t0 = _context["catch"](30);
162
+ setFieldError(name, (_context.t0 === null || _context.t0 === void 0 ? void 0 : _context.t0.message) || rule.message || '验证失败');
163
+ return _context.abrupt("return", false);
164
+ case 39:
165
+ _context.next = 7;
166
+ break;
167
+ case 41:
168
+ _context.next = 46;
169
+ break;
170
+ case 43:
171
+ _context.prev = 43;
172
+ _context.t1 = _context["catch"](5);
173
+ _iterator.e(_context.t1);
174
+ case 46:
175
+ _context.prev = 46;
176
+ _iterator.f();
177
+ return _context.finish(46);
178
+ case 49:
179
+ return _context.abrupt("return", true);
180
+ case 50:
181
+ case "end":
182
+ return _context.stop();
183
+ }
184
+ }, _callee, null, [[5, 43, 46, 49], [30, 35]]);
185
+ }));
186
+ return function (_x) {
187
+ return _ref2.apply(this, arguments);
188
+ };
189
+ }(), [values, setFieldError]);
190
+ var registerField = (0, _react.useCallback)(function (name, rules) {
191
+ fieldsRef.current.set(name, rules || []);
192
+ }, []);
193
+ var unregisterField = (0, _react.useCallback)(function (name) {
194
+ fieldsRef.current.delete(name);
195
+ }, []);
196
+ var handleSubmit = (0, _react.useCallback)( /*#__PURE__*/function () {
197
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(e) {
198
+ var fieldNames, results, hasErrors;
199
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
200
+ while (1) switch (_context2.prev = _context2.next) {
201
+ case 0:
202
+ e.preventDefault();
203
+
204
+ // 验证所有字段
205
+ fieldNames = Array.from(fieldsRef.current.keys());
206
+ _context2.next = 4;
207
+ return Promise.all(fieldNames.map(function (name) {
208
+ return validateField(name);
209
+ }));
210
+ case 4:
211
+ results = _context2.sent;
212
+ hasErrors = results.some(function (r) {
213
+ return !r;
214
+ });
215
+ if (hasErrors) {
216
+ onFinishFailed === null || onFinishFailed === void 0 || onFinishFailed(errors);
217
+ } else {
218
+ onFinish === null || onFinish === void 0 || onFinish(values);
219
+ }
220
+ case 7:
221
+ case "end":
222
+ return _context2.stop();
223
+ }
224
+ }, _callee2);
225
+ }));
226
+ return function (_x2) {
227
+ return _ref3.apply(this, arguments);
228
+ };
229
+ }(), [values, errors, validateField, onFinish, onFinishFailed]);
230
+ var contextValue = {
231
+ values: values,
232
+ errors: errors,
233
+ layout: layout,
234
+ labelCol: labelCol,
235
+ wrapperCol: wrapperCol,
236
+ disabled: disabled,
237
+ setFieldValue: setFieldValue,
238
+ setFieldError: setFieldError,
239
+ validateField: validateField,
240
+ registerField: registerField,
241
+ unregisterField: unregisterField
242
+ };
243
+ var classNames = ['kage-form', "kage-form-".concat(layout), className].filter(Boolean).join(' ');
244
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(FormContext.Provider, {
245
+ value: contextValue,
246
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("form", {
247
+ className: classNames,
248
+ style: style,
249
+ onSubmit: handleSubmit,
250
+ children: children
251
+ })
252
+ });
253
+ };
254
+
255
+ // ============ Form Item Props ============
256
+
257
+ // ============ Form Item Component ============
258
+ var FormItem = exports.FormItem = function FormItem(_ref4) {
259
+ var name = _ref4.name,
260
+ label = _ref4.label,
261
+ _ref4$rules = _ref4.rules,
262
+ rules = _ref4$rules === void 0 ? [] : _ref4$rules,
263
+ required = _ref4.required,
264
+ extra = _ref4.extra,
265
+ help = _ref4.help,
266
+ itemLabelCol = _ref4.labelCol,
267
+ itemWrapperCol = _ref4.wrapperCol,
268
+ children = _ref4.children,
269
+ _ref4$className = _ref4.className,
270
+ className = _ref4$className === void 0 ? '' : _ref4$className,
271
+ style = _ref4.style;
272
+ var context = (0, _react.useContext)(FormContext);
273
+ if (!context) {
274
+ throw new Error('Form.Item must be used within a Form');
275
+ }
276
+ var values = context.values,
277
+ errors = context.errors,
278
+ layout = context.layout,
279
+ formLabelCol = context.labelCol,
280
+ formWrapperCol = context.wrapperCol,
281
+ disabled = context.disabled,
282
+ setFieldValue = context.setFieldValue,
283
+ validateField = context.validateField,
284
+ registerField = context.registerField,
285
+ unregisterField = context.unregisterField;
286
+ var labelCol = itemLabelCol || formLabelCol;
287
+ var wrapperCol = itemWrapperCol || formWrapperCol;
288
+
289
+ // 注册/注销字段
290
+ (0, _react.useEffect)(function () {
291
+ if (name) {
292
+ registerField(name, rules);
293
+ return function () {
294
+ return unregisterField(name);
295
+ };
296
+ }
297
+ }, [name, rules, registerField, unregisterField]);
298
+ var value = name ? values[name] : undefined;
299
+ var error = name ? errors[name] : undefined;
300
+ var isRequired = required || rules.some(function (r) {
301
+ return r.required;
302
+ });
303
+
304
+ // 克隆子元素,注入 value 和 onChange
305
+ var renderChildren = function renderChildren() {
306
+ if (!name || !children) return children;
307
+ return _react.default.Children.map(children, function (child) {
308
+ if (! /*#__PURE__*/_react.default.isValidElement(child)) return child;
309
+ return /*#__PURE__*/_react.default.cloneElement(child, {
310
+ value: value,
311
+ disabled: disabled || child.props.disabled,
312
+ onChange: function onChange(e) {
313
+ var _ref5, _e$target$value, _e$target, _e$target2, _onChange, _ref6;
314
+ var newValue = (_ref5 = (_e$target$value = e === null || e === void 0 || (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value) !== null && _e$target$value !== void 0 ? _e$target$value : e === null || e === void 0 || (_e$target2 = e.target) === null || _e$target2 === void 0 ? void 0 : _e$target2.checked) !== null && _ref5 !== void 0 ? _ref5 : e;
315
+ setFieldValue(name, newValue);
316
+ (_onChange = (_ref6 = child.props).onChange) === null || _onChange === void 0 || _onChange.call(_ref6, e);
317
+ },
318
+ onBlur: function onBlur(e) {
319
+ var _onBlur, _ref7;
320
+ validateField(name);
321
+ (_onBlur = (_ref7 = child.props).onBlur) === null || _onBlur === void 0 || _onBlur.call(_ref7, e);
322
+ }
323
+ });
324
+ });
325
+ };
326
+ var classNames = ['kage-form-item', error && 'kage-form-item-has-error', className].filter(Boolean).join(' ');
327
+ var labelStyle = {};
328
+ var wrapperStyle = {};
329
+ if (layout === 'horizontal' && labelCol !== null && labelCol !== void 0 && labelCol.span) {
330
+ labelStyle.width = "".concat(labelCol.span / 24 * 100, "%");
331
+ }
332
+ if (layout === 'horizontal' && wrapperCol !== null && wrapperCol !== void 0 && wrapperCol.span) {
333
+ wrapperStyle.width = "".concat(wrapperCol.span / 24 * 100, "%");
334
+ }
335
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
336
+ className: classNames,
337
+ style: style,
338
+ children: [label && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
339
+ className: "kage-form-item-label",
340
+ style: labelStyle,
341
+ children: [isRequired && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
342
+ className: "kage-form-item-required",
343
+ children: "*"
344
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("label", {
345
+ children: label
346
+ })]
347
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
348
+ className: "kage-form-item-control",
349
+ style: wrapperStyle,
350
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
351
+ className: "kage-form-item-control-input",
352
+ children: renderChildren()
353
+ }), error && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
354
+ className: "kage-form-item-error",
355
+ children: error
356
+ }), help && !error && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
357
+ className: "kage-form-item-help",
358
+ children: help
359
+ }), extra && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
360
+ className: "kage-form-item-extra",
361
+ children: extra
362
+ })]
363
+ })]
364
+ });
365
+ };
366
+
367
+ // ============ useForm Hook ============
368
+
369
+ var useForm = exports.useForm = function useForm() {
370
+ var valuesRef = (0, _react.useRef)({});
371
+ var settersRef = (0, _react.useRef)({});
372
+ var formInstance = {
373
+ getFieldValue: function getFieldValue(name) {
374
+ return valuesRef.current[name];
375
+ },
376
+ getFieldsValue: function getFieldsValue() {
377
+ return _objectSpread({}, valuesRef.current);
378
+ },
379
+ setFieldValue: function setFieldValue(name, value) {
380
+ var _settersRef$current$s, _settersRef$current;
381
+ valuesRef.current[name] = value;
382
+ (_settersRef$current$s = (_settersRef$current = settersRef.current).setFieldValue) === null || _settersRef$current$s === void 0 || _settersRef$current$s.call(_settersRef$current, name, value);
383
+ },
384
+ setFieldsValue: function setFieldsValue(values) {
385
+ Object.entries(values).forEach(function (_ref8) {
386
+ var _settersRef$current$s2, _settersRef$current2;
387
+ var _ref9 = _slicedToArray(_ref8, 2),
388
+ name = _ref9[0],
389
+ value = _ref9[1];
390
+ valuesRef.current[name] = value;
391
+ (_settersRef$current$s2 = (_settersRef$current2 = settersRef.current).setFieldValue) === null || _settersRef$current$s2 === void 0 || _settersRef$current$s2.call(_settersRef$current2, name, value);
392
+ });
393
+ },
394
+ resetFields: function resetFields() {
395
+ valuesRef.current = {};
396
+ },
397
+ validateFields: function () {
398
+ var _validateFields = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
399
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
400
+ while (1) switch (_context3.prev = _context3.next) {
401
+ case 0:
402
+ return _context3.abrupt("return", valuesRef.current);
403
+ case 1:
404
+ case "end":
405
+ return _context3.stop();
406
+ }
407
+ }, _callee3);
408
+ }));
409
+ function validateFields() {
410
+ return _validateFields.apply(this, arguments);
411
+ }
412
+ return validateFields;
413
+ }()
414
+ };
415
+ return [formInstance];
416
+ };
417
+
418
+ // 挂载子组件
419
+ Form.Item = FormItem;
420
+ Form.useForm = useForm;
421
+ var _default = exports.default = Form;