@steedos-widgets/amis-lib 1.2.19 → 1.2.25

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
@@ -3239,28 +3239,42 @@
3239
3239
  // }
3240
3240
  // }
3241
3241
  // listView.handleFilterSubmit(Object.assign({}, removedValues, filterFormValues));
3242
-
3243
- let isMobile = Steedos.isMobile();
3244
- if(isMobile){
3245
- // 手机端点击搜索的时候自动收起搜索栏
3246
- let resizeWindow = function(){
3247
- //触发amis crud 高度重算
3248
- setTimeout(()=>{
3249
- window.dispatchEvent(new Event("resize"))
3250
- }, 500);
3251
- }
3252
- const filterService = filterForm.context.getComponents().find(function(n){
3253
- return n.props.type === "service";
3254
- });
3255
- filterService.setData({showFieldsFilter: false});
3256
- resizeWindow();
3257
- // 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取。
3258
- let filterFormValues = event.data;
3259
- let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
3260
- let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
3261
- let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
3262
- crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter: false});
3242
+ // 点击搜索的时候自动收起搜索栏
3243
+ let resizeWindow = function(){
3244
+ //触发amis crud 高度重算
3245
+ setTimeout(()=>{
3246
+ window.dispatchEvent(new Event("resize"))
3247
+ }, 500);
3248
+ }
3249
+ const filterService = filterForm.context.getComponents().find(function(n){
3250
+ return n.props.type === "service";
3251
+ });
3252
+ let showFieldsFilter = false;
3253
+ const isMobile = window.innerWidth < 768;
3254
+ if(event.data.__from_fields_filter_settings_confirm){
3255
+ // 如果是从设置搜索项点击确认按钮触发的搜索事件不应该自动关闭搜索栏
3256
+ showFieldsFilter = true;
3257
+ }
3258
+ else if(isMobile){
3259
+ // 如果是手机端,点击搜索后自动关闭搜索栏
3260
+ showFieldsFilter = false;
3261
+ }
3262
+ else if(event.data.displayAs === "split") {
3263
+ // PC上分栏模式下的列表,始终按手机上效果处理,即自动关闭搜索栏
3264
+ showFieldsFilter = false;
3265
+ }
3266
+ else if(window.innerHeight >= 1200){
3267
+ // 高分辨率屏幕(2k+),列表高度比较高,没必要自动关闭搜索栏
3268
+ showFieldsFilter = true;
3263
3269
  }
3270
+ filterService.setData({showFieldsFilter});
3271
+ resizeWindow();
3272
+ // 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取。
3273
+ let filterFormValues = event.data;
3274
+ let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
3275
+ let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
3276
+ let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
3277
+ crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter});
3264
3278
  `;
3265
3279
  const onCancelScript = `
3266
3280
  const scope = event.context.scoped;
@@ -3299,12 +3313,9 @@
3299
3313
  setTimeout(()=>{
3300
3314
  window.dispatchEvent(new Event("resize"))
3301
3315
  }, 100);
3302
- let isMobile = Steedos.isMobile();
3303
- if(isMobile){
3304
- // 手机端移除搜索按钮上的红点
3305
- let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
3306
- crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
3307
- }
3316
+ // 移除搜索按钮上的红点
3317
+ let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
3318
+ crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
3308
3319
  `;
3309
3320
  const dataProviderInited = `
3310
3321
  const objectName = data.objectName;
@@ -3357,17 +3368,11 @@
3357
3368
  || (_.isArray(n) && _.isEmpty(n.filter(function(item){return !_.isNil(item)})))
3358
3369
  || (_.isString(n) && n.length === 0);
3359
3370
  });
3360
- // 有过滤条件时自动展开搜索栏
3371
+ // 有过滤条件时只显示搜索按钮上的红点,不自动展开搜索栏
3361
3372
  if(!_.isEmpty(omitedEmptyFormValue)){
3362
- let isMobile = Steedos.isMobile();
3363
- if(isMobile){
3364
- // 手机端不展开,只显示搜索按钮上的红点
3365
- let crudService = SteedosUI.getRef(data.$scopeId).getComponentById("service_listview_" + data.objectName)
3366
- crudService && crudService.setData({isFieldsFilterEmpty: false});
3367
- }
3368
- else{
3369
- setData({ showFieldsFilter: true });
3370
- }
3373
+ let crudService = SteedosUI.getRef(data.$scopeId).getComponentById("service_listview_" + data.objectName)
3374
+ crudService && crudService.setData({isFieldsFilterEmpty: false});
3375
+ // setData({ showFieldsFilter: true });//自动展开搜索栏
3371
3376
  }
