amis-core 3.5.2 → 3.6.0

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 (285) hide show
  1. package/esm/Root.js +1 -1
  2. package/esm/RootRenderer.d.ts +1 -1
  3. package/esm/RootRenderer.js +2 -2
  4. package/esm/SchemaRenderer.js +1 -1
  5. package/esm/Scoped.d.ts +2 -0
  6. package/esm/Scoped.js +49 -7
  7. package/esm/StatusScoped.js +1 -1
  8. package/esm/WithRootStore.js +1 -1
  9. package/esm/WithStore.js +27 -12
  10. package/esm/actions/Action.js +30 -22
  11. package/esm/actions/AjaxAction.js +2 -2
  12. package/esm/actions/BreakAction.js +1 -1
  13. package/esm/actions/BroadcastAction.js +1 -1
  14. package/esm/actions/CmptAction.js +31 -32
  15. package/esm/actions/ContinueAction.js +1 -1
  16. package/esm/actions/CopyAction.js +3 -3
  17. package/esm/actions/CustomAction.js +1 -1
  18. package/esm/actions/DialogAction.js +1 -1
  19. package/esm/actions/DrawerAction.js +1 -1
  20. package/esm/actions/EmailAction.js +1 -1
  21. package/esm/actions/LinkAction.js +5 -5
  22. package/esm/actions/LoopAction.js +1 -1
  23. package/esm/actions/PageAction.js +1 -1
  24. package/esm/actions/ParallelAction.js +1 -1
  25. package/esm/actions/StatusAction.js +1 -1
  26. package/esm/actions/SwitchAction.js +1 -1
  27. package/esm/actions/ToastAction.js +3 -3
  28. package/esm/components/CustomStyle.js +1 -1
  29. package/esm/components/ErrorBoundary.d.ts +20 -0
  30. package/esm/components/ErrorBoundary.js +41 -0
  31. package/esm/components/LazyComponent.js +1 -1
  32. package/esm/components/Overlay.js +1 -1
  33. package/esm/components/PopOver.d.ts +4 -0
  34. package/esm/components/PopOver.js +66 -3
  35. package/esm/env.d.ts +9 -0
  36. package/esm/env.js +1 -1
  37. package/esm/envOverwrite.d.ts +1 -1
  38. package/esm/envOverwrite.js +15 -35
  39. package/esm/factory.js +1 -1
  40. package/esm/index.d.ts +2 -1
  41. package/esm/index.js +5 -4
  42. package/esm/locale.js +1 -1
  43. package/esm/polyfills.js +1 -1
  44. package/esm/renderers/Form.d.ts +10 -4
  45. package/esm/renderers/Form.js +64 -32
  46. package/esm/renderers/Item.d.ts +54 -0
  47. package/esm/renderers/Item.js +1 -1
  48. package/esm/renderers/Options.d.ts +5 -1
  49. package/esm/renderers/Options.js +11 -9
  50. package/esm/renderers/Placeholder.js +1 -1
  51. package/esm/renderers/builtin.js +1 -1
  52. package/esm/renderers/register.js +1 -1
  53. package/esm/renderers/wrapControl.js +10 -17
  54. package/esm/store/app.js +1 -1
  55. package/esm/store/combo.d.ts +1154 -48
  56. package/esm/store/combo.js +10 -3
  57. package/esm/store/crud.d.ts +9 -1
  58. package/esm/store/crud.js +50 -15
  59. package/esm/store/form.d.ts +480 -20
  60. package/esm/store/form.js +1 -1
  61. package/esm/store/formItem.d.ts +23 -1
  62. package/esm/store/formItem.js +103 -15
  63. package/esm/store/iRenderer.js +1 -1
  64. package/esm/store/index.js +1 -1
  65. package/esm/store/list.js +1 -1
  66. package/esm/store/manager.js +1 -1
  67. package/esm/store/modal.js +1 -1
  68. package/esm/store/node.js +1 -1
  69. package/esm/store/pagination.js +1 -1
  70. package/esm/store/root.js +1 -1
  71. package/esm/store/service.js +1 -1
  72. package/esm/store/status.js +1 -1
  73. package/esm/store/table.d.ts +1078 -42
  74. package/esm/store/table.js +64 -6
  75. package/esm/store/table2.js +1 -4
  76. package/esm/theme.js +1 -1
  77. package/esm/types.d.ts +8 -2
  78. package/esm/utils/Animation.js +1 -1
  79. package/esm/utils/ColorScale.js +1 -1
  80. package/esm/utils/DataSchema.js +1 -1
  81. package/esm/utils/DataScope.js +1 -1
  82. package/esm/utils/RootClose.js +1 -1
  83. package/esm/utils/SimpleMap.js +1 -1
  84. package/esm/utils/api.js +1 -1
  85. package/esm/utils/arraySlice.js +1 -1
  86. package/esm/utils/attachmentAdpator.js +3 -1
  87. package/esm/utils/autobind.js +1 -1
  88. package/esm/utils/columnsSplit.js +1 -1
  89. package/esm/utils/dataMapping.js +1 -1
  90. package/esm/utils/date.js +1 -1
  91. package/esm/utils/debug.js +1 -1
  92. package/esm/utils/decodeEntity.js +1 -1
  93. package/esm/utils/dom.js +1 -1
  94. package/esm/utils/errors.js +1 -1
  95. package/esm/utils/escapeHtml.js +1 -1
  96. package/esm/utils/filter-schema.d.ts +2 -1
  97. package/esm/utils/filter-schema.js +14 -5
  98. package/esm/utils/filter.js +1 -1
  99. package/esm/utils/formatDuration.js +1 -1
  100. package/esm/utils/formula.js +1 -1
  101. package/esm/utils/getVariable.js +1 -1
  102. package/esm/utils/grammar.js +1 -1
  103. package/esm/utils/handleAction.js +1 -1
  104. package/esm/utils/helper.d.ts +2 -2
  105. package/esm/utils/helper.js +37 -29
  106. package/esm/utils/highlight.js +1 -1
  107. package/esm/utils/icon.js +1 -1
  108. package/esm/utils/image.js +1 -1
  109. package/esm/utils/isPureVariable.js +1 -1
  110. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  111. package/esm/utils/keyToPath.js +1 -1
  112. package/esm/utils/makeSorter.js +1 -1
  113. package/esm/utils/math.js +8 -5
  114. package/esm/utils/memoryParse.js +1 -1
  115. package/esm/utils/normalizeLink.js +1 -1
  116. package/esm/utils/normalizeOptions.js +1 -1
  117. package/esm/utils/object.js +15 -1
  118. package/esm/utils/offset.js +1 -1
  119. package/esm/utils/offsetParent.js +1 -1
  120. package/esm/utils/optionValueCompare.js +1 -1
  121. package/esm/utils/position.js +1 -1
  122. package/esm/utils/prettyBytes.js +1 -1
  123. package/esm/utils/renderer-event.d.ts +7 -0
  124. package/esm/utils/renderer-event.js +30 -18
  125. package/esm/utils/replaceText.js +1 -1
  126. package/esm/utils/resize-sensor.js +1 -1
  127. package/esm/utils/resolveCondition.js +1 -1
  128. package/esm/utils/resolveVariable.js +1 -1
  129. package/esm/utils/resolveVariableAndFilter.js +1 -1
  130. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  131. package/esm/utils/scrollPosition.js +1 -1
  132. package/esm/utils/string2regExp.js +1 -1
  133. package/esm/utils/stripNumber.js +1 -1
  134. package/esm/utils/style-helper.js +12 -15
  135. package/esm/utils/style.js +3 -2
  136. package/esm/utils/toNumber.js +1 -1
  137. package/esm/utils/tokenize.js +1 -1
  138. package/esm/utils/tpl-builtin.js +1 -1
  139. package/esm/utils/tpl-lodash.js +1 -1
  140. package/esm/utils/tpl.js +1 -1
  141. package/esm/utils/uncontrollable.js +1 -1
  142. package/esm/utils/validations.js +1 -1
  143. package/lib/Root.js +1 -1
  144. package/lib/RootRenderer.d.ts +1 -1
  145. package/lib/RootRenderer.js +2 -2
  146. package/lib/SchemaRenderer.js +1 -1
  147. package/lib/Scoped.d.ts +2 -0
  148. package/lib/Scoped.js +48 -6
  149. package/lib/StatusScoped.js +1 -1
  150. package/lib/WithRootStore.js +1 -1
  151. package/lib/WithStore.js +26 -11
  152. package/lib/actions/Action.js +29 -21
  153. package/lib/actions/AjaxAction.js +2 -2
  154. package/lib/actions/BreakAction.js +1 -1
  155. package/lib/actions/BroadcastAction.js +1 -1
  156. package/lib/actions/CmptAction.js +31 -32
  157. package/lib/actions/ContinueAction.js +1 -1
  158. package/lib/actions/CopyAction.js +3 -3
  159. package/lib/actions/CustomAction.js +1 -1
  160. package/lib/actions/DialogAction.js +1 -1
  161. package/lib/actions/DrawerAction.js +1 -1
  162. package/lib/actions/EmailAction.js +1 -1
  163. package/lib/actions/LinkAction.js +5 -5
  164. package/lib/actions/LoopAction.js +1 -1
  165. package/lib/actions/PageAction.js +1 -1
  166. package/lib/actions/ParallelAction.js +1 -1
  167. package/lib/actions/StatusAction.js +1 -1
  168. package/lib/actions/SwitchAction.js +1 -1
  169. package/lib/actions/ToastAction.js +3 -3
  170. package/lib/components/CustomStyle.js +1 -1
  171. package/lib/components/ErrorBoundary.d.ts +20 -0
  172. package/lib/components/ErrorBoundary.js +52 -0
  173. package/lib/components/LazyComponent.js +1 -1
  174. package/lib/components/Overlay.js +1 -1
  175. package/lib/components/PopOver.d.ts +4 -0
  176. package/lib/components/PopOver.js +64 -1
  177. package/lib/env.d.ts +9 -0
  178. package/lib/env.js +1 -1
  179. package/lib/envOverwrite.d.ts +1 -1
  180. package/lib/envOverwrite.js +18 -34
  181. package/lib/factory.js +1 -1
  182. package/lib/index.d.ts +2 -1
  183. package/lib/index.js +6 -3
  184. package/lib/locale.js +1 -1
  185. package/lib/polyfills.js +1 -1
  186. package/lib/renderers/Form.d.ts +10 -4
  187. package/lib/renderers/Form.js +64 -32
  188. package/lib/renderers/Item.d.ts +54 -0
  189. package/lib/renderers/Item.js +1 -1
  190. package/lib/renderers/Options.d.ts +5 -1
  191. package/lib/renderers/Options.js +11 -9
  192. package/lib/renderers/Placeholder.js +1 -1
  193. package/lib/renderers/builtin.js +1 -1
  194. package/lib/renderers/register.js +1 -1
  195. package/lib/renderers/wrapControl.js +10 -17
  196. package/lib/store/app.js +1 -1
  197. package/lib/store/combo.d.ts +1154 -49
  198. package/lib/store/combo.js +10 -3
  199. package/lib/store/crud.d.ts +9 -1
  200. package/lib/store/crud.js +50 -15
  201. package/lib/store/form.d.ts +480 -21
  202. package/lib/store/form.js +1 -1
  203. package/lib/store/formItem.d.ts +23 -1
  204. package/lib/store/formItem.js +104 -15
  205. package/lib/store/iRenderer.js +1 -1
  206. package/lib/store/index.js +1 -1
  207. package/lib/store/list.js +1 -1
  208. package/lib/store/manager.js +1 -1
  209. package/lib/store/modal.js +1 -1
  210. package/lib/store/node.js +1 -1
  211. package/lib/store/pagination.js +1 -1
  212. package/lib/store/root.js +1 -1
  213. package/lib/store/service.js +1 -1
  214. package/lib/store/status.js +1 -1
  215. package/lib/store/table.d.ts +1078 -43
  216. package/lib/store/table.js +63 -5
  217. package/lib/store/table2.js +1 -4
  218. package/lib/theme.js +1 -1
  219. package/lib/types.d.ts +8 -2
  220. package/lib/utils/Animation.js +1 -1
  221. package/lib/utils/ColorScale.js +1 -1
  222. package/lib/utils/DataSchema.js +1 -1
  223. package/lib/utils/DataScope.js +1 -1
  224. package/lib/utils/RootClose.js +1 -1
  225. package/lib/utils/SimpleMap.js +1 -1
  226. package/lib/utils/api.js +1 -1
  227. package/lib/utils/arraySlice.js +1 -1
  228. package/lib/utils/attachmentAdpator.js +3 -1
  229. package/lib/utils/autobind.js +1 -1
  230. package/lib/utils/columnsSplit.js +1 -1
  231. package/lib/utils/dataMapping.js +1 -1
  232. package/lib/utils/date.js +1 -1
  233. package/lib/utils/debug.js +1 -1
  234. package/lib/utils/decodeEntity.js +1 -1
  235. package/lib/utils/dom.js +1 -1
  236. package/lib/utils/errors.js +1 -1
  237. package/lib/utils/escapeHtml.js +1 -1
  238. package/lib/utils/filter-schema.d.ts +2 -1
  239. package/lib/utils/filter-schema.js +14 -4
  240. package/lib/utils/filter.js +1 -1
  241. package/lib/utils/formatDuration.js +1 -1
  242. package/lib/utils/formula.js +1 -1
  243. package/lib/utils/getVariable.js +1 -1
  244. package/lib/utils/grammar.js +1 -1
  245. package/lib/utils/handleAction.js +1 -1
  246. package/lib/utils/helper.d.ts +2 -2
  247. package/lib/utils/helper.js +36 -28
  248. package/lib/utils/highlight.js +1 -1
  249. package/lib/utils/icon.js +1 -1
  250. package/lib/utils/image.js +1 -1
  251. package/lib/utils/isPureVariable.js +1 -1
  252. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  253. package/lib/utils/keyToPath.js +1 -1
  254. package/lib/utils/makeSorter.js +1 -1
  255. package/lib/utils/math.js +8 -5
  256. package/lib/utils/memoryParse.js +1 -1
  257. package/lib/utils/normalizeLink.js +1 -1
  258. package/lib/utils/normalizeOptions.js +1 -1
  259. package/lib/utils/object.js +15 -1
  260. package/lib/utils/offset.js +1 -1
  261. package/lib/utils/offsetParent.js +1 -1
  262. package/lib/utils/optionValueCompare.js +1 -1
  263. package/lib/utils/position.js +1 -1
  264. package/lib/utils/prettyBytes.js +1 -1
  265. package/lib/utils/renderer-event.d.ts +7 -0
  266. package/lib/utils/renderer-event.js +30 -18
  267. package/lib/utils/replaceText.js +1 -1
  268. package/lib/utils/resize-sensor.js +1 -1
  269. package/lib/utils/resolveCondition.js +1 -1
  270. package/lib/utils/resolveVariable.js +1 -1
  271. package/lib/utils/resolveVariableAndFilter.js +1 -1
  272. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  273. package/lib/utils/scrollPosition.js +1 -1
  274. package/lib/utils/string2regExp.js +1 -1
  275. package/lib/utils/stripNumber.js +1 -1
  276. package/lib/utils/style-helper.js +12 -15
  277. package/lib/utils/style.js +3 -2
  278. package/lib/utils/toNumber.js +1 -1
  279. package/lib/utils/tokenize.js +1 -1
  280. package/lib/utils/tpl-builtin.js +1 -1
  281. package/lib/utils/tpl-lodash.js +1 -1
  282. package/lib/utils/tpl.js +1 -1
  283. package/lib/utils/uncontrollable.js +1 -1
  284. package/lib/utils/validations.js +1 -1
  285. package/package.json +3 -3
