@hsu-react/ui 2.1.0 → 2.2.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.
@@ -35,7 +35,10 @@
35
35
  margin: 0px;
36
36
 
37
37
  border: none;
38
- border-radius: 8px;
38
+ // 只圆上面两角:页签是「贴在内容区上沿」的,下沿要与内容区接平,
39
+ // 四角全圆会让它看起来像一颗浮在栏里的胶囊、和下方内容脱开。
40
+ // 与拖拽时的浮层(.dragOverlay)保持同一形状。
41
+ border-radius: 8px 8px 0 0;
39
42
  background: transparent;
40
43
 
41
44
  transition: background 0.2s;
@@ -166,7 +169,8 @@
166
169
  padding: 6px 16px;
167
170
 
168
171
  background: var(--vita-surface);
169
- border-radius: 6px 6px 0 0;
172
+ // 与页签同一形状(上圆下方、同一半径),拖起来才像是把那颗页签拎了起来
173
+ border-radius: 8px 8px 0 0;
170
174
  border: 1px solid var(--vita-border);
171
175
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
172
176
 
@@ -26,6 +26,13 @@ export type { RouteType, MetaType } from "./types";
26
26
  */
27
27
  export type { AccountAction, HeaderProps } from "./Header";
28
28
  export type { MenuType, MenuProps } from "./Menu";
29
+ /**
30
+ * 次级菜单的默认头部。`Menu` 在切到次级菜单时会自己渲染它,一般不用管;
31
+ * 需要在返回入口下面塞点东西(详情内检索框之类)时,把它的 `extra` 用起来、
32
+ * 整块作为 `secondaryHeader` 传给 `Menu`。
33
+ */
34
+ export { default as SecondaryHeader } from "./Menu/_components/SecondaryHeader";
35
+ export type { SecondaryHeaderProps } from "./Menu/_components/SecondaryHeader";
29
36
  export type { TabType, NavTabBarProps } from "./NavTabBar";
30
37
  export type { BreadcrumbType, BreadcrumbProps } from "./Breadcrumb";
31
38
  export type { InternationalizationProps } from "./I18n";
@@ -25,6 +25,12 @@ import ThemeStore from "./Theme/ThemeStore";
25
25
  * 目录结构变成公开契约。统一从这里出。
26
26
  */
27
27
 
28
+ /**
29
+ * 次级菜单的默认头部。`Menu` 在切到次级菜单时会自己渲染它,一般不用管;
30
+ * 需要在返回入口下面塞点东西(详情内检索框之类)时,把它的 `extra` 用起来、
31
+ * 整块作为 `secondaryHeader` 传给 `Menu`。
32
+ */
33
+ export { default as SecondaryHeader } from "./Menu/_components/SecondaryHeader";
28
34
  export { default as useSetTabTitle, NavTabBarTitleContent } from "./_hooks/useSetTabTitle";
29
35
  export { default as useReload, ReloadContent } from "./_hooks/useReload";
30
36
  export { default as useDropTab, NavTabBarContent } from "./_hooks/useDropTab";
@@ -35,7 +35,10 @@
35
35
  margin: 0px;
36
36
 
37
37
  border: none;
38
- border-radius: 8px;
38
+ // 只圆上面两角:页签是「贴在内容区上沿」的,下沿要与内容区接平,
39
+ // 四角全圆会让它看起来像一颗浮在栏里的胶囊、和下方内容脱开。
40
+ // 与拖拽时的浮层(.dragOverlay)保持同一形状。
41
+ border-radius: 8px 8px 0 0;
39
42
  background: transparent;
40
43
 
41
44
  transition: background 0.2s;
@@ -166,7 +169,8 @@
166
169
  padding: 6px 16px;
167
170
 
168
171
  background: var(--vita-surface);
169
- border-radius: 6px 6px 0 0;
172
+ // 与页签同一形状(上圆下方、同一半径),拖起来才像是把那颗页签拎了起来
173
+ border-radius: 8px 8px 0 0;
170
174
  border: 1px solid var(--vita-border);
171
175
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
172
176
 
@@ -26,6 +26,13 @@ export type { RouteType, MetaType } from "./types";
26
26
  */
27
27
  export type { AccountAction, HeaderProps } from "./Header";
28
28
  export type { MenuType, MenuProps } from "./Menu";
29
+ /**
30
+ * 次级菜单的默认头部。`Menu` 在切到次级菜单时会自己渲染它,一般不用管;
31
+ * 需要在返回入口下面塞点东西(详情内检索框之类)时,把它的 `extra` 用起来、
32
+ * 整块作为 `secondaryHeader` 传给 `Menu`。
33
+ */
34
+ export { default as SecondaryHeader } from "./Menu/_components/SecondaryHeader";
35
+ export type { SecondaryHeaderProps } from "./Menu/_components/SecondaryHeader";
29
36
  export type { TabType, NavTabBarProps } from "./NavTabBar";
30
37
  export type { BreadcrumbType, BreadcrumbProps } from "./Breadcrumb";
31
38
  export type { InternationalizationProps } from "./I18n";
@@ -21,6 +21,12 @@ Object.defineProperty(exports, "ReloadContent", {
21
21
  return _useReload.ReloadContent;
22
22
  }
23
23
  });
24
+ Object.defineProperty(exports, "SecondaryHeader", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _SecondaryHeader.default;
28
+ }
29
+ });
24
30
  exports.default = void 0;
