@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.cjs.js CHANGED
@@ -705,7 +705,7 @@ async function getFieldsTemplate(fields, display){
705
705
  let expandFieldsQuery = "";
706
706
  if(expandFields.length > 0){
707
707
  ___namespace.each(expandFields, function(field){
708
- expandFieldsQuery = expandFieldsQuery + `${field.expandInfo.fieldName}:${field.expandInfo.fieldName}__expand{${field.expandInfo.displayName}}`;
708
+ expandFieldsQuery = expandFieldsQuery + `${field.expandInfo.fieldName}__expand{${field.expandInfo.displayName}}`;
709
709
  });
710
710
  }
711
711
 
@@ -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){
@@ -3461,7 +3467,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3461
3467
  });
3462
3468
  // 有过滤条件时只显示搜索按钮上的红点,不自动展开搜索栏
3463
3469
  if(!_.isEmpty(omitedEmptyFormValue)){
3464
- let crudService = SteedosUI.getRef(data.$scopeId).getComponentById("service_listview_" + data.objectName)
3470
+ let crudService = SteedosUI.getRef(data.$scopeId).parent.getComponentById("service_listview_" + data.objectName)
3465
3471
  crudService && crudService.setData({isFieldsFilterEmpty: false});
3466
3472
  // setData({ showFieldsFilter: true });//自动展开搜索栏
3467
3473
  }
@@ -5264,16 +5270,14 @@ 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, isLookup = false } = {}){
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 && SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1) {
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 = "";
@@ -5282,6 +5286,35 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, { showDisplayAs
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;
@@ -5353,26 +5386,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, { showDisplayAs
5353
5386
  }
5354
5387
  } : {},
5355
5388
  getDisplayAsButton(mainObject?.name),
5356
- {
5357
- "type": "tooltip-wrapper",
5358
- "align": "right",
5359
- "title": "",
5360
- "content": "可搜索字段:" + searchableFieldsLabel.join(","),
5361
- "placement": "bottom",
5362
- "tooltipTheme": "dark",
5363
- "trigger": "click",
5364
- // "className": "mr-1",
5365
- "body": [
5366
- {
5367
- "type": "search-box",
5368
- "name": "__keywords",
5369
- "placeholder": "请输入关键字",
5370
- "value": crudKeywords,
5371
- "clearable": true,
5372
- "clearAndSubmit": true
5373
- }
5374
- ]
5375
- },
5389
+ getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName })
5376
5390
  ]
