@steedos-widgets/sortable 1.3.4-beta.17 → 1.3.4-beta.19

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.
@@ -55788,7 +55788,8 @@ const getCopyListviewButtonSchema = ()=>{
55788
55788
  "&": "${list_view}",
55789
55789
  "name":"",
55790
55790
  "label": instance.t('frontend_listview_control_clone_defaultData_label_start') + " ${list_view.label} " + instance.t('frontend_listview_control_clone_defaultData_label_end'),
55791
- "shared":false
55791
+ "shared":false,
55792
+ "object_name": "${targetObjectName}",
55792
55793
  },
55793
55794
  "fieldsExtend": fieldsExtend$3(),
55794
55795
  "fields": fields(),
@@ -57496,7 +57497,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
57496
57497
  pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });
57497
57498
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
57498
57499
  const isCreate = lodash.exports.isBoolean(field.create) ? field.create : true;
57499
- if (isAllowCreate && isCreate) {
57500
+ // lookup字段配置过滤条件就强制不显示新建按钮
57501
+ let isHasFilters = (field.filters || field._filtersFunction) ? true : false;
57502
+ if (isAllowCreate && isCreate && !isHasFilters) {
57500
57503
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
57501
57504
  new_button.align = "right";
57502
57505
  // 保持快速搜索放在最左侧,新建按钮往里插,而不是push到最后
@@ -57870,10 +57873,10 @@ async function lookupToAmis(field, readonly, ctx){
57870
57873
 
57871
57874
  const refObject = await getUISchema(referenceTo.objectName);
57872
57875
 
57873
- // 此处不参考 steedos 的 enable_enhanced_lookup 规则. 如果默认是开启弹出选择,用户选择过程操作太繁琐, 所以默认是关闭弹出选择.
57874
- // 由于amis picker 目前不支持联动, 配置了depend_on时, 使用使用select ,以支持联动
57875
- // TODO: 确认 amis picker 支持联动时, 清理field.depend_on判断
57876
- if(refObject.enable_enhanced_lookup == true && lodash.exports.isEmpty(field.depend_on)){
57876
+ // 优先取字段中配置的enable_enhanced_lookup,字段上没配置时,才从对象上取enable_enhanced_lookup属性
57877
+ let enableEnhancedLookup = lodash.exports.isBoolean(field.enable_enhanced_lookup) ? field.enable_enhanced_lookup : refObject.enable_enhanced_lookup;
57878
+ // 默认使用下拉框模式显示lookup选项,只能配置了enable_enhanced_lookup才使用弹出增强模式
57879
+ if(enableEnhancedLookup == true){
57877
57880
  return await lookupToAmisPicker(field, readonly, ctx);
57878
57881
  }else if(refObject.enable_tree) {
57879
57882
  return await lookupToAmisTreeSelect(field, readonly, Object.assign({}, ctx, {
@@ -58186,8 +58189,8 @@ function getAmisStaticFieldType(type, readonly, options){
58186
58189
  /*
58187
58190
  * @Author: baozhoutao@steedos.com
58188
58191
  * @Date: 2022-10-28 14:15:09
58189
- * @LastEditors: baozhoutao@steedos.com
58190
- * @LastEditTime: 2022-11-02 18:06:16
58192
+ * @LastEditors: liaodaxue
58193
+ * @LastEditTime: 2023-10-30 17:51:54
58191
58194
  * @Description:
58192
58195
  */
58193
58196
 
@@ -58238,11 +58241,26 @@ const getAmisFileEditSchema = (steedosField)=>{
58238
58241
  useChunk: false, // 关闭分块上传
58239
58242
  receiver: {
58240
58243
  method: "post",
58244
+ dataType: "form-data",
58241
58245
  url: `\${context.rootUrl}/s3/${tableName}`,
58242
- data: {
58243
- $: "$$",
58244
- context: `\${context}`,
58245
- },
58246
+ requestAdaptor: `
58247
+ const { _master, global,context } = api.body;
58248
+ // const { recordId, objectName } = _master;
58249
+ const { spaceId, userId, user } = global;
58250
+ /*
58251
+ record_id: recordId,
58252
+ parent: recordId,
58253
+ object_name: objectName,
58254
+ owner_name: user.name,
58255
+ space: spaceId,
58256
+ owner: userId
58257
+ */
58258
+ // 参考platform 2.2版本,附件字段保存时cfs.files.filerecord、cfs.images.filerecord表中的metadata下只保存space、owner两个属性值。
58259
+ api.data.append('space', spaceId);
58260
+ api.data.append('owner', userId);
58261
+
58262
+ return api;
58263
+ `,
58246
58264
  adaptor: `
58247
58265
  const { context } = api.body;
58248
58266
  var rootUrl = context.rootUrl + "/api/files/${tableName}/";
@@ -58984,8 +59002,44 @@ var config = {
58984
59002
  };
58985
59003
 
58986
59004
  async function getQuickEditSchema(field, options){
59005
+ //判断在amis3.2以上环境下,放开批量编辑
59006
+ const isAmisVersionforBatchEdit = amisRequire('amis').version[0] >= 3 && amisRequire('amis').version[2] >= 2;
58987
59007
  const quickEditId = options.objectName + "_" + field.name + "QuickEdit";//定义快速编辑的表单id,用于setvalue传值
58988
59008
  var quickEditSchema = { body: [], id: quickEditId };
59009
+ //select,avatar,image,file等组件无法行记录字段赋值,暂不支持批量编辑;
59010
+ if(field.type != 'avatar' && field.type != 'image' && field.type != 'file' && isAmisVersionforBatchEdit){
59011
+ const submitEvent = {
59012
+ submit: {
59013
+ actions: [
59014
+ {
59015
+ actionType: "custom",
59016
+ script: `
59017
+ const items = event.data.items;
59018
+ const selectedItems = event.data.selectedItems;
59019
+ if(event.data.isBatchEdit){
59020
+ selectedItems.forEach(function(selectedItem){
59021
+ items[selectedItem._index-1]._display.${field.name} = event.data._display.${field.name};
59022
+ })
59023
+ doAction({actionType: 'setValue', "args": {"value": {items}},componentId: "${options.crudId}","dataMergeMode": "override"});
59024
+ selectedItems.forEach(function(selectedItem){
59025
+ doAction({actionType: 'setValue', "args": {"value": event.data.${field.name}},componentId: "${options.objectName + "_" + field.name + "_"}" + selectedItem._index});
59026
+ })
59027
+ }else{
59028
+ items[event.data._index-1]._display.${field.name} = event.data._display.${field.name};
59029
+ doAction({actionType: 'setValue', "args": {"value": {items}},componentId: "${options.crudId}","dataMergeMode": "override"});
59030
+ doAction({actionType: 'setValue', "args": {"value": event.data.${field.name}},componentId: "${options.objectName + "_" + field.name + "_"}" + event.data._index});
59031
+ }
59032
+ `
59033
+ },
59034
+ {
59035
+ "actionType": "closeDialog"
59036
+ }
59037
+ ]
59038
+ }
59039
+ };
59040
+ quickEditSchema.onEvent = submitEvent;
59041
+ }
59042
+
58989
59043
  if (field.disabled) {
58990
59044
  quickEditSchema = false;
58991
59045
  } else {
@@ -59219,6 +59273,14 @@ async function getQuickEditSchema(field, options){
59219
59273
  }
59220
59274
 
59221
59275
  });
59276
+ if(field.type != 'avatar' && field.type != 'image' && field.type != 'file' && isAmisVersionforBatchEdit){
59277
+ quickEditSchema.body.push({
59278
+ "name": "isBatchEdit",
59279
+ "type": "checkbox",
59280
+ "option": "更新${COUNT(selectedItems)}个选定记录",
59281
+ "visibleOn": "${ARRAYSOME(selectedItems, item => item._id === _id) && COUNT(selectedItems)>1}"
59282
+ });
59283
+ }
59222
59284
  } else {
59223
59285
  quickEditSchema = false;
59224
59286
  }
@@ -59284,7 +59346,7 @@ async function getTableColumns(fields, options){
59284
59346
  {
59285
59347
  "args": {
59286
59348
  "api": {
59287
- "url": "${context.rootUrl}/api/files/files/${versions[0]}?download=true",
59349
+ "url": "${(versions[0] && versions[0].url) ? versions[0].url+'?download=true' : context.rootUrl+'/api/files/files/'+versions[0]+'?download=true'}",
59288
59350
  "method": "get",
59289
59351
  "headers": {
59290
59352
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
@@ -59331,7 +59393,7 @@ async function getTableColumns(fields, options){
59331
59393
  else if(field.type === 'select'){
59332
59394
  const map = getSelectMap(field.options);
59333
59395
  columnItem = Object.assign({}, {
59334
- type: "mapping",
59396
+ type: "static-mapping",
59335
59397
  name: field.name,
59336
59398
  label: field.label,
59337
59399
  map: map,
@@ -59346,7 +59408,7 @@ async function getTableColumns(fields, options){
59346
59408
  const tpl = await getFieldTpl(field, options);
59347
59409
  let type = 'text';
59348
59410
  if(tpl){
59349
- type = 'tpl';
59411
+ type = 'static';
59350
59412
  }else if(field.type === 'html'){
59351
59413
  type = 'markdown';
59352
59414
  }else if(field.type === 'url'){
@@ -59387,6 +59449,7 @@ async function getTableColumns(fields, options){
59387
59449
  columnItem.quickEdit = quickEditSchema;
59388
59450
  columnItem.quickEditEnabledOn = "${is_system !== true}";
59389
59451
  }
59452
+ columnItem.id = `${options.objectName}_${field.name}_\${_index}`;
59390
59453
  columns.push(columnItem);
59391
59454
  }
59392
59455
  }
@@ -59764,6 +59827,7 @@ async function getTableSchema$1(fields, options){
59764
59827
  }
59765
59828
  return {
59766
59829
  mode: "cards",
59830
+ perPageAvailable: [5, 10, 20, 50, 100, 500],
59767
59831
  name: "thelist",
59768
59832
  headerToolbarClassName: "py-2 px-2 border-gray-300 border-solid border-b",
59769
59833
  className: "",
@@ -59786,6 +59850,7 @@ async function getTableSchema$1(fields, options){
59786
59850
 
59787
59851
  return {
59788
59852
  mode: "table",
59853
+ perPageAvailable: [5, 10, 20, 50, 100, 500],
59789
59854
  name: "thelist",
59790
59855
  headerToolbarClassName: "py-2 px-2 border-gray-300 border-solid border-b",
59791
59856
  className: "",
@@ -65324,6 +65389,10 @@ function MultipleContainers(props) {
65324
65389
  };
65325
65390
  }), 2), items = _w[0], setItems = _w[1];
65326
65391
  var _x = __read(react.exports.useState(Object.keys(items)), 2), containers = _x[0], setContainers = _x[1];
65392
+ react.exports.useEffect(function () {
65393
+ setItems(value);
65394
+ setContainers(Object.keys(value));
65395
+ }, [value]);
65327
65396
  var handleChange = function (newItems) { return __awaiter(_this, void 0, void 0, function () {
65328
65397
  var value, rendererEvent;
65329
65398
  return __generator(this, function (_a) {
@@ -65340,7 +65409,7 @@ function MultipleContainers(props) {
65340
65409
  if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
65341
65410
  return [2 /*return*/];
65342
65411
  }
65343
- setTimeout(function () { return amisOnChange(value); }, 1000);
65412
+ setTimeout(function () { return amisOnChange(value); }, 500);
65344
65413
  return [2 /*return*/];
65345
65414
  }
65346
65415
  });
@@ -65443,6 +65512,7 @@ function MultipleContainers(props) {
65443
65512
  var active = _a.active, over = _a.over;
65444
65513
  var overId = over === null || over === void 0 ? void 0 : over.id;
65445
65514
  if (overId == null || overId === TRASH_ID || active.id in items) {
65515
+ // 拖动的是分组则跳过后面的逻辑
65446
65516
  return;
65447
65517
  }
65448
65518
  var overContainer = findContainer(overId);
@@ -65520,14 +65590,37 @@ function MultipleContainers(props) {
65520
65590
  var overContainer = findContainer(overId);
65521
65591
  var newItems = items;
65522
65592
  if (overContainer) {
65523
- var activeIndex_1 = items[activeContainer].indexOf(active.id);
65524
- var overIndex_1 = items[overContainer].indexOf(overId);
65525
- if (activeIndex_1 !== overIndex_1) {
65526
- setItems(function (items) {
65527
- var _a;
65528
- newItems = __assign$1(__assign$1({}, items), (_a = {}, _a[overContainer] = arrayMove(items[overContainer], activeIndex_1, overIndex_1), _a));
65529
- return newItems;
65530
- });
65593
+ if (activeContainer !== overContainer) {
65594
+ // 拖动变更分组之间的顺序时,activeContainer overContainer 值不相等
65595
+ setTimeout(function () {
65596
+ var sortedGroups = over.data.current.sortable.items; //不加setTimeout的话,这里拿到的会是变更前的数据
65597
+ newItems = {};
65598
+ sortedGroups.forEach(function (groupKey) {
65599
+ newItems[groupKey] = items[groupKey];
65600
+ });
65601
+ delete newItems[TRASH_ID];
65602
+ delete newItems[PLACEHOLDER_ID];
65603
+ if (lodash.exports.keys(items).join(",") !== lodash.exports.keys(newItems).join(",")) {
65604
+ // 只有顺序发生变化时才触发change事件
65605
+ setItems(newItems);
65606
+ // console.log('拖动结束2,更新form value')
65607
+ handleChange(newItems);
65608
+ }
65609
+ setActiveId(null);
65610
+ }, 500);
65611
+ return;
65612
+ }
65613
+ else {
65614
+ // 同一个分组中字段顺序变更以及把一个字段从某个分组拖动到另一个分组内时,activeContainer 与 overContainer 值相等
65615
+ var activeIndex_1 = items[activeContainer].indexOf(active.id);
65616
+ var overIndex_1 = items[overContainer].indexOf(overId);
65617
+ if (activeIndex_1 !== overIndex_1) {
65618
+ setItems(function (items) {
65619
+ var _a;
65620
+ newItems = __assign$1(__assign$1({}, items), (_a = {}, _a[overContainer] = arrayMove(items[overContainer], activeIndex_1, overIndex_1), _a));
65621
+ return newItems;
65622
+ });
65623
+ }
65531
65624
  }
65532
65625
  }
65533
65626
  setActiveId(null);