@steedos-widgets/amis-lib 1.2.26 → 1.2.28

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
@@ -671,6 +671,10 @@
671
671
  if(_$1.includes(['percent','time','filesize','date','datetime','boolean','number','currency', 'select', 'file', 'image', 'avatar', 'formula', 'summary', 'object', 'grid'], field.type)){
672
672
  displayFields.push(`${field.name}`);
673
673
  }
674
+ }else {
675
+ objectFieldName = field.name.split('.')[0];
676
+ fieldsName.push(objectFieldName);
677
+ displayFields.push(objectFieldName);
674
678
  }
675
679
  }
676
680
 
@@ -1751,8 +1755,8 @@
1751
1755
  /*
1752
1756
  * @Author: baozhoutao@steedos.com
1753
1757
  * @Date: 2022-11-01 15:51:00
1754
- * @LastEditors: liaodaxue
1755
- * @LastEditTime: 2023-06-06 11:12:33
1758
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
1759
+ * @LastEditTime: 2023-06-28 23:19:41
1756
1760
  * @Description:
1757
1761
  */
1758
1762
 
@@ -1803,6 +1807,16 @@
1803
1807
  return {
1804
1808
  data: formSchema
1805
1809
  };
1810
+ `;
1811
+ const onDialogCancelScript = `
1812
+ // 这里加setTimeout是因为amis的Bug,它会先触发cancel事件执行此脚本关闭父窗口然后再关闭子窗口
1813
+ // 正确的顺序应该是先关闭子窗口再关闭父窗口,顺序错了会造成第二次点击新建按钮的时候异常
1814
+ setTimeout(function(){
1815
+ doAction({
1816
+ "actionType": "cancel",
1817
+ "componentId": "object_actions_drawer_${uiSchema.name}"
1818
+ });
1819
+ }, 200);
1806
1820
  `;
1807
1821
  return {
1808
1822
  "type": "service",
@@ -1864,6 +1878,17 @@
1864
1878
  "closeOnEsc": false,
1865
1879
  "closeOnOutside": false,
1866
1880
  "size": "lg",
1881
+ "onEvent": {
1882
+ "cancel": {
1883
+ "actions": [
1884
+ {
1885
+ "actionType": "custom",
1886
+ "script": onDialogCancelScript,
1887
+ "expression": "${window:innerWidth < 768}",
1888
+ }
1889
+ ]
1890
+ }
1891
+ },
1867
1892
  "actions": [
1868
1893
  {
1869
1894
  type: 'button',
@@ -1926,7 +1951,7 @@
1926
1951
  * @Author: baozhoutao@steedos.com
1927
1952
  * @Date: 2022-11-01 15:49:58
1928
1953
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
1929
- * @LastEditTime: 2023-03-27 11:36:49
1954
+ * @LastEditTime: 2023-06-28 23:22:31
1930
1955
  * @Description:
1931
1956
  */
1932
1957
 
@@ -1955,6 +1980,17 @@
1955
1980
  ? JSON.parse(page.schema)
1956
1981
  : page.schema;
1957
1982
  }
1983
+
1984
+ const onDialogCancelScript = `
1985
+ // 这里加setTimeout是因为amis的Bug,它会先触发cancel事件执行此脚本关闭父窗口然后再关闭子窗口
1986
+ // 正确的顺序应该是先关闭子窗口再关闭父窗口,顺序错了会造成第二次点击编辑按钮的时候异常
1987
+ setTimeout(function(){
1988
+ doAction({
1989
+ "actionType": "cancel",
1990
+ "componentId": "object_actions_drawer_${uiSchema.name}"
1991
+ });
1992
+ }, 200);
1993
+ `;
1958
1994
 
1959
1995
  return {
1960
1996
  type: "service",
@@ -1978,6 +2014,17 @@
1978
2014
  closeOnOutside: false,
1979
2015
  showCloseButton: true,
1980
2016
  size: "lg",
2017
+ "onEvent": {
2018
+ "cancel": {
2019
+ "actions": [
2020
+ {
2021
+ "actionType": "custom",
2022
+ "script": onDialogCancelScript,
2023
+ "expression": "${window:innerWidth < 768}",
2024
+ }
2025
+ ]
2026
+ }
2027
+ },
1981
2028
  },
1982
2029
  },
1983
2030
  ],
@@ -2274,6 +2321,7 @@
2274
2321
  label: i18next__default["default"].t('frontend_import_data_file'),
2275
2322
  required: true,
2276
2323
  type: "input-file",
2324
+ accept: ".xlsx,.xls",
2277
2325
  className: "m-1",
2278
2326
  labelClassName: "text-left",
2279
2327
  clearValueOnHidden: true,
@@ -2938,6 +2986,7 @@
2938
2986
  "drawer": {
2939
2987
  "type": "drawer",
2940
2988
  "title": "操作",
2989
+ "id": "object_actions_drawer_" + objectSchema.name,
2941
2990
  "body": [
2942
2991
  {
2943
2992
  "type": "button-group",
@@ -2960,7 +3009,6 @@
2960
3009
  "size": "lg"
2961
3010
  }
2962
3011
  ],
2963
- "id": "u:9815f7366b9f",
2964
3012
  "position": "bottom",
2965
3013
  "closeOnOutside": true,
2966
3014
  "resizable": false,
@@ -2971,8 +3019,7 @@
2971
3019
  }
2972
3020
  ]
2973
3021
  }
2974
- },
2975
- "id": "u:ee7c7929e6ae"
3022
+ }
2976
3023
  }
2977
3024
  }else {
2978
3025
  if(moreButtons.length > 0){
@@ -3004,6 +3051,7 @@
3004
3051
  "drawer": {
3005
3052
  "type": "drawer",
3006
3053
  "title": "操作",
3054
+ "id": "object_actions_drawer_" + objectSchema.name,
3007
3055
  "body": [
3008
3056
  {
3009
3057
  "type": "button-group",
@@ -3027,7 +3075,6 @@
3027
3075
  "size": "lg"
3028
3076
  }
3029
3077
  ],
3030
- "id": "u:9815f7366b9f",
3031
3078
  "position": "bottom",
3032
3079
  "closeOnOutside": true,
3033
3080
  "resizable": false,
@@ -3038,8 +3085,7 @@
3038
3085
  }
3039
3086
  ]
3040
3087
  }
3041
- },
3042
- "id": "u:ee7c7929e6ae"
3088
+ }
3043
3089
  }
3044
3090
  }else {
3045
3091
  return ___default["default"].map(buttons, (button) => {
@@ -3068,6 +3114,7 @@
3068
3114
  "drawer": {
3069
3115
  "type": "drawer",
3070
3116
  "title": "操作",
3117
+ "id": "object_actions_drawer_" + objectSchema.name,
3071
3118
  "body": [
3072
3119
  {
3073
3120
  "type": "button-group",
@@ -5644,6 +5691,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5644
5691
  const fieldsArr = [];
5645
5692
 
5646
5693
  const listName = "all";
5694
+
5695
+ const isMobile = window.innerWidth < 768;
5647
5696
 
5648
5697
  const listView = ___namespace.find(
5649
5698
  refObjectConfig.list_views,
@@ -5720,6 +5769,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5720
5769
 
5721
5770
  source.data.$term = "$term";
5722
5771
  source.data.$self = "$$";
5772
+
5723
5773
 
5724
5774
  source.requestAdaptor = `
