@rainbow-oh/yee-c 0.7.0 → 0.8.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 (127) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +40 -25
  3. package/dist/cjs/Card/card.js +7 -3
  4. package/dist/cjs/Carousel/carousel-item.js +7 -2
  5. package/dist/cjs/Carousel/carousel.js +31 -4
  6. package/dist/cjs/Cascader/cascader.js +1 -1
  7. package/dist/cjs/Cascader/column.js +1 -1
  8. package/dist/cjs/Cascader/node.js +16 -4
  9. package/dist/cjs/Cascader/search-list.js +13 -4
  10. package/dist/cjs/Checkbox/checkbox-group.js +1 -1
  11. package/dist/cjs/Checkbox/checkbox.js +6 -3
  12. package/dist/cjs/Collapse/panel.js +10 -1
  13. package/dist/cjs/Dialog/dialog.js +22 -7
  14. package/dist/cjs/Drawer/drawer.js +14 -5
  15. package/dist/cjs/Form/form-store.d.ts +2 -1
  16. package/dist/cjs/Form/form-store.js +32 -17
  17. package/dist/cjs/Menu/menu-item.js +14 -5
  18. package/dist/cjs/Menu/menu.js +10 -2
  19. package/dist/cjs/Pagination/items.js +10 -5
  20. package/dist/cjs/Pagination/pagination.js +9 -3
  21. package/dist/cjs/Radio/radio-group.js +6 -5
  22. package/dist/cjs/Radio/radio.js +39 -29
  23. package/dist/cjs/Rate/rate.js +6 -1
  24. package/dist/cjs/Rate/star.js +7 -3
  25. package/dist/cjs/Steps/step.js +7 -5
  26. package/dist/cjs/Steps/steps.js +1 -1
  27. package/dist/cjs/Table/hooks/useColumns.js +1 -1
  28. package/dist/cjs/Table/style/index.less +35 -11
  29. package/dist/cjs/Table/table.js +57 -7
  30. package/dist/cjs/Table/tbody/cell.js +1 -1
  31. package/dist/cjs/Table/util/header.d.ts +3 -1
  32. package/dist/cjs/Table/util/header.js +30 -3
  33. package/dist/cjs/Tabs/tab-content.js +3 -1
  34. package/dist/cjs/Tabs/tab-header/index.js +3 -1
  35. package/dist/cjs/Tabs/tab-header/tab-header-title.js +3 -1
  36. package/dist/cjs/hooks/useDelayState.js +3 -2
  37. package/dist/cjs/hooks/useFocusManage.d.ts +1 -1
  38. package/dist/cjs/hooks/useFocusManage.js +27 -22
  39. package/dist/cjs/style/color.css +2 -0
  40. package/dist/cjs/style/themes.css +1 -1
  41. package/dist/cjs/style/variables.css +3 -1
  42. package/dist/cjs/utils/focusStack.d.ts +6 -2
  43. package/dist/cjs/utils/focusStack.js +40 -11
  44. package/dist/cjs/version.d.ts +1 -1
  45. package/dist/cjs/version.js +1 -1
  46. package/dist/esm/Card/card.js +7 -3
  47. package/dist/esm/Carousel/carousel-item.js +7 -2
  48. package/dist/esm/Carousel/carousel.js +31 -4
  49. package/dist/esm/Cascader/cascader.js +3 -1
  50. package/dist/esm/Cascader/column.js +2 -1
  51. package/dist/esm/Cascader/node.js +18 -4
  52. package/dist/esm/Cascader/search-list.js +18 -4
  53. package/dist/esm/Checkbox/checkbox-group.js +3 -1
  54. package/dist/esm/Checkbox/checkbox.js +6 -3
  55. package/dist/esm/Collapse/panel.js +11 -2
  56. package/dist/esm/Dialog/dialog.js +26 -9
  57. package/dist/esm/Drawer/drawer.js +16 -7
  58. package/dist/esm/Form/form-store.d.ts +2 -1
  59. package/dist/esm/Form/form-store.js +40 -19
  60. package/dist/esm/Menu/menu-item.js +16 -5
  61. package/dist/esm/Menu/menu.js +11 -5
  62. package/dist/esm/Pagination/items.js +14 -5
  63. package/dist/esm/Pagination/pagination.js +16 -4
  64. package/dist/esm/Radio/radio-group.js +5 -4
  65. package/dist/esm/Radio/radio.js +5 -4
  66. package/dist/esm/Rate/rate.js +6 -1
  67. package/dist/esm/Rate/star.js +12 -4
  68. package/dist/esm/Steps/step.js +12 -6
  69. package/dist/esm/Steps/steps.js +3 -1
  70. package/dist/esm/Table/hooks/useColumns.js +1 -1
  71. package/dist/esm/Table/style/index.less +35 -11
  72. package/dist/esm/Table/table.js +54 -2
  73. package/dist/esm/Table/tbody/cell.js +1 -1
  74. package/dist/esm/Table/util/header.d.ts +3 -1
  75. package/dist/esm/Table/util/header.js +30 -2
  76. package/dist/esm/Tabs/tab-content.js +3 -1
  77. package/dist/esm/Tabs/tab-header/index.js +3 -1
  78. package/dist/esm/Tabs/tab-header/tab-header-title.js +3 -1
  79. package/dist/esm/hooks/useDelayState.js +5 -2
  80. package/dist/esm/hooks/useFocusManage.d.ts +1 -1
  81. package/dist/esm/hooks/useFocusManage.js +31 -13
  82. package/dist/esm/style/color.css +2 -0
  83. package/dist/esm/style/themes.css +1 -1
  84. package/dist/esm/style/variables.css +3 -1
  85. package/dist/esm/utils/focusStack.d.ts +6 -2
  86. package/dist/esm/utils/focusStack.js +37 -14
  87. package/dist/esm/version.d.ts +1 -1
  88. package/dist/esm/version.js +1 -1
  89. package/dist/umd/yee-c.min.css +3 -3
  90. package/dist/umd/yee-c.min.js +1 -1
  91. package/package.json +10 -6
  92. package/src/Card/card.tsx +5 -1
  93. package/src/Carousel/carousel-item.tsx +7 -1
  94. package/src/Carousel/carousel.tsx +30 -3
  95. package/src/Cascader/cascader.tsx +1 -1
  96. package/src/Cascader/column.tsx +1 -1
  97. package/src/Cascader/node.tsx +14 -2
  98. package/src/Cascader/search-list.tsx +11 -2
  99. package/src/Checkbox/checkbox-group.tsx +1 -1
  100. package/src/Checkbox/checkbox.tsx +3 -0
  101. package/src/Collapse/panel.tsx +11 -1
  102. package/src/Dialog/dialog.tsx +31 -6
  103. package/src/Drawer/drawer.tsx +12 -3
  104. package/src/Form/form-store.ts +42 -15
  105. package/src/Menu/menu-item.tsx +12 -3
  106. package/src/Menu/menu.tsx +11 -5
  107. package/src/Pagination/items.tsx +9 -4
  108. package/src/Pagination/pagination.tsx +10 -4
  109. package/src/Radio/radio-group.tsx +2 -1
  110. package/src/Radio/radio.tsx +7 -2
  111. package/src/Rate/rate.tsx +5 -0
  112. package/src/Rate/star.tsx +8 -4
  113. package/src/Steps/step.tsx +15 -5
  114. package/src/Steps/steps.tsx +1 -1
  115. package/src/Table/hooks/useColumns.ts +1 -1
  116. package/src/Table/style/index.less +35 -11
  117. package/src/Table/table.tsx +60 -1
  118. package/src/Table/tbody/cell.tsx +1 -1
  119. package/src/Table/util/header.ts +48 -2
  120. package/src/Tabs/tab-content.tsx +2 -0
  121. package/src/Tabs/tab-header/index.tsx +2 -0
  122. package/src/Tabs/tab-header/tab-header-title.tsx +3 -1
  123. package/src/hooks/useDelayState.ts +4 -2
  124. package/src/hooks/useFocusManage.ts +33 -17
  125. package/src/style/color.css +2 -0
  126. package/src/utils/focusStack.ts +55 -12
  127. package/src/version.ts +1 -1
