feffery_antd_components 0.1.4 → 0.1.7
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/DESCRIPTION +1 -1
- package/NAMESPACE +2 -0
- package/Project.toml +1 -1
- package/README.md +2 -2
- package/build/lib/feffery_antd_components/AntdAffix.py +54 -0
- package/build/lib/feffery_antd_components/AntdAlert.py +58 -0
- package/build/lib/feffery_antd_components/AntdAnchor.py +60 -0
- package/build/lib/feffery_antd_components/AntdAvatar.py +79 -0
- package/build/lib/feffery_antd_components/AntdBackTop.py +52 -0
- package/build/lib/feffery_antd_components/AntdBadge.py +70 -0
- package/build/lib/feffery_antd_components/AntdBreadcrumb.py +74 -0
- package/build/lib/feffery_antd_components/AntdButton.py +68 -0
- package/build/lib/feffery_antd_components/AntdCalendar.py +75 -0
- package/build/lib/feffery_antd_components/AntdCard.py +86 -0
- package/build/lib/feffery_antd_components/AntdCardGrid.py +52 -0
- package/build/lib/feffery_antd_components/AntdCarousel.py +56 -0
- package/build/lib/feffery_antd_components/AntdCascader.py +93 -0
- package/build/lib/feffery_antd_components/AntdCheckbox.py +71 -0
- package/build/lib/feffery_antd_components/AntdCheckboxGroup.py +79 -0
- package/build/lib/feffery_antd_components/AntdCol.py +146 -0
- package/build/lib/feffery_antd_components/AntdCollapse.py +79 -0
- package/build/lib/feffery_antd_components/AntdComment.py +88 -0
- package/build/lib/feffery_antd_components/AntdContent.py +50 -0
- package/build/lib/feffery_antd_components/AntdCountdown.py +72 -0
- package/build/lib/feffery_antd_components/AntdDatePicker.py +95 -0
- package/build/lib/feffery_antd_components/AntdDateRangePicker.py +91 -0
- package/build/lib/feffery_antd_components/AntdDescriptionItem.py +58 -0
- package/build/lib/feffery_antd_components/AntdDescriptions.py +76 -0
- package/build/lib/feffery_antd_components/AntdDivider.py +62 -0
- package/build/lib/feffery_antd_components/AntdDraggerUpload.py +84 -0
- package/build/lib/feffery_antd_components/AntdDrawer.py +72 -0
- package/build/lib/feffery_antd_components/AntdDropdown.py +84 -0
- package/build/lib/feffery_antd_components/AntdEmpty.py +54 -0
- package/build/lib/feffery_antd_components/AntdFooter.py +50 -0
- package/build/lib/feffery_antd_components/AntdForm.py +72 -0
- package/build/lib/feffery_antd_components/AntdFormItem.py +84 -0
- package/build/lib/feffery_antd_components/AntdHeader.py +50 -0
- package/build/lib/feffery_antd_components/AntdIcon.py +48 -0
- package/build/lib/feffery_antd_components/AntdImage.py +62 -0
- package/build/lib/feffery_antd_components/AntdInput.py +101 -0
- package/build/lib/feffery_antd_components/AntdInputNumber.py +101 -0
- package/build/lib/feffery_antd_components/AntdLayout.py +50 -0
- package/build/lib/feffery_antd_components/AntdMentions.py +76 -0
- package/build/lib/feffery_antd_components/AntdMenu.py +81 -0
- package/build/lib/feffery_antd_components/AntdMessage.py +56 -0
- package/build/lib/feffery_antd_components/AntdModal.py +88 -0
- package/build/lib/feffery_antd_components/AntdNotification.py +60 -0
- package/build/lib/feffery_antd_components/AntdPageHeader.py +62 -0
- package/build/lib/feffery_antd_components/AntdPagination.py +95 -0
- package/build/lib/feffery_antd_components/AntdParagraph.py +70 -0
- package/build/lib/feffery_antd_components/AntdPasteImage.py +52 -0
- package/build/lib/feffery_antd_components/AntdPopconfirm.py +80 -0
- package/build/lib/feffery_antd_components/AntdPopover.py +74 -0
- package/build/lib/feffery_antd_components/AntdProgress.py +88 -0
- package/build/lib/feffery_antd_components/AntdRadio.py +54 -0
- package/build/lib/feffery_antd_components/AntdRadioGroup.py +89 -0
- package/build/lib/feffery_antd_components/AntdRate.py +60 -0
- package/build/lib/feffery_antd_components/AntdResult.py +52 -0
- package/build/lib/feffery_antd_components/AntdRibbon.py +54 -0
- package/build/lib/feffery_antd_components/AntdRow.py +72 -0
- package/build/lib/feffery_antd_components/AntdSelect.py +121 -0
- package/build/lib/feffery_antd_components/AntdSider.py +68 -0
- package/build/lib/feffery_antd_components/AntdSkeleton.py +86 -0
- package/build/lib/feffery_antd_components/AntdSlider.py +68 -0
- package/build/lib/feffery_antd_components/AntdSpace.py +60 -0
- package/build/lib/feffery_antd_components/AntdSpin.py +68 -0
- package/build/lib/feffery_antd_components/AntdStatistic.py +74 -0
- package/build/lib/feffery_antd_components/AntdSteps.py +72 -0
- package/build/lib/feffery_antd_components/AntdSwitch.py +75 -0
- package/build/lib/feffery_antd_components/AntdTabPane.py +66 -0
- package/build/lib/feffery_antd_components/AntdTable.py +264 -0
- package/build/lib/feffery_antd_components/AntdTabs.py +81 -0
- package/build/lib/feffery_antd_components/AntdTag.py +54 -0
- package/build/lib/feffery_antd_components/AntdTestLink.py +58 -0
- package/build/lib/feffery_antd_components/AntdText.py +72 -0
- package/build/lib/feffery_antd_components/AntdTimePicker.py +95 -0
- package/build/lib/feffery_antd_components/AntdTimeRangePicker.py +95 -0
- package/build/lib/feffery_antd_components/AntdTimeline.py +68 -0
- package/build/lib/feffery_antd_components/AntdTitle.py +74 -0
- package/build/lib/feffery_antd_components/AntdTooltip.py +64 -0
- package/build/lib/feffery_antd_components/AntdTransfer.py +99 -0
- package/build/lib/feffery_antd_components/AntdTree.py +103 -0
- package/build/lib/feffery_antd_components/AntdTreeSelect.py +107 -0
- package/build/lib/feffery_antd_components/AntdTypography.py +50 -0
- package/build/lib/feffery_antd_components/AntdUpload.py +92 -0
- package/build/lib/feffery_antd_components/AntdWatermark.py +64 -0
- package/build/lib/feffery_antd_components/Link.py +58 -0
- package/build/lib/feffery_antd_components/__init__.py +53 -0
- package/build/lib/feffery_antd_components/_imports_.py +161 -0
- package/build/lib/feffery_antd_components/feffery_antd_components.min.js +344 -0
- package/build/lib/feffery_antd_components/metadata.json +15596 -0
- package/build/lib/feffery_antd_components/package-info.json +81 -0
- package/feffery_antd_components/AntdAnchor.py +9 -3
- package/feffery_antd_components/AntdButton.py +5 -3
- package/feffery_antd_components/AntdCascader.py +5 -3
- package/feffery_antd_components/AntdDatePicker.py +5 -3
- package/feffery_antd_components/AntdDateRangePicker.py +5 -3
- package/feffery_antd_components/AntdDraggerUpload.py +6 -4
- package/feffery_antd_components/AntdImage.py +2 -2
- package/feffery_antd_components/AntdInput.py +5 -3
- package/feffery_antd_components/AntdInputNumber.py +5 -3
- package/feffery_antd_components/AntdMentions.py +5 -3
- package/feffery_antd_components/AntdMessage.py +5 -3
- package/feffery_antd_components/AntdPasteImage.py +52 -0
- package/feffery_antd_components/AntdSelect.py +7 -3
- package/feffery_antd_components/AntdTable.py +27 -3
- package/feffery_antd_components/AntdTimePicker.py +5 -3
- package/feffery_antd_components/AntdTimeRangePicker.py +5 -3
- package/feffery_antd_components/AntdTree.py +6 -10
- package/feffery_antd_components/AntdTreeSelect.py +7 -3
- package/feffery_antd_components/AntdUpload.py +16 -4
- package/feffery_antd_components/AntdWatermark.py +64 -0
- package/feffery_antd_components/_imports_.py +4 -0
- package/feffery_antd_components/feffery_antd_components.min.js +13 -13
- package/feffery_antd_components/metadata.json +680 -43
- package/feffery_antd_components/package-info.json +18 -14
- package/package.json +18 -14
- package/src/FefferyAntdComponents.jl +5 -3
- package/src/jl/'feffery'_antdanchor.jl +4 -1
- package/src/jl/'feffery'_antdbutton.jl +2 -1
- package/src/jl/'feffery'_antdcascader.jl +2 -1
- package/src/jl/'feffery'_antddatepicker.jl +2 -1
- package/src/jl/'feffery'_antddaterangepicker.jl +2 -1
- package/src/jl/'feffery'_antddraggerupload.jl +2 -1
- package/src/jl/'feffery'_antdimage.jl +2 -2
- package/src/jl/'feffery'_antdinput.jl +2 -1
- package/src/jl/'feffery'_antdinputnumber.jl +2 -1
- package/src/jl/'feffery'_antdmentions.jl +2 -1
- package/src/jl/'feffery'_antdmessage.jl +2 -1
- package/src/jl/'feffery'_antdpasteimage.jl +28 -0
- package/src/jl/'feffery'_antdselect.jl +3 -1
- package/src/jl/'feffery'_antdtable.jl +19 -5
- package/src/jl/'feffery'_antdtimepicker.jl +2 -1
- package/src/jl/'feffery'_antdtimerangepicker.jl +2 -1
- package/src/jl/'feffery'_antdtree.jl +3 -5
- package/src/jl/'feffery'_antdtreeselect.jl +3 -1
- package/src/jl/'feffery'_antdupload.jl +9 -2
- package/src/jl/'feffery'_antdwatermark.jl +39 -0
- package/src/lib/components/AntdAnchor.react.js +18 -3
- package/src/lib/components/AntdButton.react.js +5 -1
- package/src/lib/components/AntdCascader.react.js +5 -0
- package/src/lib/components/AntdDatePicker.react.js +5 -0
- package/src/lib/components/AntdDateRangePicker.react.js +5 -0
- package/src/lib/components/AntdDraggerUpload.react.js +41 -11
- package/src/lib/components/AntdImage.react.js +8 -2
- package/src/lib/components/AntdInput.react.js +8 -0
- package/src/lib/components/AntdInputNumber.react.js +5 -0
- package/src/lib/components/AntdMentions.react.js +5 -0
- package/src/lib/components/AntdMessage.react.js +6 -1
- package/src/lib/components/AntdPasteImage.react.js +170 -0
- package/src/lib/components/AntdSelect.react.js +11 -0
- package/src/lib/components/AntdTable.react.js +69 -6
- package/src/lib/components/AntdTimePicker.react.js +5 -0
- package/src/lib/components/AntdTimeRangePicker.react.js +5 -0
- package/src/lib/components/AntdTree.react.js +6 -13
- package/src/lib/components/AntdTreeSelect.react.js +11 -0
- package/src/lib/components/AntdUpload.react.js +78 -24
- package/src/lib/components/AntdWatermark.react.js +115 -0
- package/src/lib/components/styles.css +12 -11
- package/src/lib/components/tabs/AntdTabs.react.js +4 -0
- package/src/lib/index.js +5 -1
- package/usage.py +76 -1033
- package/webpack.config.js +9 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { Component, useContext, useState, useEffect, useRef } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { Table, Tooltip, Popover, Popconfirm, ConfigProvider, Typography, Input, Form, Tag, Button, Badge, Space, message } from 'antd';
|
|
3
|
+
import { Table, Tooltip, Popover, Popconfirm, ConfigProvider, Typography, Input, Form, Tag, Button, Badge, Space, Image, message } from 'antd';
|
|
4
4
|
import { TinyLine, TinyArea, TinyColumn, Progress, RingProgress } from '@ant-design/charts';
|
|
5
5
|
import Highlighter from 'react-highlight-words';
|
|
6
6
|
import { SearchOutlined, QuestionCircleOutlined } from '@ant-design/icons';
|
|
@@ -349,7 +349,10 @@ export default class AntdTable extends Component {
|
|
|
349
349
|
|
|
350
350
|
columns[i] = {
|
|
351
351
|
...{ align: 'center' },
|
|
352
|
-
...columns[i]
|
|
352
|
+
...columns[i],
|
|
353
|
+
...{
|
|
354
|
+
onCell: columns[i]?.conditionStyle ? eval(columns[i].conditionStyle) : columns[i]?.onCell
|
|
355
|
+
}
|
|
353
356
|
}
|
|
354
357
|
}
|
|
355
358
|
|
|
@@ -604,6 +607,21 @@ export default class AntdTable extends Component {
|
|
|
604
607
|
}
|
|
605
608
|
}
|
|
606
609
|
|
|
610
|
+
// 配置字段渲染模式为image的相关参数
|
|
611
|
+
for (let i = 0; i < columns.length; i++) {
|
|
612
|
+
// 当前字段具有renderOptions参数时且renderOptions参数是字典时
|
|
613
|
+
if (columns[i]['renderOptions']) {
|
|
614
|
+
if (columns[i]['renderOptions'].hasOwnProperty('renderType')) {
|
|
615
|
+
// 当renderOptions参数的renderType值设置为image时
|
|
616
|
+
if (columns[i]['renderOptions']['renderType'] == 'image') {
|
|
617
|
+
columns[i]['render'] = content => (
|
|
618
|
+
<Image src={content.src} height={content.height} preview={content.preview} />
|
|
619
|
+
)
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
|
|
607
625
|
// 配置字段渲染模式为button的相关参数
|
|
608
626
|
for (let i = 0; i < columns.length; i++) {
|
|
609
627
|
// 当前字段具有renderOptions参数时且renderOptions参数是字典时
|
|
@@ -958,7 +976,7 @@ AntdTable.propTypes = {
|
|
|
958
976
|
renderType: PropTypes.oneOf([
|
|
959
977
|
'link', 'ellipsis', 'mini-line', 'mini-bar', 'mini-progress',
|
|
960
978
|
'mini-ring-progress', 'mini-area', 'tags', 'button', 'copyable',
|
|
961
|
-
'status-badge'
|
|
979
|
+
'status-badge', 'image'
|
|
962
980
|
]),
|
|
963
981
|
|
|
964
982
|
// 当renderType='link'时,此参数会将传入的字符串作为渲染link的显示文字内容
|
|
@@ -989,6 +1007,9 @@ AntdTable.propTypes = {
|
|
|
989
1007
|
// 自定义列像素宽度
|
|
990
1008
|
width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
991
1009
|
|
|
1010
|
+
// 用于传入js函数字符串
|
|
1011
|
+
conditionStyle: PropTypes.string,
|
|
1012
|
+
|
|
992
1013
|
// 防止状态更新报错占位用,无实际意义
|
|
993
1014
|
ellipsis: PropTypes.any,
|
|
994
1015
|
|
|
@@ -998,6 +1019,9 @@ AntdTable.propTypes = {
|
|
|
998
1019
|
// 防止状态更新报错占位用,无实际意义
|
|
999
1020
|
render: PropTypes.any,
|
|
1000
1021
|
|
|
1022
|
+
// 确保onCell属性类型检查通过
|
|
1023
|
+
onCell: PropTypes.any,
|
|
1024
|
+
|
|
1001
1025
|
// 备份title信息
|
|
1002
1026
|
title_: PropTypes.string
|
|
1003
1027
|
})
|
|
@@ -1032,8 +1056,13 @@ AntdTable.propTypes = {
|
|
|
1032
1056
|
// 记录已被选择的行记录值列表
|
|
1033
1057
|
selectedRows: PropTypes.array,
|
|
1034
1058
|
|
|
1035
|
-
//
|
|
1036
|
-
sticky: PropTypes.
|
|
1059
|
+
// 设置粘性表头属性,默认为false
|
|
1060
|
+
sticky: PropTypes.oneOfType([
|
|
1061
|
+
PropTypes.bool,
|
|
1062
|
+
PropTypes.exact({
|
|
1063
|
+
offsetHeader: PropTypes.number
|
|
1064
|
+
})
|
|
1065
|
+
]),
|
|
1037
1066
|
|
|
1038
1067
|
// 设置是否启用行悬浮事件监听(此功能可能会干扰其他正常表格功能,慎用),默认为false
|
|
1039
1068
|
enableHoverListen: PropTypes.bool,
|
|
@@ -1119,7 +1148,26 @@ AntdTable.propTypes = {
|
|
|
1119
1148
|
PropTypes.string,
|
|
1120
1149
|
PropTypes.number
|
|
1121
1150
|
])
|
|
1122
|
-
})
|
|
1151
|
+
}),
|
|
1152
|
+
|
|
1153
|
+
// 多按钮模式
|
|
1154
|
+
PropTypes.arrayOf(
|
|
1155
|
+
PropTypes.exact({
|
|
1156
|
+
// 设置是否禁用按钮,默认为false
|
|
1157
|
+
disabled: PropTypes.bool,
|
|
1158
|
+
// 设置按钮的type属性,同AntdButton
|
|
1159
|
+
type: PropTypes.oneOf(['primary', 'ghost', 'dashed', 'link', 'text', 'default']),
|
|
1160
|
+
// 设置按钮的danger属性,同AntdButton
|
|
1161
|
+
danger: PropTypes.bool,
|
|
1162
|
+
// 设置按钮的css样式
|
|
1163
|
+
style: PropTypes.object,
|
|
1164
|
+
// 设置按钮的文本内容
|
|
1165
|
+
content: PropTypes.oneOfType([
|
|
1166
|
+
PropTypes.string,
|
|
1167
|
+
PropTypes.number
|
|
1168
|
+
])
|
|
1169
|
+
})
|
|
1170
|
+
)
|
|
1123
1171
|
]),
|
|
1124
1172
|
|
|
1125
1173
|
// status-badge模式
|
|
@@ -1131,6 +1179,21 @@ AntdTable.propTypes = {
|
|
|
1131
1179
|
PropTypes.string,
|
|
1132
1180
|
PropTypes.number
|
|
1133
1181
|
])
|
|
1182
|
+
}),
|
|
1183
|
+
|
|
1184
|
+
// image模式
|
|
1185
|
+
PropTypes.exact({
|
|
1186
|
+
// 设置图片的src属性
|
|
1187
|
+
src: PropTypes.string,
|
|
1188
|
+
|
|
1189
|
+
// 设置图片的高度
|
|
1190
|
+
height: PropTypes.oneOfType([
|
|
1191
|
+
PropTypes.string,
|
|
1192
|
+
PropTypes.number
|
|
1193
|
+
]),
|
|
1194
|
+
|
|
1195
|
+
// 设置是否允许预览,默认为true
|
|
1196
|
+
preview: PropTypes.bool
|
|
1134
1197
|
})
|
|
1135
1198
|
])
|
|
1136
1199
|
)
|
|
@@ -37,6 +37,7 @@ export default class AntdTimePicker extends Component {
|
|
|
37
37
|
placeholder,
|
|
38
38
|
bordered,
|
|
39
39
|
size,
|
|
40
|
+
status,
|
|
40
41
|
persistence,
|
|
41
42
|
persisted_props,
|
|
42
43
|
persistence_type,
|
|
@@ -70,6 +71,7 @@ export default class AntdTimePicker extends Component {
|
|
|
70
71
|
defaultValue={defaultValue ? moment(defaultValue, format) : undefined}
|
|
71
72
|
use12Hours={use12Hours}
|
|
72
73
|
allowClear={allowClear}
|
|
74
|
+
status={status}
|
|
73
75
|
persistence={persistence}
|
|
74
76
|
persisted_props={persisted_props}
|
|
75
77
|
persistence_type={persistence_type}
|
|
@@ -136,6 +138,9 @@ AntdTimePicker.propTypes = {
|
|
|
136
138
|
'small', 'middle', 'large'
|
|
137
139
|
]),
|
|
138
140
|
|
|
141
|
+
// 设置校验状态,可选的有'error'、'warning'
|
|
142
|
+
status: PropTypes.oneOf(['error', 'warning']),
|
|
143
|
+
|
|
139
144
|
/**
|
|
140
145
|
* Object that holds the loading state object coming from dash-renderer
|
|
141
146
|
*/
|
|
@@ -39,6 +39,7 @@ export default class AntdTimeRangePicker extends Component {
|
|
|
39
39
|
allowClear,
|
|
40
40
|
bordered,
|
|
41
41
|
size,
|
|
42
|
+
status,
|
|
42
43
|
persistence,
|
|
43
44
|
persisted_props,
|
|
44
45
|
persistence_type,
|
|
@@ -88,6 +89,7 @@ export default class AntdTimeRangePicker extends Component {
|
|
|
88
89
|
) :
|
|
89
90
|
undefined
|
|
90
91
|
}
|
|
92
|
+
status={status}
|
|
91
93
|
persistence={persistence}
|
|
92
94
|
persisted_props={persisted_props}
|
|
93
95
|
persistence_type={persistence_type}
|
|
@@ -157,6 +159,9 @@ AntdTimeRangePicker.propTypes = {
|
|
|
157
159
|
'small', 'middle', 'large'
|
|
158
160
|
]),
|
|
159
161
|
|
|
162
|
+
// 设置校验状态,可选的有'error'、'warning'
|
|
163
|
+
status: PropTypes.oneOf(['error', 'warning']),
|
|
164
|
+
|
|
160
165
|
/**
|
|
161
166
|
* Object that holds the loading state object coming from dash-renderer
|
|
162
167
|
*/
|
|
@@ -98,12 +98,11 @@ export default class AntdTree extends Component {
|
|
|
98
98
|
setProps({ selectedKeys: e })
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
const listenCheck = (e) => {
|
|
102
|
-
setProps({ checkedKeys: e })
|
|
101
|
+
const listenCheck = (checkedKeys, e) => {
|
|
102
|
+
setProps({ checkedKeys: checkedKeys, halfCheckedKeys: e.halfCheckedKeys })
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
const listenExpand = (e) => {
|
|
106
|
-
console.log({ e })
|
|
107
106
|
setProps({ expandedKeys: e })
|
|
108
107
|
}
|
|
109
108
|
|
|
@@ -222,16 +221,10 @@ AntdTree.propTypes = {
|
|
|
222
221
|
selectedKeys: PropTypes.array,
|
|
223
222
|
|
|
224
223
|
// 用于存储当前已被勾选的节点key数组
|
|
225
|
-
checkedKeys: PropTypes.
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
checked: PropTypes.array,
|
|
230
|
-
|
|
231
|
-
// 对应半勾选状态下的节点key数组
|
|
232
|
-
halfChecked: PropTypes.array
|
|
233
|
-
})
|
|
234
|
-
]),
|
|
224
|
+
checkedKeys: PropTypes.array,
|
|
225
|
+
|
|
226
|
+
// 不可控属性,用于记录当前状态下处于半勾选状态下的节点key数组
|
|
227
|
+
halfCheckedKeys: PropTypes.array,
|
|
235
228
|
|
|
236
229
|
// 对应当前已展开节点的key值数组
|
|
237
230
|
expandedKeys: PropTypes.arrayOf(PropTypes.string),
|
|
@@ -41,6 +41,8 @@ export default class AntdTreeSelect extends Component {
|
|
|
41
41
|
treeExpandedKeys,
|
|
42
42
|
virtual,
|
|
43
43
|
disabled,
|
|
44
|
+
placement,
|
|
45
|
+
status,
|
|
44
46
|
setProps,
|
|
45
47
|
persistence,
|
|
46
48
|
persisted_props,
|
|
@@ -87,6 +89,8 @@ export default class AntdTreeSelect extends Component {
|
|
|
87
89
|
showSearch={true}
|
|
88
90
|
virtual={virtual}
|
|
89
91
|
disabled={disabled}
|
|
92
|
+
placement={placement}
|
|
93
|
+
status={status}
|
|
90
94
|
persistence={persistence}
|
|
91
95
|
persisted_props={persisted_props}
|
|
92
96
|
persistence_type={persistence_type}
|
|
@@ -217,6 +221,13 @@ AntdTreeSelect.propTypes = {
|
|
|
217
221
|
// 设置是否禁用整个组件
|
|
218
222
|
disabled: PropTypes.bool,
|
|
219
223
|
|
|
224
|
+
// 设置悬浮展开层的方位,可选的有'bottomLeft'、'bottomRight'、'topLeft'、'topRight'
|
|
225
|
+
// 默认为'bottomLeft'
|
|
226
|
+
placement: PropTypes.oneOf(['bottomLeft', 'bottomRight', 'topLeft', 'topRight']),
|
|
227
|
+
|
|
228
|
+
// 设置校验状态,可选的有'error'、'warning'
|
|
229
|
+
status: PropTypes.oneOf(['error', 'warning']),
|
|
230
|
+
|
|
220
231
|
loading_state: PropTypes.shape({
|
|
221
232
|
/**
|
|
222
233
|
* Determines if the component is loading or not
|
|
@@ -23,6 +23,7 @@ const AntdUpload = (props) => {
|
|
|
23
23
|
buttonContent,
|
|
24
24
|
fileTypes,
|
|
25
25
|
fileMaxSize,
|
|
26
|
+
showUploadList,
|
|
26
27
|
multiple,
|
|
27
28
|
directory,
|
|
28
29
|
failedTooltipInfo,
|
|
@@ -59,20 +60,42 @@ const AntdUpload = (props) => {
|
|
|
59
60
|
return sizeCheck;
|
|
60
61
|
},
|
|
61
62
|
onChange(info) {
|
|
62
|
-
console.log(info)
|
|
63
63
|
|
|
64
64
|
if (info.file.status === 'done') {
|
|
65
65
|
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
66
|
+
// 检查是否为多文件上传模式
|
|
67
|
+
if (multiple || directory) {
|
|
68
|
+
// 检查上传列表中是否全部文件都已完成上传
|
|
69
|
+
if (info.fileList.every(file => file.status === 'done')) {
|
|
70
|
+
console.log(info.fileList)
|
|
71
|
+
// 更新任务记录
|
|
72
|
+
setProps({
|
|
73
|
+
lastUploadTaskRecord: info.fileList.map(
|
|
74
|
+
(file) => {
|
|
75
|
+
return {
|
|
76
|
+
fileName: file.name,
|
|
77
|
+
fileSize: file.size,
|
|
78
|
+
completeTimestamp: new Date().getTime(),
|
|
79
|
+
taskStatus: 'success',
|
|
80
|
+
taskId: uploadId
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
})
|
|
74
85
|
}
|
|
75
|
-
}
|
|
86
|
+
} else {
|
|
87
|
+
// 更新任务记录
|
|
88
|
+
setProps({
|
|
89
|
+
lastUploadTaskRecord: {
|
|
90
|
+
fileName: info.file.name,
|
|
91
|
+
fileSize: info.file.size,
|
|
92
|
+
completeTimestamp: new Date().getTime(),
|
|
93
|
+
taskStatus: 'success',
|
|
94
|
+
taskId: uploadId
|
|
95
|
+
}
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
|
|
76
99
|
message.success(`${info.file.name} 上传成功!`);
|
|
77
100
|
} else if (info.file.status === 'error') {
|
|
78
101
|
|
|
@@ -104,7 +127,11 @@ const AntdUpload = (props) => {
|
|
|
104
127
|
)
|
|
105
128
|
|
|
106
129
|
// 基于fileListMaxLength参数设置,对fileList状态进行更新
|
|
107
|
-
|
|
130
|
+
if (fileListMaxLength) {
|
|
131
|
+
updateFileList(info.fileList.slice(-fileListMaxLength))
|
|
132
|
+
} else {
|
|
133
|
+
updateFileList(info.fileList)
|
|
134
|
+
}
|
|
108
135
|
},
|
|
109
136
|
};
|
|
110
137
|
|
|
@@ -123,6 +150,7 @@ const AntdUpload = (props) => {
|
|
|
123
150
|
style={style}
|
|
124
151
|
fileList={fileList}
|
|
125
152
|
multiple={multiple}
|
|
153
|
+
showUploadList={showUploadList}
|
|
126
154
|
directory={directory}
|
|
127
155
|
data-dash-is-loading={
|
|
128
156
|
(loading_state && loading_state.is_loading) || undefined
|
|
@@ -175,24 +203,50 @@ AntdUpload.propTypes = {
|
|
|
175
203
|
// 自定义上传失败文件鼠标悬浮tooltip文字内容,默认为'上传失败'
|
|
176
204
|
failedTooltipInfo: PropTypes.string,
|
|
177
205
|
|
|
206
|
+
// 设置是否显示已上传文件列表,默认为true
|
|
207
|
+
showUploadList: PropTypes.bool,
|
|
208
|
+
|
|
178
209
|
// 用于在每次文件上传动作完成后,记录相关的信息
|
|
179
|
-
lastUploadTaskRecord: PropTypes.
|
|
180
|
-
//
|
|
181
|
-
|
|
210
|
+
lastUploadTaskRecord: PropTypes.oneOfType([
|
|
211
|
+
// 单文件
|
|
212
|
+
PropTypes.exact({
|
|
213
|
+
// 记录文件名称
|
|
214
|
+
fileName: PropTypes.string,
|
|
182
215
|
|
|
183
|
-
|
|
184
|
-
|
|
216
|
+
// 记录文件大小
|
|
217
|
+
fileSize: PropTypes.number,
|
|
185
218
|
|
|
186
|
-
|
|
187
|
-
|
|
219
|
+
// 记录完成时间戳信息
|
|
220
|
+
completeTimestamp: PropTypes.number,
|
|
188
221
|
|
|
189
|
-
|
|
190
|
-
|
|
222
|
+
// 记录此次上传任务的状态信息,'success'表示成功,'failed'表示失败
|
|
223
|
+
taskStatus: PropTypes.string,
|
|
191
224
|
|
|
192
|
-
|
|
193
|
-
|
|
225
|
+
// 记录本次任务的id信息,若最近一次任务状态为'failed',则不会携带此信息
|
|
226
|
+
taskId: PropTypes.string
|
|
194
227
|
|
|
195
|
-
|
|
228
|
+
}),
|
|
229
|
+
// 文件夹或多文件上传
|
|
230
|
+
PropTypes.arrayOf(
|
|
231
|
+
PropTypes.exact({
|
|
232
|
+
// 记录文件名称
|
|
233
|
+
fileName: PropTypes.string,
|
|
234
|
+
|
|
235
|
+
// 记录文件大小
|
|
236
|
+
fileSize: PropTypes.number,
|
|
237
|
+
|
|
238
|
+
// 记录完成时间戳信息
|
|
239
|
+
completeTimestamp: PropTypes.number,
|
|
240
|
+
|
|
241
|
+
// 记录此次上传任务的状态信息,'success'表示成功,'failed'表示失败
|
|
242
|
+
taskStatus: PropTypes.string,
|
|
243
|
+
|
|
244
|
+
// 记录本次任务的id信息,若最近一次任务状态为'failed',则不会携带此信息
|
|
245
|
+
taskId: PropTypes.string
|
|
246
|
+
|
|
247
|
+
})
|
|
248
|
+
)
|
|
249
|
+
]),
|
|
196
250
|
|
|
197
251
|
loading_state: PropTypes.shape({
|
|
198
252
|
/**
|
|
@@ -218,7 +272,7 @@ AntdUpload.propTypes = {
|
|
|
218
272
|
|
|
219
273
|
// 设置默认参数
|
|
220
274
|
AntdUpload.defaultProps = {
|
|
221
|
-
fileListMaxLength:
|
|
275
|
+
fileListMaxLength: null,
|
|
222
276
|
fileMaxSize: 500,
|
|
223
277
|
lastUploadTaskRecord: {},
|
|
224
278
|
locale: 'zh-cn'
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { WaterMark } from '@ant-design/pro-layout';
|
|
4
|
+
import '@ant-design/pro-layout/dist/layout.css';
|
|
5
|
+
|
|
6
|
+
const parseChildrenToArray = children => {
|
|
7
|
+
if (children && !Array.isArray(children)) {
|
|
8
|
+
return [children];
|
|
9
|
+
}
|
|
10
|
+
return children;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// 定义水印组件AntdWatermark,api参数参考https://procomponents.ant.design/components/water-mark
|
|
14
|
+
export default class AntdWatermark extends Component {
|
|
15
|
+
render() {
|
|
16
|
+
// 取得必要属性或参数
|
|
17
|
+
let {
|
|
18
|
+
id,
|
|
19
|
+
children,
|
|
20
|
+
className,
|
|
21
|
+
style,
|
|
22
|
+
content,
|
|
23
|
+
rotate,
|
|
24
|
+
zIndex,
|
|
25
|
+
fontColor,
|
|
26
|
+
fontSize,
|
|
27
|
+
gapX,
|
|
28
|
+
gapY,
|
|
29
|
+
loading_state
|
|
30
|
+
} = this.props;
|
|
31
|
+
|
|
32
|
+
children = parseChildrenToArray(children)
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<WaterMark id={id}
|
|
36
|
+
className={className}
|
|
37
|
+
style={style}
|
|
38
|
+
content={content}
|
|
39
|
+
rotate={rotate}
|
|
40
|
+
zIndex={zIndex}
|
|
41
|
+
fontColor={fontColor}
|
|
42
|
+
fontSize={fontSize}
|
|
43
|
+
gapX={gapX}
|
|
44
|
+
gapY={gapY}
|
|
45
|
+
data-dash-is-loading={
|
|
46
|
+
(loading_state && loading_state.is_loading) || undefined
|
|
47
|
+
}>
|
|
48
|
+
{children}
|
|
49
|
+
</WaterMark>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// 定义参数或属性
|
|
55
|
+
AntdWatermark.propTypes = {
|
|
56
|
+
// 部件id
|
|
57
|
+
id: PropTypes.string,
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* The content of the tab - will only be displayed if this tab is selected
|
|
61
|
+
*/
|
|
62
|
+
children: PropTypes.node,
|
|
63
|
+
|
|
64
|
+
// css类名
|
|
65
|
+
className: PropTypes.string,
|
|
66
|
+
|
|
67
|
+
// 自定义css字典
|
|
68
|
+
style: PropTypes.object,
|
|
69
|
+
|
|
70
|
+
// 设置水印文字内容
|
|
71
|
+
content: PropTypes.string,
|
|
72
|
+
|
|
73
|
+
// 设置水印旋转角度,默认-22
|
|
74
|
+
rotate: PropTypes.number,
|
|
75
|
+
|
|
76
|
+
// 设置水印z-index
|
|
77
|
+
zIndex: PropTypes.number,
|
|
78
|
+
|
|
79
|
+
// 设置水印文字颜色
|
|
80
|
+
fontColor: PropTypes.string,
|
|
81
|
+
|
|
82
|
+
// 设置水印字体像素大小,默认16
|
|
83
|
+
fontSize: PropTypes.number,
|
|
84
|
+
|
|
85
|
+
// 水印之间的水平像素间距,默认为212
|
|
86
|
+
gapX: PropTypes.number,
|
|
87
|
+
|
|
88
|
+
// 水印之间的垂直间距,默认为222
|
|
89
|
+
gapY: PropTypes.number,
|
|
90
|
+
|
|
91
|
+
loading_state: PropTypes.shape({
|
|
92
|
+
/**
|
|
93
|
+
* Determines if the component is loading or not
|
|
94
|
+
*/
|
|
95
|
+
is_loading: PropTypes.bool,
|
|
96
|
+
/**
|
|
97
|
+
* Holds which property is loading
|
|
98
|
+
*/
|
|
99
|
+
prop_name: PropTypes.string,
|
|
100
|
+
/**
|
|
101
|
+
* Holds the name of the component that is loading
|
|
102
|
+
*/
|
|
103
|
+
component_name: PropTypes.string
|
|
104
|
+
}),
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Dash-assigned callback that should be called to report property changes
|
|
108
|
+
* to Dash, to make them available for callbacks.
|
|
109
|
+
*/
|
|
110
|
+
setProps: PropTypes.func
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// 设置默认参数
|
|
114
|
+
AntdWatermark.defaultProps = {
|
|
115
|
+
}
|
|
@@ -39,14 +39,6 @@
|
|
|
39
39
|
line-height: 1;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
/* .ant-spin-nested-loading {
|
|
43
|
-
height: 100%!important;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.ant-spin-container {
|
|
47
|
-
height: 100%!important;
|
|
48
|
-
} */
|
|
49
|
-
|
|
50
42
|
.comment-action {
|
|
51
43
|
padding-left: 8px;
|
|
52
44
|
cursor: 'auto';
|
|
@@ -61,6 +53,15 @@
|
|
|
61
53
|
vertical-align: -0.125em !important;
|
|
62
54
|
}
|
|
63
55
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
56
|
+
|
|
57
|
+
.feffery-paste-image-container {
|
|
58
|
+
height: 400px;
|
|
59
|
+
overflow: auto;
|
|
60
|
+
border: 1px solid #d9d9d9;
|
|
61
|
+
transition: all .3s, height 0s;
|
|
62
|
+
cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAkdJREFUSEtjZMABcnNny3ByMpQyMzNpISv59u3XtokTM/tx6UMXZ4QJJCTM5+Dh+WIB4zMxMe83M1NhkJUVRdFz8eJ9hgcPXr/+9etXGEzi3z+mG9OmZb/AZinYgqbqqWVvvzC2Gyv8YgLxP3xjYvjwR4AhM8sTq0Obm1czmCj+gsu9+cx879MPxicNbTn2WH2Qnzftb5rTF7Dhh2+yM7z8yMzw8x8rgyAfKwPci1Cd/xkYGF69+8Ugwv2bQV3yN4OqxB+wzPaLnA+fvGdxmDAh8wGyJWD9teVT70dYflUAsb/+ZGTgZAMZQxgwIdl+9Bbbg0uPmBOnTMk9gNcCwsZiV0GRBTP38eC1l52dlYGL+efnt1/++5Hlg23XJRmi4/1xWjJ16jqGz5+/MTAw/N84aVJ2AMlBRMiCSZPWMLS3JzLk509nYGRknDZxYmY2zBKMSMbmTEIW9PevZOjqSgFrBVnCwMAwf9KkrCQQgyoW9PQsZ+jtTYO7DdkSqljQ2bmU4f9/rEm7iioWgJz+8+d3hl+/fsJ9cfHi7W+HDl3zppoF6JbQxAJkS2hmAcyS06evUD+IkJP44cNnvh4+fNWHqnGAbMGhQ+c/HzlyyQ9sQU3ZlIeRVt/kcJUFhDIaNn0oFlSXTX0UZfVVlmYWVJVNeRxk8l2GlQV7PbDrJv7CjhgfzFEQ/R0oyvtPCJvim+/FGWLjfUmqKlCCCKSzrHhyAA87QzA2U5i5RMKcXUzYSLHhwYNniEgmpLGsbG4XITXY5Lu6kssAynVWbI/9nxAAAAAASUVORK5CYII=), auto;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.feffery-paste-image-container:hover {
|
|
66
|
+
border: 1px solid rgb(64, 169, 255);
|
|
67
|
+
}
|
|
@@ -107,6 +107,10 @@ export default class AntdTabs extends Component {
|
|
|
107
107
|
}
|
|
108
108
|
overlayStyle={{ maxWidth: "250px" }}
|
|
109
109
|
placement={"right"}
|
|
110
|
+
getPopupContainer={(triggerNode) => {
|
|
111
|
+
console.log(triggerNode.parentNode)
|
|
112
|
+
return triggerNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
|
|
113
|
+
}}
|
|
110
114
|
>
|
|
111
115
|
<InfoCircleOutlined
|
|
112
116
|
style={{
|
package/src/lib/index.js
CHANGED
|
@@ -76,6 +76,8 @@ import AntdCalendar from './components/AntdCalendar.react'
|
|
|
76
76
|
import AntdComment from './components/AntdComment.react'
|
|
77
77
|
import AntdDescriptions from './components/descriptions/AntdDescriptions.react'
|
|
78
78
|
import AntdDescriptionItem from './components/descriptions/AntdDescriptionItem.react'
|
|
79
|
+
import AntdWatermark from './components/AntdWatermark.react'
|
|
80
|
+
import AntdPasteImage from './components/AntdPasteImage.react'
|
|
79
81
|
|
|
80
82
|
export {
|
|
81
83
|
AntdDatePicker,
|
|
@@ -154,5 +156,7 @@ export {
|
|
|
154
156
|
AntdCalendar,
|
|
155
157
|
AntdComment,
|
|
156
158
|
AntdDescriptions,
|
|
157
|
-
AntdDescriptionItem
|
|
159
|
+
AntdDescriptionItem,
|
|
160
|
+
AntdWatermark,
|
|
161
|
+
AntdPasteImage
|
|
158
162
|
};
|