feffery_antd_components 0.1.16 → 0.2.0-rc0

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 (148) hide show
  1. package/DESCRIPTION +1 -1
  2. package/NAMESPACE +1 -0
  3. package/Project.toml +1 -1
  4. package/README-en_US.md +51 -0
  5. package/README.md +14 -5
  6. package/feffery_antd_components/AntdAlert.py +1 -1
  7. package/feffery_antd_components/AntdAnchor.py +1 -1
  8. package/feffery_antd_components/AntdAvatar.py +1 -1
  9. package/feffery_antd_components/AntdBackTop.py +1 -1
  10. package/feffery_antd_components/AntdButton.py +10 -6
  11. package/feffery_antd_components/AntdCarousel.py +1 -1
  12. package/feffery_antd_components/AntdCascader.py +9 -5
  13. package/feffery_antd_components/AntdCol.py +1 -1
  14. package/feffery_antd_components/AntdContent.py +1 -1
  15. package/feffery_antd_components/AntdCustomSkeleton.py +1 -1
  16. package/feffery_antd_components/AntdDraggerUpload.py +1 -1
  17. package/feffery_antd_components/AntdDrawer.py +1 -1
  18. package/feffery_antd_components/AntdFooter.py +1 -1
  19. package/feffery_antd_components/AntdHeader.py +1 -1
  20. package/feffery_antd_components/AntdIcon.py +8 -4
  21. package/feffery_antd_components/AntdImage.py +1 -1
  22. package/feffery_antd_components/AntdInput.py +16 -8
  23. package/feffery_antd_components/AntdInputNumber.py +11 -7
  24. package/feffery_antd_components/AntdLayout.py +1 -1
  25. package/feffery_antd_components/AntdModal.py +10 -4
  26. package/feffery_antd_components/AntdParagraph.py +1 -1
  27. package/feffery_antd_components/AntdPasteImage.py +1 -1
  28. package/feffery_antd_components/AntdPopupCard.py +72 -0
  29. package/feffery_antd_components/AntdRibbon.py +3 -3
  30. package/feffery_antd_components/AntdRow.py +1 -1
  31. package/feffery_antd_components/AntdSegmented.py +5 -3
  32. package/feffery_antd_components/AntdSegmentedColoring.py +7 -3
  33. package/feffery_antd_components/AntdSider.py +1 -1
  34. package/feffery_antd_components/AntdSkeleton.py +1 -1
  35. package/feffery_antd_components/AntdSpace.py +1 -1
  36. package/feffery_antd_components/AntdSpin.py +2 -2
  37. package/feffery_antd_components/AntdStatistic.py +1 -1
  38. package/feffery_antd_components/AntdTabPane.py +1 -1
  39. package/feffery_antd_components/AntdTable.py +55 -7
  40. package/feffery_antd_components/AntdTag.py +1 -1
  41. package/feffery_antd_components/AntdText.py +1 -1
  42. package/feffery_antd_components/AntdTitle.py +1 -1
  43. package/feffery_antd_components/AntdTree.py +6 -4
  44. package/feffery_antd_components/AntdTreeSelect.py +8 -6
  45. package/feffery_antd_components/_imports_.py +2 -0
  46. package/feffery_antd_components/feffery_antd_components.min.js +1 -1
  47. package/feffery_antd_components/metadata.json +1042 -93
  48. package/feffery_antd_components/package-info.json +6 -2
  49. package/git-operations.md +0 -1
  50. package/images//345/233/275/351/231/205/345/214/226/347/244/272/344/276/213.png +0 -0
  51. package/package.json +6 -2
  52. package/setup.py +0 -1
  53. package/src/FefferyAntdComponents.jl +4 -3
  54. package/src/jl/'feffery'_antdalert.jl +1 -1
  55. package/src/jl/'feffery'_antdanchor.jl +1 -1
  56. package/src/jl/'feffery'_antdavatar.jl +1 -1
  57. package/src/jl/'feffery'_antdbacktop.jl +1 -1
  58. package/src/jl/'feffery'_antdbutton.jl +4 -2
  59. package/src/jl/'feffery'_antdcarousel.jl +1 -1
  60. package/src/jl/'feffery'_antdcascader.jl +4 -2
  61. package/src/jl/'feffery'_antdcol.jl +1 -1
  62. package/src/jl/'feffery'_antdcontent.jl +1 -1
  63. package/src/jl/'feffery'_antdcustomskeleton.jl +1 -1
  64. package/src/jl/'feffery'_antddraggerupload.jl +1 -1
  65. package/src/jl/'feffery'_antddrawer.jl +1 -1
  66. package/src/jl/'feffery'_antdfooter.jl +1 -1
  67. package/src/jl/'feffery'_antdheader.jl +1 -1
  68. package/src/jl/'feffery'_antdicon.jl +4 -2
  69. package/src/jl/'feffery'_antdimage.jl +1 -1
  70. package/src/jl/'feffery'_antdinput.jl +8 -4
  71. package/src/jl/'feffery'_antdinputnumber.jl +5 -3
  72. package/src/jl/'feffery'_antdlayout.jl +1 -1
  73. package/src/jl/'feffery'_antdmodal.jl +5 -2
  74. package/src/jl/'feffery'_antdparagraph.jl +1 -1
  75. package/src/jl/'feffery'_antdpasteimage.jl +1 -1
  76. package/src/jl/'feffery'_antdpopupcard.jl +43 -0
  77. package/src/jl/'feffery'_antdribbon.jl +1 -1
  78. package/src/jl/'feffery'_antdrow.jl +1 -1
  79. package/src/jl/'feffery'_antdsegmented.jl +5 -4
  80. package/src/jl/'feffery'_antdsegmentedcoloring.jl +3 -1
  81. package/src/jl/'feffery'_antdsider.jl +1 -1
  82. package/src/jl/'feffery'_antdskeleton.jl +1 -1
  83. package/src/jl/'feffery'_antdspace.jl +1 -1
  84. package/src/jl/'feffery'_antdspin.jl +2 -2
  85. package/src/jl/'feffery'_antdstatistic.jl +1 -1
  86. package/src/jl/'feffery'_antdtable.jl +31 -4
  87. package/src/jl/'feffery'_antdtabpane.jl +1 -1
  88. package/src/jl/'feffery'_antdtag.jl +1 -1
  89. package/src/jl/'feffery'_antdtext.jl +1 -1
  90. package/src/jl/'feffery'_antdtitle.jl +1 -1
  91. package/src/jl/'feffery'_antdtree.jl +3 -2
  92. package/src/jl/'feffery'_antdtreeselect.jl +3 -2
  93. package/src/lib/components/AntdAlert.react.js +16 -3
  94. package/src/lib/components/AntdAnchor.react.js +79 -70
  95. package/src/lib/components/AntdAvatar.react.js +21 -4
  96. package/src/lib/components/AntdBackTop.react.js +11 -2
  97. package/src/lib/components/AntdButton.react.js +82 -54
  98. package/src/lib/components/AntdCarousel.react.js +11 -2
  99. package/src/lib/components/AntdCascader.react.js +128 -82
  100. package/src/lib/components/AntdCheckboxGroup.react.js +2 -0
  101. package/src/lib/components/AntdDrawer.react.js +11 -2
  102. package/src/lib/components/AntdIcon.react.js +70 -37
  103. package/src/lib/components/AntdImage.react.js +16 -3
  104. package/src/lib/components/AntdInput.react.js +212 -175
  105. package/src/lib/components/AntdInputNumber.react.js +12 -2
  106. package/src/lib/components/AntdModal.react.js +22 -1
  107. package/src/lib/components/AntdPasteImage.react.js +11 -2
  108. package/src/lib/components/AntdPopupCard.react.js +241 -0
  109. package/src/lib/components/AntdRibbon.react.js +1 -1
  110. package/src/lib/components/AntdSegmented.react.js +19 -4
  111. package/src/lib/components/AntdSegmentedColoring.react.js +107 -82
  112. package/src/lib/components/AntdSelect.react.js +5 -0
  113. package/src/lib/components/AntdSpace.react.js +21 -4
  114. package/src/lib/components/AntdSpin.react.js +21 -6
  115. package/src/lib/components/AntdStatistic.react.js +11 -2
  116. package/src/lib/components/AntdTable.react.js +252 -18
  117. package/src/lib/components/AntdTag.react.js +12 -2
  118. package/src/lib/components/AntdTree.react.js +182 -136
  119. package/src/lib/components/AntdTreeSelect.react.js +144 -101
  120. package/src/lib/components/grid/AntdCol.react.js +11 -2
  121. package/src/lib/components/grid/AntdRow.react.js +12 -3
  122. package/src/lib/components/layout/AntdContent.react.js +11 -2
  123. package/src/lib/components/layout/AntdFooter.react.js +11 -2
  124. package/src/lib/components/layout/AntdHeader.react.js +11 -2
  125. package/src/lib/components/layout/AntdLayout.react.js +11 -2
  126. package/src/lib/components/layout/AntdSider.react.js +11 -2
  127. package/src/lib/components/skeleton/AntdCustomSkeleton.react.js +11 -3
  128. package/src/lib/components/skeleton/AntdSkeleton.react.js +11 -2
  129. package/src/lib/components/styles.css +4 -0
  130. package/src/lib/components/tabs/AntdTabPane.react.js +11 -2
  131. package/src/lib/components/typography/AntdParagraph.react.js +11 -2
  132. package/src/lib/components/typography/AntdText.react.js +11 -2
  133. package/src/lib/components/typography/AntdTitle.react.js +11 -2
  134. package/src/lib/components/upload/AntdDraggerUpload.react.js +11 -2
  135. package/src/lib/components/utils.js +17 -2
  136. package/src/lib/index.js +24 -1
  137. package/tests/DebounceTest/app.py +89 -0
  138. package/tests/SegmentedColoringTest/app.py +106 -0
  139. package/tests/TableCellClickTest/app.py +67 -0
  140. package/tests/TableCellRowMergeTest/app.py +88 -0
  141. package/tests/TableEmptyContentTest/app.py +37 -0
  142. package/tests/TableMiniChartAdvanceTest/app.py +85 -0
  143. package/tests/TreeNodeStyleTest/app.py +73 -0
  144. package/tests/TreeTest/app.py +96 -0
  145. package/tests/VirtualClassNameTest/app.py +49 -0
  146. package/usage.py +125 -62
  147. package/webpack.config.js +45 -11
  148. package/tests/UploadTest/app.py +0 -70
