@rainbow-oh/yee-c 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) 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 +38 -30
  7. package/dist/cjs/Cascader/column.js +17 -9
  8. package/dist/cjs/Cascader/node.js +16 -4
  9. package/dist/cjs/Cascader/search-list.js +31 -14
  10. package/dist/cjs/Cascader/utils/index.js +1 -5
  11. package/dist/cjs/Checkbox/checkbox-group.js +23 -14
  12. package/dist/cjs/Checkbox/checkbox.js +6 -3
  13. package/dist/cjs/Collapse/panel.js +10 -1
  14. package/dist/cjs/Dialog/dialog.js +22 -7
  15. package/dist/cjs/Dialog/interface.d.ts +1 -1
  16. package/dist/cjs/Dialog/style/index.less +2 -1
  17. package/dist/cjs/Drawer/drawer.js +22 -5
  18. package/dist/cjs/Form/Group.js +1 -1
  19. package/dist/cjs/Form/demo/tooltip.js +1 -3
  20. package/dist/cjs/List/hooks/useListKeyboard.js +3 -1
  21. package/dist/cjs/Menu/menu-item.js +14 -5
  22. package/dist/cjs/Menu/menu.js +26 -2
  23. package/dist/cjs/Pagination/items.js +60 -27
  24. package/dist/cjs/Pagination/pagination.js +33 -11
  25. package/dist/cjs/PickerPanel/panels/DateTimePanel/index.d.ts +1 -1
  26. package/dist/cjs/PickerPanel/panels/MonthPanel/MonthHeader.js +7 -1
  27. package/dist/cjs/Radio/radio-group.js +6 -5
  28. package/dist/cjs/Radio/radio.js +39 -29
  29. package/dist/cjs/Rate/rate.js +6 -1
  30. package/dist/cjs/Rate/star.js +31 -3
  31. package/dist/cjs/Segmented/demo/variant.js +15 -1
  32. package/dist/cjs/Segmented/index.d.ts +1 -1
  33. package/dist/cjs/Segmented/segmented.js +12 -15
  34. package/dist/cjs/Select/option.js +8 -1
  35. package/dist/cjs/Select/options.js +9 -1
  36. package/dist/cjs/Select/select.js +3 -1
  37. package/dist/cjs/Steps/step.js +19 -5
  38. package/dist/cjs/Steps/steps.js +11 -1
  39. package/dist/cjs/Table/demo/components-override.js +31 -2
  40. package/dist/cjs/Table/demo/grouping.js +7 -1
  41. package/dist/cjs/Table/hooks/useColumns.d.ts +3 -3
  42. package/dist/cjs/Table/hooks/useColumns.js +11 -14
  43. package/dist/cjs/Table/index.d.ts +1 -1
  44. package/dist/cjs/Table/style/index.less +2 -4
  45. package/dist/cjs/Table/tbody/row.js +1 -4
  46. package/dist/cjs/Table/theader/index.js +12 -4
  47. package/dist/cjs/Tabs/tab-content.js +3 -1
  48. package/dist/cjs/Tabs/tab-header/index.js +3 -1
  49. package/dist/cjs/Tabs/tab-header/tab-header-title.js +3 -1
  50. package/dist/cjs/Tour/index.d.ts +1 -1
  51. package/dist/cjs/Tree/style/index.less +1 -5
  52. package/dist/cjs/Tree/tree.js +38 -35
  53. package/dist/cjs/hooks/useDelayState.js +3 -2
  54. package/dist/cjs/hooks/useEvent.js +1 -4
  55. package/dist/cjs/hooks/useFocusManage.d.ts +1 -1
  56. package/dist/cjs/hooks/useFocusManage.js +27 -22
  57. package/dist/cjs/style/size.css +2 -0
  58. package/dist/cjs/style/themes.css +1 -1
  59. package/dist/cjs/style/variables.css +3 -1
  60. package/dist/cjs/utils/focusStack.d.ts +6 -2
  61. package/dist/cjs/utils/focusStack.js +40 -11
  62. package/dist/cjs/version.d.ts +1 -1
  63. package/dist/cjs/version.js +1 -1
  64. package/dist/esm/Card/card.js +7 -3
  65. package/dist/esm/Carousel/carousel-item.js +7 -2
  66. package/dist/esm/Carousel/carousel.js +31 -4
  67. package/dist/esm/Cascader/cascader.js +3 -1
  68. package/dist/esm/Cascader/column.js +2 -1
  69. package/dist/esm/Cascader/node.js +18 -4
  70. package/dist/esm/Cascader/search-list.js +18 -4
  71. package/dist/esm/Checkbox/checkbox-group.js +3 -1
  72. package/dist/esm/Checkbox/checkbox.js +6 -3
  73. package/dist/esm/Collapse/panel.js +11 -2
  74. package/dist/esm/Dialog/dialog.js +28 -11
  75. package/dist/esm/Dialog/interface.d.ts +1 -1
  76. package/dist/esm/Dialog/style/index.less +2 -1
  77. package/dist/esm/Drawer/drawer.js +16 -7
  78. package/dist/esm/Form/Group.js +1 -1
  79. package/dist/esm/Menu/menu-item.js +16 -5
  80. package/dist/esm/Menu/menu.js +11 -5
  81. package/dist/esm/Pagination/items.js +14 -5
  82. package/dist/esm/Pagination/pagination.js +16 -4
  83. package/dist/esm/PickerPanel/panels/DateTimePanel/index.d.ts +1 -1
  84. package/dist/esm/Radio/radio-group.js +5 -4
  85. package/dist/esm/Radio/radio.js +5 -4
  86. package/dist/esm/Rate/rate.js +6 -1
  87. package/dist/esm/Rate/star.js +12 -4
  88. package/dist/esm/Segmented/index.d.ts +1 -1
  89. package/dist/esm/Segmented/segmented.js +1 -1
  90. package/dist/esm/Steps/step.js +12 -6
  91. package/dist/esm/Steps/steps.js +3 -1
  92. package/dist/esm/Table/demo/components-override.js +1 -0
  93. package/dist/esm/Table/hooks/useColumns.d.ts +3 -3
  94. package/dist/esm/Table/hooks/useColumns.js +13 -16
  95. package/dist/esm/Table/index.d.ts +1 -1
  96. package/dist/esm/Table/style/index.less +2 -4
  97. package/dist/esm/Tabs/tab-content.js +3 -1
  98. package/dist/esm/Tabs/tab-header/index.js +3 -1
  99. package/dist/esm/Tabs/tab-header/tab-header-title.js +3 -1
  100. package/dist/esm/Tour/index.d.ts +1 -1
  101. package/dist/esm/Tree/style/index.less +1 -5
  102. package/dist/esm/Tree/tree.js +1 -1
  103. package/dist/esm/hooks/useDelayState.js +5 -2
  104. package/dist/esm/hooks/useFocusManage.d.ts +1 -1
  105. package/dist/esm/hooks/useFocusManage.js +31 -13
  106. package/dist/esm/style/size.css +2 -0
  107. package/dist/esm/style/themes.css +1 -1
  108. package/dist/esm/style/variables.css +3 -1
  109. package/dist/esm/utils/focusStack.d.ts +6 -2
  110. package/dist/esm/utils/focusStack.js +37 -14
  111. package/dist/esm/version.d.ts +1 -1
  112. package/dist/esm/version.js +1 -1
  113. package/dist/umd/yee-c.min.css +2 -2
  114. package/dist/umd/yee-c.min.js +1 -1
  115. package/package.json +10 -6
  116. package/src/Anchor/anchor.tsx +2 -2
  117. package/src/Card/card.tsx +5 -1
  118. package/src/Carousel/carousel-item.tsx +7 -1
  119. package/src/Carousel/carousel.tsx +29 -3
  120. package/src/Cascader/cascader.tsx +5 -1
  121. package/src/Cascader/column.tsx +5 -1
  122. package/src/Cascader/node.tsx +14 -2
  123. package/src/Cascader/search-list.tsx +19 -3
  124. package/src/Cascader/utils/index.ts +3 -6
  125. package/src/Checkbox/checkbox-group.tsx +6 -1
  126. package/src/Checkbox/checkbox.tsx +3 -0
  127. package/src/Collapse/panel.tsx +11 -1
  128. package/src/Dialog/dialog.tsx +35 -6
  129. package/src/Dialog/interface.ts +1 -1
  130. package/src/Dialog/style/index.less +2 -1
  131. package/src/Drawer/drawer.tsx +18 -3
  132. package/src/Form/Group.tsx +2 -4
  133. package/src/Form/demo/tooltip.tsx +2 -11
  134. package/src/Form/utils/validate.ts +1 -4
  135. package/src/List/hooks/useListKeyboard.ts +3 -3
  136. package/src/List/list.tsx +2 -1
  137. package/src/Menu/menu-item.tsx +12 -3
  138. package/src/Menu/menu.tsx +22 -5
  139. package/src/Pagination/items.tsx +21 -4
  140. package/src/Pagination/pagination.tsx +24 -4
  141. package/src/PickerPanel/panels/DatePanel/DateBody.tsx +1 -1
  142. package/src/PickerPanel/panels/DateTimePanel/index.tsx +1 -1
  143. package/src/PickerPanel/panels/MonthPanel/MonthHeader.tsx +7 -2
  144. package/src/PickerPanel/panels/PanelBody.tsx +1 -1
  145. package/src/PickerPanel/panels/QuarterPanel/QuarterHeader.tsx +1 -1
  146. package/src/PickerPanel/panels/RangePanel/index.tsx +1 -1
  147. package/src/PickerPanel/panels/TimePanel/TimeBody.tsx +1 -1
  148. package/src/PickerPanel/panels/YearPanel/YearHeader.tsx +1 -1
  149. package/src/PickerPanel/utils/pickerUtils.ts +2 -1
  150. package/src/Radio/radio-group.tsx +2 -1
  151. package/src/Radio/radio.tsx +7 -2
  152. package/src/RangePicker/range-picker-mobile.tsx +1 -3
  153. package/src/Rate/rate.tsx +5 -0
  154. package/src/Rate/star.tsx +20 -4
  155. package/src/Segmented/demo/variant.tsx +10 -2
  156. package/src/Segmented/index.ts +2 -2
  157. package/src/Segmented/segmented.tsx +4 -11
  158. package/src/Select/interface.ts +0 -1
  159. package/src/Select/option.tsx +8 -2
  160. package/src/Select/options.tsx +11 -4
  161. package/src/Select/select.tsx +4 -4
  162. package/src/Steps/step.tsx +23 -5
  163. package/src/Steps/steps.tsx +8 -1
  164. package/src/Table/demo/components-override.tsx +34 -7
  165. package/src/Table/demo/grouping.tsx +8 -4
  166. package/src/Table/hooks/useColumns.ts +14 -18
  167. package/src/Table/index.ts +3 -3
  168. package/src/Table/style/index.less +2 -4
  169. package/src/Table/table.tsx +2 -4
  170. package/src/Table/tbody/row.tsx +1 -3
  171. package/src/Table/theader/index.tsx +9 -10
  172. package/src/Tabs/tab-content.tsx +2 -0
  173. package/src/Tabs/tab-header/index.tsx +2 -0
  174. package/src/Tabs/tab-header/tab-header-title.tsx +3 -1
  175. package/src/Tour/demo/placement.tsx +2 -1
  176. package/src/Tour/index.ts +1 -1
  177. package/src/Tree/style/index.less +1 -5
  178. package/src/Tree/tree.tsx +16 -11
  179. package/src/Tree/utils/tree-tools.ts +4 -1
  180. package/src/hooks/useDelayState.ts +4 -2
  181. package/src/hooks/useEvent.ts +1 -3
  182. package/src/hooks/useFocusManage.ts +33 -17
  183. package/src/locale/context.tsx +5 -1
  184. package/src/locale/interface.ts +3 -1
  185. package/src/style/size.css +2 -0
  186. package/src/utils/debounce.ts +1 -3
  187. package/src/utils/focusStack.ts +55 -12
  188. package/src/version.ts +1 -1
