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.
Files changed (163) hide show
  1. package/DESCRIPTION +1 -1
  2. package/NAMESPACE +2 -0
  3. package/Project.toml +1 -1
  4. package/README.md +2 -2
  5. package/build/lib/feffery_antd_components/AntdAffix.py +54 -0
  6. package/build/lib/feffery_antd_components/AntdAlert.py +58 -0
  7. package/build/lib/feffery_antd_components/AntdAnchor.py +60 -0
  8. package/build/lib/feffery_antd_components/AntdAvatar.py +79 -0
  9. package/build/lib/feffery_antd_components/AntdBackTop.py +52 -0
  10. package/build/lib/feffery_antd_components/AntdBadge.py +70 -0
  11. package/build/lib/feffery_antd_components/AntdBreadcrumb.py +74 -0
  12. package/build/lib/feffery_antd_components/AntdButton.py +68 -0
  13. package/build/lib/feffery_antd_components/AntdCalendar.py +75 -0
  14. package/build/lib/feffery_antd_components/AntdCard.py +86 -0
  15. package/build/lib/feffery_antd_components/AntdCardGrid.py +52 -0
  16. package/build/lib/feffery_antd_components/AntdCarousel.py +56 -0
  17. package/build/lib/feffery_antd_components/AntdCascader.py +93 -0
  18. package/build/lib/feffery_antd_components/AntdCheckbox.py +71 -0
  19. package/build/lib/feffery_antd_components/AntdCheckboxGroup.py +79 -0
  20. package/build/lib/feffery_antd_components/AntdCol.py +146 -0
  21. package/build/lib/feffery_antd_components/AntdCollapse.py +79 -0
  22. package/build/lib/feffery_antd_components/AntdComment.py +88 -0
  23. package/build/lib/feffery_antd_components/AntdContent.py +50 -0
  24. package/build/lib/feffery_antd_components/AntdCountdown.py +72 -0
  25. package/build/lib/feffery_antd_components/AntdDatePicker.py +95 -0
  26. package/build/lib/feffery_antd_components/AntdDateRangePicker.py +91 -0
  27. package/build/lib/feffery_antd_components/AntdDescriptionItem.py +58 -0
  28. package/build/lib/feffery_antd_components/AntdDescriptions.py +76 -0
  29. package/build/lib/feffery_antd_components/AntdDivider.py +62 -0
  30. package/build/lib/feffery_antd_components/AntdDraggerUpload.py +84 -0
  31. package/build/lib/feffery_antd_components/AntdDrawer.py +72 -0
  32. package/build/lib/feffery_antd_components/AntdDropdown.py +84 -0
  33. package/build/lib/feffery_antd_components/AntdEmpty.py +54 -0
  34. package/build/lib/feffery_antd_components/AntdFooter.py +50 -0
  35. package/build/lib/feffery_antd_components/AntdForm.py +72 -0
  36. package/build/lib/feffery_antd_components/AntdFormItem.py +84 -0
  37. package/build/lib/feffery_antd_components/AntdHeader.py +50 -0
  38. package/build/lib/feffery_antd_components/AntdIcon.py +48 -0
  39. package/build/lib/feffery_antd_components/AntdImage.py +62 -0
  40. package/build/lib/feffery_antd_components/AntdInput.py +101 -0
  41. package/build/lib/feffery_antd_components/AntdInputNumber.py +101 -0
  42. package/build/lib/feffery_antd_components/AntdLayout.py +50 -0
  43. package/build/lib/feffery_antd_components/AntdMentions.py +76 -0
  44. package/build/lib/feffery_antd_components/AntdMenu.py +81 -0
  45. package/build/lib/feffery_antd_components/AntdMessage.py +56 -0
  46. package/build/lib/feffery_antd_components/AntdModal.py +88 -0
  47. package/build/lib/feffery_antd_components/AntdNotification.py +60 -0
  48. package/build/lib/feffery_antd_components/AntdPageHeader.py +62 -0
  49. package/build/lib/feffery_antd_components/AntdPagination.py +95 -0
  50. package/build/lib/feffery_antd_components/AntdParagraph.py +70 -0
  51. package/build/lib/feffery_antd_components/AntdPasteImage.py +52 -0
  52. package/build/lib/feffery_antd_components/AntdPopconfirm.py +80 -0
  53. package/build/lib/feffery_antd_components/AntdPopover.py +74 -0
  54. package/build/lib/feffery_antd_components/AntdProgress.py +88 -0
  55. package/build/lib/feffery_antd_components/AntdRadio.py +54 -0
  56. package/build/lib/feffery_antd_components/AntdRadioGroup.py +89 -0
  57. package/build/lib/feffery_antd_components/AntdRate.py +60 -0
  58. package/build/lib/feffery_antd_components/AntdResult.py +52 -0
  59. package/build/lib/feffery_antd_components/AntdRibbon.py +54 -0
  60. package/build/lib/feffery_antd_components/AntdRow.py +72 -0
  61. package/build/lib/feffery_antd_components/AntdSelect.py +121 -0
  62. package/build/lib/feffery_antd_components/AntdSider.py +68 -0
  63. package/build/lib/feffery_antd_components/AntdSkeleton.py +86 -0
  64. package/build/lib/feffery_antd_components/AntdSlider.py +68 -0
  65. package/build/lib/feffery_antd_components/AntdSpace.py +60 -0
  66. package/build/lib/feffery_antd_components/AntdSpin.py +68 -0
  67. package/build/lib/feffery_antd_components/AntdStatistic.py +74 -0
  68. package/build/lib/feffery_antd_components/AntdSteps.py +72 -0
  69. package/build/lib/feffery_antd_components/AntdSwitch.py +75 -0
  70. package/build/lib/feffery_antd_components/AntdTabPane.py +66 -0
  71. package/build/lib/feffery_antd_components/AntdTable.py +264 -0
  72. package/build/lib/feffery_antd_components/AntdTabs.py +81 -0
  73. package/build/lib/feffery_antd_components/AntdTag.py +54 -0
  74. package/build/lib/feffery_antd_components/AntdTestLink.py +58 -0
  75. package/build/lib/feffery_antd_components/AntdText.py +72 -0
  76. package/build/lib/feffery_antd_components/AntdTimePicker.py +95 -0
  77. package/build/lib/feffery_antd_components/AntdTimeRangePicker.py +95 -0
  78. package/build/lib/feffery_antd_components/AntdTimeline.py +68 -0
  79. package/build/lib/feffery_antd_components/AntdTitle.py +74 -0
  80. package/build/lib/feffery_antd_components/AntdTooltip.py +64 -0
  81. package/build/lib/feffery_antd_components/AntdTransfer.py +99 -0
  82. package/build/lib/feffery_antd_components/AntdTree.py +103 -0
  83. package/build/lib/feffery_antd_components/AntdTreeSelect.py +107 -0
  84. package/build/lib/feffery_antd_components/AntdTypography.py +50 -0
  85. package/build/lib/feffery_antd_components/AntdUpload.py +92 -0
  86. package/build/lib/feffery_antd_components/AntdWatermark.py +64 -0
  87. package/build/lib/feffery_antd_components/Link.py +58 -0
  88. package/build/lib/feffery_antd_components/__init__.py +53 -0
  89. package/build/lib/feffery_antd_components/_imports_.py +161 -0
  90. package/build/lib/feffery_antd_components/feffery_antd_components.min.js +344 -0
  91. package/build/lib/feffery_antd_components/metadata.json +15596 -0
  92. package/build/lib/feffery_antd_components/package-info.json +81 -0
  93. package/feffery_antd_components/AntdAnchor.py +9 -3
  94. package/feffery_antd_components/AntdButton.py +5 -3
  95. package/feffery_antd_components/AntdCascader.py +5 -3
  96. package/feffery_antd_components/AntdDatePicker.py +5 -3
  97. package/feffery_antd_components/AntdDateRangePicker.py +5 -3
  98. package/feffery_antd_components/AntdDraggerUpload.py +6 -4
  99. package/feffery_antd_components/AntdImage.py +2 -2
  100. package/feffery_antd_components/AntdInput.py +5 -3
  101. package/feffery_antd_components/AntdInputNumber.py +5 -3
  102. package/feffery_antd_components/AntdMentions.py +5 -3
  103. package/feffery_antd_components/AntdMessage.py +5 -3
  104. package/feffery_antd_components/AntdPasteImage.py +52 -0
  105. package/feffery_antd_components/AntdSelect.py +7 -3
  106. package/feffery_antd_components/AntdTable.py +27 -3
  107. package/feffery_antd_components/AntdTimePicker.py +5 -3
  108. package/feffery_antd_components/AntdTimeRangePicker.py +5 -3
  109. package/feffery_antd_components/AntdTree.py +6 -10
  110. package/feffery_antd_components/AntdTreeSelect.py +7 -3
  111. package/feffery_antd_components/AntdUpload.py +16 -4
  112. package/feffery_antd_components/AntdWatermark.py +64 -0
  113. package/feffery_antd_components/_imports_.py +4 -0
  114. package/feffery_antd_components/feffery_antd_components.min.js +13 -13
  115. package/feffery_antd_components/metadata.json +680 -43
  116. package/feffery_antd_components/package-info.json +18 -14
  117. package/package.json +18 -14
  118. package/src/FefferyAntdComponents.jl +5 -3
  119. package/src/jl/'feffery'_antdanchor.jl +4 -1
  120. package/src/jl/'feffery'_antdbutton.jl +2 -1
  121. package/src/jl/'feffery'_antdcascader.jl +2 -1
  122. package/src/jl/'feffery'_antddatepicker.jl +2 -1
  123. package/src/jl/'feffery'_antddaterangepicker.jl +2 -1
  124. package/src/jl/'feffery'_antddraggerupload.jl +2 -1
  125. package/src/jl/'feffery'_antdimage.jl +2 -2
  126. package/src/jl/'feffery'_antdinput.jl +2 -1
  127. package/src/jl/'feffery'_antdinputnumber.jl +2 -1
  128. package/src/jl/'feffery'_antdmentions.jl +2 -1
  129. package/src/jl/'feffery'_antdmessage.jl +2 -1
  130. package/src/jl/'feffery'_antdpasteimage.jl +28 -0
  131. package/src/jl/'feffery'_antdselect.jl +3 -1
  132. package/src/jl/'feffery'_antdtable.jl +19 -5
  133. package/src/jl/'feffery'_antdtimepicker.jl +2 -1
  134. package/src/jl/'feffery'_antdtimerangepicker.jl +2 -1
  135. package/src/jl/'feffery'_antdtree.jl +3 -5
  136. package/src/jl/'feffery'_antdtreeselect.jl +3 -1
  137. package/src/jl/'feffery'_antdupload.jl +9 -2
  138. package/src/jl/'feffery'_antdwatermark.jl +39 -0
  139. package/src/lib/components/AntdAnchor.react.js +18 -3
  140. package/src/lib/components/AntdButton.react.js +5 -1
  141. package/src/lib/components/AntdCascader.react.js +5 -0
  142. package/src/lib/components/AntdDatePicker.react.js +5 -0
  143. package/src/lib/components/AntdDateRangePicker.react.js +5 -0
  144. package/src/lib/components/AntdDraggerUpload.react.js +41 -11
  145. package/src/lib/components/AntdImage.react.js +8 -2
  146. package/src/lib/components/AntdInput.react.js +8 -0
  147. package/src/lib/components/AntdInputNumber.react.js +5 -0
  148. package/src/lib/components/AntdMentions.react.js +5 -0
  149. package/src/lib/components/AntdMessage.react.js +6 -1
  150. package/src/lib/components/AntdPasteImage.react.js +170 -0
  151. package/src/lib/components/AntdSelect.react.js +11 -0
  152. package/src/lib/components/AntdTable.react.js +69 -6
  153. package/src/lib/components/AntdTimePicker.react.js +5 -0
  154. package/src/lib/components/AntdTimeRangePicker.react.js +5 -0
  155. package/src/lib/components/AntdTree.react.js +6 -13
  156. package/src/lib/components/AntdTreeSelect.react.js +11 -0
  157. package/src/lib/components/AntdUpload.react.js +78 -24
  158. package/src/lib/components/AntdWatermark.react.js +115 -0
  159. package/src/lib/components/styles.css +12 -11
  160. package/src/lib/components/tabs/AntdTabs.react.js +4 -0
  161. package/src/lib/index.js +5 -1
  162. package/usage.py +76 -1033
  163. 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
