@steedos-widgets/sortable 3.6.11-beta.6 → 3.6.11

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.
@@ -58319,7 +58319,6 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
58319
58319
  // 等升级到amis 3.4+,blur事件换成change事件执行onChangeScript,就可以不用在onSearchScript中执行onChangeScript了
58320
58320
  // 基于amis3.6,已经不再用blur事件触发onChangeScript,所以这里把之前加上的onChangeScript去掉了,如果以后还要换blur来触发onChangeScript脚本的话,这里又要加回onChangeScript脚本
58321
58321
  const onSearchScript = `
58322
- // console.log("==search=onSearchScript===");
58323
58322
  // 下面的脚本只为解决点击搜索表单取消按钮,再重新在其中输入过滤条件但是不点击搜索按钮或回车按键触发搜索,此时在快速搜索框输入过滤条件按回车按键会把搜索表单中的过滤条件清空的问题
58324
58323
  const scope = event.context.scoped;
58325
58324
  // 如果点击过顶部搜索栏表单的取消按钮,会把此处event.data.__super.__super.__super中的搜索表单项的所有字段设置为null
@@ -58340,13 +58339,15 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
58340
58339
  }, 500);
58341
58340
  `;
58342
58341
 
58343
- const onBlurScript = `
58344
- // console.log("==search=onBlurScript===");
58345
- // 失去焦点事件触发搜索
58346
- const scope = event.context.scoped;
58347
- const sb = SteedosUI.getClosestAmisComponentByType(scope, "search-box");
58348
- sb.handleSearch();
58349
- `;
58342
+ // const onBlurScript = `
58343
+ // // 失去焦点事件触发搜索,先去掉,因为会有bug,见:[Bug]: 列表上快速搜索输入框输入内容后点击放大镜界面上列表未显示过滤后的内容 #6742
58344
+ // const value = event.data.value;
58345
+ // setTimeout(function(){
58346
+ // const scope = event.context.scoped;
58347
+ // const sb = SteedosUI.getClosestAmisComponentByType(scope, "search-box");
58348
+ // sb.handleSearch(value);
58349
+ // }, 500);
58350
+ // `;
58350
58351
 
58351
58352
  return {
58352
58353
  "type": "tooltip-wrapper",
@@ -58385,14 +58386,14 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
58385
58386
  },
58386
58387
  ]
58387
58388
  },
58388
- "blur": {
58389
- "actions": [
58390
- {
58391
- "actionType": "custom",
58392
- "script": onBlurScript
58393
- },
58394
- ]
58395
- }
58389
+ // "blur": {
58390
+ // "actions": [
58391
+ // {
58392
+ // "actionType": "custom",
58393
+ // "script": onBlurScript
58394
+ // },
58395
+ // ]
58396
+ // }
58396
58397
  }
58397
58398
  }
58398
58399
  ]
@@ -58425,13 +58426,10 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
58425
58426
  // listView.handleChangePage(1);
58426
58427
 
58427
58428
 
58428
- // 触发搜索,而不是reload,因为快速搜索输入框失去焦点已经会触发搜索了,这里用reload的话,会有bug
58429
- // 不加setTimeout的话,快速搜索输入框失去焦点再触发此脚本还是有问题
58430
- setTimeout(function(){
58431
- const scope = event.context.scoped;
58432
- const sb = SteedosUI.getClosestAmisComponentByType(scope, "search-box");
58433
- sb.handleSearch();
58434
- }, 500);
58429
+ // 触发搜索,而不是reload,因为使用search-box可以在amissdk是3.6.3-patch.8+实现在非第一页的情况下,快速搜索输入框中过滤条件变更时再点刷新可以自动跳转翻页到第一页
58430
+ const scope = event.context.scoped;
58431
+ const sb = SteedosUI.getClosestAmisComponentByType(scope, "search-box");
58432
+ sb.handleSearch();
58435
58433
  `;
58436
58434
  toolbarReloadButton = {
58437
58435
  // "type": "reload",//不可以直接使用reload,因为它不会设置页码到第一页,这在加载更多按钮的翻页模式下会有问题
@@ -59696,12 +59694,24 @@ async function lookupToAmisPicker(field, readonly, ctx){
59696
59694
  }
59697
59695
 
59698
59696
  var fieldFilters = ${JSON.stringify(field.filters)};
59699
- if(fieldFilters && fieldFilters.length){
59700
- var filtersForString = JSON.stringify(fieldFilters);
59701
- if(filtersForString.indexOf('$') > -1) {
59702
- var currentAmis = amisRequire('amis');
59703
- fieldFilters = JSON.parse(currentAmis.evaluate(filtersForString, api.data.$self.__super))
59697
+ var currentAmis = amisRequire('amis');
59698
+ //递归fieldFilters数组,检查每一个元素,判断若是公式,就仅把它解析
59699
+ function traverseNestedArray(arr) {
59700
+ for (let i = 0; i < arr.length; i++) {
59701
+ if (Array.isArray(arr[i])) {
59702
+ // 如果当前元素是数组,则递归调用自身继续遍历
59703
+ traverseNestedArray(arr[i]);
59704
+ } else {
59705
+ // 如果当前元素不是数组,则处理该元素
59706
+ // 下面正则用于匹配amis公式\${}
59707
+ if(/\\\$\\\{([^}]*)\\\}/.test(arr[i])) {
59708
+ arr[i] = currentAmis.evaluate(arr[i], api.data.$);
59709
+ }
59710
+ }
59704
59711
  }
59712
+ }
59713
+ if(fieldFilters && fieldFilters.length){
59714
+ traverseNestedArray(fieldFilters);
59705
59715
  filters.push(fieldFilters);
59706
59716
  }
59707
59717
 
@@ -60101,12 +60111,24 @@ async function lookupToAmisSelect(field, readonly, ctx){
60101
60111
  // }
60102
60112
 
60103
60113
  var fieldFilters = ${JSON.stringify(field.filters)};
60104
- if(fieldFilters && fieldFilters.length){
60105
- var filtersForString = JSON.stringify(fieldFilters);
60106
- if(filtersForString.indexOf('$') > -1) {
60107
- var currentAmis = amisRequire('amis');
60108
- fieldFilters = JSON.parse(currentAmis.evaluate(filtersForString, api.data.$))
60114
+ var currentAmis = amisRequire('amis');
60115
+ //递归fieldFilters数组,检查每一个元素,判断若是公式,就仅把它解析
60116
+ function traverseNestedArray(arr) {
60117
+ for (let i = 0; i < arr.length; i++) {
60118
+ if (Array.isArray(arr[i])) {
60119
+ // 如果当前元素是数组,则递归调用自身继续遍历
60120
+ traverseNestedArray(arr[i]);
60121
+ } else {
60122
+ // 如果当前元素不是数组,则处理该元素
60123
+ // 下面正则用于匹配amis公式\${}
60124
+ if(/\\\$\\\{([^}]*)\\\}/.test(arr[i])) {
60125
+ arr[i] = currentAmis.evaluate(arr[i], api.data.$);
60126
+ }
60127
+ }
60109
60128
  }
60129
+ }
60130
+ if(fieldFilters && fieldFilters.length){
60131
+ traverseNestedArray(fieldFilters);
60110
60132
  filters.push(fieldFilters);
60111
60133
  }
60112
60134