@@ -80,7 +80,6 @@ var ANIMATION_DURATION = 0.2;
80
80
  var CLOSE_ICON_SIZE = 16;
81
81
  var CLOSE_ICON_STROKE_WIDTH = 1.5;
82
82
  var Dialog = (baseprops) => {
83
- var _b;
84
83
  const { dialog } = (0, import_react2.useContext)(import_Config_Provider.GlobalContext);
85
84
  const props = (0, import_mergeContextToProps.default)(baseprops, dialog);
86
85
  const { locale } = (0, import_locale.useLocale)();
@@ -137,7 +136,17 @@ var Dialog = (baseprops) => {
137
136
  "onConfirm"
138
137
  ]);
139
138
  const [delayOpen, setDelayOpen] = (0, import_react2.useState)(open);
139
+ const [contentElement, setContentElement] = (0, import_react2.useState)(
140
+ null
141
+ );
140
142
  const contentRef = (0, import_react2.useRef)(null);
143
+ const setContentRef = (0, import_react2.useCallback)((element) => {
144
+ contentRef.current = element;
145
+ setContentElement(element);
146
+ }, []);
147
+ const dialogId = (0, import_react2.useId)();
148
+ const titleId = `${dialogId}-title`;
149
+ const bodyId = `${dialogId}-body`;
141
150
  (0, import_react2.useEffect)(() => {
142
151
  var _a2;
143
152
  if (open && draggable && openResetLocation) {
@@ -149,14 +158,14 @@ var Dialog = (baseprops) => {
149
158
  element: contentRef,
150
159
  bounds: dragLimitInWindow ? () => document.body : void 0
151
160
  });
152
- (0, import_useLockFocus.default)((_b = contentRef == null ? void 0 : contentRef.current) != null ? _b : null, delayOpen);
161
+ (0, import_useLockFocus.default)(contentElement, delayOpen);
153
162
  (0, import_useEsc.default)({
154
163
  enabled: keyboard,
155
164
  onEsc: () => {
156
165
  onCancel == null ? void 0 : onCancel();
157
166
  }
158
167
  });
159
- (0, import_useFocusManage.default)(contentRef.current, delayOpen);
168
+ (0, import_useFocusManage.default)(contentElement, open);
160
169
  const cls = (0, import_clsx.default)(prefixCls, {
161
170
  [`${prefixCls}-open`]: delayOpen,
162
171
  [`${prefixCls}-fullscreen`]: fullscreen
@@ -208,7 +217,8 @@ var Dialog = (baseprops) => {
208
217
  "div",
209
218
  {
210
219
  className: (0, import_clsx.default)(`${prefixCls}-mask`, classNames == null ? void 0 : classNames.mask),
211
- style: styles == null ? void 0 : styles.mask
220
+ style: styles == null ? void 0 : styles.mask,
221
+ "aria-hidden": "true"
212
222
  }
213
223
  ),
214
224
  /* @__PURE__ */ import_react2.default.createElement(
@@ -224,7 +234,11 @@ var Dialog = (baseprops) => {
224
234
  style: __spreadValues({ width: fullscreen ? "100%" : width }, styles == null ? void 0 : styles.content),
225
235
  tabIndex: 0,
226
236
  onClick: (e) => e.stopPropagation(),
227
- ref: contentRef
237
+ ref: setContentRef,
238
+ role: "dialog",
239
+ "aria-modal": showMask ? true : void 0,
240
+ "aria-labelledby": title ? titleId : void 0,
241
+ "aria-describedby": bodyId
228
242
  },
229
243
  closable ? /* @__PURE__ */ import_react2.default.createElement(
230
244
  import_Button.default,
@@ -248,13 +262,14 @@ var Dialog = (baseprops) => {
248
262
  className: (0, import_clsx.default)(`${prefixCls}-header`, classNames == null ? void 0 : classNames.header),
249
263
  style: styles == null ? void 0 : styles.header
250
264
  },
251
- /* @__PURE__ */ import_react2.default.createElement("div", { className: `${prefixCls}-title` }, title)
265
+ typeof title === "string" ? /* @__PURE__ */ import_react2.default.createElement("div", { className: `${prefixCls}-title`, id: titleId }, title) : title
252
266
  ) : null,
253
267
  /* @__PURE__ */ import_react2.default.createElement(
254
268
  "div",
255
269
  {
256
270
  className: (0, import_clsx.default)(`${prefixCls}-body`, classNames == null ? void 0 : classNames.body),
257
- style: styles == null ? void 0 : styles.body
271
+ style: styles == null ? void 0 : styles.body,
272
+ id: bodyId
258
273
  },
259
274
  children
260
275
  ),
@@ -53,7 +53,7 @@ export interface DialogProps extends DataAttributeProps {
53
53
  /**
54
54
  * Title
55
55
  */
56
- title?: string;
56
+ title?: string | React.ReactNode;
57
57
  /**
58
58
  * Cancel button text
59
59
  * @default Cancel
@@ -37,7 +37,8 @@
37
37
  }
38
38
 
39
39
  &-title {
40
- font-weight: 600;
40
+ font-size: var(--yee-dialog-title-font-size);
41
+ font-weight: var(--yee-dialog-title-font-weight);
41
42
  }
42
43
 
43
44
  &-content {
@@ -152,6 +152,9 @@ var Drawer = (baseprops) => {
152
152
  ]);
153
153
  const [delayOpen, setDelayOpen] = (0, import_react2.useState)(open);
154
154
  const contentRef = (0, import_react2.useRef)(null);
155
+ const drawerId = (0, import_react2.useId)();
156
+ const titleId = `${drawerId}-title`;
157
+ const bodyId = `${drawerId}-body`;
155
158
  (0, import_useLockFocus.default)(contentRef.current, delayOpen);
156
159
  (0, import_useEsc.default)({
157
160
  enabled: keyboard,
@@ -207,7 +210,7 @@ var Drawer = (baseprops) => {
207
210
  };
208
211
  const renderNode = () => {
209
212
  const { initial, animate, exit } = getAnimate(placement, open);
210
- return /* @__PURE__ */ import_react2.default.createElement("div", __spreadProps(__spreadValues({}, rest), { className: cls, style, role: "modal" }), showMask && delayOpen && /* @__PURE__ */ import_react2.default.createElement(
213
+ return /* @__PURE__ */ import_react2.default.createElement("div", __spreadProps(__spreadValues({}, rest), { className: cls, style }), showMask && delayOpen && /* @__PURE__ */ import_react2.default.createElement(
211
214
  import_react.motion.div,
212
215
  {
213
216
  className: (0, import_clsx.default)(`${prefixCls}-mask`, classNames == null ? void 0 : classNames.mask),
@@ -216,7 +219,8 @@ var Drawer = (baseprops) => {
216
219
  initial: { opacity: 0 },
217
220
  animate: open ? { opacity: 1 } : { opacity: 0 },
218
221
  exit: { opacity: 0 },
219
- transition: { duration: ANIMATION_DURATION }
222
+ transition: { duration: ANIMATION_DURATION },
223
+ "aria-hidden": "true"
220
224
  }
221
225
  ), /* @__PURE__ */ import_react2.default.createElement(
222
226
  import_react.motion.div,
@@ -247,7 +251,11 @@ var Drawer = (baseprops) => {
247
251
  className: (0, import_clsx.default)(`${prefixCls}-content`, classNames == null ? void 0 : classNames.content),
248
252
  tabIndex: 0,
249
253
  style: styles == null ? void 0 : styles.content,
250
- ref: contentRef
254
+ ref: contentRef,
255
+ role: "dialog",
256
+ "aria-modal": showMask ? true : void 0,
257
+ "aria-labelledby": title ? titleId : void 0,
258
+ "aria-describedby": bodyId
251
259
  },
252
260
  renderClose(),
253
261
  title ? /* @__PURE__ */ import_react2.default.createElement(
@@ -256,13 +264,22 @@ var Drawer = (baseprops) => {
256
264
  className: (0, import_clsx.default)(`${prefixCls}-header`, classNames == null ? void 0 : classNames.header),
257
265
  style: styles == null ? void 0 : styles.header
258
266
  },
259
- /* @__PURE__ */ import_react2.default.createElement("div", { className: (0, import_clsx.default)(`${prefixCls}-title`, classNames == null ? void 0 : classNames.title), style: styles == null ? void 0 : styles.title }, title)
267
+ /* @__PURE__ */ import_react2.default.createElement(
268
+ "div",
269
+ {
270
+ className: (0, import_clsx.default)(`${prefixCls}-title`, classNames == null ? void 0 : classNames.title),
271
+ style: styles == null ? void 0 : styles.title,
272
+ id: titleId
273
+ },
274
+ title
275
+ )
260
276
  ) : null,
261
277
  /* @__PURE__ */ import_react2.default.createElement(
262
278
  "div",
263
279
  {
264
280
  className: (0, import_clsx.default)(`${prefixCls}-body`, classNames == null ? void 0 : classNames.body),
265
- style: styles == null ? void 0 : styles.body
281
+ style: styles == null ? void 0 : styles.body,
282
+ id: bodyId
266
283
  },
267
284
  children
268
285
  ),
@@ -56,9 +56,9 @@ var import_clsx = __toESM(require("clsx"));
56
56
  var import_react = require("motion/react");
57
57
  var import_react2 = __toESM(require("react"));
58
58
  var import_Grid = __toESM(require("../Grid"));
59
- var import_validate = require("./utils/validate");
60
59
  var import_FieldContext = __toESM(require("./FieldContext"));
61
60
  var import_FormContext = __toESM(require("./FormContext"));
61
+ var import_validate = require("./utils/validate");
62
62
  var Group = (props) => {
63
63
  var _a;
64
64
  const { label, required, rules, cols, children, style, className } = props;
@@ -54,9 +54,7 @@ var tooltip_default = () => {
54
54
  name: "username",
55
55
  label: "Username",
56
56
  tooltip: "Used for login. 4-20 characters.",
57
- rules: [
58
- { required: true, message: "Please input your username!" }
59
- ]
57
+ rules: [{ required: true, message: "Please input your username!" }]
60
58
  },
61
59
  /* @__PURE__ */ import_react.default.createElement(import_yee_c.Input, { placeholder: "Please input your username" })
62
60
  )), /* @__PURE__ */ import_react.default.createElement(import_yee_c.Grid.Item, null, /* @__PURE__ */ import_react.default.createElement(
@@ -30,7 +30,9 @@ function useListKeyboard({
30
30
  onFocusChange,
31
31
  onClick
32
32
  }) {
33
- const [internalFocusedKey, setInternalFocusedKey] = (0, import_react.useState)("");
33
+ const [internalFocusedKey, setInternalFocusedKey] = (0, import_react.useState)(
34
+ ""
35
+ );
34
36
  const isControlled = controlledFocusedKey !== void 0;
35
37
  const focusedKey = isControlled ? controlledFocusedKey : internalFocusedKey;
36
38
  const setFocusedKey = (0, import_react.useCallback)(
@@ -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,23 @@ 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(
67
+ "div",
68
+ {
69
+ className: `${prefixCls}-item-group-title`,
70
+ role: "presentation",
71
+ id: `${prefixCls}-group-${String(item.label)}`
72
+ },
73
+ item.label
74
+ ), /* @__PURE__ */ import_react.default.createElement(
75
+ "ul",
76
+ {
77
+ className: `${prefixCls}-item-group-list`,
78
+ role: "group",
79
+ "aria-labelledby": `${prefixCls}-group-${String(item.label)}`
80
+ },
81
+ renderItems(item.children)
82
+ ));
67
83
  var Menu = (props) => {
68
84
  const {
69
85
  items,
@@ -122,7 +138,15 @@ var Menu = (props) => {
122
138
  }
123
139
  );
124
140
  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)));
141
+ return /* @__PURE__ */ import_react.default.createElement(
142
+ "ul",
143
+ __spreadProps(__spreadValues({}, dataAttrs), {
144
+ className: cls,
145
+ style: rootStyle,
146
+ role: root && mode === "horizontal" ? "menubar" : "menu"
147
+ }),
148
+ /* @__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))
149
+ );
126
150
  };
127
151
  Menu.displayName = "Menu";
128
152
  var menu_default = Menu;
@@ -107,23 +107,38 @@ 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
- import_lucide_react.Ellipsis,
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(
114
+ "span",
114
115
  {
115
- className: "ellipsis",
116
- size: 18,
117
- strokeWidth: 1.5
118
- }
119
- )), /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-jump-prev-icon` }, /* @__PURE__ */ import_react.default.createElement(
120
- import_lucide_react.ChevronsLeft,
116
+ className: `${prefixCls}-jump-prev-ellipsis`,
117
+ "aria-hidden": "true"
118
+ },
119
+ /* @__PURE__ */ import_react.default.createElement(
120
+ import_lucide_react.Ellipsis,
121
+ {
122
+ className: "ellipsis",
123
+ size: 18,
124
+ strokeWidth: 1.5
125
+ }
126
+ )
127
+ ), /* @__PURE__ */ import_react.default.createElement(
128
+ "span",
121
129
  {
122
- className: "turn",
123
- size: 18,
124
- strokeWidth: 1.5
125
- }
126
- )))
130
+ className: `${prefixCls}-jump-prev-icon`,
131
+ "aria-hidden": "true"
132
+ },
133
+ /* @__PURE__ */ import_react.default.createElement(
134
+ import_lucide_react.ChevronsLeft,
135
+ {
136
+ className: "turn",
137
+ size: 18,
138
+ strokeWidth: 1.5
139
+ }
140
+ )
141
+ ))
127
142
  );
128
143
  } else if (number === "right") {
129
144
  return /* @__PURE__ */ import_react.default.createElement(
@@ -139,23 +154,38 @@ var Items = (props) => {
139
154
  }
140
155
  },
141
156
  role: "button",
157
+ "aria-label": "Jump forward 7 pages",
142
158
  key: "turn-right"
143
159
  },
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(
145
- import_lucide_react.Ellipsis,
160
+ (_b = components == null ? void 0 : components.jumpNext) != null ? _b : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(
161
+ "span",
146
162
  {
147
- className: "ellipsis",
148
- size: 18,
149
- strokeWidth: 1.5
150
- }
151
- )), /* @__PURE__ */ import_react.default.createElement("span", { className: `${prefixCls}-jump-next-icon` }, /* @__PURE__ */ import_react.default.createElement(
152
- import_lucide_react.ChevronsRight,
163
+ className: `${prefixCls}-jump-next-ellipsis`,
164
+ "aria-hidden": "true"
165
+ },
166
+ /* @__PURE__ */ import_react.default.createElement(
167
+ import_lucide_react.Ellipsis,
168
+ {
169
+ className: "ellipsis",
170
+ size: 18,
171
+ strokeWidth: 1.5
172
+ }
173
+ )
174
+ ), /* @__PURE__ */ import_react.default.createElement(
175
+ "span",
153
176
  {
154
- className: "turn",
155
- size: 18,
156
- strokeWidth: 1.5
157
- }
158
- )))
177
+ className: `${prefixCls}-jump-next-icon`,
178
+ "aria-hidden": "true"
179
+ },
180
+ /* @__PURE__ */ import_react.default.createElement(
181
+ import_lucide_react.ChevronsRight,
182
+ {
183
+ className: "turn",
184
+ size: 18,
185
+ strokeWidth: 1.5
186
+ }
187
+ )
188
+ ))
159
189
  );
