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