@steedos-widgets/amis-lib 6.3.0-beta.10 → 6.3.0-beta.11

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
@@ -752,7 +752,7 @@ async function getFieldsTemplate(fields, display){
752
752
  if(display != false){
753
753
  display = true;
754
754
  }
755
- let fieldsName = ['_id'];
755
+ let fieldsName = ['_id', 'space'];
756
756
  let displayFields = [];
757
757
  let fieldsArr = [];
758
758
  if(_$1.isArray(fields)){
@@ -1299,6 +1299,7 @@ var frontend_form_confirm$1 = "Confirm";
1299
1299
  var frontend_form_delete$1 = "Delete";
1300
1300
  var frontend_form_view$1 = "view";
1301
1301
  var frontend_form_details$1 = "details";
1302
+ var frontend_form_validation_failed_url$1 = "The URL format is incorrect";
1302
1303
  var frontend_delete_confirm_text$1 = "Are you sure you want to delete this item?";
1303
1304
  var frontend_delete_many_selected_required$1 = "Please select the item to be deleted";
1304
1305
  var frontend_delete_many_confirm_text$1 = "Are you sure you want to delete?";
@@ -1387,6 +1388,7 @@ var en_us = {
1387
1388
  frontend_form_delete: frontend_form_delete$1,
1388
1389
  frontend_form_view: frontend_form_view$1,
1389
1390
  frontend_form_details: frontend_form_details$1,
1391
+ frontend_form_validation_failed_url: frontend_form_validation_failed_url$1,
1390
1392
  frontend_delete_confirm_text: frontend_delete_confirm_text$1,
1391
1393
  frontend_delete_many_selected_required: frontend_delete_many_selected_required$1,
1392
1394
  frontend_delete_many_confirm_text: frontend_delete_many_confirm_text$1,
@@ -1476,6 +1478,7 @@ var frontend_form_confirm = "确认";
1476
1478
  var frontend_form_delete = "删除";
1477
1479
  var frontend_form_view = "查看";
1478
1480
  var frontend_form_details = "详情";
1481
+ var frontend_form_validation_failed_url = "URL 格式不正确";
1479
1482
  var frontend_delete_confirm_text = "确定要删除此项目?";
1480
1483
  var frontend_delete_many_selected_required = "请选择要删除的项";
1481
1484
  var frontend_delete_many_confirm_text = "确定要删除吗?";
@@ -1565,6 +1568,7 @@ var zh_cn = {
1565
1568
  frontend_form_delete: frontend_form_delete,
1566
1569
  frontend_form_view: frontend_form_view,
1567
1570
  frontend_form_details: frontend_form_details,
1571
+ frontend_form_validation_failed_url: frontend_form_validation_failed_url,
1568
1572
  frontend_delete_confirm_text: frontend_delete_confirm_text,
1569
1573
  frontend_delete_many_selected_required: frontend_delete_many_selected_required,
1570
1574
  frontend_delete_many_confirm_text: frontend_delete_many_confirm_text,
@@ -1669,6 +1673,29 @@ i18next
1669
1673
  }
1670
1674
  });
1671
1675
 
1676
+ /*
1677
+ * @Author: baozhoutao@steedos.com
1678
+ * @Date: 2022-07-13 15:18:03
1679
+ * @LastEditors: baozhoutao@steedos.com
1680
+ * @LastEditTime: 2023-04-11 10:34:26
1681
+ * @Description:
1682
+ */
1683
+
1684
+ async function getPage({type, pageId = '', appId, objectName = '', recordId = '', formFactor = 'LARGE'}){
1685
+ const api = `/api/pageSchema/${type}?app=${appId}&objectApiName=${objectName}&recordId=${recordId}&pageId=${pageId}&formFactor=${formFactor}`;
1686
+ const page = await fetchAPI(api);
1687
+ if (page && page.schema) {
1688
+ page.schema = JSON.parse(page.schema);
1689
+ if(page.schema.data){
1690
+ delete page.schema.data.recordId;
1691
+ delete page.schema.data.objectName;
1692
+ delete page.schema.data.context;
1693
+ delete page.schema.data.global;
1694
+ }
1695
+ return page;
1696
+ }
1697
+ }
1698
+
1672
1699
  async function getQuickEditSchema(object, columnField, options){
1673
1700
  let field = object.fields[columnField.name];
1674
1701
  //判断在amis3.2以上环境下,放开批量编辑与lookup的单元格编辑
@@ -2303,20 +2330,26 @@ async function getTableColumns(object, fields, options){
2303
2330
  }
2304
2331
 
2305
2332
  if(window.innerWidth >= 768 && ((field.is_name || field.name === options.labelFieldName) || ((field.type == 'lookup' || field.type == 'master_detail') && _$1.isString(field.reference_to) && field.multiple != true)) && options.isRelated){
2306
-
2307
- const drawerRecordDetailSchema = {
2333
+ const recordPage = await getPage({ type: 'record', appId: options.appId, objectName: options.objectName, formFactor: options.formFactor });
2334
+ const drawerRecordDetailSchema = recordPage ? Object.assign({}, recordPage.schema, {
2335
+ "recordId": `\${${options.idFieldName}}`,
2336
+ "data": {
2337
+ ...recordPage.schema.data,
2338
+ "_inDrawer": true, // 用于判断是否在抽屉中
2339
+ "recordLoaded": false, // 重置数据加载状态
2340
+ }
2341
+ }) : {
2308
2342
  "type": "steedos-record-detail",
2309
2343
  "objectApiName": "${objectName}",
2310
2344
  "recordId": `\${${options.idFieldName}}`,
2311
2345
  "showBackButton": false,
2312
2346
  "showButtons": true,
2313
2347
  "data": {
2314
- "_inDrawer": true, // 用于判断是否在抽屉中
2315
- "recordLoaded": false, // 重置数据加载状态
2348
+ "_inDrawer": true, // 用于判断是否在抽屉中
2349
+ "recordLoaded": false, // 重置数据加载状态
2316
2350
  }
2317
2351
  };
2318
2352
 
2319
-
2320
2353
  if(!(field.is_name || field.name === options.labelFieldName)){
2321
2354
  drawerRecordDetailSchema.objectApiName = field.reference_to;
2322
2355
  drawerRecordDetailSchema.recordId = `\${_display.${field.name}.value}`;
@@ -4808,29 +4841,6 @@ const getSchema$5 = async (uiSchema, ctx) => {
4808
4841
  }
4809
4842
  };
4810
4843
 
4811
- /*
4812
- * @Author: baozhoutao@steedos.com
4813
- * @Date: 2022-07-13 15:18:03
4814
- * @LastEditors: baozhoutao@steedos.com
4815
- * @LastEditTime: 2023-04-11 10:34:26
4816
- * @Description:
4817
- */
4818
-
4819
- async function getPage({type, pageId = '', appId, objectName = '', recordId = '', formFactor = 'LARGE'}){
4820
- const api = `/api/pageSchema/${type}?app=${appId}&objectApiName=${objectName}&recordId=${recordId}&pageId=${pageId}&formFactor=${formFactor}`;
4821
- const page = await fetchAPI(api);
4822
- if (page && page.schema) {
4823
- page.schema = JSON.parse(page.schema);
4824
- if(page.schema.data){
4825
- delete page.schema.data.recordId;
4826
- delete page.schema.data.objectName;
4827
- delete page.schema.data.context;
4828
- delete page.schema.data.global;
4829
- }
4830
- return page;
4831
- }
4832
- }
4833
-
4834
4844
  /*
4835
4845
  * @Author: baozhoutao@steedos.com
4836
4846
  * @Date: 2022-11-01 15:49:58
@@ -11440,7 +11450,11 @@ async function lookupToAmisPicker(field, readonly, ctx){
11440
11450
  // 如果当前元素不是数组,则处理该元素
11441
11451
  // 下面正则用于匹配amis公式\${}
11442
11452
  if(/\\\$\\\{([^}]*)\\\}/.test(arr[i])) {
11443
- arr[i] = currentAmis.evaluate(arr[i], api.data.$self);
11453
+ try{
11454
+ arr[i] = currentAmis.evaluate(arr[i], api.context);
11455
+ }catch(ex){
11456
+ console.error("运行lookup过滤公式时出现错误:",ex);
11457
+ }
11444
11458
  }
11445
11459
  }
11446
11460
  }
@@ -11848,6 +11862,7 @@ async function lookupToAmisSelect(field, readonly, ctx){
11848
11862
  var fieldFilters = ${JSON.stringify(field.filters)};
11849
11863
  var currentAmis = amisRequire('amis');
11850
11864
  //递归fieldFilters数组,检查每一个元素,判断若是公式,就仅把它解析
11865
+ debugger;
11851
11866
  function traverseNestedArray(arr) {
11852
11867
  for (let i = 0; i < arr.length; i++) {
11853
11868
  if (Array.isArray(arr[i])) {
@@ -11857,7 +11872,11 @@ async function lookupToAmisSelect(field, readonly, ctx){
11857
11872
  // 如果当前元素不是数组,则处理该元素
11858
11873
  // 下面正则用于匹配amis公式\${}
11859
11874
  if(/\\\$\\\{([^}]*)\\\}/.test(arr[i])) {
11860
- arr[i] = currentAmis.evaluate(arr[i], api.data.$self);
11875
+ try{
11876
+ arr[i] = currentAmis.evaluate(arr[i], api.context);
11877
+ }catch(ex){
11878
+ console.error("运行lookup过滤公式时出现错误:",ex);
11879
+ }
11861
11880
  }
11862
11881
  }
11863
11882
  }
@@ -12963,6 +12982,21 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
12963
12982
  type: getAmisStaticFieldType('url', readonly, field),
12964
12983
  static: readonly ? true : false
12965
12984
  };
12985
+ if(!readonly){
12986
+ // amis input-url控件不支持相对路径,这里支持下
12987
+ // 如果要使用amis原生input-url控件的默认的isUrl验证效果或自定义字段validations效果,配置字段的amis.validations属性即可,配置为null或空字符串则使用amis默认的isUrl效果
12988
+ let fieldAmisValidations = field.amis?.validations;
12989
+ if(typeof fieldAmisValidations === "undefined"){
12990
+ Object.assign(convertData, {
12991
+ "validations": {
12992
+ "matchRegexp": "^((http:\\/\\/|https:\\/\\/|ftp:\\/\\/|sftp:\\/\\/)+([^\\s\\/\\.]+(\\.[^\\s\\/\\.]+)+))*(\\/[^\\s\\.\\/]+)*$"
12993
+ },
12994
+ "validationErrors": {
12995
+ "matchRegexp": i18next.t('frontend_form_validation_failed_url')//"URL 格式不正确"
12996
+ }
12997
+ });
12998
+ }
12999
+ }
12966
13000
  if(readonly && field.show_as_qr){
12967
13001
  convertData = {
12968
13002
  type: "control",