@rainbow-oh/yee-c 0.13.0 → 0.14.1

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 (37) hide show
  1. package/dist/cjs/Field/demo/standalone.d.ts +3 -0
  2. package/dist/cjs/Field/demo/standalone.js +56 -0
  3. package/dist/cjs/Field/field.js +20 -11
  4. package/dist/cjs/Field/interface.d.ts +7 -4
  5. package/dist/cjs/Field/style/index.less +1 -0
  6. package/dist/cjs/Menu/wrapper.js +6 -0
  7. package/dist/cjs/Table/style/index.less +17 -0
  8. package/dist/cjs/Table/theader/filter.js +2 -2
  9. package/dist/cjs/style/themes.css +1 -1
  10. package/dist/cjs/style/variables.css +1 -1
  11. package/dist/cjs/version.d.ts +1 -1
  12. package/dist/cjs/version.js +1 -1
  13. package/dist/esm/Field/demo/standalone.d.ts +3 -0
  14. package/dist/esm/Field/demo/standalone.js +43 -0
  15. package/dist/esm/Field/field.js +24 -11
  16. package/dist/esm/Field/interface.d.ts +7 -4
  17. package/dist/esm/Field/style/index.less +1 -0
  18. package/dist/esm/Menu/wrapper.js +8 -0
  19. package/dist/esm/Table/style/index.less +17 -0
  20. package/dist/esm/Table/theader/filter.js +4 -2
  21. package/dist/esm/style/themes.css +1 -1
  22. package/dist/esm/style/variables.css +1 -1
  23. package/dist/esm/version.d.ts +1 -1
  24. package/dist/esm/version.js +1 -1
  25. package/dist/umd/yee-c.min.css +1 -1
  26. package/dist/umd/yee-c.min.js +1 -1
  27. package/package.json +1 -1
  28. package/src/Field/demo/standalone.tsx +30 -0
  29. package/src/Field/field.tsx +38 -22
  30. package/src/Field/index.en-US.md +8 -4
  31. package/src/Field/index.zh-CN.md +8 -4
  32. package/src/Field/interface.ts +7 -4
  33. package/src/Field/style/index.less +1 -0
  34. package/src/Menu/wrapper.tsx +8 -0
  35. package/src/Table/style/index.less +17 -0
  36. package/src/Table/theader/filter.tsx +9 -7
  37. package/src/version.ts +1 -1
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const _default: () => React.JSX.Element;
3
+ export default _default;
@@ -0,0 +1,56 @@
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/Field/demo/standalone.tsx
30
+ var standalone_exports = {};
31
+ __export(standalone_exports, {
32
+ default: () => standalone_default
33
+ });
34
+ module.exports = __toCommonJS(standalone_exports);
35
+ var import_yee_c = require("../..");
36
+ var import_react = __toESM(require("react"));
37
+ var standalone_default = () => {
38
+ const [name, setName] = (0, import_react.useState)("");
39
+ const [remark, setRemark] = (0, import_react.useState)("");
40
+ return /* @__PURE__ */ import_react.default.createElement("div", { style: { maxWidth: 400 } }, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Field, { label: "Name", required: true }, /* @__PURE__ */ import_react.default.createElement(
41
+ import_yee_c.Input,
42
+ {
43
+ value: name,
44
+ onChange: (v) => setName(v),
45
+ placeholder: "Standalone controlled Input"
46
+ }
47
+ )), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Field, { label: "Remark" }, /* @__PURE__ */ import_react.default.createElement(
48
+ import_yee_c.TextArea,
49
+ {
50
+ value: remark,
51
+ onChange: (v) => setRemark(v),
52
+ placeholder: "Standalone controlled TextArea",
53
+ rows: 3
54
+ }
55
+ )), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Field, null, /* @__PURE__ */ import_react.default.createElement(import_yee_c.Input, { placeholder: "Field without label" })));
56
+ };
@@ -55,7 +55,7 @@ var Field = (props) => {
55
55
  disabled
56
56
  } = props;
57
57
  const [, forceUpdate] = (0, import_react2.useReducer)((x) => x + 1, 0);