5377
5391
  }else {
5378
5392
  return [
@@ -5432,26 +5446,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, { showDisplayAs
5432
5446
  // getExportExcelToolbarButtonSchema(),
5433
5447
  mainObject?.permissions?.allowCreateListViews ? getSettingListviewToolbarButtonSchema() : {},
5434
5448
  getDisplayAsButton(mainObject?.name),
5435
- {
5436
- "type": "tooltip-wrapper",
5437
- "align": "right",
5438
- "title": "",
5439
- "content": "可搜索字段:" + searchableFieldsLabel.join(","),
5440
- "placement": "bottom",
5441
- "tooltipTheme": "dark",
5442
- "trigger": "click",
5443
- "className": "mr-1",
5444
- "body": [
5445
- {
5446
- "type": "search-box",
5447
- "name": "__keywords",
5448
- "placeholder": "请输入关键字",
5449
- "value": crudKeywords,
5450
- "clearable": true,
5451
- "clearAndSubmit": true
5452
- }
5453
- ]
5454
- },
5449
+ getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup, keywordsSearchBoxName }),
5455
5450
  // {
5456
5451
  // "type": "drag-toggler",
5457
5452
  // "align": "right"
@@ -5869,7 +5864,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
5869
5864
  })){
5870
5865
  i++;
5871
5866
  tableFields.push(field);
5872
- if(field.searchable && SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1){
5867
+ if(isFieldQuickSearchable(field, refObjectConfig.NAME_FIELD_KEY)){
5873
5868
  searchableFields.push(field.name);
5874
5869
  }
5875
5870
  }
@@ -5910,7 +5905,8 @@ async function lookupToAmisPicker(field, readonly, ctx){
5910
5905
  source.data.$term = "$term";
5911
5906
  source.data.$self = "$$";
5912
5907
 
5913
-
5908
+ let keywordsSearchBoxName = `__keywords_lookup__${field.name}__to__${refObjectConfig.name}`;
5909
+
5914
5910
  source.requestAdaptor = `
5915
5911
  const selfData = JSON.parse(JSON.stringify(api.data.$self));
5916
5912
  var filters = [];
@@ -5964,19 +5960,10 @@ async function lookupToAmisPicker(field, readonly, ctx){
5964
5960
  })
5965
5961
  }
5966
5962
 
5967
- if(selfData.__keywords && allowSearchFields){
5968
- const keywordsFilters = [];
5969
- allowSearchFields.forEach(function(key, index){
5970
- const keyValue = selfData.__keywords;
5971
- if(keyValue){
5972
- keywordsFilters.push([key, "contains", keyValue]);
5973
- if(index < allowSearchFields.length - 1){
5974
- keywordsFilters.push('or');
5975
- }
5976
- }
5977
- })
5963
+ var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.${keywordsSearchBoxName}, allowSearchFields);
5964
+ if(keywordsFilters && keywordsFilters.length > 0){
5978
5965
  filters.push(keywordsFilters);
5979
- };
5966
+ }
5980
5967
 
5981
5968
  var fieldFilters = ${JSON.stringify(field.filters)};
5982
5969
  if(fieldFilters && fieldFilters.length){
@@ -6094,7 +6081,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
6094
6081
  pickerSchema.className = pickerSchema.className || "" + " steedos-select-user";
6095
6082
  }
6096
6083
 
6097
- pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true });
6084
+ pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });
6098
6085
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
6099
6086
  if (isAllowCreate) {
6100
6087
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
@@ -6105,8 +6092,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
6105
6092
  pickerSchema.footerToolbar = refObjectConfig.enable_tree ? [] : getObjectFooterToolbar();
6106
6093
  if (ctx.filterVisible !== false) {
6107
6094
  pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
6095
+ ...ctx,
6108
6096
  isLookup: true,
6109
- ...ctx
6097
+ keywordsSearchBoxName
6110
6098
  });
6111
6099
  }
6112
6100
  pickerSchema.data = Object.assign({}, pickerSchema.data, {
@@ -6442,7 +6430,7 @@ async function lookupToAmis(field, readonly, ctx){
6442
6430
  }
6443
6431
 
6444
6432
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user"){
6445
- if(ctx.idsDependOn || field.amis){
6433
+ if(ctx.idsDependOn){
6446
6434
  // ids人员点选模式
6447
6435
  return await lookupToAmisIdsPicker(field, readonly, ctx);
6448
6436
  }
@@ -6817,7 +6805,7 @@ const getAmisFileSchema = (steedosField, readonly)=>{
6817
6805
  return readonly ? getAmisFileReadonlySchema(steedosField) : getAmisFileEditSchema(steedosField);
6818
6806
  };
6819
6807
 
6820
- const SEARCHABLE_FIELD_TYPES = ["text", "textarea", "autonumber", "url", "email"];
6808
+ const QUICK_SEARCHABLE_FIELD_TYPES = ["text", "textarea", "autonumber", "url", "email"];
6821
6809
  const OMIT_FIELDS = ['created', 'created_by', 'modified', 'modified_by'];
6822
6810
  // const Lookup = require('./lookup');
6823
6811
 
@@ -7590,9 +7578,22 @@ if (typeof window != 'undefined') {
7590
7578
  window.isFieldTypeSearchable = isFieldTypeSearchable;
7591
7579
  }
7592
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
+
7593
7594
  var index = /*#__PURE__*/Object.freeze({
7594
7595
  __proto__: null,
7595
- SEARCHABLE_FIELD_TYPES: SEARCHABLE_FIELD_TYPES,
7596
+ QUICK_SEARCHABLE_FIELD_TYPES: QUICK_SEARCHABLE_FIELD_TYPES,
7596
7597
  OMIT_FIELDS: OMIT_FIELDS,
7597
7598
  getBaseFields: getBaseFields,
7598
7599
  getAmisFieldType: getAmisFieldType,
@@ -7603,6 +7604,7 @@ var index = /*#__PURE__*/Object.freeze({
7603
7604
  convertSFieldToAmisField: convertSFieldToAmisField,
7604
7605
  getFieldSearchable: getFieldSearchable,
7605
7606
  isFieldTypeSearchable: isFieldTypeSearchable,
7607
+ isFieldQuickSearchable: isFieldQuickSearchable,
7606
7608
  getAmisStaticFieldType: getAmisStaticFieldType
7607
7609
  });
7608
7610
 
@@ -8379,8 +8381,9 @@ async function getTableApi(mainObject, fields, options){
8379
8381
  if(filter){
8380
8382
  baseFilters = filter;
8381
8383
  }
8382
- ___namespace.each(fields,function(field){
8383
- if(field.searchable && SEARCHABLE_FIELD_TYPES.indexOf(field.type) > -1){
8384
+
8385
+ ___namespace.each(fields, function (field) {
8386
+ if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
8384
8387
  searchableFields.push(field.name);
8385
8388
  }
8386
8389
  });
@@ -8508,19 +8511,10 @@ async function getTableApi(mainObject, fields, options){
8508
8511
  })
8509
8512
  }
8510
8513
 
8511
- if(selfData.__keywords && allowSearchFields){
8512
- const keywordsFilters = [];
8513
- allowSearchFields.forEach(function(key, index){
8514
- const keyValue = selfData.__keywords;
8515
- if(keyValue){
8516
- keywordsFilters.push([key, "contains", keyValue]);
8517
- if(index < allowSearchFields.length - 1){
8518
- keywordsFilters.push('or');
8519
- }
8520
- }
8521
- })
8514
+ var keywordsFilters = SteedosUI.getKeywordsSearchFilter(selfData.__keywords, allowSearchFields);
8515
+ if(keywordsFilters && keywordsFilters.length > 0){
8522
8516
  userFilters.push(keywordsFilters);
8523
- };
8517
+ }
8524
8518
 
8525
8519
  let filters = [];
8526
8520
 
@@ -9382,6 +9376,39 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
9382
9376
  });
9383
9377
  `;
9384
9378
 
9379
+ const onEventClickScript = `
9380
+ const data = event.data;
9381
+ const eventData = data.event;
9382
+ const appId = data.appId;
9383
+ const objectName = data.objectName;
9384
+ const eventId = data.event && data.event.id;
9385
+ doAction({
9386
+ "actionType": "link",
9387
+ "args": {
9388
+ "link": "/app/" + appId + "/" + objectName + "/view/" + eventId
9389
+ }
9390
+ });
9391
+ // doAction({
9392
+ // "actionType": "dialog",
9393
+ // "dialog": {
9394
+ // "type": "dialog",
9395
+ // "title": "",
9396
+ // "body": [
9397
+ // {
9398
+ // "type": "steedos-record-detail",
9399
+ // "objectApiName": "\${objectName}",
9400
+ // "recordId": data.event && data.event.id
9401
+ // }
9402
+ // ],
9403
+ // "closeOnEsc": false,
9404
+ // "closeOnOutside": false,
9405
+ // "showCloseButton": true,
9406
+ // "size": "lg",
9407
+ // "actions": []
9408
+ // }
9409
+ // });
9410
+ `;
9411
+
9385
9412
  const recordId = "${event.id}";
9386
9413
  const recordPermissionsApi = getCalendarRecordPermissionsApi(objectSchema, recordId);
9387
9414
  const recordSaveApi = getCalendarRecordSaveApi(objectSchema, calendarOptions);
@@ -9427,11 +9454,16 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
9427
9454
  "weight": 0,
9428
9455
  "actions": [
9429
9456
  {
9430
- "actionType": "link",
9431
- "args": {
9432
- "link": "/app/${appId}/${objectName}/view/${event.id}"
9433
- }
9434
- }
9457
+ "actionType": "custom",
9458
+ "script": onEventClickScript
9459
+ },
9460
+ // amis 升级到 3.2后,以下的"actionType": "link"方式拿不到appId和objectName了
9461
+ // {
9462
+ // "actionType": "link",
9463
+ // "args": {
9464
+ // "link": "/app/${appId}/${objectName}/view/${event.id}"
9465
+ // }
9466
+ // }
9435
9467
  ]
9436
9468
  },
