@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.umd.js CHANGED
@@ -3309,6 +3309,7 @@
3309
3309
  }
3310
3310
  const btnSearchId = "btn_filter_form_search_" + new Date().getTime();
3311
3311
  const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
3312
+ const keywordsSearchBoxName = ctx.keywordsSearchBoxName || "__keywords";
3312
3313
  const onSearchScript = `
3313
3314
  const scope = event.context.scoped;
3314
3315
  var filterForm = scope.parent.parent.getComponents().find(function(n){
@@ -3394,6 +3395,11 @@
3394
3395
  }
3395
3396
  }
3396
3397
  }
3398
+ else{
3399
+ const keywordsSearchBoxName = "${keywordsSearchBoxName}";
3400
+ //lookup字段保留快速搜索条件
3401
+ removedValues[keywordsSearchBoxName] = filterFormValues[keywordsSearchBoxName];
3402
+ }
3397
3403
  filterForm.reset();
3398
3404
  listView.handleFilterSubmit(removedValues);
3399
3405
  const filterService = filterForm.context.getComponents().find(function(n){
@@ -5261,24 +5267,51 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5261
5267
  // }
5262
5268
  `;
5263
5269
 
5264
-
5265
- function getObjectHeaderToolbar(mainObject, fields, formFactor, {showDisplayAs = false, hiddenCount = false, headerToolbarItems, filterVisible = true} = {}){
5266
- // console.log(`getObjectHeaderToolbar====>`, filterVisible)
5267
- // console.log(`getObjectHeaderToolbar`, mainObject)
5270
+ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = "__keywords" } = {}){
5268
5271
  const searchableFieldsLabel = [];
5269
5272
  _.each(fields, function (field) {
5270
- if (field.searchable) {
5273
+ if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
5271
5274
  searchableFieldsLabel.push(field.label);
5272
5275
  }
5273
5276
  });
5277
+
5274
5278
  const listViewPropsStoreKey = location.pathname + "/crud";
5275
5279
  let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);
5276
5280
  let crudKeywords = "";
5277
- if(localListViewProps){
5281
+ if(localListViewProps && !isLookup){
5278
5282
  localListViewProps = JSON.parse(localListViewProps);
5279
5283
  crudKeywords = (localListViewProps && localListViewProps.__keywords) || "";
5280
5284
  }
5281
5285
 
5286
+ return {
5287
+ "type": "tooltip-wrapper",
5288
+ "align": "right",
5289
+ "title": "",
5290
+ "content": "可搜索字段:" + searchableFieldsLabel.join(","),
5291
+ "placement": "bottom",
5292
+ "tooltipTheme": "dark",
5293
+ "trigger": "click",
5294
+ "className": formFactor !== 'SMALL' ? "mr-1" : '',
5295
+ "visible": !!searchableFieldsLabel.length,
5296
+ "body": [
5297
+ {
5298
+ "type": "search-box",
5299
+ "name": keywordsSearchBoxName,
5300
+ "placeholder": "快速搜索",
5301
+ "value": crudKeywords,
5302
+ "clearable": true,
5303
+ "clearAndSubmit": true
5304
+ }
5305
+ ]
5306
+ }
5307
+ }
5308
+
5309
+ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
5310
+ showDisplayAs = false, hiddenCount = false, headerToolbarItems,
5311
+ filterVisible = true, isLookup = false, keywordsSearchBoxName } = {}){
5312
+ // console.log(`getObjectHeaderToolbar====>`, filterVisible)
5313
+ // console.log(`getObjectHeaderToolbar`, mainObject)
5314
+
5282
5315
  const isMobile = window.innerWidth < 768;
5283
5316
  if(isMobile){
5284
5317
  showDisplayAs = false;
@@ -5334,7 +5367,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5334
5367
  ],
5335
5368
  "size":8,
5336
5369
  "animation": true,
5337
- "visibleOn": "${isFieldsFilterEmpty == false}"
5370
+ "visibleOn": "${isFieldsFilterEmpty == false && isLookup != true}"
5338
5371
  },
5339
5372
  "align": "right",
5340
5373
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
@@ -5349,7 +5382,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5349
5382
  }
5350
5383
  }
5351
5384
  } : {},
5352
- getDisplayAsButton(mainObject?.name)
5385
+ getDisplayAsButton(mainObject?.name),
5386
+ getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName })
5353
5387
  ]