160
190
  } else {
161
191
  return /* @__PURE__ */ import_react.default.createElement(
@@ -178,7 +208,10 @@ var Items = (props) => {
178
208
  if (e.key === "Enter") {
179
209
  onChange(number);
180
210
  }
181
- }
211
+ },
212
+ role: "button",
213
+ "aria-label": `Page ${number}`,
214
+ "aria-current": current === number ? "page" : void 0
182
215
  },
183
216
  number
184
217
  );
@@ -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,15 +295,31 @@ 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(
293
- import_items.default,
294
- {
295
- prefixCls,
296
- pageCount,
297
- current: mergedCurrent,
298
- onChange: handleCurrentChange
299
- }
300
- ), renderNext(), renderSizeChanger(), renderQuickJumper(true));
298
+ return /* @__PURE__ */ import_react.default.createElement(
299
+ "ul",
300
+ __spreadProps(__spreadValues({}, rest), {
301
+ className: cls,
302
+ style,
303
+ ref,
304
+ role: "navigation",
305
+ "aria-label": "Pagination",
306
+ "aria-disabled": disabled || void 0
307
+ }),
308
+ renderTotal(),
309
+ renderPrevious(),
310
+ 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(
311
+ import_items.default,
312
+ {
313
+ prefixCls,
314
+ pageCount,
315
+ current: mergedCurrent,
316
+ onChange: handleCurrentChange
317
+ }
318
+ ),
319
+ renderNext(),
320
+ renderSizeChanger(),
321
+ renderQuickJumper(true)
322
+ );
301
323
  }
