@steedos-widgets/amis-lib 1.2.39 → 1.2.41

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
@@ -678,7 +678,7 @@ async function getFieldsTemplate(fields, display){
678
678
  let expandFieldsQuery = "";
679
679
  if(expandFields.length > 0){
680
680
  _$1.each(expandFields, function(field){
681
- expandFieldsQuery = expandFieldsQuery + `${field.expandInfo.fieldName}:${field.expandInfo.fieldName}__expand{${field.expandInfo.displayName}}`;
681
+ expandFieldsQuery = expandFieldsQuery + `${field.expandInfo.fieldName}__expand{${field.expandInfo.displayName}}`;
682
682
  });
683
683
  }
684
684
 
@@ -3285,6 +3285,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3285
3285
  }
3286
3286
  const btnSearchId = "btn_filter_form_search_" + new Date().getTime();
3287
3287
  const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
3288
+ const keywordsSearchBoxName = ctx.keywordsSearchBoxName || "__keywords";
3288
3289
  const onSearchScript = `
3289
3290
  const scope = event.context.scoped;
3290
3291
  var filterForm = scope.parent.parent.getComponents().find(function(n){
@@ -3370,6 +3371,11 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3370
3371
  }
3371
3372
  }
3372
3373
  }
3374
+ else{
3375
+ const keywordsSearchBoxName = "${keywordsSearchBoxName}";
3376
+ //lookup字段保留快速搜索条件
3377
+ removedValues[keywordsSearchBoxName] = filterFormValues[keywordsSearchBoxName];
3378
+ }
3373
3379
  filterForm.reset();
3374
3380
  listView.handleFilterSubmit(removedValues);
3375
3381
  const filterService = filterForm.context.getComponents().find(function(n){
@@ -3434,7 +3440,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3434
3440
  });
3435
3441
  // 有过滤条件时只显示搜索按钮上的红点,不自动展开搜索栏
3436
3442
  if(!_.isEmpty(omitedEmptyFormValue)){
3437
- let crudService = SteedosUI.getRef(data.$scopeId).getComponentById("service_listview_" + data.objectName)
3443
+ let crudService = SteedosUI.getRef(data.$scopeId).parent.getComponentById("service_listview_" + data.objectName)
3438
3444
  crudService && crudService.setData({isFieldsFilterEmpty: false});
3439
3445
  // setData({ showFieldsFilter: true });//自动展开搜索栏
3440
3446
  }
@@ -5237,16 +5243,14 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5237
5243
  // }
5238
5244
  `;
5239
5245
 
5240
-
5241
- function getObjectHeaderToolbar(mainObject, fields, formFactor, { showDisplayAs = false, hiddenCount = false, headerToolbarItems, filterVisible = true, isLookup = false } = {}){
5242
- // console.log(`getObjectHeaderToolbar====>`, filterVisible)
5243
- // console.log(`getObjectHeaderToolbar`, mainObject)
5246
+ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = "__keywords" } = {}){
5244
5247
  const searchableFieldsLabel = [];
5245
5248
  _.each(fields, function (field) {
5246
- if (field.searchable && SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1) {
5249
+ if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
5247
5250
  searchableFieldsLabel.push(field.label);
5248
5251
  }
5249
5252
  });
5253
+
5250
5254
  const listViewPropsStoreKey = location.pathname + "/crud";
5251
5255
  let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);
5252
5256
  let crudKeywords = "";
@@ -5255,6 +5259,35 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, { showDisplayAs
5255
5259
  crudKeywords = (localListViewProps && localListViewProps.__keywords) || "";
5256
5260
  }
5257
5261
 
