@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.cjs.js CHANGED
@@ -3312,6 +3312,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3312
3312
  }
3313
3313
  const btnSearchId = "btn_filter_form_search_" + new Date().getTime();
3314
3314
  const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
3315
+ const keywordsSearchBoxName = ctx.keywordsSearchBoxName || "__keywords";
3315
3316
  const onSearchScript = `
3316
3317
  const scope = event.context.scoped;
3317
3318
  var filterForm = scope.parent.parent.getComponents().find(function(n){
@@ -3397,6 +3398,11 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3397
3398
  }
3398
3399
  }
3399
3400
  }
3401
+ else{
3402
+ const keywordsSearchBoxName = "${keywordsSearchBoxName}";
3403
+ //lookup字段保留快速搜索条件
3404
+ removedValues[keywordsSearchBoxName] = filterFormValues[keywordsSearchBoxName];
3405
+ }
3400
3406
  filterForm.reset();
3401
3407
  listView.handleFilterSubmit(removedValues);
3402
3408
  const filterService = filterForm.context.getComponents().find(function(n){
@@ -5264,24 +5270,51 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5264
5270
  // }
5265
5271
  `;
5266
5272
 
5267
-
5268
- function getObjectHeaderToolbar(mainObject, fields, formFactor, {showDisplayAs = false, hiddenCount = false, headerToolbarItems, filterVisible = true} = {}){
5269
- // console.log(`getObjectHeaderToolbar====>`, filterVisible)
5270
- // console.log(`getObjectHeaderToolbar`, mainObject)
5273
+ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = "__keywords" } = {}){
5271
5274
  const searchableFieldsLabel = [];
5272
5275
  _.each(fields, function (field) {
5273
- if (field.searchable) {
5276
+ if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
5274
5277
  searchableFieldsLabel.push(field.label);
5275
5278
  }
5276
5279
  });
5280
+
5277
5281
  const listViewPropsStoreKey = location.pathname + "/crud";
5278
5282
  let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);
5279
5283
  let crudKeywords = "";
5280
- if(localListViewProps){
5284
+ if(localListViewProps && !isLookup){
5281
5285
  localListViewProps = JSON.parse(localListViewProps);
5282
5286
  crudKeywords = (localListViewProps && localListViewProps.__keywords) || "";
5283
5287
  }
5284
5288
 
5289
+ return {
5290
+ "type": "tooltip-wrapper",
5291
+ "align": "right",
5292
+ "title": "",
5293
+ "content": "可搜索字段:" + searchableFieldsLabel.join(","),
5294
+ "placement": "bottom",
5295
+ "tooltipTheme": "dark",
5296
+ "trigger": "click",
5297
+ "className": formFactor !== 'SMALL' ? "mr-1" : '',
5298
+ "visible": !!searchableFieldsLabel.length,
5299
+ "body": [
5300
+ {
5301
+ "type": "search-box",
5302
+ "name": keywordsSearchBoxName,
5303
+ "placeholder": "快速搜索",
5304
+ "value": crudKeywords,
5305
+ "clearable": true,
5306
+ "clearAndSubmit": true
5307
+ }
5308
+ ]
5309
+ }
5310
+ }
5311
+
5312
+ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
5313
+ showDisplayAs = false, hiddenCount = false, headerToolbarItems,
5314
+ filterVisible = true, isLookup = false, keywordsSearchBoxName } = {}){
5315
+ // console.log(`getObjectHeaderToolbar====>`, filterVisible)
5316
+ // console.log(`getObjectHeaderToolbar`, mainObject)
5317
+
5285
5318
  const isMobile = window.innerWidth < 768;
5286
5319
  if(isMobile){
5287
5320
  showDisplayAs = false;
@@ -5337,7 +5370,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {showDisplayAs =
5337
5370
  ],
5338
5371
  "size":8,
5339
5372
  "animation": true,
5340
- "visibleOn": "${isFieldsFilterEmpty == false}"
5373
+ "visibleOn": "${isFieldsFilterEmpty == false && isLookup != true}"
5341
5374
  },
5342
5375
  "align": "right",
5343
5376
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
@@ -5352,7 +5385,8 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {showDisplayAs =
5352
5385
  }
5353
5386
  }
5354
5387
  } : {},
5355
- getDisplayAsButton(mainObject?.name)
5388
+ getDisplayAsButton(mainObject?.name),
5389
+ getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName })
5356
5390
  ]