302
324
  );
303
325
  Pagination.displayName = "Pagination";
@@ -1,6 +1,6 @@
1
1
  import { Dayjs } from 'dayjs';
2
2
  import * as React from 'react';
3
- import type { PickerType, PanelSharedProps } from '../../interface';
3
+ import type { PanelSharedProps, PickerType } from '../../interface';
4
4
  interface DateTimePanelProps extends Omit<PanelSharedProps, 'onSelect'> {
5
5
  onSelect?: (panel: PickerType, date: Dayjs) => void;
6
6
  showTime?: boolean;
@@ -55,7 +55,13 @@ var import_useEvent = __toESM(require("../../../hooks/useEvent"));
55
55
  var import_pickerUtils = __toESM(require("../../utils/pickerUtils"));
56
56
  var import_Header = __toESM(require("../Header"));
57
57
  function MonthHeader(props) {
58
- const { prefixCls, viewDate, offsetYear = 0, onViewDateChange, onPanelChange } = props;
58
+ const {
59
+ prefixCls,
60
+ viewDate,
61
+ offsetYear = 0,
62
+ onViewDateChange,
63
+ onPanelChange
64
+ } = props;
59
65
  const year = import_pickerUtils.default.getYear(viewDate) + offsetYear;
60
66
  const onSuperPrevClick = (0, import_useEvent.default)(() => {
61
67
  const newViewDate = import_pickerUtils.default.addYear(viewDate, -1);
@@ -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`, {