amis 1.8.0-beta.5 → 1.8.0-beta.9

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 (273) hide show
  1. package/lib/Schema.d.ts +9 -2
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/actions/PageAction.d.ts +32 -0
  4. package/lib/actions/PageAction.js +72 -0
  5. package/lib/actions/PageAction.js.map +13 -0
  6. package/lib/actions/index.d.ts +1 -0
  7. package/lib/actions/index.js +1 -0
  8. package/lib/actions/index.js.map +2 -2
  9. package/lib/components/CalendarMobile.d.ts +84 -84
  10. package/lib/components/Cascader.d.ts +2 -0
  11. package/lib/components/Cascader.js +28 -12
  12. package/lib/components/Cascader.js.map +2 -2
  13. package/lib/components/Checkbox.js +2 -2
  14. package/lib/components/Checkbox.js.map +2 -2
  15. package/lib/components/Collapse.d.ts +20 -20
  16. package/lib/components/DatePicker.d.ts +84 -84
  17. package/lib/components/DatePicker.js +5 -5
  18. package/lib/components/DatePicker.js.map +2 -2
  19. package/lib/components/Drawer.js +1 -1
  20. package/lib/components/Drawer.js.map +2 -2
  21. package/lib/components/ListGroup.d.ts +21 -21
  22. package/lib/components/Modal.js +1 -1
  23. package/lib/components/Modal.js.map +2 -2
  24. package/lib/components/Overlay.d.ts +1 -0
  25. package/lib/components/Overlay.js +4 -3
  26. package/lib/components/Overlay.js.map +2 -2
  27. package/lib/components/PullRefresh.d.ts +86 -0
  28. package/lib/components/PullRefresh.js +135 -0
  29. package/lib/components/PullRefresh.js.map +13 -0
  30. package/lib/components/Spinner.d.ts +200 -107
  31. package/lib/components/Spinner.js +30 -26
  32. package/lib/components/Spinner.js.map +2 -2
  33. package/lib/components/Tooltip.d.ts +4 -0
  34. package/lib/components/Tooltip.js +6 -4
  35. package/lib/components/Tooltip.js.map +2 -2
  36. package/lib/components/TooltipWrapper.d.ts +60 -4
  37. package/lib/components/TooltipWrapper.js +27 -8
  38. package/lib/components/TooltipWrapper.js.map +2 -2
  39. package/lib/components/Transfer.d.ts +84 -84
  40. package/lib/components/TransferDropDown.d.ts +84 -84
  41. package/lib/components/Tree.d.ts +87 -85
  42. package/lib/components/Tree.js +13 -5
  43. package/lib/components/Tree.js.map +2 -2
  44. package/lib/components/TreeSelection.d.ts +84 -84
  45. package/lib/components/calendar/TimeView.d.ts +1 -0
  46. package/lib/components/calendar/TimeView.js +7 -0
  47. package/lib/components/calendar/TimeView.js.map +2 -2
  48. package/lib/components/condition-builder/Expression.d.ts +1 -0
  49. package/lib/components/condition-builder/Expression.js +4 -4
  50. package/lib/components/condition-builder/Expression.js.map +2 -2
  51. package/lib/components/condition-builder/Field.d.ts +1 -0
  52. package/lib/components/condition-builder/Field.js +3 -2
  53. package/lib/components/condition-builder/Field.js.map +2 -2
  54. package/lib/components/condition-builder/Group.d.ts +1 -0
  55. package/lib/components/condition-builder/Group.js +2 -2
  56. package/lib/components/condition-builder/Group.js.map +2 -2
  57. package/lib/components/condition-builder/GroupOrItem.d.ts +1 -0
  58. package/lib/components/condition-builder/GroupOrItem.js +2 -2
  59. package/lib/components/condition-builder/GroupOrItem.js.map +2 -2
  60. package/lib/components/condition-builder/InputSwitch.d.ts +2 -1
  61. package/lib/components/condition-builder/InputSwitch.js +2 -2
  62. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  63. package/lib/components/condition-builder/Item.d.ts +1 -0
  64. package/lib/components/condition-builder/Item.js +9 -8
  65. package/lib/components/condition-builder/Item.js.map +2 -2
  66. package/lib/components/condition-builder/Value.d.ts +1 -0
  67. package/lib/components/condition-builder/Value.js +5 -5
  68. package/lib/components/condition-builder/Value.js.map +2 -2
  69. package/lib/components/condition-builder/index.d.ts +1 -0
  70. package/lib/components/condition-builder/index.js +2 -2
  71. package/lib/components/condition-builder/index.js.map +2 -2
  72. package/lib/components/formula/Editor.d.ts +87 -85
  73. package/lib/components/formula/Editor.js +10 -6
  74. package/lib/components/formula/Editor.js.map +2 -2
  75. package/lib/components/formula/Picker.js +3 -1
  76. package/lib/components/formula/Picker.js.map +2 -2
  77. package/lib/index.js +1 -1
  78. package/lib/locale/de-DE.js +5 -1
  79. package/lib/locale/de-DE.js.map +2 -2
  80. package/lib/locale/en-US.js +5 -1
  81. package/lib/locale/en-US.js.map +2 -2
  82. package/lib/locale/zh-CN.js +5 -1
  83. package/lib/locale/zh-CN.js.map +2 -2
  84. package/lib/renderers/CRUD.js +1 -1
  85. package/lib/renderers/CRUD.js.map +2 -2
  86. package/lib/renderers/Form/Combo.d.ts +2 -1
  87. package/lib/renderers/Form/Combo.js +51 -14
  88. package/lib/renderers/Form/Combo.js.map +2 -2
  89. package/lib/renderers/Form/DiffEditor.d.ts +1 -0
  90. package/lib/renderers/Form/InputCity.d.ts +84 -84
  91. package/lib/renderers/Form/InputDate.js +10 -3
  92. package/lib/renderers/Form/InputDate.js.map +2 -2
  93. package/lib/renderers/Form/InputDateRange.js +12 -3
  94. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  95. package/lib/renderers/Form/InputFile.js +13 -5
  96. package/lib/renderers/Form/InputFile.js.map +2 -2
  97. package/lib/renderers/Form/InputImage.js +12 -4
  98. package/lib/renderers/Form/InputImage.js.map +2 -2
  99. package/lib/renderers/Form/InputMonthRange.js +5 -1
  100. package/lib/renderers/Form/InputMonthRange.js.map +2 -2
  101. package/lib/renderers/Form/InputText.js +8 -4
  102. package/lib/renderers/Form/InputText.js.map +2 -2
  103. package/lib/renderers/Form/InputTree.d.ts +5 -0
  104. package/lib/renderers/Form/InputTree.js +51 -2
  105. package/lib/renderers/Form/InputTree.js.map +2 -2
  106. package/lib/renderers/Form/Item.d.ts +68 -70
  107. package/lib/renderers/Form/Item.js.map +2 -2
  108. package/lib/renderers/Form/NestedSelect.d.ts +4 -0
  109. package/lib/renderers/Form/NestedSelect.js +14 -5
  110. package/lib/renderers/Form/NestedSelect.js.map +2 -2
  111. package/lib/renderers/Form/Options.js +61 -27
  112. package/lib/renderers/Form/Options.js.map +2 -2
  113. package/lib/renderers/Form/Select.js +4 -2
  114. package/lib/renderers/Form/Select.js.map +2 -2
  115. package/lib/renderers/Form/TreeSelect.d.ts +11 -2
  116. package/lib/renderers/Form/TreeSelect.js +56 -10
  117. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  118. package/lib/renderers/Form/wrapControl.js +3 -3
  119. package/lib/renderers/Form/wrapControl.js.map +2 -2
  120. package/lib/renderers/Nav.d.ts +82 -67
  121. package/lib/renderers/Nav.js +47 -11
  122. package/lib/renderers/Nav.js.map +2 -2
  123. package/lib/renderers/Page.d.ts +20 -0
  124. package/lib/renderers/Page.js +51 -14
  125. package/lib/renderers/Page.js.map +2 -2
  126. package/lib/renderers/Service.d.ts +2 -0
  127. package/lib/renderers/Service.js +52 -20
  128. package/lib/renderers/Service.js.map +2 -2
  129. package/lib/renderers/Spinner.d.ts +58 -2
  130. package/lib/renderers/Spinner.js +8 -1
  131. package/lib/renderers/Spinner.js.map +2 -2
  132. package/lib/renderers/Table/ColumnToggler.d.ts +4 -0
  133. package/lib/renderers/Table/ColumnToggler.js +11 -6
  134. package/lib/renderers/Table/ColumnToggler.js.map +2 -2
  135. package/lib/renderers/Table/TableCell.js +27 -1
  136. package/lib/renderers/Table/TableCell.js.map +2 -2
  137. package/lib/renderers/Table/index.d.ts +1 -0
  138. package/lib/renderers/Table/index.js +19 -11
  139. package/lib/renderers/Table/index.js.map +2 -2
  140. package/lib/renderers/TooltipWrapper.d.ts +31 -6
  141. package/lib/renderers/TooltipWrapper.js +18 -8
  142. package/lib/renderers/TooltipWrapper.js.map +2 -2
  143. package/lib/renderers/Wizard.js +23 -14
  144. package/lib/renderers/Wizard.js.map +2 -2
  145. package/lib/store/crud.js +23 -13
  146. package/lib/store/crud.js.map +2 -2
  147. package/lib/themes/ang-ie11.css +313 -100
  148. package/lib/themes/ang.css +322 -103
  149. package/lib/themes/ang.css.map +1 -1
  150. package/lib/themes/antd-ie11.css +429 -216
  151. package/lib/themes/antd.css +323 -104
  152. package/lib/themes/antd.css.map +1 -1
  153. package/lib/themes/cxd-ie11.css +424 -211
  154. package/lib/themes/cxd.css +324 -105
  155. package/lib/themes/cxd.css.map +1 -1
  156. package/lib/themes/dark-ie11.css +313 -100
  157. package/lib/themes/dark.css +322 -103
  158. package/lib/themes/dark.css.map +1 -1
  159. package/lib/themes/default-ie11.css +424 -211
  160. package/lib/themes/default.css +324 -105
  161. package/lib/themes/default.css.map +1 -1
  162. package/lib/types.d.ts +3 -1
  163. package/lib/types.js.map +1 -1
  164. package/lib/utils/ColorScale.d.ts +19 -0
  165. package/lib/utils/ColorScale.js +104 -0
  166. package/lib/utils/ColorScale.js.map +13 -0
  167. package/lib/utils/api.js +20 -4
  168. package/lib/utils/api.js.map +2 -2
  169. package/lib/utils/dom.d.ts +1 -1
  170. package/lib/utils/dom.js +7 -5
  171. package/lib/utils/dom.js.map +2 -2
  172. package/package.json +3 -2
  173. package/schema.json +29645 -29137
  174. package/scss/_properties.scss +33 -15
  175. package/scss/components/_column-toggler.scss +21 -11
  176. package/scss/components/_formula.scss +1 -1
  177. package/scss/components/_nav.scss +51 -6
  178. package/scss/components/_pull-refresh.scss +25 -0
  179. package/scss/components/_spinner.scss +134 -56
  180. package/scss/components/_tooltip.scss +4 -9
  181. package/scss/components/form/_checks.scss +1 -0
  182. package/scss/components/form/_combo.scss +13 -1
  183. package/scss/components/form/_date-range.scss +11 -2
  184. package/scss/components/form/_date.scss +11 -0
  185. package/scss/components/form/_file.scss +4 -0
  186. package/scss/components/form/_form.scss +15 -8
  187. package/scss/components/form/_transfer.scss +3 -2
  188. package/scss/themes/_antd-variables.scss +1 -1
  189. package/scss/themes/_common.scss +1 -0
  190. package/scss/themes/_cxd-variables.scss +2 -2
  191. package/sdk/ang-ie11.css +286 -80
  192. package/sdk/ang.css +294 -82
  193. package/sdk/antd-ie11.css +402 -196
  194. package/sdk/antd.css +295 -83
  195. package/sdk/barcode.js +51 -51
  196. package/sdk/charts.js +14 -14
  197. package/sdk/codemirror.js +7 -7
  198. package/sdk/color-picker.js +65 -65
  199. package/sdk/cropperjs.js +2 -2
  200. package/sdk/cxd-ie11.css +397 -191
  201. package/sdk/cxd.css +296 -84
  202. package/sdk/dark-ie11.css +286 -80
  203. package/sdk/dark.css +294 -82
  204. package/sdk/exceljs.js +1 -1
  205. package/sdk/locale/de-DE.js +5 -1
  206. package/sdk/markdown.js +69 -69
  207. package/sdk/papaparse.js +1 -1
  208. package/sdk/renderers/Form/CityDB.js +1 -1
  209. package/sdk/rest.js +17 -17
  210. package/sdk/rich-text.js +62 -62
  211. package/sdk/sdk-ie11.css +397 -191
  212. package/sdk/sdk.css +296 -84
  213. package/sdk/sdk.js +1300 -1260
  214. package/sdk/thirds/hls.js/hls.js +1 -1
  215. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  216. package/sdk/tinymce.js +57 -57
  217. package/src/Schema.ts +10 -0
  218. package/src/actions/PageAction.ts +62 -0
  219. package/src/actions/index.ts +1 -0
  220. package/src/components/Cascader.tsx +37 -11
  221. package/src/components/Checkbox.tsx +1 -1
  222. package/src/components/DatePicker.tsx +7 -5
  223. package/src/components/Drawer.tsx +1 -0
  224. package/src/components/Modal.tsx +1 -0
  225. package/src/components/Overlay.tsx +6 -3
  226. package/src/components/PullRefresh.tsx +197 -0
  227. package/src/components/Spinner.tsx +77 -42
  228. package/src/components/Tooltip.tsx +12 -3
  229. package/src/components/TooltipWrapper.tsx +120 -33
  230. package/src/components/Tree.tsx +19 -5
  231. package/src/components/calendar/TimeView.tsx +12 -0
  232. package/src/components/condition-builder/Expression.tsx +6 -1
  233. package/src/components/condition-builder/Field.tsx +5 -1
  234. package/src/components/condition-builder/Group.tsx +4 -1
  235. package/src/components/condition-builder/GroupOrItem.tsx +4 -1
  236. package/src/components/condition-builder/InputSwitch.tsx +4 -1
  237. package/src/components/condition-builder/Item.tsx +28 -4
  238. package/src/components/condition-builder/Value.tsx +7 -1
  239. package/src/components/condition-builder/index.tsx +4 -2
  240. package/src/components/formula/Editor.tsx +20 -15
  241. package/src/components/formula/Picker.tsx +9 -5
  242. package/src/locale/de-DE.ts +5 -1
  243. package/src/locale/en-US.ts +5 -1
  244. package/src/locale/zh-CN.ts +5 -1
  245. package/src/renderers/CRUD.tsx +1 -1
  246. package/src/renderers/Form/Combo.tsx +102 -46
  247. package/src/renderers/Form/InputDate.tsx +18 -4
  248. package/src/renderers/Form/InputDateRange.tsx +19 -2
  249. package/src/renderers/Form/InputFile.tsx +16 -4
  250. package/src/renderers/Form/InputImage.tsx +15 -3
  251. package/src/renderers/Form/InputMonthRange.tsx +7 -1
  252. package/src/renderers/Form/InputText.tsx +14 -2
  253. package/src/renderers/Form/InputTree.tsx +40 -2
  254. package/src/renderers/Form/Item.tsx +6 -0
  255. package/src/renderers/Form/NestedSelect.tsx +23 -4
  256. package/src/renderers/Form/Options.tsx +26 -7
  257. package/src/renderers/Form/Select.tsx +5 -3
  258. package/src/renderers/Form/TreeSelect.tsx +47 -9
  259. package/src/renderers/Form/wrapControl.tsx +2 -2
  260. package/src/renderers/Nav.tsx +230 -32
  261. package/src/renderers/Page.tsx +89 -33
  262. package/src/renderers/Service.tsx +62 -27
  263. package/src/renderers/Spinner.tsx +85 -3
  264. package/src/renderers/Table/ColumnToggler.tsx +36 -11
  265. package/src/renderers/Table/TableCell.tsx +39 -1
  266. package/src/renderers/Table/index.tsx +34 -21
  267. package/src/renderers/TooltipWrapper.tsx +64 -28
  268. package/src/renderers/Wizard.tsx +36 -25
  269. package/src/store/crud.ts +10 -0
  270. package/src/types.ts +4 -0
  271. package/src/utils/ColorScale.ts +138 -0
  272. package/src/utils/api.ts +26 -4
  273. package/src/utils/dom.tsx +7 -6