5262
+ return {
5263
+ "type": "tooltip-wrapper",
5264
+ "align": "right",
5265
+ "title": "",
5266
+ "content": "可搜索字段:" + searchableFieldsLabel.join(","),
5267
+ "placement": "bottom",
5268
+ "tooltipTheme": "dark",
5269
+ "trigger": "click",
5270
+ "className": formFactor !== 'SMALL' ? "mr-1" : '',
5271
+ "visible": !!searchableFieldsLabel.length,
5272
+ "body": [
5273
+ {
5274
+ "type": "search-box",
5275
+ "name": keywordsSearchBoxName,
5276
+ "placeholder": "快速搜索",
5277
+ "value": crudKeywords,
5278
+ "clearable": true,
5279
+ "clearAndSubmit": true
5280
+ }
5281
+ ]
5282
+ }
5283
+ }
5284
+
5285
+ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
5286
+ showDisplayAs = false, hiddenCount = false, headerToolbarItems,
5287
+ filterVisible = true, isLookup = false, keywordsSearchBoxName } = {}){
5288
+ // console.log(`getObjectHeaderToolbar====>`, filterVisible)
5289
+ // console.log(`getObjectHeaderToolbar`, mainObject)
5290
+
5258
5291
  const isMobile = window.innerWidth < 768;
5259
5292
  if(isMobile){
5260
5293
  showDisplayAs = false;
@@ -5326,26 +5359,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, { showDisplayAs
5326
5359
  }
5327
5360
  } : {},
5328
5361
  getDisplayAsButton(mainObject?.name),
5329
- {
5330
- "type": "tooltip-wrapper",
5331
- "align": "right",
5332
- "title": "",
5333
- "content": "可搜索字段:" + searchableFieldsLabel.join(","),
5334
- "placement": "bottom",
5335
- "tooltipTheme": "dark",
5336
- "trigger": "click",
5337
- // "className": "mr-1",
5338
- "body": [
5339
- {
5340
- "type": "search-box",
5341
- "name": "__keywords",
5342
- "placeholder": "请输入关键字",
5343
- "value": crudKeywords,
5344
- "clearable": true,
5345
- "clearAndSubmit": true
5346
- }
5347
- ]
5348
- },
5362
+ getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName })
5349
5363
  ]