3372
3377
  }
3373
3378
  }
@@ -3633,7 +3638,10 @@
3633
3638
  },
3634
3639
  {
3635
3640
  "actionType": "click",
3636
- "componentId": btnSearchId
3641
+ "componentId": btnSearchId,
3642
+ "args": {
3643
+ "__from_fields_filter_settings_confirm": true
3644
+ }
3637
3645
  },
3638
3646
  {
3639
3647
  "componentId": "",
@@ -4165,7 +4173,8 @@
4165
4173
  "name":"",
4166
4174
  "label":"",
4167
4175
  "filters":"",
4168
- "shared":false
4176
+ "shared":false,
4177
+ "object_name": "${targetObjectName}",
4169
4178
  },
4170
4179
  "fieldsExtend": fieldsExtend$4(),
4171
4180
  "fields": fields$1(),
@@ -4212,13 +4221,11 @@
4212
4221
  "object_name",
4213
4222
  "filter_scope",
4214
4223
  "show_count",
4215
- "columns.$.field",
4216
- "columns.$.width",
4217
- "sort.$.field_name",
4218
- "sort.$.order",
4224
+ "columns",
4225
+ "sort",
4219
4226
  "filters",
4220
- "mobile_columns.$.field",
4221
- "searchable_fields.$.field",
4227
+ "mobile_columns",
4228
+ "searchable_fields",
4222
4229
  "is_system",
4223
4230
  "shared"
4224
4231
  ]
@@ -4231,7 +4238,8 @@
4231
4238
  },
4232
4239
  "name": {
4233
4240
  "amis": {
4234
- "hidden": true
4241
+ "hidden": true,
4242
+ "required": false
4235
4243
  }
4236
4244
  },
4237
4245
  "object_name": {
@@ -4241,37 +4249,56 @@
4241
4249
  },
4242
4250
  "filter_scope": {
4243
4251
  "amis": {
4244
- "hidden": true
4252
+ "hidden": true,
4253
+ "required": false
4245
4254
  }
4246
4255
  },
4247
4256
  "columns": {
4248
4257
  "amis": {
4249
- "hidden": true
4258
+ "hidden": true,
4259
+ "required": false
4260
+ }
4261
+ },
4262
+ "mobile_columns":{
4263
+ "amis": {
4264
+ "hidden": true,
4265
+ "required": false
4266
+ }
4267
+ },
4268
+ "searchable_fields":{
4269
+ "amis": {
4270
+ "hidden": true,
4271
+ "required": false
4250
4272
  }
4251
4273
  },
4252
4274
  "filter_fields": {
4253
4275
  "amis": {
4254
- "hidden": true
4276
+ "hidden": true,
4277
+ "required": false
4255
4278
  }
4256
4279
  },
4257
4280
  "scrolling_mode": {
4258
4281
  "amis": {
4259
- "hidden": true
4282
+ "hidden": true,
4283
+ "required": false
4260
4284
  }
4261
4285
  },
4262
4286
  "sort": {
4263
4287
  "amis": {
4264
- "hidden": true
4288
+ "hidden": true,
4289
+ "required": false
4265
4290
  }
4266
4291
  },
4267
4292
  "show_count": {
4268
4293
  "amis": {
4269
- "hidden": true
4294
+ "hidden": true,
4295
+ "required": false
4270
4296
  }
4271
4297
  },
4272
4298
  "type": {
4273
4299
  "amis": {
4274
- "hidden": true
4300
+ "hidden": true,
4301
+ "required": false
4275
4302
  }
4276
4303
  },