25
31
  Object.defineProperty(exports, "useDropTab", {
26
32
  enumerable: true,
@@ -48,6 +54,7 @@ var _NavTabBar = _interopRequireDefault(require("./NavTabBar"));
48
54
  var _Theme = _interopRequireDefault(require("./Theme"));
49
55
  var _I18nStore = _interopRequireDefault(require("./I18n/I18nStore"));
50
56
  var _ThemeStore = _interopRequireDefault(require("./Theme/ThemeStore"));
57
+ var _SecondaryHeader = _interopRequireDefault(require("./Menu/_components/SecondaryHeader"));
51
58
  var _useSetTabTitle = _interopRequireWildcard(require("./_hooks/useSetTabTitle"));
52
59
  var _useReload = _interopRequireWildcard(require("./_hooks/useReload"));
53
60
  var _useDropTab = _interopRequireWildcard(require("./_hooks/useDropTab"));
@@ -73,6 +80,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
73
80
  * 目录结构变成公开契约。统一从这里出。
74
81
  */
75
82
 
83
+ /**
84
+ * 次级菜单的默认头部。`Menu` 在切到次级菜单时会自己渲染它,一般不用管;
85
+ * 需要在返回入口下面塞点东西(详情内检索框之类)时,把它的 `extra` 用起来、
86
+ * 整块作为 `secondaryHeader` 传给 `Menu`。
87
+ */
88
+
76
89
  /**
77
90
  * 显式标注这个命名空间的类型,而不是让 TS 去推断。
78
91
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hsu-react/ui",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
4
4
  "description": "一套基于 React + Ant Design 的中后台业务组件库",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -41,3 +41,33 @@ import Layout from "@hsu-react/ui/es/layout";
41
41
  | secondaryItemFilter | 次级菜单项的额外过滤,按 key(绝对路径)判断 | `(key: string) => boolean` | - |
42
42
 
43
43
  > 其余属性透传给 antd 的 [Menu](https://ant.design/components/menu-cn)。
44
+
45
+ ### 自定义次级菜单头部
46
+
47
+ 不传 `secondaryHeader` 时组件会渲染一个默认头部(返回入口 + 当前实体名)。要在它上面加东西
48
+ ——比如详情内检索框——不用整块重写,把 `SecondaryHeader` 拿出来用它的 `extra` 插槽:
49
+
50
+ ```tsx | pure
51
+ import Layout, { SecondaryHeader } from "@hsu-react/ui/es/layout";
52
+
53
+ <Layout.Menu
54
+ router={router}
55
+ secondaryHeader={
56
+ <SecondaryHeader
57
+ collapsed={collapsed}
58
+ theme="dark"
59
+ title={work.name}
60
+ extra={<SearchInWork workId={work.id} />}
61
+ />
62
+ }
63
+ />;
64
+ ```
65
+
66
+ | SecondaryHeader 属性 | 说明 | 类型 |
67
+ | --- | --- | --- |
68
+ | collapsed | 侧栏是否收起,收起时只剩箭头 | `boolean` |
69
+ | theme | 明暗,跟随侧栏 | `"light" \| "dark"` |
70
+ | backText | 返回入口文案 | `string` |
71
+ | onBack | 自定义返回行为,不给则退回上一页 | `() => void` |
72
+ | title | 当前实体名 | `string` |
73
+ | extra | 返回入口与标题之间的插槽 | `ReactNode` |
@@ -47,6 +47,8 @@ export default () => (
47
47
 
48
48
  ## 说明
49
49
 
50
+ 页签是「贴在内容区上沿」的形状:只圆上面两角,下沿与内容区接平(拖拽时的浮层同形)。
51
+
50
52
  页签由访问过的路由累积而来,文案取 `meta.name`、图标取 `meta.icon`。两个开关直接影响这里:
51
53
 
52
54
  - `meta.noTabsView` —— 该路由不进页签栏(它的子路由会顶上来)
@@ -35,7 +35,10 @@
35
35
  margin: 0px;
36
36
 
37
37
  border: none;
38
- border-radius: 8px;
38
+ // 只圆上面两角:页签是「贴在内容区上沿」的,下沿要与内容区接平,
39
+ // 四角全圆会让它看起来像一颗浮在栏里的胶囊、和下方内容脱开。
40
+ // 与拖拽时的浮层(.dragOverlay)保持同一形状。
41
+ border-radius: 8px 8px 0 0;
39
42
  background: transparent;
40
43
 
41
44
  transition: background 0.2s;
@@ -166,7 +169,8 @@
166
169
  padding: 6px 16px;
167
170
 
168
171
  background: var(--vita-surface);
169
- border-radius: 6px 6px 0 0;
172
+ // 与页签同一形状(上圆下方、同一半径),拖起来才像是把那颗页签拎了起来
173
+ border-radius: 8px 8px 0 0;
170
174
  border: 1px solid var(--vita-border);
171
175
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
172
176
 
@@ -29,6 +29,13 @@ export type { RouteType, MetaType } from "./types";
29
29
  */
30
30
  export type { AccountAction, HeaderProps } from "./Header";
31
31
  export type { MenuType, MenuProps } from "./Menu";
32
+ /**
33
+ * 次级菜单的默认头部。`Menu` 在切到次级菜单时会自己渲染它,一般不用管;
34
+ * 需要在返回入口下面塞点东西(详情内检索框之类)时,把它的 `extra` 用起来、
35
+ * 整块作为 `secondaryHeader` 传给 `Menu`。
36
+ */
37
+ export { default as SecondaryHeader } from "./Menu/_components/SecondaryHeader";
38
+ export type { SecondaryHeaderProps } from "./Menu/_components/SecondaryHeader";
32
39
  export type { TabType, NavTabBarProps } from "./NavTabBar";
33
40
  export type { BreadcrumbType, BreadcrumbProps } from "./Breadcrumb";
34
41
  export type { InternationalizationProps } from "./I18n";