5725
5775
  const selfData = JSON.parse(JSON.stringify(api.data.$self));
@@ -5755,6 +5805,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5755
5805
  }
5756
5806
  }
5757
5807
 
5808
+
5758
5809
  if(allowSearchFields){
5759
5810
  allowSearchFields.forEach(function(key){
5760
5811
  const keyValue = selfData[key];
@@ -5870,7 +5921,6 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5870
5921
  pickerSchema.affixHeader = false;
5871
5922
 
5872
5923
  var headerToolbarItems = [];
5873
- const isMobile = window.innerWidth < 768;
5874
5924
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user" && !isMobile){
5875
5925
  headerToolbarItems = getLookupSapceUserTreeSchema();
5876
5926
  pickerSchema["style"] = {
@@ -5951,7 +6001,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5951
6001
  }
5952
6002
 
5953
6003
  const ctx = ${JSON.stringify(ctx)};
5954
- const componentId = ctx.defaults.formSchema.id ? 'service-'+ctx.defaults.formSchema.id : 'new-'+ctx.defaults.formSchema.objectApiName;
6004
+ const componentId = ctx.defaults.formSchema.id;
5955
6005
  doAction({
5956
6006
  actionType: 'setValue',
5957
6007
  componentId: componentId,
@@ -6205,6 +6255,11 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6205
6255
  // ids人员点选模式
6206
6256
  return await lookupToAmisIdsPicker(field, readonly, ctx);
6207
6257
  }
6258
+ if(!field.filters || field.filters.length == 0){
6259
+ field.filters = [["user_accepted", "=", true]];
6260
+ }else {
6261
+ field.filters = [ ["user_accepted", "=", true], "and", field.filters ];
6262
+ }
6208
6263
  // 左侧树右侧人员列表的下拉框模式,不再支持,而是执行下面的lookupToAmisPicker函数弹出选人窗口
6209
6264
  // return await lookupToAmisSelectUser(field, readonly, ctx);
6210
6265
  }
@@ -6345,7 +6400,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6345
6400
  * @Author: baozhoutao@steedos.com
6346
6401
  * @Date: 2023-01-13 17:27:54
6347
6402
  * @LastEditors: liaodaxue
6348
- * @LastEditTime: 2023-06-16 15:58:21
6403
+ * @LastEditTime: 2023-06-30 10:29:52
6349
6404
  * @Description:
6350
6405
  */
6351
6406
 
@@ -6353,12 +6408,16 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6353
6408
  const getMarkdownFieldSchema = (field, readonly, ctx)=>{
6354
6409
  if(readonly){
6355
6410
  return {
6356
- "type": "markdown",
6357
- "name": field.name,
6358
- "options": {
6359
- "linkify": true,
6360
- "html": true,
6361
- "breaks": true
6411
+ "type": "control",
6412
+ "label": field.label,
6413
+ "body": {
6414
+ "type": "markdown",
6415
+ "name": field.name,
6416
+ "options": {
6417
+ "linkify": true,
6418
+ "html": true,
6419
+ "breaks": true
6420
+ }
6362
6421
  }
6363
6422
  }
6364
6423
  }else {
@@ -7439,6 +7498,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7439
7498
  async function getTableColumns(fields, options){
7440
7499
  const columns = [{name: '_index',type: 'text', width: 32, placeholder: ""}];
7441
7500
  const allowEdit = options.permissions?.allowEdit && options.permissions?.modifyAllRecords && !options.isLookup && options.enable_inline_edit != false;
7501
+ const defaultWidth = "unset";//用于使table内的td标签下生成div,实现将快速编辑按钮固定在右侧的效果,并不是为了unset效果
7442
7502
  for (const field of fields) {
7443
7503
  //增加quickEdit属性,实现快速编辑
7444
7504
  const quickEditSchema = allowEdit ? await getQuickEditSchema(field, options) : allowEdit;
@@ -7495,7 +7555,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7495
7555
  type: "switch",
7496
7556
  name: field.name,
7497
7557
  label: field.label,
7498
- width: field.width,
7558
+ width: field.width || defaultWidth,
7499
7559
  toggled: field.toggled,
7500
7560
  quickEdit: quickEditSchema,
7501
7561
  className:"whitespace-nowrap",
@@ -7510,7 +7570,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7510
7570
  label: field.label,
7511
7571
  map: map,
7512
7572
  sortable: field.sortable,
7513
- width: field.width,
7573
+ width: field.width || defaultWidth,
7514
7574
  toggled: field.toggled,
7515
7575
  className:"whitespace-nowrap",
7516
7576
  quickEdit: quickEditSchema
@@ -7539,7 +7599,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7539
7599
  label: field.label,
7540
7600
  sortable: field.sortable,
7541
7601
  // searchable: field.searchable,
7542
- width: field.width,
7602
+ width: field.width || defaultWidth,
7543
7603
  type: type,
7544
7604
  tpl: tpl,
7545
7605
  toggled: field.toggled,
@@ -7946,6 +8006,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7946
8006
  let valueField = mainObject.key_field || '_id';
7947
8007
  const api = await getApi(mainObject, null, fields, {count: options.queryCount, alias: 'rows', limit: top, queryOptions: `filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"`});
7948
8008
 
8009
+ api.url += "&objectName=${objectName}";//设计器上对象表格组件需要切换对象重新请求列表数据
7949
8010
  if(options.isRelated){
7950
8011
  api.url += "&recordId=${_master.recordId}";
7951
8012
  }
@@ -8275,12 +8336,18 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
8275
8336
  // }
8276
8337
  // })
8277
8338
 
8339
+ var fieldNames = ___namespace.map(fields, function(n){return n.name});
8278
8340
  return `
8279
8341
  if(payload.data.data.length === 0){
8280
8342
  var isEditor = !!${options && options.isEditor};
8281
8343
  if(isEditor){
8344
+ var fieldNames = ${JSON.stringify(fieldNames)};
8345
+ var emptyDoc = {};//这里如果不把每个字段值设置为空的话,表单上会显示上一次表单上的字段值
8346
+ fieldNames.forEach(function(n){
8347
+ emptyDoc[n] = null;
8348
+ });
8282
8349
  // 设计器中始终显示表单,有记录则显示第一条记录,没记录时显示为空表单
8283
- payload.data.data = [{}];
8350
+ payload.data.data = [emptyDoc];
8284
8351
  }
8285
8352
  else{
8286
8353
  return {
@@ -9084,8 +9151,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
9084
9151
  /*
9085
9152
  * @Author: baozhoutao@steedos.com
9086
9153
  * @Date: 2022-05-26 16:02:08
9087
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
9088
- * @LastEditTime: 2023-06-04 15:49:23
9154
+ * @LastEditors: liaodaxue
9155
+ * @LastEditTime: 2023-06-29 17:27:19
9089
9156
  * @Description:
9090
9157
  */
9091
9158
 
@@ -9179,7 +9246,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
9179
9246
  const section = await getSection(formFields, permissionFields, fieldSchemaArray, key, ctx);
9180
9247
  if (section.body.length > 0) {
9181
9248
  if (section.visibleOn) {
9182
- sectionVisibleOns.push(section.visibleOn);
9249
+ sectionVisibleOns.push("("+section.visibleOn+")");
9183
9250
  }
9184
9251
  else {
9185
9252
  sectionVisibleOns.push("true");
@@ -9517,8 +9584,12 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
9517
9584
  if(___default["default"].has(formSchema, 'className')){
9518
9585
  formSchema.className = 'steedos-amis-form';
9519
9586
  }
9587
+ if(!formSchema.id){
9588
+ formSchema.id = 'form_' + objectSchema.name;
9589
+ }
9520
9590
  const amisSchema = {
9521
9591
  type: 'service',
9592
+ id: `service_${formSchema.id}`,
9522
9593
  className: 'p-0',
9523
9594
  name: `page_edit_${recordId}`,
9524
9595
  api: await getEditFormInitApi(objectSchema, recordId, fields, ctx),
@@ -9589,11 +9660,6 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
9589
9660
  }
9590
9661
  })]
9591
9662
  };
9592
- if(formSchema.id){
9593
- amisSchema.id = `service-${formSchema.id}`;
9594
- }else {
9595
- amisSchema.id = `new-${objectSchema.name}`;
9596
- }
9597
9663
  return amisSchema;
9598
9664
  }
9599
9665