@rainbow-oh/yee-c 0.12.1 → 0.13.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 (100) hide show
  1. package/dist/cjs/Form/style/index.less +4 -0
  2. package/dist/cjs/Input/style/index.less +1 -1
  3. package/dist/cjs/InputNumber/style/index.less +1 -1
  4. package/dist/cjs/Search/style/index.less +1 -1
  5. package/dist/cjs/Selector/style/index.less +1 -1
  6. package/dist/cjs/Table/demo/controlled-filter.d.ts +3 -0
  7. package/dist/cjs/Table/demo/controlled-filter.js +105 -0
  8. package/dist/cjs/Table/hooks/useFilter.d.ts +5 -1
  9. package/dist/cjs/Table/hooks/useFilter.js +80 -42
  10. package/dist/cjs/Table/index.d.ts +1 -1
  11. package/dist/cjs/Table/interface.d.ts +14 -4
  12. package/dist/cjs/Table/table.js +22 -25
  13. package/dist/cjs/Table/theader/cell.js +0 -3
  14. package/dist/cjs/Table/theader/filter.js +22 -5
  15. package/dist/cjs/TextArea/style/index.less +1 -1
  16. package/dist/cjs/VerificationCode/style/index.less +1 -1
  17. package/dist/cjs/style/color.blue.css +6 -7
  18. package/dist/cjs/style/color.crimson.css +8 -9
  19. package/dist/cjs/style/color.css +14 -11
  20. package/dist/cjs/style/color.dark.css +8 -9
  21. package/dist/cjs/style/color.gemini.css +8 -2
  22. package/dist/cjs/style/color.green.css +8 -9
  23. package/dist/cjs/style/color.jam.css +8 -9
  24. package/dist/cjs/style/color.navy.css +8 -9
  25. package/dist/cjs/style/color.peach.css +8 -9
  26. package/dist/cjs/style/color.pine.css +8 -9
  27. package/dist/cjs/style/color.pitaya.css +8 -9
  28. package/dist/cjs/style/color.pumpkin.css +8 -9
  29. package/dist/cjs/style/color.ruby.css +8 -9
  30. package/dist/cjs/style/themes.css +95 -100
  31. package/dist/cjs/style/variables.css +15 -12
  32. package/dist/cjs/version.d.ts +1 -1
  33. package/dist/cjs/version.js +1 -1
  34. package/dist/esm/Form/style/index.less +4 -0
  35. package/dist/esm/Input/style/index.less +1 -1
  36. package/dist/esm/InputNumber/style/index.less +1 -1
  37. package/dist/esm/Search/style/index.less +1 -1
  38. package/dist/esm/Selector/style/index.less +1 -1
  39. package/dist/esm/Table/demo/controlled-filter.d.ts +3 -0
  40. package/dist/esm/Table/demo/controlled-filter.js +122 -0
  41. package/dist/esm/Table/hooks/useFilter.d.ts +5 -1
  42. package/dist/esm/Table/hooks/useFilter.js +112 -69
  43. package/dist/esm/Table/index.d.ts +1 -1
  44. package/dist/esm/Table/interface.d.ts +14 -4
  45. package/dist/esm/Table/table.js +34 -21
  46. package/dist/esm/Table/theader/cell.js +1 -3
  47. package/dist/esm/Table/theader/filter.js +22 -1
  48. package/dist/esm/TextArea/style/index.less +1 -1
  49. package/dist/esm/VerificationCode/style/index.less +1 -1
  50. package/dist/esm/style/color.blue.css +6 -7
  51. package/dist/esm/style/color.crimson.css +8 -9
  52. package/dist/esm/style/color.css +14 -11
  53. package/dist/esm/style/color.dark.css +8 -9
  54. package/dist/esm/style/color.gemini.css +8 -2
  55. package/dist/esm/style/color.green.css +8 -9
  56. package/dist/esm/style/color.jam.css +8 -9
  57. package/dist/esm/style/color.navy.css +8 -9
  58. package/dist/esm/style/color.peach.css +8 -9
  59. package/dist/esm/style/color.pine.css +8 -9
  60. package/dist/esm/style/color.pitaya.css +8 -9
  61. package/dist/esm/style/color.pumpkin.css +8 -9
  62. package/dist/esm/style/color.ruby.css +8 -9
  63. package/dist/esm/style/themes.css +95 -100
  64. package/dist/esm/style/variables.css +15 -12
  65. package/dist/esm/version.d.ts +1 -1
  66. package/dist/esm/version.js +1 -1
  67. package/dist/umd/yee-c.min.css +6 -8
  68. package/dist/umd/yee-c.min.js +1 -1
  69. package/package.json +1 -1
  70. package/src/Form/style/index.less +4 -0
  71. package/src/Input/style/index.less +1 -1
  72. package/src/InputNumber/style/index.less +1 -1
  73. package/src/Search/style/index.less +1 -1
  74. package/src/Selector/style/index.less +1 -1
  75. package/src/Table/demo/controlled-filter.tsx +107 -0
  76. package/src/Table/hooks/useFilter.ts +107 -49
  77. package/src/Table/index.en-US.md +22 -1
  78. package/src/Table/index.ts +1 -0
  79. package/src/Table/index.zh-CN.md +22 -1
  80. package/src/Table/interface.ts +14 -2
  81. package/src/Table/table-filter.test.tsx +343 -0
  82. package/src/Table/table.tsx +29 -27
  83. package/src/Table/theader/cell.tsx +0 -2
  84. package/src/Table/theader/filter.tsx +26 -1
  85. package/src/TextArea/style/index.less +1 -1
  86. package/src/VerificationCode/style/index.less +1 -1
  87. package/src/style/color.blue.css +6 -7
  88. package/src/style/color.crimson.css +8 -9
  89. package/src/style/color.css +14 -11
  90. package/src/style/color.dark.css +8 -9
  91. package/src/style/color.gemini.css +8 -2
  92. package/src/style/color.green.css +8 -9
  93. package/src/style/color.jam.css +8 -9
  94. package/src/style/color.navy.css +8 -9
  95. package/src/style/color.peach.css +8 -9
  96. package/src/style/color.pine.css +8 -9
  97. package/src/style/color.pitaya.css +8 -9
  98. package/src/style/color.pumpkin.css +8 -9
  99. package/src/style/color.ruby.css +8 -9
  100. package/src/version.ts +1 -1
