@lemon-fe/components 0.1.11 → 0.1.14
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.js +9 -1
- package/es/BaseTable/index.less +0 -41
- package/es/Filter/index.js +40 -35
- package/es/Popup/index.d.ts +4 -4
- package/es/Popup/index.js +4 -5
- package/es/Section/index.less +5 -1
- package/es/SelectView/index.d.ts +50 -0
- package/es/SelectView/index.js +252 -0
- package/es/SelectView/index.less +59 -0
- package/es/SiderTree/index.js +5 -2
- package/es/SiderTree/index.less +35 -4
- package/es/index.d.ts +1 -0
- package/es/index.js +2 -1
- package/es/index.less +1 -0
- package/es/overrides.less +56 -1
- package/package.json +2 -2
package/es/BaseTable/index.js
CHANGED
|
@@ -34,7 +34,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
34
34
|
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; }
|
|
35
35
|
|
|
36
36
|
/// <reference path="../../typings.d.ts" />
|
|
37
|
-
import React, { useMemo, useState, useEffect, useRef } from 'react';
|
|
37
|
+
import React, { useMemo, useState, useEffect, useRef, useLayoutEffect } from 'react';
|
|
38
38
|
import { Table as AntdTable } from 'antd';
|
|
39
39
|
import { get } from 'lodash';
|
|
40
40
|
import ResizeObserver from 'rc-resize-observer';
|
|
@@ -190,9 +190,17 @@ function BaseTable(props) {
|
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
memoHeight.current = height;
|
|
193
|
+
|
|
194
|
+
if (memoHeight.current === 0) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
|
|
193
198
|
setScrollY(calcScrollY() || undefined);
|
|
194
199
|
};
|
|
195
200
|
|
|
201
|
+
useLayoutEffect(function () {
|
|
202
|
+
setScrollY(calcScrollY() || undefined);
|
|
203
|
+
}, [paginationProp !== false && !!(paginationProp === null || paginationProp === void 0 ? void 0 : paginationProp.total)]);
|
|
196
204
|
useEffect(function () {
|
|
197
205
|
if (scrollYProp !== true) {
|
|
198
206
|
setScrollY(scrollYProp);
|
package/es/BaseTable/index.less
CHANGED
|
@@ -2,47 +2,6 @@
|
|
|
2
2
|
@font-size-base: 14px;
|
|
3
3
|
@resize-indicator-color: #333;
|
|
4
4
|
|
|
5
|
-
.ant-table-thead > tr > th {
|
|
6
|
-
border-bottom: none;
|
|
7
|
-
|
|
8
|
-
&::before {
|
|
9
|
-
display: none;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.ant-table-body {
|
|
14
|
-
&::-webkit-scrollbar {
|
|
15
|
-
width: 8px;
|
|
16
|
-
height: 8px;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
&::-webkit-scrollbar-thumb {
|
|
20
|
-
background-color: #ddd;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
&::-webkit-scrollbar-track {
|
|
24
|
-
background-color: #fff;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.ant-table-cell {
|
|
29
|
-
.ant-checkbox-checked .ant-checkbox-inner::after {
|
|
30
|
-
transition: none !important;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.ant-checkbox-inner {
|
|
34
|
-
transition: none !important;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.ant-checkbox-checked::after {
|
|
38
|
-
animation: none !important;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.ant-table-pagination.ant-pagination {
|
|
43
|
-
margin-bottom: 0;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
5
|
.@{tablePrefixCls} {
|
|
47
6
|
position: relative;
|
|
48
7
|
box-sizing: border-box;
|
package/es/Filter/index.js
CHANGED
|
@@ -395,18 +395,24 @@ function Filter(props) {
|
|
|
395
395
|
};
|
|
396
396
|
};
|
|
397
397
|
|
|
398
|
-
var
|
|
399
|
-
|
|
400
|
-
|
|
398
|
+
var _useMemo = useMemo(function () {
|
|
399
|
+
var result = data.filter(function (item) {
|
|
400
|
+
if (activeKeys.has(item.key) && compMap.has(item.type)) {
|
|
401
|
+
return true;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
return false;
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
if (!width) {
|
|
408
|
+
return [result, false];
|
|
401
409
|
}
|
|
402
410
|
|
|
403
411
|
var rows = [];
|
|
404
412
|
var currRow = [];
|
|
405
413
|
var value = 0;
|
|
406
|
-
|
|
407
|
-
var
|
|
408
|
-
|
|
409
|
-
var itemWidth = getColStyle(item.colSpan || ((_compMap$get = compMap.get(item.type)) === null || _compMap$get === void 0 ? void 0 : _compMap$get.colSpan)).width;
|
|
414
|
+
result.forEach(function (item) {
|
|
415
|
+
var itemWidth = getColStyle(item.colSpan || compMap.get(item.type).colSpan).width;
|
|
410
416
|
|
|
411
417
|
if (value + itemWidth > width) {
|
|
412
418
|
if (currRow.length > 0) {
|
|
@@ -420,20 +426,32 @@ function Filter(props) {
|
|
|
420
426
|
value += itemWidth;
|
|
421
427
|
}
|
|
422
428
|
});
|
|
429
|
+
rows.push(currRow);
|
|
430
|
+
value += simple ? 180 : 220;
|
|
423
431
|
|
|
424
|
-
if (currRow.length > 0) {
|
|
425
|
-
rows.push(
|
|
432
|
+
if (currRow.length > 0 && value > width) {
|
|
433
|
+
rows.push([]);
|
|
426
434
|
}
|
|
427
435
|
|
|
428
|
-
|
|
436
|
+
var visible = rows.length > 2;
|
|
429
437
|
|
|
430
|
-
if (
|
|
431
|
-
return
|
|
438
|
+
if (!collapsed || !visible) {
|
|
439
|
+
return [result, visible];
|
|
432
440
|
}
|
|
433
441
|
|
|
434
|
-
return [rows[0], rows[rows.length - 1]].flat();
|
|
435
|
-
}, [data, width, collapsed])
|
|
436
|
-
|
|
442
|
+
return [[rows[0], rows[rows.length - 1]].flat(), visible];
|
|
443
|
+
}, [data, width, collapsed, simple, activeKeys]),
|
|
444
|
+
_useMemo2 = _slicedToArray(_useMemo, 2),
|
|
445
|
+
cols = _useMemo2[0],
|
|
446
|
+
showCollapse = _useMemo2[1];
|
|
447
|
+
|
|
448
|
+
return /*#__PURE__*/React.createElement(ResizeObserver, {
|
|
449
|
+
onResize: function onResize(size) {
|
|
450
|
+
if (size.width) {
|
|
451
|
+
setWidth(size.width + 16);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
437
455
|
className: classNames(prefixCls, _defineProperty({}, "".concat(prefixCls, "-simple"), simple)),
|
|
438
456
|
style: style
|
|
439
457
|
}, /*#__PURE__*/React.createElement(Modal, {
|
|
@@ -473,13 +491,7 @@ function Filter(props) {
|
|
|
473
491
|
}), /*#__PURE__*/React.createElement(FormLayout, {
|
|
474
492
|
direction: "row"
|
|
475
493
|
}, cols.map(function (item) {
|
|
476
|
-
var visible = activeKeys.has(item.key);
|
|
477
494
|
var target = compMap.get(item.type);
|
|
478
|
-
|
|
479
|
-
if (!visible || !target) {
|
|
480
|
-
return null;
|
|
481
|
-
}
|
|
482
|
-
|
|
483
495
|
return /*#__PURE__*/React.createElement("div", {
|
|
484
496
|
style: getColStyle(item.colSpan || target.colSpan),
|
|
485
497
|
key: item.key
|
|
@@ -495,7 +507,7 @@ function Filter(props) {
|
|
|
495
507
|
}, /*#__PURE__*/React.createElement(Button, {
|
|
496
508
|
type: "primary",
|
|
497
509
|
htmlType: "submit"
|
|
498
|
-
}, "\u67E5\u8BE2")), simple ? /*#__PURE__*/React.createElement(Button, {
|
|
510
|
+
}, "\u67E5\u8BE2")), /*#__PURE__*/React.createElement(Space, null, simple ? /*#__PURE__*/React.createElement(Button, {
|
|
499
511
|
className: "".concat(prefixCls, "-btn"),
|
|
500
512
|
onClick: handleReset
|
|
501
513
|
}, /*#__PURE__*/React.createElement("svg", {
|
|
@@ -511,7 +523,7 @@ function Filter(props) {
|
|
|
511
523
|
strokeLinejoin: "round",
|
|
512
524
|
fill: "none",
|
|
513
525
|
fillRule: "evenodd"
|
|
514
|
-
}))) : /*#__PURE__*/React.createElement(
|
|
526
|
+
}))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Dropdown, {
|
|
515
527
|
actions: [{
|
|
516
528
|
text: '重置',
|
|
517
529
|
onClick: handleReset
|
|
@@ -558,7 +570,10 @@ function Filter(props) {
|
|
|
558
570
|
setKeywords('');
|
|
559
571
|
},
|
|
560
572
|
icon: /*#__PURE__*/React.createElement(Icons.LookUp, null)
|
|
561
|
-
})), /*#__PURE__*/React.createElement(Button, {
|
|
573
|
+
}))), /*#__PURE__*/React.createElement(Button, {
|
|
574
|
+
style: {
|
|
575
|
+
visibility: showCollapse ? 'visible' : 'hidden'
|
|
576
|
+
},
|
|
562
577
|
className: "".concat(prefixCls, "-btn"),
|
|
563
578
|
onClick: function onClick() {
|
|
564
579
|
return setCollapsed(function (prev) {
|
|
@@ -570,17 +585,7 @@ function Filter(props) {
|
|
|
570
585
|
transform: collapsed ? 'rotateX(180deg)' : undefined
|
|
571
586
|
}
|
|
572
587
|
})
|
|
573
|
-
}))))));
|
|
574
|
-
|
|
575
|
-
if (simple) {
|
|
576
|
-
return content;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResizeObserver, {
|
|
580
|
-
onResize: function onResize(size) {
|
|
581
|
-
return setWidth(size.width + 16);
|
|
582
|
-
}
|
|
583
|
-
}, content));
|
|
588
|
+
})))))));
|
|
584
589
|
}
|
|
585
590
|
|
|
586
591
|
Filter.setComponents = setComponents;
|
package/es/Popup/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ModalProps } from 'antd/lib/modal';
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import type { ModalProps } from 'antd/lib/modal';
|
|
3
3
|
export interface PopupProps<ValueType> extends ModalProps {
|
|
4
4
|
value?: ValueType;
|
|
5
5
|
onChange?: (value?: ValueType) => void;
|
|
6
|
-
component:
|
|
6
|
+
component: (params: {
|
|
7
7
|
value?: ValueType;
|
|
8
8
|
onChange: (value: ValueType) => void;
|
|
9
|
-
}
|
|
9
|
+
}) => ReactElement | null;
|
|
10
10
|
formatLabel?: (value: ValueType) => string;
|
|
11
11
|
beforeOk?: (value: ValueType) => ValueType | PromiseLike<ValueType>;
|
|
12
12
|
children?: ReactElement;
|
package/es/Popup/index.js
CHANGED
|
@@ -26,7 +26,7 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
26
26
|
|
|
27
27
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
28
28
|
|
|
29
|
-
import React, { useState,
|
|
29
|
+
import React, { useState, cloneElement, useRef } from 'react';
|
|
30
30
|
import { Modal, Input, message } from 'antd';
|
|
31
31
|
import { CloseCircleFilled } from '@ant-design/icons';
|
|
32
32
|
import { PREFIX_CLS } from '../constants';
|
|
@@ -176,16 +176,15 @@ function Popup(props) {
|
|
|
176
176
|
}, trigger), /*#__PURE__*/React.createElement(Modal, _objectSpread({
|
|
177
177
|
destroyOnClose: true,
|
|
178
178
|
visible: visible,
|
|
179
|
-
width:
|
|
179
|
+
width: 994,
|
|
180
180
|
centered: true,
|
|
181
181
|
onCancel: handleCancel,
|
|
182
182
|
onOk: handleOk,
|
|
183
183
|
bodyStyle: {
|
|
184
184
|
height: '549px',
|
|
185
|
-
padding: 0
|
|
186
|
-
backgroundColor: '#f9f9f9'
|
|
185
|
+
padding: 0
|
|
187
186
|
}
|
|
188
|
-
}, restProps),
|
|
187
|
+
}, restProps), component({
|
|
189
188
|
value: value,
|
|
190
189
|
onChange: setValue
|
|
191
190
|
})));
|
package/es/Section/index.less
CHANGED
|
@@ -66,12 +66,16 @@
|
|
|
66
66
|
& > .ant-tabs-content-holder {
|
|
67
67
|
flex: 1;
|
|
68
68
|
|
|
69
|
-
.ant-tabs-content {
|
|
69
|
+
& > .ant-tabs-content {
|
|
70
70
|
height: 100%;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
&-flex > .ant-tabs {
|
|
76
|
+
min-height: 0;
|
|
77
|
+
}
|
|
78
|
+
|
|
75
79
|
&-tab {
|
|
76
80
|
display: inline-flex;
|
|
77
81
|
align-self: flex-start;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { CSSProperties, Key, ReactElement } from 'react';
|
|
2
|
+
import type { FilterItemType } from '../Filter/typings';
|
|
3
|
+
import type { ColumnType } from '../BaseTable/typings';
|
|
4
|
+
interface Props<RecordType, ParamsType> {
|
|
5
|
+
value?: RecordType[];
|
|
6
|
+
onChange?: (value: RecordType[]) => void;
|
|
7
|
+
/**
|
|
8
|
+
* @description 是否多选
|
|
9
|
+
*/
|
|
10
|
+
multiple?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* @description 选择列表列设置
|
|
13
|
+
*/
|
|
14
|
+
columns: ColumnType<RecordType>[];
|
|
15
|
+
/**
|
|
16
|
+
* @description 已选择列表列设置
|
|
17
|
+
*/
|
|
18
|
+
selectedColumns?: ColumnType<RecordType>[];
|
|
19
|
+
/**
|
|
20
|
+
* @description 请求方法
|
|
21
|
+
*/
|
|
22
|
+
fetch?: (query: {
|
|
23
|
+
current: number;
|
|
24
|
+
pageSize: number;
|
|
25
|
+
params: ParamsType;
|
|
26
|
+
}) => Promise<{
|
|
27
|
+
total: number;
|
|
28
|
+
data: RecordType[];
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* @description 数据源
|
|
32
|
+
*/
|
|
33
|
+
dataSource?: RecordType[];
|
|
34
|
+
rowKey: string | ((item: RecordType) => Key);
|
|
35
|
+
/**
|
|
36
|
+
* @description 筛选器设置
|
|
37
|
+
*/
|
|
38
|
+
filter?: {
|
|
39
|
+
defaultValue?: ParamsType;
|
|
40
|
+
onValuesChange?: (changedValues: Partial<ParamsType>, allValues: ParamsType) => void;
|
|
41
|
+
data: FilterItemType[];
|
|
42
|
+
sider?: (props: {
|
|
43
|
+
value: ParamsType;
|
|
44
|
+
onChange: (value: Partial<ParamsType>) => void;
|
|
45
|
+
style?: CSSProperties;
|
|
46
|
+
}) => ReactElement;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export default function SelectView<RecordType, ParamsType extends Record<string, any>>(props: Props<RecordType, ParamsType>): JSX.Element;
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
|
|
5
|
+
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; }
|
|
6
|
+
|
|
7
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
|
+
|
|
9
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
|
+
|
|
11
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
12
|
+
|
|
13
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
14
|
+
|
|
15
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
16
|
+
|
|
17
|
+
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."); }
|
|
18
|
+
|
|
19
|
+
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); }
|
|
20
|
+
|
|
21
|
+
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; }
|
|
22
|
+
|
|
23
|
+
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; }
|
|
24
|
+
|
|
25
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
26
|
+
|
|
27
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
28
|
+
import { Tabs, Button } from 'antd';
|
|
29
|
+
import { get } from 'lodash';
|
|
30
|
+
import Filter from '../Filter';
|
|
31
|
+
import Table from '../Table';
|
|
32
|
+
import { PREFIX_CLS } from '../constants';
|
|
33
|
+
export default function SelectView(props) {
|
|
34
|
+
var value = props.value,
|
|
35
|
+
onChange = props.onChange,
|
|
36
|
+
columns = props.columns,
|
|
37
|
+
_props$selectedColumn = props.selectedColumns,
|
|
38
|
+
selectedColumns = _props$selectedColumn === void 0 ? columns : _props$selectedColumn,
|
|
39
|
+
fetch = props.fetch,
|
|
40
|
+
_props$multiple = props.multiple,
|
|
41
|
+
multiple = _props$multiple === void 0 ? true : _props$multiple,
|
|
42
|
+
rowKey = props.rowKey,
|
|
43
|
+
filter = props.filter,
|
|
44
|
+
dataSource = props.dataSource;
|
|
45
|
+
var prefixCls = "".concat(PREFIX_CLS, "-select-view");
|
|
46
|
+
|
|
47
|
+
var _useState = useState(value || []),
|
|
48
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
49
|
+
data = _useState2[0],
|
|
50
|
+
setData = _useState2[1];
|
|
51
|
+
|
|
52
|
+
var _useState3 = useState(data),
|
|
53
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
54
|
+
selected = _useState4[0],
|
|
55
|
+
setSelected = _useState4[1];
|
|
56
|
+
|
|
57
|
+
var _useState5 = useState((filter === null || filter === void 0 ? void 0 : filter.defaultValue) || {}),
|
|
58
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
59
|
+
params = _useState6[0],
|
|
60
|
+
setParams = _useState6[1];
|
|
61
|
+
|
|
62
|
+
var list = useRef(null);
|
|
63
|
+
|
|
64
|
+
var _useState7 = useState('list'),
|
|
65
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
66
|
+
tabFlag = _useState8[0],
|
|
67
|
+
setTabFlag = _useState8[1];
|
|
68
|
+
|
|
69
|
+
useEffect(function () {
|
|
70
|
+
var _list$current;
|
|
71
|
+
|
|
72
|
+
(_list$current = list.current) === null || _list$current === void 0 ? void 0 : _list$current.fetch();
|
|
73
|
+
}, [params]);
|
|
74
|
+
useEffect(function () {
|
|
75
|
+
setData(value || []);
|
|
76
|
+
}, [value]);
|
|
77
|
+
|
|
78
|
+
var getRowKey = function getRowKey(item) {
|
|
79
|
+
if (typeof rowKey === 'function') {
|
|
80
|
+
return rowKey(item);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return get(item, rowKey);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
var request = fetch ? function (_ref) {
|
|
87
|
+
var current = _ref.current,
|
|
88
|
+
pageSize = _ref.pageSize;
|
|
89
|
+
return fetch({
|
|
90
|
+
current: current,
|
|
91
|
+
pageSize: pageSize,
|
|
92
|
+
params: params
|
|
93
|
+
});
|
|
94
|
+
} : undefined;
|
|
95
|
+
|
|
96
|
+
var handleClear = function handleClear() {
|
|
97
|
+
var empty = [];
|
|
98
|
+
setSelected(empty);
|
|
99
|
+
setData(empty);
|
|
100
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(empty);
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
var handleChangeData = function handleChangeData(keys, rows) {
|
|
104
|
+
var keySet = new Set(keys);
|
|
105
|
+
var newRows = [].concat(_toConsumableArray(data), _toConsumableArray(rows)).filter(function (item) {
|
|
106
|
+
var curKey = getRowKey(item);
|
|
107
|
+
|
|
108
|
+
if (keySet.has(curKey)) {
|
|
109
|
+
keySet.delete(curKey);
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return false;
|
|
114
|
+
});
|
|
115
|
+
setSelected(newRows);
|
|
116
|
+
setData(newRows);
|
|
117
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(newRows);
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
var handleChangeParams = useCallback(function (mParams) {
|
|
121
|
+
setParams(function (prev) {
|
|
122
|
+
return _objectSpread(_objectSpread({}, prev), mParams);
|
|
123
|
+
});
|
|
124
|
+
}, []);
|
|
125
|
+
|
|
126
|
+
var handleValuesChange = function handleValuesChange(changedValues, allValues) {
|
|
127
|
+
var _filter$onValuesChang;
|
|
128
|
+
|
|
129
|
+
filter === null || filter === void 0 ? void 0 : (_filter$onValuesChang = filter.onValuesChange) === null || _filter$onValuesChang === void 0 ? void 0 : _filter$onValuesChang.call(filter, changedValues, allValues);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
var headerNode = null;
|
|
133
|
+
var siderNode = null;
|
|
134
|
+
|
|
135
|
+
if (filter) {
|
|
136
|
+
if (filter.data) {
|
|
137
|
+
headerNode = /*#__PURE__*/React.createElement(Filter, {
|
|
138
|
+
simple: true,
|
|
139
|
+
data: filter.data,
|
|
140
|
+
defaultValue: filter.defaultValue,
|
|
141
|
+
onChange: handleChangeParams,
|
|
142
|
+
onValuesChange: handleValuesChange
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (filter.sider) {
|
|
147
|
+
siderNode = filter.sider({
|
|
148
|
+
value: params,
|
|
149
|
+
onChange: handleChangeParams
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
var dataKeys = useMemo(function () {
|
|
155
|
+
return data.map(getRowKey);
|
|
156
|
+
}, [data, rowKey]);
|
|
157
|
+
var selectedKeys = useMemo(function () {
|
|
158
|
+
return selected.map(getRowKey);
|
|
159
|
+
}, [rowKey, selected]);
|
|
160
|
+
var selectTable = /*#__PURE__*/React.createElement("div", {
|
|
161
|
+
className: "".concat(prefixCls, "-layout")
|
|
162
|
+
}, siderNode !== null && /*#__PURE__*/React.createElement("div", {
|
|
163
|
+
className: "".concat(prefixCls, "-sider")
|
|
164
|
+
}, siderNode), /*#__PURE__*/React.createElement("div", {
|
|
165
|
+
className: "".concat(prefixCls, "-main")
|
|
166
|
+
}, headerNode !== null && /*#__PURE__*/React.createElement("div", {
|
|
167
|
+
className: "".concat(prefixCls, "-head")
|
|
168
|
+
}, headerNode), /*#__PURE__*/React.createElement("div", {
|
|
169
|
+
className: "".concat(prefixCls, "-body")
|
|
170
|
+
}, /*#__PURE__*/React.createElement(Table, {
|
|
171
|
+
actionRef: list,
|
|
172
|
+
rowKey: rowKey,
|
|
173
|
+
rowSelection: {
|
|
174
|
+
type: multiple ? 'checkbox' : 'radio',
|
|
175
|
+
preserveSelectedRowKeys: true,
|
|
176
|
+
selectedRowKeys: dataKeys,
|
|
177
|
+
onChange: function onChange(keys, rows) {
|
|
178
|
+
return handleChangeData(keys, rows);
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
onRow: function onRow(row) {
|
|
182
|
+
return {
|
|
183
|
+
onClick: function onClick() {
|
|
184
|
+
var key = getRowKey(row);
|
|
185
|
+
|
|
186
|
+
var keys = _toConsumableArray(dataKeys);
|
|
187
|
+
|
|
188
|
+
var index = keys.findIndex(function (item) {
|
|
189
|
+
return item === key;
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
if (index > 0) {
|
|
193
|
+
keys.splice(index, 1);
|
|
194
|
+
} else {
|
|
195
|
+
keys.push(key);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
handleChangeData(keys, [row]);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
},
|
|
202
|
+
dataSource: dataSource,
|
|
203
|
+
columns: columns,
|
|
204
|
+
fetch: request
|
|
205
|
+
}))));
|
|
206
|
+
var content;
|
|
207
|
+
|
|
208
|
+
if (!multiple) {
|
|
209
|
+
content = selectTable;
|
|
210
|
+
} else {
|
|
211
|
+
content = /*#__PURE__*/React.createElement(Tabs, {
|
|
212
|
+
size: "small",
|
|
213
|
+
tabBarGutter: 20,
|
|
214
|
+
onChange: function onChange(key) {
|
|
215
|
+
setTabFlag(key);
|
|
216
|
+
},
|
|
217
|
+
tabBarExtraContent: {
|
|
218
|
+
right: tabFlag === 'selected' ? /*#__PURE__*/React.createElement(Button, {
|
|
219
|
+
type: "link",
|
|
220
|
+
onClick: handleClear
|
|
221
|
+
}, "\u6E05\u7A7A") : null
|
|
222
|
+
}
|
|
223
|
+
}, /*#__PURE__*/React.createElement(Tabs.TabPane, {
|
|
224
|
+
tab: "\u5217\u8868",
|
|
225
|
+
key: "list"
|
|
226
|
+
}, selectTable), /*#__PURE__*/React.createElement(Tabs.TabPane, {
|
|
227
|
+
tab: "\u5DF2\u9009\u62E9(".concat(data.length, ")"),
|
|
228
|
+
key: "selected"
|
|
229
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
230
|
+
className: "".concat(prefixCls, "-layout")
|
|
231
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
232
|
+
className: "".concat(prefixCls, "-main")
|
|
233
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
234
|
+
className: "".concat(prefixCls, "-body")
|
|
235
|
+
}, /*#__PURE__*/React.createElement(Table, {
|
|
236
|
+
dataSource: data,
|
|
237
|
+
columns: selectedColumns,
|
|
238
|
+
rowSelection: {
|
|
239
|
+
preserveSelectedRowKeys: true,
|
|
240
|
+
selectedRowKeys: selectedKeys,
|
|
241
|
+
onChange: function onChange(_, rows) {
|
|
242
|
+
return setSelected(rows);
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
rowKey: rowKey
|
|
246
|
+
}))))));
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
250
|
+
className: prefixCls
|
|
251
|
+
}, content);
|
|
252
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
.@{prefixCls}-select-view {
|
|
2
|
+
height: 100%;
|
|
3
|
+
|
|
4
|
+
& > .ant-tabs {
|
|
5
|
+
height: 100%;
|
|
6
|
+
|
|
7
|
+
& > .ant-tabs-nav {
|
|
8
|
+
margin-bottom: 0;
|
|
9
|
+
|
|
10
|
+
& > .ant-tabs-nav-wrap {
|
|
11
|
+
padding: 0 16px;
|
|
12
|
+
|
|
13
|
+
.ant-tabs-tab {
|
|
14
|
+
padding: 13px 0;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
& > .ant-tabs-content-holder {
|
|
20
|
+
flex: 1;
|
|
21
|
+
min-height: 0;
|
|
22
|
+
|
|
23
|
+
& > .ant-tabs-content {
|
|
24
|
+
height: 100%;
|
|
25
|
+
|
|
26
|
+
& > .ant-tabs-tabpane {
|
|
27
|
+
height: 100%;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
&-layout {
|
|
34
|
+
display: flex;
|
|
35
|
+
height: 100%;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&-sider {
|
|
39
|
+
width: 228px;
|
|
40
|
+
overflow: auto;
|
|
41
|
+
border-right: 1px solid #e5e5e5;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
&-main {
|
|
45
|
+
display: flex;
|
|
46
|
+
flex: 1;
|
|
47
|
+
flex-direction: column;
|
|
48
|
+
padding: 16px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&-head + &-body {
|
|
52
|
+
margin-top: 16px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&-body {
|
|
56
|
+
flex: 1;
|
|
57
|
+
min-height: 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
package/es/SiderTree/index.js
CHANGED
|
@@ -51,7 +51,10 @@ function SiderTreeTabs(props) {
|
|
|
51
51
|
return item.key || item.title;
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
var prefixCls = "".concat(PREFIX_CLS, "-tree");
|
|
55
|
+
return /*#__PURE__*/React.createElement(Tabs, _objectSpread(_objectSpread({
|
|
56
|
+
className: "".concat(prefixCls, "-tabs")
|
|
57
|
+
}, restProps), {}, {
|
|
55
58
|
renderTabBar: function renderTabBar(tabProps) {
|
|
56
59
|
var activeKey = tabProps.activeKey,
|
|
57
60
|
_onTabClick = tabProps.onTabClick;
|
|
@@ -153,7 +156,7 @@ export default function SiderTree(props) {
|
|
|
153
156
|
|
|
154
157
|
return /*#__PURE__*/React.createElement("div", {
|
|
155
158
|
className: "".concat(prefixCls, "-wrapper")
|
|
156
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
159
|
+
}, !!mHeader && /*#__PURE__*/React.createElement("div", {
|
|
157
160
|
className: "".concat(prefixCls, "-header")
|
|
158
161
|
}, mHeader), /*#__PURE__*/React.createElement("div", {
|
|
159
162
|
className: "".concat(prefixCls, "-body")
|
package/es/SiderTree/index.less
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
.@{prefixCls}-tree {
|
|
5
5
|
&-wrapper {
|
|
6
|
-
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
height: 100%;
|
|
10
|
+
padding: @space 0;
|
|
7
11
|
}
|
|
8
12
|
|
|
9
13
|
&-menu-popover {
|
|
@@ -39,12 +43,35 @@
|
|
|
39
43
|
}
|
|
40
44
|
}
|
|
41
45
|
|
|
46
|
+
&-tabs {
|
|
47
|
+
height: 100%;
|
|
48
|
+
|
|
49
|
+
& > .ant-tabs-content-holder {
|
|
50
|
+
flex: 1;
|
|
51
|
+
|
|
52
|
+
& > .ant-tabs-content {
|
|
53
|
+
height: 100%;
|
|
54
|
+
|
|
55
|
+
& > .ant-tabs-tabpane {
|
|
56
|
+
height: 100%;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
42
62
|
&-tab-bar {
|
|
43
63
|
margin: 0 @space;
|
|
44
64
|
}
|
|
45
65
|
|
|
66
|
+
&-header {
|
|
67
|
+
padding: 0 @space;
|
|
68
|
+
}
|
|
69
|
+
|
|
46
70
|
&-body {
|
|
47
|
-
|
|
71
|
+
flex: 1;
|
|
72
|
+
min-height: 0;
|
|
73
|
+
padding: 0 @space;
|
|
74
|
+
overflow: auto;
|
|
48
75
|
}
|
|
49
76
|
|
|
50
77
|
&-header + &-body {
|
|
@@ -103,6 +130,10 @@
|
|
|
103
130
|
width: 13px;
|
|
104
131
|
height: 13px;
|
|
105
132
|
}
|
|
133
|
+
|
|
134
|
+
&-noop {
|
|
135
|
+
display: none;
|
|
136
|
+
}
|
|
106
137
|
}
|
|
107
138
|
|
|
108
139
|
&-node-content-wrapper {
|
|
@@ -184,9 +215,9 @@
|
|
|
184
215
|
}
|
|
185
216
|
|
|
186
217
|
.@{prefixCls}-layout-left .@{prefixCls}-tree-wrapper:first-child .@{prefixCls}-tree-header {
|
|
187
|
-
padding-right: 12px;
|
|
218
|
+
padding-right: 12px + @space;
|
|
188
219
|
}
|
|
189
220
|
|
|
190
221
|
.ant-tabs-tabpane .@{prefixCls}-tree-wrapper:first-child .@{prefixCls}-tree-header {
|
|
191
|
-
padding-right:
|
|
222
|
+
padding-right: @space;
|
|
192
223
|
}
|
package/es/index.d.ts
CHANGED
|
@@ -28,3 +28,4 @@ export type { FormTableColumnType, FormTableProps, FormTableRef } from './FormTa
|
|
|
28
28
|
export { default as TabBar } from './TabBar';
|
|
29
29
|
export { default as SymbolIcon } from './SymbolIcon';
|
|
30
30
|
export { default as Dropdown } from './Dropdown';
|
|
31
|
+
export { default as SelectView } from './SelectView';
|
package/es/index.js
CHANGED
|
@@ -22,4 +22,5 @@ export { default as FormInline } from './FormInline';
|
|
|
22
22
|
export { default as FormTable } from './FormTable';
|
|
23
23
|
export { default as TabBar } from './TabBar';
|
|
24
24
|
export { default as SymbolIcon } from './SymbolIcon';
|
|
25
|
-
export { default as Dropdown } from './Dropdown';
|
|
25
|
+
export { default as Dropdown } from './Dropdown';
|
|
26
|
+
export { default as SelectView } from './SelectView';
|
package/es/index.less
CHANGED
package/es/overrides.less
CHANGED
|
@@ -4,6 +4,11 @@ a[title='站长统计'] {
|
|
|
4
4
|
|
|
5
5
|
@blue-base: #2357df;
|
|
6
6
|
|
|
7
|
+
::selection {
|
|
8
|
+
color: inherit;
|
|
9
|
+
background: #d3ddf9;
|
|
10
|
+
}
|
|
11
|
+
|
|
7
12
|
/** basic */
|
|
8
13
|
|
|
9
14
|
@height-base: 32px;
|
|
@@ -16,8 +21,50 @@ a[title='站长统计'] {
|
|
|
16
21
|
@table-header-bg: #f0f0f0;
|
|
17
22
|
@table-header-color: rgba(51, 51, 51, 0.65);
|
|
18
23
|
@table-padding-vertical: 14px;
|
|
19
|
-
@table-border-color:
|
|
24
|
+
@table-border-color: #e1e1e1;
|
|
20
25
|
@table-border-radius-base: 4px;
|
|
26
|
+
@table-row-hover-bg: #eee;
|
|
27
|
+
|
|
28
|
+
.ant-table-thead > tr > th {
|
|
29
|
+
border-bottom: none;
|
|
30
|
+
|
|
31
|
+
&::before {
|
|
32
|
+
display: none;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.ant-table-body {
|
|
37
|
+
&::-webkit-scrollbar {
|
|
38
|
+
width: 8px;
|
|
39
|
+
height: 8px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&::-webkit-scrollbar-thumb {
|
|
43
|
+
background-color: #ddd;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&::-webkit-scrollbar-track {
|
|
47
|
+
background-color: #fff;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.ant-table-cell {
|
|
52
|
+
.ant-checkbox-checked .ant-checkbox-inner::after {
|
|
53
|
+
transition: none !important;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.ant-checkbox-inner {
|
|
57
|
+
transition: none !important;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.ant-checkbox-checked::after {
|
|
61
|
+
animation: none !important;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.ant-table-pagination.ant-pagination {
|
|
66
|
+
margin-bottom: 0;
|
|
67
|
+
}
|
|
21
68
|
|
|
22
69
|
/** button */
|
|
23
70
|
|
|
@@ -29,6 +76,10 @@ a[title='站长统计'] {
|
|
|
29
76
|
border-radius: 8px;
|
|
30
77
|
}
|
|
31
78
|
|
|
79
|
+
.ant-modal-header {
|
|
80
|
+
border-radius: 8px 8px 0 0;
|
|
81
|
+
}
|
|
82
|
+
|
|
32
83
|
.ant-modal-confirm {
|
|
33
84
|
.ant-modal-body {
|
|
34
85
|
padding: 0;
|
|
@@ -104,6 +155,10 @@ a[title='站长统计'] {
|
|
|
104
155
|
}
|
|
105
156
|
}
|
|
106
157
|
|
|
158
|
+
.ant-pagination-options .ant-select.ant-select-in-form-item {
|
|
159
|
+
width: auto;
|
|
160
|
+
}
|
|
161
|
+
|
|
107
162
|
/** select */
|
|
108
163
|
|
|
109
164
|
.ant-select-arrow {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lemon-fe/components",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"author": "鲁盛杰 <lusj@cnlemon.net>",
|
|
6
6
|
"homepage": "",
|
|
@@ -41,5 +41,5 @@
|
|
|
41
41
|
"react": "^17.0.2",
|
|
42
42
|
"react-dom": "^17.0.2"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "e3890cdc2b812e3a8af162990eb1dee841f8e32c"
|
|
45
45
|
}
|