amis-core 3.4.2 → 3.5.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 (277) hide show
  1. package/esm/Root.js +1 -1
  2. package/esm/RootRenderer.js +12 -2
  3. package/esm/SchemaRenderer.js +1 -1
  4. package/esm/Scoped.js +2 -2
  5. package/esm/StatusScoped.js +1 -1
  6. package/esm/WithRootStore.js +1 -1
  7. package/esm/WithStore.js +8 -4
  8. package/esm/actions/Action.js +1 -1
  9. package/esm/actions/AjaxAction.js +1 -1
  10. package/esm/actions/BreakAction.js +1 -1
  11. package/esm/actions/BroadcastAction.js +1 -1
  12. package/esm/actions/CmptAction.d.ts +1 -0
  13. package/esm/actions/CmptAction.js +23 -23
  14. package/esm/actions/ContinueAction.js +1 -1
  15. package/esm/actions/CopyAction.js +1 -1
  16. package/esm/actions/CustomAction.js +2 -2
  17. package/esm/actions/DialogAction.js +1 -1
  18. package/esm/actions/DrawerAction.js +1 -1
  19. package/esm/actions/EmailAction.js +1 -1
  20. package/esm/actions/LinkAction.js +1 -1
  21. package/esm/actions/LoopAction.js +1 -1
  22. package/esm/actions/PageAction.js +1 -1
  23. package/esm/actions/ParallelAction.js +1 -1
  24. package/esm/actions/StatusAction.js +1 -1
  25. package/esm/actions/SwitchAction.js +1 -1
  26. package/esm/actions/ToastAction.js +1 -1
  27. package/esm/components/CustomStyle.js +9 -9
  28. package/esm/components/LazyComponent.js +1 -1
  29. package/esm/components/Overlay.js +2 -1
  30. package/esm/components/PopOver.js +2 -2
  31. package/esm/env.d.ts +11 -3
  32. package/esm/env.js +1 -1
  33. package/esm/envOverwrite.js +1 -1
  34. package/esm/factory.js +1 -3
  35. package/esm/index.d.ts +1 -0
  36. package/esm/index.js +4 -4
  37. package/esm/locale.js +1 -1
  38. package/esm/polyfills.js +1 -1
  39. package/esm/renderers/Form.js +10 -4
  40. package/esm/renderers/Item.d.ts +2 -6
  41. package/esm/renderers/Item.js +11 -17
  42. package/esm/renderers/Options.js +2 -2
  43. package/esm/renderers/Placeholder.js +1 -1
  44. package/esm/renderers/builtin.js +1 -1
  45. package/esm/renderers/register.js +1 -1
  46. package/esm/renderers/wrapControl.js +41 -22
  47. package/esm/store/app.js +7 -5
  48. package/esm/store/combo.d.ts +120 -0
  49. package/esm/store/combo.js +3 -2
  50. package/esm/store/crud.d.ts +13 -2
  51. package/esm/store/crud.js +88 -23
  52. package/esm/store/form.d.ts +50 -0
  53. package/esm/store/form.js +5 -2
  54. package/esm/store/formItem.d.ts +1 -0
  55. package/esm/store/formItem.js +18 -6
  56. package/esm/store/iRenderer.js +2 -2
  57. package/esm/store/index.js +1 -1
  58. package/esm/store/list.js +1 -1
  59. package/esm/store/manager.js +1 -1
  60. package/esm/store/modal.js +1 -1
  61. package/esm/store/node.js +1 -1
  62. package/esm/store/pagination.js +1 -1
  63. package/esm/store/root.js +2 -2
  64. package/esm/store/service.js +1 -1
  65. package/esm/store/status.js +1 -1
  66. package/esm/store/table.d.ts +454 -83
  67. package/esm/store/table.js +114 -74
  68. package/esm/store/table2.d.ts +1 -1
  69. package/esm/store/table2.js +5 -4
  70. package/esm/theme.js +1 -1
  71. package/esm/types.d.ts +6 -0
  72. package/esm/utils/Animation.js +1 -1
  73. package/esm/utils/ColorScale.js +1 -1
  74. package/esm/utils/DataSchema.js +1 -1
  75. package/esm/utils/DataScope.js +1 -1
  76. package/esm/utils/RootClose.js +1 -1
  77. package/esm/utils/SimpleMap.js +1 -1
  78. package/esm/utils/api.js +2 -1
  79. package/esm/utils/arraySlice.js +1 -1
  80. package/esm/utils/attachmentAdpator.d.ts +2 -1
  81. package/esm/utils/attachmentAdpator.js +17 -11
  82. package/esm/utils/autobind.js +1 -1
  83. package/esm/utils/columnsSplit.js +1 -1
  84. package/esm/utils/dataMapping.js +1 -1
  85. package/esm/utils/date.js +1 -1
  86. package/esm/utils/debug.d.ts +1 -1
  87. package/esm/utils/debug.js +5 -3
  88. package/esm/utils/decodeEntity.js +1 -1
  89. package/esm/utils/dom.js +1 -1
  90. package/esm/utils/errors.js +1 -1
  91. package/esm/utils/escapeHtml.js +1 -1
  92. package/esm/utils/filter-schema.d.ts +8 -0
  93. package/esm/utils/filter-schema.js +32 -14
  94. package/esm/utils/filter.js +1 -1
  95. package/esm/utils/formatDuration.js +1 -1
  96. package/esm/utils/formula.js +1 -1
  97. package/esm/utils/getVariable.js +1 -1
  98. package/esm/utils/grammar.js +1 -1
  99. package/esm/utils/handleAction.js +2 -1
  100. package/esm/utils/helper.d.ts +15 -1
  101. package/esm/utils/helper.js +59 -12
  102. package/esm/utils/highlight.js +1 -1
  103. package/esm/utils/icon.js +1 -1
  104. package/esm/utils/image.js +1 -1
  105. package/esm/utils/isPureVariable.js +1 -1
  106. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  107. package/esm/utils/keyToPath.js +1 -1
  108. package/esm/utils/makeSorter.js +1 -1
  109. package/esm/utils/math.js +1 -1
  110. package/esm/utils/memoryParse.js +1 -1
  111. package/esm/utils/normalizeLink.js +1 -1
  112. package/esm/utils/normalizeOptions.js +1 -1
  113. package/esm/utils/object.js +1 -1
  114. package/esm/utils/offset.js +1 -1
  115. package/esm/utils/offsetParent.js +1 -1
  116. package/esm/utils/optionValueCompare.js +1 -1
  117. package/esm/utils/position.js +1 -1
  118. package/esm/utils/prettyBytes.js +1 -1
  119. package/esm/utils/renderer-event.js +1 -1
  120. package/esm/utils/replaceText.d.ts +1 -1
  121. package/esm/utils/replaceText.js +9 -4
  122. package/esm/utils/resize-sensor.js +1 -1
  123. package/esm/utils/resolveCondition.js +1 -1
  124. package/esm/utils/resolveVariable.js +1 -1
  125. package/esm/utils/resolveVariableAndFilter.js +1 -1
  126. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  127. package/esm/utils/scrollPosition.js +1 -1
  128. package/esm/utils/string2regExp.js +1 -1
  129. package/esm/utils/stripNumber.js +1 -1
  130. package/esm/utils/style-helper.js +5 -4
  131. package/esm/utils/style.js +1 -1
  132. package/esm/utils/toNumber.js +1 -1
  133. package/esm/utils/tokenize.js +1 -1
  134. package/esm/utils/tpl-builtin.js +1 -1
  135. package/esm/utils/tpl-lodash.js +1 -1
  136. package/esm/utils/tpl.js +1 -1
  137. package/esm/utils/uncontrollable.js +1 -1
  138. package/esm/utils/validations.js +1 -1
  139. package/lib/Root.js +1 -1
  140. package/lib/RootRenderer.js +12 -2
  141. package/lib/SchemaRenderer.js +1 -1
  142. package/lib/Scoped.js +2 -2
  143. package/lib/StatusScoped.js +1 -1
  144. package/lib/WithRootStore.js +1 -1
  145. package/lib/WithStore.js +8 -4
  146. package/lib/actions/Action.js +1 -1
  147. package/lib/actions/AjaxAction.js +1 -1
  148. package/lib/actions/BreakAction.js +1 -1
  149. package/lib/actions/BroadcastAction.js +1 -1
  150. package/lib/actions/CmptAction.d.ts +1 -0
  151. package/lib/actions/CmptAction.js +23 -23
  152. package/lib/actions/ContinueAction.js +1 -1
  153. package/lib/actions/CopyAction.js +1 -1
  154. package/lib/actions/CustomAction.js +2 -2
  155. package/lib/actions/DialogAction.js +1 -1
  156. package/lib/actions/DrawerAction.js +1 -1
  157. package/lib/actions/EmailAction.js +1 -1
  158. package/lib/actions/LinkAction.js +1 -1
  159. package/lib/actions/LoopAction.js +1 -1
  160. package/lib/actions/PageAction.js +1 -1
  161. package/lib/actions/ParallelAction.js +1 -1
  162. package/lib/actions/StatusAction.js +1 -1
  163. package/lib/actions/SwitchAction.js +1 -1
  164. package/lib/actions/ToastAction.js +1 -1
  165. package/lib/components/CustomStyle.js +9 -9
  166. package/lib/components/LazyComponent.js +1 -1
  167. package/lib/components/Overlay.js +2 -1
  168. package/lib/components/PopOver.js +2 -2
  169. package/lib/env.d.ts +11 -3
  170. package/lib/env.js +1 -1
  171. package/lib/envOverwrite.js +1 -1
  172. package/lib/factory.js +1 -3
  173. package/lib/index.d.ts +1 -0
  174. package/lib/index.js +7 -2
  175. package/lib/locale.js +1 -1
  176. package/lib/polyfills.js +1 -1
  177. package/lib/renderers/Form.js +10 -4
  178. package/lib/renderers/Item.d.ts +2 -6
  179. package/lib/renderers/Item.js +11 -17
  180. package/lib/renderers/Options.js +2 -2
  181. package/lib/renderers/Placeholder.js +1 -1
  182. package/lib/renderers/builtin.js +1 -1
  183. package/lib/renderers/register.js +1 -1
  184. package/lib/renderers/wrapControl.js +41 -22
  185. package/lib/store/app.js +6 -4
  186. package/lib/store/combo.d.ts +144 -25
  187. package/lib/store/combo.js +3 -2
  188. package/lib/store/crud.d.ts +13 -2
  189. package/lib/store/crud.js +88 -23
  190. package/lib/store/form.d.ts +60 -11
  191. package/lib/store/form.js +5 -2
  192. package/lib/store/formItem.d.ts +1 -0
  193. package/lib/store/formItem.js +16 -4
  194. package/lib/store/iRenderer.js +2 -2
  195. package/lib/store/index.js +1 -1
  196. package/lib/store/list.js +1 -1
  197. package/lib/store/manager.js +1 -1
  198. package/lib/store/modal.js +1 -1
  199. package/lib/store/node.js +1 -1
  200. package/lib/store/pagination.js +1 -1
  201. package/lib/store/root.js +2 -2
  202. package/lib/store/service.js +1 -1
  203. package/lib/store/status.js +1 -1
  204. package/lib/store/table.d.ts +474 -104
  205. package/lib/store/table.js +112 -72
  206. package/lib/store/table2.d.ts +1 -1
  207. package/lib/store/table2.js +5 -4
  208. package/lib/theme.js +1 -1
  209. package/lib/types.d.ts +6 -0
  210. package/lib/utils/Animation.js +1 -1
  211. package/lib/utils/ColorScale.js +1 -1
  212. package/lib/utils/DataSchema.js +1 -1
  213. package/lib/utils/DataScope.js +1 -1
  214. package/lib/utils/RootClose.js +1 -1
  215. package/lib/utils/SimpleMap.js +1 -1
  216. package/lib/utils/api.js +2 -1
  217. package/lib/utils/arraySlice.js +1 -1
  218. package/lib/utils/attachmentAdpator.d.ts +2 -1
  219. package/lib/utils/attachmentAdpator.js +17 -11
  220. package/lib/utils/autobind.js +1 -1
  221. package/lib/utils/columnsSplit.js +1 -1
  222. package/lib/utils/dataMapping.js +1 -1
  223. package/lib/utils/date.js +1 -1
  224. package/lib/utils/debug.d.ts +1 -1
  225. package/lib/utils/debug.js +4 -2
  226. package/lib/utils/decodeEntity.js +1 -1
  227. package/lib/utils/dom.js +1 -1
  228. package/lib/utils/errors.js +1 -1
  229. package/lib/utils/escapeHtml.js +1 -1
  230. package/lib/utils/filter-schema.d.ts +8 -0
  231. package/lib/utils/filter-schema.js +31 -13
  232. package/lib/utils/filter.js +1 -1
  233. package/lib/utils/formatDuration.js +1 -1
  234. package/lib/utils/formula.js +1 -1
  235. package/lib/utils/getVariable.js +1 -1
  236. package/lib/utils/grammar.js +1 -1
  237. package/lib/utils/handleAction.js +2 -1
  238. package/lib/utils/helper.d.ts +15 -1
  239. package/lib/utils/helper.js +62 -11
  240. package/lib/utils/highlight.js +1 -1
  241. package/lib/utils/icon.js +1 -1
  242. package/lib/utils/image.js +1 -1
  243. package/lib/utils/isPureVariable.js +1 -1
  244. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  245. package/lib/utils/keyToPath.js +1 -1
  246. package/lib/utils/makeSorter.js +1 -1
  247. package/lib/utils/math.js +1 -1
  248. package/lib/utils/memoryParse.js +1 -1
  249. package/lib/utils/normalizeLink.js +1 -1
  250. package/lib/utils/normalizeOptions.js +1 -1
  251. package/lib/utils/object.js +1 -1
  252. package/lib/utils/offset.js +1 -1
  253. package/lib/utils/offsetParent.js +1 -1
  254. package/lib/utils/optionValueCompare.js +1 -1
  255. package/lib/utils/position.js +1 -1
  256. package/lib/utils/prettyBytes.js +1 -1
  257. package/lib/utils/renderer-event.js +1 -1
  258. package/lib/utils/replaceText.d.ts +1 -1
  259. package/lib/utils/replaceText.js +9 -4
  260. package/lib/utils/resize-sensor.js +1 -1
  261. package/lib/utils/resolveCondition.js +1 -1
  262. package/lib/utils/resolveVariable.js +1 -1
  263. package/lib/utils/resolveVariableAndFilter.js +1 -1
  264. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  265. package/lib/utils/scrollPosition.js +1 -1
  266. package/lib/utils/string2regExp.js +1 -1
  267. package/lib/utils/stripNumber.js +1 -1
  268. package/lib/utils/style-helper.js +6 -4
  269. package/lib/utils/style.js +1 -1
  270. package/lib/utils/toNumber.js +1 -1
  271. package/lib/utils/tokenize.js +1 -1
  272. package/lib/utils/tpl-builtin.js +1 -1
  273. package/lib/utils/tpl-lodash.js +1 -1
  274. package/lib/utils/tpl.js +1 -1
  275. package/lib/utils/uncontrollable.js +1 -1
  276. package/lib/utils/validations.js +1 -1
  277. package/package.json +4 -3
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.2
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -10,6 +10,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
10
10
  var mobxStateTree = require('mobx-state-tree');
