@zat-design/sisyphus-react 4.0.19 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.css +1 -1
- package/dist/less.esm.css +1 -1
- package/es/ProForm/components/combination/Group/utils/index.d.ts +28 -28
- package/es/ProLayout/components/Layout/Header/index.js +143 -2
- package/es/ProLayout/components/Layout/Header/style/index.less +161 -12
- package/es/ProLayout/components/Layout/Menu/FoldMenu/index.js +3 -2
- package/es/ProLayout/components/Layout/Menu/FoldMenu/style/index.less +7 -5
- package/es/ProLayout/components/Layout/Menu/OpenMenu/index.js +1 -6
- package/es/ProLayout/components/Layout/Menu/OpenMenu/propsType.d.ts +0 -1
- package/es/ProLayout/components/Layout/Menu/OpenMenu/style/index.less +14 -37
- package/es/ProLayout/components/Layout/Menu/SideMenu/index.js +1 -2
- package/es/ProLayout/components/Layout/Menu/SideMenu/style/index.less +2 -3
- package/es/ProLayout/components/Layout/Menu/index.js +1 -3
- package/es/ProLayout/components/Layout/Menu/style/index.less +12 -22
- package/es/ProLayout/components/Layout/Notice/style/index.less +31 -33
- package/es/ProLayout/components/ProCollapse/style/index.less +2 -0
- package/es/ProLayout/components/ProFooter/index.js +1 -1
- package/es/ProLayout/components/ProHeader/style/index.less +2 -1
- package/es/ProLayout/components/TabsManager/components/TabsHeader.d.ts +12 -0
- package/es/ProLayout/components/TabsManager/components/TabsHeader.js +53 -0
- package/es/ProLayout/components/TabsManager/index.js +7 -24
- package/es/ProLayout/components/TabsManager/style/index.less +24 -8
- package/es/ProLayout/index.js +12 -8
- package/es/ProLayout/propTypes.d.ts +69 -10
- package/es/ProLayout/propTypes.js +5 -1
- package/es/ProLayout/style/index.less +70 -35
- package/es/ProStep/components/Step/index.js +2 -1
- package/es/ProStep/utils/index.js +2 -1
- package/es/assets/apps.svg +23 -0
- package/es/assets/header_bg.png +0 -0
- package/es/style/theme/antd.less +5 -0
- package/lib/ProForm/components/combination/Group/utils/index.d.ts +28 -28
- package/lib/ProLayout/components/Layout/Header/index.js +143 -2
- package/lib/ProLayout/components/Layout/Header/style/index.less +161 -12
- package/lib/ProLayout/components/Layout/Menu/FoldMenu/index.js +3 -2
- package/lib/ProLayout/components/Layout/Menu/FoldMenu/style/index.less +7 -5
- package/lib/ProLayout/components/Layout/Menu/OpenMenu/index.js +1 -6
- package/lib/ProLayout/components/Layout/Menu/OpenMenu/propsType.d.ts +0 -1
- package/lib/ProLayout/components/Layout/Menu/OpenMenu/style/index.less +14 -37
- package/lib/ProLayout/components/Layout/Menu/SideMenu/index.js +1 -2
- package/lib/ProLayout/components/Layout/Menu/SideMenu/style/index.less +2 -3
- package/lib/ProLayout/components/Layout/Menu/index.js +1 -3
- package/lib/ProLayout/components/Layout/Menu/style/index.less +12 -22
- package/lib/ProLayout/components/Layout/Notice/style/index.less +31 -33
- package/lib/ProLayout/components/ProCollapse/style/index.less +2 -0
- package/lib/ProLayout/components/ProFooter/index.js +1 -1
- package/lib/ProLayout/components/ProHeader/style/index.less +2 -1
- package/lib/ProLayout/components/TabsManager/components/TabsHeader.d.ts +12 -0
- package/lib/ProLayout/components/TabsManager/components/TabsHeader.js +58 -0
- package/lib/ProLayout/components/TabsManager/index.js +7 -24
- package/lib/ProLayout/components/TabsManager/style/index.less +24 -8
- package/lib/ProLayout/index.js +12 -8
- package/lib/ProLayout/propTypes.d.ts +69 -10
- package/lib/ProLayout/propTypes.js +5 -1
- package/lib/ProLayout/style/index.less +70 -35
- package/lib/ProStep/components/Step/index.js +2 -1
- package/lib/ProStep/utils/index.js +2 -1
- package/lib/assets/apps.svg +23 -0
- package/lib/assets/header_bg.png +0 -0
- package/lib/style/theme/antd.less +5 -0
- package/package.json +1 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
@import '../../../../../../style/variables.less';
|
|
2
2
|
|
|
3
3
|
.pro-layout-open-menu {
|
|
4
|
-
color: #fff;
|
|
5
4
|
|
|
6
5
|
.@{ant-prefix}-menu-root {
|
|
7
6
|
overflow-y: auto !important;
|
|
@@ -12,10 +11,6 @@
|
|
|
12
11
|
}
|
|
13
12
|
|
|
14
13
|
& > .@{ant-prefix}-menu-submenu {
|
|
15
|
-
.@{ant-prefix}-menu-sub {
|
|
16
|
-
background: #1a202d;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
14
|
& > .@{ant-prefix}-menu-sub > .@{ant-prefix}-menu-submenu > .@{ant-prefix}-menu-submenu-title,
|
|
20
15
|
& > .@{ant-prefix}-menu-item-only-child,
|
|
21
16
|
& > .@{ant-prefix}-menu-sub > .@{ant-prefix}-menu-item-only-child {
|
|
@@ -58,34 +53,16 @@
|
|
|
58
53
|
.@{ant-prefix}-menu-item,
|
|
59
54
|
.@{ant-prefix}-menu-submenu-title {
|
|
60
55
|
&:hover {
|
|
61
|
-
background:
|
|
62
|
-
|
|
63
|
-
h2 {
|
|
64
|
-
color: #fff;
|
|
65
|
-
}
|
|
56
|
+
background: transparent;
|
|
66
57
|
}
|
|
67
58
|
}
|
|
68
59
|
|
|
69
|
-
.@{ant-prefix}-menu.@{ant-prefix}-menu-dark {
|
|
70
|
-
overflow-x: hidden;
|
|
71
|
-
background: #1a202d;
|
|
72
|
-
|
|
73
|
-
.@{ant-prefix}-menu-item-only-child {
|
|
74
|
-
&:hover {
|
|
75
|
-
background: var(--ant-primary-8, #003eb3);
|
|
76
|
-
|
|
77
|
-
h2 {
|
|
78
|
-
color: #fff;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
60
|
|
|
84
61
|
.@{ant-prefix}-menu-item-selected {
|
|
85
|
-
background:
|
|
62
|
+
background: transparent !important;
|
|
86
63
|
|
|
87
64
|
h2 {
|
|
88
|
-
color: #
|
|
65
|
+
color: var(--zaui-brand, #006aff) !important;
|
|
89
66
|
}
|
|
90
67
|
}
|
|
91
68
|
|
|
@@ -109,7 +86,7 @@
|
|
|
109
86
|
flex: 0 0 20px;
|
|
110
87
|
width: 20px;
|
|
111
88
|
height: 20px;
|
|
112
|
-
color: #
|
|
89
|
+
color: var(--zaui-text, #343434);
|
|
113
90
|
}
|
|
114
91
|
|
|
115
92
|
h2 {
|
|
@@ -117,7 +94,7 @@
|
|
|
117
94
|
flex-grow: 1;
|
|
118
95
|
margin-bottom: 0;
|
|
119
96
|
padding-left: 12px;
|
|
120
|
-
color: #
|
|
97
|
+
color: var(--zaui-text, #343434);
|
|
121
98
|
font-weight: 400;
|
|
122
99
|
font-size: var(--zaui-font-size-md, 14px);
|
|
123
100
|
opacity: 1;
|
|
@@ -128,26 +105,26 @@
|
|
|
128
105
|
|
|
129
106
|
.anticon-caret-down {
|
|
130
107
|
top: auto;
|
|
131
|
-
color: #
|
|
108
|
+
color: #999;
|
|
132
109
|
transform: rotateZ(0deg);
|
|
133
110
|
transition: all 0.1s ease-in;
|
|
134
111
|
}
|
|
135
112
|
|
|
136
113
|
.@{ant-prefix}-menu-submenu-open {
|
|
137
114
|
.anticon-caret-down {
|
|
138
|
-
color: #
|
|
115
|
+
color: var(--zaui-text, #343434);
|
|
139
116
|
transform: rotateZ(180deg);
|
|
140
117
|
}
|
|
141
118
|
|
|
142
119
|
.@{ant-prefix}-menu-submenu-inline {
|
|
143
120
|
.anticon-caret-down {
|
|
144
|
-
color: #
|
|
121
|
+
color: #999;
|
|
145
122
|
transform: rotateZ(0deg);
|
|
146
123
|
}
|
|
147
124
|
|
|
148
125
|
&.@{ant-prefix}-menu-submenu-open {
|
|
149
126
|
.anticon-caret-down {
|
|
150
|
-
color: #
|
|
127
|
+
color: var(--zaui-text, #343434);
|
|
151
128
|
transform: rotateZ(180deg);
|
|
152
129
|
}
|
|
153
130
|
}
|
|
@@ -157,7 +134,7 @@
|
|
|
157
134
|
.@{ant-prefix}-menu-submenu:hover
|
|
158
135
|
> .@{ant-prefix}-menu-submenu-title
|
|
159
136
|
> .@{ant-prefix}-menu-submenu-expand-icon {
|
|
160
|
-
color: #
|
|
137
|
+
color: var(--zaui-text, #343434);
|
|
161
138
|
}
|
|
162
139
|
|
|
163
140
|
.@{ant-prefix}-menu-item-selected{
|
|
@@ -172,22 +149,22 @@
|
|
|
172
149
|
& > .@{ant-prefix}-menu-submenu-title {
|
|
173
150
|
.@{ant-prefix}-menu-title-content div {
|
|
174
151
|
.pro-layout-icon {
|
|
175
|
-
color: #
|
|
152
|
+
color: var(--zaui-brand, #006aff);
|
|
176
153
|
}
|
|
177
154
|
|
|
178
155
|
h2 {
|
|
179
|
-
color: #
|
|
156
|
+
color: var(--zaui-brand, #006aff);
|
|
180
157
|
}
|
|
181
158
|
}
|
|
182
159
|
}
|
|
183
160
|
|
|
184
161
|
.@{ant-prefix}-menu-item-only-child .@{ant-prefix}-menu-title-content div {
|
|
185
162
|
.pro-layout-icon {
|
|
186
|
-
color: #
|
|
163
|
+
color: var(--zaui-text, #343434);
|
|
187
164
|
}
|
|
188
165
|
|
|
189
166
|
h2 {
|
|
190
|
-
color: #
|
|
167
|
+
color: var(--zaui-text, #343434);
|
|
191
168
|
font-weight: 400;
|
|
192
169
|
}
|
|
193
170
|
}
|
|
@@ -25,7 +25,6 @@ var SideMenu = props => {
|
|
|
25
25
|
}), /*#__PURE__*/_jsx("div", {
|
|
26
26
|
children: /*#__PURE__*/_jsx(OpenMenu, {
|
|
27
27
|
className: "pro-layout-sider-menu-list",
|
|
28
|
-
theme: "light",
|
|
29
28
|
onMenuClick: onMenuClick,
|
|
30
29
|
dataSource: {
|
|
31
30
|
menus: (menus === null || menus === void 0 ? void 0 : menus.children) || [],
|
|
@@ -33,7 +32,7 @@ var SideMenu = props => {
|
|
|
33
32
|
sideMenu: true
|
|
34
33
|
},
|
|
35
34
|
style: {
|
|
36
|
-
height: `calc(100vh - ${headerHeight + (notice ? 32 : 0) + ((size === null || size === void 0 ? void 0 : size.height) || 0)}px)`
|
|
35
|
+
height: `calc(100vh - ${headerHeight + (notice ? 32 : 0) + ((size === null || size === void 0 ? void 0 : size.height) || 0) + 12}px)`
|
|
37
36
|
}
|
|
38
37
|
})
|
|
39
38
|
})]
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
.pro-layout-sider-menu {
|
|
4
4
|
width: 220px;
|
|
5
5
|
background: #fff;
|
|
6
|
+
border-radius: 8px;
|
|
6
7
|
|
|
7
8
|
h2 {
|
|
8
9
|
margin-bottom: 0;
|
|
9
10
|
padding: 16px 16px 8px;
|
|
10
11
|
color: var(--zaui-text, #343434);
|
|
11
|
-
color: var(--zaui-text);
|
|
12
12
|
font-weight: 500;
|
|
13
13
|
font-size: var(--zaui-font-size-lg, 16px);
|
|
14
14
|
line-height: inherit;
|
|
@@ -80,8 +80,7 @@
|
|
|
80
80
|
|
|
81
81
|
.@{ant-prefix}-menu-submenu-title:hover,
|
|
82
82
|
.@{ant-prefix}-menu-item:hover {
|
|
83
|
-
color:
|
|
84
|
-
background-color: #f2f2f2;
|
|
83
|
+
background-color: transparent;
|
|
85
84
|
}
|
|
86
85
|
|
|
87
86
|
.@{ant-prefix}-menu-item {
|
|
@@ -13,7 +13,6 @@ var Menu = props => {
|
|
|
13
13
|
notice = _ref.notice,
|
|
14
14
|
onToggle = _ref.onToggle,
|
|
15
15
|
pure = _ref.pure,
|
|
16
|
-
theme = _ref.theme,
|
|
17
16
|
sideMenuFooterRender = _ref.sideMenuFooterRender,
|
|
18
17
|
sideMenuHeaderRender = _ref.sideMenuHeaderRender,
|
|
19
18
|
onMenuClick = _ref.onMenuClick;
|
|
@@ -33,7 +32,7 @@ var Menu = props => {
|
|
|
33
32
|
return /*#__PURE__*/_jsxs("div", {
|
|
34
33
|
className: menuCls,
|
|
35
34
|
style: {
|
|
36
|
-
top: notice ?
|
|
35
|
+
top: notice ? 96 + headerHeight - 64 : headerHeight
|
|
37
36
|
},
|
|
38
37
|
children: [sideMenuHeaderRender, /*#__PURE__*/_jsx(OpenMenu, {
|
|
39
38
|
dataSource: {
|
|
@@ -41,7 +40,6 @@ var Menu = props => {
|
|
|
41
40
|
iconfontUrl,
|
|
42
41
|
height: headerHeight + (notice ? 32 : 0) + 48
|
|
43
42
|
},
|
|
44
|
-
theme: theme,
|
|
45
43
|
onMenuClick: onMenuClick,
|
|
46
44
|
style: {
|
|
47
45
|
display: collapsed ? 'block' : 'none'
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/** 侧边栏 + 内容区 */
|
|
6
6
|
.pro-layout-row {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex: 1;
|
|
7
9
|
flex-direction: column;
|
|
8
10
|
|
|
9
11
|
.pro-layout-menu-open {
|
|
@@ -61,52 +63,40 @@
|
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
65
|
|
|
64
|
-
&.pro-layout-has-notice {
|
|
66
|
+
&.pro-layout-row-has-notice {
|
|
65
67
|
.pro-layout-menu {
|
|
66
|
-
top:
|
|
68
|
+
top: 96px;
|
|
67
69
|
|
|
68
70
|
#nav-list {
|
|
69
|
-
height: calc(100vh -
|
|
71
|
+
height: calc(100vh - 144px);
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
.pro-layout-content {
|
|
74
|
-
|
|
75
|
-
margin-top: 80px;
|
|
76
|
+
margin-top: 96px;
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
79
|
|
|
79
80
|
.pro-layout-menu {
|
|
80
81
|
position: fixed;
|
|
81
|
-
top:
|
|
82
|
+
top: 64px;
|
|
82
83
|
left: 0;
|
|
83
|
-
z-index:
|
|
84
|
+
z-index: 50;
|
|
84
85
|
width: 48px;
|
|
85
86
|
height: 100vh;
|
|
86
87
|
min-height: 100%;
|
|
87
88
|
padding: 0;
|
|
88
89
|
overflow-x: hidden;
|
|
89
90
|
overflow-y: auto;
|
|
90
|
-
background-color: #
|
|
91
|
+
background-color: #F7F9FD;
|
|
91
92
|
transition: background 0.3s, width 0.3s cubic-bezier(0.2, 0, 0, 1) 0s;
|
|
92
93
|
|
|
93
94
|
&.pro-layout-menu-open {
|
|
94
95
|
width: 220px;
|
|
96
|
+
background-color: #F7F9FD;
|
|
95
97
|
}
|
|
96
98
|
}
|
|
97
99
|
|
|
98
|
-
/** 内容区 */
|
|
99
|
-
.pro-layout-content {
|
|
100
|
-
z-index: 1;
|
|
101
|
-
flex: auto;
|
|
102
|
-
flex: auto;
|
|
103
|
-
min-height: calc(100vh - 48px);
|
|
104
|
-
margin-top: 48px;
|
|
105
|
-
margin-left: 48px;
|
|
106
|
-
padding: 0 var(--zaui-space-size-md, 16px);
|
|
107
|
-
transition: all 0.3s ease-in-out;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
100
|
.pro-layout-menu.pro-layout-menu-open .pro-layout-menu-collapsed {
|
|
111
101
|
left: 0;
|
|
112
102
|
width: 220px;
|
|
@@ -126,12 +116,12 @@
|
|
|
126
116
|
justify-content: center;
|
|
127
117
|
width: 48px;
|
|
128
118
|
height: 48px;
|
|
129
|
-
background: #
|
|
119
|
+
background: #F7F9FD;
|
|
130
120
|
transition: all 0.3s ease;
|
|
131
121
|
}
|
|
132
122
|
|
|
133
123
|
.pro-layout-menu .pro-layout-menu-collapsed:hover {
|
|
134
|
-
background-color: rgba(
|
|
124
|
+
background-color: rgba(0, 106, 255, 0.08);
|
|
135
125
|
}
|
|
136
126
|
|
|
137
127
|
.pro-layout-menu .pro-layout-menu-collapsed img {
|
|
@@ -1,39 +1,37 @@
|
|
|
1
|
+
/** 告知区 */
|
|
2
|
+
.pro-layout-header-notice {
|
|
3
|
+
position: fixed;
|
|
4
|
+
top: 64px;
|
|
5
|
+
z-index: 6;
|
|
6
|
+
display: flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
width: 100%;
|
|
10
|
+
min-height: 32px;
|
|
11
|
+
color: var(--zaui-text, #343434);
|
|
12
|
+
line-height: 32px;
|
|
13
|
+
text-align: center;
|
|
14
|
+
background: transparent;
|
|
1
15
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
width : 100%;
|
|
11
|
-
min-height : 32px;
|
|
12
|
-
color : var(--zaui-text, #343434);
|
|
13
|
-
line-height : 32px;
|
|
14
|
-
text-align : center;
|
|
15
|
-
background : var(--ant-primary-1, #e6f4ff);
|
|
16
|
+
img {
|
|
17
|
+
width: 16px;
|
|
18
|
+
margin-right: var(--zaui-space-size-sm, 8px);
|
|
19
|
+
}
|
|
20
|
+
a {
|
|
21
|
+
color: var(--zaui-brand, #006aff);
|
|
22
|
+
text-decoration: none;
|
|
23
|
+
}
|
|
16
24
|
|
|
25
|
+
.pro-layout-header-notice-close {
|
|
26
|
+
position: absolute;
|
|
27
|
+
right: 0;
|
|
28
|
+
display: block;
|
|
29
|
+
padding: 0 var(--zaui-space-size-md, 16px);
|
|
30
|
+
cursor: pointer;
|
|
17
31
|
|
|
18
32
|
img {
|
|
19
|
-
width
|
|
20
|
-
margin-right:
|
|
21
|
-
}
|
|
22
|
-
a {
|
|
23
|
-
color: var(--zaui-brand, #006aff);
|
|
24
|
-
text-decoration: none;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.pro-layout-header-notice-close {
|
|
28
|
-
position: absolute;
|
|
29
|
-
right : 0;
|
|
30
|
-
display : block;
|
|
31
|
-
padding : 0 var(--zaui-space-size-md, 16px);
|
|
32
|
-
cursor : pointer;
|
|
33
|
-
|
|
34
|
-
img {
|
|
35
|
-
width : 12px;
|
|
36
|
-
margin-right: 0;
|
|
37
|
-
}
|
|
33
|
+
width: 12px;
|
|
34
|
+
margin-right: 0;
|
|
38
35
|
}
|
|
39
36
|
}
|
|
37
|
+
}
|
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
padding-top: var(--zaui-space-size-sm, 8px);
|
|
62
62
|
padding-bottom: 0;
|
|
63
63
|
background: var(--zaui-base-bg, #ffffff);
|
|
64
|
+
border: 1px solid #ebecee;
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
|
|
@@ -100,6 +101,7 @@
|
|
|
100
101
|
|
|
101
102
|
.pro-collapse-content {
|
|
102
103
|
padding: var(--zaui-space-size-md, 16px) !important;
|
|
104
|
+
border: none !important;
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
.pro-collapse-level2-collapse {
|
|
@@ -42,7 +42,7 @@ var ProFooter = props => {
|
|
|
42
42
|
className: cls,
|
|
43
43
|
style: _objectSpread({
|
|
44
44
|
zIndex,
|
|
45
|
-
width: `calc(100% - ${size === null || size === void 0 ? void 0 : size.width}px)`
|
|
45
|
+
width: `calc(100% - ${(size === null || size === void 0 ? void 0 : size.width) + 1}px)`
|
|
46
46
|
}, props.style),
|
|
47
47
|
children: /*#__PURE__*/_jsx(Space, {
|
|
48
48
|
children: children
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
.pro-header {
|
|
5
5
|
padding: 10px 0 0 0 !important;
|
|
6
6
|
background-color: var(--zaui-base-bg, #ffffff);
|
|
7
|
-
box-shadow:
|
|
7
|
+
box-shadow: 0px 3px 8px 1px rgba(0, 55, 93, 0.1);
|
|
8
8
|
|
|
9
9
|
&.pro-header-no-back.pro-header-has-describe {
|
|
10
10
|
.pro-header-top {
|
|
@@ -76,6 +76,7 @@
|
|
|
76
76
|
right: 0;
|
|
77
77
|
background: #fff;
|
|
78
78
|
letter-spacing: 2px;
|
|
79
|
+
height: 24px;
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TabsProps } from 'antd';
|
|
2
|
+
export interface TabsHeaderProps {
|
|
3
|
+
activeKey: string | undefined;
|
|
4
|
+
tabsItems: TabsProps['items'];
|
|
5
|
+
onTabChange: (activeKey: string) => void;
|
|
6
|
+
onTabEdit: (targetKey: string, action: 'add' | 'remove') => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 标签页头部:监听 window 滚动(实际滚动在 window/documentElement,非 body),
|
|
10
|
+
* 滚动时添加阴影类名;仅此组件随滚动重渲染,不带动父组件内容区。
|
|
11
|
+
*/
|
|
12
|
+
export declare function TabsHeader({ activeKey, tabsItems, onTabChange, onTabEdit }: TabsHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
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); }
|
|
4
|
+
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; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { useEffect, useState } from 'react';
|
|
8
|
+
import { Tabs } from 'antd';
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
/**
|
|
12
|
+
* 标签页头部:监听 window 滚动(实际滚动在 window/documentElement,非 body),
|
|
13
|
+
* 滚动时添加阴影类名;仅此组件随滚动重渲染,不带动父组件内容区。
|
|
14
|
+
*/
|
|
15
|
+
export function TabsHeader(_ref) {
|
|
16
|
+
var activeKey = _ref.activeKey,
|
|
17
|
+
tabsItems = _ref.tabsItems,
|
|
18
|
+
onTabChange = _ref.onTabChange,
|
|
19
|
+
onTabEdit = _ref.onTabEdit;
|
|
20
|
+
var _useState = useState(() => typeof window !== 'undefined' ? window.scrollY : 0),
|
|
21
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
22
|
+
windowScrollY = _useState2[0],
|
|
23
|
+
setWindowScrollY = _useState2[1];
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (typeof window === 'undefined') return;
|
|
26
|
+
var onScroll = () => setWindowScrollY(window.scrollY);
|
|
27
|
+
window.addEventListener('scroll', onScroll, {
|
|
28
|
+
passive: true
|
|
29
|
+
});
|
|
30
|
+
return () => window.removeEventListener('scroll', onScroll);
|
|
31
|
+
}, []);
|
|
32
|
+
var isScrolled = windowScrollY > 0;
|
|
33
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
34
|
+
className: "pro-layout-tabs-header",
|
|
35
|
+
children: [/*#__PURE__*/_jsx(Tabs, {
|
|
36
|
+
activeKey: activeKey,
|
|
37
|
+
onChange: onTabChange,
|
|
38
|
+
onEdit: onTabEdit,
|
|
39
|
+
type: "editable-card",
|
|
40
|
+
hideAdd: true,
|
|
41
|
+
items: tabsItems,
|
|
42
|
+
className: "pro-layout-tabs-antd",
|
|
43
|
+
classNames: {
|
|
44
|
+
popup: {
|
|
45
|
+
root: 'pro-layout-tabs-dropdown-menu'
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}), isScrolled && /*#__PURE__*/_jsx("div", {
|
|
49
|
+
className: "pro-layout-tabs-header-shadow",
|
|
50
|
+
"aria-hidden": true
|
|
51
|
+
})]
|
|
52
|
+
});
|
|
53
|
+
}
|
|
@@ -10,9 +10,9 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
10
10
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
11
11
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
12
12
|
import { useCallback, useMemo, forwardRef, useImperativeHandle, useState, useEffect } from 'react';
|
|
13
|
-
import { Tabs } from 'antd';
|
|
14
13
|
import { useTabsState } from "./hooks/useTabsState";
|
|
15
14
|
import { TabItemComponent } from "./components/TabItem";
|
|
15
|
+
import { TabsHeader } from "./components/TabsHeader";
|
|
16
16
|
import { TabsContext } from "./components/TabsContext";
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -127,28 +127,6 @@ var TabsManager = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
127
127
|
}));
|
|
128
128
|
}, [state.tabsList, state.activeKey, config === null || config === void 0 ? void 0 : config.menuItems, config === null || config === void 0 ? void 0 : config.tabMenuClick, switchTab, removeTab, closeOtherTabs, closeRightTabs, closeAllTabs]);
|
|
129
129
|
|
|
130
|
-
// 渲染标签页列表
|
|
131
|
-
var renderTabList = () => {
|
|
132
|
-
if (state.tabsList.length === 0) return null;
|
|
133
|
-
return /*#__PURE__*/_jsx("div", {
|
|
134
|
-
className: "pro-layout-tabs-header",
|
|
135
|
-
children: /*#__PURE__*/_jsx(Tabs, {
|
|
136
|
-
activeKey: state.activeKey || undefined,
|
|
137
|
-
onChange: handleTabChange,
|
|
138
|
-
onEdit: handleTabEdit,
|
|
139
|
-
type: "editable-card",
|
|
140
|
-
hideAdd: true,
|
|
141
|
-
items: tabsItems,
|
|
142
|
-
className: "pro-layout-tabs-antd",
|
|
143
|
-
classNames: {
|
|
144
|
-
popup: {
|
|
145
|
-
root: 'pro-layout-tabs-dropdown-menu'
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
})
|
|
149
|
-
});
|
|
150
|
-
};
|
|
151
|
-
|
|
152
130
|
// 从 config 中获取组件解析函数和空状态组件
|
|
153
131
|
var activeComponent = config === null || config === void 0 ? void 0 : config.activeComponent;
|
|
154
132
|
var emptyComponent = config === null || config === void 0 ? void 0 : config.empty;
|
|
@@ -202,7 +180,12 @@ var TabsManager = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
202
180
|
children: /*#__PURE__*/_jsxs("div", {
|
|
203
181
|
className: "pro-layout-tabs",
|
|
204
182
|
"data-testid": "tabs-manager",
|
|
205
|
-
children: [
|
|
183
|
+
children: [state.tabsList.length > 0 && /*#__PURE__*/_jsx(TabsHeader, {
|
|
184
|
+
activeKey: state.activeKey || undefined,
|
|
185
|
+
tabsItems: tabsItems,
|
|
186
|
+
onTabChange: handleTabChange,
|
|
187
|
+
onTabEdit: handleTabEdit
|
|
188
|
+
}), renderContent()]
|
|
206
189
|
})
|
|
207
190
|
});
|
|
208
191
|
});
|
|
@@ -15,9 +15,24 @@
|
|
|
15
15
|
padding: 12px 0;
|
|
16
16
|
border-bottom: none;
|
|
17
17
|
position: sticky;
|
|
18
|
-
top:
|
|
19
|
-
z-index:
|
|
20
|
-
background: #
|
|
18
|
+
top: 64px;
|
|
19
|
+
z-index: 90;
|
|
20
|
+
background: #fff;
|
|
21
|
+
box-shadow: none;
|
|
22
|
+
transition: box-shadow 0.3s ease;
|
|
23
|
+
|
|
24
|
+
&-shadow {
|
|
25
|
+
position: absolute;
|
|
26
|
+
left: 0;
|
|
27
|
+
right: 0;
|
|
28
|
+
bottom: 0;
|
|
29
|
+
height: 1px;
|
|
30
|
+
background: transparent;
|
|
31
|
+
pointer-events: none;
|
|
32
|
+
z-index: 1;
|
|
33
|
+
box-shadow: 1px 2px 4px 1px rgba(0, 55, 93, .2);
|
|
34
|
+
}
|
|
35
|
+
|
|
21
36
|
.pro-layout-tab-icon {
|
|
22
37
|
display: none !important;
|
|
23
38
|
}
|
|
@@ -79,6 +94,7 @@
|
|
|
79
94
|
// 覆盖 nav 样式,使其匹配 pro-layout-tabs-header
|
|
80
95
|
.@{ant-prefix}-tabs-nav {
|
|
81
96
|
margin: 0;
|
|
97
|
+
// padding: 0 var(--zaui-space-size-md, 16px);
|
|
82
98
|
padding: 0;
|
|
83
99
|
border-bottom: none;
|
|
84
100
|
|
|
@@ -121,7 +137,7 @@
|
|
|
121
137
|
padding: 0 !important;
|
|
122
138
|
margin: 0 !important;
|
|
123
139
|
background: transparent !important;
|
|
124
|
-
border: none
|
|
140
|
+
border: none ;
|
|
125
141
|
border-radius: 0 !important;
|
|
126
142
|
cursor: pointer;
|
|
127
143
|
transition: none; // 由内部 TabItemComponent 处理过渡
|
|
@@ -139,6 +155,7 @@
|
|
|
139
155
|
.pro-layout-tab-item {
|
|
140
156
|
width: 100%;
|
|
141
157
|
height: 100%;
|
|
158
|
+
border: 1px solid rgb(217, 217, 217);
|
|
142
159
|
}
|
|
143
160
|
}
|
|
144
161
|
|
|
@@ -146,6 +163,9 @@
|
|
|
146
163
|
.@{ant-prefix}-tabs-tab-active {
|
|
147
164
|
background: transparent !important;
|
|
148
165
|
border: none !important;
|
|
166
|
+
.pro-layout-tab-item{
|
|
167
|
+
border-color: transparent !important;
|
|
168
|
+
}
|
|
149
169
|
|
|
150
170
|
&::before {
|
|
151
171
|
display: none;
|
|
@@ -267,10 +287,6 @@
|
|
|
267
287
|
}
|
|
268
288
|
}
|
|
269
289
|
|
|
270
|
-
.pro-layout-dark .pro-layout-tabs {
|
|
271
|
-
--pro-layout-tabs-text-color: rgba(255, 255, 255, 0.85);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
290
|
.pro-layout-tabs-dropdown-menu{
|
|
275
291
|
.@{ant-prefix}-tabs-dropdown-menu-item-remove{
|
|
276
292
|
display: none !important;
|
package/es/ProLayout/index.js
CHANGED
|
@@ -23,6 +23,7 @@ import { useProLayoutTabs } from "./components/TabsManager/hooks/useProLayoutTab
|
|
|
23
23
|
import { useActiveTab } from "./components/TabsManager/hooks/useActiveTab";
|
|
24
24
|
import { transformMenus } from "./utils";
|
|
25
25
|
import { isLeafMenuItem } from "./components/TabsManager/utils";
|
|
26
|
+
import headerBg from "../assets/header_bg.png";
|
|
26
27
|
|
|
27
28
|
// 全局上下文
|
|
28
29
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -36,7 +37,7 @@ var ProLayout = props => {
|
|
|
36
37
|
_props$pure = props.pure,
|
|
37
38
|
pure = _props$pure === void 0 ? false : _props$pure,
|
|
38
39
|
_props$headerHeight = props.headerHeight,
|
|
39
|
-
headerHeight = _props$headerHeight === void 0 ?
|
|
40
|
+
headerHeight = _props$headerHeight === void 0 ? 64 : _props$headerHeight,
|
|
40
41
|
_props$contentStyle = props.contentStyle,
|
|
41
42
|
contentStyle = _props$contentStyle === void 0 ? {} : _props$contentStyle,
|
|
42
43
|
_props$waterMarkProps = props.waterMarkProps,
|
|
@@ -46,8 +47,6 @@ var ProLayout = props => {
|
|
|
46
47
|
dataSource = props.dataSource,
|
|
47
48
|
_props$pathPrefix = props.pathPrefix,
|
|
48
49
|
pathPrefix = _props$pathPrefix === void 0 ? '' : _props$pathPrefix,
|
|
49
|
-
_props$theme = props.theme,
|
|
50
|
-
theme = _props$theme === void 0 ? 'dark' : _props$theme,
|
|
51
50
|
target = props.target,
|
|
52
51
|
onCollapsedChange = props.onCollapsedChange,
|
|
53
52
|
_props$collapsed = props.collapsed,
|
|
@@ -59,6 +58,7 @@ var ProLayout = props => {
|
|
|
59
58
|
_props$title = props.title,
|
|
60
59
|
title = _props$title === void 0 ? '' : _props$title,
|
|
61
60
|
logo = props.logo,
|
|
61
|
+
appsOptions = props.appsOptions,
|
|
62
62
|
_props$iconfontUrl = props.iconfontUrl,
|
|
63
63
|
iconfontUrl = _props$iconfontUrl === void 0 ? '' : _props$iconfontUrl,
|
|
64
64
|
sideMenuFooterRender = props.sideMenuFooterRender,
|
|
@@ -199,7 +199,8 @@ var ProLayout = props => {
|
|
|
199
199
|
headerContentRender,
|
|
200
200
|
rightContentRender,
|
|
201
201
|
title,
|
|
202
|
-
logo
|
|
202
|
+
logo,
|
|
203
|
+
appsOptions
|
|
203
204
|
};
|
|
204
205
|
|
|
205
206
|
// 为Notice组件创建专门的props对象
|
|
@@ -223,18 +224,21 @@ var ProLayout = props => {
|
|
|
223
224
|
onCollapsedChange && onCollapsedChange(!collapsed);
|
|
224
225
|
},
|
|
225
226
|
pure,
|
|
226
|
-
theme,
|
|
227
227
|
sideMenuFooterRender,
|
|
228
228
|
sideMenuHeaderRender,
|
|
229
|
-
onMenuClick: handleMenuClick
|
|
229
|
+
onMenuClick: handleMenuClick,
|
|
230
|
+
appsOptions
|
|
230
231
|
};
|
|
231
232
|
var layoutDom = /*#__PURE__*/_jsxs("div", {
|
|
232
233
|
className: classNames({
|
|
233
234
|
'pro-layout': true,
|
|
234
|
-
'pro-layout-
|
|
235
|
-
'pro-layout-
|
|
235
|
+
'pro-layout-light': true,
|
|
236
|
+
'pro-layout-pure': typeof pure === 'boolean' ? pure : (pure === null || pure === void 0 ? void 0 : pure.topMenu) || (pure === null || pure === void 0 ? void 0 : pure.leftMenu),
|
|
236
237
|
[`${className}`]: className
|
|
237
238
|
}),
|
|
239
|
+
style: {
|
|
240
|
+
'--header-bg-image': `url(${headerBg})`
|
|
241
|
+
},
|
|
238
242
|
children: [/*#__PURE__*/_jsx(Header, _objectSpread({}, headerProps)), /*#__PURE__*/_jsx(Notice, _objectSpread({}, noticeProps)), /*#__PURE__*/_jsxs("div", {
|
|
239
243
|
className: contentCls,
|
|
240
244
|
children: [/*#__PURE__*/_jsx(Menu, _objectSpread({}, menuProps)), /*#__PURE__*/_jsx("div", {
|