58
- const { form } = (0, import_useVirtualField.default)(formName, name, {
58
+ const { form } = (0, import_useVirtualField.default)(formName != null ? formName : "", name != null ? name : "", {
59
59
  props,
60
60
  onStoreChange: forceUpdate
61
61
  });
@@ -71,11 +71,20 @@ var Field = (props) => {
71
71
  return Array.isArray(rules) && rules.some((rule) => rule.required) || required;
72
72
  };
73
73
  const getControlled = (children2) => {
74
- const mergedDisabled = disabled || children2.props.disabled;
74
+ const childProps = children2.props;
75
+ if (!form || name === void 0) {
76
+ if (disabled === void 0)
77
+ return children2;
78
+ return import_react2.default.cloneElement(children2, {
79
+ disabled: disabled || childProps.disabled
80
+ });
81
+ }
82
+ const mergedDisabled = disabled || childProps.disabled;
83
+ const fieldName = name;
75
84
  const attr = {
76
- value: getFieldValue == null ? void 0 : getFieldValue(name),
85
+ value: getFieldValue == null ? void 0 : getFieldValue(fieldName),
77
86
  name: formName,
78
- id: name,
87
+ id: fieldName,
79
88
  disabled: mergedDisabled,
80
89
  onChange: (value, ...rest) => {
81
90
  var _a, _b, _c;
@@ -84,21 +93,21 @@ var Field = (props) => {
84
93
  const fieldsValue = getFieldsValue == null ? void 0 : getFieldsValue();
85
94
  const feedback = (_a = callbacks == null ? void 0 : callbacks.onValuesBeforeChange) == null ? void 0 : _a.call(
86
95
  callbacks,
87
- { [name]: _value },
96
+ { [fieldName]: _value },
88
97
  fieldsValue
89
98
  );
90
99
  if (feedback !== void 0) {
91
100
  _value = feedback;
92
101
  }
93
- setFieldsValue == null ? void 0 : setFieldsValue({ [name]: _value }, "onChange");
102
+ setFieldsValue == null ? void 0 : setFieldsValue({ [fieldName]: _value }, "onChange");
94
103
  if ((_b = children2.props) == null ? void 0 : _b.onChange) {
95
104
  children2.props.onChange(_value, ...rest);
96
105
  }
97
- (_c = callbacks == null ? void 0 : callbacks["onValuesChange"]) == null ? void 0 : _c.call(callbacks, { [name]: _value }, fieldsValue);
106
+ (_c = callbacks == null ? void 0 : callbacks["onValuesChange"]) == null ? void 0 : _c.call(callbacks, { [fieldName]: _value }, fieldsValue);
98
107
  forceUpdate();
99
108
  },
100
109
  onBlur: (event) => {
101
- void (validateField == null ? void 0 : validateField(name, "onBlur"));
110
+ void (validateField == null ? void 0 : validateField(fieldName, "onBlur"));
102
111
  if (children2.props.onBlur) {
103
112
  children2.props.onBlur(event);
104
113
  }
@@ -106,7 +115,7 @@ var Field = (props) => {
106
115
  };
107
116
  return import_react2.default.cloneElement(children2, attr);
108
117
  };
109
- const validate = getFieldValidate == null ? void 0 : getFieldValidate(name);
118
+ const validate = name !== void 0 ? getFieldValidate == null ? void 0 : getFieldValidate(name) : void 0;
110
119
  return /* @__PURE__ */ import_react2.default.createElement(
111
120
  "div",
112
121
  {
@@ -120,7 +129,7 @@ var Field = (props) => {
120
129
  ),
121
130
  style
122
131
  },
123
- /* @__PURE__ */ import_react2.default.createElement(
132
+ label ? /* @__PURE__ */ import_react2.default.createElement(
124
133
  "label",
125
134
  {
126
135
  className: (0, import_clsx.default)(
@@ -133,7 +142,7 @@ var Field = (props) => {
133
142
  style: styles == null ? void 0 : styles.label
134
143
  },
135
144
  label
136
- ),
145
+ ) : null,
137
146
  /* @__PURE__ */ import_react2.default.createElement(
138
147
  "div",
139
148
  {
@@ -27,13 +27,16 @@ export interface FieldProps {
27
27
  */
28
28
  label?: React.ReactNode;
29
29
  /**
30
- * Field name
30
+ * Field name (required only when used with a registered virtual form)
31
31
  */
32
- name: string;
32
+ name?: string;
33
33
  /**
34
- * Name of the parent form
34
+ * Name of the parent form.
35
+ * When omitted (or no form is registered under this name), Field renders
36
+ * as a pure layout wrapper: the child keeps its own value/onChange and
37
+ * no validation runs.
35
38
  */
36
- formName: string;
39
+ formName?: string;
37
40
  /**
38
41
  * Whether disabled
39
42
  */
@@ -25,6 +25,7 @@
25
25
  &-content {
26
26
  position: relative;
27
27
  padding-bottom: var(--yee-field-content-padding-bottom);
28
+ width: stretch;
28
29
  }
29
30
 
30
31
  &-error {
@@ -98,6 +98,12 @@ var MenuWrapper = (baseprops) => {
98
98
  value: selectedKeys,
99
99
  defaultValue: defaultSelectedKeys
100
100
  });
101
+ (0, import_react.useEffect)(() => {
102
+ if (inlineCollapsed) {
103
+ setMergedOpenKeys([]);
104
+ onOpenChange == null ? void 0 : onOpenChange([]);
105
+ }
106
+ }, [inlineCollapsed]);
101
107
  const [focusedKey, setFocusedKey] = (0, import_react.useState)(void 0);
102
108
  const latestOpenKeys = (0, import_useLatest.default)(mergedOpenKeys);
103
109
  const latestFocusedKey = (0, import_useLatest.default)(focusedKey);
@@ -3,6 +3,10 @@
3
3
  @{pls} {
4
4
  position: relative;
5
5
 
6
+ &-spin {
7
+ z-index: 2;
8
+ }
9
+
6
10
  &-bordered {
7
11
  > @{pls}-thead,
8
12
  > @{pls}-tbody {
@@ -121,6 +125,19 @@
121
125
  display: inline-flex;
122
126
  cursor: pointer;
123
127
  }
128
+
129
+ &-popup {
130
+ display: flex;
131
+ flex-direction: column;
132
+ max-height: calc(
133
+ var(--yee-table-filter-popup-height) - var(--yee-popover-padding) * 2
134
+ );
135
+ }
136
+
137
+ &-list {
138
+ min-height: 0;
139
+ overflow: auto;
140
+ }
124
141
  }
125
142
 
126
143
  &-content {
@@ -171,7 +171,7 @@ var HeaderFilter = import_react.default.memo((props) => {
171
171
  }
172
172
  ];
173
173
  }
174
- popup = /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_clsx.default)(`${prefixCls}-filter-popup`) }, searchInputNode, /* @__PURE__ */ import_react.default.createElement(import_Divider.default, { style: { margin: "8px 0" } }), /* @__PURE__ */ import_react.default.createElement(
174
+ popup = /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_clsx.default)(`${prefixCls}-filter-popup`) }, searchInputNode, /* @__PURE__ */ import_react.default.createElement(import_Divider.default, { style: { margin: "8px 0" } }), /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-filter-list` }, /* @__PURE__ */ import_react.default.createElement(
175
175
  import_Tree.default,
176
176
  {
177
177
  dataSource,
@@ -180,7 +180,7 @@ var HeaderFilter = import_react.default.memo((props) => {
180
180
  checkedKeys: selectNodes,
181
181
  onCheck: (keys) => setSelectNodes(keys)
182
182
  }
183
- ), /* @__PURE__ */ import_react.default.createElement(import_Divider.default, { style: { margin: "8px 0" } }), /* @__PURE__ */ import_react.default.createElement(import_Space.default, { block: true, style: { justifyContent: "flex-end" } }, /* @__PURE__ */ import_react.default.createElement(import_Button.default, { size: "small", onClick: reset }, tableLocale.filterReset), /* @__PURE__ */ import_react.default.createElement(import_Button.default, { size: "small", onClick: () => ok("filter"), type: "primary" }, tableLocale.filterConfirm)));
183
+ )), /* @__PURE__ */ import_react.default.createElement(import_Divider.default, { style: { margin: "8px 0" } }), /* @__PURE__ */ import_react.default.createElement(import_Space.default, { block: true, style: { justifyContent: "flex-end" } }, /* @__PURE__ */ import_react.default.createElement(import_Button.default, { size: "small", onClick: reset }, tableLocale.filterReset), /* @__PURE__ */ import_react.default.createElement(import_Button.default, { size: "small", onClick: () => ok("filter"), type: "primary" }, tableLocale.filterConfirm)));
184
184
  } else if (searchable) {
185
185
  popup = /* @__PURE__ */ import_react.default.createElement("div", { className: (0, import_clsx.default)(`${prefixCls}-filter-content`) }, searchInputNode, /* @__PURE__ */ import_react.default.createElement(
186
186
  import_Space.default,
@@ -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-09-14T07:04:58.616Z
4
+ * Generated on 2026-09-18T03:28:50.284Z
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-09-14T07:04:58.616Z
4
+ * Generated on 2026-09-18T03:28:50.284Z
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.13.0";
6
+ export declare const version = "0.14.1";
@@ -22,7 +22,7 @@ __export(version_exports, {
22
22
  version: () => version
23
23
  });
24
24
  module.exports = __toCommonJS(version_exports);
25
- var version = "0.13.0";
25
+ var version = "0.14.1";
26
26
  if (typeof window !== "undefined") {
27
27
  window.__yee_c_version__ = version;
28
28
  }
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const _default: () => React.JSX.Element;
3
+ export default _default;
@@ -0,0 +1,43 @@
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 { Field, Input, TextArea } from "../..";
8
+ import React, { useState } from 'react';
9
+ export default (function () {
10
+ var _useState = useState(''),
11
+ _useState2 = _slicedToArray(_useState, 2),
12
+ name = _useState2[0],
13
+ setName = _useState2[1];
14
+ var _useState3 = useState(''),
15
+ _useState4 = _slicedToArray(_useState3, 2),
16
+ remark = _useState4[0],
17
+ setRemark = _useState4[1];
18
+ return /*#__PURE__*/React.createElement("div", {
19
+ style: {
20
+ maxWidth: 400
21
+ }
22
+ }, /*#__PURE__*/React.createElement(Field, {
23
+ label: "Name",
24
+ required: true
25
+ }, /*#__PURE__*/React.createElement(Input, {
26
+ value: name,
27
+ onChange: function onChange(v) {
28
+ return setName(v);
29
+ },
30
+ placeholder: "Standalone controlled Input"
31
+ })), /*#__PURE__*/React.createElement(Field, {
32
+ label: "Remark"
33
+ }, /*#__PURE__*/React.createElement(TextArea, {
34
+ value: remark,
35
+ onChange: function onChange(v) {
36
+ return setRemark(v);
37
+ },
38
+ placeholder: "Standalone controlled TextArea",
39
+ rows: 3
40
+ })), /*#__PURE__*/React.createElement(Field, null, /*#__PURE__*/React.createElement(Input, {
41
+ placeholder: "Field without label"
42
+ })));
43
+ });
@@ -37,7 +37,7 @@ var Field = function Field(props) {
37
37
  }, 0),
38
38
  _useReducer2 = _slicedToArray(_useReducer, 2),
39
39
  forceUpdate = _useReducer2[1];
40
- var _useVirtualField = useVirtualField(formName, name, {
40
+ var _useVirtualField = useVirtualField(formName !== null && formName !== void 0 ? formName : '', name !== null && name !== void 0 ? name : '', {
41
41
  props: props,
42
42
  onStoreChange: forceUpdate
43
43
  }),
@@ -55,22 +55,35 @@ var Field = function Field(props) {
55
55
  }) || required;
56
56
  };
57
57
  var getControlled = function getControlled(children) {
58
- var mergedDisabled = disabled || children.props.disabled;
58
+ var childProps = children.props;
59
+
60
+ // Pure layout mode (no form): children keep their own value/onChange.
61
+ // Only a Field-level disabled is merged down.
62
+ // Pure layout mode (no form or no field name): children keep their own
63
+ // value/onChange. Only a Field-level disabled is merged down.
64
+ if (!form || name === undefined) {
65
+ if (disabled === undefined) return children;
66
+ return /*#__PURE__*/React.cloneElement(children, {
67
+ disabled: disabled || childProps.disabled
68
+ });
69
+ }
70
+ var mergedDisabled = disabled || childProps.disabled;
71
+ var fieldName = name;
59
72
  var attr = {
60
- value: getFieldValue === null || getFieldValue === void 0 ? void 0 : getFieldValue(name),
73
+ value: getFieldValue === null || getFieldValue === void 0 ? void 0 : getFieldValue(fieldName),
61
74
  name: formName,
62
- id: name,
75
+ id: fieldName,
63
76
  disabled: mergedDisabled,
64
77
  onChange: function onChange(value) {
65
78
  var _callbacks$onValuesBe, _children$props, _callbacks$onValuesCh;
66
79
  var callbacks = getCallbacks === null || getCallbacks === void 0 ? void 0 : getCallbacks();
67
80
  var _value = value;
68
81
  var fieldsValue = getFieldsValue === null || getFieldsValue === void 0 ? void 0 : getFieldsValue();
69
- var feedback = callbacks === null || callbacks === void 0 || (_callbacks$onValuesBe = callbacks.onValuesBeforeChange) === null || _callbacks$onValuesBe === void 0 ? void 0 : _callbacks$onValuesBe.call(callbacks, _defineProperty({}, name, _value), fieldsValue);
82
+ var feedback = callbacks === null || callbacks === void 0 || (_callbacks$onValuesBe = callbacks.onValuesBeforeChange) === null || _callbacks$onValuesBe === void 0 ? void 0 : _callbacks$onValuesBe.call(callbacks, _defineProperty({}, fieldName, _value), fieldsValue);
70
83
  if (feedback !== undefined) {
71
84
  _value = feedback;
72
85
  }
73
- setFieldsValue === null || setFieldsValue === void 0 || setFieldsValue(_defineProperty({}, name, _value), 'onChange');
86
+ setFieldsValue === null || setFieldsValue === void 0 || setFieldsValue(_defineProperty({}, fieldName, _value), 'onChange');
74
87
 
75
88
  // Call child component's onChange
76
89
  if ((_children$props = children.props) !== null && _children$props !== void 0 && _children$props.onChange) {
@@ -80,12 +93,12 @@ var Field = function Field(props) {
80
93
  }
81
94
  (_ref2 = children.props).onChange.apply(_ref2, [_value].concat(rest));
82
95
  }
83
- callbacks === null || callbacks === void 0 || (_callbacks$onValuesCh = callbacks['onValuesChange']) === null || _callbacks$onValuesCh === void 0 || _callbacks$onValuesCh.call(callbacks, _defineProperty({}, name, _value), fieldsValue);
96
+ callbacks === null || callbacks === void 0 || (_callbacks$onValuesCh = callbacks['onValuesChange']) === null || _callbacks$onValuesCh === void 0 || _callbacks$onValuesCh.call(callbacks, _defineProperty({}, fieldName, _value), fieldsValue);
84
97
  forceUpdate();
85
98
  },
86
99
  onBlur: function onBlur(event) {
87
100
  // Fire-and-forget async validation; store notifies onStoreChange on completion.
88
- void (validateField === null || validateField === void 0 ? void 0 : validateField(name, 'onBlur'));
101
+ void (validateField === null || validateField === void 0 ? void 0 : validateField(fieldName, 'onBlur'));
89
102
 
90
103
  // Call child component's onBlur
91
104
  if (children.props.onBlur) {
@@ -95,14 +108,14 @@ var Field = function Field(props) {
95
108
  };
96
109
  return /*#__PURE__*/React.cloneElement(children, attr);
97
110
  };
98
- var validate = getFieldValidate === null || getFieldValidate === void 0 ? void 0 : getFieldValidate(name);
111
+ var validate = name !== undefined ? getFieldValidate === null || getFieldValidate === void 0 ? void 0 : getFieldValidate(name) : undefined;
99
112
  return /*#__PURE__*/React.createElement("div", {
100
113
  className: clsx("".concat(prefixCls), "".concat(prefixCls, "-").concat(layout), _defineProperty({}, "".concat(prefixCls, "-").concat(validate === null || validate === void 0 ? void 0 : validate.status), validate === null || validate === void 0 ? void 0 : validate.status), className),
101
114
  style: style
102
- }, /*#__PURE__*/React.createElement("label", {
115
+ }, label ? /*#__PURE__*/React.createElement("label", {
103
116
  className: clsx("".concat(prefixCls, "-label"), _defineProperty({}, "".concat(prefixCls, "-required"), isRequired()), classNames === null || classNames === void 0 ? void 0 : classNames.label),
104
117
  style: styles === null || styles === void 0 ? void 0 : styles.label
105
- }, label), /*#__PURE__*/React.createElement("div", {
118
+ }, label) : null, /*#__PURE__*/React.createElement("div", {
106
119
  className: clsx("".concat(prefixCls, "-content"), classNames === null || classNames === void 0 ? void 0 : classNames.content),
107
120
  style: styles === null || styles === void 0 ? void 0 : styles.content
108
121
  }, /*#__PURE__*/React.createElement("div", {
@@ -27,13 +27,16 @@ export interface FieldProps {
27
27
  */
28
28
  label?: React.ReactNode;
29
29
  /**
30
- * Field name
30
+ * Field name (required only when used with a registered virtual form)
31
31
  */
32
- name: string;
32
+ name?: string;
33
33
  /**
34
- * Name of the parent form
34
+ * Name of the parent form.
35
+ * When omitted (or no form is registered under this name), Field renders
36
+ * as a pure layout wrapper: the child keeps its own value/onChange and
37
+ * no validation runs.
35
38
  */
36
- formName: string;
39
+ formName?: string;
37
40
  /**
38
41
  * Whether disabled
39
42
  */
@@ -25,6 +25,7 @@
25
25
  &-content {
26
26
  position: relative;
27
27
  padding-bottom: var(--yee-field-content-padding-bottom);
28
+ width: stretch;
28
29
  }
29
30
 
30
31
  &-error {
@@ -63,6 +63,14 @@ var MenuWrapper = function MenuWrapper(baseprops) {
63
63
  mergedSelectedKeys = _useMergedState4[0],
64
64
  setMergedSelectedKeys = _useMergedState4[1];
65
65
 
66
+ // Reset `openKeys` when inline collapsed
67
+ useEffect(function () {
68
+ if (inlineCollapsed) {
69
+ setMergedOpenKeys([]);
70
+ onOpenChange === null || onOpenChange === void 0 || onOpenChange([]);
71
+ }
72
+ }, [inlineCollapsed]);
73
+
66
74
  // -------- Keyboard control ------------------------------
67
75
  var _useState = useState(undefined),
68
76
  _useState2 = _slicedToArray(_useState, 2),
@@ -3,6 +3,10 @@
3
3
  @{pls} {
4
4
  position: relative;
5
5
 
6
+ &-spin {
7
+ z-index: 2;
8
+ }
9
+
6
10
  &-bordered {
7
11
  > @{pls}-thead,
8
12
  > @{pls}-tbody {
@@ -121,6 +125,19 @@
121
125
  display: inline-flex;
122
126
  cursor: pointer;
123
127
  }
128
+
129
+ &-popup {
130
+ display: flex;
131
+ flex-direction: column;
132
+ max-height: calc(
133
+ var(--yee-table-filter-popup-height) - var(--yee-popover-padding) * 2
134
+ );
135
+ }
136
+
137
+ &-list {
138
+ min-height: 0;
139
+ overflow: auto;
140
+ }
124
141
  }
125
142
 
126
143
  &-content {
@@ -188,7 +188,9 @@ var HeaderFilter = /*#__PURE__*/React.memo(function (props) {
188
188
  style: {
189
189
  margin: '8px 0'
190
190
  }
191
- }), /*#__PURE__*/React.createElement(Tree, {
191
+ }), /*#__PURE__*/React.createElement("div", {
192
+ className: "".concat(prefixCls, "-filter-list")
193
+ }, /*#__PURE__*/React.createElement(Tree, {
192
194
  dataSource: dataSource,
193
195
  checkable: true,
194
196
  multiple: true,
@@ -196,7 +198,7 @@ var HeaderFilter = /*#__PURE__*/React.memo(function (props) {
196
198
  onCheck: function onCheck(keys) {
197
199
  return setSelectNodes(keys);
198
200
  }
199
- }), /*#__PURE__*/React.createElement(Divider, {
201
+ })), /*#__PURE__*/React.createElement(Divider, {
200
202
  style: {
201
203
  margin: '8px 0'
202
204
  }
@@ -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-09-14T07:04:58.616Z
4
+ * Generated on 2026-09-18T03:28:50.284Z
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-09-14T07:04:58.616Z
4
+ * Generated on 2026-09-18T03:28:50.284Z
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.13.0";
6
+ export declare const version = "0.14.1";
@@ -1,4 +1,4 @@
1
- export var version = "0.13.0";
1
+ export var version = "0.14.1";
2
2
  if (typeof window !== 'undefined') {
3
3
  window.__yee_c_version__ = version;
4
4
  }