5357
5391
  }else {
5358
5392
  return [
@@ -5385,7 +5419,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {showDisplayAs =
5385
5419
  ],
5386
5420
  "size":8,
5387
5421
  "animation": true,
5388
- "visibleOn": "${isFieldsFilterEmpty == false}"
5422
+ "visibleOn": "${isFieldsFilterEmpty == false && isLookup != true}"
5389
5423
  },
5390
5424
  "align": "right",
5391
5425
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
@@ -5412,26 +5446,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {showDisplayAs =
5412
5446
  // getExportExcelToolbarButtonSchema(),
5413
5447
  mainObject?.permissions?.allowCreateListViews ? getSettingListviewToolbarButtonSchema() : {},
5414
5448
  getDisplayAsButton(mainObject?.name),
5415
- {
5416
- "type": "tooltip-wrapper",
5417
- "align": "right",
5418
- "title": "",
5419
- "content": "可模糊搜索字段:" + searchableFieldsLabel.join(","),
5420
- "placement": "bottom",
5421
- "tooltipTheme": "dark",
5422
- "trigger": "click",
5423
- "className": "mr-1",
5424
- "body": [
5425
- {
5426
- "type": "search-box",
5427
- "name": "__keywords",
5428
- "placeholder": "请输入关键字",
5429
- "value": crudKeywords,
5430
- "clearable": true,
5431
- "clearAndSubmit": true
5432
- }
5433
- ]
5434
- },
5449
+ getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName }),
5435
5450
  // {
5436
5451
  // "type": "drag-toggler",
5437
5452
  // "align": "right"
