@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.
- package/dist/assets.json +5 -5
- package/dist/sortable.cjs.js +117 -24
- package/dist/sortable.cjs.js.map +1 -1
- package/dist/sortable.esm.js +117 -24
- package/dist/sortable.esm.js.map +1 -1
- package/dist/sortable.umd.js +117 -24
- 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到最后
|
|
@@ -24175,10 +24178,10 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
24175
24178
|
|
|
24176
24179
|
const refObject = await getUISchema(referenceTo.objectName);
|
|
24177
24180
|
|
|
24178
|
-
//
|
|
24179
|
-
|
|
24180
|
-
//
|
|
24181
|
-
if(
|
|
24181
|
+
// 优先取字段中配置的enable_enhanced_lookup,字段上没配置时,才从对象上取enable_enhanced_lookup属性
|
|
24182
|
+
let enableEnhancedLookup = lodash.exports.isBoolean(field.enable_enhanced_lookup) ? field.enable_enhanced_lookup : refObject.enable_enhanced_lookup;
|
|
24183
|
+
// 默认使用下拉框模式显示lookup选项,只能配置了enable_enhanced_lookup才使用弹出增强模式
|
|
24184
|
+
if(enableEnhancedLookup == 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}/";
|
|
@@ -25289,8 +25307,44 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25289
25307
|
};
|
|
25290
25308
|
|
|
25291
25309
|
async function getQuickEditSchema(field, options){
|
|
25310
|
+
//判断在amis3.2以上环境下,放开批量编辑
|
|
25311
|
+
const isAmisVersionforBatchEdit = amisRequire('amis').version[0] >= 3 && amisRequire('amis').version[2] >= 2;
|
|
25292
25312
|
const quickEditId = options.objectName + "_" + field.name + "QuickEdit";//定义快速编辑的表单id,用于setvalue传值
|
|
25293
25313
|
var quickEditSchema = { body: [], id: quickEditId };
|
|
25314
|
+
//select,avatar,image,file等组件无法行记录字段赋值,暂不支持批量编辑;
|
|
25315
|
+
if(field.type != 'avatar' && field.type != 'image' && field.type != 'file' && isAmisVersionforBatchEdit){
|
|
25316
|
+
const submitEvent = {
|
|
25317
|
+
submit: {
|
|
25318
|
+
actions: [
|
|
25319
|
+
{
|
|
25320
|
+
actionType: "custom",
|
|
25321
|
+
script: `
|
|
25322
|
+
const items = event.data.items;
|
|
25323
|
+
const selectedItems = event.data.selectedItems;
|
|
25324
|
+
if(event.data.isBatchEdit){
|
|
25325
|
+
selectedItems.forEach(function(selectedItem){
|
|
25326
|
+
items[selectedItem._index-1]._display.${field.name} = event.data._display.${field.name};
|
|
25327
|
+
})
|
|
25328
|
+
doAction({actionType: 'setValue', "args": {"value": {items}},componentId: "${options.crudId}","dataMergeMode": "override"});
|
|
25329
|
+
selectedItems.forEach(function(selectedItem){
|
|
25330
|
+
doAction({actionType: 'setValue', "args": {"value": event.data.${field.name}},componentId: "${options.objectName + "_" + field.name + "_"}" + selectedItem._index});
|
|
25331
|
+
})
|
|
25332
|
+
}else{
|
|
25333
|
+
items[event.data._index-1]._display.${field.name} = event.data._display.${field.name};
|
|
25334
|
+
doAction({actionType: 'setValue', "args": {"value": {items}},componentId: "${options.crudId}","dataMergeMode": "override"});
|
|
25335
|
+
doAction({actionType: 'setValue', "args": {"value": event.data.${field.name}},componentId: "${options.objectName + "_" + field.name + "_"}" + event.data._index});
|
|
25336
|
+
}
|
|
25337
|
+
`
|
|
25338
|
+
},
|
|
25339
|
+
{
|
|
25340
|
+
"actionType": "closeDialog"
|
|
25341
|
+
}
|
|
25342
|
+
]
|
|
25343
|
+
}
|
|
25344
|
+
};
|
|
25345
|
+
quickEditSchema.onEvent = submitEvent;
|
|
25346
|
+
}
|
|
25347
|
+
|
|
25294
25348
|
if (field.disabled) {
|
|
25295
25349
|
quickEditSchema = false;
|
|
25296
25350
|
} else {
|
|
@@ -25524,6 +25578,14 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25524
25578
|
}
|
|
25525
25579
|
|
|
25526
25580
|
});
|
|
25581
|
+
if(field.type != 'avatar' && field.type != 'image' && field.type != 'file' && isAmisVersionforBatchEdit){
|
|
25582
|
+
quickEditSchema.body.push({
|
|
25583
|
+
"name": "isBatchEdit",
|
|
25584
|
+
"type": "checkbox",
|
|
25585
|
+
"option": "更新${COUNT(selectedItems)}个选定记录",
|
|
25586
|
+
"visibleOn": "${ARRAYSOME(selectedItems, item => item._id === _id) && COUNT(selectedItems)>1}"
|
|
25587
|
+
});
|
|
25588
|
+
}
|
|
25527
25589
|
} else {
|
|
25528
25590
|
quickEditSchema = false;
|
|
25529
25591
|
}
|
|
@@ -25589,7 +25651,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25589
25651
|
{
|
|
25590
25652
|
"args": {
|
|
25591
25653
|
"api": {
|
|
25592
|
-
"url": "${context.rootUrl
|
|
25654
|
+
"url": "${(versions[0] && versions[0].url) ? versions[0].url+'?download=true' : context.rootUrl+'/api/files/files/'+versions[0]+'?download=true'}",
|
|
25593
25655
|
"method": "get",
|
|
25594
25656
|
"headers": {
|
|
25595
25657
|
"Authorization": "Bearer ${context.tenantId},${context.authToken}"
|
|
@@ -25636,7 +25698,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25636
25698
|
else if(field.type === 'select'){
|
|
25637
25699
|
const map = getSelectMap(field.options);
|
|
25638
25700
|
columnItem = Object.assign({}, {
|
|
25639
|
-
type: "mapping",
|
|
25701
|
+
type: "static-mapping",
|
|
25640
25702
|
name: field.name,
|
|
25641
25703
|
label: field.label,
|
|
25642
25704
|
map: map,
|
|
@@ -25651,7 +25713,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25651
25713
|
const tpl = await getFieldTpl(field, options);
|
|
25652
25714
|
let type = 'text';
|
|
25653
25715
|
if(tpl){
|
|
25654
|
-
type = '
|
|
25716
|
+
type = 'static';
|
|
25655
25717
|
}else if(field.type === 'html'){
|
|
25656
25718
|
type = 'markdown';
|
|
25657
25719
|
}else if(field.type === 'url'){
|
|
@@ -25692,6 +25754,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
25692
25754
|
columnItem.quickEdit = quickEditSchema;
|
|
25693
25755
|
columnItem.quickEditEnabledOn = "${is_system !== true}";
|
|
25694
25756
|
}
|
|
25757
|
+
columnItem.id = `${options.objectName}_${field.name}_\${_index}`;
|
|
25695
25758
|
columns.push(columnItem);
|
|
25696
25759
|
}
|
|
25697
25760
|
}
|
|
@@ -26069,6 +26132,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
26069
26132
|
}
|
|
26070
26133
|
return {
|
|
26071
26134
|
mode: "cards",
|
|
26135
|
+
perPageAvailable: [5, 10, 20, 50, 100, 500],
|
|
26072
26136
|
name: "thelist",
|
|
26073
26137
|
headerToolbarClassName: "py-2 px-2 border-gray-300 border-solid border-b",
|
|
26074
26138
|
className: "",
|
|
@@ -26091,6 +26155,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
26091
26155
|
|
|
26092
26156
|
return {
|
|
26093
26157
|
mode: "table",
|
|
26158
|
+
perPageAvailable: [5, 10, 20, 50, 100, 500],
|
|
26094
26159
|
name: "thelist",
|
|
26095
26160
|
headerToolbarClassName: "py-2 px-2 border-gray-300 border-solid border-b",
|
|
26096
26161
|
className: "",
|
|
@@ -31629,6 +31694,10 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
31629
31694
|
};
|
|
31630
31695
|
}), 2), items = _w[0], setItems = _w[1];
|
|
31631
31696
|
var _x = __read(React.useState(Object.keys(items)), 2), containers = _x[0], setContainers = _x[1];
|
|
31697
|
+
React.useEffect(function () {
|
|
31698
|
+
setItems(value);
|
|
31699
|
+
setContainers(Object.keys(value));
|
|
31700
|
+
}, [value]);
|
|
31632
31701
|
var handleChange = function (newItems) { return __awaiter(_this, void 0, void 0, function () {
|
|
31633
31702
|
var value, rendererEvent;
|
|
31634
31703
|
return __generator(this, function (_a) {
|
|
@@ -31645,7 +31714,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
31645
31714
|
if (rendererEvent === null || rendererEvent === void 0 ? void 0 : rendererEvent.prevented) {
|
|
31646
31715
|
return [2 /*return*/];
|
|
31647
31716
|
}
|
|
31648
|
-
setTimeout(function () { return amisOnChange(value); },
|
|
31717
|
+
setTimeout(function () { return amisOnChange(value); }, 500);
|
|
31649
31718
|
return [2 /*return*/];
|
|
31650
31719
|
}
|
|
31651
31720
|
});
|
|
@@ -31748,6 +31817,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
31748
31817
|
var active = _a.active, over = _a.over;
|
|
31749
31818
|
var overId = over === null || over === void 0 ? void 0 : over.id;
|
|
31750
31819
|
if (overId == null || overId === TRASH_ID || active.id in items) {
|
|
31820
|
+
// 拖动的是分组则跳过后面的逻辑
|
|
31751
31821
|
return;
|
|
31752
31822
|
}
|
|
31753
31823
|
var overContainer = findContainer(overId);
|
|
@@ -31825,14 +31895,37 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
|
|
|
31825
31895
|
var overContainer = findContainer(overId);
|
|
31826
31896
|
var newItems = items;
|
|
31827
31897
|
if (overContainer) {
|
|
31828
|
-
|
|
31829
|
-
|
|
31830
|
-
|
|
31831
|
-
|
|
31832
|
-
|
|
31833
|
-
|
|
31834
|
-
|
|
31835
|
-
|
|
31898
|
+
if (activeContainer !== overContainer) {
|
|
31899
|
+
// 拖动变更分组之间的顺序时,activeContainer 与 overContainer 值不相等
|
|
31900
|
+
setTimeout(function () {
|
|
31901
|
+
var sortedGroups = over.data.current.sortable.items; //不加setTimeout的话,这里拿到的会是变更前的数据
|
|
31902
|
+
newItems = {};
|
|
31903
|
+
sortedGroups.forEach(function (groupKey) {
|
|
31904
|
+
newItems[groupKey] = items[groupKey];
|
|
31905
|
+
});
|
|
31906
|
+
delete newItems[TRASH_ID];
|
|
31907
|
+
delete newItems[PLACEHOLDER_ID];
|
|
31908
|
+
if (lodash.exports.keys(items).join(",") !== lodash.exports.keys(newItems).join(",")) {
|
|
31909
|
+
// 只有顺序发生变化时才触发change事件
|
|
31910
|
+
setItems(newItems);
|
|
31911
|
+
// console.log('拖动结束2,更新form value')
|
|
31912
|
+
handleChange(newItems);
|
|
31913
|
+
}
|
|
31914
|
+
setActiveId(null);
|
|
31915
|
+
}, 500);
|
|
31916
|
+
return;
|
|
31917
|
+
}
|
|
31918
|
+
else {
|
|
31919
|
+
// 同一个分组中字段顺序变更以及把一个字段从某个分组拖动到另一个分组内时,activeContainer 与 overContainer 值相等
|
|
31920
|
+
var activeIndex_1 = items[activeContainer].indexOf(active.id);
|
|
31921
|
+
var overIndex_1 = items[overContainer].indexOf(overId);
|
|
31922
|
+
if (activeIndex_1 !== overIndex_1) {
|
|
31923
|
+
setItems(function (items) {
|
|
31924
|
+
var _a;
|
|
31925
|
+
newItems = __assign$1(__assign$1({}, items), (_a = {}, _a[overContainer] = arrayMove(items[overContainer], activeIndex_1, overIndex_1), _a));
|
|
31926
|
+
return newItems;
|
|
31927
|
+
});
|
|
31928
|
+
}
|
|
31836
31929
|
}
|
|
31837
31930
|
}
|
|
31838
31931
|
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.19",
|
|
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.19"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "e0636927f13d497d2f2838d60ead4abaa331a615"
|
|
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
|
|