@oceanbase/ui 1.0.0-alpha.19 → 1.0.0-alpha.20

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 (272) hide show
  1. package/dist/ui.min.js +1 -1
  2. package/es/Action/Group.d.ts +1 -2
  3. package/es/Action/Group.js +253 -90
  4. package/es/BackgroundTaskManager/index.d.ts +2 -0
  5. package/es/BackgroundTaskManager/index.js +25 -4
  6. package/es/BasicLayout/index.d.ts +3 -1
  7. package/es/BasicLayout/index.js +62 -24
  8. package/es/BasicLayout/locale/en-US.d.ts +3 -0
  9. package/es/BasicLayout/locale/en-US.js +4 -1
  10. package/es/BasicLayout/locale/ja-JP.d.ts +3 -0
  11. package/es/BasicLayout/locale/ja-JP.js +4 -1
  12. package/es/BasicLayout/locale/zh-CN.d.ts +3 -0
  13. package/es/BasicLayout/locale/zh-CN.js +4 -1
  14. package/es/BasicLayout/locale/zh-TW.d.ts +3 -0
  15. package/es/BasicLayout/locale/zh-TW.js +4 -1
  16. package/es/BasicLayout/style/index.js +10 -2
  17. package/es/BatchOperationBar/index.js +15 -4
  18. package/es/BatchOperationBar/locale/en-US.d.ts +1 -0
  19. package/es/BatchOperationBar/locale/en-US.js +2 -1
  20. package/es/BatchOperationBar/locale/ja-JP.d.ts +1 -0
  21. package/es/BatchOperationBar/locale/ja-JP.js +2 -1
  22. package/es/BatchOperationBar/locale/zh-CN.d.ts +1 -0
  23. package/es/BatchOperationBar/locale/zh-CN.js +2 -1
  24. package/es/BatchOperationBar/locale/zh-TW.d.ts +1 -0
  25. package/es/BatchOperationBar/locale/zh-TW.js +2 -1
  26. package/es/BatchOperationBar/style/index.js +6 -1
  27. package/es/DateRanger/Ranger.js +17 -5
  28. package/es/DateRanger/locale/en-US.d.ts +2 -0
  29. package/es/DateRanger/locale/en-US.js +3 -1
  30. package/es/DateRanger/locale/ja-JP.d.ts +2 -0
  31. package/es/DateRanger/locale/ja-JP.js +3 -1
  32. package/es/DateRanger/locale/zh-CN.d.ts +2 -0
  33. package/es/DateRanger/locale/zh-CN.js +3 -1
  34. package/es/DateRanger/locale/zh-TW.d.ts +2 -0
  35. package/es/DateRanger/locale/zh-TW.js +3 -1
  36. package/es/Dialog/index.d.ts +5 -0
  37. package/es/Dialog/index.js +77 -14
  38. package/es/Dialog/locale/en-US.d.ts +5 -0
  39. package/es/Dialog/locale/en-US.js +6 -1
  40. package/es/Dialog/locale/ja-JP.d.ts +5 -0
  41. package/es/Dialog/locale/ja-JP.js +6 -1
  42. package/es/Dialog/locale/zh-CN.d.ts +5 -0
  43. package/es/Dialog/locale/zh-CN.js +6 -1
  44. package/es/Dialog/locale/zh-TW.d.ts +5 -0
  45. package/es/Dialog/locale/zh-TW.js +6 -1
  46. package/es/Dialog/style/index.js +24 -5
  47. package/es/DocDialog/index.js +4 -2
  48. package/es/DocDialog/locale/en-US.d.ts +3 -1
  49. package/es/DocDialog/locale/en-US.js +3 -1
  50. package/es/DocDialog/locale/ja-JP.d.ts +3 -1
  51. package/es/DocDialog/locale/ja-JP.js +3 -1
  52. package/es/DocDialog/locale/zh-CN.d.ts +3 -1
  53. package/es/DocDialog/locale/zh-CN.js +3 -1
  54. package/es/DocDialog/locale/zh-TW.d.ts +3 -1
  55. package/es/DocDialog/locale/zh-TW.js +3 -1
  56. package/es/FooterToolbar/index.d.ts +7 -4
  57. package/es/FooterToolbar/index.js +27 -11
  58. package/es/FooterToolbar/locale/en-US.d.ts +4 -0
  59. package/es/FooterToolbar/locale/en-US.js +3 -0
  60. package/es/FooterToolbar/locale/ja-JP.d.ts +4 -0
  61. package/es/FooterToolbar/locale/ja-JP.js +3 -0
  62. package/es/FooterToolbar/locale/zh-CN.d.ts +4 -0
  63. package/es/FooterToolbar/locale/zh-CN.js +3 -0
  64. package/es/FooterToolbar/locale/zh-TW.d.ts +4 -0
  65. package/es/FooterToolbar/locale/zh-TW.js +3 -0
  66. package/es/FullscreenBox/index.js +18 -10
  67. package/es/FullscreenBox/locale/en-US.d.ts +4 -1
  68. package/es/FullscreenBox/locale/en-US.js +4 -1
  69. package/es/FullscreenBox/locale/ja-JP.d.ts +4 -1
  70. package/es/FullscreenBox/locale/ja-JP.js +4 -1
  71. package/es/FullscreenBox/locale/zh-CN.d.ts +4 -1
  72. package/es/FullscreenBox/locale/zh-CN.js +4 -1
  73. package/es/FullscreenBox/locale/zh-TW.d.ts +4 -1
  74. package/es/FullscreenBox/locale/zh-TW.js +4 -1
  75. package/es/FullscreenBox/style/index.js +32 -11
  76. package/es/Highlight/index.js +9 -2
  77. package/es/Highlight/locale/en-US.d.ts +2 -0
  78. package/es/Highlight/locale/en-US.js +3 -1
  79. package/es/Highlight/locale/ja-JP.d.ts +2 -0
  80. package/es/Highlight/locale/ja-JP.js +3 -1
  81. package/es/Highlight/locale/zh-CN.d.ts +2 -0
  82. package/es/Highlight/locale/zh-CN.js +3 -1
  83. package/es/Highlight/locale/zh-TW.d.ts +2 -0
  84. package/es/Highlight/locale/zh-TW.js +3 -1
  85. package/es/LightFilter/index.d.ts +6 -2
  86. package/es/LightFilter/index.js +24 -8
  87. package/es/LightFilter/locale/en-US.d.ts +4 -0
  88. package/es/LightFilter/locale/en-US.js +3 -0
  89. package/es/LightFilter/locale/ja-JP.d.ts +4 -0
  90. package/es/LightFilter/locale/ja-JP.js +3 -0
  91. package/es/LightFilter/locale/zh-CN.d.ts +4 -0
  92. package/es/LightFilter/locale/zh-CN.js +3 -0
  93. package/es/LightFilter/locale/zh-TW.d.ts +4 -0
  94. package/es/LightFilter/locale/zh-TW.js +3 -0
  95. package/es/NavMenu/index.d.ts +5 -2
  96. package/es/NavMenu/index.js +13 -3
  97. package/es/NavMenu/locale/en-US.d.ts +4 -0
  98. package/es/NavMenu/locale/en-US.js +3 -0
  99. package/es/NavMenu/locale/ja-JP.d.ts +4 -0
  100. package/es/NavMenu/locale/ja-JP.js +3 -0
  101. package/es/NavMenu/locale/zh-CN.d.ts +4 -0
  102. package/es/NavMenu/locale/zh-CN.js +3 -0
  103. package/es/NavMenu/locale/zh-TW.d.ts +4 -0
  104. package/es/NavMenu/locale/zh-TW.js +3 -0
  105. package/es/Password/Content.d.ts +2 -0
  106. package/es/Password/Content.js +11 -3
  107. package/es/Password/index.d.ts +1 -0
  108. package/es/Password/index.js +14 -9
  109. package/es/Password/locale/en-US.d.ts +1 -0
  110. package/es/Password/locale/en-US.js +2 -1
  111. package/es/Password/locale/ja-JP.d.ts +1 -0
  112. package/es/Password/locale/ja-JP.js +1 -0
  113. package/es/Password/locale/zh-CN.d.ts +1 -0
  114. package/es/Password/locale/zh-CN.js +1 -0
  115. package/es/Password/locale/zh-TW.d.ts +1 -0
  116. package/es/Password/locale/zh-TW.js +2 -1
  117. package/es/SideTip/Dragger.js +2 -1
  118. package/es/SideTip/index.js +28 -7
  119. package/es/SideTip/locale/en-US.d.ts +4 -1
  120. package/es/SideTip/locale/en-US.js +4 -1
  121. package/es/SideTip/locale/ja-JP.d.ts +4 -1
  122. package/es/SideTip/locale/ja-JP.js +4 -1
  123. package/es/SideTip/locale/zh-CN.d.ts +4 -1
  124. package/es/SideTip/locale/zh-CN.js +4 -1
  125. package/es/SideTip/locale/zh-TW.d.ts +4 -1
  126. package/es/SideTip/locale/zh-TW.js +4 -1
  127. package/es/SideTip/style/index.js +10 -1
  128. package/es/TagSelect/Group.js +6 -2
  129. package/es/TagSelect/Item.js +2 -1
  130. package/es/assets/logo/oceanbase_logo.svg +45 -29
  131. package/es/assets/logo/oceanbase_logo_dark.svg +45 -29
  132. package/es/assets/logo/oceanbase_watermark.svg +45 -31
  133. package/es/locale/en-US.js +6 -0
  134. package/es/locale/ja-JP.js +6 -0
  135. package/es/locale/zh-CN.js +6 -0
  136. package/es/locale/zh-TW.js +6 -0
  137. package/lib/Action/Group.d.ts +1 -2
  138. package/lib/Action/Group.js +217 -92
  139. package/lib/BackgroundTaskManager/index.d.ts +2 -0
  140. package/lib/BackgroundTaskManager/index.js +23 -4
  141. package/lib/BasicLayout/index.d.ts +3 -1
  142. package/lib/BasicLayout/index.js +51 -17
  143. package/lib/BasicLayout/locale/en-US.d.ts +3 -0
  144. package/lib/BasicLayout/locale/en-US.js +4 -1
  145. package/lib/BasicLayout/locale/ja-JP.d.ts +3 -0
  146. package/lib/BasicLayout/locale/ja-JP.js +4 -1
  147. package/lib/BasicLayout/locale/zh-CN.d.ts +3 -0
  148. package/lib/BasicLayout/locale/zh-CN.js +4 -1
  149. package/lib/BasicLayout/locale/zh-TW.d.ts +3 -0
  150. package/lib/BasicLayout/locale/zh-TW.js +4 -1
  151. package/lib/BasicLayout/style/index.js +9 -0
  152. package/lib/BatchOperationBar/index.js +15 -4
  153. package/lib/BatchOperationBar/locale/en-US.d.ts +1 -0
  154. package/lib/BatchOperationBar/locale/en-US.js +2 -1
  155. package/lib/BatchOperationBar/locale/ja-JP.d.ts +1 -0
  156. package/lib/BatchOperationBar/locale/ja-JP.js +2 -1
  157. package/lib/BatchOperationBar/locale/zh-CN.d.ts +1 -0
  158. package/lib/BatchOperationBar/locale/zh-CN.js +2 -1
  159. package/lib/BatchOperationBar/locale/zh-TW.d.ts +1 -0
  160. package/lib/BatchOperationBar/locale/zh-TW.js +2 -1
  161. package/lib/BatchOperationBar/style/index.js +6 -1
  162. package/lib/DateRanger/Ranger.js +17 -5
  163. package/lib/DateRanger/locale/en-US.d.ts +2 -0
  164. package/lib/DateRanger/locale/en-US.js +2 -0
  165. package/lib/DateRanger/locale/ja-JP.d.ts +2 -0
  166. package/lib/DateRanger/locale/ja-JP.js +2 -0
  167. package/lib/DateRanger/locale/zh-CN.d.ts +2 -0
  168. package/lib/DateRanger/locale/zh-CN.js +2 -0
  169. package/lib/DateRanger/locale/zh-TW.d.ts +2 -0
  170. package/lib/DateRanger/locale/zh-TW.js +2 -0
  171. package/lib/Dialog/index.d.ts +5 -0
  172. package/lib/Dialog/index.js +71 -13
  173. package/lib/Dialog/locale/en-US.d.ts +5 -0
  174. package/lib/Dialog/locale/en-US.js +6 -1
  175. package/lib/Dialog/locale/ja-JP.d.ts +5 -0
  176. package/lib/Dialog/locale/ja-JP.js +6 -1
  177. package/lib/Dialog/locale/zh-CN.d.ts +5 -0
  178. package/lib/Dialog/locale/zh-CN.js +6 -1
  179. package/lib/Dialog/locale/zh-TW.d.ts +5 -0
  180. package/lib/Dialog/locale/zh-TW.js +6 -1
  181. package/lib/Dialog/style/index.js +23 -3
  182. package/lib/DocDialog/index.js +4 -2
  183. package/lib/DocDialog/locale/en-US.d.ts +3 -1
  184. package/lib/DocDialog/locale/en-US.js +3 -1
  185. package/lib/DocDialog/locale/ja-JP.d.ts +3 -1
  186. package/lib/DocDialog/locale/ja-JP.js +3 -1
  187. package/lib/DocDialog/locale/zh-CN.d.ts +3 -1
  188. package/lib/DocDialog/locale/zh-CN.js +3 -1
  189. package/lib/DocDialog/locale/zh-TW.d.ts +3 -1
  190. package/lib/DocDialog/locale/zh-TW.js +3 -1
  191. package/lib/FooterToolbar/index.d.ts +7 -4
  192. package/lib/FooterToolbar/index.js +27 -11
  193. package/lib/FooterToolbar/locale/en-US.d.ts +4 -0
  194. package/lib/FooterToolbar/locale/en-US.js +9 -0
  195. package/lib/FooterToolbar/locale/ja-JP.d.ts +4 -0
  196. package/lib/FooterToolbar/locale/ja-JP.js +9 -0
  197. package/lib/FooterToolbar/locale/zh-CN.d.ts +4 -0
  198. package/lib/FooterToolbar/locale/zh-CN.js +9 -0
  199. package/lib/FooterToolbar/locale/zh-TW.d.ts +4 -0
  200. package/lib/FooterToolbar/locale/zh-TW.js +9 -0
  201. package/lib/FullscreenBox/index.js +19 -11
  202. package/lib/FullscreenBox/locale/en-US.d.ts +4 -1
  203. package/lib/FullscreenBox/locale/en-US.js +4 -1
  204. package/lib/FullscreenBox/locale/ja-JP.d.ts +4 -1
  205. package/lib/FullscreenBox/locale/ja-JP.js +4 -1
  206. package/lib/FullscreenBox/locale/zh-CN.d.ts +4 -1
  207. package/lib/FullscreenBox/locale/zh-CN.js +4 -1
  208. package/lib/FullscreenBox/locale/zh-TW.d.ts +4 -1
  209. package/lib/FullscreenBox/locale/zh-TW.js +4 -1
  210. package/lib/FullscreenBox/style/index.js +33 -11
  211. package/lib/Highlight/index.js +9 -2
  212. package/lib/Highlight/locale/en-US.d.ts +2 -0
  213. package/lib/Highlight/locale/en-US.js +3 -1
  214. package/lib/Highlight/locale/ja-JP.d.ts +2 -0
  215. package/lib/Highlight/locale/ja-JP.js +3 -1
  216. package/lib/Highlight/locale/zh-CN.d.ts +2 -0
  217. package/lib/Highlight/locale/zh-CN.js +3 -1
  218. package/lib/Highlight/locale/zh-TW.d.ts +2 -0
  219. package/lib/Highlight/locale/zh-TW.js +3 -1
  220. package/lib/LightFilter/index.d.ts +6 -2
  221. package/lib/LightFilter/index.js +25 -8
  222. package/lib/LightFilter/locale/en-US.d.ts +4 -0
  223. package/lib/LightFilter/locale/en-US.js +9 -0
  224. package/lib/LightFilter/locale/ja-JP.d.ts +4 -0
  225. package/lib/LightFilter/locale/ja-JP.js +9 -0
  226. package/lib/LightFilter/locale/zh-CN.d.ts +4 -0
  227. package/lib/LightFilter/locale/zh-CN.js +9 -0
  228. package/lib/LightFilter/locale/zh-TW.d.ts +4 -0
  229. package/lib/LightFilter/locale/zh-TW.js +9 -0
  230. package/lib/NavMenu/index.d.ts +5 -2
  231. package/lib/NavMenu/index.js +12 -3
  232. package/lib/NavMenu/locale/en-US.d.ts +4 -0
  233. package/lib/NavMenu/locale/en-US.js +9 -0
  234. package/lib/NavMenu/locale/ja-JP.d.ts +4 -0
  235. package/lib/NavMenu/locale/ja-JP.js +9 -0
  236. package/lib/NavMenu/locale/zh-CN.d.ts +4 -0
  237. package/lib/NavMenu/locale/zh-CN.js +9 -0
  238. package/lib/NavMenu/locale/zh-TW.d.ts +4 -0
  239. package/lib/NavMenu/locale/zh-TW.js +9 -0
  240. package/lib/Password/Content.d.ts +2 -0
  241. package/lib/Password/Content.js +11 -3
  242. package/lib/Password/index.d.ts +1 -0
  243. package/lib/Password/index.js +13 -5
  244. package/lib/Password/locale/en-US.d.ts +1 -0
  245. package/lib/Password/locale/en-US.js +2 -1
  246. package/lib/Password/locale/ja-JP.d.ts +1 -0
  247. package/lib/Password/locale/ja-JP.js +1 -0
  248. package/lib/Password/locale/zh-CN.d.ts +1 -0
  249. package/lib/Password/locale/zh-CN.js +1 -0
  250. package/lib/Password/locale/zh-TW.d.ts +1 -0
  251. package/lib/Password/locale/zh-TW.js +2 -1
  252. package/lib/SideTip/Dragger.js +1 -1
  253. package/lib/SideTip/index.js +28 -7
  254. package/lib/SideTip/locale/en-US.d.ts +4 -1
  255. package/lib/SideTip/locale/en-US.js +4 -1
  256. package/lib/SideTip/locale/ja-JP.d.ts +4 -1
  257. package/lib/SideTip/locale/ja-JP.js +4 -1
  258. package/lib/SideTip/locale/zh-CN.d.ts +4 -1
  259. package/lib/SideTip/locale/zh-CN.js +4 -1
  260. package/lib/SideTip/locale/zh-TW.d.ts +4 -1
  261. package/lib/SideTip/locale/zh-TW.js +4 -1
  262. package/lib/SideTip/style/index.js +9 -0
  263. package/lib/TagSelect/Group.js +5 -1
  264. package/lib/TagSelect/Item.js +1 -1
  265. package/lib/assets/logo/oceanbase_logo.svg +45 -29
  266. package/lib/assets/logo/oceanbase_logo_dark.svg +45 -29
  267. package/lib/assets/logo/oceanbase_watermark.svg +45 -31
  268. package/lib/locale/en-US.js +24 -18
  269. package/lib/locale/ja-JP.js +24 -18
  270. package/lib/locale/zh-CN.js +25 -19
  271. package/lib/locale/zh-TW.js +21 -15
  272. package/package.json +4 -4