@@ -80,6 +80,7 @@ function move(array, from, to) {
80
80
  return result;
81
81
  }
82
82
  var GLOBAL_WATCH_KEY = "__ALL__";
83
+ var isRelatedNamePath = (first, second) => first === second || first.startsWith(`${second}.`) || second.startsWith(`${first}.`);
83
84
  var FormStore = class {
84
85
  constructor() {
85
86
  this.store = {};
@@ -170,10 +171,12 @@ var FormStore = class {
170
171
  }
171
172
  });
172
173
  }
174
+ const changedKeys = Object.keys(newStore);
175
+ const relatedFieldNames = this.getRelatedFieldNames(changedKeys);
173
176
  if (trigger === "onChange" || trigger === "onBlur" || trigger === "onSubmit") {
174
- void this.validateFields(Object.keys(newStore), trigger);
177
+ void this.validateFields(relatedFieldNames, trigger);
175
178
  }
176
- this.refreshField(newStore);
179
+ this.refreshField(newStore, relatedFieldNames);
177
180
  };
178
181
  this.resetFields = (name) => {
179
182
  var _a, _b;
@@ -281,16 +284,20 @@ var FormStore = class {
281
284
  });
282
285
  return err;
283
286
  });
284
- this.refreshField = (newStore) => {
287
+ this.getRelatedFieldNames = (changedKeys) => Array.from(this.fieldMap.keys()).filter(
288
+ (fieldName) => changedKeys.some(
289
+ (changedKey) => isRelatedNamePath(String(fieldName), changedKey)
290
+ )
291
+ );
292
+ this.refreshField = (newStore, relatedFieldNames) => {
285
293
  if (newStore) {
286
- const keys = Object.keys(newStore);
287
- keys.forEach((key) => {
288
- const entity = this.fieldMap.get(key);
289
- if (entity) {
290
- entity == null ? void 0 : entity.onStoreChange();
291
- }
292
- this.notifyWatchers(key);
294
+ const changedKeys = Object.keys(newStore);
295
+ const fieldNames = relatedFieldNames != null ? relatedFieldNames : this.getRelatedFieldNames(changedKeys);
296
+ fieldNames.forEach((fieldName) => {
297
+ var _a;
298
+ (_a = this.fieldMap.get(fieldName)) == null ? void 0 : _a.onStoreChange();
293
299
  });
300
+ this.notifyWatchers(changedKeys);
294
301
  } else {
295
302
  this.fieldEntities.forEach((entity) => {
296
303
  entity == null ? void 0 : entity.onStoreChange();
@@ -308,15 +315,23 @@ var FormStore = class {
308
315
  }
309
316
  this.watchers.get(key).add(callback);
310
317
  return () => {
311
- var _a;
312
- (_a = this.watchers.get(key)) == null ? void 0 : _a.delete(callback);
318
+ const watchers = this.watchers.get(key);
319
+ watchers == null ? void 0 : watchers.delete(callback);
320
+ if ((watchers == null ? void 0 : watchers.size) === 0) {
321
+ this.watchers.delete(key);
322
+ }
313
323
  };
314
324
  };
315
- this.notifyWatchers = (changedKey) => {
316
- var _a, _b;
317
- if (changedKey) {
318
- (_a = this.watchers.get(changedKey)) == null ? void 0 : _a.forEach((cb) => cb());
319
- (_b = this.watchers.get(GLOBAL_WATCH_KEY)) == null ? void 0 : _b.forEach((cb) => cb());
325
+ this.notifyWatchers = (changedKeys) => {
326
+ if (changedKeys) {
327
+ const keys = Array.isArray(changedKeys) ? changedKeys : [changedKeys];
328
+ const callbacks = /* @__PURE__ */ new Set();
329
+ this.watchers.forEach((watchers, watchedKey) => {
330
+ if (watchedKey === GLOBAL_WATCH_KEY || keys.some((changedKey) => isRelatedNamePath(watchedKey, changedKey))) {
331
+ watchers.forEach((callback) => callbacks.add(callback));
332
+ }
333
+ });
334
+ callbacks.forEach((callback) => callback());
320
335
  } else {
321
336
  this.watchers.forEach((set) => set.forEach((cb) => cb()));
322
337
  }
@@ -100,7 +100,11 @@ var MenuItem = (props) => {
100
100
  ),
101
101
  style: __spreadValues({ paddingLeft }, styles == null ? void 0 : styles.item),
102
102
  onClick: handleClick,
103
- title: isCollapsed && typeof label === "string" ? label : void 0
103
+ title: isCollapsed && typeof label === "string" ? label : void 0,
104
+ role: "menuitem",
105
+ "aria-disabled": disabled || void 0,
106
+ "aria-current": (selectedKeys == null ? void 0 : selectedKeys.includes(key)) ? "page" : void 0,
107
+ tabIndex: disabled ? -1 : 0
104
108
  },
105
109
  iconNode,
106
110
  !isCollapsed && /* @__PURE__ */ import_react2.default.createElement(
@@ -167,14 +171,15 @@ var MenuItem = (props) => {
167
171
  if (isCollapsed)
168
172
  return null;
169
173
  if (mode === "vertical" || mode === "horizontal") {
170
- return /* @__PURE__ */ import_react2.default.createElement("span", { className: `${prefixCls}-item-switch` }, /* @__PURE__ */ import_react2.default.createElement(import_lucide_react.ChevronRight, { strokeWidth: 2, size: 18 }));
174
+ return /* @__PURE__ */ import_react2.default.createElement("span", { className: `${prefixCls}-item-switch`, "aria-hidden": "true" }, /* @__PURE__ */ import_react2.default.createElement(import_lucide_react.ChevronRight, { strokeWidth: 2, size: 18 }));
171
175
  }
172
176
  return /* @__PURE__ */ import_react2.default.createElement(
173
177
  import_react.motion.span,
174
178
  {
175
179
  className: `${prefixCls}-item-switch`,
176
180
  animate: { rotateX: opened ? 180 : 0 },
177
- transition: { duration: 0.15 }
181
+ transition: { duration: 0.15 },
182
+ "aria-hidden": "true"
178
183
  },
179
184
  /* @__PURE__ */ import_react2.default.createElement(import_lucide_react.ChevronDown, { strokeWidth: 2, size: 18 })
180
185
  );
@@ -182,7 +187,10 @@ var MenuItem = (props) => {
182
187
  const triggerNode = /* @__PURE__ */ import_react2.default.createElement(
183
188
  "div",
184
189
  {
185
- role: "submenu",
190
+ role: "menuitem",
191
+ "aria-haspopup": "true",
192
+ "aria-expanded": opened,
193
+ "aria-disabled": disabled || void 0,
186
194
  className: (0, import_clsx.default)(`${prefixCls}-submenu-title`, {
187
195
  [`${prefixCls}-submenu-open`]: opened,
188
196
  [`${prefixCls}-submenu-selected`]: selectedKeys.includes(key) || selectedKeys.find(
@@ -191,6 +199,7 @@ var MenuItem = (props) => {
191
199
  }),
192
200
  style: { paddingLeft },
193
201
  onClick: handleExpand,
202
+ tabIndex: disabled ? -1 : 0,
194
203
  title: isCollapsed && typeof label === "string" ? label : void 0
195
204
  },
196
205
  iconNode,
@@ -207,7 +216,7 @@ var MenuItem = (props) => {
207
216
  );
208
217
  const usePopup = mode === "vertical" || mode === "horizontal" || isCollapsed;
209
218
  const placement = mode === "horizontal" && !isCollapsed ? "bottomLeft" : "rightTop";
210
- const childNode = /* @__PURE__ */ import_react2.default.createElement("li", { className: cls }, usePopup ? /* @__PURE__ */ import_react2.default.createElement(
219
+ const childNode = /* @__PURE__ */ import_react2.default.createElement("li", { className: cls, role: "none" }, usePopup ? /* @__PURE__ */ import_react2.default.createElement(
211
220
  import_Trigger.default,
212
221
  {
213
222
  open: openKeys.includes(key),
@@ -63,7 +63,15 @@ var MenuGroup = ({
63
63
  item,
64
64
  prefixCls,
65
65
  renderItems
66
- }) => /* @__PURE__ */ import_react.default.createElement("li", { className: `${prefixCls}-item-group` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-group-title` }, item.label), /* @__PURE__ */ import_react.default.createElement("ul", { className: `${prefixCls}-item-group-list` }, renderItems(item.children)));
66
+ }) => /* @__PURE__ */ import_react.default.createElement("li", { className: `${prefixCls}-item-group`, role: "none" }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-group-title`, role: "presentation", id: `${prefixCls}-group-${String(item.label)}` }, item.label), /* @__PURE__ */ import_react.default.createElement(
67
+ "ul",
68
+ {
69
+ className: `${prefixCls}-item-group-list`,
70
+ role: "group",
71
+ "aria-labelledby": `${prefixCls}-group-${String(item.label)}`
72
+ },
73
+ renderItems(item.children)
74
+ ));
67
75
  var Menu = (props) => {
68
76
  const {
69
77
  items,
@@ -122,7 +130,7 @@ var Menu = (props) => {
122
130
  }
123
131
  );
124
132
  const rootStyle = root ? __spreadValues({}, style) : {};
125
- return /* @__PURE__ */ import_react.default.createElement("ul", __spreadProps(__spreadValues({}, dataAttrs), { className: cls, style: rootStyle, role: "menu" }), /* @__PURE__ */ import_react.default.createElement(MenuCtx.Provider, { value: { level, mode, classNames, styles } }, getChildFromItems(items), level === 0 && footer && /* @__PURE__ */ import_react.default.createElement("li", { className: `${prefixCls}-footer` }, footer)));
133
+ return /* @__PURE__ */ import_react.default.createElement("ul", __spreadProps(__spreadValues({}, dataAttrs), { className: cls, style: rootStyle, role: root && mode === "horizontal" ? "menubar" : "menu" }), /* @__PURE__ */ import_react.default.createElement(MenuCtx.Provider, { value: { level, mode, classNames, styles } }, getChildFromItems(items), level === 0 && footer && /* @__PURE__ */ import_react.default.createElement("li", { className: `${prefixCls}-footer`, role: "none" }, footer)));
126
134
  };
127
135
  Menu.displayName = "Menu";
128
136
  var menu_default = Menu;
@@ -107,16 +107,17 @@ var Items = (props) => {
107
107
  }
108
108
  },
109
109
  role: "button",
110
+ "aria-label": "Jump back 7 pages",
110
111
  key: "turnleft"
111
112
  },
112
- (_a = components == null ? void 0 : components.jumpPrev) != null ? _a : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-jump-prev-ellipsis` }, /* @__PURE__ */ import_react.default.createElement(
113
+ (_a = components == null ? void 0 : components.jumpPrev) != null ? _a : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-jump-prev-ellipsis`, "aria-hidden": "true" }, /* @__PURE__ */ import_react.default.createElement(
113
114
  import_lucide_react.Ellipsis,
114
115
  {
115
116
  className: "ellipsis",
116
117
  size: 18,
117
118
  strokeWidth: 1.5
118
119
  }
119
- )), /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-jump-prev-icon` }, /* @__PURE__ */ import_react.default.createElement(
120
+ )), /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-jump-prev-icon`, "aria-hidden": "true" }, /* @__PURE__ */ import_react.default.createElement(
120
121
  import_lucide_react.ChevronsLeft,
121
122
  {
122
123
  className: "turn",
@@ -139,16 +140,17 @@ var Items = (props) => {
139
140
  }
140
141
  },
141
142
  role: "button",
143
+ "aria-label": "Jump forward 7 pages",
142
144
  key: "turn-right"
143
145
  },
144
- (_b = components == null ? void 0 : components.jumpNext) != null ? _b : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-jump-next-ellipsis` }, /* @__PURE__ */ import_react.default.createElement(
146
+ (_b = components == null ? void 0 : components.jumpNext) != null ? _b : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-jump-next-ellipsis`, "aria-hidden": "true" }, /* @__PURE__ */ import_react.default.createElement(
145
147
  import_lucide_react.Ellipsis,
146
148
  {
147
149
  className: "ellipsis",
148
150
  size: 18,
149
151
  strokeWidth: 1.5
150
152
  }
151
- )), /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-jump-next-icon` }, /* @__PURE__ */ import_react.default.createElement(
153
+ )), /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-jump-next-icon`, "aria-hidden": "true" }, /* @__PURE__ */ import_react.default.createElement(
152
154
  import_lucide_react.ChevronsRight,
153
155
  {
154
156
  className: "turn",
@@ -178,7 +180,10 @@ var Items = (props) => {
178
180
  if (e.key === "Enter") {
179
181
  onChange(number);
180
182
  }
181
- }
183
+ },
184
+ role: "button",
185
+ "aria-label": `Page ${number}`,
186
+ "aria-current": current === number ? "page" : void 0
182
187
  },
183
188
  number
184
189
  );
@@ -233,9 +233,12 @@ var Pagination = import_react.default.forwardRef(
233
233
  prevClick();
234
234
  }
235
235
  },
236
+ role: "button",
237
+ "aria-label": "Previous page",
238
+ "aria-disabled": mergedCurrent === 1 || void 0,
236
239
  key: "prev"
237
240
  },
238
- (_a2 = components == null ? void 0 : components.prev) != null ? _a2 : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronLeft, { size: 20, strokeWidth: 1.5 })
241
+ (_a2 = components == null ? void 0 : components.prev) != null ? _a2 : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronLeft, { size: 20, strokeWidth: 1.5, "aria-hidden": "true" })
239
242
  );
240
243
  };
241
244
  const renderNext = () => {
@@ -258,9 +261,12 @@ var Pagination = import_react.default.forwardRef(
258
261
  nextClick();
259
262
  }
260
263
  },
264
+ role: "button",
265
+ "aria-label": "Next page",
266
+ "aria-disabled": mergedCurrent === pageCount || void 0,
261
267
  key: "next"
262
268
  },
263
- (_a2 = components == null ? void 0 : components.next) != null ? _a2 : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronRight, { size: 20, strokeWidth: 1.5 })
269
+ (_a2 = components == null ? void 0 : components.next) != null ? _a2 : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronRight, { size: 20, strokeWidth: 1.5, "aria-hidden": "true" })
264
270
  );