5350
5364
  }else {
5351
5365
  return [
@@ -5405,26 +5419,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, { showDisplayAs
5405
5419
  // getExportExcelToolbarButtonSchema(),
5406
5420
  mainObject?.permissions?.allowCreateListViews ? getSettingListviewToolbarButtonSchema() : {},
5407
5421
  getDisplayAsButton(mainObject?.name),
5408
- {
5409
- "type": "tooltip-wrapper",
5410
- "align": "right",
5411
- "title": "",
5412
- "content": "可搜索字段:" + searchableFieldsLabel.join(","),
5413
- "placement": "bottom",
5414
- "tooltipTheme": "dark",
5415
- "trigger": "click",
5416
- "className": "mr-1",
5417
- "body": [
5418
- {
5419
- "type": "search-box",
5420
- "name": "__keywords",
5421
- "placeholder": "请输入关键字",
5422
- "value": crudKeywords,
5423
- "clearable": true,
5424
- "clearAndSubmit": true
5425
- }
5426
- ]
5427
- },
5422
+ getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName }),
5428
5423
  // {
5429
5424
  // "type": "drag-toggler",
5430
5425
  // "align": "right"
@@ -5842,7 +5837,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
5842
5837
  })){
5843
5838
  i++;
5844
5839
  tableFields.push(field);
5845
- if(field.searchable && SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1){
5840
+ if(isFieldQuickSearchable(field, refObjectConfig.NAME_FIELD_KEY)){
5846
5841
  searchableFields.push(field.name);
5847
5842
  }
5848
5843
  }
@@ -5883,7 +5878,8 @@ async function lookupToAmisPicker(field, readonly, ctx){
5883
5878
  source.data.$term = "$term";
5884
5879
  source.data.$self = "$$";
5885
5880
 
5886
-
5881
+ let keywordsSearchBoxName = `__keywords_lookup__${field.name}__to__${refObjectConfig.name}`;
5882
+
5887
5883
  source.requestAdaptor = `
5888
5884
  const selfData = JSON.parse(JSON.stringify(api.data.$self));
5889
5885
  var filters = [];
@@ -5937,19 +5933,10 @@ async function lookupToAmisPicker(field, readonly, ctx){
5937
5933
  })
5938
5934
  }
5939
5935
 
5940
- if(selfData.__keywords && allowSearchFields){
5941
- const keywordsFilters = [];
5942
- allowSearchFields.forEach(function(key, index){
5943
- const keyValue = selfData.__keywords;
5944
- if(keyValue){
5945
- keywordsFilters.push([key, "contains", keyValue]);
5946
- if(index < allowSearchFields.length - 1){
5947
- keywordsFilters.push('or');
5948
- }
5949
- }
5950
- })
5936
+ var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.${keywordsSearchBoxName}, allowSearchFields);
5937
+ if(keywordsFilters && keywordsFilters.length > 0){
5951
5938
  filters.push(keywordsFilters);
5952
- };
5939
+ }
5953
5940
 
5954
5941
  var fieldFilters = ${JSON.stringify(field.filters)};
5955
5942
  if(fieldFilters && fieldFilters.length){
@@ -6067,7 +6054,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
6067
6054
  pickerSchema.className = pickerSchema.className || "" + " steedos-select-user";
6068
6055
  }
6069
6056
 
6070
- pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true });
6057
+ pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });
6071
6058
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
6072
6059
  if (isAllowCreate) {
6073
6060
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
@@ -6078,8 +6065,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
6078
6065
  pickerSchema.footerToolbar = refObjectConfig.enable_tree ? [] : getObjectFooterToolbar();
6079
6066
  if (ctx.filterVisible !== false) {
6080
6067
  pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
6068
+ ...ctx,
6081
6069
  isLookup: true,
6082
- ...ctx
6070
+ keywordsSearchBoxName
6083
6071
  });
6084
6072
  }
6085
6073
  pickerSchema.data = Object.assign({}, pickerSchema.data, {
@@ -6415,7 +6403,7 @@ async function lookupToAmis(field, readonly, ctx){
6415
6403
  }
6416
6404
 
6417
6405
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user"){
6418
- if(ctx.idsDependOn || field.amis){
6406
+ if(ctx.idsDependOn){
6419
6407
  // ids人员点选模式
6420
6408
  return await lookupToAmisIdsPicker(field, readonly, ctx);
6421
6409
  }
@@ -6790,7 +6778,7 @@ const getAmisFileSchema = (steedosField, readonly)=>{
6790
6778
  return readonly ? getAmisFileReadonlySchema(steedosField) : getAmisFileEditSchema(steedosField);
6791
6779
  };
6792
6780
 
6793
- const SEARCHABLE_FIELD_TYPES = ["text", "textarea", "autonumber", "url", "email"];
6781
+ const QUICK_SEARCHABLE_FIELD_TYPES = ["text", "textarea", "autonumber", "url", "email"];
6794
6782
  const OMIT_FIELDS = ['created', 'created_by', 'modified', 'modified_by'];
6795
6783
  // const Lookup = require('./lookup');
6796
6784
 
@@ -7563,9 +7551,22 @@ if (typeof window != 'undefined') {
7563
7551
  window.isFieldTypeSearchable = isFieldTypeSearchable;
7564
7552
  }
7565
7553
 
7554
+
7555
+ function isFieldQuickSearchable(field, nameFieldKey) {
7556
+ let fieldSearchable = field.searchable;
7557
+ if(fieldSearchable !== false && field.name === nameFieldKey){
7558
+ // 对象上名称字段的searchable默认认为是true
7559
+ fieldSearchable = true;
7560
+ }
7561
+ if (fieldSearchable && QUICK_SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1) {
7562
+ return true;
7563
+ }
7564
+ return false;
7565
+ }
7566
+
7566
7567
  var index = /*#__PURE__*/Object.freeze({
7567
7568
  __proto__: null,
7568
- SEARCHABLE_FIELD_TYPES: SEARCHABLE_FIELD_TYPES,
7569
+ QUICK_SEARCHABLE_FIELD_TYPES: QUICK_SEARCHABLE_FIELD_TYPES,
7569
7570
  OMIT_FIELDS: OMIT_FIELDS,
7570
7571
  getBaseFields: getBaseFields,
7571
7572
  getAmisFieldType: getAmisFieldType,
@@ -7576,6 +7577,7 @@ var index = /*#__PURE__*/Object.freeze({
7576
7577
  convertSFieldToAmisField: convertSFieldToAmisField,
7577
7578
  getFieldSearchable: getFieldSearchable,
7578
7579
  isFieldTypeSearchable: isFieldTypeSearchable,
7580
+ isFieldQuickSearchable: isFieldQuickSearchable,
7579
7581
  getAmisStaticFieldType: getAmisStaticFieldType
7580
7582
  });
7581
7583
 
@@ -8352,8 +8354,9 @@ async function getTableApi(mainObject, fields, options){
8352
8354
  if(filter){
8353
8355
  baseFilters = filter;
8354
8356
  }
8355
- _$1.each(fields,function(field){
8356
- if(field.searchable && SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1){
8357
+
8358
+ _$1.each(fields, function (field) {
8359
+ if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
8357
8360
  searchableFields.push(field.name);
8358
8361
  }
8359
8362
  });
@@ -8481,19 +8484,10 @@ async function getTableApi(mainObject, fields, options){
8481
8484
  })
8482
8485
  }
8483
8486
 
8484
- if(selfData.__keywords && allowSearchFields){
8485
- const keywordsFilters = [];
8486
- allowSearchFields.forEach(function(key, index){
8487
- const keyValue = selfData.__keywords;
8488
- if(keyValue){
8489
- keywordsFilters.push([key, "contains", keyValue]);
8490
- if(index < allowSearchFields.length - 1){
8491
- keywordsFilters.push('or');
8492
- }
8493
- }
8494
- })
8487
+ var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.__keywords, allowSearchFields);
8488
+ if(keywordsFilters && keywordsFilters.length > 0){
8495
8489
  userFilters.push(keywordsFilters);
8496
- };
8490
+ }
8497
8491
 
8498
8492
  let filters = [];
8499
8493
 
@@ -9355,6 +9349,39 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
9355
9349
  });
9356
9350
  `;
9357
9351
 
9352
+ const onEventClickScript = `
9353
+ const data = event.data;
9354
+ const eventData = data.event;
9355
+ const appId = data.appId;
9356
+ const objectName = data.objectName;
9357
+ const eventId = data.event && data.event.id;
9358
+ doAction({
9359
+ "actionType": "link",
9360
+ "args": {
9361
+ "link": "/app/" + appId + "/" + objectName + "/view/" + eventId
9362
+ }
9363
+ });
9364
+ // doAction({
9365
+ // "actionType": "dialog",
9366
+ // "dialog": {
9367
+ // "type": "dialog",
9368
+ // "title": "",
9369
+ // "body": [
9370
+ // {
9371
+ // "type": "steedos-record-detail",
9372
+ // "objectApiName": "\${objectName}",
9373
+ // "recordId": data.event && data.event.id
9374
+ // }
9375
+ // ],
9376
+ // "closeOnEsc": false,
9377
+ // "closeOnOutside": false,
9378
+ // "showCloseButton": true,
9379
+ // "size": "lg",
9380
+ // "actions": []
9381
+ // }
9382
+ // });
9383
+ `;
9384
+
9358
9385
  const recordId = "${event.id}";
9359
9386
  const recordPermissionsApi = getCalendarRecordPermissionsApi(objectSchema, recordId);
9360
9387
  const recordSaveApi = getCalendarRecordSaveApi(objectSchema, calendarOptions);
@@ -9400,11 +9427,16 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
9400
9427
  "weight": 0,
9401
9428
  "actions": [
9402
9429
  {
9403
- "actionType": "link",
9404
- "args": {
9405
- "link": "/app/${appId}/${objectName}/view/${event.id}"
9406
- }
9407
- }
9430
+ "actionType": "custom",
9431
+ "script": onEventClickScript
9432
+ },
9433
+ // amis 升级到 3.2后,以下的"actionType": "link"方式拿不到appId和objectName了
9434
+ // {
9435
+ // "actionType": "link",
9436
+ // "args": {
9437
+ // "link": "/app/${appId}/${objectName}/view/${event.id}"
9438
+ // }
9439
+ // }
9408
9440
  ]
9409
9441
  },
