@lemon-fe/components 0.0.21 → 0.0.23
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/es/BaseTable/index.less +0 -2
- package/es/MainFramework/components/DownBar/index.d.ts +10 -0
- package/es/MainFramework/components/DownBar/index.js +84 -0
- package/es/MainFramework/components/DownBar/index.less +108 -0
- package/es/MainFramework/components/Menu/index.less +2 -2
- package/es/MainFramework/components/TabBar/index.less +6 -6
- package/es/MainFramework/index.js +58 -3
- package/es/MainFramework/index.less +4 -2
- package/package.json +3 -3
package/es/BaseTable/index.less
CHANGED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
import { PREFIX_CLS as prefixCls } from '../../../constants';
|
|
6
|
+
import { Dropdown } from 'antd';
|
|
7
|
+
export default function DownBar(props) {
|
|
8
|
+
var tabs = props.tabs,
|
|
9
|
+
active = props.active,
|
|
10
|
+
_props$visible = props.visible,
|
|
11
|
+
visible = _props$visible === void 0 ? false : _props$visible,
|
|
12
|
+
_onClick = props.onClick,
|
|
13
|
+
onClose = props.onClose;
|
|
14
|
+
|
|
15
|
+
var handleClose = function handleClose(e, index) {
|
|
16
|
+
e.stopPropagation();
|
|
17
|
+
onClose(index);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
return /*#__PURE__*/React.createElement(Dropdown, {
|
|
21
|
+
overlayStyle: visible ? {
|
|
22
|
+
visibility: 'visible'
|
|
23
|
+
} : {
|
|
24
|
+
visibility: 'hidden'
|
|
25
|
+
},
|
|
26
|
+
placement: "bottomRight",
|
|
27
|
+
overlay: /*#__PURE__*/React.createElement("div", {
|
|
28
|
+
className: "".concat(prefixCls, "-down-tabs")
|
|
29
|
+
}, tabs.map(function (item, index) {
|
|
30
|
+
var key = item.title;
|
|
31
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
32
|
+
className: classNames("".concat(prefixCls, "-down-tab"), _defineProperty({}, "".concat(prefixCls, "-down-tab-active"), index === active)),
|
|
33
|
+
onClick: function onClick() {
|
|
34
|
+
return _onClick(index);
|
|
35
|
+
},
|
|
36
|
+
key: key
|
|
37
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
38
|
+
className: "".concat(prefixCls, "-down-tab-title")
|
|
39
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
40
|
+
className: "".concat(prefixCls, "-down-tab-inner")
|
|
41
|
+
}, item.title), item.closable !== false && /*#__PURE__*/React.createElement("div", {
|
|
42
|
+
className: "".concat(prefixCls, "-down-tab-close"),
|
|
43
|
+
onClick: function onClick(e) {
|
|
44
|
+
return handleClose(e, index);
|
|
45
|
+
}
|
|
46
|
+
}, /*#__PURE__*/React.createElement("svg", {
|
|
47
|
+
width: "20",
|
|
48
|
+
height: "20",
|
|
49
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
50
|
+
}, /*#__PURE__*/React.createElement("g", {
|
|
51
|
+
fill: "none",
|
|
52
|
+
fillRule: "evenodd"
|
|
53
|
+
}, /*#__PURE__*/React.createElement("g", {
|
|
54
|
+
fill: "currentColor"
|
|
55
|
+
}, /*#__PURE__*/React.createElement("g", {
|
|
56
|
+
fillRule: "nonzero"
|
|
57
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
58
|
+
d: "M7.74992318,2.75006802 L7.74992318,11.250068 C7.74992318,11.6642816 7.41413675,12.000068 6.99992318,12.000068 C6.58570962,12.000068 6.24992318,11.6642816 6.24992318,11.250068 L6.24992318,2.75006802 C6.24992318,2.33585446 6.58570962,2.00006802 6.99992318,2.00006802 C7.41413675,2.00006802 7.74992318,2.33585446 7.74992318,2.75006802 Z",
|
|
59
|
+
transform: "translate(-367.000000, -21.000000) translate(367.000000, 21.000000) translate(6.999923, 7.000068) rotate(45.000000) translate(-6.999923, -7.000068)"
|
|
60
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
61
|
+
d: "M7.74994595,2.75007682 L7.74994595,11.2500768 C7.74994595,11.6642904 7.41415952,12.0000768 6.99994595,12.0000768 C6.58573239,12.0000768 6.24994595,11.6642904 6.24994595,11.2500768 L6.24994595,2.75007682 C6.24994595,2.33586325 6.58573239,2.00007682 6.99994595,2.00007682 C7.41415952,2.00007682 7.74994595,2.33586325 7.74994595,2.75007682 Z",
|
|
62
|
+
transform: "translate(-367.000000, -21.000000) translate(367.000000, 21.000000) translate(6.999946, 7.000077) rotate(-45.000000) translate(-6.999946, -7.000077)"
|
|
63
|
+
}))))))));
|
|
64
|
+
}))
|
|
65
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
66
|
+
className: "".concat(prefixCls, "-down-tab-icon"),
|
|
67
|
+
style: visible ? {
|
|
68
|
+
visibility: 'visible'
|
|
69
|
+
} : {
|
|
70
|
+
visibility: 'hidden'
|
|
71
|
+
}
|
|
72
|
+
}, /*#__PURE__*/React.createElement("svg", {
|
|
73
|
+
width: "14",
|
|
74
|
+
height: "14",
|
|
75
|
+
viewBox: "0 0 16 16",
|
|
76
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
77
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
78
|
+
d: "M4.707 5.293L3.293 6.707 8 11.414l4.707-4.707-1.414-1.414L8 8.586z",
|
|
79
|
+
color: "#6D6D6D",
|
|
80
|
+
opacity: ".9",
|
|
81
|
+
fill: "currentColor",
|
|
82
|
+
fillRule: "nonzero"
|
|
83
|
+
}))));
|
|
84
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
.@{prefixCls}-down-tabs {
|
|
2
|
+
position: relative;
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
align-items: flex-start;
|
|
6
|
+
width: 120px;
|
|
7
|
+
overflow-x: hidden;
|
|
8
|
+
background-color: #fcfcfc;
|
|
9
|
+
border-radius: 8px;
|
|
10
|
+
box-shadow: 0px 12px 48px 16px rgba(0, 0, 0, 0.03), 0px 9px 28px 0px rgba(0, 0, 0, 0.05),
|
|
11
|
+
0px 6px 16px -8px rgba(0, 0, 0, 0.08);
|
|
12
|
+
backdrop-filter: blur(13px);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.@{prefixCls}-down-tab {
|
|
16
|
+
position: relative;
|
|
17
|
+
box-sizing: content-box;
|
|
18
|
+
width: 100%;
|
|
19
|
+
height: 43px;
|
|
20
|
+
cursor: pointer;
|
|
21
|
+
|
|
22
|
+
&-title {
|
|
23
|
+
position: relative;
|
|
24
|
+
z-index: 4;
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-wrap: nowrap;
|
|
27
|
+
align-items: center;
|
|
28
|
+
padding: 0 12px;
|
|
29
|
+
transition: background-color 0.2s;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&:hover:not(&-active) &-title,
|
|
33
|
+
&:hover:not(&-active)::after {
|
|
34
|
+
background-color: #f2f2f2;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&-active &-title,
|
|
38
|
+
&-active::after {
|
|
39
|
+
background-color: #eeeeee;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&:hover::after {
|
|
43
|
+
z-index: 2;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&-active::after {
|
|
47
|
+
z-index: 3;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&-active::before,
|
|
51
|
+
&-active + &::before,
|
|
52
|
+
&:hover::before,
|
|
53
|
+
&:hover + &::before {
|
|
54
|
+
opacity: 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
&-active &-inner {
|
|
58
|
+
opacity: 1;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&-inner {
|
|
62
|
+
flex: 1;
|
|
63
|
+
min-width: 0;
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
color: #333;
|
|
66
|
+
font-size: 14px;
|
|
67
|
+
line-height: 43px;
|
|
68
|
+
white-space: nowrap;
|
|
69
|
+
text-overflow: ellipsis;
|
|
70
|
+
opacity: 0.7;
|
|
71
|
+
|
|
72
|
+
&::after {
|
|
73
|
+
display: inline-block;
|
|
74
|
+
width: 16px;
|
|
75
|
+
content: ' ';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&-close {
|
|
80
|
+
display: none;
|
|
81
|
+
}
|
|
82
|
+
&:hover &-close {
|
|
83
|
+
display: block;
|
|
84
|
+
width: 14px;
|
|
85
|
+
height: 14px;
|
|
86
|
+
color: #c4c4c4;
|
|
87
|
+
line-height: 14px;
|
|
88
|
+
text-align: center;
|
|
89
|
+
border-radius: 50%;
|
|
90
|
+
&:hover {
|
|
91
|
+
color: #f2f2f2;
|
|
92
|
+
background-color: #c1c1c1;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.@{prefixCls}-down-tab-icon {
|
|
98
|
+
display: flex;
|
|
99
|
+
align-items: center;
|
|
100
|
+
justify-content: center;
|
|
101
|
+
width: 34px;
|
|
102
|
+
height: 34px;
|
|
103
|
+
border-radius: 50%;
|
|
104
|
+
cursor: pointer;
|
|
105
|
+
&:hover {
|
|
106
|
+
background-color: #eeeeee;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
font-weight: 400;
|
|
172
172
|
font-size: 14px;
|
|
173
173
|
line-height: 22px;
|
|
174
|
-
opacity:
|
|
174
|
+
opacity: 0.5;
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
|
|
@@ -267,7 +267,7 @@
|
|
|
267
267
|
font-weight: 400;
|
|
268
268
|
font-size: 14px;
|
|
269
269
|
line-height: 22px;
|
|
270
|
-
opacity:
|
|
270
|
+
opacity: 0.5;
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
&-more {
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
&::before {
|
|
10
10
|
position: absolute;
|
|
11
11
|
top: 0;
|
|
12
|
-
left:
|
|
12
|
+
left: 0;
|
|
13
13
|
z-index: 4;
|
|
14
14
|
display: block;
|
|
15
|
-
width:
|
|
15
|
+
width: 16px;
|
|
16
16
|
height: 100%;
|
|
17
17
|
background-color: #fff;
|
|
18
18
|
border-bottom-right-radius: 10px;
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
&::after {
|
|
23
23
|
position: absolute;
|
|
24
24
|
top: 0;
|
|
25
|
-
right:
|
|
25
|
+
right: 0;
|
|
26
26
|
z-index: 4;
|
|
27
27
|
display: block;
|
|
28
|
-
width:
|
|
28
|
+
width: 16px;
|
|
29
29
|
height: 100%;
|
|
30
30
|
background-color: #fff;
|
|
31
31
|
border-bottom-left-radius: 10px;
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
.@{prefixCls}-nav-tab {
|
|
37
37
|
position: relative;
|
|
38
38
|
box-sizing: content-box;
|
|
39
|
-
min-width:
|
|
39
|
+
min-width: 66px;
|
|
40
40
|
max-width: 120px;
|
|
41
41
|
height: 43px;
|
|
42
42
|
cursor: pointer;
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
|
|
110
110
|
&-inner {
|
|
111
111
|
flex: 1;
|
|
112
|
-
min-width:
|
|
112
|
+
min-width: 28px;
|
|
113
113
|
overflow: hidden;
|
|
114
114
|
color: #333;
|
|
115
115
|
font-size: 14px;
|
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
|
|
3
|
+
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."); }
|
|
4
|
+
|
|
5
|
+
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); }
|
|
6
|
+
|
|
7
|
+
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
|
+
|
|
9
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
10
|
+
|
|
11
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
12
|
+
|
|
13
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
14
|
import TabBar from './components/TabBar';
|
|
3
15
|
import Menu from './components/Menu';
|
|
4
16
|
import { PREFIX_CLS as prefixCls } from '../constants';
|
|
17
|
+
import DownBar from './components/DownBar';
|
|
18
|
+
import { useDebounce } from '@lemon-fe/hooks';
|
|
5
19
|
export default function MainFramework(props) {
|
|
6
20
|
var tabs = props.tabs,
|
|
7
21
|
active = props.active,
|
|
@@ -15,10 +29,45 @@ export default function MainFramework(props) {
|
|
|
15
29
|
title = props.title,
|
|
16
30
|
favorites = props.favorites,
|
|
17
31
|
onFavoritesChange = props.onFavoritesChange;
|
|
32
|
+
|
|
33
|
+
var _useState = useState(false),
|
|
34
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
35
|
+
hideTabs = _useState2[0],
|
|
36
|
+
setHideTabs = _useState2[1];
|
|
37
|
+
|
|
38
|
+
var tabRef = useRef(null);
|
|
39
|
+
var handleDownBar = useDebounce(function () {
|
|
40
|
+
var _tabRef$current$query, _tabRef$current$query2;
|
|
41
|
+
|
|
42
|
+
if (tabRef.current === null) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
var leftLength = (_tabRef$current$query = tabRef.current.querySelector(".".concat(prefixCls, "-nav-left"))) === null || _tabRef$current$query === void 0 ? void 0 : _tabRef$current$query.offsetWidth;
|
|
47
|
+
var rightLength = (_tabRef$current$query2 = tabRef.current.querySelector(".".concat(prefixCls, "-nav-right"))) === null || _tabRef$current$query2 === void 0 ? void 0 : _tabRef$current$query2.offsetWidth;
|
|
48
|
+
var minWidth = 66 * tabs.length + 32;
|
|
49
|
+
var width = window.innerWidth - (leftLength || 0) - (rightLength || 0);
|
|
50
|
+
|
|
51
|
+
if (tabs.length && minWidth >= width) {
|
|
52
|
+
setHideTabs(true);
|
|
53
|
+
} else if (minWidth < width) {
|
|
54
|
+
setHideTabs(false);
|
|
55
|
+
}
|
|
56
|
+
}, 300);
|
|
57
|
+
useEffect(function () {
|
|
58
|
+
window.addEventListener('resize', handleDownBar);
|
|
59
|
+
return function () {
|
|
60
|
+
window.removeEventListener('resize', handleDownBar);
|
|
61
|
+
};
|
|
62
|
+
}, []);
|
|
63
|
+
useEffect(function () {
|
|
64
|
+
handleDownBar();
|
|
65
|
+
}, [tabs, active]);
|
|
18
66
|
return /*#__PURE__*/React.createElement("div", {
|
|
19
67
|
className: "".concat(prefixCls, "-main")
|
|
20
68
|
}, /*#__PURE__*/React.createElement("div", {
|
|
21
|
-
className: "".concat(prefixCls, "-nav")
|
|
69
|
+
className: "".concat(prefixCls, "-nav"),
|
|
70
|
+
ref: tabRef
|
|
22
71
|
}, /*#__PURE__*/React.createElement("div", {
|
|
23
72
|
className: "".concat(prefixCls, "-nav-left")
|
|
24
73
|
}, logo !== false && /*#__PURE__*/React.createElement("div", {
|
|
@@ -43,7 +92,13 @@ export default function MainFramework(props) {
|
|
|
43
92
|
onClose: onTabClose
|
|
44
93
|
}), /*#__PURE__*/React.createElement("div", {
|
|
45
94
|
className: "".concat(prefixCls, "-nav-right")
|
|
46
|
-
},
|
|
95
|
+
}, /*#__PURE__*/React.createElement(DownBar, {
|
|
96
|
+
visible: hideTabs,
|
|
97
|
+
tabs: tabs,
|
|
98
|
+
active: active,
|
|
99
|
+
onClick: onTabClick,
|
|
100
|
+
onClose: onTabClose
|
|
101
|
+
}), right)), /*#__PURE__*/React.createElement("div", {
|
|
47
102
|
className: "".concat(prefixCls, "-body")
|
|
48
103
|
}, /*#__PURE__*/React.createElement(Menu, {
|
|
49
104
|
data: menus,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@import './components/Menu/index.less';
|
|
2
2
|
@import './components/TabBar/index.less';
|
|
3
|
+
@import './components/DownBar/index.less';
|
|
3
4
|
|
|
4
5
|
.@{prefixCls}-main {
|
|
5
6
|
display: flex;
|
|
@@ -14,9 +15,10 @@
|
|
|
14
15
|
position: relative;
|
|
15
16
|
z-index: 4;
|
|
16
17
|
display: flex;
|
|
18
|
+
flex-wrap: nowrap;
|
|
17
19
|
align-items: center;
|
|
18
20
|
box-sizing: border-box;
|
|
19
|
-
width:
|
|
21
|
+
width: 100%;
|
|
20
22
|
height: 50px;
|
|
21
23
|
padding: 0 16px;
|
|
22
24
|
background: #ffff;
|
|
@@ -54,8 +56,8 @@
|
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
&-right {
|
|
59
|
+
flex-shrink: 0;
|
|
57
60
|
justify-content: flex-end;
|
|
58
|
-
min-width: 180px;
|
|
59
61
|
margin-left: auto;
|
|
60
62
|
}
|
|
61
63
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lemon-fe/components",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"author": "鲁盛杰 <lusj@cnlemon.net>",
|
|
6
6
|
"homepage": "",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"registry": "https://registry.npmjs.org"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@lemon-fe/hooks": "^0.0.
|
|
19
|
+
"@lemon-fe/hooks": "^0.0.23",
|
|
20
20
|
"antd": "^4.17.0",
|
|
21
21
|
"classnames": "^2.2.6",
|
|
22
22
|
"lodash": "^4.17.21",
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"@types/lodash": "^4.14.179",
|
|
40
40
|
"@types/react-resizable": "^1.7.4"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "51cd80caa890be326c23be9c84fa1dfb42226e8c"
|
|
43
43
|
}
|