@@ -1,11 +1,10 @@
1
1
  import React from 'react';
2
2
  import type { ButtonSize } from '@oceanbase/design/es/button';
3
- import type { BaseProps } from './Item';
4
3
  export interface GroupProps {
5
4
  prefixCls?: string;
6
5
  size?: number;
7
6
  dropDownPlacement?: 'topLeft' | 'topCenter' | 'topRight' | 'bottomLeft' | 'bottomCenter' | 'bottomRight';
8
- children: React.ReactElement<BaseProps> | React.ReactElement<BaseProps>[];
7
+ children: React.ReactNode;
9
8
  shouldVisible?: (key: string) => boolean;
10
9
  shouldDisabled?: (key: string) => boolean;
11
10
  enableLoading?: boolean;
@@ -5,8 +5,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
5
5
  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; }
6
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
7
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
9
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
8
11
  import React, { useContext } from 'react';
9
- import { Button, Dropdown, Menu, Space, Tooltip, Typography, ConfigProvider } from '@oceanbase/design';
12
+ import { Button, Dropdown, Drawer, Menu, Modal, Space, Tooltip, Typography, ConfigProvider } from '@oceanbase/design';
10
13
  import { EllipsisOutlined, LoadingOutlined } from '@oceanbase/icons';
11
14
  import { isBoolean, max, omit } from 'lodash';