5354
5388
  }else {
5355
5389
  return [
@@ -5382,7 +5416,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5382
5416
  ],
5383
5417
  "size":8,
5384
5418
  "animation": true,
5385
- "visibleOn": "${isFieldsFilterEmpty == false}"
5419
+ "visibleOn": "${isFieldsFilterEmpty == false && isLookup != true}"
5386
5420
  },
5387
5421
  "align": "right",
5388
5422
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
@@ -5409,26 +5443,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5409
5443
  // getExportExcelToolbarButtonSchema(),
5410
5444
  mainObject?.permissions?.allowCreateListViews ? getSettingListviewToolbarButtonSchema() : {},
5411
5445
  getDisplayAsButton(mainObject?.name),
5412
- {
5413
- "type": "tooltip-wrapper",
5414
- "align": "right",
5415
- "title": "",
5416
- "content": "可模糊搜索字段:" + searchableFieldsLabel.join(","),
5417
- "placement": "bottom",
5418
- "tooltipTheme": "dark",
5419
- "trigger": "click",
5420
- "className": "mr-1",
5421
- "body": [
5422
- {
5423
- "type": "search-box",
5424
- "name": "__keywords",
5425
- "placeholder": "请输入关键字",
5426
- "value": crudKeywords,
5427
- "clearable": true,
5428
- "clearAndSubmit": true
5429
- }
5430
- ]
5431
- },
5446
+ getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName }),
5432
5447
  // {
5433
5448
  // "type": "drag-toggler",
5434
5449
  // "align": "right"