11
11
  var iRenderer = require('./iRenderer.js');
12
12
  var manager = require('./manager.js');
13
+ var helper = require('../utils/helper.js');
13
14
 
14
15
  var UniqueGroup = mobxStateTree.types
15
16
  .model('UniqueGroup', {
@@ -58,7 +59,7 @@ var ComboStore = iRenderer.iRendererStore
58
59
  if (isFull_1 || !item.items.length) {
59
60
  return;
60
61
  }
61
- var total = item.items[0].options.length;
62
+ var total = helper.countTree(item.items[0].options, function (item) { return typeof item.value !== 'undefined'; });
62
63
  var current = item.items.reduce(function (total, item) {
63
64
  return total + item.selectedOptions.length;
64
65
  }, 0);
@@ -1,5 +1,13 @@
1
1
  import { Instance } from 'mobx-state-tree';
2
2
  import { Api, fetchOptions, ActionObject } from '../types';
3
+ interface MatchFunc {
4
+ (items: any, itemsRaw: any,
5
+ /** 相关配置 */
6
+ options?: {
7
+ query: Record<string, any>;
8
+ columns: any;
9
+ }): any;
10
+ }
3
11
  export declare const CRUDStore: import("mobx-state-tree").IModelType<{
4
12
  id: import("mobx-state-tree").ISimpleType<string>;
5
13
  path: import("mobx-state-tree").IType<string | undefined, string, string>;
@@ -106,7 +114,6 @@ export declare const CRUDStore: import("mobx-state-tree").IModelType<{
106
114
  fetchInitData: (api: Api, data?: object, options?: fetchOptions & {
107
115
  forceReload?: boolean;
108
116
  loadDataOnce?: boolean;
109
- loadDataOnceFetchOnFilter?: boolean;
110
117
  source?: string;
111
118
  loadDataMode?: boolean;
112
119
  syncResponse2Query?: boolean;
@@ -122,7 +129,10 @@ export declare const CRUDStore: import("mobx-state-tree").IModelType<{
122
129
  setSelectedItems: (items: Array<any>) => void;
123
130
  setUnSelectedItems: (items: Array<any>) => void;
124
131
  setInnerModalOpened: (value: boolean) => void;
125
- initFromScope: (scope: any, source: string) => void;
132
+ initFromScope: (scope: any, source: string, options: {
133
+ columns?: any[] | undefined;
134
+ matchFunc?: MatchFunc | null | undefined;
135
+ }) => void;
126
136
  exportAsCSV: (options?: {
127
137
  loadDataOnce?: boolean | undefined;
128
138
  api?: Api | undefined;
@@ -133,3 +143,4 @@ export declare const CRUDStore: import("mobx-state-tree").IModelType<{
133
143
  updateTotal: (total: number) => void;
134
144
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
135
145
  export type ICRUDStore = Instance<typeof CRUDStore>;
146
+ export {};
package/lib/store/crud.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.2
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -67,7 +67,11 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
67
67
  // 包两层,主要是为了处理以下 case
68
68
  // 里面放了个 form,form 提交过来的时候不希望把 items 这些发送过来。
69
69
  // 因为会把数据呈现在地址栏上。
70
- return object.createObject(object.createObject(self.data, tslib.__assign(tslib.__assign({}, self.query), { items: self.items.concat(), selectedItems: self.selectedItems.concat(), unSelectedItems: self.unSelectedItems.concat() })), {});
70
+ return object.createObject(object.createObject(self.data, {
71
+ items: self.items.concat(),
72
+ selectedItems: self.selectedItems.concat(),
73
+ unSelectedItems: self.unSelectedItems.concat()
74
+ }), tslib.__assign({}, self.query));
71
75
  },
72
76
  get mergedData() {
73
77
  return object.extendObject(self.data, tslib.__assign(tslib.__assign(tslib.__assign({}, self.query), self.data), { selectedItems: self.selectedItems, unSelectedItems: self.unSelectedItems }));
@@ -107,7 +111,7 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
107
111
  }
108
112
  }
109
113
  var fetchInitData = mobxStateTree.flow(function getInitData(api$1, data, options) {
110
- var items_1, dir, data_1, ctx, json, result, total, count, page, hasNext, oItems, oRows, columns, rest, items, _a, _b, key, rowsData, data_2, filteredItems_1, dir, e_1, env;
114
+ var matchFunc, items_1, dir, data_1, ctx, json, result, total, count, page, hasNext, oItems, oRows, columns, rest, items, _a, _b, key, rowsData, data_2, filteredItems_1, dir, e_1, env;
111
115
  var _c, e_2, _d;
112
116
  var _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
113
117
  if (options === void 0) { options = {}; }
@@ -116,27 +120,37 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
116
120
  case 0:
117
121
  _q.trys.push([0, 2, , 3]);
118
122
  if (!options.forceReload && options.loadDataOnce && self.total) {
123
+ matchFunc = options.matchFunc;
119
124
  items_1 = options.source
120
125
  ? resolveVariableAndFilter.resolveVariableAndFilter(options.source, object.createObject(self.mergedData, {
121
126
  items: self.data.itemsRaw,
122
127
  rows: self.data.itemsRaw
123
128
  }), '| raw')
124
129
  : self.items.concat();
125
- if (Array.isArray(options.columns)) {
126
- options.columns.forEach(function (column) {
127
- var value;
128
- var key = column.name;
129
- if ((column.searchable || column.filterable) && key) {
130
- // value可能为null、undefined、''、0
131
- value = getVariable.getVariable(self.query, key);
132
- if (value != null) {
130
+ /** 字段的格式类型无法穷举,所以支持使用函数过滤 */
131
+ if (matchFunc && typeof matchFunc === 'function') {
132
+ items_1 = matchFunc(items_1, self.data.itemsRaw, {
133
+ query: self.query,
134
+ columns: options.columns
135
+ });
136
+ }
137
+ else {
138
+ if (Array.isArray(options.columns)) {
139
+ options.columns.forEach(function (column) {
140
+ var value = typeof column.name === 'string'
141
+ ? getVariable.getVariable(self.query, column.name)
142
+ : undefined;
143
+ var key = column.name;
144
+ if (value != null && key) {
145
+ // value可能为null、undefined、''、0
133
146
  if (Array.isArray(value)) {
134
147
  if (value.length > 0) {
135
148
  var arr_1 = tslib.__spreadArray([], tslib.__read(items_1), false);
136
149
  var arrItems_1 = [];
137
150
  value.forEach(function (item) {
138
151
  arrItems_1 = tslib.__spreadArray(tslib.__spreadArray([], tslib.__read(arrItems_1), false), tslib.__read(matchSorter.matchSorter(arr_1, item, {
139
- keys: [key]
152
+ keys: [key],
153
+ threshold: matchSorter.matchSorter.rankings.CONTAINS
140
154
  })), false);
141
155
  });
142
156
  items_1 = items_1.filter(function (item) {
@@ -146,12 +160,13 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
146
160
  }
147
161
  else {
148
162
  items_1 = matchSorter.matchSorter(items_1, value, {
149
- keys: [key]
163
+ keys: [key],
164
+ threshold: matchSorter.matchSorter.rankings.CONTAINS
150
165
  });
151
166
  }
152
167
  }
153
- }
154
- });
168
+ });
169
+ }
155
170
  }
156
171
  if (self.query.orderBy) {
157
172
  dir = /desc/i.test(self.query.orderDir) ? -1 : 1;
@@ -258,7 +273,8 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
258
273
  var arrItems_2 = [];
259
274
  value.forEach(function (item) {
260
275
  arrItems_2 = tslib.__spreadArray(tslib.__spreadArray([], tslib.__read(arrItems_2), false), tslib.__read(matchSorter.matchSorter(arr_2, item, {
261
- keys: [key]
276
+ keys: [key],
277
+ threshold: matchSorter.matchSorter.rankings.CONTAINS
262
278
  })), false);
263
279
  });
264
280
  filteredItems_1 = filteredItems_1.filter(function (item) {
@@ -268,7 +284,8 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
268
284
  }
269
285
  else {
270
286
  filteredItems_1 = matchSorter.matchSorter(filteredItems_1, value, {
271
- keys: [key]
287
+ keys: [key],
288
+ threshold: matchSorter.matchSorter.rankings.CONTAINS
272
289
  });
273
290
  }
274
291
  }
@@ -415,14 +432,62 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
415
432
  var setInnerModalOpened = function (value) {
416
433
  self.hasInnerModalOpen = value;
417
434
  };
418
- var initFromScope = function (scope, source) {
419
- var rowsData = resolveVariableAndFilter.resolveVariableAndFilter(source, scope, '| raw');
420
- if (!Array.isArray(rowsData) && !self.items.length) {
435
+ var initFromScope = function (scope, source, options) {
436
+ var _a;
437
+ var matchFunc = options.matchFunc;
438
+ var items = resolveVariableAndFilter.resolveVariableAndFilter(source, scope, '| raw');
439
+ if (!Array.isArray(items) && !self.items.length) {
421
440
  return;
422
441
  }
423
- rowsData = Array.isArray(rowsData) ? rowsData : [];
424
- var data = tslib.__assign(tslib.__assign({}, self.pristine), { items: rowsData, count: 0, total: rowsData.length });
425
- self.items.replace(rowsData);
442
+ items = Array.isArray(items) ? items : [];
443
+ /** 字段的格式类型无法穷举,所以支持使用函数过滤 */
444
+ if (matchFunc && typeof matchFunc === 'function') {
445
+ items = matchFunc(items, items.concat(), {
446
+ query: self.query,
447
+ columns: options.columns
448
+ });
449
+ }
450
+ else {
451
+ if (Array.isArray(options.columns)) {
452
+ options.columns.forEach(function (column) {
453
+ var value = typeof column.name === 'string'
454
+ ? getVariable.getVariable(self.query, column.name)
455
+ : undefined;
456
+ var key = column.name;
457
+ if (value != null && key) {
458
+ // value可能为null、undefined、''、0
459
+ if (Array.isArray(value)) {
460
+ if (value.length > 0) {
461
+ var arr_3 = tslib.__spreadArray([], tslib.__read(items), false);
462
+ var arrItems_3 = [];
463
+ value.forEach(function (item) {
464
+ arrItems_3 = tslib.__spreadArray(tslib.__spreadArray([], tslib.__read(arrItems_3), false), tslib.__read(matchSorter.matchSorter(arr_3, item, {
465
+ keys: [key],
466
+ threshold: matchSorter.matchSorter.rankings.CONTAINS
467
+ })), false);
468
+ });
469
+ items = items.filter(function (item) {
470
+ return arrItems_3.find(function (a) { return a === item; });
471
+ });
472
+ }
473
+ }
474
+ else {
475
+ items = matchSorter.matchSorter(items, value, {
476
+ keys: [key],
477
+ threshold: matchSorter.matchSorter.rankings.CONTAINS
478
+ });
479
+ }
480
+ }
481
+ });
482
+ }
483
+ }
484
+ if (self.query.orderBy) {
485
+ var dir = /desc/i.test(self.query.orderDir) ? -1 : 1;
486
+ items = helper.sortArray(items, self.query.orderBy, dir);
487
+ }
488
+ var data = tslib.__assign(tslib.__assign({}, self.pristine), { items: items.slice((self.page - 1) * self.perPage, self.page * self.perPage), count: items.length, total: items.length });
489
+ self.total = parseInt((_a = data.total) !== null && _a !== void 0 ? _a : data.count, 10) || 0;
490
+ self.items.replace(items);
426
491
  self.reInitData(data);
427
492
  };
428
493
  var exportAsCSV = function (options) {