@nocobase/plugin-flow-engine 2.1.0-beta.17 → 2.1.0-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/ai/ai-employees/nathan/skills/frontend-developer/SKILLS.md +2 -2
- package/dist/externalVersion.js +10 -10
- package/dist/node_modules/ses/package.json +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/flow-surfaces/action-scope.d.ts +1 -0
- package/dist/server/flow-surfaces/action-scope.js +4 -0
- package/dist/server/flow-surfaces/association-title-field.d.ts +1 -1
- package/dist/server/flow-surfaces/association-title-field.js +38 -4
- package/dist/server/flow-surfaces/blueprint/compile-blocks.js +24 -2
- package/dist/server/flow-surfaces/blueprint/public-types.d.ts +1 -1
- package/dist/server/flow-surfaces/builder.js +69 -1
- package/dist/server/flow-surfaces/catalog.d.ts +1 -1
- package/dist/server/flow-surfaces/catalog.js +187 -106
- package/dist/server/flow-surfaces/compose-compiler.js +1 -1
- package/dist/server/flow-surfaces/configure-options.js +33 -0
- package/dist/server/flow-surfaces/core-field-default-bindings.d.ts +12 -0
- package/dist/server/flow-surfaces/core-field-default-bindings.js +157 -0
- package/dist/server/flow-surfaces/default-block-actions.js +24 -0
- package/dist/server/flow-surfaces/field-semantics.js +3 -1
- package/dist/server/flow-surfaces/index.js +61 -2
- package/dist/server/flow-surfaces/node-use-sets.js +3 -0
- package/dist/server/flow-surfaces/placement.js +3 -0
- package/dist/server/flow-surfaces/public-data-surface-default-filter.d.ts +4 -0
- package/dist/server/flow-surfaces/public-data-surface-default-filter.js +45 -4
- package/dist/server/flow-surfaces/service-helpers.js +3 -70
- package/dist/server/flow-surfaces/service.d.ts +42 -1
- package/dist/server/flow-surfaces/service.js +1392 -124
- package/dist/server/flow-surfaces/support-matrix.d.ts +1 -1
- package/dist/server/flow-surfaces/support-matrix.js +12 -0
- package/dist/server/flow-surfaces/surface-context.js +8 -5
- package/dist/swagger/flow-surfaces.examples.d.ts +39 -0
- package/dist/swagger/flow-surfaces.examples.js +47 -0
- package/dist/swagger/flow-surfaces.js +15 -8
- package/package.json +2 -2
|
@@ -55,6 +55,7 @@ var import_approval = require("./approval");
|
|
|
55
55
|
var import_action_scope = require("./action-scope");
|
|
56
56
|
var import_errors = require("./errors");
|
|
57
57
|
var import_field_semantics = require("./field-semantics");
|
|
58
|
+
var import_core_field_default_bindings = require("./core-field-default-bindings");
|
|
58
59
|
var import_field_binding_registry = require("./field-binding-registry");
|
|
59
60
|
var import_service_helpers = require("./service-helpers");
|
|
60
61
|
var import_support_matrix = require("./support-matrix");
|
|
@@ -70,6 +71,9 @@ const OPEN_VIEW_SCENE_SCHEMA = {
|
|
|
70
71
|
const OBJECT_SCHEMA = { type: "object" };
|
|
71
72
|
const NUMBER_SCHEMA = { type: "number" };
|
|
72
73
|
const ARRAY_SCHEMA = { type: "array" };
|
|
74
|
+
const NULLABLE_NUMBER_OR_STRING_SCHEMA = {
|
|
75
|
+
oneOf: [NUMBER_SCHEMA, NULLABLE_STRING_SCHEMA]
|
|
76
|
+
};
|
|
73
77
|
const FILTER_CONDITION_SCHEMA = {
|
|
74
78
|
type: "object",
|
|
75
79
|
properties: {
|
|
@@ -329,6 +333,49 @@ const CALENDAR_SETTINGS_GROUP = {
|
|
|
329
333
|
"linkageRules.value": ARRAY_SCHEMA
|
|
330
334
|
}
|
|
331
335
|
};
|
|
336
|
+
const KANBAN_SETTINGS_GROUP = {
|
|
337
|
+
allowedPaths: [
|
|
338
|
+
"grouping.groupField",
|
|
339
|
+
"grouping.groupTitleField",
|
|
340
|
+
"grouping.groupColorField",
|
|
341
|
+
"grouping.groupOptions",
|
|
342
|
+
"styleVariant.styleVariant",
|
|
343
|
+
"defaultSorting.sort",
|
|
344
|
+
"dragEnabled.dragEnabled",
|
|
345
|
+
"dragSortBy.dragSortBy",
|
|
346
|
+
"quickCreate.quickCreateEnabled",
|
|
347
|
+
"popup.mode",
|
|
348
|
+
"popup.size",
|
|
349
|
+
"popup.popupTemplateUid",
|
|
350
|
+
"popup.pageModelClass",
|
|
351
|
+
"popup.uid",
|
|
352
|
+
"pageSize.pageSize",
|
|
353
|
+
"columnWidth.columnWidth",
|
|
354
|
+
"dataScope.filter"
|
|
355
|
+
],
|
|
356
|
+
clearable: true,
|
|
357
|
+
mergeStrategy: "deep",
|
|
358
|
+
eventBindingSteps: ["defaultSorting", "dataScope"],
|
|
359
|
+
pathSchemas: {
|
|
360
|
+
"grouping.groupField": STRING_SCHEMA,
|
|
361
|
+
"grouping.groupTitleField": NULLABLE_STRING_SCHEMA,
|
|
362
|
+
"grouping.groupColorField": NULLABLE_STRING_SCHEMA,
|
|
363
|
+
"grouping.groupOptions": ARRAY_SCHEMA,
|
|
364
|
+
"styleVariant.styleVariant": STRING_SCHEMA,
|
|
365
|
+
"defaultSorting.sort": ARRAY_SCHEMA,
|
|
366
|
+
"dragEnabled.dragEnabled": BOOLEAN_SCHEMA,
|
|
367
|
+
"dragSortBy.dragSortBy": NULLABLE_STRING_SCHEMA,
|
|
368
|
+
"quickCreate.quickCreateEnabled": BOOLEAN_SCHEMA,
|
|
369
|
+
"popup.mode": STRING_SCHEMA,
|
|
370
|
+
"popup.size": STRING_SCHEMA,
|
|
371
|
+
"popup.popupTemplateUid": NULLABLE_STRING_SCHEMA,
|
|
372
|
+
"popup.pageModelClass": NULLABLE_STRING_SCHEMA,
|
|
373
|
+
"popup.uid": NULLABLE_STRING_SCHEMA,
|
|
374
|
+
"pageSize.pageSize": NUMBER_SCHEMA,
|
|
375
|
+
"columnWidth.columnWidth": NUMBER_SCHEMA,
|
|
376
|
+
"dataScope.filter": FILTER_GROUP_SCHEMA
|
|
377
|
+
}
|
|
378
|
+
};
|
|
332
379
|
const TABLE_SETTINGS_GROUP = {
|
|
333
380
|
allowedPaths: [
|
|
334
381
|
"quickEdit.editable",
|
|
@@ -382,7 +429,9 @@ const EDITABLE_FIELD_USE_SET = /* @__PURE__ */ new Set([
|
|
|
382
429
|
"JsonFieldModel",
|
|
383
430
|
"TextareaFieldModel",
|
|
384
431
|
"IconFieldModel",
|
|
432
|
+
"RadioGroupFieldModel",
|
|
385
433
|
"SelectFieldModel",
|
|
434
|
+
"CheckboxGroupFieldModel",
|
|
386
435
|
"ColorFieldModel",
|
|
387
436
|
"CheckboxFieldModel",
|
|
388
437
|
"PasswordFieldModel",
|
|
@@ -871,6 +920,40 @@ CALENDAR_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
871
920
|
calendarSettings: CALENDAR_SETTINGS_GROUP,
|
|
872
921
|
cardSettings: BLOCK_CARD_SETTINGS_GROUP
|
|
873
922
|
});
|
|
923
|
+
const KANBAN_BLOCK_CONTRACT = createContract({
|
|
924
|
+
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
925
|
+
props: [
|
|
926
|
+
"groupField",
|
|
927
|
+
"groupTitleField",
|
|
928
|
+
"groupColorField",
|
|
929
|
+
"groupOptions",
|
|
930
|
+
"styleVariant",
|
|
931
|
+
"sortField",
|
|
932
|
+
"globalSort",
|
|
933
|
+
"dragEnabled",
|
|
934
|
+
"dragSortBy",
|
|
935
|
+
"quickCreateEnabled",
|
|
936
|
+
"popupMode",
|
|
937
|
+
"popupSize",
|
|
938
|
+
"popupTemplateUid",
|
|
939
|
+
"popupPageModelClass",
|
|
940
|
+
"popupTargetUid",
|
|
941
|
+
"pageSize",
|
|
942
|
+
"columnWidth"
|
|
943
|
+
],
|
|
944
|
+
decoratorProps: ["height", "heightMode"],
|
|
945
|
+
stepParams: ["resourceSettings", "kanbanSettings", "cardSettings"],
|
|
946
|
+
flowRegistry: true,
|
|
947
|
+
eventCapabilities: {
|
|
948
|
+
direct: DEFAULT_DIRECT_EVENTS,
|
|
949
|
+
object: ["click"]
|
|
950
|
+
}
|
|
951
|
+
});
|
|
952
|
+
KANBAN_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
953
|
+
resourceSettings: RESOURCE_SETTINGS_GROUP,
|
|
954
|
+
kanbanSettings: KANBAN_SETTINGS_GROUP,
|
|
955
|
+
cardSettings: BLOCK_CARD_SETTINGS_GROUP
|
|
956
|
+
});
|
|
874
957
|
const LIST_BLOCK_CONTRACT = createContract({
|
|
875
958
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
876
959
|
props: [],
|
|
@@ -968,6 +1051,61 @@ GRID_CARD_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
968
1051
|
},
|
|
969
1052
|
cardSettings: BLOCK_CARD_SETTINGS_GROUP
|
|
970
1053
|
});
|
|
1054
|
+
const KANBAN_CARD_ITEM_CONTRACT = createContract({
|
|
1055
|
+
editableDomains: ["props", "stepParams", "flowRegistry"],
|
|
1056
|
+
props: [
|
|
1057
|
+
"enableCardClick",
|
|
1058
|
+
"openMode",
|
|
1059
|
+
"popupSize",
|
|
1060
|
+
"popupTemplateUid",
|
|
1061
|
+
"pageModelClass",
|
|
1062
|
+
"popupTargetUid",
|
|
1063
|
+
"layout",
|
|
1064
|
+
"labelAlign",
|
|
1065
|
+
"labelWidth",
|
|
1066
|
+
"labelWrap",
|
|
1067
|
+
"colon"
|
|
1068
|
+
],
|
|
1069
|
+
stepParams: ["cardSettings"],
|
|
1070
|
+
flowRegistry: true,
|
|
1071
|
+
eventCapabilities: {
|
|
1072
|
+
direct: DEFAULT_DIRECT_EVENTS,
|
|
1073
|
+
object: ["click"]
|
|
1074
|
+
}
|
|
1075
|
+
});
|
|
1076
|
+
KANBAN_CARD_ITEM_CONTRACT.domains.stepParams = groupedDomain({
|
|
1077
|
+
cardSettings: {
|
|
1078
|
+
allowedPaths: [
|
|
1079
|
+
"click.enableCardClick",
|
|
1080
|
+
"popup.mode",
|
|
1081
|
+
"popup.size",
|
|
1082
|
+
"popup.popupTemplateUid",
|
|
1083
|
+
"popup.pageModelClass",
|
|
1084
|
+
"popup.uid",
|
|
1085
|
+
"layout.layout",
|
|
1086
|
+
"layout.labelAlign",
|
|
1087
|
+
"layout.labelWidth",
|
|
1088
|
+
"layout.labelWrap",
|
|
1089
|
+
"layout.colon"
|
|
1090
|
+
],
|
|
1091
|
+
clearable: true,
|
|
1092
|
+
mergeStrategy: "deep",
|
|
1093
|
+
eventBindingSteps: ["click", "popup", "layout"],
|
|
1094
|
+
pathSchemas: {
|
|
1095
|
+
"click.enableCardClick": BOOLEAN_SCHEMA,
|
|
1096
|
+
"popup.mode": STRING_SCHEMA,
|
|
1097
|
+
"popup.size": STRING_SCHEMA,
|
|
1098
|
+
"popup.popupTemplateUid": NULLABLE_STRING_SCHEMA,
|
|
1099
|
+
"popup.pageModelClass": NULLABLE_STRING_SCHEMA,
|
|
1100
|
+
"popup.uid": NULLABLE_STRING_SCHEMA,
|
|
1101
|
+
"layout.layout": STRING_SCHEMA,
|
|
1102
|
+
"layout.labelAlign": STRING_SCHEMA,
|
|
1103
|
+
"layout.labelWidth": NULLABLE_NUMBER_OR_STRING_SCHEMA,
|
|
1104
|
+
"layout.labelWrap": BOOLEAN_SCHEMA,
|
|
1105
|
+
"layout.colon": BOOLEAN_SCHEMA
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
});
|
|
971
1109
|
const MARKDOWN_BLOCK_CONTRACT = createContract({
|
|
972
1110
|
editableDomains: ["props", "stepParams", "flowRegistry"],
|
|
973
1111
|
props: ["content", "value"],
|
|
@@ -1578,6 +1716,28 @@ CALENDAR_POPUP_ACTION_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
1578
1716
|
pathSchemas: OPEN_VIEW_PATH_SCHEMAS
|
|
1579
1717
|
}
|
|
1580
1718
|
});
|
|
1719
|
+
const KANBAN_POPUP_ACTION_CONTRACT = createContract({
|
|
1720
|
+
editableDomains: ["stepParams"],
|
|
1721
|
+
stepParams: ["popupSettings"],
|
|
1722
|
+
eventCapabilities: {
|
|
1723
|
+
direct: ACTION_DIRECT_EVENTS,
|
|
1724
|
+
object: ACTION_OBJECT_EVENTS
|
|
1725
|
+
},
|
|
1726
|
+
eventBindings: {
|
|
1727
|
+
popupSettings: {
|
|
1728
|
+
stepKeys: ["openView"]
|
|
1729
|
+
}
|
|
1730
|
+
}
|
|
1731
|
+
});
|
|
1732
|
+
KANBAN_POPUP_ACTION_CONTRACT.domains.stepParams = groupedDomain({
|
|
1733
|
+
popupSettings: {
|
|
1734
|
+
allowedPaths: OPEN_VIEW_ALLOWED_PATHS,
|
|
1735
|
+
clearable: true,
|
|
1736
|
+
mergeStrategy: "deep",
|
|
1737
|
+
eventBindingSteps: ["openView"],
|
|
1738
|
+
pathSchemas: OPEN_VIEW_PATH_SCHEMAS
|
|
1739
|
+
}
|
|
1740
|
+
});
|
|
1581
1741
|
const DELETE_ACTION_CONTRACT = createContract({
|
|
1582
1742
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
1583
1743
|
props: ACTION_PROP_KEYS,
|
|
@@ -2225,6 +2385,7 @@ const NODE_CONTRACT_ENTRIES = [
|
|
|
2225
2385
|
["ApprovalBlockGridModel", GRID_NODE_CONTRACT],
|
|
2226
2386
|
["TableBlockModel", TABLE_BLOCK_CONTRACT],
|
|
2227
2387
|
["CalendarBlockModel", CALENDAR_BLOCK_CONTRACT],
|
|
2388
|
+
["KanbanBlockModel", KANBAN_BLOCK_CONTRACT],
|
|
2228
2389
|
["CreateFormModel", CREATE_FORM_BLOCK_CONTRACT],
|
|
2229
2390
|
["EditFormModel", EDIT_FORM_BLOCK_CONTRACT],
|
|
2230
2391
|
["FormBlockModel", FORM_BLOCK_CONTRACT],
|
|
@@ -2246,6 +2407,7 @@ const NODE_CONTRACT_ENTRIES = [
|
|
|
2246
2407
|
["FormItemModel", FORM_ITEM_CONTRACT],
|
|
2247
2408
|
["FormAssociationItemModel", DETAILS_ITEM_CONTRACT],
|
|
2248
2409
|
["DetailsItemModel", DETAILS_ITEM_CONTRACT],
|
|
2410
|
+
["KanbanCardItemModel", KANBAN_CARD_ITEM_CONTRACT],
|
|
2249
2411
|
["FilterFormItemModel", FILTER_FORM_ITEM_CONTRACT],
|
|
2250
2412
|
["PatternFormItemModel", FORM_ITEM_CONTRACT],
|
|
2251
2413
|
["ApprovalDetailsItemModel", DETAILS_ITEM_CONTRACT],
|
|
@@ -2265,6 +2427,8 @@ const NODE_CONTRACT_ENTRIES = [
|
|
|
2265
2427
|
["PopupCollectionActionModel", POPUP_ACTION_CONTRACT],
|
|
2266
2428
|
["CalendarQuickCreateActionModel", CALENDAR_POPUP_ACTION_CONTRACT],
|
|
2267
2429
|
["CalendarEventViewActionModel", CALENDAR_POPUP_ACTION_CONTRACT],
|
|
2430
|
+
["KanbanQuickCreateActionModel", KANBAN_POPUP_ACTION_CONTRACT],
|
|
2431
|
+
["KanbanCardViewActionModel", KANBAN_POPUP_ACTION_CONTRACT],
|
|
2268
2432
|
["AddChildActionModel", POPUP_ACTION_CONTRACT],
|
|
2269
2433
|
["DeleteActionModel", DELETE_ACTION_CONTRACT],
|
|
2270
2434
|
["BulkDeleteActionModel", DELETE_ACTION_CONTRACT],
|
|
@@ -2353,112 +2517,19 @@ function inferEditableFieldUse(fieldInterface) {
|
|
|
2353
2517
|
if (["m2m", "m2o", "o2o", "o2m", "oho", "obo", "updatedBy", "createdBy", "mbm"].includes(fieldInterface)) {
|
|
2354
2518
|
return "RecordSelectFieldModel";
|
|
2355
2519
|
}
|
|
2356
|
-
|
|
2357
|
-
json: "JsonFieldModel",
|
|
2358
|
-
textarea: "TextareaFieldModel",
|
|
2359
|
-
icon: "IconFieldModel",
|
|
2360
|
-
radioGroup: "SelectFieldModel",
|
|
2361
|
-
color: "ColorFieldModel",
|
|
2362
|
-
select: "SelectFieldModel",
|
|
2363
|
-
multipleSelect: "SelectFieldModel",
|
|
2364
|
-
checkboxGroup: "SelectFieldModel",
|
|
2365
|
-
checkbox: "CheckboxFieldModel",
|
|
2366
|
-
password: "PasswordFieldModel",
|
|
2367
|
-
number: "NumberFieldModel",
|
|
2368
|
-
integer: "NumberFieldModel",
|
|
2369
|
-
id: "NumberFieldModel",
|
|
2370
|
-
snowflakeId: "NumberFieldModel",
|
|
2371
|
-
percent: "PercentFieldModel",
|
|
2372
|
-
datetimeNoTz: "DateTimeNoTzFieldModel",
|
|
2373
|
-
date: "DateOnlyFieldModel",
|
|
2374
|
-
datetime: "DateTimeTzFieldModel",
|
|
2375
|
-
createdAt: "DateTimeTzFieldModel",
|
|
2376
|
-
updatedAt: "DateTimeTzFieldModel",
|
|
2377
|
-
unixTimestamp: "DateTimeTzFieldModel",
|
|
2378
|
-
time: "TimeFieldModel",
|
|
2379
|
-
collection: "CollectionSelectorFieldModel",
|
|
2380
|
-
tableoid: "CollectionSelectorFieldModel",
|
|
2381
|
-
richText: "RichTextFieldModel",
|
|
2382
|
-
input: "InputFieldModel",
|
|
2383
|
-
email: "InputFieldModel",
|
|
2384
|
-
phone: "InputFieldModel",
|
|
2385
|
-
uuid: "InputFieldModel",
|
|
2386
|
-
url: "InputFieldModel",
|
|
2387
|
-
nanoid: "InputFieldModel"
|
|
2388
|
-
};
|
|
2389
|
-
return map[fieldInterface] || "InputFieldModel";
|
|
2520
|
+
return (0, import_core_field_default_bindings.inferSharedFieldDefaultBindingUse)("editable", fieldInterface);
|
|
2390
2521
|
}
|
|
2391
2522
|
function inferDisplayFieldUse(fieldInterface) {
|
|
2392
2523
|
if (["m2m", "o2m", "mbm"].includes(fieldInterface)) {
|
|
2393
2524
|
return "DisplaySubTableFieldModel";
|
|
2394
2525
|
}
|
|
2395
|
-
|
|
2396
|
-
richText: "DisplayHtmlFieldModel",
|
|
2397
|
-
number: "DisplayNumberFieldModel",
|
|
2398
|
-
integer: "DisplayNumberFieldModel",
|
|
2399
|
-
id: "DisplayNumberFieldModel",
|
|
2400
|
-
snowflakeId: "DisplayNumberFieldModel",
|
|
2401
|
-
json: "DisplayJSONFieldModel",
|
|
2402
|
-
// Real frontend saved fixtures still read back these enum-like displays as text fields.
|
|
2403
|
-
select: "DisplayTextFieldModel",
|
|
2404
|
-
multipleSelect: "DisplayTextFieldModel",
|
|
2405
|
-
radioGroup: "DisplayTextFieldModel",
|
|
2406
|
-
checkboxGroup: "DisplayTextFieldModel",
|
|
2407
|
-
collection: "DisplayTextFieldModel",
|
|
2408
|
-
tableoid: "DisplayTextFieldModel",
|
|
2409
|
-
icon: "DisplayIconFieldModel",
|
|
2410
|
-
checkbox: "DisplayCheckboxFieldModel",
|
|
2411
|
-
password: "DisplayPasswordFieldModel",
|
|
2412
|
-
percent: "DisplayPercentFieldModel",
|
|
2413
|
-
date: "DisplayDateTimeFieldModel",
|
|
2414
|
-
datetimeNoTz: "DisplayDateTimeFieldModel",
|
|
2415
|
-
createdAt: "DisplayDateTimeFieldModel",
|
|
2416
|
-
datetime: "DisplayDateTimeFieldModel",
|
|
2417
|
-
updatedAt: "DisplayDateTimeFieldModel",
|
|
2418
|
-
unixTimestamp: "DisplayDateTimeFieldModel",
|
|
2419
|
-
formula: "DisplayDateTimeFieldModel",
|
|
2420
|
-
input: "DisplayTextFieldModel",
|
|
2421
|
-
email: "DisplayTextFieldModel",
|
|
2422
|
-
phone: "DisplayTextFieldModel",
|
|
2423
|
-
uuid: "DisplayTextFieldModel",
|
|
2424
|
-
textarea: "DisplayTextFieldModel",
|
|
2425
|
-
nanoid: "DisplayTextFieldModel",
|
|
2426
|
-
url: "DisplayURLFieldModel",
|
|
2427
|
-
color: "DisplayColorFieldModel",
|
|
2428
|
-
time: "DisplayTimeFieldModel"
|
|
2429
|
-
};
|
|
2430
|
-
return map[fieldInterface] || "DisplayTextFieldModel";
|
|
2526
|
+
return (0, import_core_field_default_bindings.inferSharedFieldDefaultBindingUse)("display", fieldInterface);
|
|
2431
2527
|
}
|
|
2432
2528
|
function inferFilterFieldUse(fieldInterface) {
|
|
2433
2529
|
if (["m2m", "m2o", "o2o", "o2m", "oho", "obo", "updatedBy", "createdBy", "mbm"].includes(fieldInterface)) {
|
|
2434
2530
|
return "FilterFormRecordSelectFieldModel";
|
|
2435
2531
|
}
|
|
2436
|
-
|
|
2437
|
-
date: "DateOnlyFilterFieldModel",
|
|
2438
|
-
datetimeNoTz: "DateTimeNoTzFilterFieldModel",
|
|
2439
|
-
createdAt: "DateTimeTzFilterFieldModel",
|
|
2440
|
-
datetime: "DateTimeTzFilterFieldModel",
|
|
2441
|
-
updatedAt: "DateTimeTzFilterFieldModel",
|
|
2442
|
-
unixTimestamp: "DateTimeTzFilterFieldModel",
|
|
2443
|
-
select: "SelectFieldModel",
|
|
2444
|
-
multipleSelect: "SelectFieldModel",
|
|
2445
|
-
radioGroup: "SelectFieldModel",
|
|
2446
|
-
checkboxGroup: "SelectFieldModel",
|
|
2447
|
-
checkbox: "SelectFieldModel",
|
|
2448
|
-
number: "NumberFieldModel",
|
|
2449
|
-
integer: "NumberFieldModel",
|
|
2450
|
-
id: "NumberFieldModel",
|
|
2451
|
-
snowflakeId: "NumberFieldModel",
|
|
2452
|
-
time: "TimeFieldModel",
|
|
2453
|
-
percent: "PercentFieldModel",
|
|
2454
|
-
input: "InputFieldModel",
|
|
2455
|
-
email: "InputFieldModel",
|
|
2456
|
-
phone: "InputFieldModel",
|
|
2457
|
-
uuid: "InputFieldModel",
|
|
2458
|
-
url: "InputFieldModel",
|
|
2459
|
-
nanoid: "InputFieldModel"
|
|
2460
|
-
};
|
|
2461
|
-
return map[fieldInterface] || "InputFieldModel";
|
|
2532
|
+
return (0, import_core_field_default_bindings.inferSharedFieldDefaultBindingUse)("filter", fieldInterface);
|
|
2462
2533
|
}
|
|
2463
2534
|
function getAllowedFieldUseSet(containerUse, enabledPackages) {
|
|
2464
2535
|
switch (normalizeFieldContainerUse(containerUse)) {
|
|
@@ -2643,11 +2714,16 @@ function resolveSupportedFieldCapability(input) {
|
|
|
2643
2714
|
`flowSurfaces field wrapper '${input.requestedWrapperUse}' is not allowed under '${input.containerUse}', expected '${wrapperUse}'`
|
|
2644
2715
|
);
|
|
2645
2716
|
}
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2717
|
+
let inferredFieldUse;
|
|
2718
|
+
if (requestedRenderer === "js") {
|
|
2719
|
+
inferredFieldUse = inferJsFieldUseByContainer(input.containerUse);
|
|
2720
|
+
} else if (input.field) {
|
|
2721
|
+
inferredFieldUse = inferFieldUseByContainer(input.containerUse, input.field, {
|
|
2722
|
+
enabledPackages: input.enabledPackages,
|
|
2723
|
+
dataSourceKey: input.dataSourceKey,
|
|
2724
|
+
getCollection: input.getCollection
|
|
2725
|
+
});
|
|
2726
|
+
}
|
|
2651
2727
|
const fieldUse = input.requestedFieldUse || inferredFieldUse;
|
|
2652
2728
|
if (!fieldUse) {
|
|
2653
2729
|
if (input.allowUnresolvedFieldUse) {
|
|
@@ -2734,6 +2810,7 @@ function getAvailableActionCatalogItems(containerUse, scope, enabledPackages) {
|
|
|
2734
2810
|
const COLLECTION_RESOURCE_REQUIRED = /* @__PURE__ */ new Set([
|
|
2735
2811
|
"TableBlockModel",
|
|
2736
2812
|
"CalendarBlockModel",
|
|
2813
|
+
"KanbanBlockModel",
|
|
2737
2814
|
"CreateFormModel",
|
|
2738
2815
|
"EditFormModel",
|
|
2739
2816
|
"FormBlockModel",
|
|
@@ -2768,6 +2845,10 @@ const approvalBlockCatalog = import_approval.APPROVAL_BLOCK_CATALOG_SPECS.map(
|
|
|
2768
2845
|
})
|
|
2769
2846
|
);
|
|
2770
2847
|
const blockCatalog = [...baseBlockCatalog, ...approvalBlockCatalog];
|
|
2848
|
+
const COLLECTION_BLOCK_AND_KANBAN_ACTION_CONTAINER_USES = [
|
|
2849
|
+
...import_action_scope.COLLECTION_BLOCK_ACTION_CONTAINER_USES,
|
|
2850
|
+
...import_action_scope.KANBAN_BLOCK_ACTION_CONTAINER_USES
|
|
2851
|
+
];
|
|
2771
2852
|
const APPROVAL_PAGE_LIKE_BLOCK_CONTAINER_USE_SET = /* @__PURE__ */ new Set([...import_approval.APPROVAL_BLOCK_GRID_USES]);
|
|
2772
2853
|
const APPROVAL_PAGE_LIKE_GENERIC_BLOCK_KEY_SET = /* @__PURE__ */ new Set(["markdown", "jsBlock"]);
|
|
2773
2854
|
const APPROVAL_EXCLUSIVE_BLOCK_CONTAINER_USE_SET = /* @__PURE__ */ new Set([...import_approval.APPROVAL_TASK_CARD_GRID_USES]);
|
|
@@ -2810,7 +2891,7 @@ const actionRegistry = [
|
|
|
2810
2891
|
scene: "collection",
|
|
2811
2892
|
use: "FilterActionModel",
|
|
2812
2893
|
ownerPlugin: CORE_FLOW_SURFACE_OWNER_PLUGIN,
|
|
2813
|
-
allowedContainerUses:
|
|
2894
|
+
allowedContainerUses: COLLECTION_BLOCK_AND_KANBAN_ACTION_CONTAINER_USES,
|
|
2814
2895
|
createSupported: true
|
|
2815
2896
|
},
|
|
2816
2897
|
{
|
|
@@ -2820,7 +2901,7 @@ const actionRegistry = [
|
|
|
2820
2901
|
scene: "collection",
|
|
2821
2902
|
use: "AddNewActionModel",
|
|
2822
2903
|
ownerPlugin: CORE_FLOW_SURFACE_OWNER_PLUGIN,
|
|
2823
|
-
allowedContainerUses:
|
|
2904
|
+
allowedContainerUses: COLLECTION_BLOCK_AND_KANBAN_ACTION_CONTAINER_USES,
|
|
2824
2905
|
createSupported: true
|
|
2825
2906
|
},
|
|
2826
2907
|
{
|
|
@@ -2830,7 +2911,7 @@ const actionRegistry = [
|
|
|
2830
2911
|
scene: "collection",
|
|
2831
2912
|
use: "PopupCollectionActionModel",
|
|
2832
2913
|
ownerPlugin: CORE_FLOW_SURFACE_OWNER_PLUGIN,
|
|
2833
|
-
allowedContainerUses:
|
|
2914
|
+
allowedContainerUses: COLLECTION_BLOCK_AND_KANBAN_ACTION_CONTAINER_USES,
|
|
2834
2915
|
createSupported: true
|
|
2835
2916
|
},
|
|
2836
2917
|
{
|
|
@@ -2840,7 +2921,7 @@ const actionRegistry = [
|
|
|
2840
2921
|
scene: "collection",
|
|
2841
2922
|
use: "RefreshActionModel",
|
|
2842
2923
|
ownerPlugin: CORE_FLOW_SURFACE_OWNER_PLUGIN,
|
|
2843
|
-
allowedContainerUses:
|
|
2924
|
+
allowedContainerUses: COLLECTION_BLOCK_AND_KANBAN_ACTION_CONTAINER_USES,
|
|
2844
2925
|
createSupported: true
|
|
2845
2926
|
},
|
|
2846
2927
|
{
|
|
@@ -2980,7 +3061,7 @@ const actionRegistry = [
|
|
|
2980
3061
|
scene: "collection",
|
|
2981
3062
|
use: "JSCollectionActionModel",
|
|
2982
3063
|
ownerPlugin: CORE_FLOW_SURFACE_OWNER_PLUGIN,
|
|
2983
|
-
allowedContainerUses:
|
|
3064
|
+
allowedContainerUses: COLLECTION_BLOCK_AND_KANBAN_ACTION_CONTAINER_USES,
|
|
2984
3065
|
createSupported: true
|
|
2985
3066
|
},
|
|
2986
3067
|
{
|
|
@@ -33,7 +33,7 @@ __export(compose_compiler_exports, {
|
|
|
33
33
|
module.exports = __toCommonJS(compose_compiler_exports);
|
|
34
34
|
var import_errors = require("./errors");
|
|
35
35
|
var import_defaults = require("./blueprint/defaults");
|
|
36
|
-
const LIST_LIKE_COMPOSE_BLOCK_TYPES = /* @__PURE__ */ new Set(["list", "gridCard"]);
|
|
36
|
+
const LIST_LIKE_COMPOSE_BLOCK_TYPES = /* @__PURE__ */ new Set(["list", "gridCard", "kanban"]);
|
|
37
37
|
function compileComposeExecutionPlan(input) {
|
|
38
38
|
const blocks = compileComposeBlockTasks(input.gridUid, input.normalizedBlocks);
|
|
39
39
|
const fields = compileComposeFieldTasks(input.normalizedBlocks);
|
|
@@ -219,6 +219,36 @@ const CALENDAR_OPTIONS = {
|
|
|
219
219
|
quickCreatePopup: OPEN_VIEW,
|
|
220
220
|
eventPopup: OPEN_VIEW
|
|
221
221
|
};
|
|
222
|
+
const KANBAN_OPTIONS = {
|
|
223
|
+
...COMMON_BLOCK_HEADER_OPTIONS,
|
|
224
|
+
...COMMON_HEIGHT_OPTIONS,
|
|
225
|
+
resource: COMMON_RESOURCE,
|
|
226
|
+
groupField: stringOption("Grouping field", { example: "status" }),
|
|
227
|
+
groupTitleField: stringOption("Association grouping title field", { example: "title" }),
|
|
228
|
+
groupColorField: stringOption("Association grouping color field", { example: "color" }),
|
|
229
|
+
groupOptions: arrayOption("Ordered kanban group options", {
|
|
230
|
+
example: [
|
|
231
|
+
{ value: "todo", label: "To do", color: "blue" },
|
|
232
|
+
{ value: "done", label: "Done", color: "green" }
|
|
233
|
+
]
|
|
234
|
+
}),
|
|
235
|
+
styleVariant: stringOption("Kanban style variant", { enum: ["default", "filled"], example: "filled" }),
|
|
236
|
+
sorting: SORTING,
|
|
237
|
+
dragEnabled: booleanOption("Whether drag sorting is enabled", { example: true }),
|
|
238
|
+
dragSortBy: stringOption("Drag-sort field", { example: "status_sort" }),
|
|
239
|
+
quickCreateEnabled: booleanOption("Whether per-column quick create is enabled", { example: true }),
|
|
240
|
+
quickCreatePopup: OPEN_VIEW,
|
|
241
|
+
enableCardClick: booleanOption("Whether cards can be clicked to open a popup", { example: true }),
|
|
242
|
+
cardPopup: OPEN_VIEW,
|
|
243
|
+
cardLayout: stringOption("Kanban card layout", { example: "vertical" }),
|
|
244
|
+
cardLabelAlign: stringOption("Kanban card label alignment", { example: "left" }),
|
|
245
|
+
cardLabelWidth: stringOption("Kanban card label width", { example: "120px" }),
|
|
246
|
+
cardLabelWrap: booleanOption("Whether kanban card labels should wrap", { example: false }),
|
|
247
|
+
cardColon: booleanOption("Whether kanban card labels display a colon", { example: true }),
|
|
248
|
+
pageSize: numberOption("Page size", { example: 20 }),
|
|
249
|
+
columnWidth: numberOption("Column width", { example: 300 }),
|
|
250
|
+
dataScope: FILTER_GROUP
|
|
251
|
+
};
|
|
222
252
|
const GRID_CARD_OPTIONS = {
|
|
223
253
|
...COMMON_BLOCK_HEADER_OPTIONS,
|
|
224
254
|
...COMMON_HEIGHT_OPTIONS,
|
|
@@ -714,6 +744,9 @@ function getConfigureOptionsForUse(use) {
|
|
|
714
744
|
case "CalendarBlockModel":
|
|
715
745
|
options = cloneOptions(CALENDAR_OPTIONS);
|
|
716
746
|
break;
|
|
747
|
+
case "KanbanBlockModel":
|
|
748
|
+
options = cloneOptions(KANBAN_OPTIONS);
|
|
749
|
+
break;
|
|
717
750
|
case "FormBlockModel":
|
|
718
751
|
case "CreateFormModel":
|
|
719
752
|
options = cloneOptions(FORM_COMMON_OPTIONS);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
export type FlowSurfaceFieldDefaultBindingScope = 'display' | 'editable' | 'filter';
|
|
10
|
+
export declare const CORE_FIELD_DEFAULT_BINDING_MATRIX: Record<FlowSurfaceFieldDefaultBindingScope, Record<string, string>>;
|
|
11
|
+
export declare function getSharedFieldDefaultBindingUse(scope: FlowSurfaceFieldDefaultBindingScope, fieldInterface?: string): string | undefined;
|
|
12
|
+
export declare function inferSharedFieldDefaultBindingUse(scope: FlowSurfaceFieldDefaultBindingScope, fieldInterface?: string): string;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __export = (target, all) => {
|
|
15
|
+
for (var name in all)
|
|
16
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
17
|
+
};
|
|
18
|
+
var __copyProps = (to, from, except, desc) => {
|
|
19
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
20
|
+
for (let key of __getOwnPropNames(from))
|
|
21
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
22
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
23
|
+
}
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
27
|
+
var core_field_default_bindings_exports = {};
|
|
28
|
+
__export(core_field_default_bindings_exports, {
|
|
29
|
+
CORE_FIELD_DEFAULT_BINDING_MATRIX: () => CORE_FIELD_DEFAULT_BINDING_MATRIX,
|
|
30
|
+
getSharedFieldDefaultBindingUse: () => getSharedFieldDefaultBindingUse,
|
|
31
|
+
inferSharedFieldDefaultBindingUse: () => inferSharedFieldDefaultBindingUse
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(core_field_default_bindings_exports);
|
|
34
|
+
const CORE_FIELD_DEFAULT_BINDING_MATRIX = {
|
|
35
|
+
display: {
|
|
36
|
+
richText: "DisplayHtmlFieldModel",
|
|
37
|
+
number: "DisplayNumberFieldModel",
|
|
38
|
+
integer: "DisplayNumberFieldModel",
|
|
39
|
+
id: "DisplayNumberFieldModel",
|
|
40
|
+
snowflakeId: "DisplayNumberFieldModel",
|
|
41
|
+
json: "DisplayJSONFieldModel",
|
|
42
|
+
select: "DisplayEnumFieldModel",
|
|
43
|
+
multipleSelect: "DisplayEnumFieldModel",
|
|
44
|
+
radioGroup: "DisplayEnumFieldModel",
|
|
45
|
+
checkboxGroup: "DisplayEnumFieldModel",
|
|
46
|
+
collection: "DisplayEnumFieldModel",
|
|
47
|
+
tableoid: "DisplayEnumFieldModel",
|
|
48
|
+
icon: "DisplayIconFieldModel",
|
|
49
|
+
checkbox: "DisplayCheckboxFieldModel",
|
|
50
|
+
password: "DisplayPasswordFieldModel",
|
|
51
|
+
percent: "DisplayPercentFieldModel",
|
|
52
|
+
date: "DisplayDateTimeFieldModel",
|
|
53
|
+
datetimeNoTz: "DisplayDateTimeFieldModel",
|
|
54
|
+
createdAt: "DisplayDateTimeFieldModel",
|
|
55
|
+
datetime: "DisplayDateTimeFieldModel",
|
|
56
|
+
updatedAt: "DisplayDateTimeFieldModel",
|
|
57
|
+
unixTimestamp: "DisplayDateTimeFieldModel",
|
|
58
|
+
input: "DisplayTextFieldModel",
|
|
59
|
+
email: "DisplayTextFieldModel",
|
|
60
|
+
phone: "DisplayTextFieldModel",
|
|
61
|
+
uuid: "DisplayTextFieldModel",
|
|
62
|
+
textarea: "DisplayTextFieldModel",
|
|
63
|
+
nanoid: "DisplayTextFieldModel",
|
|
64
|
+
url: "DisplayURLFieldModel",
|
|
65
|
+
color: "DisplayColorFieldModel",
|
|
66
|
+
time: "DisplayTimeFieldModel"
|
|
67
|
+
},
|
|
68
|
+
editable: {
|
|
69
|
+
json: "JsonFieldModel",
|
|
70
|
+
textarea: "TextareaFieldModel",
|
|
71
|
+
icon: "IconFieldModel",
|
|
72
|
+
radioGroup: "RadioGroupFieldModel",
|
|
73
|
+
color: "ColorFieldModel",
|
|
74
|
+
select: "SelectFieldModel",
|
|
75
|
+
multipleSelect: "SelectFieldModel",
|
|
76
|
+
checkboxGroup: "CheckboxGroupFieldModel",
|
|
77
|
+
checkbox: "CheckboxFieldModel",
|
|
78
|
+
password: "PasswordFieldModel",
|
|
79
|
+
number: "NumberFieldModel",
|
|
80
|
+
integer: "NumberFieldModel",
|
|
81
|
+
id: "NumberFieldModel",
|
|
82
|
+
snowflakeId: "NumberFieldModel",
|
|
83
|
+
percent: "PercentFieldModel",
|
|
84
|
+
datetimeNoTz: "DateTimeNoTzFieldModel",
|
|
85
|
+
date: "DateOnlyFieldModel",
|
|
86
|
+
datetime: "DateTimeTzFieldModel",
|
|
87
|
+
createdAt: "DateTimeTzFieldModel",
|
|
88
|
+
updatedAt: "DateTimeTzFieldModel",
|
|
89
|
+
unixTimestamp: "DateTimeTzFieldModel",
|
|
90
|
+
time: "TimeFieldModel",
|
|
91
|
+
collection: "CollectionSelectorFieldModel",
|
|
92
|
+
tableoid: "CollectionSelectorFieldModel",
|
|
93
|
+
richText: "RichTextFieldModel",
|
|
94
|
+
input: "InputFieldModel",
|
|
95
|
+
email: "InputFieldModel",
|
|
96
|
+
phone: "InputFieldModel",
|
|
97
|
+
uuid: "InputFieldModel",
|
|
98
|
+
url: "InputFieldModel",
|
|
99
|
+
nanoid: "InputFieldModel"
|
|
100
|
+
},
|
|
101
|
+
filter: {
|
|
102
|
+
date: "DateOnlyFilterFieldModel",
|
|
103
|
+
datetimeNoTz: "DateTimeNoTzFilterFieldModel",
|
|
104
|
+
createdAt: "DateTimeTzFilterFieldModel",
|
|
105
|
+
datetime: "DateTimeTzFilterFieldModel",
|
|
106
|
+
updatedAt: "DateTimeTzFilterFieldModel",
|
|
107
|
+
unixTimestamp: "DateTimeTzFilterFieldModel",
|
|
108
|
+
select: "SelectFieldModel",
|
|
109
|
+
multipleSelect: "SelectFieldModel",
|
|
110
|
+
radioGroup: "SelectFieldModel",
|
|
111
|
+
checkboxGroup: "SelectFieldModel",
|
|
112
|
+
checkbox: "SelectFieldModel",
|
|
113
|
+
number: "NumberFieldModel",
|
|
114
|
+
integer: "NumberFieldModel",
|
|
115
|
+
id: "NumberFieldModel",
|
|
116
|
+
snowflakeId: "NumberFieldModel",
|
|
117
|
+
time: "TimeFieldModel",
|
|
118
|
+
percent: "PercentFieldModel",
|
|
119
|
+
input: "InputFieldModel",
|
|
120
|
+
email: "InputFieldModel",
|
|
121
|
+
phone: "InputFieldModel",
|
|
122
|
+
uuid: "InputFieldModel",
|
|
123
|
+
url: "InputFieldModel",
|
|
124
|
+
nanoid: "InputFieldModel"
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
const SUPPLEMENTAL_FIELD_DEFAULT_BINDING_MATRIX = {
|
|
128
|
+
display: {
|
|
129
|
+
formula: "DisplayDateTimeFieldModel"
|
|
130
|
+
},
|
|
131
|
+
editable: {},
|
|
132
|
+
filter: {}
|
|
133
|
+
};
|
|
134
|
+
const FIELD_DEFAULT_BINDING_FALLBACKS = {
|
|
135
|
+
display: "DisplayTextFieldModel",
|
|
136
|
+
editable: "InputFieldModel",
|
|
137
|
+
filter: "InputFieldModel"
|
|
138
|
+
};
|
|
139
|
+
function normalizeFieldInterface(fieldInterface) {
|
|
140
|
+
return String(fieldInterface || "").trim();
|
|
141
|
+
}
|
|
142
|
+
function getSharedFieldDefaultBindingUse(scope, fieldInterface) {
|
|
143
|
+
const normalized = normalizeFieldInterface(fieldInterface);
|
|
144
|
+
if (!normalized) {
|
|
145
|
+
return void 0;
|
|
146
|
+
}
|
|
147
|
+
return CORE_FIELD_DEFAULT_BINDING_MATRIX[scope][normalized] || SUPPLEMENTAL_FIELD_DEFAULT_BINDING_MATRIX[scope][normalized];
|
|
148
|
+
}
|
|
149
|
+
function inferSharedFieldDefaultBindingUse(scope, fieldInterface) {
|
|
150
|
+
return getSharedFieldDefaultBindingUse(scope, fieldInterface) || FIELD_DEFAULT_BINDING_FALLBACKS[scope];
|
|
151
|
+
}
|
|
152
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
153
|
+
0 && (module.exports = {
|
|
154
|
+
CORE_FIELD_DEFAULT_BINDING_MATRIX,
|
|
155
|
+
getSharedFieldDefaultBindingUse,
|
|
156
|
+
inferSharedFieldDefaultBindingUse
|
|
157
|
+
});
|