@steedos-widgets/amis-lib 1.2.32 → 1.2.34

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
@@ -5136,7 +5136,8 @@
5136
5136
  "type": "dropdown-button",
5137
5137
  "trigger": "click",
5138
5138
  "icon": "fa fa-cog",
5139
- "tooltip": i18next__default["default"].t('frontend_button_listview_control_tooltip'),
5139
+ //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330
5140
+ // "tooltip": i18next.t('frontend_button_listview_control_tooltip'),
5140
5141
  "btnClassName": "antd-Button--iconOnly bg-white !p-2 rounded border-gray-300 text-gray-500",
5141
5142
  "align": "right",
5142
5143
  "visibleOn": "${!isLookup}",
@@ -5176,11 +5177,12 @@
5176
5177
  "rightIconClassName": "m-l-sm"
5177
5178
  }
5178
5179
  ];
5179
- const displayAsLabel = displayAs === 'split'? i18next__default["default"].t('frontend_display_type_is_split') : i18next__default["default"].t('frontend_display_type_is_table');
5180
+ displayAs === 'split'? i18next__default["default"].t('frontend_display_type_is_split') : i18next__default["default"].t('frontend_display_type_is_table');
5180
5181
  return {
5181
5182
  "type": "dropdown-button",
5182
5183
  "icon": "fa fa-table-columns",
5183
- "tooltip": `${i18next__default["default"].t('frontend_display_as')} ${displayAsLabel}`,
5184
+ //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330
5185
+ // "tooltip": `${i18next.t('frontend_display_as')} ${displayAsLabel}`,
5184
5186
  "btnClassName": "antd-Button--iconOnly bg-white !p-2 rounded border-gray-300 text-gray-500",
5185
5187
  "align": "right",
5186
5188
  "visibleOn": "${window:innerWidth > 768 && !!!isLookup}",
@@ -5262,7 +5264,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5262
5264
  // "type": "reload",//不可以直接使用reload,因为它不会设置页码到第一页
5263
5265
  "type": "button",
5264
5266
  "align": "right",
5265
- "tooltip": i18next__default["default"].t('frontend_button_reload_tooltip'),
5267
+ //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330
5268
+ // "tooltip": i18next.t('frontend_button_reload_tooltip'),
5266
5269
  "tooltipPlacement": "top",
5267
5270
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
5268
5271
  "label": "",
@@ -5284,7 +5287,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5284
5287
  "icon": "fa fa-search",
5285
5288
  "type": "button",
5286
5289
  "tooltipPlacement": "top",
5287
- "tooltip": i18next__default["default"].t('frontend_button_search_tooltip'),
5290
+ //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330
5291
+ // "tooltip": i18next.t('frontend_button_search_tooltip'),
5288
5292
  "badge": {
5289
5293
  "offset": [
5290
5294
  -5,
@@ -5329,7 +5333,9 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5329
5333
  {
5330
5334
  "type": "reload",
5331
5335
  "align": "right",
5332
- "tooltip": i18next__default["default"].t('frontend_button_reload_tooltip'),
5336
+ //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330
5337
+ // "tooltip": i18next.t('frontend_button_reload_tooltip'),
5338
+ "tooltip":"",
5333
5339
  "tooltipPlacement": "top",
5334
5340
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500"
5335
5341
  },
@@ -5339,8 +5345,9 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5339
5345
  filterVisible ? {
5340
5346
  "label": i18next__default["default"].t('frontend_button_search_tooltip'),
5341
5347
  "icon": "fa fa-search",
5342
- "tooltip": i18next__default["default"].t('frontend_button_search_tooltip'),
5343
- "tooltipPlacement": "top",
5348
+ //TODO: dropdown-button只支持在按钮上方配置提示,对于上方按钮的点击会有影响,为保持统一,暂时去除,等待amis优化,https://github.com/baidu/amis/issues/7330
5349
+ // "tooltip": i18next.t('frontend_button_search_tooltip'),
5350
+ // "tooltipPlacement": "top",
5344
5351
  "type": "button",
5345
5352
  "badge": {
5346
5353
  "offset": [
@@ -5446,9 +5453,16 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5446
5453
  valueField = `${ctx.fieldNamePrefix}${valueField}`;
5447
5454
  }
5448
5455
  data.$value = `$${valueField}`;
5449
- // data["&"] = "$$";
5456
+ data['$'] = `$$`;
5450
5457
  const requestAdaptor = `
5451
5458
  var filters = [['parent', '=', null]];
5459
+ const filtersFunction = ${field.filtersFunction || field._filtersFunction};
5460
+ if(filtersFunction){
5461
+ const _filters = filtersFunction(filters, api.data.$);
5462
+ if(_filters && _filters.length > 0){
5463
+ filters.push(_filters);
5464
+ }
5465
+ }
5452
5466
  api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));
5453
5467
  var defaultValue = api.data.$value;
5454
5468
  var optionsFiltersOp = "${field.multiple ? "in" : "="}";
@@ -5646,7 +5660,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5646
5660
  const tree = [{
5647
5661
  "type": "input-tree",
5648
5662
  "className": "",
5649
- "inputClassName": "pl-0",
5663
+ "inputClassName": "p-0",
5650
5664
  "id": "u:7fd77b7915b0",
5651
5665
  "source": {
5652
5666
  "method": "post",
@@ -5707,7 +5721,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5707
5721
  "left": "-200px",
5708
5722
  "width": "190px",
5709
5723
  "bottom": 0,
5710
- "top": "-14px",
5724
+ "top": "2px",
5711
5725
  "overflow": "auto",
5712
5726
  "min-height":"300px"
5713
5727
  },
@@ -5973,7 +5987,9 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5973
5987
  "margin-left":"200px",
5974
5988
  "min-height": "300px"
5975
5989
  };
5990
+ pickerSchema.className = pickerSchema.className || "" + " steedos-select-user";
5976
5991
  }
5992
+
5977
5993
  pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, ctx.formFactor, { headerToolbarItems });
5978
5994
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
5979
5995
  if (isAllowCreate) {
@@ -6070,6 +6086,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6070
6086
  modalTitle: i18next__default["default"].t('frontend_form_please_select') + " " + refObjectConfig.label,
6071
6087
  labelField: referenceTo.labelField.name,
6072
6088
  valueField: referenceTo.valueField.name,
6089
+ // disabledOn: this._master目的是相关表新建时禁止编辑关联字段; this.relatedKey目的是相关表编辑时禁止编辑关联字段。
6090
+ disabledOn: `${readonly} || ( (this._master && (this._master.relatedKey ==='${field.name}')) || (this.relatedKey ==='${field.name}') )`,
6073
6091
  modalMode: 'dialog', //TODO 设置 dialog 或者 drawer,用来配置弹出方式
6074
6092
  source: source,
6075
6093
  size: "lg",
@@ -6250,6 +6268,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6250
6268
  joinValues: false,
6251
6269
  extractValue: true,
6252
6270
  clearable: true,
6271
+ // disabledOn: this._master目的是相关表新建时禁止编辑关联字段; this.relatedKey目的是相关表编辑时禁止编辑关联字段。
6272
+ disabledOn: `${readonly} || ( (this._master && (this._master.relatedKey ==='${field.name}')) || (this.relatedKey ==='${field.name}') )`,
6253
6273
  // labelField: labelField,
6254
6274
  // valueField: valueField,
6255
6275
  source: apiInfo,
@@ -6434,6 +6454,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6434
6454
  valueField: referenceTo.valueField.name,
6435
6455
  modalMode: 'dialog',
6436
6456
  source: source,
6457
+ // disabledOn: this._master目的是相关表新建时禁止编辑关联字段; this.relatedKey目的是相关表编辑时禁止编辑关联字段。
6458
+ disabledOn: `${readonly} || ( (this._master && (this._master.relatedKey ==='${field.name}')) || (this.relatedKey ==='${field.name}') )`,
6437
6459
  size: "lg",
6438
6460
  pickerSchema: pickerSchema,
6439
6461
  joinValues: false,
@@ -6462,7 +6484,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6462
6484
  * @Author: baozhoutao@steedos.com
6463
6485
  * @Date: 2023-01-13 17:27:54
6464
6486
  * @LastEditors: liaodaxue
6465
- * @LastEditTime: 2023-06-30 10:29:52
6487
+ * @LastEditTime: 2023-07-24 15:23:12
6466
6488
  * @Description:
6467
6489
  */
6468
6490
 
@@ -6484,21 +6506,39 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6484
6506
  }
6485
6507
  }else {
6486
6508
  return {
6487
- "type": "group",
6509
+ "type": "control",
6510
+ "label": field.label,
6488
6511
  "body": [
6489
6512
  {
6490
- "type": "editor",
6491
- "name": field.name,
6492
- "language": "markdown",
6493
- },
6494
- {
6495
- "type": "markdown",
6496
- "name": field.name,
6497
- "options": {
6498
- "linkify": true,
6499
- "html": true,
6500
- "breaks": true
6501
- }
6513
+ "type": "tabs",
6514
+ "tabsMode": "strong",
6515
+ "className": "steedos-markdown",
6516
+ "tabs": [
6517
+ {
6518
+ "title": "Write",
6519
+ "tab": [
6520
+ {
6521
+ "type": "editor",
6522
+ "name": field.name,
6523
+ "language": "markdown",
6524
+ }
6525
+ ]
6526
+ },
6527
+ {
6528
+ "title": "Preview",
6529
+ "tab": [
6530
+ {
6531
+ "type": "markdown",
6532
+ "name": field.name,
6533
+ "options": {
6534
+ "linkify": true,
6535
+ "html": true,
6536
+ "breaks": true
6537
+ }
6538
+ }
6539
+ ]
6540
+ }
6541
+ ]
6502
6542
  }
6503
6543
  ]
6504
6544
  }
@@ -7444,26 +7484,45 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7444
7484
  let labelField = quickEditSchema.body[0].labelField || "label";
7445
7485
  let valueField = quickEditSchema.body[0].valueField || "value";
7446
7486
  if (field.multiple) {
7487
+ /*
7488
+ 多选分两种情况。
7489
+ 第一种是减少选项时(判断新的数据是否比老的数据短),按照index删除_display中对应选项,保证回显没问题;
7490
+ 第二种是增加选项时,按照value的值,找到对应选项,并按照_display的规则为其赋值
7491
+ */
7447
7492
  TempDisplayField = `
7493
+ const preData = event.data.__super.${field.name};
7494
+ if(preData && event.data.${field.name}.length < preData.length){
7495
+ let deletedIndex;
7496
+ preData.forEach(function(item,index){
7497
+ if(_.indexOf(event.data.${field.name}, item) == -1) _display["${field.name}"].splice(index, 1);
7498
+ })
7499
+ }else{
7448
7500
  _display["${field.name}"] = [];
7449
- event.data.selectedItems.forEach(function(item,index){
7501
+ event.data.value.forEach(function(val,index){
7502
+ const item = _.find(event.data.selectedItems, { ${valueField}: val });
7450
7503
  _display["${field.name}"].push(
7451
7504
  {
7452
7505
  "label": item.${labelField},
7453
- "value": item.${valueField},
7506
+ "value": item[event.data.uiSchema.idFieldName],
7454
7507
  "objectName": "${field.reference_to}"
7455
7508
  }
7456
7509
  )
7457
7510
  })
7458
- `;
7511
+ }
7512
+
7513
+ `;
7459
7514
  } else {
7460
7515
  TempDisplayField = `
7516
+ if(event.data.value){
7461
7517
  _display["${field.name}"] = {
7462
7518
  "label": event.data.selectedItems.${labelField},
7463
- "value": event.data.selectedItems.${valueField},
7519
+ "value": event.data.selectedItems[event.data.uiSchema.idFieldName],
7464
7520
  "objectName": "${field.reference_to}"
7465
7521
  }
7466
- `;
7522
+ }else{
7523
+ _display["${field.name}"] = {}
7524
+ }
7525
+ `;
7467
7526
  }
7468
7527
  quickEditSchema.body[0].onEvent["change"] = quickEditOnEvent(TempDisplayField);
7469
7528
  break;
@@ -7573,10 +7632,25 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7573
7632
  return quickEditSchema;
7574
7633
  }
7575
7634
 
7635
+ function getFieldWidth(width){
7636
+ const defaultWidth = "unset";//用于使table内的td标签下生成div,实现将快速编辑按钮固定在右侧的效果,并不是为了unset效果
7637
+ if(typeof width == 'string'){
7638
+ if(isNaN(width)){
7639
+ return width;
7640
+ }else {
7641
+ return Number(width);
7642
+ }
7643
+ }else if(typeof width == 'number'){
7644
+ return width;
7645
+ }else {
7646
+ return defaultWidth;
7647
+ }
7648
+ }
7649
+
7576
7650
  async function getTableColumns(fields, options){
7577
7651
  const columns = [{name: '_index',type: 'text', width: 32, placeholder: ""}];
7578
7652
  const allowEdit = options.permissions?.allowEdit && options.permissions?.modifyAllRecords && !options.isLookup && options.enable_inline_edit != false;
7579
- const defaultWidth = "unset";//用于使table内的td标签下生成div,实现将快速编辑按钮固定在右侧的效果,并不是为了unset效果
7653
+
7580
7654
  for (const field of fields) {
7581
7655
  //增加quickEdit属性,实现快速编辑
7582
7656
  const quickEditSchema = allowEdit ? await getQuickEditSchema(field, options) : allowEdit;
@@ -7624,7 +7698,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7624
7698
  type: "switch",
7625
7699
  name: field.name,
7626
7700
  label: field.label,
7627
- width: field.width || defaultWidth,
7701
+ width: getFieldWidth(field.width),
7628
7702
  toggled: field.toggled,
7629
7703
  static: true,
7630
7704
  className:"whitespace-nowrap",
@@ -7635,7 +7709,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7635
7709
  type: "switch",
7636
7710
  name: field.name,
7637
7711
  label: field.label,
7638
- width: field.width || defaultWidth,
7712
+ width: getFieldWidth(field.width),
7639
7713
  toggled: field.toggled,
7640
7714
  quickEdit: quickEditSchema,
7641
7715
  static: true,
@@ -7655,7 +7729,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7655
7729
  label: field.label,
7656
7730
  map: map,
7657
7731
  sortable: field.sortable,
7658
- width: field.width || defaultWidth,
7732
+ width: getFieldWidth(field.width),
7659
7733
  toggled: field.toggled,
7660
7734
  className,
7661
7735
  static: true,
@@ -7689,7 +7763,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7689
7763
  label: field.label,
7690
7764
  sortable: field.sortable,
7691
7765
  // searchable: field.searchable,
7692
- width: field.width || defaultWidth,
7766
+ width: getFieldWidth(field.width),
7693
7767
  type: type,
7694
7768
  tpl: tpl,
7695
7769
  toggled: field.toggled,
@@ -7987,14 +8061,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7987
8061
  onOpenApi: {
7988
8062
  url: `\${context.rootUrl}/service/api/@\${objectName}/recordPermissions/\${_id}`,
7989
8063
  method: "get",
7990
- data: {
7991
- $: "$$",
7992
- objectName: "${objectName}",
7993
- listViewId: "${listViewId}",
7994
- appId: "${appId}",
7995
- formFactor: "${formFactor}",
7996
- context: `\${context}`
7997
- },
8064
+ requestAdaptor: "api.data={}; return api;",
7998
8065
  headers: {
7999
8066
  Authorization: "Bearer ${context.tenantId},${context.authToken}"
8000
8067
  },