265
271
  };
266
272
  const renderSizeChanger = () => {
@@ -289,7 +295,7 @@ var Pagination = import_react.default.forwardRef(
289
295
  if (hideOnSinglePage && pageCount <= 1 || pageCount === 0) {
290
296
  return null;
291
297
  }
292
- return /* @__PURE__ */ import_react.default.createElement("ul", __spreadProps(__spreadValues({}, rest), { className: cls, style, ref }), renderTotal(), renderPrevious(), simple ? /* @__PURE__ */ import_react.default.createElement("li", { className: `${prefixCls}-simple` }, renderNumber(false), /* @__PURE__ */ import_react.default.createElement("span", { className: "split" }, "/"), /* @__PURE__ */ import_react.default.createElement("span", { className: "total-page" }, pageCount)) : /* @__PURE__ */ import_react.default.createElement(
298
+ return /* @__PURE__ */ import_react.default.createElement("ul", __spreadProps(__spreadValues({}, rest), { className: cls, style, ref, role: "navigation", "aria-label": "Pagination", "aria-disabled": disabled || void 0 }), renderTotal(), renderPrevious(), simple ? /* @__PURE__ */ import_react.default.createElement("li", { className: `${prefixCls}-simple` }, renderNumber(false), /* @__PURE__ */ import_react.default.createElement("span", { className: "split", "aria-hidden": "true" }, "/"), /* @__PURE__ */ import_react.default.createElement("span", { className: "total-page" }, pageCount)) : /* @__PURE__ */ import_react.default.createElement(
293
299
  import_items.default,
294
300
  {
295
301
  prefixCls,
@@ -120,12 +120,13 @@ var RadioGroup = import_react.default.forwardRef(
120
120
  };
121
121
  return /* @__PURE__ */ import_react.default.createElement(
122
122
  "div",
123
- {
123
+ __spreadValues({
124
124
  className: cls,
125
125
  style: __spreadProps(__spreadValues({}, style), { gap }),
126
126
  ref,
127
- role: "radiogroup"
128
- },
127
+ role: "radiogroup",
128
+ "aria-disabled": disabled || void 0
129
+ }, rest),
129
130
  /* @__PURE__ */ import_react.default.createElement(
130
131
  GroupCtx.Provider,
131
132
  {
@@ -133,9 +134,9 @@ var RadioGroup = import_react.default.forwardRef(
133
134
  },
134
135
  options == null ? void 0 : options.map((option, index) => /* @__PURE__ */ import_react.default.createElement(
135
136
  import_radio.default,
136
- __spreadProps(__spreadValues(__spreadValues({
137
+ __spreadProps(__spreadValues({
137
138
  disabled
138
- }, rest), option), {
139
+ }, option), {
139
140
  checked: option.value === mergedValue,
140
141
  key: option.value || index
141
142
  })
@@ -134,42 +134,52 @@ var Radio = import_react.default.forwardRef(
134
134
  },
135
135
  className
136
136
  );
137
- return /* @__PURE__ */ import_react.default.createElement("label", { className: cls, style, onClick: handleClick }, /* @__PURE__ */ import_react.default.createElement(
138
- "span",
137
+ return /* @__PURE__ */ import_react.default.createElement(
138
+ "label",
139
139
  {
140
- className: (0, import_clsx.default)(prefixCls, {
141
- [`${prefixCls}-disabled`]: disabled
142
- })
140
+ className: cls,
141
+ style,
142
+ onClick: handleClick,
143
+ "aria-disabled": disabled || void 0
143
144
  },
144
145
  /* @__PURE__ */ import_react.default.createElement(
145
- "input",
146
- __spreadProps(__spreadValues({}, rest), {
147
- ref,
148
- className: `${prefixCls}-input`,
149
- type: "radio",
150
- name,
151
- value,
152
- checked: mergedChecked,
153
- disabled,
154
- onChange: handleChange,
155
- "aria-checked": mergedChecked
156
- })
146
+ "span",
147
+ {
148
+ className: (0, import_clsx.default)(prefixCls, {
149
+ [`${prefixCls}-disabled`]: disabled
150
+ })
151
+ },
152
+ /* @__PURE__ */ import_react.default.createElement(
153
+ "input",
154
+ __spreadProps(__spreadValues({}, rest), {
155
+ ref,
156
+ className: `${prefixCls}-input`,
157
+ type: "radio",
158
+ name,
159
+ value,
160
+ checked: mergedChecked,
161
+ disabled,
162
+ onChange: handleChange
163
+ })
164
+ ),
165
+ !buttonStyle && /* @__PURE__ */ import_react.default.createElement(
166
+ "span",
167
+ {
168
+ className: (0, import_clsx.default)(`${prefixCls}-inner`, classNames == null ? void 0 : classNames.inner),
169
+ style: styles == null ? void 0 : styles.inner,
170
+ "aria-hidden": "true"
171
+ }
172
+ )
157
173
  ),
158
- !buttonStyle && /* @__PURE__ */ import_react.default.createElement(
174
+ /* @__PURE__ */ import_react.default.createElement(
159
175
  "span",
160
176
  {
161
- className: (0, import_clsx.default)(`${prefixCls}-inner`, classNames == null ? void 0 : classNames.inner),
162
- style: styles == null ? void 0 : styles.inner
163
- }
177
+ className: (0, import_clsx.default)(`${prefixCls}-label`, classNames == null ? void 0 : classNames.label),
178
+ style: styles == null ? void 0 : styles.label
179
+ },
180
+ children || label
164
181
  )
165
- ), /* @__PURE__ */ import_react.default.createElement(
166
- "span",
167
- {
168
- className: (0, import_clsx.default)(`${prefixCls}-label`, classNames == null ? void 0 : classNames.label),
169
- style: styles == null ? void 0 : styles.label
170
- },
171
- children || label
172
- ));
182
+ );
173
183
  }
174
184
  );
175
185
  Radio.displayName = "Radio";
@@ -167,7 +167,12 @@ var Rate = import_react.default.forwardRef((baseprops, ref) => {
167
167
  onMouseLeave: onLeave,
168
168
  ref: componentRef,
169
169
  role: "radiogroup",
170
- "aria-label": "Rating"
170
+ "aria-label": "Rating",
171
+ "aria-disabled": disabled || void 0,
172
+ "aria-valuemin": 0,
173
+ "aria-valuemax": count,
174
+ "aria-valuenow": mergedValue,
175
+ "aria-valuetext": `${mergedValue} out of ${count} stars`
171
176
  }),
172
177
  Array(count).fill(0).map((_, index) => {
173
178
  const cls = (0, import_clsx.default)(`${prefixCls}-star`, {
@@ -71,6 +71,7 @@ var Star = (props) => {
71
71
  "aria-checked": active,
72
72
  "aria-posinset": index + 1,
73
73
  "aria-setsize": count,
74
+ "aria-label": `${index + 1} ${index + 1 === 1 ? "star" : "stars"}`,
74
75
  key: "star-" + index
75
76
  },
76
77
  /* @__PURE__ */ import_react.default.createElement(
@@ -85,9 +86,10 @@ var Star = (props) => {
85
86
  }
86
87
  },
87
88
  tabIndex: 0,
89
+ "aria-label": `${index + 0.5} stars`,
88
90
  key: "star-" + index + "left"
89
91
  },
90
- character ? /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-character` }, renderCharacter()) : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.StarHalf, { className: `${prefixCls}-star-half` })
92
+ character ? /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-character` }, renderCharacter()) : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.StarHalf, { className: `${prefixCls}-star-half`, "aria-hidden": "true" })
91
93
  ),
92
94
  /* @__PURE__ */ import_react.default.createElement(
93
95
  "div",
@@ -101,9 +103,10 @@ var Star = (props) => {
101
103
  }
102
104
  },
103
105
  tabIndex: 0,
106
+ "aria-label": `${index + 1} ${index + 1 === 1 ? "star" : "stars"}`,
104
107
  key: "star-" + index + "right"
105
108
  },
106
- character ? /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-character` }, renderCharacter()) : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Star, { className: `${prefixCls}-star-full` })
109
+ character ? /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-character` }, renderCharacter()) : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Star, { className: `${prefixCls}-star-full`, "aria-hidden": "true" })
107
110
  )
108
111
  ) : /* @__PURE__ */ import_react.default.createElement(
109
112
  "li",
@@ -121,9 +124,10 @@ var Star = (props) => {
121
124
  "aria-checked": active,
122
125
  "aria-posinset": index + 1,
123
126
  "aria-setsize": count,
127
+ "aria-label": `${index + 1} ${index + 1 === 1 ? "star" : "stars"}`,
124
128
  key: "star-" + index
125
129
  },
126
- character ? /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-character` }, renderCharacter()) : active ? /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Star, { className: `${prefixCls}-star-active` }) : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Star, { className: `${prefixCls}-star-inactive` })
130
+ character ? /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-character` }, renderCharacter()) : active ? /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Star, { className: `${prefixCls}-star-active`, "aria-hidden": "true" }) : /* @__PURE__ */ import_react.default.createElement(import_lucide_react.Star, { className: `${prefixCls}-star-inactive`, "aria-hidden": "true" })
127
131
  ), children ? /* @__PURE__ */ import_react.default.createElement(import_Tooltip.default, { title: value, placement: "top" }, children) : null);
