amis 1.4.2-beta.13 → 1.4.2-beta.15

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 (128) hide show
  1. package/lib/Schema.d.ts +4 -3
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/components/AssociatedSelection.js +2 -2
  4. package/lib/components/AssociatedSelection.js.map +2 -2
  5. package/lib/components/Checkbox.d.ts +20 -20
  6. package/lib/components/Collapse.d.ts +51 -23
  7. package/lib/components/Collapse.js +69 -11
  8. package/lib/components/Collapse.js.map +2 -2
  9. package/lib/components/CollapseGroup.d.ts +88 -0
  10. package/lib/components/CollapseGroup.js +81 -0
  11. package/lib/components/CollapseGroup.js.map +13 -0
  12. package/lib/components/Editor.d.ts +84 -84
  13. package/lib/components/GridNav.d.ts +52 -0
  14. package/lib/components/GridNav.js +123 -0
  15. package/lib/components/GridNav.js.map +13 -0
  16. package/lib/components/ListGroup.d.ts +21 -21
  17. package/lib/components/Tabs.d.ts +20 -20
  18. package/lib/components/TabsTransfer.d.ts +84 -84
  19. package/lib/components/Toast.d.ts +86 -85
  20. package/lib/components/Toast.js +6 -3
  21. package/lib/components/Toast.js.map +2 -2
  22. package/lib/components/Transfer.d.ts +84 -84
  23. package/lib/components/TransferDropDown.d.ts +84 -84
  24. package/lib/components/Tree.d.ts +115 -84
  25. package/lib/components/Tree.js +183 -30
  26. package/lib/components/Tree.js.map +2 -2
  27. package/lib/envOverwrite.d.ts +1 -1
  28. package/lib/envOverwrite.js +24 -9
  29. package/lib/envOverwrite.js.map +2 -2
  30. package/lib/factory.d.ts +11 -1
  31. package/lib/factory.js +31 -4
  32. package/lib/factory.js.map +2 -2
  33. package/lib/icons/drag-bar.js +10 -3
  34. package/lib/index.d.ts +2 -0
  35. package/lib/index.js +3 -1
  36. package/lib/index.js.map +2 -2
  37. package/lib/renderers/Collapse.d.ts +25 -20
  38. package/lib/renderers/Collapse.js +10 -73
  39. package/lib/renderers/Collapse.js.map +2 -2
  40. package/lib/renderers/CollapseGroup.d.ts +42 -0
  41. package/lib/renderers/CollapseGroup.js +33 -0
  42. package/lib/renderers/CollapseGroup.js.map +13 -0
  43. package/lib/renderers/Form/InputCity.d.ts +84 -84
  44. package/lib/renderers/Form/Item.js +2 -1
  45. package/lib/renderers/Form/Item.js.map +2 -2
  46. package/lib/renderers/GridNav.d.ts +99 -0
  47. package/lib/renderers/GridNav.js +82 -0
  48. package/lib/renderers/GridNav.js.map +13 -0
  49. package/lib/store/formItem.js +44 -4
  50. package/lib/store/formItem.js.map +2 -2
  51. package/lib/themes/ang-ie11.css +194 -27
  52. package/lib/themes/ang.css +194 -27
  53. package/lib/themes/ang.css.map +1 -1
  54. package/lib/themes/antd-ie11.css +194 -27
  55. package/lib/themes/antd.css +194 -27
  56. package/lib/themes/antd.css.map +1 -1
  57. package/lib/themes/cxd-ie11.css +201 -34
  58. package/lib/themes/cxd.css +201 -34
  59. package/lib/themes/cxd.css.map +1 -1
  60. package/lib/themes/dark-ie11.css +194 -27
  61. package/lib/themes/dark.css +194 -27
  62. package/lib/themes/dark.css.map +1 -1
  63. package/lib/themes/default.css +201 -34
  64. package/lib/themes/default.css.map +1 -1
  65. package/lib/types.d.ts +1 -1
  66. package/lib/types.js.map +1 -1
  67. package/lib/utils/api.d.ts +1 -0
  68. package/lib/utils/api.js +77 -6
  69. package/lib/utils/api.js.map +2 -2
  70. package/lib/utils/helper.d.ts +6 -0
  71. package/lib/utils/helper.js +18 -1
  72. package/lib/utils/helper.js.map +2 -2
  73. package/package.json +1 -1
  74. package/schema.json +242 -34
  75. package/scss/components/_anchor-nav.scss +1 -0
  76. package/scss/components/_collapse-group.scss +11 -0
  77. package/scss/components/_collapse.scss +33 -22
  78. package/scss/components/_grid-nav.scss +128 -0
  79. package/scss/components/_nav.scss +1 -1
  80. package/scss/components/_spinner.scss +5 -4
  81. package/scss/components/_table.scss +6 -0
  82. package/scss/components/form/_combo.scss +4 -0
  83. package/scss/components/form/_tree.scss +42 -0
  84. package/scss/themes/_common.scss +2 -0
  85. package/scss/themes/_cxd-variables.scss +6 -7
  86. package/scss/themes/cxd.scss +1 -0
  87. package/sdk/ang-ie11.css +227 -28
  88. package/sdk/ang.css +227 -27
  89. package/sdk/antd-ie11.css +227 -28
  90. package/sdk/antd.css +227 -27
  91. package/sdk/charts.js +13 -13
  92. package/sdk/color-picker.js +65 -65
  93. package/sdk/cropperjs.js +2 -2
  94. package/sdk/cxd-ie11.css +233 -32
  95. package/sdk/cxd.css +234 -34
  96. package/sdk/dark-ie11.css +227 -28
  97. package/sdk/dark.css +227 -27
  98. package/sdk/exceljs.js +1 -1
  99. package/sdk/markdown.js +69 -69
  100. package/sdk/papaparse.js +1 -1
  101. package/sdk/renderers/Form/CityDB.js +1 -1
  102. package/sdk/rest.js +18 -18
  103. package/sdk/rich-text.js +62 -62
  104. package/sdk/sdk-ie11.css +233 -32
  105. package/sdk/sdk.css +234 -34
  106. package/sdk/sdk.js +1179 -1145
  107. package/sdk/thirds/hls.js/hls.js +1 -1
  108. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  109. package/sdk/tinymce.js +57 -57
  110. package/src/Schema.ts +5 -1
  111. package/src/components/AssociatedSelection.tsx +3 -1
  112. package/src/components/Collapse.tsx +144 -20
  113. package/src/components/CollapseGroup.tsx +130 -0
  114. package/src/components/GridNav.tsx +233 -0
  115. package/src/components/Toast.tsx +23 -16
  116. package/src/components/Tree.tsx +194 -8
  117. package/src/envOverwrite.ts +20 -7
  118. package/src/factory.tsx +52 -6
  119. package/src/icons/drag-bar.svg +12 -6
  120. package/src/index.tsx +2 -0
  121. package/src/renderers/Collapse.tsx +70 -117
  122. package/src/renderers/CollapseGroup.tsx +80 -0
  123. package/src/renderers/GridNav.tsx +204 -0
  124. package/src/store/formItem.ts +94 -2
  125. package/src/types.ts +1 -1
  126. package/src/utils/api.ts +93 -6
  127. package/src/utils/helper.ts +19 -0
  128. package/tsconfig-for-declaration.json +1 -1
