@steedos-widgets/amis-lib 1.2.7 → 1.2.9-beta.1

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.
package/dist/index.umd.js CHANGED
@@ -2603,11 +2603,11 @@
2603
2603
  payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
2604
2604
  }
2605
2605
  const selfData = api.body.$self;
2606
- const filterFormSearchableFields = selfData.filterFormSearchableFields;
2607
2606
  const uiSchema = selfData.uiSchema;
2608
2607
  const fields = uiSchema.fields;
2609
- const searchableFields = [];
2610
-
2608
+ const filterFormSearchableFields = (selfData.filterFormSearchableFields || []).filter(function(item){
2609
+ return !!fields[item]
2610
+ });
2611
2611
  const resolveAll = function(values){
2612
2612
  payload.data = {
2613
2613
  "body": values
@@ -2622,21 +2622,7 @@
2622
2622
  return Promise.all(filterFormSearchableFields.map(function (item) {
2623
2623
  const field = _.clone(fields[item]);
2624
2624
  if (
2625
- !_.includes(
2626
- [
2627
- "grid",
2628
- "avatar",
2629
- "image",
2630
- "object",
2631
- "[object]",
2632
- "[Object]",
2633
- "[grid]",
2634
- "[text]",
2635
- "audio",
2636
- "file",
2637
- ],
2638
- field.type
2639
- )
2625
+ field && window.isFieldTypeSearchable(field.type)
2640
2626
  ) {
2641
2627
  delete field.defaultValue;
2642
2628
  delete field.required;
@@ -2669,7 +2655,7 @@
2669
2655
  var filterForm = scope.parent.parent.getComponents().find(function(n){
2670
2656
  return n.props.type === "form";
2671
2657
  });
2672
- filterForm.handleFormSubmit(event)
2658
+ filterForm.handleFormSubmit(event);
2673
2659
  // var filterFormValues = filterForm.getValues();
2674
2660
  // var listView = scope.parent.parent.parent.getComponents().find(function(n){
2675
2661
  // return n.props.type === "crud";
@@ -2683,6 +2669,28 @@
2683
2669
  // }
2684
2670
  // }
2685
2671
  // listView.handleFilterSubmit(Object.assign({}, removedValues, filterFormValues));
2672
+
2673
+ let isMobile = Steedos.isMobile();
2674
+ if(isMobile){
2675
+ // 手机端点击搜索的时候自动收起搜索栏
2676
+ let resizeWindow = function(){
2677
+ //触发amis crud 高度重算
2678
+ setTimeout(()=>{
2679
+ window.dispatchEvent(new Event("resize"))
2680
+ }, 500);
2681
+ }
2682
+ const filterService = filterForm.context.getComponents().find(function(n){
2683
+ return n.props.type === "service";
2684
+ });
2685
+ filterService.setData({showFieldsFilter: false});
2686
+ resizeWindow();
2687
+ // 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取。
2688
+ let filterFormValues = event.data;
2689
+ let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
2690
+ let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
2691
+ let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
2692
+ crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter: false});
2693
+ }
2686
2694
  `;
2687
2695
  const onCancelScript = `
2688
2696
  const scope = event.context.scoped;
@@ -2720,7 +2728,13 @@
2720
2728
  setTimeout(()=>{
2721
2729
  window.dispatchEvent(new Event("resize"))
2722
2730
  }, 100);
2723
- `;
2731
+ let isMobile = Steedos.isMobile();
2732
+ if(isMobile){
2733
+ // 手机端移除搜索按钮上的红点
2734
+ let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
2735
+ crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
2736
+ }
2737
+ `;
2724
2738
  const dataProviderInited = `
2725
2739
  const objectName = data.objectName;
2726
2740
  const isLookup = data.isLookup;
@@ -2774,7 +2788,15 @@
2774
2788
  });
2775
2789
  // 有过滤条件时自动展开搜索栏
2776
2790
  if(!_.isEmpty(omitedEmptyFormValue)){
2777
- setData({ showFieldsFilter: true });
2791
+ let isMobile = Steedos.isMobile();
2792
+ if(isMobile){
2793
+ // 手机端不展开,只显示搜索按钮上的红点
2794
+ let crudService = SteedosUI.getRef(data.$scopeId).getComponentById("service_listview_" + data.objectName)
2795
+ crudService && crudService.setData({isFieldsFilterEmpty: false});
2796
+ }
2797
+ else{
2798
+ setData({ showFieldsFilter: true });
2799
+ }
2778
2800
  }
2779
2801
  }
2780
2802
  }
@@ -2959,9 +2981,27 @@
2959
2981
  "headers": {
2960
2982
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
2961
2983
  },
2962
- "data": null,
2984
+ "data": {
2985
+ "$self": "$$"
2986
+ },
2963
2987
  "requestAdaptor": "",
2964
- "adaptor": ""
2988
+ "adaptor": `
2989
+ if(payload.errors){
2990
+ payload.status = 2;
2991
+ payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
2992
+ }
2993
+ const selfData = api.body.$self;
2994
+ const uiSchema = selfData.uiSchema;
2995
+ const fields = uiSchema.fields;
2996
+ const options = (payload.data?.options || []).filter(function(item){
2997
+ let field = fields[item.value];
2998
+ return !!field && window.isFieldTypeSearchable(field.type)
2999
+ });
3000
+ payload.data = {
3001
+ "options": options
3002
+ };
3003
+ return payload;
3004
+ `
2965
3005
  },
2966
3006
  "options": [],
2967
3007
  "required": true,
@@ -3535,7 +3575,12 @@ let resizeWindow = function(){
3535
3575
  window.dispatchEvent(new Event("resize"))
3536
3576
  }, 500);
3537
3577
  }
3578
+ let isMobile = Steedos.isMobile();
3538
3579
  if(filterService.props.data.showFieldsFilter){
3580
+ if(isMobile){
3581
+ // 手机上只能通过取消按钮来关闭搜索栏
3582
+ return;
3583
+ }
3539
3584
  let buttonCancel = SteedosUI.getClosestAmisComponentByType(filterForm.context, "button", {
3540
3585
  direction: "down",
3541
3586
  name: "btn_filter_form_cancel"
@@ -3547,6 +3592,11 @@ if(filterService.props.data.showFieldsFilter){
3547
3592
  else{
3548
3593
  filterService.setData({showFieldsFilter: true});
3549
3594
  resizeWindow();
3595
+ if(isMobile){
3596
+ // 手机端在显示搜索栏时隐藏刷新按钮
3597
+ let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
3598
+ crudService && crudService.setData({showFieldsFilter: true});
3599
+ }
3550
3600
  }
3551
3601
  `;
3552
3602
 
@@ -3632,6 +3682,7 @@ else{
3632
3682
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
3633
3683
  "label": "",
3634
3684
  "icon": "fa fa-sync",
3685
+ "visibleOn": "${!showFieldsFilter}",
3635
3686
  "onEvent": {
3636
3687
  "click": {
3637
3688
  "actions": [
@@ -3647,6 +3698,15 @@ else{
3647
3698
  "label": "",
3648
3699
  "icon": "fa fa-search",
3649
3700
  "type": "button",
3701
+ "badge": {
3702
+ "offset": [
3703
+ -5,
3704
+ 1
3705
+ ],
3706
+ "size":8,
3707
+ "animation": true,
3708
+ "visibleOn": "${isFieldsFilterEmpty == false}"
3709
+ },
3650
3710
  "align": "right",
3651
3711
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
3652
3712
  "onEvent": {
@@ -6168,6 +6228,29 @@ else{
6168
6228
  window.getFieldSearchable = getFieldSearchable;
6169
6229
  }
6170
6230
 
6231
+
6232
+ function isFieldTypeSearchable(fieldType) {
6233
+ return !___namespace.includes(
6234
+ [
6235
+ "grid",
6236
+ "avatar",
6237
+ "image",
6238
+ "object",
6239
+ "[object]",
6240
+ "[Object]",
6241
+ "[grid]",
6242
+ "[text]",
6243
+ "audio",
6244
+ "file",
6245
+ ],
6246
+ fieldType
6247
+ )
6248
+ }
6249
+
6250
+ if (typeof window != 'undefined') {
6251
+ window.isFieldTypeSearchable = isFieldTypeSearchable;
6252
+ }
6253
+
6171
6254
  var index = /*#__PURE__*/Object.freeze({
6172
6255
  __proto__: null,
6173
6256
  OMIT_FIELDS: OMIT_FIELDS,
@@ -6179,6 +6262,7 @@ else{
6179
6262
  getSelectFieldOptions: getSelectFieldOptions,
6180
6263
  convertSFieldToAmisField: convertSFieldToAmisField,
6181
6264
  getFieldSearchable: getFieldSearchable,
6265
+ isFieldTypeSearchable: isFieldTypeSearchable,
6182
6266
  getAmisStaticFieldType: getAmisStaticFieldType
6183
6267
  });
6184
6268
 
@@ -6747,7 +6831,8 @@ else{
6747
6831
  api: await getTableApi(objectSchema, fields, options),
6748
6832
  hiddenOn: options.tableHiddenOn,
6749
6833
  autoFillHeight: options.isRelated ? false : true,
6750
- className: `flex-auto bg-white ${crudClassName || ""}`,
6834
+ className: `flex-auto ${crudClassName || ""}`,
6835
+ bodyClassName: "bg-white",
6751
6836
  crudClassName: crudClassName,
6752
6837
  },
6753
6838
  bodyProps,