128
132
  };
129
133
  Star.displayName = "Star";
@@ -69,6 +69,7 @@ var Step = (props) => {
69
69
  }
70
70
  };
71
71
  const mergedStatus = (_a = itemStatus != null ? itemStatus : status) != null ? _a : index < current ? "finish" : index === current ? "process" : "wait";
72
+ const statusLabel = mergedStatus === "finish" ? "completed" : mergedStatus === "process" ? "in progress" : mergedStatus === "error" ? "error" : "pending";
72
73
  const renderIcon = (0, import_react.useMemo)(() => {
73
74
  if (dot)
74
75
  return /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-item-dot` });
@@ -100,7 +101,7 @@ var Step = (props) => {
100
101
  className
101
102
  );
102
103
  const ribbonStatus = index < current ? "done" : index === current ? "doing" : "undo";
103
- return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, type === "ribbon" && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-ribbon-end ${ribbonStatus}` }), /* @__PURE__ */ import_react.default.createElement(
104
+ return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, type === "ribbon" && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-ribbon-end ${ribbonStatus}`, "aria-hidden": "true" }), /* @__PURE__ */ import_react.default.createElement(
104
105
  "div",
105
106
  {
106
107
  className: cls,
@@ -108,12 +109,13 @@ var Step = (props) => {
108
109
  onClick: handleClick,
109
110
  onKeyDown: handleKeyDown,
110
111
  tabIndex: disabled ? -1 : onChange ? 0 : void 0,
111
- role: onChange ? "button" : void 0,
112
+ role: onChange ? "button" : "listitem",
112
113
  "aria-disabled": disabled,
113
- "aria-current": index === current ? "step" : void 0
114
+ "aria-current": index === current ? "step" : void 0,
115
+ "aria-label": `Step ${index + 1}${typeof title === "string" ? `: ${title}` : ""}, ${statusLabel}`
114
116
  },
115
- /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-icon` }, renderIcon),
117
+ /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-icon`, "aria-hidden": "true" }, renderIcon),
116
118
  /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-content` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-title` }, /* @__PURE__ */ import_react.default.createElement("span", { title: typeof title === "string" ? title : void 0 }, title), subTitle && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-sub-title` }, subTitle)), type !== "ribbon" && description && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-description` }, description))
117
- ), type === "navigation" && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-navi-arrow` }, /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronRight, null)), type === "ribbon" && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-ribbon-head ${ribbonStatus}` }));
119
+ ), type === "navigation" && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-navi-arrow`, "aria-hidden": "true" }, /* @__PURE__ */ import_react.default.createElement(import_lucide_react.ChevronRight, null)), type === "ribbon" && /* @__PURE__ */ import_react.default.createElement("div", { className: `${prefixCls}-item-ribbon-head ${ribbonStatus}`, "aria-hidden": "true" }));
118
120
  };