12
15
  import useStyle from "./style";
@@ -34,10 +37,34 @@ var getOrder = function getOrder(_ref) {
34
37
  /**
35
38
  * 判断是否是 Action 组件(Action.Button 或 Action.Link)
36
39
  */
40
+ var getActionDisplayName = function getActionDisplayName(element) {
41
+ var _element$type;
42
+ return (_element$type = element.type) === null || _element$type === void 0 ? void 0 : _element$type.__DISPLAY_NAME;
43
+ };
37
44
  var isActionComponent = function isActionComponent(element) {
38
- var _element$type, _element$type2;
39
- // @ts-ignore
40
- return ((_element$type = element.type) === null || _element$type === void 0 ? void 0 : _element$type.__DISPLAY_NAME) === 'button' || ((_element$type2 = element.type) === null || _element$type2 === void 0 ? void 0 : _element$type2.__DISPLAY_NAME) === 'link';
45
+ var name = getActionDisplayName(element);
46
+ return name === 'button' || name === 'link';
47
+ };
48
+
49
+ /** 不向内部查找 Action:与操作列同级的 Modal/Drawer 等应整体忽略 */
50
+ var isOpaqueToActionSearch = function isOpaqueToActionSearch(element) {
51
+ var t = element.type;
52
+ return t === Modal || t === Drawer;
53
+ };
54
+ var REACT_HOOKS_IN_SOURCE = /\buse(?:State|Effect|Reducer|Ref|Context|Memo|Callback|LayoutEffect|ImperativeHandle|DeferredValue|SyncExternalStore|Insertion|Id)\b/;
55
+
56
+ /**
57
+ * 粗略判断函数组件是否可能使用 Hooks。含 Hooks 的不能在 Group 渲染阶段同步调用,需按「函数子树」整体参与折叠。
58
+ */
59
+ var isLikelyUsingReactHooks = function isLikelyUsingReactHooks(fn) {
60
+ return REACT_HOOKS_IN_SOURCE.test(Function.prototype.toString.call(fn));
61
+ };
62
+ var isClassComponent = function isClassComponent(type) {
63
+ if (typeof type !== 'function') {
64
+ return false;
65
+ }
66
+ var proto = type.prototype;
67
+ return !!(proto && (proto.isReactComponent || proto.render));
41
68
  };
42
69
 
43
70
  /**
@@ -50,6 +77,9 @@ var findActionComponent = function findActionComponent(element) {
50
77
  if (! /*#__PURE__*/React.isValidElement(element)) {
51
78
  return null;
52
79
  }
