@steedos-widgets/amis-lib 1.2.39-beta.1 → 1.2.40

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
@@ -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){
@@ -5237,24 +5243,51 @@ 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} = {}){
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) {
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 = "";
5253
- if(localListViewProps){
5257
+ if(localListViewProps && !isLookup){
5254
5258
  localListViewProps = JSON.parse(localListViewProps);
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;
@@ -5310,7 +5343,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {showDisplayAs =
5310
5343
  ],
5311
5344
  "size":8,
5312
5345
  "animation": true,
5313
- "visibleOn": "${isFieldsFilterEmpty == false}"
5346
+ "visibleOn": "${isFieldsFilterEmpty == false && isLookup != true}"
5314
5347
  },
5315
5348
  "align": "right",
5316
5349
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
@@ -5325,7 +5358,8 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {showDisplayAs =
5325
5358
  }
5326
5359
  }
5327
5360
  } : {},
5328
- getDisplayAsButton(mainObject?.name)
5361
+ getDisplayAsButton(mainObject?.name),
5362
+ getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName })
5329
5363
  ]
5330
5364
  }else {
5331
5365
  return [
@@ -5358,7 +5392,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {showDisplayAs =
5358
5392
  ],
5359
5393
  "size":8,
5360
5394
  "animation": true,
5361
- "visibleOn": "${isFieldsFilterEmpty == false}"
5395
+ "visibleOn": "${isFieldsFilterEmpty == false && isLookup != true}"
5362
5396
  },
5363
5397
  "align": "right",
5364
5398
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
@@ -5385,26 +5419,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {showDisplayAs =
5385
5419
  // getExportExcelToolbarButtonSchema(),
5386
5420
  mainObject?.permissions?.allowCreateListViews ? getSettingListviewToolbarButtonSchema() : {},
5387
5421
  getDisplayAsButton(mainObject?.name),
5388
- {
5389
- "type": "tooltip-wrapper",
5390
- "align": "right",
5391
- "title": "",
5392
- "content": "可模糊搜索字段:" + searchableFieldsLabel.join(","),
5393
- "placement": "bottom",
5394
- "tooltipTheme": "dark",
5395
- "trigger": "click",
5396
- "className": "mr-1",
5397
- "body": [
5398
- {
5399
- "type": "search-box",
5400
- "name": "__keywords",
5401
- "placeholder": "请输入关键字",
5402
- "value": crudKeywords,
5403
- "clearable": true,
5404
- "clearAndSubmit": true
5405
- }
5406
- ]
5407
- },
5422
+ getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName }),
5408
5423
  // {
5409
5424
  // "type": "drag-toggler",
5410
5425
  // "align": "right"