package/esm/store/form.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -40,6 +40,7 @@ export declare const FormItemStore: import("mobx-state-tree").IModelType<{
40
40
  joinValues: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
41
41
  extractValue: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
42
42
  options: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any[], any[], any[]>, [undefined]>;
43
+ optionsRaw: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any[], any[], any[]>, [undefined]>;
43
44
  expressionsInOptions: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
44
45
  selectFirst: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
45
46
  autoFill: import("mobx-state-tree").IType<any, any, any>;
@@ -55,6 +56,8 @@ export declare const FormItemStore: import("mobx-state-tree").IModelType<{
55
56
  inputGroupControl: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
56
57
  colIndex: import("mobx-state-tree").IType<any, any, any>;
57
58
  rowIndex: import("mobx-state-tree").IType<any, any, any>;
59
+ pagination: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
60
+ accumulatedOptions: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any[], any[], any[]>, [undefined]>;
58
61
  }, {
59
62
  readonly parentStore: any;
60
63
  readonly __: any;
@@ -75,13 +78,21 @@ export declare const FormItemStore: import("mobx-state-tree").IModelType<{
75
78
  readonly valid: boolean;
76
79
  readonly errClassNames: string;
77
80
  readonly lastSelectValue: string;
81
+ /** 数据源接口数据是否开启分页 */
82
+ readonly enableSourcePagination: boolean;
83
+ /** 数据源接口开启分页时当前页码 */
84
+ readonly sourcePageNum: number;
85
+ /** 数据源接口开启分页时每页显示条数 */
86
+ readonly sourcePerPageNum: number;
87
+ /** 数据源接口开启分页时数据总条数 */
88
+ readonly sourceTotalNum: number;
78
89
  getSelectedOptions: (value?: any, nodeValueArray?: any[] | undefined) => any;
79
90
  splitExtraValue(value: any): any[];
80
91
  getMergedData(data: any): any;
81
92
  } & {
82
93
  focus: () => void;
83
94
  blur: () => void;
84
- config: ({ extraName, required, unique, value, isValueSchemaExp, rules, messages, delimiter, multiple, valueField, labelField, joinValues, extractValue, type, id, selectFirst, autoFill, clearValueOnHidden, validateApi, maxLength, minLength, validateOnChange, label, inputGroupControl }: {
95
+ config: ({ extraName, required, unique, value, isValueSchemaExp, rules, messages, delimiter, multiple, valueField, labelField, joinValues, extractValue, type, id, selectFirst, autoFill, clearValueOnHidden, validateApi, maxLength, minLength, validateOnChange, label, inputGroupControl, pagination }: {
85
96
  extraName?: string | undefined;
86
97
  required?: boolean | undefined;
87
98
  unique?: boolean | undefined;
@@ -114,6 +125,11 @@ export declare const FormItemStore: import("mobx-state-tree").IModelType<{
114
125
  name: string;
115
126
  path: string;
116
127
  } | undefined;
128
+ pagination?: {
129
+ enable?: boolean | undefined;
130
+ page?: number | undefined;
131
+ perPage?: number | undefined;
132
+ } | undefined;
117
133
  }) => void;
118
134
  validate: (data: Object, hook?: any, customRules?: {
119
135
  [propName: string]: any;
@@ -124,10 +140,16 @@ export declare const FormItemStore: import("mobx-state-tree").IModelType<{
124
140
  rule: string;
125
141
  })[], tag?: string) => void;
126
142
  clearError: (tag?: string) => void;
143
+ setPagination: (params: {
144
+ page?: number | undefined;
145
+ perPage?: number | undefined;
146
+ total?: number | undefined;
147
+ }) => void;
127
148
  setOptions: (options: Array<object>, onChange?: ((value: any) => void) | undefined, data?: Object) => void;
128
149
  loadOptions: (api: Api, data?: object, config?: (fetchOptions & {
129
150
  extendsOptions?: boolean | undefined;
130
151
  }) | undefined, clearValue?: boolean, onChange?: ((value: any) => void) | undefined, setErrorFlag?: boolean) => Promise<Payload | null>;
152
+ loadOptionsFromDataScope: (source: string, ctx: Record<string, any>, onChange?: ((value: any) => void) | undefined) => any[];
131
153
  deferLoadOptions: (option: any, api: Api, data?: object, config?: fetchOptions | undefined) => Promise<Payload | null>;
132
154
  deferLoadLeftOptions: (option: any, leftOptions: any, api: Api, data?: object, config?: fetchOptions | undefined) => Promise<Payload | null>;
133
155
  expandTreeOptions: (nodePathArr: any[], api: Api, data?: object, config?: fetchOptions | undefined) => Promise<Payload | null | void>;
@@ -1,15 +1,22 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
6
6
  import { __generator, __assign, __values, __spreadArray, __read } from 'tslib';
7
7
  import { types, flow, getEnv, isAlive } from 'mobx-state-tree';
8
8
  import isEqualWith from 'lodash/isEqualWith';
9
+ import uniqWith from 'lodash/uniqWith';
9
10
  import { FormStore } from './form.js';
10
11
  import { validate, str2rules } from '../utils/validations.js';
11
12
  import { ComboStore } from './combo.js';
12
13
  import { evalExpression } from '../utils/tpl.js';
14
+ import 'amis-formula';
15
+ import 'moment';
16
+ import { cloneObject, setVariable, createObject, isObject } from '../utils/object.js';
17
+ import { resolveVariableAndFilter } from '../utils/resolveVariableAndFilter.js';
18
+ import { dataMapping } from '../utils/dataMapping.js';
19
+ import '../utils/filter.js';
13
20
  import { isEffectiveApi, buildApi } from '../utils/api.js';
14
21
  import findIndex from 'lodash/findIndex';
15
22
  import { findTree, spliceTree, flattenTree, findTreeIndex, isObjectShallowModified, filterTree, isArrayChildrenModified, eachTree, mapTree } from '../utils/helper.js';
@@ -21,8 +28,6 @@ import { StoreNode } from './node.js';
21
28
  import { getStoreById } from './manager.js';
22
29
  import { normalizeOptions } from '../utils/normalizeOptions.js';
23
30
  import { getOptionValueBindField, getOptionValue, optionValueCompare } from '../utils/optionValueCompare.js';
24
- import { dataMapping } from '../utils/dataMapping.js';
25
- import { cloneObject, setVariable, createObject, isObject } from '../utils/object.js';
26
31
 
27
32
  var ErrorDetail = types.model('ErrorDetail', {
28
33
  msg: '',
@@ -68,6 +73,7 @@ var FormItemStore = StoreNode.named('FormItemStore')
68
73
  joinValues: true,
69
74
  extractValue: false,
70
75
  options: types.optional(types.frozen(), []),
76
+ optionsRaw: types.optional(types.frozen(), []),
71
77
  expressionsInOptions: false,
72
78
  selectFirst: false,
73
79
  autoFill: types.frozen(),
@@ -83,7 +89,18 @@ var FormItemStore = StoreNode.named('FormItemStore')
83
89
  /** 当前表单项所属的InputGroup父元素, 用于收集InputGroup的子元素 */
84
90
  inputGroupControl: types.optional(types.frozen(), {}),
85
91
  colIndex: types.frozen(),
86
- rowIndex: types.frozen()
92
+ rowIndex: types.frozen(),
93
+ /** Transfer组件分页模式 */
94
+ pagination: types.optional(types.frozen(), {
95
+ enable: false,
96
+ /** 当前页数 */
97
+ page: 1,
98
+ /** 每页显示条数 */
99
+ perPage: 10,
100
+ /** 总条数 */
101
+ total: 0
102
+ }),
103
+ accumulatedOptions: types.optional(types.frozen(), [])
87
104
  })
88
105
  .views(function (self) {
89
106
  function getForm() {
@@ -134,6 +151,25 @@ var FormItemStore = StoreNode.named('FormItemStore')
134
151
  get lastSelectValue() {
135
152
  return getLastOptionValue();
136
153
  },
154
+ /** 数据源接口数据是否开启分页 */
155
+ get enableSourcePagination() {
156
+ return !!self.pagination.enable;
157
+ },
158
+ /** 数据源接口开启分页时当前页码 */
159
+ get sourcePageNum() {
160
+ var _a;
161
+ return (_a = self.pagination.page) !== null && _a !== void 0 ? _a : 1;
162
+ },
163
+ /** 数据源接口开启分页时每页显示条数 */
164
+ get sourcePerPageNum() {
165
+ var _a;
166
+ return (_a = self.pagination.perPage) !== null && _a !== void 0 ? _a : 10;
167
+ },
168
+ /** 数据源接口开启分页时数据总条数 */
169
+ get sourceTotalNum() {
170
+ var _a;
171
+ return (_a = self.pagination.total) !== null && _a !== void 0 ? _a : 0;
172
+ },
137
173
  getSelectedOptions: function (value, nodeValueArray) {
138
174
  if (value === void 0) { value = self.tmpValue; }
139
175
  // 查看是否命中缓存
@@ -221,7 +257,7 @@ var FormItemStore = StoreNode.named('FormItemStore')
221
257
  var dialogCallbacks = new SimpleMap();
222
258
  var loadAutoUpdateCancel = null;
223
259
  function config(_a) {
224
- var extraName = _a.extraName, required = _a.required, unique = _a.unique; _a.value; var isValueSchemaExp = _a.isValueSchemaExp, rules = _a.rules, messages = _a.messages, delimiter = _a.delimiter, multiple = _a.multiple, valueField = _a.valueField, labelField = _a.labelField, joinValues = _a.joinValues, extractValue = _a.extractValue, type = _a.type, id = _a.id, selectFirst = _a.selectFirst, autoFill = _a.autoFill, clearValueOnHidden = _a.clearValueOnHidden, validateApi = _a.validateApi, maxLength = _a.maxLength, minLength = _a.minLength, validateOnChange = _a.validateOnChange, label = _a.label, inputGroupControl = _a.inputGroupControl;
260
+ var extraName = _a.extraName, required = _a.required, unique = _a.unique; _a.value; var isValueSchemaExp = _a.isValueSchemaExp, rules = _a.rules, messages = _a.messages, delimiter = _a.delimiter, multiple = _a.multiple, valueField = _a.valueField, labelField = _a.labelField, joinValues = _a.joinValues, extractValue = _a.extractValue, type = _a.type, id = _a.id, selectFirst = _a.selectFirst, autoFill = _a.autoFill, clearValueOnHidden = _a.clearValueOnHidden, validateApi = _a.validateApi, maxLength = _a.maxLength, minLength = _a.minLength, validateOnChange = _a.validateOnChange, label = _a.label, inputGroupControl = _a.inputGroupControl, pagination = _a.pagination;
225
261
  if (typeof rules === 'string') {
226
262
  rules = str2rules(rules);
227
263
  }
@@ -253,6 +289,14 @@ var FormItemStore = StoreNode.named('FormItemStore')
253
289
  isObject(inputGroupControl) &&
254
290
  (inputGroupControl === null || inputGroupControl === void 0 ? void 0 : inputGroupControl.name) != null &&
255
291
  (self.inputGroupControl = inputGroupControl);
292
+ if (pagination && isObject(pagination) && !!pagination.enable) {
293
+ self.pagination = {
294
+ enable: true,
295
+ page: pagination.page ? pagination.page || 1 : 1,
296
+ perPage: pagination.perPage ? pagination.perPage || 10 : 10,
297
+ total: 0
298
+ };
299
+ }
256
300
  if (typeof rules !== 'undefined' ||
257
301
  typeof required !== 'undefined' ||
258
302
  typeof minLength === 'number' ||
@@ -283,7 +327,7 @@ var FormItemStore = StoreNode.named('FormItemStore')
283
327
  }
284
328
  var validateCancel = null;
285
329
  var validate$1 = flow(function validate$1(data, hook, customRules) {
286
- var json, combo, group;
330
+ var json, err_1, combo, group;
287
331
  var _a;
288
332
  var _b, _c, _d, _e, _f;
289
333
  return __generator(this, function (_g) {
@@ -301,24 +345,33 @@ var FormItemStore = StoreNode.named('FormItemStore')
301
345
  _g.label = 2;
302
346
  case 2:
303
347
  addError(validate(self.tmpValue, data, customRules ? str2rules(customRules) : self.rules, self.messages, self.__));
304
- if (!(!self.errors.length && isEffectiveApi(self.validateApi, data))) return [3 /*break*/, 4];
348
+ if (!(!self.errors.length && isEffectiveApi(self.validateApi, data))) return [3 /*break*/, 6];
305
349
  if (validateCancel) {
306
350
  validateCancel();
307
351
  validateCancel = null;
308
352
  }
353
+ _g.label = 3;
354
+ case 3:
355
+ _g.trys.push([3, 5, , 6]);
309
356
  return [4 /*yield*/, getEnv(self).fetcher(self.validateApi,
310
357
  /** 如果配置validateApi,需要将用户最新输入同步到数据域内 */
311
358
  createObject(data, (_a = {}, _a[self.name] = self.tmpValue, _a)), {
312
- cancelExecutor: function (executor) { return (validateCancel = executor); }
359
+ cancelExecutor: function (executor) {
360
+ return (validateCancel = executor);
361
+ }
313
362
  })];
314
- case 3:
363
+ case 4:
315
364
  json = _g.sent();
316
365
  validateCancel = null;
317
366
  if (!json.ok && json.status === 422 && json.errors) {
318
367
  addError(String((_d = (_c = (_b = self.validateApi) === null || _b === void 0 ? void 0 : _b.messages) === null || _c === void 0 ? void 0 : _c.failed) !== null && _d !== void 0 ? _d : (json.errors || json.msg || "\u8868\u5355\u9879\u300C".concat(self.name, "\u300D\u6821\u9A8C\u5931\u8D25"))));
319
368
  }
320
- _g.label = 4;
321
- case 4:
369
+ return [3 /*break*/, 6];
370
+ case 5:
371
+ err_1 = _g.sent();
372
+ addError(String(err_1));
373
+ return [3 /*break*/, 6];
374
+ case 6:
322
375
  self.validated = true;
323
376
  if (self.unique && ((_f = (_e = self.form) === null || _e === void 0 ? void 0 : _e.parentStore) === null || _f === void 0 ? void 0 : _f.storeType) === 'ComboStore') {
324
377
  combo = self.form.parentStore;
@@ -390,6 +443,12 @@ var FormItemStore = StoreNode.named('FormItemStore')
390
443
  finally { if (e_1) throw e_1.error; }
391
444
  }
392
445
  }
446
+ function setPagination(params) {
447
+ var _a = params || {}, page = _a.page, perPage = _a.perPage, total = _a.total;
448
+ if (self.enableSourcePagination) {
449
+ self.pagination = __assign(__assign(__assign(__assign({}, self.pagination), (page != null && typeof page === 'number' ? { page: page } : {})), (perPage != null && typeof perPage === 'number' ? { perPage: perPage } : {})), (total != null && typeof total === 'number' ? { total: total } : {}));
450
+ }
451
+ }
393
452
  function setOptions(options, onChange, data) {
394
453
  if (!Array.isArray(options)) {
395
454
  return;
@@ -397,6 +456,14 @@ var FormItemStore = StoreNode.named('FormItemStore')
397
456
  options = filterTree(options, function (item) { return item; });
398
457
  var originOptions = self.options.concat();
399
458
  self.options = options;
459
+ /** 开启分页后当前选项内容需要累加 */
460
+ self.accumulatedOptions = self.enableSourcePagination
461
+ ? uniqWith(__spreadArray(__spreadArray([], __read(originOptions), false), __read(options), false), function (lhs, rhs) {
462
+ var _a, _b;
463
+ return lhs[(_a = self.valueField) !== null && _a !== void 0 ? _a : 'value'] ===
464
+ rhs[(_b = self.valueField) !== null && _b !== void 0 ? _b : 'value'];
465
+ })
466
+ : options;
400
467
  syncOptions(originOptions, data);
401
468
  var selectedOptions;
402
469
  if (onChange &&
@@ -486,12 +553,12 @@ var FormItemStore = StoreNode.named('FormItemStore')
486
553
  });
487
554
  var loadOptions = flow(function getInitData(api, data, config, clearValue, onChange, setErrorFlag) {
488
555
  var json, options;
489
- var _a, _b, _c;
490
- return __generator(this, function (_d) {
491
- switch (_d.label) {
556
+ var _a, _b, _c, _d, _e, _f, _g;
557
+ return __generator(this, function (_h) {
558
+ switch (_h.label) {
492
559
  case 0: return [4 /*yield*/, fetchOptions(api, data, config, setErrorFlag)];
493
560
  case 1:
494
- json = _d.sent();
561
+ json = _h.sent();
495
562
  if (!json) {
496
563
  return [2 /*return*/, null];
497
564
  }
@@ -503,6 +570,9 @@ var FormItemStore = StoreNode.named('FormItemStore')
503
570
  json.data ||
504
571
  [];
505
572
  options = normalizeOptions(options, undefined, self.valueField);
573
+ if (self.enableSourcePagination) {
574
+ self.pagination = __assign(__assign({}, self.pagination), { page: parseInt((_d = json.data) === null || _d === void 0 ? void 0 : _d.page, 10) || 1, total: parseInt((_f = (_e = json.data) === null || _e === void 0 ? void 0 : _e.total) !== null && _f !== void 0 ? _f : (_g = json.data) === null || _g === void 0 ? void 0 : _g.count, 10) || 0 });
575
+ }
506
576
  if ((config === null || config === void 0 ? void 0 : config.extendsOptions) && self.selectedOptions.length > 0) {
507
577
  self.selectedOptions.forEach(function (item) {
508
578
  var exited = findTree(options, optionValueCompare(item, self.valueField || 'value'), {
@@ -527,6 +597,22 @@ var FormItemStore = StoreNode.named('FormItemStore')
527
597
  }
528
598
  });
529
599
  });
600
+ /**
601
+ * 从数据域加载选项数据源,注意这里默认source变量解析后是全量的数据源
602
+ */
603
+ function loadOptionsFromDataScope(source, ctx, onChange) {
604
+ var options = resolveVariableAndFilter(source, ctx, '| raw');
605
+ if (!Array.isArray(options)) {
606
+ return [];
607
+ }
608
+ options = normalizeOptions(options, undefined, self.valueField);
609
+ if (self.enableSourcePagination) {
610
+ self.pagination = __assign(__assign(__assign(__assign({}, self.pagination), ((ctx === null || ctx === void 0 ? void 0 : ctx.page) ? { page: ctx === null || ctx === void 0 ? void 0 : ctx.page } : {})), ((ctx === null || ctx === void 0 ? void 0 : ctx.perPage) ? { perPage: ctx === null || ctx === void 0 ? void 0 : ctx.perPage } : {})), { total: options.length });
611
+ options = options.slice((self.pagination.page - 1) * self.pagination.perPage, self.pagination.page * self.pagination.perPage);
612
+ }
613
+ setOptions(options, onChange, ctx);
614
+ return options;
615
+ }
530
616
  var loadAutoUpdateData = flow(function getAutoUpdateData(api, data, silent) {
531
617
  var json, result;
532
618
  var _a, _b;
@@ -948,8 +1034,10 @@ var FormItemStore = StoreNode.named('FormItemStore')
948
1034
  setError: setError,
949
1035
  addError: addError,
950
1036
  clearError: clearError,
1037
+ setPagination: setPagination,
951
1038
  setOptions: setOptions,
952
1039
  loadOptions: loadOptions,
1040
+ loadOptionsFromDataScope: loadOptionsFromDataScope,
953
1041
  deferLoadOptions: deferLoadOptions,
954
1042
  deferLoadLeftOptions: deferLoadLeftOptions,
955
1043
  expandTreeOptions: expandTreeOptions,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/esm/store/list.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/esm/store/node.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/esm/store/root.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5