@rainbow-oh/yee-c 0.8.19 → 0.9.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 (101) hide show
  1. package/dist/cjs/Anchor/anchor.js +4 -1
  2. package/dist/cjs/Checkbox/checkbox.js +2 -1
  3. package/dist/cjs/Checkbox/style/index.less +3 -0
  4. package/dist/cjs/Form/Field.js +6 -6
  5. package/dist/cjs/Form/demo/field-status.d.ts +3 -0
  6. package/dist/cjs/Form/demo/field-status.js +116 -0
  7. package/dist/cjs/Form/form-store.d.ts +6 -1
  8. package/dist/cjs/Form/form-store.js +74 -2
  9. package/dist/cjs/Form/index.d.ts +1 -1
  10. package/dist/cjs/Form/interface.d.ts +17 -1
  11. package/dist/cjs/Form/style/index.less +26 -0
  12. package/dist/cjs/Progress/circle.js +46 -35
  13. package/dist/cjs/Progress/line.js +20 -11
  14. package/dist/cjs/Search/demo/basic.js +38 -3
  15. package/dist/cjs/Search/interface.d.ts +2 -2
  16. package/dist/cjs/Search/search.js +52 -32
  17. package/dist/cjs/Search/style/index.less +20 -3
  18. package/dist/cjs/Table/style/index.less +4 -2
  19. package/dist/cjs/Table/tbody/cell.js +2 -2
  20. package/dist/cjs/Transfer/interface.d.ts +0 -1
  21. package/dist/cjs/Transfer/style/index.less +4 -0
  22. package/dist/cjs/Transfer/transfer-list.js +1 -0
  23. package/dist/cjs/message/use-message.js +1 -3
  24. package/dist/cjs/notice/notice.js +1 -1
  25. package/dist/cjs/style/themes.css +1 -1
  26. package/dist/cjs/style/variables.css +1 -1
  27. package/dist/cjs/version.d.ts +1 -1
  28. package/dist/cjs/version.js +1 -1
  29. package/dist/esm/Checkbox/checkbox.js +2 -1
  30. package/dist/esm/Checkbox/style/index.less +3 -0
  31. package/dist/esm/Form/Field.js +6 -6
  32. package/dist/esm/Form/demo/field-status.d.ts +3 -0
  33. package/dist/esm/Form/demo/field-status.js +104 -0
  34. package/dist/esm/Form/form-store.d.ts +6 -1
  35. package/dist/esm/Form/form-store.js +88 -6
  36. package/dist/esm/Form/index.d.ts +1 -1
  37. package/dist/esm/Form/interface.d.ts +17 -1
  38. package/dist/esm/Form/style/index.less +26 -0
  39. package/dist/esm/Search/demo/basic.js +61 -7
  40. package/dist/esm/Search/interface.d.ts +2 -2
  41. package/dist/esm/Search/search.js +22 -15
  42. package/dist/esm/Search/style/index.less +20 -3
  43. package/dist/esm/Table/style/index.less +4 -2
  44. package/dist/esm/Table/tbody/cell.js +2 -2
  45. package/dist/esm/Transfer/interface.d.ts +0 -1
  46. package/dist/esm/Transfer/style/index.less +4 -0
  47. package/dist/esm/Transfer/transfer-list.js +1 -0
  48. package/dist/esm/notice/notice.js +1 -1
  49. package/dist/esm/style/themes.css +1 -1
  50. package/dist/esm/style/variables.css +1 -1
  51. package/dist/esm/version.d.ts +1 -1
  52. package/dist/esm/version.js +1 -1
  53. package/dist/umd/yee-c.min.css +1 -1
  54. package/dist/umd/yee-c.min.js +1 -1
  55. package/package.json +1 -1
  56. package/src/Anchor/anchor.tsx +9 -5
  57. package/src/Checkbox/checkbox.tsx +1 -0
  58. package/src/Checkbox/style/index.less +3 -0
  59. package/src/Form/Field.tsx +7 -8
  60. package/src/Form/demo/field-status.tsx +108 -0
  61. package/src/Form/form-store.ts +92 -2
  62. package/src/Form/index.en-US.md +6 -1
  63. package/src/Form/index.ts +2 -0
  64. package/src/Form/index.zh-CN.md +6 -1
  65. package/src/Form/interface.ts +19 -1
  66. package/src/Form/style/index.less +26 -0
  67. package/src/Progress/circle.tsx +5 -1
  68. package/src/Progress/line.tsx +5 -1
  69. package/src/Progress/progress.tsx +5 -1
  70. package/src/Search/demo/basic.tsx +43 -7
  71. package/src/Search/index.en-US.md +1 -1
  72. package/src/Search/index.zh-CN.md +1 -1
  73. package/src/Search/interface.ts +2 -2
  74. package/src/Search/search.tsx +40 -23
  75. package/src/Search/style/index.less +20 -3
  76. package/src/Spin/indicator.tsx +1 -1
  77. package/src/Table/style/index.less +4 -2
  78. package/src/Table/tbody/cell.tsx +2 -2
  79. package/src/Transfer/interface.ts +0 -1
  80. package/src/Transfer/style/index.less +4 -0
  81. package/src/Transfer/transfer-list.tsx +1 -0
  82. package/src/Tree/interface.ts +6 -1
  83. package/src/Tree/tree-node.tsx +7 -6
  84. package/src/Tree/utils/tree-tools.ts +4 -1
  85. package/src/Trigger/interface.ts +2 -1
  86. package/src/message/demo/base.tsx +1 -1
  87. package/src/message/interface.ts +1 -5
  88. package/src/message/message.test.tsx +15 -5
  89. package/src/message/message.tsx +10 -4
  90. package/src/message/use-message.tsx +2 -8
  91. package/src/message/wrapper.tsx +1 -2
  92. package/src/notice/interface.ts +1 -5
  93. package/src/notice/notice.test.tsx +14 -6
  94. package/src/notice/notice.tsx +12 -6
  95. package/src/notice/wrapper.tsx +1 -2
  96. package/src/version.ts +1 -1
  97. package/dist/cjs/Search/style/index.d.ts +0 -1
  98. package/dist/cjs/Search/style/index.js +0 -2
  99. package/dist/esm/Search/style/index.d.ts +0 -1
  100. package/dist/esm/Search/style/index.js +0 -1
  101. package/src/Search/style/index.ts +0 -1