@@ -5755,8 +5770,8 @@ function getLookupSapceUserTreeSchema(){
5755
5770
  "style": {
5756
5771
  "max-height": "100%",
5757
5772
  "position": "absolute",
5758
- "left": "-220px",
5759
- "width": "210px",
5773
+ "left": "-330px",
5774
+ "width": "320px",
5760
5775
  "bottom": 0,
5761
5776
  "top": "0",
5762
5777
  "overflow": "auto",
@@ -5822,7 +5837,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
5822
5837
  })){
5823
5838
  i++;
5824
5839
  tableFields.push(field);
5825
- if(field.searchable){
5840
+ if(isFieldQuickSearchable(field, refObjectConfig.NAME_FIELD_KEY)){
5826
5841
  searchableFields.push(field.name);
5827
5842
  }
5828
5843
  }
@@ -5863,7 +5878,8 @@ async function lookupToAmisPicker(field, readonly, ctx){
5863
5878
  source.data.$term = "$term";
5864
5879
  source.data.$self = "$$";
5865
5880
 
5866
-
5881
+ let keywordsSearchBoxName = `__keywords_lookup__${field.name}__to__${refObjectConfig.name}`;
5882
+
5867
5883
  source.requestAdaptor = `
5868
5884
  const selfData = JSON.parse(JSON.stringify(api.data.$self));
5869
5885
  var filters = [];
@@ -5917,19 +5933,10 @@ async function lookupToAmisPicker(field, readonly, ctx){
5917
5933
  })
5918
5934
  }
5919
5935
 
5920
- if(selfData.__keywords && allowSearchFields){
5921
- const keywordsFilters = [];
5922
- allowSearchFields.forEach(function(key, index){
5923
- const keyValue = selfData.__keywords;
5924
- if(keyValue){
5925
- keywordsFilters.push([key, "contains", keyValue]);
5926
- if(index < allowSearchFields.length - 1){
5927
- keywordsFilters.push('or');
5928
- }
5929
- }
5930
- })
5936
+ var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.${keywordsSearchBoxName}, allowSearchFields);
5937
+ if(keywordsFilters && keywordsFilters.length > 0){
5931
5938
  filters.push(keywordsFilters);
5932
- };
5939
+ }
5933
5940
 
5934
5941
  var fieldFilters = ${JSON.stringify(field.filters)};
5935
5942
  if(fieldFilters && fieldFilters.length){
@@ -6041,13 +6048,13 @@ async function lookupToAmisPicker(field, readonly, ctx){
6041
6048
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user" && !isMobile){
6042
6049
  headerToolbarItems = getLookupSapceUserTreeSchema();
6043
6050
  pickerSchema["style"] = {
6044
- "margin-left":"220px",
6051
+ "margin-left":"330px",
6045
6052
  "min-height": "300px"
6046
6053
  };
6047
6054
  pickerSchema.className = pickerSchema.className || "" + " steedos-select-user";
6048
6055
  }
6049
6056
 
6050
- pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, ctx.formFactor, { headerToolbarItems });
6057
+ pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });
6051
6058
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
6052
6059
  if (isAllowCreate) {
6053
6060
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
@@ -6058,8 +6065,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
6058
6065
  pickerSchema.footerToolbar = refObjectConfig.enable_tree ? [] : getObjectFooterToolbar();
6059
6066
  if (ctx.filterVisible !== false) {
6060
6067
  pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
6068
+ ...ctx,
6061
6069
  isLookup: true,
6062
- ...ctx
6070
+ keywordsSearchBoxName
6063
6071
  });
6064
6072
  }
6065
6073
  pickerSchema.data = Object.assign({}, pickerSchema.data, {
@@ -6395,7 +6403,7 @@ async function lookupToAmis(field, readonly, ctx){
6395
6403
  }
6396
6404
 
6397
6405
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user"){
6398
- if(ctx.idsDependOn || field.amis){
6406
+ if(ctx.idsDependOn){
6399
6407
  // ids人员点选模式
6400
6408
  return await lookupToAmisIdsPicker(field, readonly, ctx);
6401
6409
  }
@@ -6770,6 +6778,7 @@ const getAmisFileSchema = (steedosField, readonly)=>{
6770
6778
  return readonly ? getAmisFileReadonlySchema(steedosField) : getAmisFileEditSchema(steedosField);
6771
6779
  };
6772
6780
 
6781
+ const QUICK_SEARCHABLE_FIELD_TYPES = ["text", "textarea", "autonumber", "url", "email"];
6773
6782
  const OMIT_FIELDS = ['created', 'created_by', 'modified', 'modified_by'];
6774
6783
  // const Lookup = require('./lookup');
6775
6784
 
@@ -7542,8 +7551,22 @@ if (typeof window != 'undefined') {
7542
7551
  window.isFieldTypeSearchable = isFieldTypeSearchable;
7543
7552
  }
7544
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
+
7545
7567
  var index = /*#__PURE__*/Object.freeze({
7546
7568
  __proto__: null,
7569
+ QUICK_SEARCHABLE_FIELD_TYPES: QUICK_SEARCHABLE_FIELD_TYPES,
7547
7570
  OMIT_FIELDS: OMIT_FIELDS,
7548
7571
  getBaseFields: getBaseFields,
7549
7572
  getAmisFieldType: getAmisFieldType,
@@ -7554,6 +7577,7 @@ var index = /*#__PURE__*/Object.freeze({
7554
7577
  convertSFieldToAmisField: convertSFieldToAmisField,
7555
7578
  getFieldSearchable: getFieldSearchable,
7556
7579
  isFieldTypeSearchable: isFieldTypeSearchable,
7580
+ isFieldQuickSearchable: isFieldQuickSearchable,
7557
7581
  getAmisStaticFieldType: getAmisStaticFieldType
7558
7582
  });
7559
7583
 
@@ -8330,8 +8354,9 @@ async function getTableApi(mainObject, fields, options){
8330
8354
  if(filter){
8331
8355
  baseFilters = filter;
8332
8356
  }
8333
- _$1.each(fields,function(field){
8334
- if(field.searchable){
8357
+
8358
+ _$1.each(fields, function (field) {
8359
+ if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
8335
8360
  searchableFields.push(field.name);
8336
8361
  }
8337
8362
  });
@@ -8459,19 +8484,10 @@ async function getTableApi(mainObject, fields, options){
8459
8484
  })
8460
8485
  }
8461
8486
 
8462
- if(selfData.__keywords && allowSearchFields){
8463
- const keywordsFilters = [];
8464
- allowSearchFields.forEach(function(key, index){
8465
- const keyValue = selfData.__keywords;
8466
- if(keyValue){
8467
- keywordsFilters.push([key, "contains", keyValue]);
8468
- if(index < allowSearchFields.length - 1){
8469
- keywordsFilters.push('or');
8470
- }
8471
- }
8472
- })
8487
+ var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.__keywords, allowSearchFields);
8488
+ if(keywordsFilters && keywordsFilters.length > 0){
8473
8489
  userFilters.push(keywordsFilters);
8474
- };
8490
+ }
8475
8491
 
8476
8492
  let filters = [];
8477
8493