@@ -3,11 +3,10 @@ import {Renderer, RendererProps} from '../factory';
3
3
  import {Collapse as BasicCollapse} from '../components/Collapse';
4
4
  import {
5
5
  BaseSchema,
6
- SchemaClassName,
7
6
  SchemaCollection,
8
- SchemaTpl
7
+ SchemaTpl,
8
+ SchemaObject
9
9
  } from '../Schema';
10
- import {isClickOnInput} from '../utils/helper';
11
10
 
12
11
  /**
13
12
  * Collapse 折叠渲染器,格式说明。
@@ -19,10 +18,20 @@ export interface CollapseSchema extends BaseSchema {
19
18
  */
20
19
  type: 'collapse';
21
20
 
21
+ /**
22
+ * 标识
23
+ */
24
+ key?: string;
25
+
22
26
  /**
23
27
  * 标题展示位置
24
28
  */
25
- titlePosition: 'top' | 'bottom';
29
+ headerPosition?: 'top' | 'bottom';
30
+
31
+ /**
32
+ * 标题
33
+ */
34
+ header?: string | SchemaCollection;
26
35
 
27
36
  /**
28
37
  * 内容区域
@@ -32,7 +41,12 @@ export interface CollapseSchema extends BaseSchema {
32
41
  /**
33
42
  * 配置 Body 容器 className
34
43
  */