@@ -5779,8 +5794,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5779
5794
  "style": {
5780
5795
  "max-height": "100%",
5781
5796
  "position": "absolute",
5782
- "left": "-220px",
5783
- "width": "210px",
5797
+ "left": "-330px",
5798
+ "width": "320px",
5784
5799
  "bottom": 0,
5785
5800
  "top": "0",
5786
5801
  "overflow": "auto",
@@ -5846,7 +5861,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5846
5861
  })){
5847
5862
  i++;
5848
5863
  tableFields.push(field);
5849
- if(field.searchable){
5864
+ if(isFieldQuickSearchable(field, refObjectConfig.NAME_FIELD_KEY)){
5850
5865
  searchableFields.push(field.name);
5851
5866
  }
5852
5867
  }
@@ -5887,7 +5902,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5887
5902
  source.data.$term = "$term";
5888
5903
  source.data.$self = "$$";
5889
5904
 
5890
-
5905
+ let keywordsSearchBoxName = `__keywords_lookup__${field.name}__to__${refObjectConfig.name}`;
5906
+
5891
5907
  source.requestAdaptor = `
5892
5908
  const selfData = JSON.parse(JSON.stringify(api.data.$self));
5893
5909
  var filters = [];
@@ -5941,19 +5957,10 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5941
5957
  })
5942
5958
  }
5943
5959
 
5944
- if(selfData.__keywords && allowSearchFields){
5945
- const keywordsFilters = [];
5946
- allowSearchFields.forEach(function(key, index){
5947
- const keyValue = selfData.__keywords;
5948
- if(keyValue){
5949
- keywordsFilters.push([key, "contains", keyValue]);
5950
- if(index < allowSearchFields.length - 1){
5951
- keywordsFilters.push('or');
5952
- }
5953
- }
5954
- })
5960
+ var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.${keywordsSearchBoxName}, allowSearchFields);
5961
+ if(keywordsFilters && keywordsFilters.length > 0){
5955
5962
  filters.push(keywordsFilters);
5956
- };
5963
+ }
5957
5964
 
5958
5965
  var fieldFilters = ${JSON.stringify(field.filters)};
5959
5966
  if(fieldFilters && fieldFilters.length){
@@ -6065,13 +6072,13 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6065
6072
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user" && !isMobile){
6066
6073
  headerToolbarItems = getLookupSapceUserTreeSchema();
6067
6074
  pickerSchema["style"] = {
6068
- "margin-left":"220px",
6075
+ "margin-left":"330px",
6069
6076
  "min-height": "300px"
6070
6077
  };
6071
6078
  pickerSchema.className = pickerSchema.className || "" + " steedos-select-user";
6072
6079
  }
6073
6080
 
6074
- pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, ctx.formFactor, { headerToolbarItems });
6081
+ pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });
6075
6082
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
6076
6083
  if (isAllowCreate) {
6077
6084
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
@@ -6082,8 +6089,9 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6082
6089
  pickerSchema.footerToolbar = refObjectConfig.enable_tree ? [] : getObjectFooterToolbar();
6083
6090
  if (ctx.filterVisible !== false) {
6084
6091
  pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
6092
+ ...ctx,
6085
6093
  isLookup: true,
6086
- ...ctx
6094
+ keywordsSearchBoxName
6087
6095
  });
6088
6096
  }
6089
6097
  pickerSchema.data = Object.assign({}, pickerSchema.data, {
@@ -6419,7 +6427,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6419
6427
  }
6420
6428
 
6421
6429
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user"){
6422
- if(ctx.idsDependOn || field.amis){
6430
+ if(ctx.idsDependOn){
6423
6431
  // ids人员点选模式
6424
6432
  return await lookupToAmisIdsPicker(field, readonly, ctx);
6425
6433
  }
@@ -6794,6 +6802,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
6794
6802
  return readonly ? getAmisFileReadonlySchema(steedosField) : getAmisFileEditSchema(steedosField);
6795
6803
  };
6796
6804
 
6805
+ const QUICK_SEARCHABLE_FIELD_TYPES = ["text", "textarea", "autonumber", "url", "email"];
6797
6806
  const OMIT_FIELDS = ['created', 'created_by', 'modified', 'modified_by'];
6798
6807
  // const Lookup = require('./lookup');
6799
6808
 
@@ -7566,8 +7575,22 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7566
7575
  window.isFieldTypeSearchable = isFieldTypeSearchable;
7567
7576
  }
7568
7577
 
7578
+
7579
+ function isFieldQuickSearchable(field, nameFieldKey) {
7580
+ let fieldSearchable = field.searchable;
7581
+ if(fieldSearchable !== false && field.name === nameFieldKey){
7582
+ // 对象上名称字段的searchable默认认为是true
7583
+ fieldSearchable = true;
7584
+ }
7585
+ if (fieldSearchable && QUICK_SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1) {
7586
+ return true;
7587
+ }
7588
+ return false;
7589
+ }
7590
+
7569
7591
  var index = /*#__PURE__*/Object.freeze({
7570
7592
  __proto__: null,
7593
+ QUICK_SEARCHABLE_FIELD_TYPES: QUICK_SEARCHABLE_FIELD_TYPES,
7571
7594
  OMIT_FIELDS: OMIT_FIELDS,
7572
7595
  getBaseFields: getBaseFields,
7573
7596
  getAmisFieldType: getAmisFieldType,
@@ -7578,6 +7601,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
7578
7601
  convertSFieldToAmisField: convertSFieldToAmisField,
7579
7602
  getFieldSearchable: getFieldSearchable,
7580
7603
  isFieldTypeSearchable: isFieldTypeSearchable,
7604
+ isFieldQuickSearchable: isFieldQuickSearchable,
7581
7605
  getAmisStaticFieldType: getAmisStaticFieldType
7582
7606
  });
7583
7607
 
@@ -8354,8 +8378,9 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
8354
8378
  if(filter){
8355
8379
  baseFilters = filter;
8356
8380
  }
8357
- ___namespace.each(fields,function(field){
8358
- if(field.searchable){
8381
+
8382
+ ___namespace.each(fields, function (field) {
8383
+ if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
8359
8384
  searchableFields.push(field.name);
8360
8385
  }
8361
8386
  });
@@ -8483,19 +8508,10 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
8483
8508
  })
8484
8509
  }
8485
8510
 
8486
- if(selfData.__keywords && allowSearchFields){
8487
- const keywordsFilters = [];
8488
- allowSearchFields.forEach(function(key, index){
8489
- const keyValue = selfData.__keywords;
8490
- if(keyValue){
8491
- keywordsFilters.push([key, "contains", keyValue]);
8492
- if(index < allowSearchFields.length - 1){
8493
- keywordsFilters.push('or');
8494
- }
8495
- }
8496
- })
8511
+ var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.__keywords, allowSearchFields);
8512
+ if(keywordsFilters && keywordsFilters.length > 0){
8497
8513
  userFilters.push(keywordsFilters);
8498
- };
8514
+ }
8499
8515
 
8500
8516
  let filters = [];
8501
8517