119
121
  var step_default = Step;
@@ -135,7 +135,7 @@ var Steps = (0, import_react.forwardRef)((baseprops, ref) => {
135
135
  }
136
136
  return items.map((item, index) => /* @__PURE__ */ import_react.default.createElement(import_step.default, __spreadProps(__spreadValues({}, item), { index, key: index })));
137
137
  };
138
- return /* @__PURE__ */ import_react.default.createElement("div", __spreadProps(__spreadValues({}, rest), { className: cls, style, ref }), /* @__PURE__ */ import_react.default.createElement(StepsContext.Provider, { value: contextValue }, renderSteps()));
138
+ return /* @__PURE__ */ import_react.default.createElement("div", __spreadProps(__spreadValues({}, rest), { className: cls, style, ref, role: "list", "aria-label": "Steps" }), /* @__PURE__ */ import_react.default.createElement(StepsContext.Provider, { value: contextValue }, renderSteps()));
139
139
  });
140
140
  Steps.displayName = "Steps";
141
141
  var steps_default = Steps;
@@ -76,7 +76,7 @@ function useColumns({
76
76
  const tree = (0, import_header.injectSelectionExpand)(base, rowSelection, expandable);
77
77
  const leaves = (0, import_header.flattenLeafColumns)(tree);
78
78
  const wraped = (0, import_util.handleColumns)(leaves);
79
- const rows = (0, import_header.parseHeaderRows)(tree);
79
+ const rows = (0, import_header.parseHeaderRows)(tree, wraped);
80
80
  return { wrapedColumns: wraped, headerRows: rows };
81
81
  }, [childColumns, columns, shouldRenderSelection, shouldRenderExpand]);