35
- bodyClassName?: SchemaClassName;
44
+ bodyClassName?: string;
45
+
46
+ /**
47
+ * 是否禁用
48
+ */
49
+ disabled?: boolean;
36
50
 
37
51
  /**
38
52
  * 是否可折叠
@@ -45,19 +59,24 @@ export interface CollapseSchema extends BaseSchema {
45
59
  collapsed?: boolean;
46
60
 
47
61
  /**
48
- * 标题 CSS 类名
62
+ * 图标是否展示
49
63
  */
50
- headingClassName?: string;
64
+ showArrow?: boolean;
65
+
66
+ /**
67
+ * 自定义切换图标
68
+ */
69
+ expandIcon?: SchemaObject;
51
70
 
52
71
  /**
53
- * 标题
72
+ * 标题 CSS 类名
54
73
  */
55
- title?: SchemaTpl;
74
+ headingClassName?: string;
56
75
 
57
76
  /**
58
77
  * 收起的标题
59
78
  */
60
- collapseTitle?: SchemaTpl;
79
+ collapseHeader?: SchemaTpl;
61
80
 
62
81
  /**
63
82
  * 控件大小
@@ -85,143 +104,77 @@ export interface CollapseProps
85
104
  children?: JSX.Element | ((props?: any) => JSX.Element);
86
105
  }
87
106
 
88
- export interface CollapseState {
89
- collapsed: boolean;
90
- }
91
-
92
107
  export default class Collapse extends React.Component<
93
108
  CollapseProps,
94
- CollapseState
109
+ {}
95
110
  > {
96
- static propsList: Array<string> = [
97
- 'wrapperComponent',
98
- 'headingComponent',
99
- 'bodyClassName',
100
- 'collapsed',
101
- 'headingClassName',
102
- 'title',
103
- 'mountOnEnter',
104
- 'unmountOnExit'
105
- ];
106
-
107
- static defaultProps: Partial<CollapseProps> = {
108
- titlePosition: 'top',
109
- wrapperComponent: 'div',
110
- headingComponent: 'h4',
111
- className: '',
112
- headingClassName: '',
113
- bodyClassName: '',
114
- collapsable: true
115
- };
116
-
117
- state = {
118
- collapsed: false
119
- };
120
-
121
- constructor(props: CollapseProps) {
122
- super(props);
123
-
124
- this.toggleCollapsed = this.toggleCollapsed.bind(this);
125
- this.state.collapsed = !!props.collapsed;
126
- }
127
-
128
- componentDidUpdate(prevProps: CollapseProps) {
129
- const props = this.props;
130
-
131
- if (prevProps.collapsed !== props.collapsed) {
132
- this.setState({
133
- collapsed: !!props.collapsed
134
- });
135
- }
136
- }
137
-
138
- toggleCollapsed(e: React.MouseEvent<HTMLElement>) {
139
- if (isClickOnInput(e)) {
140
- return;
141
- }
142
- this.props.collapsable !== false &&
143
- this.setState({
144
- collapsed: !this.state.collapsed
145
- });
146
- }
147
111
 
148
112
  render() {
149
113
  const {
114
+ key,
115
+ id,
150
116
  classPrefix: ns,
151
117
  classnames: cx,
152
118
  size,
153
- wrapperComponent: WrapperComponent,
154
- headingComponent: HeadingComponent,
119
+ wrapperComponent,
120
+ headingComponent,
155
121
  className,
156
122
  headingClassName,
157
123
  children,
158
124
  titlePosition,
125
+ headerPosition,
159
126
  title,
160
127
  collapseTitle,
128
+ collapseHeader,
129
+ header,
161
130
  body,
162
131
  bodyClassName,
163
132
  render,
164
133
  collapsable,
165
134
  translate: __,
166
135
  mountOnEnter,
167
- unmountOnExit
136
+ unmountOnExit,
137
+ showArrow,
138
+ expandIcon,
139
+ disabled,
140
+ collapsed,
141
+ propsUpdate,
142
+ onCollapse
168
143
  } = this.props;
169
- // 默认给个 title,不然没法点
170
- const finalTitle = this.state.collapsed ? title : collapseTitle || title;
171
-
172
- let dom = [
173
- finalTitle ? (
174
- <HeadingComponent
175
- key="title"
176
- onClick={this.toggleCollapsed}
177
- className={cx(`Collapse-header`, headingClassName)}
178
- >
179
- <div className={cx('Collapse-header-wrapper')}>
180
- {render('heading', finalTitle, {className: 'Collapse-header-tpl'})}
181
- {collapsable && <span className={cx('Collapse-arrow')} />}
182
- </div>
183
- </HeadingComponent>
184
- ) : null,
185
144
 
145
+ return (
186
146
  <BasicCollapse
187
- show={collapsable ? !this.state.collapsed : true}
147
+ key={key}
148
+ id={id}
188
149
  classnames={cx}
189
150
  classPrefix={ns}
190
- key="body"
191
151
  mountOnEnter={mountOnEnter}
192
152
  unmountOnExit={unmountOnExit}
153
+ size={size}
154
+ wrapperComponent={wrapperComponent}
155
+ headingComponent={headingComponent}
156
+ className={className}
157
+ headingClassName={headingClassName}
158
+ bodyClassName={bodyClassName}
159
+ headerPosition={titlePosition || headerPosition}
160
+ collapsable={collapsable}
161
+ collapsed={collapsed}
162
+ showArrow={showArrow}
163
+ disabled={disabled}
164
+ propsUpdate={propsUpdate}
165
+ expandIcon={expandIcon ? render('arrow-icon', expandIcon || '', {className: cx('Collapse-icon-tranform')}) : null}
166
+ collapseHeader={collapseTitle || collapseHeader ? render('heading', collapseTitle || collapseHeader) : null}
167
+ header={render('heading', title || header || '')}
168
+ body={children
169
+ ? typeof children === 'function'
170
+ ? children(this.props)
171
+ : children
172
+ : body
173
+ ? render('body', body)
174
+ : null}
175
+ onCollapse={onCollapse}
193
176
  >
194
- <div className={cx(`Collapse-body`, bodyClassName)}>
195
- {children
196
- ? typeof children === 'function'
197
- ? children(this.props)
198
- : children
199
- : body
200
- ? render('body', body)
201
- : null}
202
- </div>
203
177
  </BasicCollapse>
204
- ];
205
-
206
- if (titlePosition === 'bottom') {
207
- dom.reverse();
208
- }
209
-
210
- return (
211
- <WrapperComponent
212
- className={cx(
213
- `Collapse`,
214
- {
215
- 'is-collapsed': this.state.collapsed,
216
- [`Collapse--${size}`]: size,
217
- 'Collapse--collapsable': collapsable,
218
- 'Collapse--title-bottom': titlePosition === 'bottom'
219
- },
220
- className
221
- )}
222
- >
223
- {dom}
224
- </WrapperComponent>
225
178
  );
226
179
  }
227
180
  }
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import {Renderer, RendererProps} from '../factory';
3
+ import {BaseSchema, SchemaCollection, SchemaObject} from '../Schema';
4
+ import CollapseGroup from '../components/CollapseGroup';
5
+
6
+ /**
7
+ * CollapseGroup 折叠渲染器,格式说明。
8
+ * 文档:https://baidu.gitee.io/amis/docs/components/collapse
9
+ */
10
+ export interface CollapseGroupSchema extends BaseSchema {
11
+ /**
12
+ * 指定为折叠器类型
13
+ */
14
+ type: 'collapse-group';
15
+
16
+ /**
17
+ * 激活面板
18
+ */
19
+ activeKey?: Array<string | number | never> | string | number;
20
+
21
+ /**
22
+ * 手风琴模式
23
+ */
24
+ accordion?: boolean;
25
+
26
+ /**
27
+ * 自定义切换图标
28
+ */
29
+ expandIcon?: SchemaObject;
30
+
31
+ /**
32
+ * 设置图标位置
33
+ */
34
+ expandIconPosition?: 'left' | 'right';
35
+
36
+ /**
37
+ * 内容区域
38
+ */
39
+ body?: SchemaCollection;
40
+ }
41
+ export interface CollapseGroupProps
42
+ extends RendererProps,
43
+ Omit<CollapseGroupSchema, 'type' | 'className'> {
44
+
45
+ children?: JSX.Element | ((props?: any) => JSX.Element);
46
+ }
47
+
48
+ export class CollapseGroupRender extends React.Component<CollapseGroupProps, {}> {
49
+ constructor(props: CollapseGroupProps) {
50
+ super(props);
51
+ }
52
+ render() {
53
+ const {
54
+ defaultActiveKey,
55
+ accordion,
56
+ expandIcon,
57
+ expandIconPosition,
58
+ body,
59
+ className,
60
+ render
61
+ } = this.props;
62
+ return (
63
+ <CollapseGroup
64
+ defaultActiveKey={defaultActiveKey}
65
+ accordion={accordion}
66
+ expandIcon={expandIcon}
67
+ expandIconPosition={expandIconPosition}
68
+ className={className}
69
+ >
70
+ {render('body', body || '')}
71
+ </CollapseGroup>
72
+ )
73
+ }
74
+ }
75
+
76
+
77
+ @Renderer({
78
+ type: 'collapse-group'
79
+ })
80
+ export class CollapseGroupRenderer extends CollapseGroupRender {}
@@ -0,0 +1,204 @@
1
+ import React from 'react';
2
+ import {Renderer, RendererProps} from '../factory';
3
+ import {autobind, getPropValue} from '../utils/helper';
4
+ import {isPureVariable, resolveVariableAndFilter} from '../utils/tpl-builtin';
5
+ import {
6
+ BaseSchema,
7
+ SchemaTokenizeableString,
8
+ SchemaTpl,
9
+ SchemaUrlPath
10
+ } from '../Schema';
11
+ import {ActionSchema} from './Action';
12
+ import GridNav, {GridNavDirection, GridNavItem} from '../components/GridNav';
13
+ import {BadgeSchema} from '../components/Badge';
14
+ import handleAction from '../utils/handleAction';
15
+ import {validations} from '../utils/validations';
16
+
17
+ export interface ListItemSchema extends Omit<BaseSchema, 'type'> {
18
+ /**
19
+ * 单项点击事件
20
+ */
21
+ clickAction?: ActionSchema;
22
+
23
+ /**
24
+ * 跳转地址
25
+ */
26
+ link?: string;
27
+
28
+ /**
29
+ * 打开方式
30
+ */
31
+ blank?: string;
32
+
33
+ /**
34
+ * 图片地址
35
+ */
36
+ icon?: SchemaUrlPath;
37
+
38
+ /**
39
+ * 描述
40
+ */
41
+ text?: SchemaTpl;
42
+
43
+ /**
44
+ * 图标最大宽度比例 0-100
45
+ */
46
+ iconRatio?: number;
47
+
48
+ /**
49
+ * 角标
50
+ */
51
+ badge?: BadgeSchema;
52
+ }
53
+
54
+ /**
55
+ * List 列表展示控件。
56
+ * 文档:https://baidu.gitee.io/amis/docs/components/card
57
+ */
58
+ export interface ListSchema extends BaseSchema {
59
+ /**
60
+ * 指定为 List 列表展示控件。
61
+ */
62
+ type: 'grid-nav';
63
+
64
+ /**
65
+ * 列表项类名
66
+ */
67
+ itemClassName?: string;
68
+
69
+ /**
70
+ * 静态图片列表配置
71
+ */
72
+ options?: Array<ListItemSchema>;
73
+
74
+ /**
75
+ * 是否将列表项固定为正方形
76
+ */
77
+ square?: boolean;
78
+
79
+ /**
80
+ * 是否将列表项内容居中显示
81
+ */
82
+ center?: boolean;
83
+
84
+ /**
85
+ * 是否显示列表项边框
86
+ */
87
+ border?: boolean;
88
+
89
+ /**
90
+ * 列表项之间的间距,默认单位为px
91
+ */
92
+ gutter?: number;
93
+
94
+ /**
95
+ * 图标宽度占比, 1-100
96
+ */
97
+ iconRatio?: number;
98
+
99
+ /**
100
+ * 列表项内容排列的方向,可选值为 horizontal 、vertical
101
+ */
102
+ direction?: GridNavDirection;
103
+
104
+ /**
105
+ * 列数
106
+ */
107
+ columnNum?: number;
108
+
109
+ /**
110
+ * 数据源: 绑定当前环境变量
111
+ *
112
+ * @default ${items}
113
+ */
114
+ source?: SchemaTokenizeableString;
115
+ }
116
+
117
+ export interface Column {
118
+ type: string;
119
+ [propName: string]: any;
120
+ }
121
+
122
+ export interface ListProps
123
+ extends RendererProps,
124
+ Omit<ListSchema, 'type' | 'className'> {
125
+ handleClick: (item?: ListItemSchema) => void;
126
+ }
127
+
128
+ @Renderer({
129
+ type: 'grid-nav'
130
+ })
131
+ export default class List extends React.Component<ListProps, object> {
132
+ @autobind
133
+ handleClick(item: ListItemSchema) {
134
+ return (e: React.MouseEvent) => {
135
+ let action;
136
+ if (item.link) {
137
+ action = validations.isUrl({}, item.link)
138
+ ? {
139
+ type: 'button',
140
+ actionType: 'url',
141
+ url: item.link,
142
+ blank: item.blank
143
+ }
144
+ : {
145
+ type: 'button',
146
+ actionType: 'link',
147
+ link: item.link
148
+ };
149
+ } else {
150
+ action = item.clickAction!;
151
+ }
152
+ handleAction(e, action as ActionSchema, this.props);
153
+ };
154
+ }
155
+
156
+ render() {
157
+ const {itemClassName, source, data, options, classnames} = this.props;
158
+
159
+ let value = getPropValue(this.props);
160
+ let list: any = [];
161
+
162
+ if (typeof source === 'string' && isPureVariable(source)) {
163
+ list = resolveVariableAndFilter(source, data, '| raw') || undefined;
164
+ } else if (Array.isArray(value)) {
165
+ list = value;
166
+ } else if (Array.isArray(options)) {
167
+ list = options;
168
+ }
169
+
170
+ if (list && !Array.isArray(list)) {
171
+ list = [list];
172
+ }
173
+
174
+ if (!list?.length) {
175
+ return null;
176
+ }
177
+
178
+ return (
179
+ <GridNav {...this.props}>
180
+ {list.map((item: ListItemSchema, index: number) => (
181
+ <GridNavItem
182
+ key={index}
183
+ onClick={
184
+ item.clickAction || item.link ? this.handleClick(item) : undefined
185
+ }
186
+ className={itemClassName}
187
+ text={item.text}
188
+ icon={item.icon}
189
+ classnames={classnames}
190
+ badge={
191
+ item.badge
192
+ ? {
193
+ badge: item.badge,
194
+ data: data,
195
+ classnames
196
+ }
197
+ : undefined
198
+ }
199
+ />
200
+ ))}
201
+ </GridNav>
202
+ );
203
+ }
204
+ }
@@ -617,12 +617,104 @@ export const FormItemStore = StoreNode.named('FormItemStore')
617
617
  return json;