@@ -152,21 +152,12 @@ var Search = import_react.default.forwardRef(
152
152
  } else {
153
153
  }
154
154
  }, [open]);
155
- const handleSearch = (e) => {
156
- var _a2, _b;
157
- if (disabled)
158
- return;
159
- onSearch == null ? void 0 : onSearch(searchValue);
160
- if ((e == null ? void 0 : e.type) === "click") {
161
- (_b = (_a2 = e.target).blur) == null ? void 0 : _b.call(_a2);
162
- }
163
- };
164
155
  const handleChange = (e) => {
165
156
  const newValue = e.target.value;
166
157
  setSearchValue(newValue);
167
158
  (0, import_react.startTransition)(() => {
168
159
  if (searchOnAction === "typing") {
169
- handleSearch(e);
160
+ onSearch == null ? void 0 : onSearch(newValue);
170
161
  }
171
162
  });
172
163
  };
@@ -176,10 +167,27 @@ var Search = import_react.default.forwardRef(
176
167
  onChange == null ? void 0 : onChange(null);
177
168
  onSearch == null ? void 0 : onSearch("");
178
169
  };
170
+ const handleSearchClick = (e) => {
171
+ e.stopPropagation();
172
+ if (searchOnAction === "button") {
173
+ onSearch == null ? void 0 : onSearch(searchValue);
174
+ }
175
+ };
176
+ const renderSearchIcon = () => {
177
+ if (suffix === false)
178
+ return null;
179
+ return /* @__PURE__ */ import_react.default.createElement(
180
+ "span",
181
+ {
182
+ className: `${prefixCls}-search-icon`,
183
+ onClick: handleSearchClick
184
+ },
185
+ suffix || /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Search, { size: 14 })
186
+ );
187
+ };
179
188
  const renderSuffix = () => {
180
- const hasValue = !!searchValue;
181
- const showClearIcon = allowClear && hasValue && !disabled;
182
- const showSuffix = suffix || showClearIcon;
189
+ const showClearIcon = allowClear && !disabled && !rest.readOnly;
190
+ const showSuffix = suffix !== false || suffix !== null || showClearIcon;
183
191
  if (!showSuffix) {
184
192
  return null;
185
193
  }
@@ -195,12 +203,14 @@ var Search = import_react.default.forwardRef(
195
203
  onKeyDown: (e) => {
196
204
  if (e.key === "Enter" || e.key === " ") {
197
205
  e.preventDefault();
198
- handleClear(e);
206
+ handleClear(
207
+ e
208
+ );
199
209
  }
200
210
  }
201
211
  },
202
212
  /* @__PURE__ */ import_react.default.createElement(import_lucide_react.X, { size: 14, "aria-hidden": "true" })
203
- ), suffix);
213
+ ), renderSearchIcon());
204
214
  };