82
82
  return {
@@ -49,6 +49,12 @@
49
49
  background-color: var(--yee-table-head-cell-split-line-color, #eee);
50
50
  }
51
51
  }
52
+
53
+ &-fixed-left,
54
+ &-fixed-right {
55
+ position: sticky;
56
+ z-index: 1;
57
+ }
52
58
  }
53
59
 
54
60
  &-cell {
@@ -84,6 +90,16 @@
84
90
  &-wrapper {
85
91
  overflow: auto;
86
92
  width: 100%;
93
+
94
+ &-scroll-left @{pls}-cell-fixed-left-last {
95
+ box-shadow: 6px 0 6px -4px
96
+ var(--yee-table-fixed-left-after-bs-color);
97
+ }
98
+
99
+ &-scroll-right @{pls}-cell-fixed-right-first {
100
+ box-shadow: -6px 0 6px -4px
101
+ var(--yee-table-fixed-right-after-bs-color);
102
+ }
87
103
  }
88
104
 
89
105
  > table {
@@ -101,10 +117,18 @@
101
117
  }
102
118
  }
103
119
 
120
+ &-row {
121
+ background-color: var(--yee-table-row-bg-color);
122
+ }
123
+
104
124
  &-even-row {
105
125
  background-color: var(--yee-table-even-row-bg-color);
106
126
  }
