@steedos-widgets/sortable 1.3.4-beta.16 → 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: "",
@@ -31619,7 +31639,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
31619
31639
  "type": "tpl",
31620
31640
  "tpl": "${label}",
31621
31641
  }] : _r, _s = props.boardFooter, boardFooter = _s === void 0 ? [] : _s, _t = props.wrapperClassName, wrapperClassName = _t === void 0 ? "gap-2" : _t, _u = props.boardClassName, boardClassName = _u === void 0 ? "border rounded" : _u, _v = props.cardClassName, cardClassName = _v === void 0 ? "" : _v;
31622
- // defaultValue && delete(defaultValue.$$id);
31642
+ value && delete (value.$$id);
31623
31643
  var _w = __read(React.useState(function () {
31624
31644
  var _a;
31625
31645
  return (_a = value) !== null && _a !== void 0 ? _a : {
@@ -31629,14 +31649,18 @@ 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];
31632
- var handleChange = function () { return __awaiter(_this, void 0, void 0, function () {
31652
+ React.useEffect(function () {
31653
+ setItems(value);
31654
+ setContainers(Object.keys(value));
31655
+ }, [value]);
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) {
31635
31659
  switch (_a.label) {
31636
31660
  case 0:
31637
31661
  if (!amisDispatchEvent || !amisOnChange)
31638
31662
  return [2 /*return*/];
31639
- value = items;
31663
+ value = newItems || items;
31640
31664
  return [4 /*yield*/, amisDispatchEvent('change', createObject(amisData, {
31641
31665
  value: value
31642
31666
  }))];
@@ -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);
@@ -31823,19 +31848,44 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
31823
31848
  return;
31824
31849
  }
31825
31850
  var overContainer = findContainer(overId);
31851
+ var newItems = items;
31826
31852
  if (overContainer) {
31827
- var activeIndex_1 = items[activeContainer].indexOf(active.id);
31828
- var overIndex_1 = items[overContainer].indexOf(overId);
31829
- if (activeIndex_1 !== overIndex_1) {
31830
- setItems(function (items) {
31831
- var _a;
31832
- return (__assign$1(__assign$1({}, items), (_a = {}, _a[overContainer] = arrayMove(items[overContainer], activeIndex_1, overIndex_1), _a)));
31833
- });
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
+ }
31834
31884
  }
31835
31885
  }
31836
31886
  setActiveId(null);
31837
31887
  // console.log('拖动结束2,更新form value')
31838
- handleChange();
31888
+ handleChange(newItems);
31839
31889
  }, cancelDrop: cancelDrop, onDragCancel: onDragCancel, modifiers: modifiers },
31840
31890
  React__default["default"].createElement("div", { style: {
31841
31891
  display: 'inline-grid',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steedos-widgets/sortable",
3
- "version": "1.3.4-beta.16",
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.16"
48
+ "@steedos-widgets/amis-lib": "1.3.4-beta.18"
49
49
  },
50
- "gitHead": "0e609d74ccbe4cf4fe69728349010d6fab90a439"
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
 
@@ -211,7 +211,7 @@ export function MultipleContainers(props) {
211
211
  cardClassName = "",
212
212
  }: Props = props
213
213
 
214
- // defaultValue && delete(defaultValue.$$id);
214
+ value && delete(value.$$id);
215
215
 
216
216
  const [items, setItems] = useState<Items>(
217
217
  () => {
@@ -227,10 +227,15 @@ export function MultipleContainers(props) {
227
227
  Object.keys(items) as UniqueIdentifier[]
228
228
  );
229
229
 
230
- const handleChange = async () => {
230
+ useEffect(() => {
231
+ setItems(value as Items);
232
+ setContainers(Object.keys(value) as UniqueIdentifier[]);
233
+ }, [value]);
234
+
235
+ const handleChange = async (newItems? : any) => {
231
236
  if (!amisDispatchEvent || !amisOnChange)
232
237
  return
233
- const value = items;
238
+ const value = newItems || items;
234
239
 
235
240
  // 支持 amis OnEvent.change
236
241
  const rendererEvent = await amisDispatchEvent(
@@ -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
 
@@ -493,26 +499,55 @@ export function MultipleContainers(props) {
493
499
 
494
500
  const overContainer = findContainer(overId);
495
501
 
496
- if (overContainer) {
497
- const activeIndex = items[activeContainer].indexOf(active.id);
498
- const overIndex = items[overContainer].indexOf(overId);
502
+ let newItems = items;
499
503
 
500
- if (activeIndex !== overIndex) {
501
- setItems((items) => ({
502
- ...items,
503
- [overContainer]: arrayMove(
504
- items[overContainer],
505
- activeIndex,
506
- overIndex
507
- ),
508
- }));
504
+ if (overContainer) {
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)
520
+ }
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
+ }
509
544
  }
510
545
  }
511
546
 
512
547
  setActiveId(null);
513
548
 
514
549
  // console.log('拖动结束2,更新form value')
515
- handleChange()
550
+ handleChange(newItems)
516
551
  }}
517
552
  cancelDrop={cancelDrop}
518
553
  onDragCancel={onDragCancel}