205
215
  const renderPrefix = () => {
206
216
  if (!prefix)
@@ -223,6 +233,7 @@ var Search = import_react.default.forwardRef(
223
233
  prefixCls,
224
234
  {
225
235
  [`${prefixCls}-disabled`]: disabled,
236
+ [`${prefixCls}-with-clear`]: allowClear && searchValue,
226
237
  [`${prefixCls}-borderless`]: !bordered,
227
238
  [`${prefixCls}-small`]: size === "small",
228
239
  [`${prefixCls}-large`]: size === "large"
@@ -231,24 +242,33 @@ var Search = import_react.default.forwardRef(
231
242
  );
232
243
  };
233
244
  const hasPopup = Array.isArray(options) || Array.isArray(suggestions);
234
- const popup = /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-popup`, tabIndex: 0, id: listboxId, role: "listbox" }, Array.isArray(options) ? /* @__PURE__ */ import_react.default.createElement(
235
- import_List.default,
236
- {
237
- focusedKey,
238
- items: options,
239
- itemRender: optionRender,
240
- onClick: onChange
241
- }
242
- ) : Array.isArray(suggestions) ? /* @__PURE__ */ import_react.default.createElement(
243
- import_List.default,
245
+ const popup = /* @__PURE__ */ import_react.default.createElement(
246
+ "div",
244
247
  {
245
- focusedKey,
246
- items: suggestions,
247
- itemRender: suggestionRender,
248
- onClick: onChange
249
- }
250
- ) : null);
251
- return /* @__PURE__ */ import_react.default.createElement(import_Trigger.default, { popup, open, onOpenChange: setOpen }, /* @__PURE__ */ import_react.default.createElement(
248
+ className: `${prefixCls}-popup`,
249
+ tabIndex: 0,
250
+ id: listboxId,
251
+ role: "listbox"
252
+ },
253
+ Array.isArray(options) ? /* @__PURE__ */ import_react.default.createElement(
254
+ import_List.default,
255
+ {
256
+ focusedKey,
257
+ items: options,
258
+ itemRender: optionRender,
259
+ onClick: onChange
260
+ }
261
+ ) : Array.isArray(suggestions) ? /* @__PURE__ */ import_react.default.createElement(
262
+ import_List.default,
263
+ {
264
+ focusedKey,
265
+ items: suggestions,
266
+ itemRender: suggestionRender,
267
+ onClick: onChange
268
+ }
269
+ ) : null
270
+ );
271
+ return /* @__PURE__ */ import_react.default.createElement(import_Trigger.default, { popup, open, stretch: "width", onOpenChange: setOpen }, /* @__PURE__ */ import_react.default.createElement(
252
272
  "div",
253
273
  {
254
274
  className: getRootClassName(),
@@ -1,8 +1,8 @@
1
1
  // @import '../../style/index.less';
2
2
 
3
- @search-prefix-cls: ~'yee-search';
3
+ @cls: ~'yee-search';
4
4
 
5
- .@{search-prefix-cls} {
5
+ .@{cls} {
6
6
  position: relative;
7
7
  display: inline-flex;
8
8
  align-items: center;
@@ -69,9 +69,10 @@
69
69
  border: none;
70
70
  outline: none;
71
71
  transition: all 0.2s;
72
+ line-height: var(--yee-input-line-height);
72
73
 
73
74
  &::placeholder {
74
- color: var(--yee-text-color-placeholder);
75
+ color: var(--yee-placeholder-color);
75
76
  }
76
77
 
77
78
  &-disabled {
@@ -99,7 +100,17 @@
99
100
  color: var(--yee-input-fix-icon-color);
100
101
  }
101
102
 
103
+ &-search-icon {
104
+ display: inline-flex;
105
+ }
106
+
102
107
  &-clear-icon {
108
+ display: inline-flex;
109
+ padding: var(--yee-input-clear-padding);
110
+ color: var(--yee-input-clear-color);
111
+ background-color: var(--yee-input-clear-bg-color);
112
+ border-radius: 50%;
113
+ visibility: hidden;
103
114
  cursor: pointer;
104
115
  transition: color 0.2s;
105
116
 
@@ -108,6 +119,12 @@
108
119
  }
109
120
  }
110
121
 
122
+ &&-with-clear:not(.@{cls}-disabled):hover {
123
+ .@{cls}-clear-icon {
124
+ visibility: visible;
125
+ }
126
+ }
127
+
111
128
  &-button {
112
129
  display: flex;
113
130
  align-items: center;
@@ -97,7 +97,8 @@
97
97
  width: 15px;
98
98
  right: -15px;
99
99
  top: 0;
100
- box-shadow: inset 4px 0 8px -4px var(--yee-table-fixed-left-after-bs-color);
100
+ box-shadow: inset 4px 0 8px -4px
101
+ var(--yee-table-fixed-left-after-bs-color);
101
102
  }
102
103
  }
103
104
 
@@ -111,7 +112,8 @@
111
112
  width: 15px;
112
113
  left: -15px;
113
114
  top: 0;
114
- box-shadow: inset -4px 0 8px -4px var(--yee-table-fixed-right-after-bs-color);
115
+ box-shadow: inset -4px 0 8px -4px
116
+ var(--yee-table-fixed-right-after-bs-color);
115
117
  }
116
118
  }
117
119
  }
@@ -99,11 +99,11 @@ var TableCell = (props) => {
99
99
  },
100
100
  className
101
101
  );
102
- const styles2 = __spreadProps(__spreadValues({}, style), { width, maxWidth: width, textAlign: align });
102
+ const _style = __spreadProps(__spreadValues({}, style), { width, maxWidth: width, textAlign: align });
103
103
  const _title = typeof title === "string" ? title : void 0;
104
104
  return __spreadProps(__spreadValues({}, cellProperty), {
105
105
  className: cls,
106
- style: styles2,
106
+ style: _style,
107
107
  title: _title
108
108
  });
109
109
  };
@@ -115,7 +115,6 @@ export interface TransferListProps {
115
115
  total?: number;
116
116
  };
117
117
  draggable?: boolean;
118
- targetMinCountLimit?: number;
119
118
  onDrop?: (dropObj: Record<string, any>, dataSource: DataSource[]) => void;
120
119
  onDelete?: (key: string | number) => void;
121
120
  onItemSelect: (keys: Array<string | number>) => void;
@@ -66,6 +66,10 @@
66
66
  line-height: var(--yee-transfer-list-item-height, 32px);
67
67
  padding: var(--yee-transfer-list-item-padding, 0 11px);
68
68
 
69
+ &-checkbox {
70
+ width: 100%;
71
+ }
72
+
69
73
  &:hover:not(.yee-one-way):not(.disabled) {
70
74
  color: var(--yee-transfer-list-content-item-hover-color);
71
75
  background-color: var(--yee-transfer-list-content-item-hover-bg-color);
@@ -201,6 +201,7 @@ var TransferList = (props) => {
201
201
  return /* @__PURE__ */ import_react.default.createElement("ul", { className: `${prefixCls}-list-body` }, checkboxOptions.map((option, index) => /* @__PURE__ */ import_react.default.createElement("li", { className: `${prefixCls}-list-item`, key: option.value || index }, /* @__PURE__ */ import_react.default.createElement(
202
202
  import_Checkbox.default,
203
203
  {
204
+ className: `${prefixCls}-list-item-checkbox`,
204
205
  value: option.value,
205
206
  disabled: option.disabled || disabled,
206
207
  checked: checkedKeys.includes(option.value),
@@ -107,9 +107,7 @@ var useMessage = () => {
107
107
  updateMessages((current) => {
108
108
  const exists = current.some((item) => item.key === key);
109
109
  if (exists) {
110
- return current.map(
111
- (item) => item.key === key ? nextMessage : item
112
- );
110
+ return current.map((item) => item.key === key ? nextMessage : item);
113
111
  }
114
112
  return [...current, nextMessage];
115
113
  });
@@ -64,9 +64,9 @@ module.exports = __toCommonJS(notice_exports);
64
64
  var import_clsx = __toESM(require("clsx"));
65
65
  var import_lucide_react = require("lucide-react");
66
66
  var import_react = __toESM(require("react"));
67
+ var import_Button = __toESM(require("../Button"));
67
68
  var import_Progress = __toESM(require("../Progress"));
68
69
  var import_useCountdown = __toESM(require("../hooks/useCountdown"));
69
- var import_Button = __toESM(require("../Button"));
70
70
  var icons = {
71
71
  info: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Info, { size: 22, fill: "currentColor", stroke: "#FFF", strokeWidth: 2 }),
72
72
  success: /* @__PURE__ */ import_react.default.createElement(import_lucide_react.CircleCheck, { size: 22, fill: "currentColor", stroke: "#FFF", strokeWidth: 2 }),
@@ -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-08-12T01:47:55.498Z
4
+ * Generated on 2026-08-17T03:37:29.587Z
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-08-12T01:47:55.498Z
4
+ * Generated on 2026-08-17T03:37:29.587Z
5
5
  */
6
6
 
7
7
  /* ========== color.css ========== */
@@ -3,4 +3,4 @@ declare global {
3
3
  __yee_c_version__: string;
4
4
  }
5
5
  }
6
- export declare const version = "0.8.19";
6
+ export declare const version = "0.9.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.8.19";
25
+ var version = "0.9.0";
26
26
  if (typeof window !== "undefined") {
27
27
  window.__yee_c_version__ = version;
28
28
  }
@@ -74,7 +74,8 @@ var Checkbox = function Checkbox(baseprops) {
74
74
  "aria-hidden": "true"
75
75
  })), children ? /*#__PURE__*/React.createElement("span", {
76
76
  className: clsx("".concat(prefixCls, "-label"), classNames === null || classNames === void 0 ? void 0 : classNames.label),
77
- style: styles === null || styles === void 0 ? void 0 : styles.label
77
+ style: styles === null || styles === void 0 ? void 0 : styles.label,
78
+ title: typeof children === 'string' ? children : undefined
78
79
  }, children) : null);
79
80
  };
80
81
  Checkbox.displayName = 'Checkbox';
@@ -93,6 +93,9 @@
93
93
  &-label {
94
94
  padding: var(--yee-checkbox-label-padding);
95
95
  user-select: none;
96
+ white-space: nowrap;
97
+ text-overflow: ellipsis;
98
+ overflow: hidden;
96
99
  }
97
100
 
98
101
  &-indeterminate {
@@ -55,7 +55,7 @@ var Field = function Field(props) {
55
55
  formatter = props.formatter;
56
56
  var _useContext = useContext(FieldContext),
57
57
  getCallbacks = _useContext.getCallbacks,
58
- getFieldValidate = _useContext.getFieldValidate,
58
+ getFieldStatus = _useContext.getFieldStatus,
59
59
  getFieldValue = _useContext.getFieldValue,
60
60
  getFieldsValue = _useContext.getFieldsValue,
61
61
  setFieldsValue = _useContext.setFieldsValue,
@@ -98,7 +98,7 @@ var Field = function Field(props) {
98
98
  return rule.required;
99
99
  }) || required;
100
100
  };
101
- var validate = getFieldValidate === null || getFieldValidate === void 0 ? void 0 : getFieldValidate(normalizedName);
101
+ var fieldStatus = getFieldStatus === null || getFieldStatus === void 0 ? void 0 : getFieldStatus(normalizedName);
102
102
 
103
103
  // Normalize tooltip into { icon, ...tooltipProps }, or null when not provided.
104
104
  // Everything except `icon` is forwarded to <Tooltip>, so any Tooltip prop
@@ -163,7 +163,7 @@ var Field = function Field(props) {
163
163
  });
164
164
  };
165
165
  return /*#__PURE__*/React.createElement("div", {
166
- className: clsx("".concat(prefixCls, "-item"), "".concat(prefixCls, "-item-").concat(layout), _defineProperty({}, "".concat(prefixCls, "-item-").concat(validate === null || validate === void 0 ? void 0 : validate.status), validate && validate.status), className),
166
+ className: clsx("".concat(prefixCls, "-item"), "".concat(prefixCls, "-item-").concat(layout), _defineProperty({}, "".concat(prefixCls, "-item-").concat(fieldStatus === null || fieldStatus === void 0 ? void 0 : fieldStatus.status), fieldStatus === null || fieldStatus === void 0 ? void 0 : fieldStatus.status), className),
167
167
  style: style
168
168
  }, /*#__PURE__*/React.createElement("div", {
169
169
  className: clsx("".concat(prefixCls, "-item-row"))
@@ -178,7 +178,7 @@ var Field = function Field(props) {
178
178
  }, tooltipConfig.icon)) : null) : null, /*#__PURE__*/React.createElement("div", {
179
179
  className: clsx("".concat(prefixCls, "-item-control"), classNames === null || classNames === void 0 ? void 0 : classNames.control),
180
180
  style: styles === null || styles === void 0 ? void 0 : styles.control
181
- }, /*#__PURE__*/React.isValidElement(children) ? ( /*#__PURE__*/React.cloneElement(children, getControlled(children))) : /*#__PURE__*/React.createElement("span", null, children))), /*#__PURE__*/React.createElement(AnimatePresence, null, validate && /*#__PURE__*/React.createElement(motion.small, {
181
+ }, /*#__PURE__*/React.isValidElement(children) ? ( /*#__PURE__*/React.cloneElement(children, getControlled(children))) : /*#__PURE__*/React.createElement("span", null, children))), /*#__PURE__*/React.createElement(AnimatePresence, null, (fieldStatus === null || fieldStatus === void 0 ? void 0 : fieldStatus.message) && /*#__PURE__*/React.createElement(motion.small, {
182
182
  initial: {
183
183
  opacity: 0,
184
184
  y: -10
@@ -194,7 +194,7 @@ var Field = function Field(props) {
194
194
  transition: {
195
195
  duration: 0.16
196
196
  },
197
- className: clsx("".concat(prefixCls, "-item-additional"), _defineProperty({}, "".concat(prefixCls, "-item-additional-").concat(validate.status), validate.status))
198
- }, validate.message)));
197
+ className: clsx("".concat(prefixCls, "-item-additional"), _defineProperty({}, "".concat(prefixCls, "-item-additional-").concat(fieldStatus.status), fieldStatus.status))
198
+ }, fieldStatus.message)));
199
199
  };
200
200
  export default Field;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const _default: () => React.JSX.Element;
3
+ export default _default;
@@ -0,0 +1,104 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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); }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { Button, Form, Input, Space } from "../..";
8
+ import React, { useState } from 'react';
9
+ export default (function () {
10
+ var _Form$useForm = Form.useForm(),
11
+ _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
12
+ form = _Form$useForm2[0];
13
+ var _useState = useState(null),
14
+ _useState2 = _slicedToArray(_useState, 2),
15
+ currentStatus = _useState2[0],
16
+ setCurrentStatus = _useState2[1];
17
+ var _useState3 = useState(''),
18
+ _useState4 = _slicedToArray(_useState3, 2),
19
+ submitResult = _useState4[0],
20
+ setSubmitResult = _useState4[1];
21
+ var applyStatus = function applyStatus(status) {
22
+ form.setFieldStatus('username', status);
23
+ setCurrentStatus(form.getFieldStatus('username'));
24
+ setSubmitResult('');
25
+ };
26
+ return /*#__PURE__*/React.createElement(Form, {
27
+ form: form,
28
+ initialValues: {
29
+ username: 'demo-user'
30
+ },
31
+ onFinish: function onFinish() {
32
+ return setSubmitResult('Submit succeeded');
33
+ },
34
+ onFinishFailed: function onFinishFailed() {
35
+ return setSubmitResult('Submit blocked by the blocking error');
36
+ }
37
+ }, /*#__PURE__*/React.createElement(Form.Field, {
38
+ name: "username",
39
+ label: "Username",
40
+ rules: [{
41
+ required: true,
42
+ message: 'Please input your username!'
43
+ }]
44
+ }, /*#__PURE__*/React.createElement(Input, {
45
+ placeholder: "Please input your username"
46
+ })), /*#__PURE__*/React.createElement(Space, {
47
+ style: {
48
+ marginTop: 28,
49
+ flexWrap: 'wrap'
50
+ }
51
+ }, /*#__PURE__*/React.createElement(Button, {
52
+ onClick: function onClick() {
53
+ return applyStatus({
54
+ status: 'error',
55
+ message: 'This username is unavailable'
56
+ });
57
+ }
58
+ }, "Error"), /*#__PURE__*/React.createElement(Button, {
59
+ onClick: function onClick() {
60
+ return applyStatus({
61
+ status: 'error',
62
+ message: 'This error prevents submission',
63
+ blocking: true
64
+ });
65
+ }
66
+ }, "Blocking error"), /*#__PURE__*/React.createElement(Button, {
67
+ onClick: function onClick() {
68
+ return applyStatus({
69
+ status: 'warning',
70
+ message: 'This username is commonly used'
71
+ });
72
+ }
73
+ }, "Warning"), /*#__PURE__*/React.createElement(Button, {
74
+ onClick: function onClick() {
75
+ return applyStatus({
76
+ status: 'success',
77
+ message: 'This username is available'
78
+ });
79
+ }
80
+ }, "Success"), /*#__PURE__*/React.createElement(Button, {
81
+ onClick: function onClick() {
82
+ return applyStatus({
83
+ status: 'info',
84
+ message: 'The username can be changed later'
85
+ });
86
+ }
87
+ }, "Info"), /*#__PURE__*/React.createElement(Button, {
88
+ onClick: function onClick() {
89
+ return applyStatus(null);
90
+ }
91
+ }, "Clear"), /*#__PURE__*/React.createElement(Button, {
92
+ type: "primary",
93
+ htmlType: "submit"
94
+ }, "Submit")), /*#__PURE__*/React.createElement("pre", {
95
+ style: {
96
+ marginTop: 16
97
+ }
98
+ }, "Current status: ", JSON.stringify(currentStatus, null, 2)), submitResult ? /*#__PURE__*/React.createElement("div", null, submitResult) : null, /*#__PURE__*/React.createElement("div", {
99
+ style: {
100
+ marginTop: 8,
101
+ color: '#999'
102
+ }
103
+ }, "Tip: set Success, then clear the input \u2014 the rule error takes display precedence over the manually set status."));
104
+ });
@@ -1,10 +1,11 @@
1
- import type { Callbacks, FieldEntity, FormInstance, FormListField, FormListOperation, GroupEntity, Name, NamePath, Store, TRIGGER, ValidateMessage } from './interface';
1
+ import type { Callbacks, FieldEntity, FieldStatusData, FormInstance, FormListField, FormListOperation, GroupEntity, Name, NamePath, Store, TRIGGER, ValidateMessage } from './interface';
2
2
  export declare class FormStore {
3
3
  private store;
4
4
  private callbacks;
5
5
  private fieldEntities;
6
6
  private fieldMap;
7
7
  private validateMessages;
8
+ private fieldStatuses;
8
9
  private initialized;
9
10
  private initialValues;
10
11
  private listKeyManagers;
@@ -23,6 +24,10 @@ export declare class FormStore {
23
24
  private getValueByPath;
24
25
  getFieldValue: (name: Name) => any;
25
26
  getFieldValidate: (name: Name) => ValidateMessage | null;
27
+ getFieldStatus: (name: NamePath) => FieldStatusData | null;
28
+ setFieldStatus: (name: NamePath, status: FieldStatusData | null) => void;
29
+ private deleteRelatedEntries;
30
+ private clearFieldStatuses;
26
31
  setFieldsValue: (newStore: Store, trigger?: TRIGGER) => void;
27
32
  resetFields: (name?: Name[]) => void;
28
33
  clearFields: (name?: Name[]) => void;