@@ -218,6 +218,37 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
218
218
  action: 'sort'
219
219
  });
220
220
  }, [onSortInternal, onChange, pagination, current, pageSize, filters]);
221
+ var handleFilter = React.useCallback(function (options) {
222
+ var next = onFilterInternal(options);
223
+ // Remove-then-re-add: the committing column's entry must be reported
224
+ // even when the merged records hold no record for it (a controlled
225
+ // column whose prop value is still empty), so parents can mirror state
226
+ // from this payload alone. On clear the key is kept with its empty
227
+ // value, matching antd.
228
+ var emitted = next.filterRecords.filter(function (record) {
229
+ return record.dataIndex !== options.dataIndex;
230
+ });
231
+ emitted.push({
232
+ dataIndex: options.dataIndex,
233
+ value: options.value
234
+ });
235
+ onChange === null || onChange === void 0 || onChange({
236
+ pagination: pagination === false ? undefined : {
237
+ current: current,
238
+ pageSize: pageSize
239
+ },
240
+ sorter: sorters,
241
+ filters: Object.fromEntries(emitted.map(function (_ref2) {
242
+ var dataIndex = _ref2.dataIndex,
243
+ value = _ref2.value;
244
+ return [dataIndex, value];
245
+ })),
246
+ // Filtered but not yet re-sorted; symmetric with handleSort, whose
247
+ // payload is sorted but not re-paginated.
248
+ currentDataSource: next.data,
249
+ action: 'filter'
250
+ });
251
+ }, [onFilterInternal, onChange, pagination, current, pageSize, sorters]);
221
252
 
222
253
  // Expanded row data
223
254
  var _useExpand = useExpand(expandable, allKeys, getRowKey),
@@ -234,9 +265,6 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
234
265
  checkedAll = _useSelection.checkedAll,
235
266
  onCheckAll = _useSelection.onCheckAll,
236
267
  onSelectionChange = _useSelection.onChange;
237
-
238
- // Track filter changes to emit onChange after filtered data is recalculated
239
- var prevFilterRecordsRef = useRef(filterRecords);
240
268
  var _React$useState3 = React.useState({
241
269
  left: false,
242
270
  right: false
@@ -262,8 +290,8 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
262
290
  // measured layout, used as an effect dependency instead of the array itself.
263
291
  var columnLayoutKey = useMemo(function () {
264
292
  return wrapedColumns.map(function (column, index) {
265
- var _ref2, _column$key, _column$fixed, _column$width;
266
- return "".concat((_ref2 = (_column$key = column.key) !== null && _column$key !== void 0 ? _column$key : column.dataIndex) !== null && _ref2 !== void 0 ? _ref2 : index, ":").concat((_column$fixed = column.fixed) !== null && _column$fixed !== void 0 ? _column$fixed : '', ":").concat((_column$width = column.width) !== null && _column$width !== void 0 ? _column$width : '');
293
+ var _ref3, _column$key, _column$fixed, _column$width;
294
+ return "".concat((_ref3 = (_column$key = column.key) !== null && _column$key !== void 0 ? _column$key : column.dataIndex) !== null && _ref3 !== void 0 ? _ref3 : index, ":").concat((_column$fixed = column.fixed) !== null && _column$fixed !== void 0 ? _column$fixed : '', ":").concat((_column$width = column.width) !== null && _column$width !== void 0 ? _column$width : '');
267
295
  }).join('|');
268
296
  }, [wrapedColumns]);
269
297
 
@@ -298,21 +326,6 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
298
326
  return unchanged ? current : nextWidths;
299
327
  });
300
328
  }, [wrapedColumnsRef]);
301
- useEffect(function () {
302
- if (prevFilterRecordsRef.current === filterRecords) return;
303
- prevFilterRecordsRef.current = filterRecords;
304
- if (!onChange) return;
305
- onChange({
306
- pagination: pagination === false ? undefined : {
307
- current: current,
308
- pageSize: pageSize
309
- },
310
- sorter: sorters,
311
- filters: filters,
312
- currentDataSource: sortedData,
313
- action: 'filter'
314
- });
315
- }, [filterRecords, filters, sortedData, pagination, current, pageSize, sorters, onChange]);
316
329
 
317
330
  // Observers are attached once: both callbacks are referentially stable.
