@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.esm.js CHANGED
@@ -2577,11 +2577,11 @@ async function getObjectFieldsFilterFormSchema(ctx) {
2577
2577
  payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
2578
2578
  }
2579
2579
  const selfData = api.body.$self;
2580
- const filterFormSearchableFields = selfData.filterFormSearchableFields;
2581
2580
  const uiSchema = selfData.uiSchema;
2582
2581
  const fields = uiSchema.fields;
2583
- const searchableFields = [];
2584
-
2582
+ const filterFormSearchableFields = (selfData.filterFormSearchableFields || []).filter(function(item){
2583
+ return !!fields[item]
2584
+ });
2585
2585
  const resolveAll = function(values){
2586
2586
  payload.data = {
2587
2587
  "body": values
@@ -2596,21 +2596,7 @@ async function getObjectFieldsFilterFormSchema(ctx) {
2596
2596
  return Promise.all(filterFormSearchableFields.map(function (item) {
2597
2597
  const field = _.clone(fields[item]);
2598
2598
  if (
2599
- !_.includes(
2600
- [
2601
- "grid",
2602
- "avatar",
2603
- "image",
2604
- "object",
2605
- "[object]",
2606
- "[Object]",
2607
- "[grid]",
2608
- "[text]",
2609
- "audio",
2610
- "file",
2611
- ],
2612
- field.type
2613
- )
2599
+ field && window.isFieldTypeSearchable(field.type)
2614
2600
  ) {
2615
2601
  delete field.defaultValue;
2616
2602
  delete field.required;
@@ -2643,7 +2629,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
2643
2629
  var filterForm = scope.parent.parent.getComponents().find(function(n){
2644
2630
  return n.props.type === "form";
2645
2631
  });
2646
- filterForm.handleFormSubmit(event)
2632
+ filterForm.handleFormSubmit(event);
2647
2633
  // var filterFormValues = filterForm.getValues();
2648
2634
  // var listView = scope.parent.parent.parent.getComponents().find(function(n){
2649
2635
  // return n.props.type === "crud";
@@ -2657,6 +2643,28 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
2657
2643
  // }
2658
2644
  // }
2659
2645
  // listView.handleFilterSubmit(Object.assign({}, removedValues, filterFormValues));
2646
+
2647
+ let isMobile = Steedos.isMobile();
2648
+ if(isMobile){
2649
+ // 手机端点击搜索的时候自动收起搜索栏
2650
+ let resizeWindow = function(){
2651
+ //触发amis crud 高度重算
2652
+ setTimeout(()=>{
2653
+ window.dispatchEvent(new Event("resize"))
2654
+ }, 500);
2655
+ }
2656
+ const filterService = filterForm.context.getComponents().find(function(n){
2657
+ return n.props.type === "service";
2658
+ });
2659
+ filterService.setData({showFieldsFilter: false});
2660
+ resizeWindow();
2661
+ // 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取。
2662
+ let filterFormValues = event.data;
2663
+ let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
2664
+ let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
2665
+ let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
2666
+ crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter: false});
2667
+ }
2660
2668
  `;
2661
2669
  const onCancelScript = `
2662
2670
  const scope = event.context.scoped;
@@ -2694,7 +2702,13 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
2694
2702
  setTimeout(()=>{
2695
2703
  window.dispatchEvent(new Event("resize"))
2696
2704
  }, 100);
2697
- `;
2705
+ let isMobile = Steedos.isMobile();
2706
+ if(isMobile){
2707
+ // 手机端移除搜索按钮上的红点
2708
+ let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
2709
+ crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
2710
+ }
2711
+ `;
2698
2712
  const dataProviderInited = `
2699
2713
  const objectName = data.objectName;
2700
2714
  const isLookup = data.isLookup;
@@ -2748,7 +2762,15 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
2748
2762
  });
2749
2763
  // 有过滤条件时自动展开搜索栏
2750
2764
  if(!_.isEmpty(omitedEmptyFormValue)){
2751
- setData({ showFieldsFilter: true });
2765
+ let isMobile = Steedos.isMobile();
2766
+ if(isMobile){
2767
+ // 手机端不展开,只显示搜索按钮上的红点
2768
+ let crudService = SteedosUI.getRef(data.$scopeId).getComponentById("service_listview_" + data.objectName)
2769
+ crudService && crudService.setData({isFieldsFilterEmpty: false});
2770
+ }
2771
+ else{
2772
+ setData({ showFieldsFilter: true });
2773
+ }
2752
2774
  }
2753
2775
  }
2754
2776
  }
@@ -2933,9 +2955,27 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
2933
2955
  "headers": {
2934
2956
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
2935
2957
  },
2936
- "data": null,
2958
+ "data": {
2959
+ "$self": "$$"
2960
+ },
2937
2961
  "requestAdaptor": "",
2938
- "adaptor": ""
2962
+ "adaptor": `
2963
+ if(payload.errors){
2964
+ payload.status = 2;
2965
+ payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
2966
+ }
2967
+ const selfData = api.body.$self;
2968
+ const uiSchema = selfData.uiSchema;
2969
+ const fields = uiSchema.fields;
2970
+ const options = (payload.data?.options || []).filter(function(item){
2971
+ let field = fields[item.value];
2972
+ return !!field && window.isFieldTypeSearchable(field.type)
2973
+ });
2974
+ payload.data = {
2975
+ "options": options
2976
+ };
2977
+ return payload;
2978
+ `
2939
2979
  },
2940
2980
  "options": [],
2941
2981
  "required": true,
@@ -3509,7 +3549,12 @@ let resizeWindow = function(){
3509
3549
  window.dispatchEvent(new Event("resize"))
3510
3550
  }, 500);
3511
3551
  }
3552
+ let isMobile = Steedos.isMobile();
3512
3553
  if(filterService.props.data.showFieldsFilter){
3554
+ if(isMobile){
3555
+ // 手机上只能通过取消按钮来关闭搜索栏
3556
+ return;
3557
+ }
3513
3558
  let buttonCancel = SteedosUI.getClosestAmisComponentByType(filterForm.context, "button", {
3514
3559
  direction: "down",
3515
3560
  name: "btn_filter_form_cancel"
@@ -3521,6 +3566,11 @@ if(filterService.props.data.showFieldsFilter){
3521
3566
  else{
3522
3567
  filterService.setData({showFieldsFilter: true});
3523
3568
  resizeWindow();
3569
+ if(isMobile){
3570
+ // 手机端在显示搜索栏时隐藏刷新按钮
3571
+ let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
3572
+ crudService && crudService.setData({showFieldsFilter: true});
3573
+ }
3524
3574
  }
3525
3575
  `;
3526
3576
 
@@ -3606,6 +3656,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
3606
3656
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
3607
3657
  "label": "",
3608
3658
  "icon": "fa fa-sync",
3659
+ "visibleOn": "${!showFieldsFilter}",
3609
3660
  "onEvent": {
3610
3661
  "click": {
3611
3662
  "actions": [
@@ -3621,6 +3672,15 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
3621
3672
  "label": "",
3622
3673
  "icon": "fa fa-search",
3623
3674
  "type": "button",
3675
+ "badge": {
3676
+ "offset": [
3677
+ -5,
3678
+ 1
3679
+ ],
3680
+ "size":8,
3681
+ "animation": true,
3682
+ "visibleOn": "${isFieldsFilterEmpty == false}"
3683
+ },
3624
3684
  "align": "right",
3625
3685
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
3626
3686
  "onEvent": {
@@ -6142,6 +6202,29 @@ if(typeof window != 'undefined'){
6142
6202
  window.getFieldSearchable = getFieldSearchable;
6143
6203
  }
6144
6204
 
6205
+
6206
+ function isFieldTypeSearchable(fieldType) {
6207
+ return !_$1.includes(
6208
+ [
6209
+ "grid",
6210
+ "avatar",
6211
+ "image",
6212
+ "object",
6213
+ "[object]",
6214
+ "[Object]",
6215
+ "[grid]",
6216
+ "[text]",
6217
+ "audio",
6218
+ "file",
6219
+ ],
6220
+ fieldType
6221
+ )
6222
+ }
6223
+
6224
+ if (typeof window != 'undefined') {
6225
+ window.isFieldTypeSearchable = isFieldTypeSearchable;
6226
+ }
6227
+
6145
6228
  var index = /*#__PURE__*/Object.freeze({
6146
6229
  __proto__: null,
6147
6230
  OMIT_FIELDS: OMIT_FIELDS,
@@ -6153,6 +6236,7 @@ var index = /*#__PURE__*/Object.freeze({
6153
6236
  getSelectFieldOptions: getSelectFieldOptions,
6154
6237
  convertSFieldToAmisField: convertSFieldToAmisField,
6155
6238
  getFieldSearchable: getFieldSearchable,
6239
+ isFieldTypeSearchable: isFieldTypeSearchable,
6156
6240
  getAmisStaticFieldType: getAmisStaticFieldType
6157
6241
  });
6158
6242
 
@@ -6721,7 +6805,8 @@ async function getObjectCRUD(objectSchema, fields, options){
6721
6805
  api: await getTableApi(objectSchema, fields, options),
6722
6806
  hiddenOn: options.tableHiddenOn,
6723
6807
  autoFillHeight: options.isRelated ? false : true,
6724
- className: `flex-auto bg-white ${crudClassName || ""}`,
6808
+ className: `flex-auto ${crudClassName || ""}`,
6809
+ bodyClassName: "bg-white",
6725
6810
  crudClassName: crudClassName,
6726
6811
  },
6727
6812
  bodyProps,