4277
4304
  "shared": {
@@ -5094,36 +5121,38 @@ const filterForm = scope.getComponents().find(function(n){
5094
5121
  const filterService = filterForm.context.getComponents().find(function(n){
5095
5122
  return n.props.type === "service";
5096
5123
  });
5097
- // filterService.setData({showFieldsFilter: !!!filterService.props.data.showFieldsFilter});
5124
+ let toShowFieldsFilter = !!!filterService.props.data.showFieldsFilter;
5125
+ filterService.setData({showFieldsFilter: toShowFieldsFilter});
5098
5126
  let resizeWindow = function(){
5099
5127
  //触发amis crud 高度重算
5100
5128
  setTimeout(()=>{
5101
5129
  window.dispatchEvent(new Event("resize"))
5102
5130
  }, 500);
5103
5131
  }
5104
- let isMobile = Steedos.isMobile();
5105
- if(filterService.props.data.showFieldsFilter){
5106
- if(isMobile){
5107
- // 手机上只能通过取消按钮来关闭搜索栏
5108
- return;
5109
- }
5110
- let buttonCancel = SteedosUI.getClosestAmisComponentByType(filterForm.context, "button", {
5111
- direction: "down",
5112
- name: "btn_filter_form_cancel"
5113
- });
5114
- buttonCancel.props.dispatchEvent('click', {}).then(function(){
5115
- resizeWindow();
5116
- });
5117
- }
5118
- else{
5119
- filterService.setData({showFieldsFilter: true});
5120
- resizeWindow();
5121
- if(isMobile){
5122
- // 手机端在显示搜索栏时隐藏刷新按钮
5123
- let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
5124
- crudService && crudService.setData({showFieldsFilter: true});
5125
- }
5126
- }
5132
+ resizeWindow();
5133
+ // 手机端在显示搜索栏时隐藏crud上的刷新按钮,因为点击后crud高度显示有问题
5134
+ let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
5135
+ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5136
+ // if(filterService.props.data.showFieldsFilter){
5137
+ // if(isMobile){
5138
+ // // 手机上只能通过取消按钮来关闭搜索栏
5139
+ // return;
5140
+ // }
5141
+ // let buttonCancel = SteedosUI.getClosestAmisComponentByType(filterForm.context, "button", {
5142
+ // direction: "down",
5143
+ // name: "btn_filter_form_cancel"
5144
+ // });
5145
+ // buttonCancel.props.dispatchEvent('click', {}).then(function(){
5146
+ // resizeWindow();
5147
+ // });
5148
+ // }
5149
+ // else{
5150
+ // if(isMobile){
5151
+ // // 手机端在显示搜索栏时隐藏crud上的刷新按钮,因为点击后crud高度显示有问题
5152
+ // let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
5153
+ // crudService && crudService.setData({showFieldsFilter: true});
5154
+ // }
5155
+ // }
5127
5156
  `;
5128
5157
 
5129
5158
 
@@ -5169,7 +5198,7 @@ else{
5169
5198
  },
5170
5199
  },
5171
5200
  filterVisible ? {
5172
- "label": "",
5201
+ "label": i18next__default["default"].t('frontend_button_search_tooltip'),
5173
5202
  "icon": "fa fa-search",
5174
5203
  "type": "button",
5175
5204
  "tooltip": i18next__default["default"].t('frontend_button_search_tooltip'),
@@ -5222,12 +5251,23 @@ else{
5222
5251
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500"
5223
5252
  },
5224
5253
  // getExportExcelToolbarButtonSchema(),
5254
+ getSettingListviewToolbarButtonSchema(),
5255
+ getDisplayAsButton(showDisplayAs),
5225
5256
  filterVisible ? {
5226
- "label": "",
5257
+ "label": i18next__default["default"].t('frontend_button_search_tooltip'),
5227
5258
  "icon": "fa fa-search",
5228
5259
  "tooltip": i18next__default["default"].t('frontend_button_search_tooltip'),
5229
5260
  "tooltipPlacement": "bottom",
5230
5261
  "type": "button",
5262
+ "badge": {
5263
+ "offset": [
5264
+ -5,
5265
+ 1
5266
+ ],
5267
+ "size":8,
5268
+ "animation": true,
5269
+ "visibleOn": "${isFieldsFilterEmpty == false}"
5270
+ },
5231
5271
  "align": "right",
5232
5272
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
5233
5273
  "onEvent": {
@@ -5240,9 +5280,7 @@ else{
5240
5280
  ]
5241
5281
  }
5242
5282
  }
5243
- } : {},
5244
- getSettingListviewToolbarButtonSchema(),
5245
- getDisplayAsButton(showDisplayAs)
5283
+ } : {}
5246
5284
  // {
5247
5285
  // "type": "search-box",
5248
5286
  // "align": "right",
@@ -5872,6 +5910,58 @@ else{
5872
5910
  "actions": [
5873
5911
  {
5874
5912
  "actionType": "reload"
5913
+ },
5914
+ {
5915
+ "actionType": "custom",
5916
+ "script": `
5917
+ const masterRecord = event.data._master?.record;
5918
+ const fieldConfig = ${JSON.stringify(field)};
5919
+ let reference_to = fieldConfig.reference_to;
5920
+ let saveValue;
5921
+ const newRecord = {
5922
+ _id: event.data.result.data.recordId,
5923
+ ...event.data.__super.__super
5924
+ }
5925
+ const saveField = fieldConfig.reference_to_field || '_id';
5926
+ const saveFieldValue = newRecord[saveField];
5927
+
5928
+ if( fieldConfig._reference_to && (_.isArray(fieldConfig._reference_to) || _.isFunction(fieldConfig._reference_to) || fieldConfig._reference_to.startsWith('function') ) ){
5929
+
5930
+ const fieldValue = masterRecord ? masterRecord[fieldConfig.name] : {o: reference_to, ids: []};
5931
+ const baseSaveValue = {
5932
+ o: reference_to,
5933
+ ids: [saveFieldValue]
5934
+ };
5935
+ if(fieldValue && fieldValue.o){
5936
+ if(fieldValue.o === reference_to){
5937
+ saveValue = fieldConfig.multiple ? { o: reference_to, ids: fieldValue.ids.concat(saveFieldValue)} : baseSaveValue;
5938
+ }else{
5939
+ saveValue = baseSaveValue;
5940
+ }
5941
+ }else{
5942
+ saveValue = baseSaveValue;
5943
+ }
5944
+
5945
+ }else{
5946
+ if(fieldConfig.multiple){
5947
+ // TODO: 连续新建多个记录时,因为获取的主记录不是实时的,所以只会勾选最后一个新建的记录。
5948
+ const fieldValue = (masterRecord && masterRecord[fieldConfig.name]) || [];
5949
+ saveValue = fieldValue.concat(saveFieldValue);
5950
+ }else{
5951
+ saveValue = saveFieldValue;
5952
+ }
5953
+ }
5954
+
5955
+ const ctx = ${JSON.stringify(ctx)};
5956
+ const componentId = ctx.defaults.formSchema.id ? 'service-'+ctx.defaults.formSchema.id : 'new-'+ctx.defaults.formSchema.objectApiName;
5957
+ doAction({
5958
+ actionType: 'setValue',
5959
+ componentId: componentId,
5960
+ args: {
5961
+ value: { [fieldConfig.name]: saveValue }
5962
+ }
5963
+ });
5964
+ `
5875
5965
  }
5876
5966
  ]
5877
5967
  };
@@ -6102,7 +6192,7 @@ else{
6102
6192
  type: 'steedos-field-lookup',
6103
6193
  field,
6104
6194
  readonly,
6105
- ctx: {},
6195
+ ctx,
6106
6196
  }
6107
6197
  // return await lookupToAmisGroup(field, readonly, ctx);
6108
6198
  }
@@ -6256,8 +6346,8 @@ else{
6256
6346
  /*
6257
6347
  * @Author: baozhoutao@steedos.com
6258
6348
  * @Date: 2023-01-13 17:27:54
6259
- * @LastEditors: Please set LastEditors
6260
- * @LastEditTime: 2023-05-31 13:34:22
6349
+ * @LastEditors: liaodaxue
6350
+ * @LastEditTime: 2023-06-16 15:58:21
6261
6351
  * @Description:
6262
6352
  */
6263
6353
 
@@ -6309,6 +6399,7 @@ else{
6309
6399
  }else {
6310
6400
  return {
6311
6401
  "type": "input-rich-text",
6402
+ "receiver": "${context.rootUrl}/s3/images",
6312
6403
  "name": field.name
6313
6404
  }
6314
6405
  // return {
@@ -9495,6 +9586,8 @@ else{
9495
9586
  };
9496
9587
  if(formSchema.id){
9497
9588
  amisSchema.id = `service-${formSchema.id}`;
9589
+ }else {
9590
+ amisSchema.id = `new-${objectSchema.name}`;
9498
9591
  }
9499
9592
  return amisSchema;
9500
9593
  }