@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.
- package/dist/assets.json +5 -5
- package/dist/sortable.cjs.js +67 -19
- package/dist/sortable.cjs.js.map +1 -1
- package/dist/sortable.esm.js +67 -19
- package/dist/sortable.esm.js.map +1 -1
- package/dist/sortable.umd.js +67 -19
- package/package.json +3 -3
- package/src/components/MultipleContainers.tsx +46 -16
package/dist/sortable.umd.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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:
|
|
24495
|
-
* @LastEditTime:
|
|
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
|
-
|
|
24548
|
-
|
|
24549
|
-
|
|
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
|
|
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); },
|
|
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
|
-
|
|
31829
|
-
|
|
31830
|
-
|
|
31831
|
-
|
|
31832
|
-
|
|
31833
|
-
|
|
31834
|
-
|
|
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.
|
|
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.
|
|
48
|
+
"@steedos-widgets/amis-lib": "1.3.4-beta.18"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
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),
|
|
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
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
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
|
-
|
|
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
|
|