@@ -5782,8 +5797,8 @@ function getLookupSapceUserTreeSchema(){
5782
5797
  "style": {
5783
5798
  "max-height": "100%",
5784
5799
  "position": "absolute",
5785
- "left": "-220px",
5786
- "width": "210px",
5800
+ "left": "-330px",
5801
+ "width": "320px",
5787
5802
  "bottom": 0,
5788
5803
  "top": "0",
5789
5804
  "overflow": "auto",
@@ -5849,7 +5864,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
5849
5864
  })){
5850
5865
  i++;
5851
5866
  tableFields.push(field);
5852
- if(field.searchable){
5867
+ if(isFieldQuickSearchable(field, refObjectConfig.NAME_FIELD_KEY)){
5853
5868
  searchableFields.push(field.name);
5854
5869
  }
5855
5870
  }
@@ -5890,7 +5905,8 @@ async function lookupToAmisPicker(field, readonly, ctx){
5890
5905
  source.data.$term = "$term";
5891
5906
  source.data.$self = "$$";
5892
5907
 
5893
-
5908
+ let keywordsSearchBoxName = `__keywords_lookup__${field.name}__to__${refObjectConfig.name}`;
5909
+
5894
5910
  source.requestAdaptor = `
5895
5911
  const selfData = JSON.parse(JSON.stringify(api.data.$self));
5896
5912
  var filters = [];
@@ -5944,19 +5960,10 @@ async function lookupToAmisPicker(field, readonly, ctx){
5944
5960
  })
5945
5961
  }
5946
5962
 
5947
- if(selfData.__keywords && allowSearchFields){
5948
- const keywordsFilters = [];
5949
- allowSearchFields.forEach(function(key, index){
5950
- const keyValue = selfData.__keywords;
5951
- if(keyValue){
5952
- keywordsFilters.push([key, "contains", keyValue]);
5953
- if(index < allowSearchFields.length - 1){
5954
- keywordsFilters.push('or');
5955
- }
5956
- }
5957
- })
5963
+ var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.${keywordsSearchBoxName}, allowSearchFields);
5964
+ if(keywordsFilters && keywordsFilters.length > 0){
5958
5965
  filters.push(keywordsFilters);
5959
- };
5966
+ }
5960
5967
 
5961
5968
  var fieldFilters = ${JSON.stringify(field.filters)};
5962
5969
  if(fieldFilters && fieldFilters.length){
@@ -6068,13 +6075,13 @@ async function lookupToAmisPicker(field, readonly, ctx){
6068
6075
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user" && !isMobile){
6069
6076
  headerToolbarItems = getLookupSapceUserTreeSchema();
6070
6077
  pickerSchema["style"] = {
6071
- "margin-left":"220px",
6078
+ "margin-left":"330px",
6072
6079
  "min-height": "300px"
6073
6080
  };
6074
6081
  pickerSchema.className = pickerSchema.className || "" + " steedos-select-user";
6075
6082
  }
6076
6083
 
6077
- pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, ctx.formFactor, { headerToolbarItems });
6084
+ pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });
6078
6085
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
6079
6086
  if (isAllowCreate) {
6080
6087
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
@@ -6085,8 +6092,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
6085
6092
  pickerSchema.footerToolbar = refObjectConfig.enable_tree ? [] : getObjectFooterToolbar();
6086
6093
  if (ctx.filterVisible !== false) {
6087
6094
  pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
6095
+ ...ctx,
6088
6096
  isLookup: true,
6089
- ...ctx
6097
+ keywordsSearchBoxName
6090
6098
  });
6091
6099
  }
6092
6100
  pickerSchema.data = Object.assign({}, pickerSchema.data, {
@@ -6422,7 +6430,7 @@ async function lookupToAmis(field, readonly, ctx){
6422
6430
  }
6423
6431
 
6424
6432
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user"){
6425
- if(ctx.idsDependOn || field.amis){
6433
+ if(ctx.idsDependOn){
6426
6434
  // ids人员点选模式
6427
6435
  return await lookupToAmisIdsPicker(field, readonly, ctx);
6428
6436
  }
@@ -6797,6 +6805,7 @@ const getAmisFileSchema = (steedosField, readonly)=>{
6797
6805
  return readonly ? getAmisFileReadonlySchema(steedosField) : getAmisFileEditSchema(steedosField);
6798
6806
  };
6799
6807
 
6808
+ const QUICK_SEARCHABLE_FIELD_TYPES = ["text", "textarea", "autonumber", "url", "email"];
6800
6809
  const OMIT_FIELDS = ['created', 'created_by', 'modified', 'modified_by'];
6801
6810
  // const Lookup = require('./lookup');
6802
6811
 
@@ -7569,8 +7578,22 @@ if (typeof window != 'undefined') {
7569
7578
  window.isFieldTypeSearchable = isFieldTypeSearchable;
7570
7579
  }
7571
7580
 
7581
+
7582
+ function isFieldQuickSearchable(field, nameFieldKey) {
7583
+ let fieldSearchable = field.searchable;
7584
+ if(fieldSearchable !== false && field.name === nameFieldKey){
7585
+ // 对象上名称字段的searchable默认认为是true
7586
+ fieldSearchable = true;
7587
+ }
7588
+ if (fieldSearchable && QUICK_SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1) {
7589
+ return true;
7590
+ }
7591
+ return false;
7592
+ }
7593
+
7572
7594
  var index = /*#__PURE__*/Object.freeze({
7573
7595
  __proto__: null,
7596
+ QUICK_SEARCHABLE_FIELD_TYPES: QUICK_SEARCHABLE_FIELD_TYPES,
7574
7597
  OMIT_FIELDS: OMIT_FIELDS,
7575
7598
  getBaseFields: getBaseFields,
7576
7599
  getAmisFieldType: getAmisFieldType,
@@ -7581,6 +7604,7 @@ var index = /*#__PURE__*/Object.freeze({
7581
7604
  convertSFieldToAmisField: convertSFieldToAmisField,
7582
7605
  getFieldSearchable: getFieldSearchable,
7583
7606
  isFieldTypeSearchable: isFieldTypeSearchable,
7607
+ isFieldQuickSearchable: isFieldQuickSearchable,
7584
7608
  getAmisStaticFieldType: getAmisStaticFieldType
7585
7609
  });
7586
7610
 
@@ -8357,8 +8381,9 @@ async function getTableApi(mainObject, fields, options){
8357
8381
  if(filter){
8358
8382
  baseFilters = filter;
8359
8383
  }
8360
- ___namespace.each(fields,function(field){
8361
- if(field.searchable){
8384
+
8385
+ ___namespace.each(fields, function (field) {
8386
+ if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
8362
8387
  searchableFields.push(field.name);
8363
8388
  }
8364
8389
  });
@@ -8486,19 +8511,10 @@ async function getTableApi(mainObject, fields, options){
8486
8511
  })
8487
8512
  }
8488
8513
 
8489
- if(selfData.__keywords && allowSearchFields){
8490
- const keywordsFilters = [];
8491
- allowSearchFields.forEach(function(key, index){
8492
- const keyValue = selfData.__keywords;
8493
- if(keyValue){
8494
- keywordsFilters.push([key, "contains", keyValue]);
8495
- if(index < allowSearchFields.length - 1){
8496
- keywordsFilters.push('or');
8497
- }
8498
- }
8499
- })
8514
+ var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.__keywords, allowSearchFields);
8515
+ if(keywordsFilters && keywordsFilters.length > 0){
8500
8516
  userFilters.push(keywordsFilters);
8501
- };
8517
+ }
8502
8518
 
8503
8519
  let filters = [];
8504
8520