618
618
  });
619
619
 
620
+ const tryDeferLoadLeftOptions: (
621
+ option: any,
622
+ api: Api,
623
+ data?: object,
624
+ config?: fetchOptions
625
+ ) => Promise<Payload | null> = flow(function* (
626
+ option: any,
627
+ api: string,
628
+ data: object,
629
+ config?: fetchOptions
630
+ ) {
631
+ if (
632
+ self.options.length != 1 ||
633
+ !Array.isArray(self.options[0].leftOptions)
634
+ ) {
635
+ return;
636
+ }
637
+
638
+ let leftOptions = self.options[0].leftOptions as any;
639
+
640
+ const indexes = findTreeIndex(leftOptions, item => item === option);
641
+ if (!indexes) {
642
+ return;
643
+ }
644
+
645
+ setOptions(
646
+ [
647
+ {
648
+ ...self.options[0],
649
+ leftOptions: spliceTree(leftOptions, indexes, 1, {
650
+ ...option,
651
+ loading: true
652
+ })
653
+ }
654
+ ],
655
+ undefined,
656
+ data
657
+ );
658
+
659
+ let json = yield fetchOptions(
660
+ api,
661
+ data,
662
+ {
663
+ ...config,
664
+ silent: true
665
+ },
666
+ false
667
+ );
668
+ if (!json) {
669
+ setOptions(
670
+ [
671
+ {
672
+ ...self.options[0],
673
+ leftOptions: spliceTree(self.options, indexes, 1, {
674
+ ...option,
675
+ loading: false,
676
+ error: true
677
+ })
678
+ }
679
+ ],
680
+ undefined,
681
+ data
682
+ );
683
+ return;
684
+ }
685
+
686
+ let options: Array<IOption> =
687
+ json.data?.options ||
688
+ json.data.items ||
689
+ json.data.rows ||
690
+ json.data ||
691
+ [];
692
+
693
+ setOptions(
694
+ [
695
+ {
696
+ ...self.options[0],
697
+ leftOptions: spliceTree(self.options, indexes, 1, {
698
+ ...option,
699
+ loading: false,
700
+ loaded: true,
701
+ children: options
702
+ })
703
+ }
704
+ ],
705
+ undefined,
706
+ data
707
+ );
708
+
709
+ return json;
710
+ });
711
+
620
712
  const deferLoadOptions: (
621
713
  option: any,
622
714
  api: Api,
623
715
  data?: object,
624
716
  config?: fetchOptions
625
- ) => Promise<Payload | null> = flow(function* getInitData(
717
+ ) => Promise<Payload | null> = flow(function* (
626
718
  option: any,
627
719
  api: string,
628
720
  data: object,
@@ -630,7 +722,7 @@ export const FormItemStore = StoreNode.named('FormItemStore')
630
722
  ) {
631
723
  const indexes = findTreeIndex(self.options, item => item === option);
632
724
  if (!indexes) {
633
- return;
725
+ return yield tryDeferLoadLeftOptions(option, api, data, config);
634
726
  }
635
727
 
636
728
  setOptions(
package/src/types.ts CHANGED
@@ -31,7 +31,7 @@ export interface fetcherResult {
31
31
  }
32
32
 
33
33
  export interface fetchOptions {
34
- method?: 'get' | 'post' | 'put' | 'patch' | 'delete';
34
+ method?: 'get' | 'post' | 'put' | 'patch' | 'delete' | 'jsonp';
35
35
  successMessage?: string;
36
36
  errorMessage?: string;
37
37
  autoAppend?: boolean;