318
331
  useEffect(function () {
@@ -365,7 +378,7 @@ var Table = /*#__PURE__*/React.forwardRef(function (baseprops, ref) {
365
378
  sorters: sorters,
366
379
  onSort: handleSort,
367
380
  onCheckAll: onCheckAll,
368
- onInternalFilter: onFilterInternal,
381
+ onInternalFilter: handleFilter,
369
382
  resizingKey: resizingKey,
370
383
  onResizeStart: onResizeStart,
371
384
  onResizeStep: onResizeStep
@@ -1,4 +1,4 @@
1
- var _excluded = ["fixed", "isFixedLeftLast", "isFixedRightFirst", "align", "title", "dataIndex", "sorter", "filter", "sorters", "className", "styles", "classNames", "showSorterTooltip", "tableActionBarShowOnHover", "internalFilters", "style", "width", "colSpan", "rowSpan", "resizable", "resizeKey", "resizingKey", "onHeaderCell", "onSort", "onInternalFilter", "onResizeStart", "onResizeStep"];
1
+ var _excluded = ["fixed", "isFixedLeftLast", "isFixedRightFirst", "align", "title", "dataIndex", "sorter", "filter", "sorters", "className", "styles", "classNames", "showSorterTooltip", "tableActionBarShowOnHover", "style", "width", "colSpan", "rowSpan", "resizable", "resizeKey", "resizingKey", "onHeaderCell", "onSort", "onInternalFilter", "onResizeStart", "onResizeStep"];
2
2
  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; }
3
3
  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; }
4
4
  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; }
@@ -32,7 +32,6 @@ var HeadCell = function HeadCell(props) {
32
32
  _props$showSorterTool = props.showSorterTooltip,
33
33
  showSorterTooltip = _props$showSorterTool === void 0 ? true : _props$showSorterTool,
34
34
  tableActionBarShowOnHover = props.tableActionBarShowOnHover,
35
- internalFilters = props.internalFilters,
36
35
  style = props.style,
37
36
  width = props.width,
38
37
  colSpan = props.colSpan,
@@ -116,7 +115,6 @@ var HeadCell = function HeadCell(props) {
116
115
  }, /*#__PURE__*/React.createElement(Filter, _extends({}, rest, {
117
116
  filter: filter,
118
117
  column: props,
119
- internalFilters: internalFilters,
120
118
  onInternalFilter: onInternalFilter,
121
119
  dataIndex: dataIndex
122
120
  })));
@@ -35,6 +35,7 @@ var hasFilterValue = function hasFilterValue(value) {
35
35
  return Array.isArray(value) ? value.length > 0 : value !== '';
36
36
  };
37
37
  var HeaderFilter = /*#__PURE__*/React.memo(function (props) {
38
+ var _filter$filteredValue;
38
39
  var filter = props.filter,
39
40
  column = props.column,
40
41
  getPopupContainer = props.getPopupContainer,
@@ -74,6 +75,26 @@ var HeaderFilter = /*#__PURE__*/React.memo(function (props) {
74
75
  _useState8 = _slicedToArray(_useState7, 2),
75
76
  searchValue = _useState8[0],
76
77
  setSearchValue = _useState8[1];
78
+
79
+ // Controlled columns echo `filteredValue` into the local display state.
80
+ // Only sync while the dropdown is closed so in-progress edits are kept; on
81
+ // close the committed ref is synced too, so `filterOnClose`'s value diff
82
+ // doesn't re-commit the echoed value as if the user had changed it.
83
+ var controlled = filter.filteredValue !== undefined;
84
+ useEffect(function () {
85
+ if (!controlled || open) return;
86
+ var value = filter.filteredValue;
87
+ if (Array.isArray(value)) {
88
+ setSelectNodes(_toConsumableArray(value));
89
+ setSearchValue('');
90
+ } else {
91
+ setSearchValue(String(value));
92
+ setSelectNodes([]);
93
+ }
94
+ var committed = Array.isArray(value) ? _toConsumableArray(value) : value;
95
+ committedValueRef.current = committed;
96
+ setCommittedValue(committed);
97
+ }, [controlled, filter.filteredValue, open]);
77
98
  useEffect(function () {
78
99
  if (!open) return;
79
100
  var raf = requestAnimationFrame(function () {
@@ -226,7 +247,7 @@ var HeaderFilter = /*#__PURE__*/React.memo(function (props) {
226
247
  }
227
248
  setOpen(nextOpen);
228
249
  };
229
- var isFiltered = filtered !== null && filtered !== void 0 ? filtered : hasFilterValue(committedValue);
250
+ var isFiltered = filtered !== null && filtered !== void 0 ? filtered : controlled ? hasFilterValue((_filter$filteredValue = filter.filteredValue) !== null && _filter$filteredValue !== void 0 ? _filter$filteredValue : '') : hasFilterValue(committedValue);
230
251
  var renderTrigger = function renderTrigger() {
231
252
  var trigger = typeof icon === 'function' ? icon(isFiltered) : /*#__PURE__*/React.createElement(Button, {
232
253
  icon: items ? /*#__PURE__*/React.createElement(ListFilter, {
@@ -90,7 +90,7 @@
90
90
  }
91
91
 
92
92
  &:not(@{pls}-disabled):not(@{pls}-borderless):focus-within {
93
- border-color: var(--yee-input-hover-border-color);
93
+ border-color: var(--yee-input-focus-border-color);
94
94
  box-shadow: 0 0 0 2px var(--yee-input-focus-bs-color);
95
95
  }
96
96
 
@@ -19,7 +19,7 @@
19
19
  }
20
20
 
21
21
  &:focus {
22
- border-color: var(--yee-input-content-focus-border-color);
22
+ border-color: var(--yee-input-focus-border-color);
23
23
  outline: none;
24
24
  box-shadow: var(--yee-verification-code-item-focus-box-shadow);
25
25
  }
@@ -33,7 +33,8 @@
33
33
  --yee-color-text-auxiliary: #f5f5f5;
34
34
  --yee-color-split: #e7e7e7;
35
35
  --yee-color-border: #cbd6e2;
36
- --yee-color-border-hover-focus: #75b9f0;
36
+ --yee-color-border-hover: #75b9f0;
37
+ --yee-color-border-focus: #75b9f0;
37
38
  --yee-color-bg-highlight: rgba(245, 130, 32, 16%);
38
39
  --yee-color-bg-disabled: #f5f8fa;
39
40
  --yee-color-bg-head: #f8f8f8;
@@ -545,9 +546,7 @@
545
546
  --yee-date-picker-time-disabled-bg-color: var(--yee-disabled-bg-color);
546
547
 
547
548
  --yee-range-picker-trigger-border-color: var(--yee-color-border);
548
- --yee-range-picker-trigger-hover-border-color: var(
549
- --yee-color-border-hover-focus
550
- );
549
+ --yee-range-picker-trigger-hover-border-color: var(--yee-color-border-hover);
551
550
 
552
551
  --yee-range-picker-checked-bg-color: var(--yee-option-active-bg-color);
553
552
  --yee-range-picker-hover-border-color: var(--yee-primary1-color);
@@ -569,7 +568,7 @@
569
568
  /* --Input-- */
570
569
 
571
570
  --yee-input-hover-border-color: #75b9f0;
572
- --yee-input-content-focus-border-color: #75b9f0;
571
+ --yee-input-focus-border-color: #75b9f0;
573
572
  --yee-input-focus-bs-color: rgba(117, 185, 240, 0.24);
574
573
  --yee-input-border-color: var(--yee-color-border);
575
574
  --yee-input-content-bg-color: var(--yee-color-bg-container);
@@ -630,7 +629,7 @@
630
629
  --yee-color-text-disabled
631
630
  );
632
631
 
633
- --yee-radio-inner-hover-border-color: var(--yee-color-border-hover-focus);
632
+ --yee-radio-inner-hover-border-color: var(--yee-color-border-hover);
634
633
  --yee-radio-label-button-border-color: var(--yee-color-border);
635
634
  --yee-radio-label-button-bg-color: var(--yee-color-bg-container);
636
635
  --yee-radio-label-button-hover-color: var(--yee-primary1-color);
@@ -1310,7 +1309,7 @@
1310
1309
  /* --Selector-- */
1311
1310
 
1312
1311
  --yee-selector-border-color: var(--yee-color-border);
1313
- --yee-selector-hover-border-color: var(--yee-color-border-hover-focus);
1312
+ --yee-selector-hover-border-color: var(--yee-color-border-hover);
1314
1313
  --yee-selector-focus-border-color: var(--yee-color-primary);
1315
1314
  --yee-selector-disabled-bg-color: var(--yee-input-disabled-bg-color);
1316
1315
 
@@ -33,7 +33,8 @@
33
33
  --yee-color-text-auxiliary: #f5f5f5;
34
34
  --yee-color-split: #eeeeee;
35
35
  --yee-color-border: #cccccc;
36
- --yee-color-border-hover-focus: #7aadc2;
36
+ --yee-color-border-hover: #7aadc2;
37
+ --yee-color-border-focus: #7aadc2;
37
38
  --yee-color-bg-highlight: rgba(188, 70, 62, 0.16);
38
39
  --yee-color-bg-disabled: #f2f2f2;
39
40
  --yee-color-bg-head: #fafafa;
@@ -447,7 +448,7 @@
447
448
 
448
449
  --yee-checkbox-bg-color: var(--yee-color-bg-container);
449
450
  --yee-checkbox-border-color: var(--yee-color-border);
450
- --yee-checkbox-hover-border-color: var(--yee-color-border-hover-focus);
451
+ --yee-checkbox-hover-border-color: var(--yee-color-border-hover);
451
452
  --yee-checkbox-checked-bg-color: var(--yee-color-primary);
452
453
  --yee-checkbox-checked-border-color: var(--yee-color-primary);
453
454
  --yee-checkbox-checked-after-border-color: #ffffff;
@@ -494,9 +495,7 @@
494
495
  --yee-date-picker-time-disabled-bg-color: transparent;
495
496
 
496
497
  --yee-range-picker-trigger-border-color: var(--yee-color-border);
497
- --yee-range-picker-trigger-hover-border-color: var(
498
- --yee-color-border-hover-focus
499
- );
498
+ --yee-range-picker-trigger-hover-border-color: var(--yee-color-border-hover);
500
499
 
501
500
  --yee-range-picker-checked-bg-color: var(--yee-color-option-active-bg);
502
501
  --yee-range-picker-hover-border-color: var(--yee-color-primary);
@@ -517,8 +516,8 @@
517
516
 
518
517
  /* --Input-- */
519
518
 
520
- --yee-input-hover-border-color: var(--yee-color-border-hover-focus);
521
- --yee-input-content-focus-border-color: var(--yee-color-border-hover-focus);
519
+ --yee-input-hover-border-color: var(--yee-color-border-hover);
520
+ --yee-input-focus-border-color: var(--yee-color-border-focus);
522
521
  --yee-input-focus-bs-color: rgba(122, 173, 194, 0.24);
523
522
  --yee-input-border-color: var(--yee-color-border);
524
523
  --yee-input-content-bg-color: var(--yee-color-bg-container);
@@ -585,7 +584,7 @@
585
584
  --yee-color-text-disabled
586
585
  );
587
586
 
588
- --yee-radio-inner-hover-border-color: var(--yee-color-border-hover-focus);
587
+ --yee-radio-inner-hover-border-color: var(--yee-color-border-hover);
589
588
  --yee-radio-label-button-border-color: var(--yee-color-border);
590
589
  --yee-radio-label-button-bg-color: var(--yee-color-bg-container);
591
590
  --yee-radio-label-button-hover-color: var(--yee-color-primary);
@@ -1183,7 +1182,7 @@
1183
1182
 
1184
1183
  --yee-selector-border-color: var(--yee-color-border);
1185
1184
 
1186
- --yee-selector-hover-border-color: var(--yee-color-border-hover-focus);
1185
+ --yee-selector-hover-border-color: var(--yee-color-border-hover);
1187
1186
 
1188
1187
  --yee-selector-focus-border-color: var(--yee-color-primary);
1189
1188
 
@@ -34,7 +34,8 @@
34
34
  --yee-color-text-auxiliary: #d1d1d1;
35
35
  --yee-color-split: #e7e7e7;
36
36
  --yee-color-border: #cbd6e2;
37
- --yee-color-border-hover-focus: #75b9f0;
37
+ --yee-color-border-hover: #75b9f0;
38
+ --yee-color-border-focus: #75b9f0;
38
39
  --yee-color-bg-highlight: rgba(245, 130, 32, 16%);
39
40
  --yee-color-bg-disabled: #f5f8fa;
40
41
  --yee-color-bg-head: #f8f8f8;
@@ -486,7 +487,7 @@
486
487
  /* --Checkbox-- */
487
488
  --yee-checkbox-bg-color: var(--yee-color-bg-container);
488
489
  --yee-checkbox-border-color: var(--yee-color-border);
489
- --yee-checkbox-hover-border-color: var(--yee-color-border-hover-focus);
490
+ --yee-checkbox-hover-border-color: var(--yee-color-border-hover);
490
491
  --yee-checkbox-checked-bg-color: var(--yee-color-primary);
491
492
  --yee-checkbox-checked-border-color: var(--yee-color-primary);
492
493
  --yee-checkbox-checked-after-border-color: #fff;
@@ -529,9 +530,7 @@
529
530
  --yee-date-picker-time-disabled-color: var(--yee-color-text-disabled);
530
531
  --yee-date-picker-time-disabled-bg-color: transparent;
531
532
  --yee-range-picker-trigger-border-color: var(--yee-color-border);
532
- --yee-range-picker-trigger-hover-border-color: var(
533
- --yee-color-border-hover-focus
534
- );
533
+ --yee-range-picker-trigger-hover-border-color: var(--yee-color-border-hover);
535
534
  --yee-range-picker-checked-bg-color: var(--yee-color-option-active-bg);
536
535
  --yee-range-picker-hover-border-color: var(--yee-color-primary);
537
536
  --yee-range-picker-panel-bg-color: #fff;
@@ -548,8 +547,8 @@
548
547
  );
549
548
 
550
549
  /* --Input-- */
551
- --yee-input-hover-border-color: var(--yee-color-border-hover-focus);
552
- --yee-input-content-focus-border-color: var(--yee-color-border-hover-focus);
550
+ --yee-input-hover-border-color: var(--yee-color-border-hover);
551
+ --yee-input-focus-border-color: var(--yee-color-border-focus);
553
552
  --yee-input-focus-bs-color: rgba(117, 185, 240, 24%);
554
553
  --yee-input-border-color: var(--yee-color-border);
555
554
  --yee-input-content-bg-color: var(--yee-color-bg-container);
@@ -601,7 +600,7 @@
601
600
  --yee-radio-inner-disabled-after-checked-bg-color: var(
602
601
  --yee-color-text-disabled
603
602
  );
604
- --yee-radio-inner-hover-border-color: var(--yee-color-border-hover-focus);
603
+ --yee-radio-inner-hover-border-color: var(--yee-color-border-hover);
605
604
  --yee-radio-label-button-border-color: var(--yee-color-border);
606
605
  --yee-radio-label-button-bg-color: var(--yee-color-bg-container);
607
606
  --yee-radio-label-button-hover-color: var(--yee-color-primary);
@@ -1146,7 +1145,7 @@
1146
1145
 
1147
1146
  /* --Selector-- */
1148
1147
  --yee-selector-border-color: var(--yee-color-border);
1149
- --yee-selector-hover-border-color: var(--yee-color-border-hover-focus);
1148
+ --yee-selector-hover-border-color: var(--yee-color-border-hover);
1150
1149
  --yee-selector-focus-border-color: var(--yee-color-primary);
1151
1150
  --yee-selector-disabled-bg-color: var(--yee-input-disabled-bg-color);
1152
1151
 
@@ -1221,9 +1220,13 @@
1221
1220
  --yee-text-color-highlight: var(--yee-color-text-highlight);
1222
1221
  --yee-text-color-secondary: var(--yee-color-text-secondary);
1223
1222
  --yee-border-color: var(--yee-color-border);
1224
- --yee-border-color-hover-focus: var(--yee-color-border-hover-focus);
1223
+ --yee-border-color-hover-focus: var(--yee-color-border-focus);
1225
1224
  --yee-placeholder-color: var(--yee-color-placeholder);
1226
1225
 
1226
+ /* deprecated:2026-09-11 hover/focus 拆分为 --yee-color-border-hover / --yee-color-border-focus */
1227
+ --yee-color-border-hover-focus: var(--yee-color-border-focus);
1228
+ /* deprecated:2026-09-11 更名 --yee-input-focus-border-color */
1229
+ --yee-input-content-focus-border-color: var(--yee-input-focus-border-color);
1227
1230
  /* deprecated-aliases:end */
1228
1231
 
1229
1232
  /* deprecated-aliases:start
@@ -1336,5 +1339,5 @@
1336
1339
  --yee-timepicker-bg-color: var(--yee-time-picker-bg-color);
1337
1340
  --yee-treeselect-dropdown-bg-color: var(--yee-tree-select-dropdown-bg-color);
1338
1341
 
1339
- /* deprecated-aliases:end */
1342
+ /* deprecated-aliases:end */
1340
1343
  }
@@ -33,7 +33,8 @@
33
33
  --yee-color-text-auxiliary: rgba(255, 255, 255, 0.24);
34
34
  --yee-color-split: rgba(255, 255, 255, 0.12);
35
35
  --yee-color-border: #56555f;
36
- --yee-color-border-hover-focus: #75b9f0;
36
+ --yee-color-border-hover: #75b9f0;
37
+ --yee-color-border-focus: #75b9f0;
37
38
  --yee-color-bg-highlight: rgba(245, 130, 32, 0.16);
38
39
  --yee-color-bg-disabled: rgba(255, 255, 255, 0.06);
39
40
  --yee-color-bg-head: rgba(255, 255, 255, 0.06);
@@ -448,7 +449,7 @@
448
449
 
449
450
  --yee-checkbox-bg-color: rgba(255, 255, 255, 0);
450
451
  --yee-checkbox-border-color: var(--yee-color-border);
451
- --yee-checkbox-hover-border-color: var(--yee-color-border-hover-focus);
452
+ --yee-checkbox-hover-border-color: var(--yee-color-border-hover);
452
453
  --yee-checkbox-checked-bg-color: var(--yee-color-primary);
453
454
  --yee-checkbox-checked-border-color: var(--yee-color-primary);
454
455
  --yee-checkbox-checked-after-border-color: rgba(255, 255, 255, 0.88);
@@ -495,9 +496,7 @@
495
496
  --yee-date-picker-time-disabled-bg-color: transparent;
496
497
 
497
498
  --yee-range-picker-trigger-border-color: var(--yee-color-border);
498
- --yee-range-picker-trigger-hover-border-color: var(
499
- --yee-color-border-hover-focus
500
- );
499
+ --yee-range-picker-trigger-hover-border-color: var(--yee-color-border-hover);
501
500
 
502
501
  --yee-range-picker-checked-bg-color: var(--yee-color-option-active-bg);
503
502
  --yee-range-picker-hover-border-color: var(--yee-color-primary);
@@ -518,8 +517,8 @@
518
517
 
519
518
  /* --Input-- */
520
519
 
521
- --yee-input-hover-border-color: var(--yee-color-border-hover-focus);
522
- --yee-input-content-focus-border-color: var(--yee-color-border-hover-focus);
520
+ --yee-input-hover-border-color: var(--yee-color-border-hover);
521
+ --yee-input-focus-border-color: var(--yee-color-border-focus);
523
522
  --yee-input-focus-bs-color: rgba(117, 185, 240, 0.24);
524
523
  --yee-input-border-color: var(--yee-color-border);
525
524
  --yee-input-content-bg-color: rgba(255, 255, 255, 0);
@@ -586,7 +585,7 @@
586
585
  --yee-color-text-disabled
587
586
  );
588
587
 
589
- --yee-radio-inner-hover-border-color: var(--yee-color-border-hover-focus);
588
+ --yee-radio-inner-hover-border-color: var(--yee-color-border-hover);
590
589
  --yee-radio-label-button-border-color: var(--yee-color-border);
591
590
  --yee-radio-label-button-bg-color: rgba(255, 255, 255, 0);
592
591
  --yee-radio-label-button-hover-color: var(--yee-color-primary);
@@ -1185,7 +1184,7 @@
1185
1184
 
1186
1185
  --yee-selector-border-color: var(--yee-color-border);
1187
1186
 
1188
- --yee-selector-hover-border-color: var(--yee-color-border-hover-focus);
1187
+ --yee-selector-hover-border-color: var(--yee-color-border-hover);
1189
1188
 
1190
1189
  --yee-selector-focus-border-color: var(--yee-color-primary);
1191
1190
 
@@ -65,11 +65,17 @@
65
65
 
66
66
  /* ================= 边框 / 分隔线 ================= */
67
67
  --yee-color-border: #e5e8ef;
68
- /* 衍生:Gemini 表单 focus 只变边框色(不加光环),边框色用主色 */
69
- --yee-color-border-hover-focus: #6d5dfc;
68
+ /* 衍生:规范 fields.css —— 控件 hover 边框灰(--control),focus 边框主色、无光环 */
69
+ --yee-color-border-hover: #c9cdd4;
70
+ --yee-color-border-focus: #6d5dfc;
70
71
  /* 衍生:规范 --line(分隔线 / 表格行线) */
71
72
  --yee-color-split: #f0f2f5;
72
73
 
74
+ /* ================= 衍生:表单控件交互态 ================= */
75
+ /* hover/focus 边框已由 --yee-color-border-hover/focus 经 color.css 映射派生;
76
+ 规范 focus 无光环,关闭默认的光环 box-shadow */
77
+ --yee-input-focus-bs-color: transparent;
78
+
73
79
  /* ================= 背景 ================= */
74
80
  --yee-color-bg-layout: #f1f2f4;
75
81
  --yee-color-bg-head: #fff;
@@ -33,7 +33,8 @@
33
33
  --yee-color-text-auxiliary: #b0bec5;
34
34
  --yee-color-split: #e7e7e7;
35
35
  --yee-color-border: #c5c6c9;
36
- --yee-color-border-hover-focus: #3ca368;
36
+ --yee-color-border-hover: #3ca368;
37
+ --yee-color-border-focus: #3ca368;
37
38
  --yee-color-bg-highlight: rgba(245, 130, 32, 16%);
38
39
  --yee-color-bg-disabled: #f5f8fa;
39
40
  --yee-color-bg-head: #f8f8f8;
@@ -441,7 +442,7 @@
441
442
 
442
443
  --yee-checkbox-bg-color: var(--yee-color-bg-container);
443
444
  --yee-checkbox-border-color: var(--yee-color-border);
444
- --yee-checkbox-hover-border-color: var(--yee-color-border-hover-focus);
445
+ --yee-checkbox-hover-border-color: var(--yee-color-border-hover);
445
446
  --yee-checkbox-checked-bg-color: var(--yee-color-primary);
446
447
  --yee-checkbox-checked-border-color: var(--yee-color-primary);
447
448
  --yee-checkbox-checked-after-border-color: #fff;
@@ -488,9 +489,7 @@
488
489
  --yee-date-picker-time-disabled-bg-color: transparent;
489
490
 
490
491
  --yee-range-picker-trigger-border-color: var(--yee-color-border);
491
- --yee-range-picker-trigger-hover-border-color: var(
492
- --yee-color-border-hover-focus
493
- );
492
+ --yee-range-picker-trigger-hover-border-color: var(--yee-color-border-hover);
494
493
  --yee-range-picker-checked-bg-color: var(--yee-color-option-active-bg);
495
494
  --yee-range-picker-hover-border-color: var(--yee-color-primary);
496
495
  --yee-range-picker-panel-bg-color: #fff;
@@ -510,8 +509,8 @@
510
509
 
511
510
  /* --Input-- */
512
511
 
513
- --yee-input-hover-border-color: var(--yee-color-border-hover-focus);
514
- --yee-input-content-focus-border-color: var(--yee-color-border-hover-focus);
512
+ --yee-input-hover-border-color: var(--yee-color-border-hover);
513
+ --yee-input-focus-border-color: var(--yee-color-border-focus);
515
514
  --yee-input-focus-bs-color: rgba(60, 163, 104, 0.24);
516
515
  --yee-input-border-color: var(--yee-color-border);
517
516
  --yee-input-content-bg-color: var(--yee-color-bg-container);
@@ -566,7 +565,7 @@
566
565
  --yee-color-text-disabled
567
566
  );
568
567
 
569
- --yee-radio-inner-hover-border-color: var(--yee-color-border-hover-focus);
568
+ --yee-radio-inner-hover-border-color: var(--yee-color-border-hover);
570
569
  --yee-radio-label-button-border-color: var(--yee-color-border);
571
570
  --yee-radio-label-button-bg-color: var(--yee-color-bg-container);
572
571
  --yee-radio-label-button-hover-color: var(--yee-color-primary);
@@ -1132,7 +1131,7 @@
1132
1131
  /* --Selector-- */
1133
1132
 
1134
1133
  --yee-selector-border-color: var(--yee-color-border);
1135
- --yee-selector-hover-border-color: var(--yee-color-border-hover-focus);
1134
+ --yee-selector-hover-border-color: var(--yee-color-border-hover);
1136
1135
  --yee-selector-focus-border-color: var(--yee-color-primary);
1137
1136
  --yee-selector-disabled-bg-color: var(--yee-input-disabled-bg-color);
1138
1137
 
@@ -33,7 +33,8 @@
33
33
  --yee-color-text-auxiliary: #6c757d;
34
34
  --yee-color-split: #dee2e6;
35
35
  --yee-color-border: #ced4da;
36
- --yee-color-border-hover-focus: #86b7fe;
36
+ --yee-color-border-hover: #86b7fe;
37
+ --yee-color-border-focus: #86b7fe;
37
38
  --yee-color-bg-highlight: rgba(127, 12, 120, 0.16);
38
39
  --yee-color-bg-disabled: #f8f9fa;
39
40
  --yee-color-bg-head: #f8f9fa;
@@ -447,7 +448,7 @@
447
448
 
448
449
  --yee-checkbox-bg-color: var(--yee-color-bg-container);
449
450
  --yee-checkbox-border-color: var(--yee-color-border);
450
- --yee-checkbox-hover-border-color: var(--yee-color-border-hover-focus);
451
+ --yee-checkbox-hover-border-color: var(--yee-color-border-hover);
451
452
  --yee-checkbox-checked-bg-color: var(--yee-color-primary);
452
453
  --yee-checkbox-checked-border-color: var(--yee-color-primary);
453
454
  --yee-checkbox-checked-after-border-color: #ffffff;
@@ -494,9 +495,7 @@
494
495
  --yee-date-picker-time-disabled-bg-color: transparent;
495
496
 
496
497
  --yee-range-picker-trigger-border-color: var(--yee-color-border);
497
- --yee-range-picker-trigger-hover-border-color: var(
498
- --yee-color-border-hover-focus
499
- );
498
+ --yee-range-picker-trigger-hover-border-color: var(--yee-color-border-hover);
500
499
 
501
500
  --yee-range-picker-checked-bg-color: var(--yee-color-option-active-bg);
502
501
  --yee-range-picker-hover-border-color: var(--yee-color-primary);
@@ -517,8 +516,8 @@
517
516
 
518
517
  /* --Input-- */
519
518
 
520
- --yee-input-hover-border-color: var(--yee-color-border-hover-focus);
521
- --yee-input-content-focus-border-color: var(--yee-color-border-hover-focus);
519
+ --yee-input-hover-border-color: var(--yee-color-border-hover);
520
+ --yee-input-focus-border-color: var(--yee-color-border-focus);
522
521
  --yee-input-focus-bs-color: rgba(13, 110, 253, 0.25);
523
522
  --yee-input-border-color: var(--yee-color-border);
524
523
  --yee-input-content-bg-color: var(--yee-color-bg-container);
@@ -585,7 +584,7 @@
585
584
  --yee-color-text-disabled
586
585
  );
587
586
 
588
- --yee-radio-inner-hover-border-color: var(--yee-color-border-hover-focus);
587
+ --yee-radio-inner-hover-border-color: var(--yee-color-border-hover);
589
588
  --yee-radio-label-button-border-color: var(--yee-color-border);
590
589
  --yee-radio-label-button-bg-color: var(--yee-color-bg-container);
591
590
  --yee-radio-label-button-hover-color: var(--yee-color-primary);
@@ -1183,7 +1182,7 @@
1183
1182
 
1184
1183
  --yee-selector-border-color: var(--yee-color-border);
1185
1184
 
1186
- --yee-selector-hover-border-color: var(--yee-color-border-hover-focus);
1185
+ --yee-selector-hover-border-color: var(--yee-color-border-hover);
1187
1186
 
1188
1187
  --yee-selector-focus-border-color: var(--yee-color-primary);
1189
1188
 
@@ -33,7 +33,8 @@
33
33
  --yee-color-text-auxiliary: #969696;
34
34
  --yee-color-split: #dcdcdc;
35
35
  --yee-color-border: #c8c8c8;
36
- --yee-color-border-hover-focus: #387399;
36
+ --yee-color-border-hover: #387399;
37
+ --yee-color-border-focus: #387399;
37
38
  --yee-color-bg-highlight: rgba(56, 115, 153, 0.16);
38
39
  --yee-color-bg-disabled: #f5f5f5;
39
40
  --yee-color-bg-head: #f5f5f5;
@@ -447,7 +448,7 @@
447
448
 
448
449
  --yee-checkbox-bg-color: var(--yee-color-bg-container);
449
450
  --yee-checkbox-border-color: var(--yee-color-border);
450
- --yee-checkbox-hover-border-color: var(--yee-color-border-hover-focus);
451
+ --yee-checkbox-hover-border-color: var(--yee-color-border-hover);
451
452
  --yee-checkbox-checked-bg-color: var(--yee-color-primary);
452
453
  --yee-checkbox-checked-border-color: var(--yee-color-primary);
453
454
  --yee-checkbox-checked-after-border-color: #ffffff;
@@ -494,9 +495,7 @@
494
495
  --yee-date-picker-time-disabled-bg-color: transparent;
495
496
 
496
497
  --yee-range-picker-trigger-border-color: var(--yee-color-border);
497
- --yee-range-picker-trigger-hover-border-color: var(
498
- --yee-color-border-hover-focus
499
- );
498
+ --yee-range-picker-trigger-hover-border-color: var(--yee-color-border-hover);
500
499
 
501
500
  --yee-range-picker-checked-bg-color: var(--yee-color-option-active-bg);
502
501
  --yee-range-picker-hover-border-color: var(--yee-color-primary);
@@ -517,8 +516,8 @@
517
516
 
518
517
  /* --Input-- */
519
518
 
520
- --yee-input-hover-border-color: var(--yee-color-border-hover-focus);
521
- --yee-input-content-focus-border-color: var(--yee-color-border-hover-focus);
519
+ --yee-input-hover-border-color: var(--yee-color-border-hover);
520
+ --yee-input-focus-border-color: var(--yee-color-border-focus);
522
521
  --yee-input-focus-bs-color: rgba(56, 115, 153, 0.24);
523
522
  --yee-input-border-color: var(--yee-color-border);
524
523
  --yee-input-content-bg-color: var(--yee-color-bg-container);
@@ -585,7 +584,7 @@
585
584
  --yee-color-text-disabled
586
585
  );
587
586
 
588
- --yee-radio-inner-hover-border-color: var(--yee-color-border-hover-focus);
587
+ --yee-radio-inner-hover-border-color: var(--yee-color-border-hover);
589
588
  --yee-radio-label-button-border-color: var(--yee-color-border);
590
589
  --yee-radio-label-button-bg-color: var(--yee-color-bg-container);
591
590
  --yee-radio-label-button-hover-color: var(--yee-color-primary);
@@ -1183,7 +1182,7 @@
1183
1182
 
1184
1183
  --yee-selector-border-color: var(--yee-color-border);
1185
1184
 
1186
- --yee-selector-hover-border-color: var(--yee-color-border-hover-focus);
1185
+ --yee-selector-hover-border-color: var(--yee-color-border-hover);
1187
1186
 
1188
1187
  --yee-selector-focus-border-color: var(--yee-color-primary);
1189
1188