@qn-pandora/pandora-component 4.4.6 → 5.0.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.
- package/es/components/InputNumberWithUnit/index.d.ts +1 -0
- package/es/components/InputNumberWithUnit/index.js +3 -3
- package/es/components/Table/ResizableTitle/index.js +34 -5
- package/es/components/Table/ResizableTitle/style.css +4 -3
- package/es/components/Table/ResizableTitle/style.less +2 -3
- package/es/components/Table/index.d.ts +7 -1
- package/es/components/Table/index.js +28 -16
- package/es/index.css +7389 -7388
- package/es/index.less +15 -15
- package/lib/components/InputNumberWithUnit/index.d.ts +1 -0
- package/lib/components/InputNumberWithUnit/index.js +3 -3
- package/lib/components/Table/ResizableTitle/index.js +53 -5
- package/lib/components/Table/ResizableTitle/style.css +4 -3
- package/lib/components/Table/ResizableTitle/style.less +2 -3
- package/lib/components/Table/index.d.ts +7 -1
- package/lib/components/Table/index.js +28 -16
- package/lib/index.css +2861 -2860
- package/lib/index.less +12 -12
- package/package.json +3 -3
@@ -26,7 +26,7 @@ var getUnit = function (value) {
|
|
26
26
|
return (value === null || value === void 0 ? void 0 : value.replace(/\d+/, '')) || '';
|
27
27
|
};
|
28
28
|
function InputNumberWithUnit(props) {
|
29
|
-
var value = props.value, onChange = props.onChange, onNumberChange = props.onNumberChange, onUnitChange = props.onUnitChange, className = props.className, unitClassName = props.unitClassName, placeholder = props.placeholder, unitOptions = props.unitOptions, _a = props.unitWidth, unitWidth = _a === void 0 ? 86 : _a, min = props.min, max = props.max;
|
29
|
+
var value = props.value, onChange = props.onChange, onNumberChange = props.onNumberChange, onUnitChange = props.onUnitChange, className = props.className, unitClassName = props.unitClassName, placeholder = props.placeholder, unitOptions = props.unitOptions, _a = props.unitWidth, unitWidth = _a === void 0 ? 86 : _a, min = props.min, max = props.max, readOnly = props.readOnly;
|
30
30
|
var _b = __read(useState(), 2), num = _b[0], setNum = _b[1];
|
31
31
|
var _c = __read(useState(), 2), unit = _c[0], setUnit = _c[1];
|
32
32
|
var controlled = Object.hasOwnProperty.call(props, 'value');
|
@@ -50,7 +50,7 @@ function InputNumberWithUnit(props) {
|
|
50
50
|
}
|
51
51
|
onUnitChange === null || onUnitChange === void 0 ? void 0 : onUnitChange(unit);
|
52
52
|
}, [num, onChange, onUnitChange, controlled, value]);
|
53
|
-
var addonAfterNode = (React.createElement(Selector, { options: unitOptions, className: unitClassName, value: controlled ? getUnit(value) : unit, style: { width: unitWidth }, onChange: onSelectorChange }));
|
54
|
-
return (React.createElement(InputNumber, { className: SDK_PREFIX + "-input-number-unit " + className, value: controlled ? getNum(value) : num, onChange: onInputChange, placeholder: placeholder, addonAfter: addonAfterNode, min: min, max: max }));
|
53
|
+
var addonAfterNode = (React.createElement(Selector, { options: unitOptions, className: unitClassName, value: controlled ? getUnit(value) : unit, style: { width: unitWidth }, onChange: onSelectorChange, disabled: readOnly }));
|
54
|
+
return (React.createElement(InputNumber, { className: SDK_PREFIX + "-input-number-unit " + className, value: controlled ? getNum(value) : num, onChange: onInputChange, placeholder: placeholder, addonAfter: addonAfterNode, min: min, max: max, disabled: readOnly }));
|
55
55
|
}
|
56
56
|
export default InputNumberWithUnit;
|
@@ -20,21 +20,50 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
20
20
|
}
|
21
21
|
return t;
|
22
22
|
};
|
23
|
-
|
23
|
+
var __read = (this && this.__read) || function (o, n) {
|
24
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
25
|
+
if (!m) return o;
|
26
|
+
var i = m.call(o), r, ar = [], e;
|
27
|
+
try {
|
28
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
29
|
+
}
|
30
|
+
catch (error) { e = { error: error }; }
|
31
|
+
finally {
|
32
|
+
try {
|
33
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
34
|
+
}
|
35
|
+
finally { if (e) throw e.error; }
|
36
|
+
}
|
37
|
+
return ar;
|
38
|
+
};
|
39
|
+
import React, { useState, useRef, useEffect } from 'react';
|
24
40
|
import { Resizable } from 'react-resizable';
|
25
41
|
import classnames from 'classnames';
|
26
42
|
import { Resizable as ResizableIcon } from '@qn-pandora/pandora-component-icons';
|
27
43
|
import { SDK_PREFIX } from '../../../constants/style';
|
28
44
|
var ResizableTitle = function (props) {
|
29
|
-
var onResize = props.onResize,
|
30
|
-
|
45
|
+
var onResize = props.onResize, propsWidth = props.width, className = props.className, isLastColumn = props.isLastColumn, restProps = __rest(props, ["onResize", "width", "className", "isLastColumn"]);
|
46
|
+
var _a = __read(useState(propsWidth), 2), width = _a[0], setWidth = _a[1];
|
47
|
+
var contentRef = useRef(null);
|
48
|
+
useEffect(function () {
|
49
|
+
// Set the initial width based on content
|
50
|
+
if (!width && contentRef.current) {
|
51
|
+
setWidth(contentRef.current.offsetWidth);
|
52
|
+
}
|
53
|
+
}, [width]);
|
54
|
+
var handleResize = function (event, params) {
|
55
|
+
setWidth(params.size.width);
|
56
|
+
onResize(event, params);
|
57
|
+
};
|
58
|
+
// 最后一列不添加拖拽按钮
|
59
|
+
if (!onResize || isLastColumn) {
|
31
60
|
return (React.createElement("th", __assign({}, restProps, { className: classnames(className, SDK_PREFIX + "-table-resizable-th") })));
|
32
61
|
}
|
33
|
-
return (React.createElement(Resizable, { width: width, height: 0, onResize:
|
62
|
+
return (React.createElement(Resizable, { axis: "x", width: width, className: SDK_PREFIX + "-table-resizable-Resizable", height: 0, onResize: handleResize, minConstraints: [40, 0], draggableOpts: { enableUserSelectHack: false }, handle: React.createElement("span", { className: SDK_PREFIX + "-table-resizable-handle", onClick: function (e) {
|
34
63
|
e.preventDefault();
|
35
64
|
e.stopPropagation();
|
36
65
|
} },
|
37
66
|
React.createElement(ResizableIcon, null)) },
|
38
|
-
React.createElement("th", __assign({}, restProps, { className: classnames(className, SDK_PREFIX + "-table-resizable-th") }))));
|
67
|
+
React.createElement("th", __assign({}, restProps, { className: classnames(className, SDK_PREFIX + "-table-resizable-th"), ref: contentRef }))));
|
39
68
|
};
|
40
69
|
export default ResizableTitle;
|
@@ -1,13 +1,14 @@
|
|
1
|
+
.pandora-sdk-table-resizable-th {
|
2
|
+
width: 100%;
|
3
|
+
}
|
1
4
|
.pandora-sdk-table-resizable-th .pandora-sdk-table-resizable-handle {
|
2
5
|
position: absolute;
|
3
6
|
cursor: col-resize;
|
4
|
-
right:
|
5
|
-
margin-left: 6px;
|
7
|
+
right: 1px;
|
6
8
|
height: 40%;
|
7
9
|
top: 50%;
|
8
10
|
-webkit-transform: translateY(-50%);
|
9
11
|
transform: translateY(-50%);
|
10
|
-
padding: 2px;
|
11
12
|
width: 8px;
|
12
13
|
opacity: 0;
|
13
14
|
-webkit-transition: opacity 0.2s ease-in-out;
|
@@ -1,15 +1,14 @@
|
|
1
1
|
@import '../../../style/theme.less';
|
2
2
|
|
3
3
|
.@{sdk-prefix}-table-resizable-th {
|
4
|
+
width: 100%;
|
4
5
|
.@{sdk-prefix}-table-resizable-handle {
|
5
6
|
position: absolute;
|
6
7
|
cursor: col-resize;
|
7
|
-
right:
|
8
|
-
margin-left: 6px;
|
8
|
+
right: 1px;
|
9
9
|
height: 40%;
|
10
10
|
top: 50%;
|
11
11
|
transform: translateY(-50%);
|
12
|
-
padding: 2px;
|
13
12
|
width: 8px;
|
14
13
|
opacity: 0;
|
15
14
|
transition: opacity 0.2s ease-in-out;
|
@@ -61,6 +61,12 @@ export interface ITableProps<T> extends Omit<TableProps<T>, 'columns'> {
|
|
61
61
|
draggable?: boolean | ETableSettingType;
|
62
62
|
saveSettingKey?: string;
|
63
63
|
onSettingChange?: (fields: ISaveFieldItem[]) => void;
|
64
|
+
/**
|
65
|
+
* 是否需要填充空白列, 默认为true
|
66
|
+
* 如果支持拖拽,在屏幕宽度大于table总的列宽的时候,会把剩余空间平均分到每一列上。那么拖拽一列会导致其他列的宽度都发生变更
|
67
|
+
* 添加一个空白列,宽度auto.可以解决此问题。如果可以接受上述问题,那就无需空白列,needEmptyColumn = false
|
68
|
+
*/
|
69
|
+
needEmptyColumn?: boolean;
|
64
70
|
}
|
65
71
|
/**
|
66
72
|
* pandora2.0风格的表格
|
@@ -108,7 +114,7 @@ declare class Table<T = any> extends React.Component<ITableProps<T>, any> {
|
|
108
114
|
updateSettingFields(columns: Array<IColumnType<T>>, settingFields: ISaveFieldItem[]): void;
|
109
115
|
handleHideColumnsChange(keys: string[]): Promise<void> | undefined;
|
110
116
|
getSortedColumns(): IKeyValues<any>[];
|
111
|
-
transfromColumns(columns: IKeyValues[]): IKeyValues<any>[];
|
117
|
+
transfromColumns(columns: IKeyValues[], needEmptyColumn?: boolean): IKeyValues<any>[];
|
112
118
|
getColumns(): IKeyValues<any>[];
|
113
119
|
getRowKey(row: any, index: number): any;
|
114
120
|
getSortCoulmns(columns: IKeyValues[]): IKeyValues<any>[];
|
@@ -387,8 +387,8 @@ var Table = /** @class */ (function (_super) {
|
|
387
387
|
};
|
388
388
|
// 如果支持拖拽,在屏幕宽度大于table总的列宽的时候,添加一个空白列,宽度auto.
|
389
389
|
// 空白列添加到右固定列的前面
|
390
|
-
Table.prototype.transfromColumns = function (columns) {
|
391
|
-
if (!this.resizable)
|
390
|
+
Table.prototype.transfromColumns = function (columns, needEmptyColumn) {
|
391
|
+
if (!this.resizable || needEmptyColumn === false)
|
392
392
|
return columns;
|
393
393
|
var cols = __spread(columns);
|
394
394
|
var firstFixedRightIndex = cols.findIndex(function (item) { return get(item, 'fixed') === 'right'; });
|
@@ -406,14 +406,14 @@ var Table = /** @class */ (function (_super) {
|
|
406
406
|
return cols;
|
407
407
|
};
|
408
408
|
Table.prototype.getColumns = function () {
|
409
|
-
var _a = this.props, showColumnSetting = _a.showColumnSetting, columnSettingOverlayClass = _a.columnSettingOverlayClass;
|
409
|
+
var _a = this.props, showColumnSetting = _a.showColumnSetting, columnSettingOverlayClass = _a.columnSettingOverlayClass, needEmptyColumn = _a.needEmptyColumn;
|
410
410
|
if (!showColumnSetting) {
|
411
|
-
return this.transfromColumns(this.columns);
|
411
|
+
return this.transfromColumns(this.columns, needEmptyColumn);
|
412
412
|
}
|
413
413
|
// 获取到列设置的options
|
414
414
|
var columnsSettingOptions = this.columnsSettingOptions;
|
415
415
|
var allCols = this.getSortedColumns();
|
416
|
-
this.transfromColumns(allCols);
|
416
|
+
this.transfromColumns(allCols, needEmptyColumn);
|
417
417
|
var length = allCols.length;
|
418
418
|
if (length > 0) {
|
419
419
|
var title = (React.createElement("span", { className: SDK_PREFIX + "-last-column-title" },
|
@@ -545,6 +545,7 @@ var Table = /** @class */ (function (_super) {
|
|
545
545
|
return noneSelected || disabled;
|
546
546
|
};
|
547
547
|
Table.prototype.handleResize = function (col, size, oldColumn) {
|
548
|
+
console.log('handleResize', col, size);
|
548
549
|
var newColumns = __spread(oldColumn);
|
549
550
|
newColumns.forEach(function (item) {
|
550
551
|
if (get(item, 'dataIndex') === col.dataIndex) {
|
@@ -554,11 +555,18 @@ var Table = /** @class */ (function (_super) {
|
|
554
555
|
var sizeMap = {};
|
555
556
|
var setttingFields = this.settingFields;
|
556
557
|
newColumns.forEach(function (element) {
|
557
|
-
if (element.dataIndex &&
|
558
|
+
if (element.dataIndex &&
|
559
|
+
isNumber(element.width) &&
|
560
|
+
!isNaN(element.width)) {
|
558
561
|
sizeMap[element.dataIndex] = element.width;
|
559
562
|
}
|
560
563
|
});
|
561
564
|
if (this.props.onSettingChange) {
|
565
|
+
setttingFields.forEach(function (field) {
|
566
|
+
if (sizeMap[field.field]) {
|
567
|
+
field.width = sizeMap[field.field];
|
568
|
+
}
|
569
|
+
});
|
562
570
|
this.props.onSettingChange(setttingFields);
|
563
571
|
}
|
564
572
|
else if (this.resizable && this.props.saveSettingKey) {
|
@@ -582,18 +590,22 @@ var Table = /** @class */ (function (_super) {
|
|
582
590
|
return isNumber(width) ? __assign(__assign({}, col), { width: width }) : col;
|
583
591
|
});
|
584
592
|
}
|
585
|
-
var transformColumns = columns === null || columns === void 0 ? void 0 : columns.map(function (it) {
|
593
|
+
var transformColumns = columns === null || columns === void 0 ? void 0 : columns.map(function (it, index) {
|
586
594
|
if (get(it, 'resizable') && _this.resizable) {
|
587
595
|
return __assign(__assign({}, it), { ellipsis: {
|
588
596
|
showTitle: true
|
589
|
-
}, onHeaderCell: function (col) {
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
+
}, onHeaderCell: function (col) {
|
598
|
+
var _a;
|
599
|
+
return ({
|
600
|
+
width: col.width,
|
601
|
+
// !传入newColumn,而不传入column是因为需要拿到有onHeaderCell的值,外面collumn的变化内部监听不到
|
602
|
+
onResize: function (_, _a) {
|
603
|
+
var size = _a.size;
|
604
|
+
_this.handleResize(col, size, transformColumns);
|
605
|
+
},
|
606
|
+
isLastColumn: index === ((_a = (columns || [])) === null || _a === void 0 ? void 0 : _a.length) - 1
|
607
|
+
});
|
608
|
+
} });
|
597
609
|
}
|
598
610
|
return it;
|
599
611
|
});
|
@@ -750,7 +762,7 @@ var Table = /** @class */ (function (_super) {
|
|
750
762
|
__decorate([
|
751
763
|
bind,
|
752
764
|
__metadata("design:type", Function),
|
753
|
-
__metadata("design:paramtypes", [Array]),
|
765
|
+
__metadata("design:paramtypes", [Array, Boolean]),
|
754
766
|
__metadata("design:returntype", void 0)
|
755
767
|
], Table.prototype, "transfromColumns", null);
|
756
768
|
__decorate([
|