- // 设置是否开启粘性头部,默认为false
1036
- sticky: PropTypes.bool,
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.oneOfType([
226
- PropTypes.array,
227
- PropTypes.exact({
228
- // 对应完整勾选状态下的节点key数组
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
- setProps({
68
- lastUploadTaskRecord: {
69
- fileName: info.file.name,
70
- fileSize: info.file.size,
71
- completeTimestamp: new Date().getTime(),
72
- taskStatus: 'success',
73
- taskId: uploadId
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
- updateFileList(info.fileList.slice(-fileListMaxLength))
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.exact({
180
- // 记录文件名称
181
- fileName: PropTypes.string,
210
+ lastUploadTaskRecord: PropTypes.oneOfType([
211
+ // 单文件
212
+ PropTypes.exact({
213
+ // 记录文件名称
214
+ fileName: PropTypes.string,
182
215
 
183
- // 记录文件大小
184
- fileSize: PropTypes.number,
216
+ // 记录文件大小
217
+ fileSize: PropTypes.number,
185
218
 
186
- // 记录完成时间戳信息
187
- completeTimestamp: PropTypes.number,
219
+ // 记录完成时间戳信息
220
+ completeTimestamp: PropTypes.number,
188
221
 
189
- // 记录此次上传任务的状态信息,'success'表示成功,'failed'表示失败
190
- taskStatus: PropTypes.string,
222
+ // 记录此次上传任务的状态信息,'success'表示成功,'failed'表示失败
223
+ taskStatus: PropTypes.string,
191
224
 
192
- // 记录本次任务的id信息,若最近一次任务状态为'failed',则不会携带此信息
193
- taskId: PropTypes.string
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: 3,
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
- /* .ant-breadcrumb-link > svg {
65
- vertical-align: middle;
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
  };