@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
|
@@ -81,6 +81,30 @@ const FLOW_SURFACE_DEFAULT_BLOCK_ACTIONS = {
|
|
|
81
81
|
},
|
|
82
82
|
{ type: "refresh", scope: "actions" }
|
|
83
83
|
],
|
|
84
|
+
calendar: [
|
|
85
|
+
{ type: "filter", scope: "actions" },
|
|
86
|
+
{
|
|
87
|
+
type: "addNew",
|
|
88
|
+
scope: "actions",
|
|
89
|
+
popup: {
|
|
90
|
+
tryTemplate: true,
|
|
91
|
+
[FLOW_SURFACE_INTERNAL_AUTO_SAVE_DEFAULT_POPUP_TEMPLATE_KEY]: true
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{ type: "refresh", scope: "actions" }
|
|
95
|
+
],
|
|
96
|
+
kanban: [
|
|
97
|
+
{ type: "filter", scope: "actions" },
|
|
98
|
+
{
|
|
99
|
+
type: "addNew",
|
|
100
|
+
scope: "actions",
|
|
101
|
+
popup: {
|
|
102
|
+
tryTemplate: true,
|
|
103
|
+
[FLOW_SURFACE_INTERNAL_AUTO_SAVE_DEFAULT_POPUP_TEMPLATE_KEY]: true
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{ type: "refresh", scope: "actions" }
|
|
107
|
+
],
|
|
84
108
|
createForm: [{ type: "submit", scope: "actions" }],
|
|
85
109
|
editForm: [{ type: "submit", scope: "actions" }],
|
|
86
110
|
details: [
|
|
@@ -47,8 +47,10 @@ const DETAILS_FIELD_CONTAINER_USES = /* @__PURE__ */ new Set([
|
|
|
47
47
|
"DetailsItemModel",
|
|
48
48
|
"ListBlockModel",
|
|
49
49
|
"GridCardBlockModel",
|
|
50
|
+
"KanbanBlockModel",
|
|
50
51
|
"ListItemModel",
|
|
51
|
-
"GridCardItemModel"
|
|
52
|
+
"GridCardItemModel",
|
|
53
|
+
"KanbanCardItemModel"
|
|
52
54
|
]);
|
|
53
55
|
const FILTER_FIELD_CONTAINER_USES = /* @__PURE__ */ new Set(["FilterFormBlockModel", "FilterFormGridModel", "FilterFormItemModel"]);
|
|
54
56
|
const TABLE_FIELD_CONTAINER_USES = /* @__PURE__ */ new Set(["TableBlockModel", "TableColumnModel"]);
|
|
@@ -51,8 +51,13 @@ const FLOW_SURFACE_LOCAL_TRANSLATIONS = {
|
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
53
|
function getValues(ctx) {
|
|
54
|
-
var _a, _b, _c;
|
|
55
|
-
|
|
54
|
+
var _a, _b, _c, _d, _e;
|
|
55
|
+
const values = ((_b = (_a = ctx.action) == null ? void 0 : _a.params) == null ? void 0 : _b.values) ?? ((_c = ctx.action) == null ? void 0 : _c.params) ?? {};
|
|
56
|
+
const actionName = (_d = ctx.action) == null ? void 0 : _d.actionName;
|
|
57
|
+
if (isInvalidFlowSurfaceWritePayload(values) && actionName && !((_e = import_constants.FLOW_SURFACE_ACTION_DEFINITIONS[actionName]) == null ? void 0 : _e.read)) {
|
|
58
|
+
throw new import_errors.FlowSurfaceBadRequestError(getFlowSurfaceWritePayloadMessage(actionName));
|
|
59
|
+
}
|
|
60
|
+
return values;
|
|
56
61
|
}
|
|
57
62
|
function isImplicitEmptyValuesBag(value) {
|
|
58
63
|
return !!value && typeof value === "object" && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype && Object.keys(value).length === 0;
|
|
@@ -119,6 +124,56 @@ function writeFlowSurfaceErrorResponse(ctx, error) {
|
|
|
119
124
|
ctx.status = normalized.status;
|
|
120
125
|
ctx.body = normalized.toResponseBody();
|
|
121
126
|
}
|
|
127
|
+
function isFlowSurfaceWriteActionName(value) {
|
|
128
|
+
return Object.prototype.hasOwnProperty.call(import_constants.FLOW_SURFACE_ACTION_DEFINITIONS, value);
|
|
129
|
+
}
|
|
130
|
+
function getFlowSurfaceRequestActionName(ctx) {
|
|
131
|
+
var _a, _b;
|
|
132
|
+
const actionName = String(((_a = ctx.action) == null ? void 0 : _a.actionName) || "").trim();
|
|
133
|
+
if (isFlowSurfaceWriteActionName(actionName)) {
|
|
134
|
+
return actionName;
|
|
135
|
+
}
|
|
136
|
+
const path = String(ctx.path || ((_b = ctx.request) == null ? void 0 : _b.path) || "").trim();
|
|
137
|
+
const match = path.match(/(?:^|\/)flowSurfaces:([^/?#]+)$/);
|
|
138
|
+
const rawActionName = String((match == null ? void 0 : match[1]) || "").trim();
|
|
139
|
+
return isFlowSurfaceWriteActionName(rawActionName) ? rawActionName : void 0;
|
|
140
|
+
}
|
|
141
|
+
function isFlowSurfaceWriteRequest(ctx) {
|
|
142
|
+
var _a;
|
|
143
|
+
if (String(((_a = ctx.request) == null ? void 0 : _a.method) || "").toUpperCase() !== "POST") {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
const actionName = getFlowSurfaceRequestActionName(ctx);
|
|
147
|
+
return !!actionName && import_constants.FLOW_SURFACE_ACTION_DEFINITIONS[actionName].read === false;
|
|
148
|
+
}
|
|
149
|
+
function isInvalidFlowSurfaceWritePayload(value) {
|
|
150
|
+
if (!value || typeof value !== "object") {
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
return Array.isArray(value);
|
|
154
|
+
}
|
|
155
|
+
function getFlowSurfaceWritePayloadMessage(actionName) {
|
|
156
|
+
const noun = actionName === "applyBlueprint" || actionName === "applyApprovalBlueprint" ? "payload" : "values";
|
|
157
|
+
return `flowSurfaces ${actionName} ${noun} must be an object`;
|
|
158
|
+
}
|
|
159
|
+
function isFlowSurfaceWriteBodyParserShapeError(error) {
|
|
160
|
+
const parserError = error;
|
|
161
|
+
return error instanceof SyntaxError && parserError.status === 400 && parserError.message === "invalid JSON, only supports object and array";
|
|
162
|
+
}
|
|
163
|
+
async function runFlowSurfaceWriteBodyParserErrorWrapper(ctx, next) {
|
|
164
|
+
try {
|
|
165
|
+
await next();
|
|
166
|
+
} catch (error) {
|
|
167
|
+
if (!isFlowSurfaceWriteRequest(ctx) || !isFlowSurfaceWriteBodyParserShapeError(error)) {
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
const actionName = getFlowSurfaceRequestActionName(ctx);
|
|
171
|
+
if (!actionName) {
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
174
|
+
writeFlowSurfaceErrorResponse(ctx, new import_errors.FlowSurfaceBadRequestError(getFlowSurfaceWritePayloadMessage(actionName)));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
122
177
|
function isAclPermissionDeniedForFlowSurfaces(ctx, error) {
|
|
123
178
|
var _a, _b;
|
|
124
179
|
const resourceName = ((_a = ctx.action) == null ? void 0 : _a.resourceName) ?? ((_b = ctx.permission) == null ? void 0 : _b.resourceName);
|
|
@@ -231,6 +286,10 @@ function registerFlowSurfacesResource(plugin) {
|
|
|
231
286
|
after: "allow-manager",
|
|
232
287
|
before: "core"
|
|
233
288
|
});
|
|
289
|
+
plugin.app.use(runFlowSurfaceWriteBodyParserErrorWrapper, {
|
|
290
|
+
tag: "flow-surfaces-write-body-errors",
|
|
291
|
+
before: "bodyParser"
|
|
292
|
+
});
|
|
234
293
|
plugin.app.resourceManager.define({
|
|
235
294
|
name: "flowSurfaces",
|
|
236
295
|
actions
|
|
@@ -39,6 +39,7 @@ var import_approval = require("./approval");
|
|
|
39
39
|
const COLLECTION_BLOCK_USES = /* @__PURE__ */ new Set([
|
|
40
40
|
"TableBlockModel",
|
|
41
41
|
"CalendarBlockModel",
|
|
42
|
+
"KanbanBlockModel",
|
|
42
43
|
"CreateFormModel",
|
|
43
44
|
"EditFormModel",
|
|
44
45
|
"FormBlockModel",
|
|
@@ -109,6 +110,8 @@ const ACTION_BUTTON_USES = /* @__PURE__ */ new Set([
|
|
|
109
110
|
"CalendarNavActionModel",
|
|
110
111
|
"CalendarTitleActionModel",
|
|
111
112
|
"CalendarViewSelectActionModel",
|
|
113
|
+
"KanbanQuickCreateActionModel",
|
|
114
|
+
"KanbanCardViewActionModel",
|
|
112
115
|
"ApplyFormSubmitModel",
|
|
113
116
|
"ApplyFormSaveDraftModel",
|
|
114
117
|
"ApplyFormWithdrawModel",
|
|
@@ -58,6 +58,8 @@ const FLOW_SURFACE_POPUP_HOST_USES = /* @__PURE__ */ new Set([
|
|
|
58
58
|
"PopupCollectionActionModel",
|
|
59
59
|
"CalendarQuickCreateActionModel",
|
|
60
60
|
"CalendarEventViewActionModel",
|
|
61
|
+
"KanbanQuickCreateActionModel",
|
|
62
|
+
"KanbanCardViewActionModel",
|
|
61
63
|
"ClickableFieldModel",
|
|
62
64
|
"DisplayTextFieldModel",
|
|
63
65
|
"DisplayEnumFieldModel",
|
|
@@ -161,6 +163,7 @@ function isActionContainerUse(parentUse) {
|
|
|
161
163
|
return [
|
|
162
164
|
"TableBlockModel",
|
|
163
165
|
"CalendarBlockModel",
|
|
166
|
+
"KanbanBlockModel",
|
|
164
167
|
"TableActionsColumnModel",
|
|
165
168
|
"ListBlockModel",
|
|
166
169
|
"GridCardBlockModel",
|
|
@@ -7,12 +7,16 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
export declare const FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPES: Set<string>;
|
|
10
|
+
export declare const FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPE_LABEL = "table/list/gridCard/calendar/kanban";
|
|
10
11
|
export declare function isFlowSurfacePublicDataSurfaceBlockType(blockType?: string): boolean;
|
|
11
12
|
export declare function normalizeFlowSurfacePublicBlockDefaultFilter(actionName: string, defaultFilter: any, options: {
|
|
12
13
|
blockType?: string;
|
|
13
14
|
template?: unknown;
|
|
14
15
|
path?: string;
|
|
15
16
|
}): any;
|
|
17
|
+
export declare function assertFlowSurfaceConcreteDefaultFilterItem(actionName: string, defaultFilter: any, options?: {
|
|
18
|
+
path?: string;
|
|
19
|
+
}): void;
|
|
16
20
|
export declare function backfillFlowSurfaceDefaultFilterSetting(settings: any, defaultFilter: any): any;
|
|
17
21
|
export declare function backfillFlowSurfaceFilterActionDefaultFilter<T extends {
|
|
18
22
|
type?: string;
|
|
@@ -37,6 +37,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
37
37
|
var public_data_surface_default_filter_exports = {};
|
|
38
38
|
__export(public_data_surface_default_filter_exports, {
|
|
39
39
|
FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPES: () => FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPES,
|
|
40
|
+
FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPE_LABEL: () => FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPE_LABEL,
|
|
41
|
+
assertFlowSurfaceConcreteDefaultFilterItem: () => assertFlowSurfaceConcreteDefaultFilterItem,
|
|
40
42
|
backfillFlowSurfaceDefaultFilterSetting: () => backfillFlowSurfaceDefaultFilterSetting,
|
|
41
43
|
backfillFlowSurfaceFilterActionDefaultFilter: () => backfillFlowSurfaceFilterActionDefaultFilter,
|
|
42
44
|
isFlowSurfacePublicDataSurfaceBlockType: () => isFlowSurfacePublicDataSurfaceBlockType,
|
|
@@ -46,7 +48,14 @@ module.exports = __toCommonJS(public_data_surface_default_filter_exports);
|
|
|
46
48
|
var import_lodash = __toESM(require("lodash"));
|
|
47
49
|
var import_errors = require("./errors");
|
|
48
50
|
var import_filter_group = require("./filter-group");
|
|
49
|
-
const FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPES = /* @__PURE__ */ new Set([
|
|
51
|
+
const FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPES = /* @__PURE__ */ new Set([
|
|
52
|
+
"table",
|
|
53
|
+
"list",
|
|
54
|
+
"gridCard",
|
|
55
|
+
"calendar",
|
|
56
|
+
"kanban"
|
|
57
|
+
]);
|
|
58
|
+
const FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPE_LABEL = "table/list/gridCard/calendar/kanban";
|
|
50
59
|
function isFlowSurfacePublicDataSurfaceBlockType(blockType) {
|
|
51
60
|
return FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPES.has(String(blockType || "").trim());
|
|
52
61
|
}
|
|
@@ -54,14 +63,44 @@ function normalizeFlowSurfacePublicBlockDefaultFilter(actionName, defaultFilter,
|
|
|
54
63
|
if (import_lodash.default.isUndefined(defaultFilter)) {
|
|
55
64
|
return void 0;
|
|
56
65
|
}
|
|
57
|
-
const fieldPath =
|
|
66
|
+
const fieldPath = buildFlowSurfaceDefaultFilterFieldPath(actionName, options.path);
|
|
58
67
|
if (!isFlowSurfacePublicDataSurfaceBlockType(options.blockType) || !import_lodash.default.isUndefined(options.template)) {
|
|
59
|
-
(0, import_errors.throwBadRequest)(
|
|
68
|
+
(0, import_errors.throwBadRequest)(
|
|
69
|
+
`flowSurfaces ${actionName} ${fieldPath} is only supported on direct ${FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPE_LABEL} blocks`
|
|
70
|
+
);
|
|
60
71
|
}
|
|
61
|
-
|
|
72
|
+
const normalized = (0, import_filter_group.normalizeFlowSurfaceFilterGroupValue)(
|
|
62
73
|
defaultFilter,
|
|
63
74
|
`flowSurfaces ${actionName} ${fieldPath} expects FilterGroup like ${import_filter_group.FLOW_SURFACE_FILTER_GROUP_EXAMPLE}`
|
|
64
75
|
);
|
|
76
|
+
return normalized;
|
|
77
|
+
}
|
|
78
|
+
function assertFlowSurfaceConcreteDefaultFilterItem(actionName, defaultFilter, options = {}) {
|
|
79
|
+
const fieldPath = buildFlowSurfaceDefaultFilterFieldPath(actionName, options.path);
|
|
80
|
+
if (!hasConcreteFlowSurfaceFilterItem(defaultFilter)) {
|
|
81
|
+
(0, import_errors.throwBadRequest)(
|
|
82
|
+
`flowSurfaces ${actionName} ${fieldPath} must include at least one concrete filter item; empty defaultFilter groups such as {}, null, or { logic, items: [] } are not allowed`
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function buildFlowSurfaceDefaultFilterFieldPath(actionName, path) {
|
|
87
|
+
if (!path) {
|
|
88
|
+
return "defaultFilter";
|
|
89
|
+
}
|
|
90
|
+
const prefix = `flowSurfaces ${actionName} `;
|
|
91
|
+
const normalizedPath = path.startsWith(prefix) ? path.slice(prefix.length) : path;
|
|
92
|
+
return normalizedPath.endsWith(".defaultFilter") ? normalizedPath : `${normalizedPath}.defaultFilter`;
|
|
93
|
+
}
|
|
94
|
+
function hasConcreteFlowSurfaceFilterItem(filter) {
|
|
95
|
+
if (!import_lodash.default.isPlainObject(filter) || !Array.isArray(filter.items)) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
return filter.items.some((item) => {
|
|
99
|
+
if (import_lodash.default.isPlainObject(item) && "logic" in item && "items" in item) {
|
|
100
|
+
return hasConcreteFlowSurfaceFilterItem(item);
|
|
101
|
+
}
|
|
102
|
+
return import_lodash.default.isPlainObject(item) && typeof item.path === "string" && typeof item.operator === "string";
|
|
103
|
+
});
|
|
65
104
|
}
|
|
66
105
|
function backfillFlowSurfaceDefaultFilterSetting(settings, defaultFilter) {
|
|
67
106
|
if (import_lodash.default.isUndefined(defaultFilter)) {
|
|
@@ -104,6 +143,8 @@ function backfillFlowSurfaceFilterActionDefaultFilter(actions, defaultFilter) {
|
|
|
104
143
|
// Annotate the CommonJS export names for ESM import in node:
|
|
105
144
|
0 && (module.exports = {
|
|
106
145
|
FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPES,
|
|
146
|
+
FLOW_SURFACE_PUBLIC_DATA_SURFACE_BLOCK_TYPE_LABEL,
|
|
147
|
+
assertFlowSurfaceConcreteDefaultFilterItem,
|
|
107
148
|
backfillFlowSurfaceDefaultFilterSetting,
|
|
108
149
|
backfillFlowSurfaceFilterActionDefaultFilter,
|
|
109
150
|
isFlowSurfacePublicDataSurfaceBlockType,
|
|
@@ -66,6 +66,7 @@ __export(service_helpers_exports, {
|
|
|
66
66
|
});
|
|
67
67
|
module.exports = __toCommonJS(service_helpers_exports);
|
|
68
68
|
var import_lodash = __toESM(require("lodash"));
|
|
69
|
+
var import_core_field_default_bindings = require("./core-field-default-bindings");
|
|
69
70
|
const FLOW_SURFACE_TEMPLATE_DEFAULT_PAGE = 1;
|
|
70
71
|
const FLOW_SURFACE_TEMPLATE_DEFAULT_PAGE_SIZE = 50;
|
|
71
72
|
function toTemplatePlainRow(row) {
|
|
@@ -206,82 +207,14 @@ function getFieldFilterable(field) {
|
|
|
206
207
|
return (_a = field == null ? void 0 : field.options) == null ? void 0 : _a.filterable;
|
|
207
208
|
}
|
|
208
209
|
function inferAssociationLeafDisplayFieldUse(fieldInterface) {
|
|
209
|
-
|
|
210
|
-
const map = {
|
|
211
|
-
richText: "DisplayHtmlFieldModel",
|
|
212
|
-
number: "DisplayNumberFieldModel",
|
|
213
|
-
integer: "DisplayNumberFieldModel",
|
|
214
|
-
id: "DisplayNumberFieldModel",
|
|
215
|
-
snowflakeId: "DisplayNumberFieldModel",
|
|
216
|
-
json: "DisplayJSONFieldModel",
|
|
217
|
-
select: "DisplayTextFieldModel",
|
|
218
|
-
multipleSelect: "DisplayTextFieldModel",
|
|
219
|
-
radioGroup: "DisplayTextFieldModel",
|
|
220
|
-
checkboxGroup: "DisplayTextFieldModel",
|
|
221
|
-
collection: "DisplayTextFieldModel",
|
|
222
|
-
tableoid: "DisplayTextFieldModel",
|
|
223
|
-
icon: "DisplayIconFieldModel",
|
|
224
|
-
checkbox: "DisplayCheckboxFieldModel",
|
|
225
|
-
password: "DisplayPasswordFieldModel",
|
|
226
|
-
percent: "DisplayPercentFieldModel",
|
|
227
|
-
date: "DisplayDateTimeFieldModel",
|
|
228
|
-
datetimeNoTz: "DisplayDateTimeFieldModel",
|
|
229
|
-
createdAt: "DisplayDateTimeFieldModel",
|
|
230
|
-
datetime: "DisplayDateTimeFieldModel",
|
|
231
|
-
updatedAt: "DisplayDateTimeFieldModel",
|
|
232
|
-
unixTimestamp: "DisplayDateTimeFieldModel",
|
|
233
|
-
formula: "DisplayDateTimeFieldModel",
|
|
234
|
-
input: "DisplayTextFieldModel",
|
|
235
|
-
email: "DisplayTextFieldModel",
|
|
236
|
-
phone: "DisplayTextFieldModel",
|
|
237
|
-
uuid: "DisplayTextFieldModel",
|
|
238
|
-
textarea: "DisplayTextFieldModel",
|
|
239
|
-
nanoid: "DisplayTextFieldModel",
|
|
240
|
-
url: "DisplayURLFieldModel",
|
|
241
|
-
color: "DisplayColorFieldModel",
|
|
242
|
-
time: "DisplayTimeFieldModel"
|
|
243
|
-
};
|
|
244
|
-
return map[normalized];
|
|
210
|
+
return (0, import_core_field_default_bindings.getSharedFieldDefaultBindingUse)("display", fieldInterface);
|
|
245
211
|
}
|
|
246
212
|
function inferFieldMenuEditableFieldUse(fieldInterface) {
|
|
247
213
|
const normalized = String(fieldInterface || "").trim();
|
|
248
214
|
if (["m2m", "m2o", "o2o", "o2m", "oho", "obo", "updatedBy", "createdBy", "mbm"].includes(normalized)) {
|
|
249
215
|
return "RecordSelectFieldModel";
|
|
250
216
|
}
|
|
251
|
-
|
|
252
|
-
json: "JsonFieldModel",
|
|
253
|
-
textarea: "TextareaFieldModel",
|
|
254
|
-
icon: "IconFieldModel",
|
|
255
|
-
radioGroup: "SelectFieldModel",
|
|
256
|
-
color: "ColorFieldModel",
|
|
257
|
-
select: "SelectFieldModel",
|
|
258
|
-
multipleSelect: "SelectFieldModel",
|
|
259
|
-
checkboxGroup: "SelectFieldModel",
|
|
260
|
-
checkbox: "CheckboxFieldModel",
|
|
261
|
-
password: "PasswordFieldModel",
|
|
262
|
-
number: "NumberFieldModel",
|
|
263
|
-
integer: "NumberFieldModel",
|
|
264
|
-
id: "NumberFieldModel",
|
|
265
|
-
snowflakeId: "NumberFieldModel",
|
|
266
|
-
percent: "PercentFieldModel",
|
|
267
|
-
datetimeNoTz: "DateTimeNoTzFieldModel",
|
|
268
|
-
date: "DateOnlyFieldModel",
|
|
269
|
-
datetime: "DateTimeTzFieldModel",
|
|
270
|
-
createdAt: "DateTimeTzFieldModel",
|
|
271
|
-
updatedAt: "DateTimeTzFieldModel",
|
|
272
|
-
unixTimestamp: "DateTimeTzFieldModel",
|
|
273
|
-
time: "TimeFieldModel",
|
|
274
|
-
collection: "CollectionSelectorFieldModel",
|
|
275
|
-
tableoid: "CollectionSelectorFieldModel",
|
|
276
|
-
richText: "RichTextFieldModel",
|
|
277
|
-
input: "InputFieldModel",
|
|
278
|
-
email: "InputFieldModel",
|
|
279
|
-
phone: "InputFieldModel",
|
|
280
|
-
uuid: "InputFieldModel",
|
|
281
|
-
url: "InputFieldModel",
|
|
282
|
-
nanoid: "InputFieldModel"
|
|
283
|
-
};
|
|
284
|
-
return map[normalized];
|
|
217
|
+
return (0, import_core_field_default_bindings.getSharedFieldDefaultBindingUse)("editable", normalized);
|
|
285
218
|
}
|
|
286
219
|
function isAssociationField(field) {
|
|
287
220
|
if (typeof (field == null ? void 0 : field.isAssociationField) === "function") {
|
|
@@ -271,7 +271,7 @@ export declare class FlowSurfacesService {
|
|
|
271
271
|
}): Promise<import("./compose-runtime").FlowSurfaceComposeExecutionResult>;
|
|
272
272
|
configure(values: FlowSurfaceConfigureValues, options?: {
|
|
273
273
|
transaction?: any;
|
|
274
|
-
}): Promise<{
|
|
274
|
+
}): Promise<_.Dictionary<any> | {
|
|
275
275
|
uid: any;
|
|
276
276
|
updated?: undefined;
|
|
277
277
|
} | {
|
|
@@ -607,6 +607,9 @@ export declare class FlowSurfacesService {
|
|
|
607
607
|
private assertComposeMode;
|
|
608
608
|
private assertMutateAtomicFlag;
|
|
609
609
|
private normalizeWriteTarget;
|
|
610
|
+
private parseCalendarPopupActionTargetUid;
|
|
611
|
+
private parseKanbanPopupActionTargetUid;
|
|
612
|
+
private prepareWriteTarget;
|
|
610
613
|
private normalizeRootUidValue;
|
|
611
614
|
private assertRouteBackedPageUidTarget;
|
|
612
615
|
private assertRouteBackedTabUidTarget;
|
|
@@ -662,6 +665,7 @@ export declare class FlowSurfacesService {
|
|
|
662
665
|
private configureTab;
|
|
663
666
|
private configureTableBlock;
|
|
664
667
|
private configureCalendarBlock;
|
|
668
|
+
private configureKanbanBlock;
|
|
665
669
|
private configureFormBlock;
|
|
666
670
|
private configureDetailsBlock;
|
|
667
671
|
private configureFilterFormBlock;
|
|
@@ -720,6 +724,34 @@ export declare class FlowSurfacesService {
|
|
|
720
724
|
private resolvePopupSourceRecordCollectionName;
|
|
721
725
|
private resolvePopupContextLevel;
|
|
722
726
|
private getCollection;
|
|
727
|
+
private normalizeKanbanFieldNameInput;
|
|
728
|
+
private getKanbanCollectionFilterTargetKey;
|
|
729
|
+
private isKanbanMultipleGroupField;
|
|
730
|
+
private isKanbanAssociationGroupField;
|
|
731
|
+
private isKanbanGroupField;
|
|
732
|
+
private getKanbanGroupFieldCandidates;
|
|
733
|
+
private getKanbanDefaultGroupFieldName;
|
|
734
|
+
private getKanbanGroupField;
|
|
735
|
+
private getKanbanCollectionOrThrow;
|
|
736
|
+
private assertKanbanCollectionCompatible;
|
|
737
|
+
private getKanbanRelationTargetCollection;
|
|
738
|
+
private getKanbanRelationFieldCandidateNames;
|
|
739
|
+
private getKanbanDefaultRelationTitleFieldName;
|
|
740
|
+
private assertKanbanRelationFieldBinding;
|
|
741
|
+
private getKanbanGroupFieldSortScopeKeys;
|
|
742
|
+
private getKanbanCompatibleSortFieldNames;
|
|
743
|
+
private resolveKanbanCompatibleSortFieldName;
|
|
744
|
+
private normalizeKanbanGroupOptions;
|
|
745
|
+
private buildKanbanInlineGroupOptions;
|
|
746
|
+
private mergeKanbanInlineGroupOptions;
|
|
747
|
+
private normalizeKanbanPopupSettings;
|
|
748
|
+
private getKanbanPopupActionUse;
|
|
749
|
+
private getKanbanPopupActionUid;
|
|
750
|
+
private getKanbanBlockResourceInit;
|
|
751
|
+
private getKanbanPopupStoredSettings;
|
|
752
|
+
private buildKanbanPopupOpenView;
|
|
753
|
+
private normalizeKanbanPopupConfigureValue;
|
|
754
|
+
private buildKanbanInitialBlockProps;
|
|
723
755
|
private normalizeCalendarFieldPathInput;
|
|
724
756
|
private isCalendarDateField;
|
|
725
757
|
private isCalendarTitleField;
|
|
@@ -746,7 +778,16 @@ export declare class FlowSurfacesService {
|
|
|
746
778
|
private buildCalendarInitialBlockProps;
|
|
747
779
|
private ensureCalendarBlockPopupHosts;
|
|
748
780
|
private ensureCalendarBlockPopupHostsInTree;
|
|
781
|
+
private projectCalendarBlockPopupHosts;
|
|
782
|
+
private projectCalendarBlockPopupHostsInTree;
|
|
783
|
+
private ensureKanbanBlockPopupHosts;
|
|
784
|
+
private ensureKanbanBlockPopupHostsInTree;
|
|
785
|
+
private projectKanbanBlockPopupHosts;
|
|
786
|
+
private projectKanbanBlockPopupHostsInTree;
|
|
787
|
+
private getCalendarSettingValue;
|
|
788
|
+
private validateCalendarSettingValues;
|
|
749
789
|
private validateCalendarBlockState;
|
|
790
|
+
private validateKanbanBlockState;
|
|
750
791
|
private resolveFieldDefinition;
|
|
751
792
|
private getAssociationDefaultTitleFieldName;
|
|
752
793
|
private getAssociationTitleFieldTargetCollection;
|