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

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.
@@ -22093,7 +22093,8 @@
22093
22093
  "&": "${list_view}",
22094
22094
  "name":"",
22095
22095
  "label": instance.t('frontend_listview_control_clone_defaultData_label_start') + " ${list_view.label} " + instance.t('frontend_listview_control_clone_defaultData_label_end'),
22096
- "shared":false
22096
+ "shared":false,
22097
+ "object_name": "${targetObjectName}",
22097
22098
  },
22098
22099
  "fieldsExtend": fieldsExtend$3(),
22099
22100
  "fields": fields(),
@@ -23801,7 +23802,9 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
23801
23802
  pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });
23802
23803
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
23803
23804
  const isCreate = lodash.exports.isBoolean(field.create) ? field.create : true;
23804
- if (isAllowCreate && isCreate) {
23805
+ // lookup字段配置过滤条件就强制不显示新建按钮
23806
+ let isHasFilters = (field.filters || field._filtersFunction) ? true : false;
23807
+ if (isAllowCreate && isCreate && !isHasFilters) {
23805
23808
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
23806
23809
  new_button.align = "right";
23807
23810
  // 保持快速搜索放在最左侧,新建按钮往里插,而不是push到最后
@@ -24178,7 +24181,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
24178
24181
  // 此处不参考 steedos 的 enable_enhanced_lookup 规则. 如果默认是开启弹出选择,用户选择过程操作太繁琐, 所以默认是关闭弹出选择.
24179
24182
  // 由于amis picker 目前不支持联动, 配置了depend_on时, 使用使用select ,以支持联动
24180
24183
  // TODO: 确认 amis picker 支持联动时, 清理field.depend_on判断
24181
- if(refObject.enable_enhanced_lookup == true && lodash.exports.isEmpty(field.depend_on)){
24184
+ if(refObject.enable_enhanced_lookup == true){
24182
24185
  return await lookupToAmisPicker(field, readonly, ctx);
24183
24186
  }else if(refObject.enable_tree) {
24184
24187
  return await lookupToAmisTreeSelect(field, readonly, Object.assign({}, ctx, {
@@ -24491,8 +24494,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
24491
24494
  /*
24492
24495
  * @Author: baozhoutao@steedos.com
24493
24496
  * @Date: 2022-10-28 14:15:09
24494
- * @LastEditors: baozhoutao@steedos.com
24495
- * @LastEditTime: 2022-11-02 18:06:16
24497
+ * @LastEditors: liaodaxue
24498
+ * @LastEditTime: 2023-10-30 17:51:54
24496
24499
  * @Description:
24497
24500
  */
24498
24501
 
@@ -24543,11 +24546,26 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
24543
24546
  useChunk: false, // 关闭分块上传
24544
24547
  receiver: {
24545
24548
  method: "post",
24549
+ dataType: "form-data",
24546
24550
  url: `\${context.rootUrl}/s3/${tableName}`,
24547
- data: {
24548
- $: "$$",
24549
- context: `\${context}`,
24550
- },
24551
+ requestAdaptor: `
24552
+ const { _master, global,context } = api.body;
24553
+ // const { recordId, objectName } = _master;
24554
+ const { spaceId, userId, user } = global;
24555
+ /*
24556
+ record_id: recordId,
24557
+ parent: recordId,
24558
+ object_name: objectName,
24559
+ owner_name: user.name,
24560
+ space: spaceId,
24561
+ owner: userId
24562
+ */
24563
+ // 参考platform 2.2版本,附件字段保存时cfs.files.filerecord、cfs.images.filerecord表中的metadata下只保存space、owner两个属性值。
24564
+ api.data.append('space', spaceId);
24565
+ api.data.append('owner', userId);
24566
+
24567
+ return api;
24568
+ `,
24551
24569
  adaptor: `
24552
24570
  const { context } = api.body;
24553
24571
  var rootUrl = context.rootUrl + "/api/files/${tableName}/";
@@ -25589,7 +25607,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
25589
25607
  {
25590
25608
  "args": {
25591
25609
  "api": {
25592
- "url": "${context.rootUrl}/api/files/files/${versions[0]}?download=true",
25610
+ "url": "${(versions[0] && versions[0].url) ? versions[0].url+'?download=true' : context.rootUrl+'/api/files/files/'+versions[0]+'?download=true'}",
25593
25611
  "method": "get",
25594
25612
  "headers": {
25595
25613
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
@@ -26069,6 +26087,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
26069
26087
  }
26070
26088
  return {
26071
26089
  mode: "cards",
26090
+ perPageAvailable: [5, 10, 20, 50, 100, 500],
26072
26091
  name: "thelist",
26073
26092
  headerToolbarClassName: "py-2 px-2 border-gray-300 border-solid border-b",
26074
26093
  className: "",
@@ -26091,6 +26110,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
26091
26110
 
26092
26111
  return {
26093
26112
  mode: "table",
26113
+ perPageAvailable: [5, 10, 20, 50, 100, 500],
26094
26114
  name: "thelist",
26095
26115
  headerToolbarClassName: "py-2 px-2 border-gray-300 border-solid border-b",
26096
26116
  className: "",
@@ -31629,6 +31649,10 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
31629
31649
  };
31630
31650
  }), 2), items = _w[0], setItems = _w[1];
31631
31651
  var _x = __read(React.useState(Object.keys(items)), 2), containers = _x[0], setContainers = _x[1];
31652
+ React.useEffect(function () {
31653
+ setItems(value);
31654
+ setContainers(Object.keys(value));
31655
+ }, [value]);
31632
31656
  var handleChange = function (newItems) { return __awaiter(_this, void 0, void 0, function () {
31633
31657
  var value, rendererEvent;
31634
31658
  return __generator(this, function (_a) {
@@ -31645,7 +31669,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
31645
31669
  if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
31646
31670
  return [2 /*return*/];
31647
31671
  }
31648
- setTimeout(function () { return amisOnChange(value); }, 1000);
31672
+ setTimeout(function () { return amisOnChange(value); }, 500);
31649
31673
  return [2 /*return*/];
31650
31674
  }
31651
31675
  });
@@ -31748,6 +31772,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
31748
31772
  var active = _a.active, over = _a.over;
31749
31773
  var overId = over === null || over === void 0 ? void 0 : over.id;
31750
31774
  if (overId == null || overId === TRASH_ID || active.id in items) {
31775
+ // 拖动的是分组则跳过后面的逻辑
31751
31776
  return;
31752
31777
  }
31753
31778
  var overContainer = findContainer(overId);
@@ -31825,14 +31850,37 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
31825
31850
  var overContainer = findContainer(overId);
31826
31851
  var newItems = items;
31827
31852
  if (overContainer) {
31828
- var activeIndex_1 = items[activeContainer].indexOf(active.id);
31829
- var overIndex_1 = items[overContainer].indexOf(overId);
31830
- if (activeIndex_1 !== overIndex_1) {
31831
- setItems(function (items) {
31832
- var _a;
31833
- newItems = __assign$1(__assign$1({}, items), (_a = {}, _a[overContainer] = arrayMove(items[overContainer], activeIndex_1, overIndex_1), _a));
31834
- return newItems;
31835
- });
31853
+ if (activeContainer !== overContainer) {
31854
+ // 拖动变更分组之间的顺序时,activeContainer overContainer 值不相等
31855
+ setTimeout(function () {
31856
+ var sortedGroups = over.data.current.sortable.items; //不加setTimeout的话,这里拿到的会是变更前的数据
31857
+ newItems = {};
31858
+ sortedGroups.forEach(function (groupKey) {
31859
+ newItems[groupKey] = items[groupKey];
31860
+ });
31861
+ delete newItems[TRASH_ID];
31862
+ delete newItems[PLACEHOLDER_ID];
31863
+ if (lodash.exports.keys(items).join(",") !== lodash.exports.keys(newItems).join(",")) {
31864
+ // 只有顺序发生变化时才触发change事件
31865
+ setItems(newItems);
31866
+ // console.log('拖动结束2,更新form value')
31867
+ handleChange(newItems);
31868
+ }
31869
+ setActiveId(null);
31870
+ }, 500);
31871
+ return;
31872
+ }
31873
+ else {
31874
+ // 同一个分组中字段顺序变更以及把一个字段从某个分组拖动到另一个分组内时,activeContainer 与 overContainer 值相等
31875
+ var activeIndex_1 = items[activeContainer].indexOf(active.id);
31876
+ var overIndex_1 = items[overContainer].indexOf(overId);
31877
+ if (activeIndex_1 !== overIndex_1) {
31878
+ setItems(function (items) {
31879
+ var _a;
31880
+ newItems = __assign$1(__assign$1({}, items), (_a = {}, _a[overContainer] = arrayMove(items[overContainer], activeIndex_1, overIndex_1), _a));
31881
+ return newItems;
31882
+ });
31883
+ }
31836
31884
  }
31837
31885
  }
31838
31886
  setActiveId(null);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos-widgets/sortable",
3
- "version": "1.3.4-beta.17",
3
+ "version": "1.3.4-beta.18",
4
4
  "main": "dist/sortable.cjs.js",
5
5
  "module": "dist/sortable.esm.js",
6
6
  "unpkg": "dist/sortable.umd.js",
@@ -45,7 +45,7 @@
45
45
  "dependencies": {
46
46
  "@dnd-kit/core": "^6.0.5",
47
47
  "@dnd-kit/sortable": "^7.0.1",
48
- "@steedos-widgets/amis-lib": "1.3.4-beta.17"
48
+ "@steedos-widgets/amis-lib": "1.3.4-beta.18"
49
49
  },
50
- "gitHead": "184247f4260015e19c82a49fa4d6562839e73d2c"
50
+ "gitHead": "8c6b4e9d5fd3c92df4d077cd3d1f781004a36031"
51
51
  }
@@ -1,6 +1,6 @@
1
1
  import React, { useCallback, useEffect, useRef, useState } from 'react';
2
2
  import { createPortal, unstable_batchedUpdates } from 'react-dom';
3
- import { map, keyBy, cloneDeep } from 'lodash';
3
+ import { map, keyBy, cloneDeep, keys } from 'lodash';
4
4
 
5
5
  import { createObject } from '@steedos-widgets/amis-lib'
6
6
 
@@ -227,6 +227,11 @@ export function MultipleContainers(props) {
227
227
  Object.keys(items) as UniqueIdentifier[]
228
228
  );
229
229
 
230
+ useEffect(() => {
231
+ setItems(value as Items);
232
+ setContainers(Object.keys(value) as UniqueIdentifier[]);
233
+ }, [value]);
234
+
230
235
  const handleChange = async (newItems? : any) => {
231
236
  if (!amisDispatchEvent || !amisOnChange)
232
237
  return
@@ -243,7 +248,7 @@ export function MultipleContainers(props) {
243
248
  return;
244
249
  }
245
250
 
246
- setTimeout(()=> amisOnChange(value), 1000);
251
+ setTimeout(()=> amisOnChange(value), 500);
247
252
  }
248
253
 
249
254
  const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);
@@ -384,6 +389,7 @@ export function MultipleContainers(props) {
384
389
  const overId = over?.id;
385
390
 
386
391
  if (overId == null || overId === TRASH_ID || active.id in items) {
392
+ // 拖动的是分组则跳过后面的逻辑
387
393
  return;
388
394
  }
389
395
 
@@ -496,21 +502,45 @@ export function MultipleContainers(props) {
496
502
  let newItems = items;
497
503
 
498
504
  if (overContainer) {
499
- const activeIndex = items[activeContainer].indexOf(active.id);
500
- const overIndex = items[overContainer].indexOf(overId);
501
-
502
- if (activeIndex !== overIndex) {
503
- setItems((items) => {
504
- newItems = {
505
- ...items,
506
- [overContainer]: arrayMove(
507
- items[overContainer],
508
- activeIndex,
509
- overIndex
510
- ),
505
+ if(activeContainer !== overContainer){
506
+ // 拖动变更分组之间的顺序时,activeContainer overContainer 值不相等
507
+ setTimeout(function(){
508
+ const sortedGroups = over.data.current.sortable.items; //不加setTimeout的话,这里拿到的会是变更前的数据
509
+ newItems = {};
510
+ sortedGroups.forEach((groupKey: string) => {
511
+ newItems[groupKey] = items[groupKey];
512
+ });
513
+ delete newItems[TRASH_ID];
514
+ delete newItems[PLACEHOLDER_ID];
515
+ if(keys(items).join(",") !== keys(newItems).join(",")){
516
+ // 只有顺序发生变化时才触发change事件
517
+ setItems(newItems);
518
+ // console.log('拖动结束2,更新form value')
519
+ handleChange(newItems)
511
520
  }
512
- return newItems;
513
- });
521
+
522
+ setActiveId(null);
523
+ },500);
524
+ return;
525
+ }
526
+ else {
527
+ // 同一个分组中字段顺序变更以及把一个字段从某个分组拖动到另一个分组内时,activeContainer 与 overContainer 值相等
528
+ const activeIndex = items[activeContainer].indexOf(active.id);
529
+ const overIndex = items[overContainer].indexOf(overId);
530
+
531
+ if (activeIndex !== overIndex) {
532
+ setItems((items) => {
533
+ newItems = {
534
+ ...items,
535
+ [overContainer]: arrayMove(
536
+ items[overContainer],
537
+ activeIndex,
538
+ overIndex
539
+ ),
540
+ }
541
+ return newItems;
542
+ });
543
+ }
514
544
  }
515
545
  }
516
546