@@ -0,0 +1,241 @@
1
+ import React, { useRef, useState } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { str2Locale } from './locales.react';
4
+ import { Modal, ConfigProvider } from 'antd';
5
+ import {
6
+ CloseCircleFilled,
7
+ CloseCircleOutlined,
8
+ CloseCircleTwoTone
9
+ } from "@ant-design/icons";
10
+ import 'antd/dist/antd.css';
11
+ import Draggable from "react-draggable";
12
+
13
+ // 定义弹出卡片组件AntdPopupCard,api参数参考https://ant.design/components/modal-cn/
14
+ const AntdPopupCard = (props) => {
15
+ // 取得必要属性或参数
16
+ const {
17
+ id,
18
+ children,
19
+ className,
20
+ key,
21
+ style,
22
+ locale,
23
+ visible,
24
+ title,
25
+ width,
26
+ transitionType,
27
+ closable,
28
+ closeIconType,
29
+ draggable,
30
+ zIndex,
31
+ bodyStyle,
32
+ setProps,
33
+ loading_state
34
+ } = props;
35
+
36
+ const [disabled, setDisabled] = useState(false);
37
+ const [bounds, setBounds] = useState({
38
+ left: 0,
39
+ top: 0,
40
+ bottom: 0,
41
+ right: 0
42
+ });
43
+ const draggleRef = useRef(null);
44
+
45
+ const onStart = (_event, uiData) => {
46
+ const { clientWidth, clientHeight } = window.document.documentElement;
47
+ const targetRect = draggleRef.current.getBoundingClientRect();
48
+
49
+ if (!targetRect) {
50
+ return;
51
+ }
52
+
53
+ setBounds({
54
+ left: -targetRect.left + uiData.x,
55
+ right: clientWidth - (targetRect.right - uiData.x),
56
+ top: -targetRect.top + uiData.y,
57
+ bottom: clientHeight - (targetRect.bottom - uiData.y)
58
+ });
59
+ };
60
+
61
+ // 返回定制化的前端组件
62
+ return (
63
+ <ConfigProvider locale={str2Locale.get(locale)}>
64
+ <Modal
65
+ id={id}
66
+ className={className}
67
+ style={style}
68
+ key={key}
69
+ title={
70
+ <div
71
+ style={{
72
+ width: "100%",
73
+ cursor: draggable ? "move" : 'inherit'
74
+ }}
75
+ onMouseOver={() => {
76
+ if (disabled) {
77
+ setDisabled(false);
78
+ }
79
+ }}
80
+ onMouseOut={() => {
81
+ setDisabled(true);
82
+ }}
83
+ >
84
+ {title}
85
+ {
86
+ closable ?
87
+ closeIconType === "outlined" ?
88
+ (<CloseCircleOutlined
89
+ style={{
90
+ position: "absolute",
91
+ top: -12,
92
+ right: -12,
93
+ fontSize: 24,
94
+ cursor: "pointer"
95
+ }}
96
+ onClick={() => setProps({ visible: false })}
97
+ />) :
98
+ (
99
+ closeIconType == 'two-tone' ?
100
+ ((<CloseCircleTwoTone
101
+ style={{
102
+ position: "absolute",
103
+ top: -12,
104
+ right: -12,
105
+ fontSize: 24,
106
+ cursor: "pointer"
107
+ }}
108
+ onClick={() => setProps({ visible: false })}
109
+ />)) :
110
+ (<CloseCircleFilled
111
+ style={{
112
+ position: "absolute",
113
+ top: -12,
114
+ right: -12,
115
+ fontSize: 24,
116
+ cursor: "pointer"
117
+ }}
118
+ onClick={() => setProps({ visible: false })}
119
+ />)
120
+ ) :
121
+ null
122
+ }
123
+ </div>
124
+ }
125
+ transitionName={transitionType === 'none' ? '' : `ant-${transitionType}`}
126
+ width={width}
127
+ visible={visible}
128
+ zIndex={zIndex}
129
+ bodyStyle={bodyStyle}
130
+ mask={false}
131
+ maskClosable={false}
132
+ closable={false}
133
+ footer={false}
134
+ wrapClassName={'ant-modal-wrap-overwrite'}
135
+ modalRender={
136
+ draggable ? (modal) => (
137
+ <Draggable
138
+ disabled={disabled}
139
+ bounds={bounds}
140
+ onStart={(event, uiData) => onStart(event, uiData)}
141
+ >
142
+ <div ref={draggleRef}>{modal}</div>
143
+ </Draggable>
144
+ ) : undefined}
145
+ data-dash-is-loading={
146
+ (loading_state && loading_state.is_loading) || undefined
147
+ }
148
+ >{children}</Modal>
149
+ </ConfigProvider>
150
+ );
151
+ }
152
+
153
+ // 定义参数或属性
154
+ AntdPopupCard.propTypes = {
155
+ // 组件id
156
+ id: PropTypes.string,
157
+
158
+ // 内嵌文字的文本内容
159
+ children: PropTypes.node,
160
+
161
+ // css类名
162
+ className: PropTypes.string,
163
+
164
+ // 自定义css字典
165
+ style: PropTypes.object,
166
+
167
+ // 辅助刷新用唯一标识key值
168
+ key: PropTypes.string,
169
+
170
+ // 设置语言环境,可选的有'zh-cn'、'en-us'
171
+ locale: PropTypes.oneOf(['zh-cn', 'en-us']),
172
+
173
+ // 设置标题内容
174
+ title: PropTypes.node,
175
+
176
+ // 设置&记录当前弹出卡片是否可见,默认为true
177
+ visible: PropTypes.bool,
178
+
179
+ // 自定义对话框的像素宽度
180
+ width: PropTypes.oneOfType([
181
+ PropTypes.number,
182
+ PropTypes.string
183
+ ]),
184
+
185
+ // 设置卡片显隐动画类型,可选的有'fade'、'zoom'、'zoom-big'、'zoom-big-fast'、'zoom-up'、
186
+ // 'zoom-down'、'zoom-left'、'zoom-right'、'slide-up'、'slide-down'、'slide-left'、
187
+ // 'slide-right'、'move-up'、'move-down'、'move-left'、'move-right'
188
+ transitionType: PropTypes.oneOf([
189
+ 'none', 'fade', 'zoom', 'zoom-big', 'zoom-big-fast', 'zoom-up',
190
+ 'zoom-down', 'zoom-left', 'zoom-right', 'slide-up', 'slide-down', 'slide-left',
191
+ 'slide-right', 'move-up', 'move-down', 'move-left', 'move-right'
192
+ ]),
193
+
194
+ // 设置是否渲染关闭按钮,默认为true
195
+ closable: PropTypes.bool,
196
+
197
+ // 设置关闭按钮类型,可选的有'default'、'outlined'、'two-tone'
198
+ closeIconType: PropTypes.oneOf(['default', 'outlined', 'two-tone']),
199
+
200
+ // 设置是否可拖拽,默认为false
201
+ draggable: PropTypes.bool,
202
+
203
+ // 设置弹出卡片的zIndex,默认为1000
204
+ zIndex: PropTypes.number,
205
+
206
+ // 自定义弹出卡片主体区域css样式
207
+ bodyStyle: PropTypes.object,
208
+
209
+ /**
210
+ * Dash-assigned callback that should be called to report property changes
211
+ * to Dash, to make them available for callbacks.
212
+ */
213
+ setProps: PropTypes.func,
214
+
215
+ loading_state: PropTypes.shape({
216
+ /**
217
+ * Determines if the component is loading or not
218
+ */
219
+ is_loading: PropTypes.bool,
220
+ /**
221
+ * Holds which property is loading
222
+ */
223
+ prop_name: PropTypes.string,
224
+ /**
225
+ * Holds the name of the component that is loading
226
+ */
227
+ component_name: PropTypes.string
228
+ }),
229
+ };
230
+
231
+ // 设置默认参数
232
+ AntdPopupCard.defaultProps = {
233
+ locale: 'zh-cn',
234
+ transitionType: 'fade',
235
+ closeIconType: 'default',
236
+ draggable: false,
237
+ visible: true,
238
+ closable: true
239
+ }
240
+
241
+ export default AntdPopupCard;
@@ -62,7 +62,7 @@ AntdRibbon.propTypes = {
62
62
  placement: PropTypes.oneOf(['start', 'end']),
63
63
 
64
64
  // 设置缎带中需要填入的文字
65
- text: PropTypes.string,
65
+ text: PropTypes.node,
66
66
 
67
67
  loading_state: PropTypes.shape({
68
68
  /**
@@ -2,6 +2,8 @@ import React, { Component } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { Segmented } from 'antd';
4
4
  import 'antd/dist/antd.css';
5
+ import AntdIcon from "./AntdIcon.react"
6
+ import propTypes from 'prop-types';
5
7
 
6
8
  // 定义分段控制器组件AntdSegmented,api参数参考https://ant.design/components/segmented-cn/
7
9
  export default class AntdSegmented extends Component {
@@ -45,7 +47,14 @@ export default class AntdSegmented extends Component {
45
47
  className={className}
46
48
  style={style}
47
49
  key={key}
48
- options={options}
50
+ options={
51
+ options.map(item => {
52
+ return {
53
+ ...item,
54
+ icon: item.icon && <AntdIcon icon={item.icon} />
55
+ }
56
+ })
57
+ }
49
58
  defaultValue={defaultValue}
50
59
  value={value}
51
60
  block={block}
@@ -82,16 +91,22 @@ AntdSegmented.propTypes = {
82
91
  options: PropTypes.arrayOf(
83
92
  PropTypes.exact({
84
93
  // 设置选项的标题内容
85
- label: PropTypes.string,
94
+ label: propTypes.oneOfType([
95
+ PropTypes.string,
96
+ PropTypes.node
97
+ ]).isRequired,
86
98
 
87
99
  // 设置选项的对应值
88
100
  value: PropTypes.oneOfType([
89
101
  PropTypes.string,
90
102
  PropTypes.number
91
- ]),
103
+ ]).isRequired,
92
104
 
93
105
  // 设置是否禁用当前选项
94
- disabled: PropTypes.bool
106
+ disabled: PropTypes.bool,
107
+
108
+ // 传入与AntdIcon相通的icon代号
109
+ icon: PropTypes.string
95
110
  })
96
111
  ),
97
112
 
@@ -2,9 +2,11 @@
2
2
  /* eslint-disable no-unused-vars */
3
3
  import React from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import { InputNumber, Space, message } from 'antd';
5
+ import { InputNumber, Space, message, Typography } from 'antd';
6
6
  import 'antd/dist/antd.css';
7
7
 
8
+ const { Text } = Typography;
9
+
8
10
  const size2size = new Map([
9
11
  ["small", "24px"],
10
12
  ["default", "32px"],
@@ -31,11 +33,13 @@ const AntdSegmentedColoring = (props) => {
31
33
  step,
32
34
  precision,
33
35
  readOnly,
36
+ pureLegend,
34
37
  breakpoints,
35
38
  colors,
36
39
  inputNumberStyle,
37
40
  colorBlockPosition,
38
41
  colorBlockStyle,
42
+ pureLegendLabelStyle,
39
43
  loading_state,
40
44
  setProps
41
45
  } = props;
@@ -45,7 +49,6 @@ const AntdSegmentedColoring = (props) => {
45
49
  id={id}
46
50
  key={key}
47
51
  style={{
48
- border: bordered ? "1px solid #d9d9d9" : 'none',
49
52
  borderRadius: "2px",
50
53
  padding: "12px 20px",
51
54
  ...style
@@ -58,7 +61,7 @@ const AntdSegmentedColoring = (props) => {
58
61
  >
59
62
  {breakpoints.slice(0, breakpoints.length - 1).map((v, i) => {
60
63
  return (
61
- <Space key={`color-segment-${i}`}>
64
+ <Space style={{ display: 'flex' }} size={"small"}>
62
65
  {colorBlockPosition === 'left' ?
63
66
  (<div
64
67
  style={{
@@ -67,83 +70,97 @@ const AntdSegmentedColoring = (props) => {
67
70
  width: size2size.get(size),
68
71
  ...colorBlockStyle
69
72
  }}
70
- />) : null}
71
- <InputNumber
72
- style={inputNumberStyle}
73
- size={size}
74
- bordered={bordered}
75
- controls={controls}
76
- disabled={disabled}
77
- keyboard={keyboard}
78
- placeholder={placeholder}
79
- min={min}
80
- max={max}
81
- step={step}
82
- precision={precision}
83
- readOnly={readOnly}
84
- value={breakpoints[i]}
85
- onChange={(e) => {
86
- if (e !== null && i === 0 && e < breakpoints[i + 1]) {
87
- let _breakpoints = [...breakpoints];
88
- _breakpoints[i] = e;
89
- setProps({ breakpoints: _breakpoints });
90
- } else if (
91
- e !== null &&
92
- i > 0 &&
93
- e > breakpoints[i - 1] &&
94
- e < breakpoints[i + 1]
95
- ) {
96
- let _breakpoints = [...breakpoints];
97
- _breakpoints[i] = e;
98
- setProps({ breakpoints: _breakpoints });
99
- } else if (e !== null) {
100
- message.warning({
101
- content: "数值超出相邻断点,请调整后再输入!",
102
- duration: 1.5
103
- });
104
- }
105
- }}
106
- />
107
- <span>~</span>
108
- <InputNumber
109
- style={inputNumberStyle}
110
- size={size}
111
- bordered={bordered}
112
- controls={controls}
113
- disabled={disabled}
114
- keyboard={keyboard}
115
- placeholder={placeholder}
116
- min={min}
117
- max={max}
118
- step={step}
119
- precision={precision}
120
- readOnly={readOnly}
121
- value={breakpoints[i + 1]}
122
- onChange={(e) => {
123
- if (
124
- e !== null &&
125
- i === breakpoints.length - 2 &&
126
- e > breakpoints[i]
127
- ) {
128
- let _breakpoints = [...breakpoints];
129
- _breakpoints[i + 1] = e;
130
- setProps({ breakpoints: _breakpoints });
131
- } else if (
132
- e !== null &&
133
- e > breakpoints[i] &&
134
- e < breakpoints[i + 2]
135
- ) {
136
- let _breakpoints = [...breakpoints];
137
- _breakpoints[i + 1] = e;
138
- setProps({ breakpoints: _breakpoints });
139
- } else if (e !== null) {
140
- message.warning({
141
- content: "数值超出相邻断点,请调整后再输入!",
142
- duration: 1.5
143
- });
144
- }
145
- }}
146
- />
73
+ />) : null
74
+ }
75
+ {
76
+ pureLegend ?
77
+ (
78
+ <>
79
+ <Text style={pureLegendLabelStyle}>{breakpoints[i].toFixed(precision)}</Text>
80
+ <Text style={pureLegendLabelStyle}>~</Text>
81
+ <Text style={pureLegendLabelStyle}>{breakpoints[i + 1].toFixed(precision)}</Text>
82
+ </>
83
+ ) : (
84
+ <>
85
+ <InputNumber
86
+ style={inputNumberStyle}
87
+ size={size}
88
+ bordered={bordered}
89
+ controls={controls}
90
+ disabled={disabled}
91
+ keyboard={keyboard}
92
+ placeholder={placeholder}
93
+ min={min}
94
+ max={max}
95
+ step={step}
96
+ precision={precision}
97
+ readOnly={readOnly}
98
+ value={breakpoints[i]}
99
+ onChange={(e) => {
100
+ if (e !== null && i === 0 && e < breakpoints[i + 1]) {
101
+ let _breakpoints = [...breakpoints];
102
+ _breakpoints[i] = e;
103
+ setProps({ breakpoints: _breakpoints });
104
+ } else if (
105
+ e !== null &&
106
+ i > 0 &&
107
+ e > breakpoints[i - 1] &&
108
+ e < breakpoints[i + 1]
109
+ ) {
110
+ let _breakpoints = [...breakpoints];
111
+ _breakpoints[i] = e;
112
+ setProps({ breakpoints: _breakpoints });
113
+ } else if (e !== null) {
114
+ message.warning({
115
+ content: "数值超出相邻断点,请调整后再输入!",
116
+ duration: 1.5
117
+ });
118
+ }
119
+ }}
120
+ />
121
+ <span>~</span>
122
+ <InputNumber
123
+ style={inputNumberStyle}
124
+ size={size}
125
+ bordered={bordered}
126
+ controls={controls}
127
+ disabled={disabled}
128
+ keyboard={keyboard}
129
+ placeholder={placeholder}
130
+ min={min}
131
+ max={max}
132
+ step={step}
133
+ precision={precision}
134
+ readOnly={readOnly}
135
+ value={breakpoints[i + 1]}
136
+ onChange={(e) => {
137
+ if (
138
+ e !== null &&
139
+ i === breakpoints.length - 2 &&
140
+ e > breakpoints[i]
141
+ ) {
142
+ let _breakpoints = [...breakpoints];
143
+ _breakpoints[i + 1] = e;
144
+ setProps({ breakpoints: _breakpoints });
145
+ } else if (
146
+ e !== null &&
147
+ e > breakpoints[i] &&
148
+ e < breakpoints[i + 2]
149
+ ) {
150
+ let _breakpoints = [...breakpoints];
151
+ _breakpoints[i + 1] = e;
152
+ setProps({ breakpoints: _breakpoints });
153
+ } else if (e !== null) {
154
+ message.warning({
155
+ content: "数值超出相邻断点,请调整后再输入!",
156
+ duration: 1.5
157
+ });
158
+ }
159
+ }}
160
+ />
161
+ </>
162
+ )
163
+ }
147
164
  {colorBlockPosition === 'right' ?
148
165
  (<div
149
166
  style={{
@@ -152,7 +169,8 @@ const AntdSegmentedColoring = (props) => {
152
169
  width: size2size.get(size),
153
170
  ...colorBlockStyle
154
171
  }}
155
- />) : null}
172
+ />) : null
173
+ }
156
174
  </Space>
157
175
  );
158
176
  })}
@@ -206,6 +224,9 @@ AntdSegmentedColoring.propTypes = {
206
224
  // 设置是否开启只读模式,默认为false
207
225
  readOnly: PropTypes.bool,
208
226
 
227
+ // 设置是否开启纯图例模式,默认为false
228
+ pureLegend: PropTypes.bool,
229
+
209
230
  // 设置&更新分段断点数组
210
231
  breakpoints: PropTypes.arrayOf(PropTypes.number).isRequired,
211
232
 
@@ -221,6 +242,9 @@ AntdSegmentedColoring.propTypes = {
221
242
  // 设置色块方位,可选的有'left'、'right',默认为'right'
222
243
  colorBlockPosition: PropTypes.oneOf(['left', 'right']),
223
244
 
245
+ // pureLegend模式下,设置文字css样式
246
+ pureLegendLabelStyle: PropTypes.object,
247
+
224
248
  loading_state: PropTypes.shape({
225
249
  /**
226
250
  * Determines if the component is loading or not
@@ -253,7 +277,8 @@ AntdSegmentedColoring.defaultProps = {
253
277
  step: 0.01,
254
278
  precision: 2,
255
279
  readOnly: false,
256
- colorBlockPosition: 'right'
280
+ colorBlockPosition: 'right',
281
+ pureLegend: false
257
282
  }
258
283
 
259
284
  export default React.memo(AntdSegmentedColoring);
@@ -134,6 +134,11 @@ export default class AntdSelect extends Component {
134
134
  }
135
135
  }
136
136
 
137
+ // 处理optionFilterProp映射
138
+ if (optionFilterProp === 'label') {
139
+ optionFilterProp = 'children'
140
+ }
141
+
137
142
  // 返回定制化的前端组件
138
143
  return (
139
144
  <ConfigProvider locale={str2Locale.get(locale)}>
@@ -1,6 +1,8 @@
1
1
  import React, { Component } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { Space, Divider } from 'antd';
4
+ import { useCss } from 'react-use';
5
+ import { isString } from 'lodash';
4
6
  import 'antd/dist/antd.css';
5
7
  import { parseChildrenToArray } from './utils';
6
8
 
@@ -30,7 +32,11 @@ export default class AntdSpace extends Component {
30
32
  if (direction === 'horizontal') {
31
33
  return (
32
34
  <Space id={id}
33
- className={className}
35
+ className={
36
+ isString(className) ?
37
+ className :
38
+ useCss(className)
39
+ }
34
40
  style={style}
35
41
  key={key}
36
42
  align={align}
@@ -47,7 +53,11 @@ export default class AntdSpace extends Component {
47
53
  }
48
54
  return (
49
55
  <Space id={id}
50
- className={className}
56
+ className={
57
+ isString(className) ?
58
+ className :
59
+ useCss(className)
60
+ }
51
61
  style={style}
52
62
  key={key}
53
63
  align={align}
@@ -65,7 +75,11 @@ export default class AntdSpace extends Component {
65
75
 
66
76
  return (
67
77
  <Space id={id}
68
- className={className}
78
+ className={
79
+ isString(className) ?
80
+ className :
81
+ useCss(className)
82
+ }
69
83
  style={style}
70
84
  key={key}
71
85
  align={align}
@@ -93,7 +107,10 @@ AntdSpace.propTypes = {
93
107
  children: PropTypes.node,
94
108
 
95
109
  // css类名
96
- className: PropTypes.string,
110
+ className: PropTypes.oneOfType([
111
+ PropTypes.string,
112
+ PropTypes.object
113
+ ]),
97
114
 
98
115
  // 自定义css字典
99
116
  style: PropTypes.object,