9410
9442
  "eventAdd": {
@@ -10571,8 +10603,8 @@ async function getRelatedListSchema(
10571
10603
  /*
10572
10604
  * @Author: baozhoutao@steedos.com
10573
10605
  * @Date: 2022-07-05 15:55:39
10574
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
10575
- * @LastEditTime: 2023-08-04 12:27:48
10606
+ * @LastEditors: baozhoutao@steedos.com
10607
+ * @LastEditTime: 2023-08-17 18:03:51
10576
10608
  * @Description:
10577
10609
  */
10578
10610
 
@@ -10943,7 +10975,7 @@ async function getTableSchema(
10943
10975
  if(filedInfo && (filedInfo.type === 'lookup' || filedInfo.type === 'master_detail') && isString(filedInfo.reference_to) ){
10944
10976
  const rfUiSchema = await getUISchema(filedInfo.reference_to);
10945
10977
  const rfFieldInfo = rfUiSchema.fields[displayName];
10946
- fields.push(Object.assign({}, rfFieldInfo, {name: column, expand: true, expandInfo: {fieldName, displayName}}));
10978
+ fields.push(Object.assign({}, rfFieldInfo, {name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: {fieldName, displayName}}));
10947
10979
  }
10948
10980
  }else {
10949
10981
  if(uiSchema.fields[column]){
@@ -10959,7 +10991,7 @@ async function getTableSchema(
10959
10991
  const rfUiSchema = await getUISchema(filedInfo.reference_to);
10960
10992
  const rfFieldInfo = rfUiSchema.fields[displayName];
10961
10993
  fields.push(Object.assign({}, rfFieldInfo,
10962
- {name: column.field, expand: true, expandInfo: {fieldName, displayName}},
10994
+ {name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: {fieldName, displayName}},
10963
10995
  {
10964
10996
  width: column.width,
10965
10997
  wrap: column.wrap, // wrap = true 是没效果的