80
+ if (isOpaqueToActionSearch(element)) {
81
+ return null;
82
+ }
53
83
  if (isActionComponent(element)) {
54
84
  return {
55
85
  action: element,
@@ -61,12 +91,16 @@ var findActionComponent = function findActionComponent(element) {
61
91
  if (depth > 10) {
62
92
  return null;
63
93
  }
64
-
65
- // 如果有 children,递归查找
66
94
  var elementChildren = (_element$props = element.props) === null || _element$props === void 0 ? void 0 : _element$props.children;
67
- if (elementChildren) {
68
- var child = React.Children.only(elementChildren);
69
- if ( /*#__PURE__*/React.isValidElement(child)) {
95
+ if (elementChildren == null) {
96
+ return null;
97
+ }
98
+ var childArray = React.Children.toArray(elementChildren).filter(React.isValidElement);
99
+ var _iterator = _createForOfIteratorHelper(childArray),
100
+ _step;
101
+ try {
102
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
103
+ var child = _step.value;
70
104
  var result = findActionComponent(child, depth + 1);
71
105
  if (result) {
72
106
  return {
@@ -75,9 +109,81 @@ var findActionComponent = function findActionComponent(element) {
75
109
  };
76
110
  }
77
111
  }
112
+ } catch (err) {
113
+ _iterator.e(err);
114
+ } finally {
115
+ _iterator.f();
78
116
  }
79
117
  return null;
80
118
  };
119
+ /**
120
+ * 扁平化 Fragment,过滤 null / false。
121
+ * - Action(及可解析的外包)→ 操作位
122
+ * - 无 Hooks 的函数组件 → 同步求值后递归展开(如 () => <Action.Button />)
123
+ * - 含 Hooks 的函数组件 → 整体占 1 位
124
+ * - Modal / Drawer → 透传挂载,不占折叠位
125
+ */
126
+ var normalizeActionGroupPieces = function normalizeActionGroupPieces(node) {
127
+ var out = [];
128
+ React.Children.forEach(node, function (child) {
129
+ if (child == null || typeof child === 'boolean') {
130
+ return;
131
+ }
132
+ if (! /*#__PURE__*/React.isValidElement(child)) {
133
+ return;
134
+ }
135
+ if (child.type === React.Fragment) {
136
+ normalizeActionGroupPieces(child.props.children).forEach(function (p) {
137
+ return out.push(p);
138
+ });
139
+ return;
140
+ }
141
+ if (findActionComponent(child)) {
142
+ out.push({
143
+ kind: 'action',
144
+ el: child
145
+ });
146
+ return;
147
+ }
148
+ if (isOpaqueToActionSearch(child)) {
149
+ out.push({
150
+ kind: 'passthrough',
151
+ el: child
152
+ });
153
+ return;
154
+ }
155
+ var t = child.type;
156
+ if (typeof t === 'function' && !isClassComponent(t)) {
157
+ if (isLikelyUsingReactHooks(t)) {
158
+ out.push({
159
+ kind: 'function-child',
160
+ el: child
161
+ });
162
+ return;
163
+ }
164
+ try {
165
+ var rendered = t(child.props);
166
+ if (rendered == null) {
167
+ return;
168
+ }
169
+ normalizeActionGroupPieces(rendered).forEach(function (p) {
170
+ return out.push(p);
171
+ });
172
+ } catch (_unused) {
173
+ out.push({
174
+ kind: 'function-child',
175
+ el: child
176
+ });
177
+ }
178
+ return;
179
+ }
180
+ out.push({
181
+ kind: 'function-child',
182
+ el: child
183
+ });
184
+ });
185
+ return out;
186
+ };
81
187
 
82
188
  /**
83
189
  * 递归克隆元素树,将 newProps 应用到最内层的 Action 组件
@@ -140,35 +246,79 @@ export default (function (_ref2) {
140
246
  var prefixCls = getPrefixCls('action', customizePrefixCls);
141
247
  var _useStyle = useStyle(prefixCls),
142
248
  wrapSSR = _useStyle.wrapSSR;
143
- var visibleActions = Array.isArray(children) ? children.filter(function (c) {
144
- if (isBoolean(c.props.visible) && shouldVisible) return c.props.visible && shouldVisible(c.key);
145
- if (isBoolean(c.props.visible)) return c.props.visible;else if (shouldVisible) return shouldVisible(c.key);
249
+ var childPieces = normalizeActionGroupPieces(children);
250
+ var passthroughChildren = childPieces.filter(function (p) {
251
+ return p.kind === 'passthrough';
252
+ }).map(function (p) {
253
+ return p.el;
254
+ });
255
+ var slotPieces = childPieces.filter(function (p) {
256
+ return p.kind === 'action' || p.kind === 'function-child';
257
+ });
258
+ var visibleSlots = slotPieces.filter(function (p) {
259
+ var _findActionComponent;
260
+ if (p.kind === 'function-child') {
261
+ return true;
262
+ }
263
+ var c = p.el;
264
+ var inner = (_findActionComponent = findActionComponent(c)) === null || _findActionComponent === void 0 ? void 0 : _findActionComponent.action;
265
+ if (!inner) {
266
+ return false;
267
+ }
268
+ var bp = inner.props;
269
+ if (isBoolean(bp.visible) && shouldVisible) {
270
+ return bp.visible && shouldVisible(c.key);
271
+ }
272
+ if (isBoolean(bp.visible)) {
273
+ return bp.visible;
274
+ }
275
+ if (shouldVisible) {
276
+ return shouldVisible(c.key);
277
+ }
146
278
  return true;
147
- }) : [children];
148
- var visibleActionsSort = visibleActions.slice(0);
149
- visibleActionsSort.sort(function (a, b) {
150
- var orderA = getOrder(a.props);
151
- var orderB = getOrder(b.props);
152
- return orderB - orderA;
153
279
  });
154
- var fixedSize = visibleActionsSort.filter(function (action) {
155
- return action.props.type === 'primary' || action.props.fixed;
280
+ var visibleSlotsWithOrder = visibleSlots.map(function (p, sourceIdx) {
281
+ var _findActionComponent$, _findActionComponent2;
282
+ return {
283
+ piece: p,
284
+ sourceIdx: sourceIdx,
285
+ sortOrder: p.kind === 'action' ? getOrder(((_findActionComponent$ = (_findActionComponent2 = findActionComponent(p.el)) === null || _findActionComponent2 === void 0 ? void 0 : _findActionComponent2.action) !== null && _findActionComponent$ !== void 0 ? _findActionComponent$ : p.el).props) : getOrder({
286
+ type: undefined,
287
+ fixed: false
288
+ })
289
+ };
290
+ });
291
+ visibleSlotsWithOrder.sort(function (a, b) {
292
+ var d = b.sortOrder - a.sortOrder;
293
+ if (d !== 0) {
294
+ return d;
295
+ }
296
+ return a.sourceIdx - b.sourceIdx;
297
+ });
298
+ var visibleOrderedSlots = visibleSlotsWithOrder.map(function (x) {
299
+ return x.piece;
300
+ });
301
+ var fixedSize = visibleOrderedSlots.filter(function (p) {
302
+ var _findActionComponent$2, _findActionComponent3;
303
+ if (p.kind !== 'action') {
304
+ return false;
305
+ }
306
+ var props = ((_findActionComponent$2 = (_findActionComponent3 = findActionComponent(p.el)) === null || _findActionComponent3 === void 0 ? void 0 : _findActionComponent3.action) !== null && _findActionComponent$2 !== void 0 ? _findActionComponent$2 : p.el).props;
307
+ return props.type === 'primary' || props.fixed;
156
308
  }).length;
157
309
  var realSize = max([fixedSize, size]);
158
- var mainActions = visibleActionsSort.slice(0, realSize);
159
- var ellipsisActions = visibleActionsSort.slice(realSize);
310
+ var mainSlots = visibleOrderedSlots.slice(0, realSize);
311
+ var ellipsisSlots = visibleOrderedSlots.slice(realSize);
160
312
  var ellipsisType = 'link';
161
-
162
- // @ts-ignore
163
- if (visibleActionsSort.some(function (action) {
164
- return action.type.__DISPLAY_NAME === 'button';
313
+ if (visibleOrderedSlots.some(function (p) {
314
+ var _findActionComponent$3, _findActionComponent4;
315
+ return p.kind === 'action' && getActionDisplayName((_findActionComponent$3 = (_findActionComponent4 = findActionComponent(p.el)) === null || _findActionComponent4 === void 0 ? void 0 : _findActionComponent4.action) !== null && _findActionComponent$3 !== void 0 ? _findActionComponent$3 : p.el) === 'button';
165
316
  })) {
166
317
  ellipsisType = 'button';
167
318
  }
168
-
169
- // @ts-ignore
170
- if (visibleActionsSort.some(function (action) {
171
- return action.type.__DISPLAY_NAME === 'link';
319
+ if (visibleOrderedSlots.some(function (p) {
320
+ var _findActionComponent$4, _findActionComponent5;
321
+ return p.kind === 'action' && getActionDisplayName((_findActionComponent$4 = (_findActionComponent5 = findActionComponent(p.el)) === null || _findActionComponent5 === void 0 ? void 0 : _findActionComponent5.action) !== null && _findActionComponent$4 !== void 0 ? _findActionComponent$4 : p.el) === 'link';
172
322
  })) {
173
323
  ellipsisType = 'link';
174
324
  }
@@ -197,68 +347,81 @@ export default (function (_ref2) {
197
347
  })
198
348
  });
199
349
  }
200
- return wrapSSR( /*#__PURE__*/_jsxs(Space, {
201
- size: ellipsisType === 'button' ? 8 : 16,
202
- children: [mainActions.map(function (action) {
203
- // 查找实际的 Action 组件(可能被 Popconfirm/Tooltip 等包裹)
204
- var actionResult = findActionComponent(action);
205
- var actualAction = (actionResult === null || actionResult === void 0 ? void 0 : actionResult.action) || action;
206
- var actualActionProps = actualAction.props;
207
- var newProps = {
208
- key: action.key,
209
- // size should be covered by action props
210
- size: buttonSize,
211
- enableLoading: enableLoading,
212
- disabled: isBoolean(actualActionProps.disabled) ? actualActionProps.disabled : getDefaultDisabled(action.key)
213
- };
214
-
215
- // 统一使用 cloneWithActionProps,无论是否有包裹都能正确处理
216
- return cloneWithActionProps(action, newProps);
217
- }), ellipsisActions.length > 0 && /*#__PURE__*/_jsx(Dropdown, {
218
- placement: dropDownPlacement,
219
- overlay: /*#__PURE__*/_jsx(Menu, {
220
- className: "".concat(prefixCls, "-more-menu"),
221
- children: ellipsisActions.map(function (action, index) {
350
+ return wrapSSR( /*#__PURE__*/_jsxs(_Fragment, {
351
+ children: [/*#__PURE__*/_jsxs(Space, {
352
+ size: ellipsisType === 'button' ? 8 : 16,
353
+ children: [mainSlots.map(function (slot, slotIndex) {
354
+ if (slot.kind === 'function-child') {
222
355
  var _ref3;
223
- var actionKey = action.key;
224
- // 查找实际的 Action 组件以获取 props
225
- var actionResult = findActionComponent(action);
226
- var actualAction = (actionResult === null || actionResult === void 0 ? void 0 : actionResult.action) || action;
227
- var actionProps = actualAction.props;
228
-
229
- // 当用户传入loading 或者 传入 disabled 的情况都要禁用按钮
230
- var actionDisabled = actionProps.loading || (isBoolean(actionProps.disabled) ? actionProps.disabled : getDefaultDisabled(action.key));
231
-
232
- // 提取需要传递给 Menu.Item 的 props(排除 danger,单独处理)
233
- var menuItemProps = omit(actionProps, ['disabled', 'loading', 'tooltip', 'visible', 'fixed', 'enableLoading', 'onClick', 'children', 'danger']);
234
-
235
- // 处理 onClick:如果 action 被 Popconfirm 包裹,Menu.Item onClick 不应该直接触发 action 的 onClick
236
- // 而是让 Popconfirm 来处理。如果没有 Popconfirm,则正常触发。
237
- var handleMenuItemClick = function handleMenuItemClick(info) {
238
- var _actionProps$onClick;
239
- // 如果 action 被包裹(可能是 Popconfirm 或其他组件),不直接触发 onClick
240
- // 让包裹组件来处理交互
241
- if (actionResult !== null && actionResult !== void 0 && actionResult.hasWrapper) {
242
- // 包裹组件会处理点击,这里不需要做任何事
243
- // 注意:Menu.Item 的点击会关闭下拉菜单,但 Popconfirm 应该能够正常显示
244
- return;
356
+ return /*#__PURE__*/_jsx(React.Fragment, {
357
+ children: slot.el
358
+ }, (_ref3 = slot.el.key) !== null && _ref3 !== void 0 ? _ref3 : "fn-main-".concat(slotIndex));
359
+ }
360
+ var action = slot.el;
361
+ var actionResult = findActionComponent(action);
362
+ var actualAction = (actionResult === null || actionResult === void 0 ? void 0 : actionResult.action) || action;
363
+ var actualActionProps = actualAction.props;
364
+ var newProps = {
365
+ key: action.key,
366
+ size: buttonSize,
367
+ enableLoading: enableLoading,
368
+ disabled: isBoolean(actualActionProps.disabled) ? actualActionProps.disabled : getDefaultDisabled(action.key)
369
+ };
370
+ return cloneWithActionProps(action, newProps);
371
+ }), ellipsisSlots.length > 0 && /*#__PURE__*/_jsx(Dropdown, {
372
+ placement: dropDownPlacement,
373
+ overlay: /*#__PURE__*/_jsx(Menu, {
374
+ className: "".concat(prefixCls, "-more-menu"),
375
+ children: ellipsisSlots.map(function (slot, index) {
376
+ var _ref5;
377
+ if (slot.kind === 'function-child') {
378
+ var _ref4;
379
+ var fcKey = (_ref4 = slot.el.key) !== null && _ref4 !== void 0 ? _ref4 : "fn-".concat(index);
380
+ return /*#__PURE__*/_jsx(Menu.Item, {
381
+ className: "".concat(prefixCls, "-more-menu-fn"),
382
+ style: {
383
+ height: 'auto',
384
+ lineHeight: 'normal',
385
+ paddingBlock: 4
386
+ },
387
+ children: /*#__PURE__*/React.cloneElement(slot.el, {
388
+ key: fcKey
389
+ })
390
+ }, fcKey);
245
391
  }
246
- // 如果没有包裹,正常触发 onClick
247
- (_actionProps$onClick = actionProps.onClick) === null || _actionProps$onClick === void 0 || _actionProps$onClick.call(actionProps, info.domEvent);
248
- };
249
- return /*#__PURE__*/_jsxs(_Fragment, {
250
- children: [/*#__PURE__*/_jsx(Menu.Item, _objectSpread(_objectSpread({
251
- // @ts-ignore
252
- onClick: handleMenuItemClick,
253
- disabled: actionDisabled,
254
- danger: !!actionProps.danger
255
- }, menuItemProps), {}, {
256
- children: renderMenuItemContent(action, actionProps, enableLoading)
257
- }), (_ref3 = actionKey) !== null && _ref3 !== void 0 ? _ref3 : index.toString()), actionProps.divider && /*#__PURE__*/_jsx(Menu.Divider, {})]
258
- });
259
- })
260
- }),
261
- children: moreDom
392
+ var action = slot.el;
393
+ var actionKey = action.key;
394
+ var actionResult = findActionComponent(action);
395
+ var actualAction = (actionResult === null || actionResult === void 0 ? void 0 : actionResult.action) || action;
396
+ var actionProps = actualAction.props;
397
+ var actionDisabled = actionProps.loading || (isBoolean(actionProps.disabled) ? actionProps.disabled : getDefaultDisabled(action.key));
398
+ var menuItemProps = omit(actionProps, ['disabled', 'loading', 'tooltip', 'visible', 'fixed', 'enableLoading', 'onClick', 'children', 'danger']);
399
+ var handleMenuItemClick = function handleMenuItemClick(info) {
400
+ var _actionProps$onClick;
401
+ if (actionResult !== null && actionResult !== void 0 && actionResult.hasWrapper) {
402
+ return;
403
+ }
404
+ (_actionProps$onClick = actionProps.onClick) === null || _actionProps$onClick === void 0 || _actionProps$onClick.call(actionProps, info.domEvent);
405
+ };
406
+ return /*#__PURE__*/_jsxs(_Fragment, {
407
+ children: [/*#__PURE__*/_jsx(Menu.Item, _objectSpread(_objectSpread({
408
+ // @ts-ignore
409
+ onClick: handleMenuItemClick,
410
+ disabled: actionDisabled,
411
+ danger: !!actionProps.danger
412
+ }, menuItemProps), {}, {
413
+ children: renderMenuItemContent(action, actionProps, enableLoading)
414
+ }), (_ref5 = actionKey) !== null && _ref5 !== void 0 ? _ref5 : index.toString()), actionProps.divider && /*#__PURE__*/_jsx(Menu.Divider, {})]
415
+ });
416
+ })
417
+ }),
418
+ children: moreDom
419
+ })]
420
+ }), passthroughChildren.map(function (el, index) {
421
+ var _ref6;
422
+ return /*#__PURE__*/React.cloneElement(el, {
423
+ key: (_ref6 = el.key) !== null && _ref6 !== void 0 ? _ref6 : "action-group-extra-".concat(index)
424
+ });
262
425
  })]
263
426
  }));
264
427
  });
@@ -45,6 +45,8 @@ export interface BackgroundTaskManagerRef {
45
45
  interface IProps {
46
46
  rollingFrequency?: number;
47
47
  prefix: Namespace;
48
+ /** 后台任务队列变化时供读屏器播报的文案模板,`{count}` 为任务数 */
49
+ taskStatusTemplate?: string;
48
50
  }
49
51
  declare const _default: React.ForwardRefExoticComponent<IProps & React.RefAttributes<BackgroundTaskManagerRef>>;
50
52
  export default _default;
@@ -19,6 +19,7 @@ import { RefreshMan } from "./RefreshMan";
19
19
  // antd Notification组件支持的api种类
20
20
  import { jsx as _jsx } from "react/jsx-runtime";
21
21
  import { Fragment as _Fragment } from "react/jsx-runtime";
22
+ import { jsxs as _jsxs } from "react/jsx-runtime";
22
23
  export var NotificationApi = /*#__PURE__*/function (NotificationApi) {
23
24
  NotificationApi["success"] = "success";
24
25
  NotificationApi["error"] = "error";
@@ -31,10 +32,23 @@ export var BackgroundTaskManagerConstants = {
31
32
  REFRESH_FREQUENCY: REFRESH_FREQUENCY,
32
33
  NotificationApi: NotificationApi
33
34
  };
35
+ var visuallyHiddenStyle = {
36
+ position: 'absolute',
37
+ width: 1,
38
+ height: 1,
39
+ padding: 0,
40
+ margin: -1,
41
+ overflow: 'hidden',
42
+ clip: 'rect(0, 0, 0, 0)',
43
+ whiteSpace: 'nowrap',
44
+ border: 0
45
+ };
34
46
  export default /*#__PURE__*/forwardRef(function (props, ref) {
35
47
  var _props$rollingFrequen = props.rollingFrequency,
36
48
  rollingFrequency = _props$rollingFrequen === void 0 ? REFRESH_FREQUENCY.EXTREMELY : _props$rollingFrequen,
37
- prefix = props.prefix;
49
+ prefix = props.prefix,
50
+ _props$taskStatusTemp = props.taskStatusTemplate,
51
+ taskStatusTemplate = _props$taskStatusTemp === void 0 ? '{count} background tasks in progress' : _props$taskStatusTemp;
38
52
  // 任务管理器的任务队列
39
53
  var _useState = useState({}),
40
54
  _useState2 = _slicedToArray(_useState, 2),
@@ -155,10 +169,17 @@ export default /*#__PURE__*/forwardRef(function (props, ref) {
155
169
  window.removeEventListener('beforeunload', onUnload);
156
170
  };
157
171
  }, [queue, preset]);
158
- return /*#__PURE__*/_jsx(_Fragment, {
159
- children: !!taskQueue.length && /*#__PURE__*/_jsx(RefreshMan, {
172
+ var statusMessage = taskQueue.length > 0 ? taskStatusTemplate.replace('{count}', String(taskQueue.length)) : '';
173
+ return /*#__PURE__*/_jsxs(_Fragment, {
174
+ children: [/*#__PURE__*/_jsx("div", {
175
+ role: "status",
176
+ "aria-live": "polite",
177
+ "aria-atomic": "true",
178
+ style: visuallyHiddenStyle,
179
+ children: statusMessage
180
+ }), !!taskQueue.length && /*#__PURE__*/_jsx(RefreshMan, {
160
181
  run: run,
161
182
  rollingFrequency: rollingFrequency
162
- })
183
+ })]
163
184
  });
164
185
  });
@@ -12,12 +12,14 @@ export interface SiderHeaderProps {
12
12
  badgeProps?: BadgeProps;
13
13
  }
14
14
  export interface MenuItem {
15
- link: string;
15
+ link?: string;
16
16
  title: string;
17
17
  icon?: React.ReactNode;
18
18
  selectedIcon?: React.ReactNode;
19
19
  accessible?: boolean;
20
20
  divider?: boolean;
21
+ /** 与 antd Menu 一致,设为 'group' 时渲染为分组标题,children 为该组下的菜单项 */
22
+ type?: 'group';
21
23
  children?: MenuItem[];
22
24
  }
23
25
  export interface BasicLayoutProps extends LocaleWrapperProps {