@@ -18,18 +18,23 @@ interface TooltipProps extends React.HTMLProps<HTMLDivElement> {
18
18
  style?: any;
19
19
  arrowProps?: any;
20
20
  placement?: string;
21
+ showArrow?: boolean;
22
+ tooltipTheme?: string;
21
23
  [propName: string]: any;
22
24
  }
23
25
 
24
26
  export class Tooltip extends React.Component<TooltipProps> {
25
27
  static defaultProps = {
26
- className: ''
28
+ className: '',
29
+ tooltipTheme: 'light',
30
+ showArrow: true
27
31
  };
28
32
 
29
33
  render() {
30
34
  const {
31
35
  classPrefix: ns,
32
36
  className,
37
+ tooltipTheme,
33
38
  title,
34
39
  children,
35
40
  arrowProps,
@@ -41,6 +46,7 @@ export class Tooltip extends React.Component<TooltipProps> {
41
46
  positionTop,
42
47
  classnames: cx,
43
48
  activePlacement,
49
+ showArrow,
44
50
  onMouseEnter,
45
51
  onMouseLeave,
46
52
  ...rest
@@ -52,14 +58,17 @@ export class Tooltip extends React.Component<TooltipProps> {
52
58
  className={cx(
53
59
  `Tooltip`,
54
60
  activePlacement ? `Tooltip--${activePlacement}` : '',
55
- className
61
+ className,
62
+ `Tooltip--${tooltipTheme === 'dark' ? 'dark' : 'light'}`
56
63
  )}
57
64
  style={style}
58
65
  onMouseEnter={onMouseEnter}
59
66
  onMouseLeave={onMouseLeave}
60
67
  role="tooltip"
61
68
  >
62
- <div className={cx(`Tooltip-arrow`)} {...arrowProps} />
69
+ {showArrow ? (
70
+ <div className={cx(`Tooltip-arrow`)} {...arrowProps} />
71
+ ) : null}
63
72
  {title ? <div className={cx('Tooltip-title')}>{title}</div> : null}
64
73
  <div className={cx('Tooltip-body')}>{children}</div>
65
74
  </div>
@@ -11,21 +11,78 @@ import {findDOMNode} from 'react-dom';
11
11
  import Tooltip from './Tooltip';
12
12
  import {ClassNamesFn, themeable} from '../theme';
13
13
  import Overlay from './Overlay';
14
+ import {isObject} from '../utils/helper';
15
+
16
+ export type Trigger = 'hover' | 'click' | 'focus';
14
17
 
15
18
  export interface TooltipObject {
19
+ /**
20
+ * 文字提示标题
21
+ */
16
22
  title?: string;
23
+ /**
24
+ * 文字提示内容
25
+ */
17
26
  content?: string;
18
- render?: () => JSX.Element;
19
- dom?: JSX.Element;
27
+ /**
28
+ * 浮层出现位置
29
+ */
30
+ placement?: 'top' | 'right' | 'bottom' | 'left';
31
+ /**
32
+ * 主题样式
33
+ */
34
+ tooltipTheme?: 'light' | 'dark';
35
+ /**
36
+ * 浮层位置相对偏移量
37
+ */
38
+ offset?: [number, number];
39
+ /**
40
+ * 内容区自定义样式
41
+ */
42
+ style?: React.CSSProperties;
43
+ /**
44
+ * 是否展示浮层指向箭头
45
+ */
46
+ showArrow?: boolean;
47
+ /**
48
+ * 是否禁用提示
49
+ */
50
+ disabled?: boolean;
51
+ /**
52
+ * 浮层延迟显示时间, 单位 ms
53
+ */
54
+ mouseEnterDelay?: number;
55
+ /**
56
+ * 浮层延迟隐藏时间, 单位 ms
57
+ */
58
+ mouseLeaveDelay?: number;
59
+ /**
60
+ * 浮层内容可通过JSX渲染
61
+ */
62
+ children?: () => JSX.Element | JSX.Element;
63
+ /**
64
+ * 挂载容器元素
65
+ */
66
+ container?: React.ReactNode;
67
+ /**
68
+ * 浮层触发方式
69
+ */
70
+ trigger?: Trigger | Array<Trigger>;
71
+ /**
72
+ * 是否点击非内容区域关闭提示,默认为true
73
+ */
74
+ rootClose?: boolean;
75
+ /**
76
+ * 文字提示浮层CSS类名
77
+ */
78
+ tooltipClassName?: string;
20
79
  }
21
80
 
22
- export type Trigger = 'hover' | 'click' | 'focus';
23
-
24
81
  export interface TooltipWrapperProps {
82
+ tooltip?: string | TooltipObject;
25
83
  classPrefix: string;
26
84
  classnames: ClassNamesFn;
27
85
  placement: 'top' | 'right' | 'bottom' | 'left';
28
- tooltip?: string | TooltipObject;
29
86
  container?: React.ReactNode;
30
87
  trigger: Trigger | Array<Trigger>;
31
88
  rootClose: boolean;
@@ -109,15 +166,26 @@ export class TooltipWrapper extends React.Component<
109
166
  handleShow() {
110
167
  this.timer && clearTimeout(this.timer);
111
168
  waitToHide && waitToHide();
112
- this.show();
169
+ const tooltip = this.props.tooltip;
170
+ if (isObject(tooltip)) {
171
+ const {mouseEnterDelay = 0} = tooltip as TooltipObject;
172
+ this.timer = setTimeout(this.show, mouseEnterDelay);
173
+ } else {
174
+ this.timer = setTimeout(this.show, 0);
175
+ }
113
176
  }
114
177
 
115
178
  handleHide() {
116
179
  clearTimeout(this.timer);
117
- const {delay} = this.props;
180
+ const {delay, tooltip} = this.props;
118
181
 
119
182
  waitToHide = this.hide.bind(this);
120
- this.timer = setTimeout(this.hide, delay);
183
+ if (isObject(tooltip)) {
184
+ const {mouseLeaveDelay = 300} = tooltip as TooltipObject;
185
+ this.timer = setTimeout(this.hide, mouseLeaveDelay);
186
+ } else {
187
+ this.timer = setTimeout(this.hide, delay);
188
+ }
121
189
  }
122
190
 
123
191
  handleFocus(e: any) {
@@ -161,22 +229,42 @@ export class TooltipWrapper extends React.Component<
161
229
  }
162
230
 
163
231
  render() {
232
+ const props = this.props;
233
+
234
+ const child = React.Children.only(props.children);
235
+ if (!props.tooltip) {
236
+ return child;
237
+ }
238
+
239
+ // tooltip 对象内属性优先级更高
240
+ const tooltipObj: TooltipObject = {
241
+ placement: props.placement,
242
+ container: props.container,
243
+ trigger: props.trigger,
244
+ rootClose: props.rootClose,
245
+ tooltipClassName: props.tooltipClassName,
246
+ style: props.style,
247
+ mouseLeaveDelay: props.delay,
248
+ ...(typeof props.tooltip === 'string'
249
+ ? {content: props.tooltip}
250
+ : props.tooltip)
251
+ };
252
+
164
253
  const {
165
- tooltip,
166
- children,
254
+ title,
255
+ content,
167
256
  placement,
168
257
  container,
169
258
  trigger,
170
259
  rootClose,
171
260
  tooltipClassName,
172
- style
173
- } = this.props;
174
-
175
- const child = React.Children.only(children);
176
-
177
- if (!tooltip) {
178
- return child;
179
- }
261
+ style,
262
+ disabled = false,
263
+ offset,
264
+ tooltipTheme = 'light',
265
+ showArrow = true,
266
+ children
267
+ } = tooltipObj;
180
268
 
181
269
  const childProps: any = {
182
270
  key: 'target'
@@ -204,31 +292,30 @@ export class TooltipWrapper extends React.Component<
204
292
  <Overlay
205
293
  key="overlay"
206
294
  target={this.getTarget}
207
- show={this.state.show}
295
+ show={this.state.show && !disabled}
208
296
  onHide={this.handleHide}
209
297
  rootClose={rootClose}
210
298
  placement={placement}
211
299
  container={container}
300
+ offset={Array.isArray(offset) ? offset : [0, 0]}
212
301
  >
213
302
  <Tooltip
214
- title={typeof tooltip !== 'string' ? tooltip.title : undefined}
303
+ title={typeof title === 'string' ? title : undefined}
215
304
  style={style}
216
305
  className={tooltipClassName}
217
- onMouseEnter={~triggers.indexOf('hover') && this.handleMouseOver}
218
- onMouseLeave={~triggers.indexOf('hover') && this.handleMouseOut}
306
+ tooltipTheme={tooltipTheme}
307
+ showArrow={showArrow}
308
+ onMouseEnter={
309
+ ~triggers.indexOf('hover') ? this.handleMouseOver : () => {}
310
+ }
311
+ onMouseLeave={
312
+ ~triggers.indexOf('hover') ? this.handleMouseOut : () => {}
313
+ }
219
314
  >
220
- {tooltip && (tooltip as TooltipObject).render ? (
221
- this.state.show ? (
222
- (tooltip as TooltipObject).render!()
223
- ) : null
224
- ) : tooltip && (tooltip as TooltipObject).dom ? (
225
- (tooltip as TooltipObject).dom!
315
+ {children ? (
316
+ <>{typeof children === 'function' ? children() : children}</>
226
317
  ) : (
227
- <Html
228
- html={
229
- typeof tooltip === 'string' ? tooltip : tooltip.content || ''
230
- }
231
- />
318
+ <Html html={typeof content === 'string' ? content : ''} />
232
319
  )}
233
320
  </Tooltip>
234
321
  </Overlay>
@@ -41,6 +41,8 @@ export interface IDropInfo {
41
41
  interface TreeSelectorProps extends ThemeProps, LocaleProps {
42
42
  highlightTxt?: string;
43
43
 
44
+ onRef: any;
45
+
44
46
  showIcon?: boolean;
45
47
  // 是否默认都展开
46
48
  initiallyOpen?: boolean;
@@ -55,6 +57,8 @@ interface TreeSelectorProps extends ThemeProps, LocaleProps {
55
57
  withChildren?: boolean;
56
58
  // 多选时,选中父节点时,是否只将起子节点加入到值中。
57
59
  onlyChildren?: boolean;
60
+ // 单选时,只运行选择子节点
61
+ onlyLeaf?: boolean;
58
62
  // 名称、取值等字段名映射
59
63
  labelField: string;
60
64
  valueField: string;
@@ -206,6 +210,7 @@ export class TreeSelector extends React.Component<
206
210
 
207
211
  componentDidMount() {
208
212
  const {enableNodePath} = this.props;
213
+ this.props.onRef(this)
209
214
  enableNodePath && this.expandLazyLoadNodes();
210
215
  }
211
216
 
@@ -246,20 +251,23 @@ export class TreeSelector extends React.Component<
246
251
  onExpandTree?.(nodePathArr);
247
252
  }
248
253
 
249
- syncUnFolded(props: TreeSelectorProps) {
254
+ syncUnFolded(props: TreeSelectorProps, unfoldedLevel?: Number) {
255
+ // 传入默认展开层级需要重新初始化unfolded
256
+ let initFoldedLevel = typeof unfoldedLevel !== 'undefined';
257
+ let expandLevel = initFoldedLevel ? unfoldedLevel : props.unfoldedLevel;
250
258
  // 初始化树节点的展开状态
251
259
  let unfolded = this.unfolded;
252
260
  const {foldedField, unfoldedField} = this.props;
253
261
 
254
262
  eachTree(props.options, (node: Option, index, level) => {
255
- if (unfolded.has(node)) {
263
+ if (unfolded.has(node) && !initFoldedLevel) {
256
264
  return;
257
265
  }
258
266
 
259
267
  if (node.children && node.children.length) {
260
268
  let ret: any = true;
261
269
 
262
- if (node.defer && node.loaded) {
270
+ if (node.defer && node.loaded && !initFoldedLevel) {
263
271
  ret = true;
264
272
  } else if (
265
273
  unfoldedField &&
@@ -270,7 +278,7 @@ export class TreeSelector extends React.Component<
270
278
  ret = !node[foldedField];
271
279
  } else {
272
280
  ret = !!props.initiallyOpen;
273
- if (!ret && level <= (props.unfoldedLevel as number)) {
281
+ if (!ret && level <= (expandLevel as number)) {
274
282
  ret = true;
275
283
  }
276
284
  }
@@ -278,6 +286,8 @@ export class TreeSelector extends React.Component<
278
286
  }
279
287
  });
280
288
 
289
+ initFoldedLevel && this.forceUpdate();
290
+
281
291
  return unfolded;
282
292
  }
283
293
 
@@ -365,13 +375,17 @@ export class TreeSelector extends React.Component<
365
375
 
366
376
  @autobind
367
377
  handleSelect(node: any, value?: any) {
368
- const {joinValues, valueField, onChange, enableNodePath} = this.props;
378
+ const {joinValues, valueField, onChange, enableNodePath, onlyLeaf} =
379
+ this.props;
369
380
 
370
381
  if (node[valueField as string] === undefined) {
371
382
  if (node.defer && !node.loaded) {
372
383
  this.toggleUnfolded(node);
373
384
  }
385
+ return;
386
+ }
374
387
 
388
+ if (onlyLeaf && node.children) {
375
389
  return;
376
390
  }
377
391
 
@@ -1,5 +1,6 @@
1
1
  import moment from 'moment';
2
2
  import React from 'react';
3
+ import merge from 'lodash/merge';
3
4
  import {LocaleProps, localeable} from '../../locale';
4
5
  import {Icon} from '../icons';
5
6
  import {ClassNamesFn} from '../../theme';
@@ -30,6 +31,7 @@ interface CustomTimeViewProps extends LocaleProps {
30
31
  useMobileUI: boolean;
31
32
  showToolbar?: boolean;
32
33
  onChange?: (value: any) => void;
34
+ timeConstraints?: any;
33
35
  }
34
36
 
35
37
  interface CustomTimeViewState {
@@ -85,6 +87,13 @@ export class CustomTimeView extends React.Component<
85
87
  constructor(props: any) {
86
88
  super(props);
87
89
  this.state = this.calculateState(this.props);
90
+
91
+ if (this.props.timeConstraints) {
92
+ this.timeConstraints = merge(
93
+ this.timeConstraints,
94
+ this.props.timeConstraints
95
+ );
96
+ }
88
97
  }
89
98
 
90
99
  componentDidUpdate(preProps: CustomTimeViewProps) {
@@ -173,6 +182,9 @@ export class CustomTimeView extends React.Component<
173
182
  value =
174
183
  this.timeConstraints[type].min +
175
184
  (value - (this.timeConstraints[type].max + 1));
185
+ if (value < this.timeConstraints[type].min) {
186
+ value = this.timeConstraints[type].min;
187
+ }
176
188
  return this.pad(type, value);
177
189
  }
178
190
 
@@ -45,6 +45,7 @@ export interface ExpressionProps extends ThemeProps {
45
45
  searchable?: boolean;
46
46
  fieldClassName?: string;
47
47
  formula?: FormulaPickerProps;
48
+ popOverContainer?: any;
48
49
  }
49
50
 
50
51
  const fieldMap = {
@@ -135,7 +136,8 @@ export class Expression extends React.Component<ExpressionProps> {
135
136
  data,
136
137
  disabled,
137
138
  searchable,
138
- formula
139
+ formula,
140
+ popOverContainer
139
141
  } = this.props;
140
142
  const inputType =
141
143
  ((value as any)?.type === 'field'
@@ -166,6 +168,7 @@ export class Expression extends React.Component<ExpressionProps> {
166
168
  data={data}
167
169
  disabled={disabled}
168
170
  formula={formula}
171
+ popOverContainer={popOverContainer}
169
172
  />
170
173
  ) : null}
171
174
 
@@ -176,6 +179,7 @@ export class Expression extends React.Component<ExpressionProps> {
176
179
  fieldClassName={fieldClassName}
177
180
  disabled={disabled}
178
181
  searchable={searchable}
182
+ popOverContainer={popOverContainer}
179
183
  options={
180
184
  valueField
181
185
  ? filterTree(
@@ -214,6 +218,7 @@ export class Expression extends React.Component<ExpressionProps> {
214
218
  <InputSwitch
215
219
  disabled={disabled}
216
220
  value={inputType}
221
+ popOverContainer={popOverContainer}
217
222
  onChange={this.handleInputTypeChange}
218
223
  options={types.map(item => ({
219
224
  label: fieldMap[item],
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import {findDOMNode} from 'react-dom';
2
3
  import PopOverContainer from '../PopOverContainer';
3
4
  import ListSelection from '../GroupedSelection';
4
5
  import ResultBox from '../ResultBox';
@@ -15,6 +16,7 @@ export interface ConditionFieldProps extends ThemeProps, LocaleProps {
15
16
  disabled?: boolean;
16
17
  fieldClassName?: string;
17
18
  searchable?: boolean;
19
+ popOverContainer?: any;
18
20
  }
19
21
 
20
22
  export interface ConditionFieldState {
@@ -86,11 +88,13 @@ export class ConditionField extends React.Component<
86
88
  fieldClassName,
87
89
  disabled,
88
90
  translate: __,
89
- searchable
91
+ searchable,
92
+ popOverContainer
90
93
  } = this.props;
91
94
 
92
95
  return (
93
96
  <PopOverContainer
97
+ popOverContainer={popOverContainer || (() => findDOMNode(this))}
94
98
  popOverRender={({onClose}) => (
95
99
  <>
96
100
  {searchable ? (
@@ -26,6 +26,7 @@ export interface ConditionGroupProps extends ThemeProps, LocaleProps {
26
26
  onDragStart?: (e: React.MouseEvent) => void;
27
27
  fieldClassName?: string;
28
28
  formula?: FormulaPickerProps;
29
+ popOverContainer?: any;
29
30
  }
30
31
 
31
32
  export class ConditionGroup extends React.Component<ConditionGroupProps> {
@@ -134,7 +135,8 @@ export class ConditionGroup extends React.Component<ConditionGroupProps> {
134
135
  disabled,
135
136
  searchable,
136
137
  translate: __,
137
- formula
138
+ formula,
139
+ popOverContainer
138
140
  } = this.props;
139
141
  return (
140
142
  <div className={cx('CBGroup')} data-group-id={value?.id}>
@@ -222,6 +224,7 @@ export class ConditionGroup extends React.Component<ConditionGroupProps> {
222
224
  searchable={searchable}
223
225
  builderMode={builderMode}
224
226
  formula={formula}
227
+ popOverContainer={popOverContainer}
225
228
  />
226
229
  ))
227
230
  ) : (
@@ -25,6 +25,7 @@ export interface CBGroupOrItemProps extends ThemeProps {
25
25
  onRemove?: (index: number) => void;
26
26
  fieldClassName?: string;
27
27
  formula?: FormulaPickerProps;
28
+ popOverContainer?: any;
28
29
  }
29
30
 
30
31
  export class CBGroupOrItem extends React.Component<CBGroupOrItemProps> {
@@ -52,7 +53,8 @@ export class CBGroupOrItem extends React.Component<CBGroupOrItemProps> {
52
53
  disabled,
53
54
  searchable,
54
55
  onDragStart,
55
- formula
56
+ formula,
57
+ popOverContainer
56
58
  } = this.props;
57
59
 
58
60
  return (
@@ -101,6 +103,7 @@ export class CBGroupOrItem extends React.Component<CBGroupOrItemProps> {
101
103
  funcs={funcs}
102
104
  data={data}
103
105
  formula={formula}
106
+ popOverContainer={popOverContainer}
104
107
  />
105
108
  <a className={cx('CBDelete')} onClick={this.handleItemRemove}>
106
109
  <Icon icon="close" className="icon" />
@@ -7,6 +7,7 @@ import {ClassNamesFn, themeable, ThemeProps} from '../../theme';
7
7
  export interface InputSwitchProps extends ThemeProps {
8
8
  options: Array<any>;
9
9
  disabled?: boolean;
10
+ popOverContainer?: any;
10
11
  value: any;
11
12
  onChange: (value: any) => void;
12
13
  }
@@ -18,10 +19,12 @@ export function InputSwitch({
18
19
  value,
19
20
  onChange,
20
21
  classnames: cx,
21
- disabled
22
+ disabled,
23
+ popOverContainer
22
24
  }: InputSwitchProps) {
23
25
  return (
24
26
  <PopOverContainer
27
+ popOverContainer={popOverContainer}
25
28
  popOverRender={({onClose}) => (
26
29
  <GroupedSelection
27
30
  onClick={onClose}
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import {findDOMNode} from 'react-dom';
2
3
  import {
3
4
  Fields,
4
5
  ConditionRule,
@@ -37,6 +38,7 @@ export interface ConditionItemProps extends ThemeProps, LocaleProps {
37
38
  onChange: (value: ConditionRule, index?: number) => void;
38
39
  fieldClassName?: string;
39
40
  formula?: FormulaPickerProps;
41
+ popOverContainer?: any;
40
42
  }
41
43
 
42
44
  export class ConditionItem extends React.Component<ConditionItemProps> {
@@ -102,8 +104,16 @@ export class ConditionItem extends React.Component<ConditionItemProps> {
102
104
  }
103
105
 
104
106
  renderLeft() {
105
- const {value, fields, funcs, config, disabled, fieldClassName, searchable} =
106
- this.props;
107
+ const {
108
+ value,
109
+ fields,
110
+ funcs,
111
+ config,
112
+ disabled,
113
+ fieldClassName,
114
+ searchable,
115
+ popOverContainer
116
+ } = this.props;
107
117
  return (
108
118
  <Expression
109
119
  config={config}
@@ -114,6 +124,7 @@ export class ConditionItem extends React.Component<ConditionItemProps> {
114
124
  fields={fields}
115
125
  disabled={disabled}
116
126
  searchable={searchable}
127
+ popOverContainer={popOverContainer}
117
128
  allowedTypes={
118
129
  ['field', 'func'].filter(
119
130
  type => type === 'field' || type === 'func'
@@ -124,7 +135,15 @@ export class ConditionItem extends React.Component<ConditionItemProps> {
124
135
  }
125
136
 
126
137
  renderOperator() {
127
- const {funcs, config, fields, value, classnames: cx, disabled} = this.props;
138
+ const {
139
+ funcs,
140
+ config,
141
+ fields,
142
+ value,
143
+ classnames: cx,
144
+ disabled,
145
+ popOverContainer
146
+ } = this.props;
128
147
  const left = value?.left;
129
148
  let operators: Array<string> = [];
130
149
 
@@ -152,6 +171,7 @@ export class ConditionItem extends React.Component<ConditionItemProps> {
152
171
  const __ = this.props.translate;
153
172
  return (
154
173
  <PopOverContainer
174
+ popOverContainer={popOverContainer || (() => findDOMNode(this))}
155
175
  popOverRender={({onClose}) => (
156
176
  <GroupedSelection
157
177
  onClick={onClose}
@@ -242,7 +262,8 @@ export class ConditionItem extends React.Component<ConditionItemProps> {
242
262
  config,
243
263
  classnames: cx,
244
264
  disabled,
245
- formula
265
+ formula,
266
+ popOverContainer
246
267
  } = this.props;
247
268
  let field = {
248
269
  ...config.types[type],
@@ -282,6 +303,7 @@ export class ConditionItem extends React.Component<ConditionItemProps> {
282
303
  }
283
304
  disabled={disabled}
284
305
  formula={formula}
306
+ popOverContainer={popOverContainer}
285
307
  />
286
308
 
287
309
  <span className={cx('CBSeprator')}>~</span>
@@ -300,6 +322,7 @@ export class ConditionItem extends React.Component<ConditionItemProps> {
300
322
  }
301
323
  disabled={disabled}
302
324
  formula={formula}
325
+ popOverContainer={popOverContainer}
303
326
  />
304
327
  </>
305
328
  );
@@ -321,6 +344,7 @@ export class ConditionItem extends React.Component<ConditionItemProps> {
321
344
  }
322
345
  disabled={disabled}
323
346
  formula={formula}
347
+ popOverContainer={popOverContainer}
324
348
  />
325
349
  );
326
350
  }
@@ -17,6 +17,7 @@ export interface ValueProps extends ThemeProps, LocaleProps {
17
17
  op?: OperatorType;
18
18
  disabled?: boolean;
19
19
  formula?: FormulaPickerProps;
20
+ popOverContainer?: any;
20
21
  }
21
22
 
22
23
  export class Value extends React.Component<ValueProps> {
@@ -30,7 +31,8 @@ export class Value extends React.Component<ValueProps> {
30
31
  translate: __,
31
32
  data,
32
33
  disabled,
33
- formula
34
+ formula,
35
+ popOverContainer
34
36
  } = this.props;
35
37
  let input: JSX.Element | undefined = undefined;
36
38
  if (formula) {
@@ -76,6 +78,7 @@ export class Value extends React.Component<ValueProps> {
76
78
  onChange={onChange}
77
79
  timeFormat=""
78
80
  disabled={disabled}
81
+ popOverContainer={popOverContainer}
79
82
  />
80
83
  );
81
84
  } else if (field.type === 'time') {
@@ -90,6 +93,7 @@ export class Value extends React.Component<ValueProps> {
90
93
  dateFormat=""
91
94
  timeFormat={field.format || 'HH:mm'}
92
95
  disabled={disabled}
96
+ popOverContainer={popOverContainer}
93
97
  />
94
98
  );
95
99
  } else if (field.type === 'datetime') {
@@ -102,6 +106,7 @@ export class Value extends React.Component<ValueProps> {
102
106
  onChange={onChange}
103
107
  timeFormat={field.timeFormat || 'HH:mm'}
104
108
  disabled={disabled}
109
+ popOverContainer={popOverContainer}
105
110
  />
106
111
  );
107
112
  } else if (field.type === 'select') {
@@ -119,6 +124,7 @@ export class Value extends React.Component<ValueProps> {
119
124
  onChange={onChange}
120
125
  multiple={op === 'select_any_in' || op === 'select_not_any_in'}
121
126
  disabled={disabled}
127
+ popOverContainer={popOverContainer}
122
128
  />
123
129
  );
124
130
  } else if (field.type === 'boolean') {