9437
9469
  "eventAdd": {
@@ -10598,8 +10630,8 @@ async function getRelatedListSchema(
10598
10630
  /*
10599
10631
  * @Author: baozhoutao@steedos.com
10600
10632
  * @Date: 2022-07-05 15:55:39
10601
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
10602
- * @LastEditTime: 2023-08-04 12:27:48
10633
+ * @LastEditors: baozhoutao@steedos.com
10634
+ * @LastEditTime: 2023-08-17 18:03:51
10603
10635
  * @Description:
10604
10636
  */
10605
10637
 
@@ -10970,7 +11002,7 @@ async function getTableSchema(
10970
11002
  if(filedInfo && (filedInfo.type === 'lookup' || filedInfo.type === 'master_detail') && _$1.isString(filedInfo.reference_to) ){
10971
11003
  const rfUiSchema = await getUISchema(filedInfo.reference_to);
10972
11004
  const rfFieldInfo = rfUiSchema.fields[displayName];
10973
- fields.push(Object.assign({}, rfFieldInfo, {name: column, expand: true, expandInfo: {fieldName, displayName}}));
11005
+ fields.push(Object.assign({}, rfFieldInfo, {name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: {fieldName, displayName}}));
10974
11006
  }
10975
11007
  }else {
10976
11008
  if(uiSchema.fields[column]){
@@ -10986,7 +11018,7 @@ async function getTableSchema(
10986
11018
  const rfUiSchema = await getUISchema(filedInfo.reference_to);
10987
11019
  const rfFieldInfo = rfUiSchema.fields[displayName];
10988
11020
  fields.push(Object.assign({}, rfFieldInfo,
10989
- {name: column.field, expand: true, expandInfo: {fieldName, displayName}},
11021
+ {name: `${fieldName}__expand.${displayName}`, expand: true, expandInfo: {fieldName, displayName}},
10990
11022
  {
10991
11023
  width: column.width,
10992
11024
  wrap: column.wrap, // wrap = true 是没效果的