107
127
 
128
+ &-odd-row {
129
+ background-color: var(--yee-table-odd-row-bg-color);
130
+ }
131
+
108
132
  &-column-sorters {
109
133
  display: inline-flex;
110
134
  align-items: center;
@@ -137,7 +161,7 @@
137
161
  &-fixed-left,
138
162
  &-fixed-right {
139
163
  position: sticky;
140
- background-color: inherit;
164
+ background-color: var(--yee-table-fixed-column-bg-color);
141
165
  }
142
166
  }
143
167
 
@@ -163,17 +187,17 @@
163
187
  }
164
188
  }
165
189
 
166
- &-odd-row {
167
- > @{pls}-cell {
168
- background-color: var(--yee-table-odd-row-bg-color);
169
- }
170
- }
190
+ // &-odd-row {
191
+ // > @{pls}-cell {
192
+ // background-color: var(--yee-table-odd-row-bg-color);
193
+ // }
194
+ // }
171
195
 
172
- &-even-row {
173
- > @{pls}-cell {
174
- background-color: var(--yee-table-even-row-bg-color);
175
- }
176
- }
196
+ // &-even-row {
197
+ // > @{pls}-cell {
198
+ // background-color: var(--yee-table-even-row-bg-color);
199
+ // }
200
+ // }
177
201
 
178
202
  &-footer {
179
203
  display: flex;