@steedos-widgets/amis-object 6.3.12-beta.1 → 6.3.12-beta.11

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.
@@ -1515,6 +1515,15 @@ fieldset.antd-Collapse > legend{
1515
1515
  .steedos-record-related-list .antd-Table-headToolbar {
1516
1516
  display: none;
1517
1517
  }
1518
+ .steedos-record-related-list.enable-header-toolbar .antd-Table-headToolbar {
1519
+ display: block;
1520
+ }
1521
+ .steedos-record-related-list.enable-header-toolbar .steedos-record-related-crud.hidden {
1522
+ display: block;
1523
+ }
1524
+ .steedos-record-related-list.enable-header-toolbar .steedos-record-related-crud.hidden .antd-Table-contentWrap {
1525
+ display: none;
1526
+ }
1518
1527
  .steedos-record-related-list .antd-Images {
1519
1528
  display: inline !important;
1520
1529
  }
@@ -88,13 +88,6 @@ function __rest(s, e) {
88
88
  return t;
89
89
  }
90
90
 
91
- function __decorate(decorators, target, key, desc) {
92
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
93
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
94
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
95
- return c > 3 && r && Object.defineProperty(target, key, r), r;
96
- }
97
-
98
91
  function __awaiter(thisArg, _arguments, P, generator) {
99
92
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
100
93
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8015,7 +8008,7 @@ const parseSingleExpression$1 = function (func, formData, dataPath, global, user
8015
8008
  * @Author: baozhoutao@steedos.com
8016
8009
  * @Date: 2022-11-01 15:51:00
8017
8010
  * @LastEditors: baozhoutao@steedos.com
8018
- * @LastEditTime: 2024-02-18 18:37:35
8011
+ * @LastEditTime: 2024-12-26 20:28:43
8019
8012
  * @Description:
8020
8013
  */
8021
8014
 
@@ -8175,20 +8168,23 @@ const getSchema$5 = async (uiSchema, ctx) => {
8175
8168
  {
8176
8169
  type: 'button',
8177
8170
  actionType: 'cancel',
8178
- label: instance.t('frontend_form_cancel')
8171
+ label: instance.t('frontend_form_cancel'),
8172
+ className: 'form-btn-cancel'
8179
8173
  },
8180
8174
  {
8181
8175
  type: 'button',
8182
8176
  label: instance.t('frontend_form_save_and_new'),
8183
8177
  actionType: 'confirm',
8184
8178
  close: false,
8185
- id: "confirmAndNew"
8179
+ id: "confirmAndNew",
8180
+ className: 'form-btn-save_and_new'
8186
8181
  },
8187
8182
  {
8188
8183
  type: 'button',
8189
8184
  actionType: 'confirm',
8190
8185
  label: instance.t('frontend_form_save'),
8191
- primary: true
8186
+ primary: true,
8187
+ className: 'form-btn-save'
8192
8188
  },
8193
8189
  ]
8194
8190
  }
@@ -9347,11 +9343,30 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
9347
9343
  const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
9348
9344
  const keywordsSearchBoxName = ctx.keywordsSearchBoxName || "__keywords";
9349
9345
  const onSearchScript = `
9350
- // console.log("===onSearchScript=form==");
9346
+ let isLookup = event.data.isLookup;
9347
+ let __lookupField = event.data.__lookupField;
9351
9348
  const scope = event.context.scoped;
9349
+ let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
9352
9350
  var filterForm = scope.parent.parent.getComponents().find(function(n){
9353
9351
  return n.props.type === "form";
9354
9352
  });
9353
+ // 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取,因为本地存储中的过滤条件自动填充到表单上时filterForm.getValues()拿不到。
9354
+ let filterFormValues = event.data;
9355
+ // 同步__changedFilterFormValues中的值
9356
+ // crud && crud.setData({__changedFilterFormValues: {}});
9357
+ let __changedFilterFormValuesKey = "__changedFilterFormValues";
9358
+ if(isLookup && __lookupField){
9359
+ let lookupTag = "__lookup__" + __lookupField.name + "__" + __lookupField.reference_to;
9360
+ if(__lookupField.reference_to_field){
9361
+ lookupTag += "__" + __lookupField.reference_to_field;
9362
+ }
9363
+ __changedFilterFormValuesKey += lookupTag;
9364
+ }
9365
+ if(crud){
9366
+ let crudData = crud.getData();
9367
+ crudData[__changedFilterFormValuesKey] = filterFormValues;
9368
+ crud.setData(crudData);
9369
+ }
9355
9370
  filterForm.handleFormSubmit(event);
9356
9371
  // var filterFormValues = filterForm.getValues();
9357
9372
  // var listView = scope.parent.parent.parent.getComponents().find(function(n){
@@ -9400,10 +9415,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
9400
9415
  }
9401
9416
  filterService.setData({showFieldsFilter});
9402
9417
  // resizeWindow();//已迁移到搜索栏表单提交事件中执行,因为表单项change后也会触发表单提交了
9403
- // 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取。
9404
- let filterFormValues = event.data;
9405
9418
  let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
9406
- let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
9407
9419
  let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
9408
9420
  crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter});
9409
9421
  `;
@@ -10789,7 +10801,7 @@ async function getObjectListHeaderFieldsFilterBar(objectSchema, listViewName, ct
10789
10801
  * @param {*} objectSchema 对象UISchema
10790
10802
  * @returns amisSchema
10791
10803
  */
10792
- function getObjectListHeader$1(objectSchema, listViewName, ctx) {
10804
+ function getObjectListHeader(objectSchema, listViewName, ctx) {
10793
10805
  if (!ctx) {
10794
10806
  ctx = {};
10795
10807
  }
@@ -13206,8 +13218,8 @@ const getRecordPermissions = async (objectName, recordId)=>{
13206
13218
  /*
13207
13219
  * @Author: baozhoutao@steedos.com
13208
13220
  * @Date: 2022-07-05 15:55:39
13209
- * @LastEditors: baozhoutao@steedos.com
13210
- * @LastEditTime: 2024-02-18 14:46:50
13221
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
13222
+ * @LastEditTime: 2025-01-08 13:32:51
13211
13223
  * @Description:
13212
13224
  */
13213
13225
 
@@ -13281,7 +13293,7 @@ async function getObjectRelatedList(
13281
13293
 
13282
13294
  // 获取单个相关表
13283
13295
  async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObjectName, relatedKey, ctx){
13284
- let { top, perPage, appId, relatedLabel, className, columns, sort, filters, visible_on } = ctx;
13296
+ let { top, perPage, appId, relatedLabel, className, columns, sort, filters, visible_on, enableHeaderToolbar } = ctx;
13285
13297
  // console.log('getRecordDetailRelatedListSchema==>',objectName,recordId,relatedObjectName)
13286
13298
  const relatedObjectUiSchema = await getUISchema(relatedObjectName);
13287
13299
  if(!relatedObjectUiSchema){
@@ -13346,6 +13358,10 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
13346
13358
  let headerToolbar = [];
13347
13359
  if(!isMobile){
13348
13360
  headerToolbar.push("bulkActions");
13361
+ if (enableHeaderToolbar) {
13362
+ // 通过 enableHeaderToolbar = true 可以控制是否显示内置的带过滤器的headerToolbar
13363
+ headerToolbar = undefined;
13364
+ }
13349
13365
  }
13350
13366
  const options = {
13351
13367
  globalFilter,
@@ -13384,7 +13400,7 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
13384
13400
  amisSchema: {
13385
13401
  type: "service",
13386
13402
  id: componentId,
13387
- className: `steedos-record-related-list mb-4 last:mb-0 ${componentId} ${className}`,
13403
+ className: `steedos-record-related-list mb-4 last:mb-0 ${componentId} ${className} ${enableHeaderToolbar ? 'enable-header-toolbar' : ''}`,
13388
13404
  data: {
13389
13405
  relatedKey: relatedKey,
13390
13406
  listViewId: `amis-\${appId}-${relatedObjectName}-listview`,
@@ -13486,6 +13502,7 @@ async function getRelatedListSchema(
13486
13502
  listViewName,
13487
13503
  ctx
13488
13504
  ) {
13505
+ const { enableHeaderToolbar } = ctx;
13489
13506
  const uiSchema = await getUISchema(objectName);
13490
13507
  if(!uiSchema){
13491
13508
  return {}
@@ -13538,10 +13555,14 @@ async function getRelatedListSchema(
13538
13555
  delete ctx.filters;
13539
13556
 
13540
13557
  delete ctx.globalFilter;
13558
+ delete ctx.enableHeaderToolbar;
13541
13559
 
13542
13560
  const adaptor = `
13543
13561
  try{
13544
13562
  if(setDataToComponentId){
13563
+ // 子表列表在headerToolbar过滤器中设置过过滤条件的话,始终显示子表列表,无论是否查询到数据
13564
+ // 改为使用css样式控制子表列表放开headerToolbar时,始终显示crud,只隐藏crud内部的表格,从而始终显示headerToolbar不受这里逻辑影响
13565
+ // var headerToolbarFilterChanged = context.isFieldsFilterEmpty === false;
13545
13566
  if(payload.data.count){
13546
13567
  setTimeout(function(){
13547
13568
  // 设计器中获取不到window.$从而导致报错, 所以用纯js替换下。
@@ -13564,7 +13585,7 @@ async function getRelatedListSchema(
13564
13585
  "filters": listviewFilter,
13565
13586
  "filtersFunction": filtersFunction,
13566
13587
  "sort": listViewSort,
13567
- "filterVisible": false,
13588
+ "filterVisible": !!enableHeaderToolbar,
13568
13589
  "requestAdaptor": ctx.requestAdaptor,
13569
13590
  "adaptor": adaptor + ctx.adaptor || '',
13570
13591
  "ctx": ctx,
@@ -19215,7 +19236,7 @@ async function getListviewInitSchema(objectApiName, listViewName, ctx) {
19215
19236
  const defaults = ctx.defaults || {};
19216
19237
  if(!defaults.headerSchema){
19217
19238
  //传入isListviewInit是区别于对象列表类型的微页面,即getListPageInitSchema函数中该属性为false
19218
- const headerSchema = await getObjectListHeader$1(uiSchema, listViewName, {
19239
+ const headerSchema = await getObjectListHeader(uiSchema, listViewName, {
19219
19240
  onlySecordLine: true,
19220
19241
  isListviewInit: true
19221
19242
  });
@@ -21764,7 +21785,7 @@ var index_esm$1 = /*#__PURE__*/Object.freeze({
21764
21785
  getObjectFieldsFilterBarSchema: getObjectFieldsFilterBarSchema,
21765
21786
  getObjectFieldsFilterButtonSchema: getObjectFieldsFilterButtonSchema,
21766
21787
  getObjectFieldsFilterFormSchema: getObjectFieldsFilterFormSchema,
21767
- getObjectListHeader: getObjectListHeader$1,
21788
+ getObjectListHeader: getObjectListHeader,
21768
21789
  getObjectListHeaderFieldsFilterBar: getObjectListHeaderFieldsFilterBar,
21769
21790
  getObjectListHeaderFirstLine: getObjectListHeaderFirstLine,
21770
21791
  getObjectListHeaderSecordLine: getObjectListHeaderSecordLine,
@@ -22268,6 +22289,7 @@ var Collapse = /** @class */ (function (_super) {
22268
22289
  _this.basicCollapse = React__default["default"].createRef();
22269
22290
  return _this;
22270
22291
  }
22292
+ // @autobind
22271
22293
  Collapse.prototype.handleCollapseChange = function (collapsed) {
22272
22294
  return __awaiter(this, void 0, void 0, function () {
22273
22295
  var _a, dispatchEvent, onCollapse, eventData, changeEvent, toggleEvent;
@@ -22335,9 +22357,6 @@ var Collapse = /** @class */ (function (_super) {
22335
22357
  'collapseHeader',
22336
22358
  'size'
22337
22359
  ];
22338
- __decorate([
22339
- amisCore.autobind
22340
- ], Collapse.prototype, "handleCollapseChange", null);
22341
22360
  return Collapse;
22342
22361
  }(React__default["default"].Component));
22343
22362
  var FieldSetControl = /** @class */ (function (_super) {
@@ -24710,14 +24729,17 @@ var Container = /** @class */ (function (_super) {
24710
24729
  function Container() {
24711
24730
  return _super !== null && _super.apply(this, arguments) || this;
24712
24731
  }
24732
+ // @autobind
24713
24733
  Container.prototype.handleClick = function (e) {
24714
24734
  var _a = this.props, dispatchEvent = _a.dispatchEvent, data = _a.data;
24715
24735
  dispatchEvent(e, data);
24716
24736
  };
24737
+ // @autobind
24717
24738
  Container.prototype.handleMouseEnter = function (e) {
24718
24739
  var _a = this.props, dispatchEvent = _a.dispatchEvent, data = _a.data;
24719
24740
  dispatchEvent(e, data);
24720
24741
  };
24742
+ // @autobind
24721
24743
  Container.prototype.handleMouseLeave = function (e) {
24722
24744
  var _a = this.props, dispatchEvent = _a.dispatchEvent, data = _a.data;
24723
24745
  dispatchEvent(e, data);
@@ -24771,15 +24793,6 @@ var Container = /** @class */ (function (_super) {
24771
24793
  enableUserSelect: false
24772
24794
  }
24773
24795
  };
24774
- __decorate([
24775
- amisCore.autobind
24776
- ], Container.prototype, "handleClick", null);
24777
- __decorate([
24778
- amisCore.autobind
24779
- ], Container.prototype, "handleMouseEnter", null);
24780
- __decorate([
24781
- amisCore.autobind
24782
- ], Container.prototype, "handleMouseLeave", null);
24783
24796
  return Container;
24784
24797
  }(React__default["default"].Component));
24785
24798
  // @Renderer({
@@ -25003,7 +25016,7 @@ var AmisObjectListView = function (props) { return __awaiter(void 0, void 0, voi
25003
25016
  allData = createObject(data, defaultData);
25004
25017
  listViewSchemaProps = __assign$2(__assign$2({ top: top, perPage: perPage, defaults: defaults }, ctx), { listViewId: listViewId, setDataToComponentId: setDataToComponentId, filterVisible: filterVisible, showDisplayAs: showDisplayAs, displayAs: displayAs, headerToolbarItems: headerToolbarItems, rowClassNameExpr: rowClassNameExpr, hiddenColumnOperation: hiddenColumnOperation, columns: columns, crudDataFilter: crudDataFilter, onCrudDataFilter: onCrudDataFilter, amisData: allData, env: env, requestAdaptor: requestAdaptor, adaptor: adaptor });
25005
25018
  if (!headerSchema) {
25006
- headerSchema = getObjectListHeader$1(uiSchema, listName, ctx);
25019
+ headerSchema = getObjectListHeader(uiSchema, listName, ctx);
25007
25020
  }
25008
25021
  headerSchema.className = "steedos-object-listview-header " + headerSchema.className || "";
25009
25022
  serviceData = Object.assign({}, { showDisplayAs: showDisplayAs, displayAs: displayAs, recordPermissions: uiSchema.permissions, _id: null, $listviewId: listName, isObjectListview: true });
@@ -25349,12 +25362,12 @@ var AmisRecordService = function (props) { return __awaiter(void 0, void 0, void
25349
25362
  }); };
25350
25363
 
25351
25364
  var AmisRecordDetailRelatedList = function (props) { return __awaiter(void 0, void 0, void 0, function () {
25352
- var $schema, objectApiName, recordId, relatedObjectApiName, data, relatedKey, top, perPage, hiddenEmptyTable, appId, relatedLabel, _a, className, columns, sort, filters, visible_on, requestAdaptor, adaptor, visibleOn, crud, crudDataFilter, onCrudDataFilter, env, formFactor, formData, schema;
25365
+ var $schema, objectApiName, recordId, relatedObjectApiName, data, relatedKey, top, perPage, hiddenEmptyTable, appId, relatedLabel, _a, className, columns, sort, filters, visible_on, requestAdaptor, adaptor, visibleOn, crud, crudDataFilter, onCrudDataFilter, env, enableHeaderToolbar, formFactor, formData, schema;
25353
25366
  var _b;
25354
25367
  return __generator(this, function (_c) {
25355
25368
  switch (_c.label) {
25356
25369
  case 0:
25357
- $schema = props.$schema, objectApiName = props.objectApiName, recordId = props.recordId, relatedObjectApiName = props.relatedObjectApiName, data = props.data, relatedKey = props.relatedKey, top = props.top, perPage = props.perPage, hiddenEmptyTable = props.hiddenEmptyTable, appId = props.appId, relatedLabel = props.relatedLabel, _a = props.className, className = _a === void 0 ? '' : _a, columns = props.columns, sort = props.sort, filters = props.filters, visible_on = props.visible_on, requestAdaptor = props.requestAdaptor, adaptor = props.adaptor, visibleOn = props.visibleOn, crud = props.crud, crudDataFilter = props.crudDataFilter, onCrudDataFilter = props.onCrudDataFilter, env = props.env;
25370
+ $schema = props.$schema, objectApiName = props.objectApiName, recordId = props.recordId, relatedObjectApiName = props.relatedObjectApiName, data = props.data, relatedKey = props.relatedKey, top = props.top, perPage = props.perPage, hiddenEmptyTable = props.hiddenEmptyTable, appId = props.appId, relatedLabel = props.relatedLabel, _a = props.className, className = _a === void 0 ? '' : _a, columns = props.columns, sort = props.sort, filters = props.filters, visible_on = props.visible_on, requestAdaptor = props.requestAdaptor, adaptor = props.adaptor, visibleOn = props.visibleOn, crud = props.crud, crudDataFilter = props.crudDataFilter, onCrudDataFilter = props.onCrudDataFilter, env = props.env, enableHeaderToolbar = props.enableHeaderToolbar;
25358
25371
  formFactor = props.formFactor;
25359
25372
  if (!formFactor) {
25360
25373
  formFactor = window.innerWidth < 768 ? 'SMALL' : 'LARGE';
@@ -25391,7 +25404,8 @@ var AmisRecordDetailRelatedList = function (props) { return __awaiter(void 0, vo
25391
25404
  crud: crud,
25392
25405
  crudDataFilter: crudDataFilter,
25393
25406
  onCrudDataFilter: onCrudDataFilter,
25394
- env: env
25407
+ env: env,
25408
+ enableHeaderToolbar: enableHeaderToolbar
25395
25409
  })];
25396
25410
  case 1:
25397
25411
  schema = (_c.sent()).amisSchema;
@@ -25531,7 +25545,7 @@ var AmisProvider = function (props) { return __awaiter(void 0, void 0, void 0, f
25531
25545
  * @Author: baozhoutao@steedos.com
25532
25546
  * @Date: 2022-09-01 14:44:57
25533
25547
  * @LastEditors: baozhoutao@steedos.com
25534
- * @LastEditTime: 2024-10-10 16:30:41
25548
+ * @LastEditTime: 2025-01-07 17:14:16
25535
25549
  * @Description:
25536
25550
  */
25537
25551
  var AmisAppLauncher = function (props) { return __awaiter(void 0, void 0, void 0, function () {
@@ -25818,7 +25832,7 @@ var AmisAppLauncher = function (props) { return __awaiter(void 0, void 0, void 0
25818
25832
  ]
25819
25833
  }
25820
25834
  },
25821
- isMobile && isSpaceAdmin ? null : {
25835
+ isMobile || !isSpaceAdmin ? null : {
25822
25836
  "type": "button",
25823
25837
  "level": "link",
25824
25838
  "label": "+ 新建应用",
@@ -27010,7 +27024,7 @@ function generateRandomString$1(length) {
27010
27024
  return _$1.sampleSize(characters, length).join('');
27011
27025
  }
27012
27026
  var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void 0, function () {
27013
- var steedosField, field, _a, readonly, _b, ctx, config, fStatic, env, inInputTable, className, _c, appId, formFactor, editorClassName, lookupATagClick, defaultSource, source, fieldBaseProps, referenceTo_1, fieldValue, fieldRefObject, _d, _e, _f, _g, res, valueOptions_1, fieldValue, values, disPlayValue_1, _h, _j, _k, _l, schema, fieldSchema, fieldValue, hasImageOrFile_1, fieldHtml_1, schema, map, tableFields, _m, _o, subField, subFieldName, fieldAmis, schema, error_1;
27027
+ var steedosField, field, _a, readonly, _b, ctx, config, fStatic, env, inInputTable, className, _c, appId, formFactor, editorClassName, lookupATagClick, defaultSource, source, fieldBaseProps, referenceTo_1, fieldValue, fieldRefObject, _d, _e, _f, _g, res, valueOptions_1, fieldValue, values, disPlayValue_1, _h, _j, _k, _l, schema, fieldSchema, fieldValue, fieldHtml_1, schema, map, tableFields, _m, _o, subField, subFieldName, fieldAmis, schema, error_1;
27014
27028
  var _p, _q, _r, _s, _t, _u, _v, _w, _x, e_1, _y;
27015
27029
  var _z, _0, _1, _2, _3, _4, _5;
27016
27030
  return __generator(this, function (_6) {
@@ -27342,18 +27356,11 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
27342
27356
  if (steedosField.type === 'file' && fieldSchema.disabled) {
27343
27357
  fieldValue = fieldSchema.value;
27344
27358
  if (fieldValue && fieldValue.length) {
27345
- hasImageOrFile_1 = false;
27346
27359
  _$1.forEach(fieldValue, function (item) {
27347
27360
  var fileName = item.name;
27348
27361
  var match = fileName.match(/\.([^\.]+)$/);
27349
- var fileType = match ? match[0] : '';
27350
- if ([".pdf", ".jpg", ".jpeg", ".png", ".gif"].indexOf(fileType) > -1) {
27351
- hasImageOrFile_1 = true;
27352
- }
27362
+ match ? match[0] : '';
27353
27363
  });
27354
- if (!hasImageOrFile_1) {
27355
- return [2 /*return*/, fieldSchema];
27356
- }
27357
27364
  fieldHtml_1 = "";
27358
27365
  _$1.forEach(fieldValue, function (item) {
27359
27366
  var fileName = item.name;