@nocobase/plugin-public-forms 2.2.0-beta.9 → 2.3.0-alpha.1
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/client/198.780dab97e4ef08bf.js +10 -0
- package/dist/client/224.5536c33a162f55b3.js +10 -0
- package/dist/client/{397.db23c7cf320fcedc.js → 397.3f67c86613025a0e.js} +1 -1
- package/dist/client/594.43db6c29093027e8.js +10 -0
- package/dist/client/595.eeb0d3acf81baf05.js +10 -0
- package/dist/client/599.5b805a5c7f2d27c9.js +10 -0
- package/dist/client/634.6f0d8f6bd9082579.js +10 -0
- package/dist/client/64.87bced51d952fd71.js +10 -0
- package/dist/client/966.2fd2224ac56adc7e.js +10 -0
- package/dist/client/index.js +1 -1
- package/dist/client-v2/169.c3c0b4b8c94d6588.js +10 -0
- package/dist/client-v2/{599.a08c3f5302e65d16.js → 599.740e22df9906f9ab.js} +1 -1
- package/dist/client-v2/index.js +1 -1
- package/dist/client-v2/modelLoaders.d.ts +10 -0
- package/dist/client-v2/pages/PublicFormsSettingsDetailPage.d.ts +3 -0
- package/dist/externalVersion.js +7 -6
- package/dist/server/plugin.d.ts +26 -0
- package/dist/server/plugin.js +231 -12
- package/package.json +4 -3
- package/dist/client/192.8517b0a03feac7ee.js +0 -10
- package/dist/client/595.d093878723a365a9.js +0 -10
- package/dist/client-v2/169.1e3673c278f5018a.js +0 -10
package/dist/server/plugin.js
CHANGED
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
var __create = Object.create;
|
|
10
11
|
var __defProp = Object.defineProperty;
|
|
11
12
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
13
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
14
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
13
15
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
16
|
var __export = (target, all) => {
|
|
15
17
|
for (var name in all)
|
|
@@ -23,6 +25,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
23
25
|
}
|
|
24
26
|
return to;
|
|
25
27
|
};
|
|
28
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
29
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
30
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
31
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
32
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
33
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
34
|
+
mod
|
|
35
|
+
));
|
|
26
36
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
27
37
|
var plugin_exports = {};
|
|
28
38
|
__export(plugin_exports, {
|
|
@@ -31,11 +41,66 @@ __export(plugin_exports, {
|
|
|
31
41
|
});
|
|
32
42
|
module.exports = __toCommonJS(plugin_exports);
|
|
33
43
|
var import_server = require("@nocobase/server");
|
|
44
|
+
var import_utils = require("@nocobase/utils");
|
|
45
|
+
var import_crypto = __toESM(require("crypto"));
|
|
34
46
|
var import_hook = require("./hook");
|
|
35
47
|
class PasswordError extends Error {
|
|
36
48
|
}
|
|
49
|
+
const PUBLIC_FORM_COOKIE_PREFIX = "nb_pf_";
|
|
50
|
+
const PUBLIC_FORM_TOKEN_EXPIRES_IN = "1h";
|
|
51
|
+
const PUBLIC_FORM_COOKIE_MAX_AGE = 60 * 60 * 1e3;
|
|
52
|
+
function parseCookieHeader(header) {
|
|
53
|
+
const cookies = [];
|
|
54
|
+
if (!header) {
|
|
55
|
+
return cookies;
|
|
56
|
+
}
|
|
57
|
+
for (const item of header.split(";")) {
|
|
58
|
+
const index = item.indexOf("=");
|
|
59
|
+
if (index < 0) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const name = item.slice(0, index).trim();
|
|
63
|
+
const value = item.slice(index + 1).trim();
|
|
64
|
+
if (!name) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
cookies.push([name, decodeURIComponent(value)]);
|
|
69
|
+
} catch {
|
|
70
|
+
cookies.push([name, value]);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return cookies;
|
|
74
|
+
}
|
|
75
|
+
function normalizeFiles(value) {
|
|
76
|
+
const files = {};
|
|
77
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
78
|
+
return files;
|
|
79
|
+
}
|
|
80
|
+
for (const [key, ids] of Object.entries(value)) {
|
|
81
|
+
if (typeof key !== "string" || !Array.isArray(ids)) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
files[key] = ids.filter((id) => typeof id === "string" || typeof id === "number");
|
|
85
|
+
}
|
|
86
|
+
return files;
|
|
87
|
+
}
|
|
88
|
+
function getResponseRecordId(body) {
|
|
89
|
+
const responseBody = body && typeof body === "object" && "data" in body ? body.data : body;
|
|
90
|
+
if (!responseBody || typeof responseBody !== "object") {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
if ("get" in responseBody && typeof responseBody.get === "function") {
|
|
94
|
+
return responseBody.get("id");
|
|
95
|
+
}
|
|
96
|
+
if ("id" in responseBody) {
|
|
97
|
+
return responseBody.id;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
37
101
|
class PluginPublicFormsServer extends import_server.Plugin {
|
|
38
102
|
associationFieldTypes = ["hasOne", "hasMany", "belongsTo", "belongsToMany", "belongsToArray"];
|
|
103
|
+
fileAccessAuthorizerRegistered = false;
|
|
39
104
|
async parseCollectionData(dataSourceKey, formCollection, appends) {
|
|
40
105
|
const dataSource = this.app.dataSourceManager.dataSources.get(dataSourceKey);
|
|
41
106
|
const serializeCollection = (collection2) => ({
|
|
@@ -223,33 +288,92 @@ class PluginPublicFormsServer extends import_server.Plugin {
|
|
|
223
288
|
])
|
|
224
289
|
];
|
|
225
290
|
const collections = await this.parseCollectionData(dataSourceKey, collectionName, appends);
|
|
291
|
+
const tokenPayload = {
|
|
292
|
+
collectionName,
|
|
293
|
+
formKey: filterByTk,
|
|
294
|
+
targetCollections: appends
|
|
295
|
+
};
|
|
226
296
|
return {
|
|
227
297
|
dataSource: {
|
|
228
298
|
key: dataSourceKey,
|
|
229
299
|
displayName: dataSourceKey,
|
|
230
300
|
collections
|
|
231
301
|
},
|
|
232
|
-
token: this.app.authManager.jwt.sign(
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
formKey: filterByTk,
|
|
236
|
-
targetCollections: appends
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
expiresIn: "1h"
|
|
240
|
-
}
|
|
241
|
-
),
|
|
302
|
+
token: this.app.authManager.jwt.sign(tokenPayload, {
|
|
303
|
+
expiresIn: PUBLIC_FORM_TOKEN_EXPIRES_IN
|
|
304
|
+
}),
|
|
242
305
|
schema,
|
|
243
306
|
flowModel,
|
|
244
307
|
title
|
|
245
308
|
};
|
|
246
309
|
}
|
|
310
|
+
getPublicFormCookieName(formKey) {
|
|
311
|
+
const appName = this.app.name || "main";
|
|
312
|
+
const hash = import_crypto.default.createHash("sha256").update(`${appName}:${formKey}`).digest("hex").slice(0, 32);
|
|
313
|
+
return `${PUBLIC_FORM_COOKIE_PREFIX}${hash}`;
|
|
314
|
+
}
|
|
315
|
+
async decodePublicFormCookie(value) {
|
|
316
|
+
if (!value) {
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
const decoded = await this.app.authManager.jwt.decode(value);
|
|
320
|
+
if ((decoded == null ? void 0 : decoded.v) !== 1 || typeof decoded.formKey !== "string" || typeof decoded.collectionName !== "string" || !Array.isArray(decoded.targetCollections)) {
|
|
321
|
+
return null;
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
v: 1,
|
|
325
|
+
appName: typeof decoded.appName === "string" ? decoded.appName : void 0,
|
|
326
|
+
formKey: decoded.formKey,
|
|
327
|
+
collectionName: decoded.collectionName,
|
|
328
|
+
targetCollections: decoded.targetCollections.filter((name) => typeof name === "string"),
|
|
329
|
+
files: normalizeFiles(decoded.files),
|
|
330
|
+
exp: typeof decoded.exp === "number" ? decoded.exp : void 0
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
async readPublicFormCookie(ctx, formKey) {
|
|
334
|
+
var _a;
|
|
335
|
+
try {
|
|
336
|
+
return await this.decodePublicFormCookie((_a = ctx.cookies) == null ? void 0 : _a.get(this.getPublicFormCookieName(formKey)));
|
|
337
|
+
} catch {
|
|
338
|
+
return null;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
setPublicFormCookie(ctx, payload, maxAge = PUBLIC_FORM_COOKIE_MAX_AGE) {
|
|
342
|
+
var _a;
|
|
343
|
+
(_a = ctx.cookies) == null ? void 0 : _a.set(
|
|
344
|
+
this.getPublicFormCookieName(payload.formKey),
|
|
345
|
+
this.app.authManager.jwt.sign(
|
|
346
|
+
{
|
|
347
|
+
v: 1,
|
|
348
|
+
appName: this.app.name || "main",
|
|
349
|
+
formKey: payload.formKey,
|
|
350
|
+
collectionName: payload.collectionName,
|
|
351
|
+
targetCollections: payload.targetCollections,
|
|
352
|
+
files: normalizeFiles(payload.files)
|
|
353
|
+
},
|
|
354
|
+
{ expiresIn: Math.max(1, Math.floor(maxAge / 1e3)) }
|
|
355
|
+
),
|
|
356
|
+
(0, import_utils.getAuthCookieOptions)(ctx, true, maxAge)
|
|
357
|
+
);
|
|
358
|
+
}
|
|
247
359
|
// TODO
|
|
248
360
|
getPublicFormsMeta = async (ctx, next) => {
|
|
361
|
+
var _a;
|
|
249
362
|
const token = ctx.get("X-Form-Token");
|
|
250
363
|
const { filterByTk, password } = ctx.action.params;
|
|
251
364
|
try {
|
|
365
|
+
const existingCookie = password === void 0 ? await this.readPublicFormCookie(ctx, filterByTk) : null;
|
|
252
366
|
ctx.body = await this.getMetaByTk(filterByTk, { password, token });
|
|
367
|
+
if (((_a = ctx.body) == null ? void 0 : _a.token) && (password !== void 0 || !existingCookie)) {
|
|
368
|
+
const tokenPayload = await this.app.authManager.jwt.decode(ctx.body.token);
|
|
369
|
+
this.setPublicFormCookie(ctx, {
|
|
370
|
+
v: 1,
|
|
371
|
+
formKey: tokenPayload.formKey,
|
|
372
|
+
collectionName: tokenPayload.collectionName,
|
|
373
|
+
targetCollections: tokenPayload.targetCollections,
|
|
374
|
+
files: (existingCookie == null ? void 0 : existingCookie.formKey) === tokenPayload.formKey ? existingCookie.files : {}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
253
377
|
} catch (error) {
|
|
254
378
|
if (error instanceof PasswordError) {
|
|
255
379
|
ctx.throw(401, error.message);
|
|
@@ -285,7 +409,8 @@ class PluginPublicFormsServer extends import_server.Plugin {
|
|
|
285
409
|
ctx.PublicForm = {
|
|
286
410
|
collectionName: tokenData.collectionName,
|
|
287
411
|
formKey: tokenData.formKey,
|
|
288
|
-
targetCollections: tokenData.targetCollections
|
|
412
|
+
targetCollections: tokenData.targetCollections,
|
|
413
|
+
exp: tokenData.exp
|
|
289
414
|
};
|
|
290
415
|
const publicForms = this.db.getRepository("publicForms");
|
|
291
416
|
const instance = await publicForms.findOne({
|
|
@@ -320,13 +445,100 @@ class PluginPublicFormsServer extends import_server.Plugin {
|
|
|
320
445
|
ctx.permission = {
|
|
321
446
|
skip: true
|
|
322
447
|
};
|
|
323
|
-
} else if (["list", "get"].includes(actionName) && ctx.PublicForm["targetCollections"].includes(resourceName) || (collection == null ? void 0 : collection.options.template) === "file" &&
|
|
448
|
+
} else if (["list", "get"].includes(actionName) && ctx.PublicForm["targetCollections"].includes(resourceName) || (collection == null ? void 0 : collection.options.template) === "file" && ["create", "upload"].includes(actionName) || resourceName === "storages" && ["getBasicInfo", "createPresignedUrl", "check"].includes(actionName) || resourceName === "vditor" && ["check"].includes(actionName) || resourceName === "map-configuration" && actionName === "get") {
|
|
324
449
|
ctx.permission = {
|
|
325
450
|
skip: true
|
|
326
451
|
};
|
|
327
452
|
}
|
|
328
453
|
await next();
|
|
329
454
|
};
|
|
455
|
+
appendUploadedFileToPublicFormCookie = async (ctx, next) => {
|
|
456
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
457
|
+
await next();
|
|
458
|
+
if (!ctx.PublicForm || !["create", "upload"].includes((_a = ctx.action) == null ? void 0 : _a.actionName)) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
const collection = ((_c = (_b = ctx.dataSource) == null ? void 0 : _b.collectionManager) == null ? void 0 : _c.getCollection(ctx.action.resourceName)) || ((_e = (_d = ctx.db) == null ? void 0 : _d.getCollection) == null ? void 0 : _e.call(_d, ctx.action.resourceName));
|
|
462
|
+
if (((_f = collection == null ? void 0 : collection.options) == null ? void 0 : _f.template) !== "file") {
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
const id = getResponseRecordId(ctx.body);
|
|
466
|
+
if (id === null || id === void 0 || id === "") {
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
const formKey = ctx.PublicForm.formKey;
|
|
470
|
+
const existingCookie = await this.readPublicFormCookie(ctx, formKey);
|
|
471
|
+
const files = normalizeFiles(existingCookie == null ? void 0 : existingCookie.files);
|
|
472
|
+
const dataSourceKey = ((_g = ctx.dataSource) == null ? void 0 : _g.name) || ((_h = ctx.action.params) == null ? void 0 : _h.dataSourceKey) || "main";
|
|
473
|
+
const fileKey = `${dataSourceKey}/${collection.name}`;
|
|
474
|
+
const ids = files[fileKey] || [];
|
|
475
|
+
if (!ids.some((existingId) => String(existingId) === String(id))) {
|
|
476
|
+
ids.push(id);
|
|
477
|
+
}
|
|
478
|
+
files[fileKey] = ids;
|
|
479
|
+
const expiresAt = (existingCookie == null ? void 0 : existingCookie.exp) || ctx.PublicForm.exp;
|
|
480
|
+
const maxAge = expiresAt ? expiresAt * 1e3 - Date.now() : PUBLIC_FORM_COOKIE_MAX_AGE;
|
|
481
|
+
if (maxAge <= 0) {
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
this.setPublicFormCookie(
|
|
485
|
+
ctx,
|
|
486
|
+
{
|
|
487
|
+
v: 1,
|
|
488
|
+
formKey,
|
|
489
|
+
collectionName: ctx.PublicForm.collectionName,
|
|
490
|
+
targetCollections: ctx.PublicForm.targetCollections || [],
|
|
491
|
+
files
|
|
492
|
+
},
|
|
493
|
+
maxAge
|
|
494
|
+
);
|
|
495
|
+
};
|
|
496
|
+
authorizePublicFormFileAccess = async (ctx, params) => {
|
|
497
|
+
var _a, _b;
|
|
498
|
+
const cookies = parseCookieHeader((_a = ctx.get) == null ? void 0 : _a.call(ctx, "cookie"));
|
|
499
|
+
const fileKey = `${params.dataSourceKey}/${params.collectionName}`;
|
|
500
|
+
for (const [name, value] of cookies) {
|
|
501
|
+
if (!name.startsWith(PUBLIC_FORM_COOKIE_PREFIX)) {
|
|
502
|
+
continue;
|
|
503
|
+
}
|
|
504
|
+
try {
|
|
505
|
+
const payload = await this.decodePublicFormCookie(value);
|
|
506
|
+
if (!payload) {
|
|
507
|
+
continue;
|
|
508
|
+
}
|
|
509
|
+
if (payload.appName && payload.appName !== params.appName) {
|
|
510
|
+
continue;
|
|
511
|
+
}
|
|
512
|
+
if ((_b = payload.files[fileKey]) == null ? void 0 : _b.some((id) => String(id) === String(params.id))) {
|
|
513
|
+
const instance = await this.db.getRepository("publicForms").findOne({
|
|
514
|
+
filter: {
|
|
515
|
+
key: payload.formKey
|
|
516
|
+
}
|
|
517
|
+
});
|
|
518
|
+
if (instance == null ? void 0 : instance.get("enabled")) {
|
|
519
|
+
return true;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
} catch {
|
|
523
|
+
continue;
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
return false;
|
|
527
|
+
};
|
|
528
|
+
registerFileAccessAuthorizer() {
|
|
529
|
+
if (this.fileAccessAuthorizerRegistered) {
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
532
|
+
const fileManager = this.app.pm.get("file-manager") || this.app.pm.get("@nocobase/plugin-file-manager");
|
|
533
|
+
if (typeof (fileManager == null ? void 0 : fileManager.registerFileAccessAuthorizer) !== "function") {
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
fileManager.registerFileAccessAuthorizer({
|
|
537
|
+
name: "public-forms",
|
|
538
|
+
authorize: this.authorizePublicFormFileAccess
|
|
539
|
+
});
|
|
540
|
+
this.fileAccessAuthorizerRegistered = true;
|
|
541
|
+
}
|
|
330
542
|
async load() {
|
|
331
543
|
this.app.acl.registerSnippet({
|
|
332
544
|
name: `pm.${this.name}`,
|
|
@@ -337,10 +549,17 @@ class PluginPublicFormsServer extends import_server.Plugin {
|
|
|
337
549
|
"publicForms:getMeta": this.getPublicFormsMeta,
|
|
338
550
|
"publicForms:getFlowModel": this.getPublicFormFlowModel
|
|
339
551
|
});
|
|
552
|
+
this.registerFileAccessAuthorizer();
|
|
553
|
+
this.app.on("afterLoad", () => {
|
|
554
|
+
this.registerFileAccessAuthorizer();
|
|
555
|
+
});
|
|
340
556
|
this.app.dataSourceManager.afterAddDataSource((dataSource) => {
|
|
341
557
|
dataSource.resourceManager.use(this.parseToken, {
|
|
342
558
|
before: "auth"
|
|
343
559
|
});
|
|
560
|
+
dataSource.resourceManager.use(this.appendUploadedFileToPublicFormCookie, {
|
|
561
|
+
after: "acl"
|
|
562
|
+
});
|
|
344
563
|
dataSource.acl.use(this.parseACL, {
|
|
345
564
|
before: "core"
|
|
346
565
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/plugin-public-forms",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0-alpha.1",
|
|
4
4
|
"main": "dist/server/index.js",
|
|
5
5
|
"displayName": "Public forms",
|
|
6
6
|
"displayName.ru-RU": "Публичные формы",
|
|
@@ -20,10 +20,11 @@
|
|
|
20
20
|
"@nocobase/plugin-flow-engine": "2.x",
|
|
21
21
|
"@nocobase/plugin-ui-schema-storage": "2.x",
|
|
22
22
|
"@nocobase/server": "2.x",
|
|
23
|
-
"@nocobase/test": "2.x"
|
|
23
|
+
"@nocobase/test": "2.x",
|
|
24
|
+
"@nocobase/utils": "2.x"
|
|
24
25
|
},
|
|
25
26
|
"devDependencies": {
|
|
26
27
|
"react-device-detect": "2.2.3"
|
|
27
28
|
},
|
|
28
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "2377df8ceb12549149017f7f14a61207bf6e49a2"
|
|
29
30
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
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
|
-
"use strict";(self.webpackChunk_nocobase_plugin_public_forms=self.webpackChunk_nocobase_plugin_public_forms||[]).push([["192"],{3155:function(e,t,n){n.r(t),n.d(t,{AdminPublicFormPage:function(){return g}});var r=n(7375),o=n(3342),a=n(2059),l=n(9155),c=n.n(l),i=n(2707),u=n(4442),s=n(418),p=n(5473),m=n(5375);function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e,t,n,r,o,a,l){try{var c=e[a](l),i=c.value}catch(e){n(e);return}c.done?t(i):Promise.resolve(i).then(r,o)}function y(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function l(e){b(a,r,o,l,c,"next",e)}function c(e){b(a,r,o,l,c,"throw",e)}l(void 0)})}}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function h(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(l,"next",{value:i(0)}),c(l,"throw",{value:i(1)}),c(l,"return",{value:i(2)}),"function"==typeof Symbol&&c(l,Symbol.iterator,{value:function(){return this}}),l;function i(c){return function(i){var u=[c,i];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,r=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}var v=function(){var e,t=function(e){if(Array.isArray(e))return e}(e=(0,l.useState)(!1))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o=[],a=!0,l=!1;try{for(r=r.call(e);!(a=(t=r.next()).done)&&(o.push(t.value),2!==o.length);a=!0);}catch(e){l=!0,n=e}finally{try{a||null==r.return||r.return()}finally{if(l)throw n}}return o}}(e)||function(e){if(e){if("string"==typeof e)return f(e,2);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return f(e,2)}}(e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),n=t[0],r=t[1],u=(0,m.kO)().t,s=(0,i.useParams)(),p=(0,o.useApp)(),b=window.location.origin+p.getHref("public-forms/".concat(s.name));return c().createElement(a.Popover,{trigger:"hover",open:n,onOpenChange:function(e){r(e)},content:n?c().createElement(a.QRCode,{value:b,bordered:!1}):" "},c().createElement("a",null,u("QR code",{ns:m.CU})))};function g(){var e=(0,i.useParams)(),t=(0,m.kO)().t,n=(0,o.useGlobalTheme)().theme,l=(0,o.useAPIClient)(),f=(0,o.useCompile)(),b=a.theme.useToken().token,g=(0,o.useApp)(),w=(0,o.useGlobalVariable)("$env"),E=(0,o.useRequest)({url:"publicForms:get/".concat(e.name)}),k=E.data,O=E.loading,x=E.refresh,C=(null==k?void 0:k.data)||{},S=C.enabled,P=C.title,j=function(e,t){if(null==e)return{};var n,r,o,a={};if("u">typeof Reflect&&Reflect.ownKeys){for(o=0,n=Reflect.ownKeys(Object(e));o<n.length;o++)r=n[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}if(a=function(e,t){if(null==e)return{};var n,r,o={},a=Object.getOwnPropertyNames(e);for(r=0;r<a.length;r++)n=a[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n]);return o}(e,t),Object.getOwnPropertySymbols)for(o=0,n=Object.getOwnPropertySymbols(e);o<n.length;o++)r=n[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r]);return a}(C,["enabled","title"]);if(O)return c().createElement(a.Spin,null);var A=function(t){return y(function(){return h(this,function(n){switch(n.label){case 0:return[4,l.resource("publicForms").update({filterByTk:e.name,values:d({},t)})];case 1:return n.sent(),[4,x()];case 2:return n.sent(),[2]}})})()};return c().createElement("div",{style:{marginTop:"-50px"}},c().createElement("div",{style:{margin:"-24px",padding:"10px",display:"flex",alignItems:"center",justifyContent:"space-between",background:"".concat(b.colorBgContainer),borderBottom:"1px solid ".concat(b.colorBorderSecondary)}},c().createElement(a.Breadcrumb,{style:{marginLeft:"10px"},items:[{title:c().createElement(u.Link,{to:"/admin/settings/public-forms"},t("Public forms",{ns:m.CU}))},{title:f(P)}]}),c().createElement(a.Space,null,c().createElement(u.Link,{target:"_blank",to:"/public-forms/".concat(e.name)},c().createElement(a.Button,{disabled:!S,icon:c().createElement(r.EyeOutlined,null)},t("Open form",{ns:m.CU}))),c().createElement(a.Dropdown,{menu:{items:[{key:"enabled",label:c().createElement("a",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},onClick:function(){return A({enabled:!S})}},c().createElement("span",{style:{marginRight:"10px"}},t("Enable form",{ns:m.CU})),c().createElement(a.Switch,{size:"small",checked:S}))},{key:"password",label:c().createElement("a",{onClick:function(){return y(function(){return h(this,function(e){switch(e.label){case 0:return[4,(0,o.FormDialog)(t("Password"),function(){return c().createElement(o.ApplicationContext.Provider,{value:g},c().createElement(o.SchemaComponentOptions,{components:{Checkbox:o.Checkbox,TextAreaWithGlobalScope:o.TextAreaWithGlobalScope,FormItem:o.FormItem}},c().createElement(s.FormLayout,{layout:"vertical"},c().createElement(o.SchemaComponent,{schema:{properties:{password:{type:"string","x-decorator":"FormItem","x-component":"TextAreaWithGlobalScope","x-component-props":{password:!0,scope:[w]}}}}}))))},n).open({initialValues:d({},j)})];case 1:return[4,A({password:e.sent().password})];case 2:return e.sent(),[2]}})})()}}," ",t("Set password"))},{key:"divider1",type:"divider"},{key:"copyLink",label:c().createElement("a",{onClick:function(){var n=window.location.origin+g.getHref("public-forms/".concat(e.name));navigator.clipboard.writeText(n),a.message.success(t("Link copied successfully"))}},t("Copy link"))},{key:"qrcode",label:c().createElement(v,null)}]}},c().createElement(a.Button,{icon:c().createElement(r.SettingOutlined,null)},t("Settings"))))),c().createElement("div",{style:{maxWidth:800,margin:"100px auto",position:"relative",zIndex:0}},c().createElement(o.VariablesProvider,{filterVariables:function(e){return!["$user","$nRole","$nToken"].includes(e.key)}},c().createElement(o.RemoteSchemaComponent,{uid:e.name,scope:{useCreateActionProps:p.nQ},components:{PublicFormMessageProvider:function(e){return e.children}}})),c().createElement(o.PoweredBy,null)))}}}]);
|
|
@@ -1,10 +0,0 @@
|
|
|
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
|
-
"use strict";(self.webpackChunk_nocobase_plugin_public_forms=self.webpackChunk_nocobase_plugin_public_forms||[]).push([["595"],{3170:function(e,t,r){r.r(t),r.d(t,{PageBackgroundColor:function(){return q},PublicFormMessageContext:function(){return _},PublicFormPage:function(){return G}});var n=r(5477),o=r(5230),a=r(2625),l=r(3342),i=r(2059),u=r(7601),c=r(9155),s=r.n(c),f=r(1878),p=r(2707),d=r(5473),b=r(9185),y=r.n(b),m=r(5953);function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var h=(0,o.connect)(function(e){var t,r,n,o=(0,m.useTranslation)().t,a=e.value,i=e.onChange,f=(e.dateFormat,e.timeFormat),p=e.showTime,d=void 0!==p&&p,b=e.picker,h=e.disabled,g=function(e,t){if(null==e)return{};var r,n,o,a={};if("u">typeof Reflect&&Reflect.ownKeys){for(o=0,r=Reflect.ownKeys(Object(e));o<r.length;o++)n=r[o],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}if(a=function(e,t){if(null==e)return{};var r,n,o={},a=Object.getOwnPropertyNames(e);for(n=0;n<a.length;n++)r=a[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r]);return o}(e,t),Object.getOwnPropertySymbols)for(o=0,r=Object.getOwnPropertySymbols(e);o<r.length;o++)n=r[o],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}(e,["value","onChange","dateFormat","timeFormat","showTime","picker","disabled"]),w=function(e){if(Array.isArray(e))return e}(t=(0,c.useState)(!1))||function(e){var t,r,n=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o=[],a=!0,l=!1;try{for(n=n.call(e);!(a=(t=n.next()).done)&&(o.push(t.value),2!==o.length);a=!0);}catch(e){l=!0,r=e}finally{try{a||null==n.return||n.return()}finally{if(l)throw r}}return o}}(t)||function(e){if(e){if("string"==typeof e)return v(e,2);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return v(e,2)}}(t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),O=w[0],S=w[1],k=(0,c.useCallback)(function(t){S(!1);var r=new Date(t);e.dateOnly?i(y()(t)):i(r)},[d,i]),P=(0,c.useCallback)(function(){S(!1),i(null)},[i]),C=(0,c.useCallback)(function(e,t){return t},[]);return s().createElement(s().Fragment,null,s().createElement("div",{onClick:function(){return!h&&S(!0)}},s().createElement(l.DatePicker,(r=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}({onClick:function(){return S(!0)},value:a,picker:b,disabled:h},g),n=n={popupStyle:{display:"none"},style:{pointerEvents:"none",width:"100%"}},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(n)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}),r))),s().createElement(u.lr,{cancelText:o("Cancel"),confirmText:o("Confirm"),visible:O,title:s().createElement("a",{onClick:P},o("Clear")),onClose:function(){S(!1)},precision:d?function(e){var t=e.toLowerCase();if(/\bss?\b/.test(t))return"second";if(/\bmm?\b/.test(t))return"minute";if(/\bhh?\b/.test(t))return"hour";throw Error("Invalid time format")}(void 0===f?"HH:mm":f):"date"===b?"day":b,renderLabel:C,min:new Date(1950,0,1),max:new Date(2050,11,31),onConfirm:function(e){k(e)}}))},(0,o.mapProps)((0,l.mapDatePicker)()),(0,o.mapReadPretty)(l.DatePicker.ReadPretty));function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw n}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return g(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var O=(0,o.connect)(function(e){var t=e.value,r=e.onChange,n=e.options,o=void 0===n?[]:n,a=e.mode,i=e.disabled,f=(0,m.useTranslation)().t,p=w((0,c.useState)(!1),2),d=p[0],b=p[1],y=w((0,c.useState)(t||[]),2),v=y[0],h=y[1],g=w((0,c.useState)(null),2),O=g[0],S=g[1],k=(0,c.useMemo)(function(){return O?o.filter(function(e){return e.label.toLowerCase().includes(O.toLowerCase())}):o},[o,O]);return(0,c.useEffect)(function(){d||S(null)},[d]),s().createElement(s().Fragment,null,s().createElement("div",{onClick:function(){return!i&&b(!0)}},s().createElement(l.Select,{placeholder:f("Select"),value:t,dropdownStyle:{display:"none"},multiple:"multiple"===a,disabled:i,onClear:function(){b(!1),r(null),h(null)},onFocus:function(e){return e.preventDefault()},style:{pointerEvents:"none"}})),s().createElement(u.zD,{visible:d,onMaskClick:function(){b(!1),t&&(null==t?void 0:t.length)!==0||h([])},destroyOnClose:!0},s().createElement("div",{style:{margin:"10px"}},s().createElement(u.IW,{placeholder:f("search"),value:O,onChange:function(e){return S(e)},showCancelButton:!0})),s().createElement("div",{style:{maxHeight:"60vh",overflowY:"auto"}},s().createElement(u.Pg,{multiple:"multiple"===a,value:Array.isArray(v)?v:[v],onChange:function(e){"multiple"===a?h(e):(h(e[0]),r(e[0]),b(!1))}},k.map(function(e){return s().createElement(u.Pg.Item,{key:e.value,value:e.value},e.label)}))),"multiple"===a&&s().createElement(u.$n,{block:!0,color:"primary",onClick:function(){r(v),b(!1)},style:{marginTop:"16px"}},f("Confirm"))))},(0,o.mapProps)({dataSource:"options"})),S=r(5375),k=function(){var e=(0,S.kO)().t;return s().createElement(l.BlockItemCard,{style:{boxShadow:"unset"}},s().createElement(i.Result,{status:"403",subTitle:e("The form is not enabled and cannot be accessed",{ns:S.CU})}))},P=function(){return(0,S.kO)().t,s().createElement(l.BlockItemCard,{style:{boxShadow:"unset"}},s().createElement(i.Result,{status:"404"}))};function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function j(e,t,r,n,o,a,l){try{var i=e[a](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,o)}function E(e){return(E=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function x(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function A(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function D(e,t){return(D=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function F(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw n}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return C(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return C(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(T=function(){return!!e})()}function I(){var e,t,r=(e=["\n @media (min-width: 1025px) {\n padding-top: 10vh;\n }\n padding-top: 0px;\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return I=function(){return r},r}var M=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(){var e,t;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return e=r,t=arguments,e=E(e),function(e,t){var r;if(t&&("object"==((r=t)&&"u">typeof Symbol&&r.constructor===Symbol?"symbol":typeof r)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,T()?Reflect.construct(e,t||[],E(this).constructor):e.apply(this,t))}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&D(r,e),t=[{key:"getDataSource",value:function(){var e;return(e=function(){return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(e){return[2,{}]})},function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function l(e){j(a,n,o,l,i,"next",e)}function i(e){j(a,n,o,l,i,"throw",e)}l(void 0)})})()}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(r.prototype,t),r}(l.DataSource);function R(e){var t=e.dataSource,r=(0,l.useApp)(),n=F((0,c.useMemo)(function(){var e=new l.DataSourceManager({},r),n=e.addDataSource(M,t);return[e,new l.CollectionManager([],n)]},[r,t]),2),o=n[0],a=n[1];return s().createElement("div",null,s().createElement(l.DataSourceApplicationProvider,{dataSource:t.key,dataSourceManager:o,instance:a},e.children))}function B(e){var t=e.children,r=(0,l.useApp)();return(0,c.useEffect)(function(){var e=r.apiClient.axios.interceptors.request.use(function(e){return e.headers&&(e.headers["X-Form-Token"]=localStorage.getItem("NOCOBASE_FORM_TOKEN")||""),e});return function(){r.apiClient.axios.interceptors.request.eject(e)}},[r.apiClient.axios.interceptors.request]),s().createElement(l.APIClientProvider,{apiClient:r.apiClient},t)}var _=(0,c.createContext)({}),q="#f5f5f5",V=function(){var e,t;return f.isDesktop?"100%":"u">typeof CSS&&(null==(e=(t=CSS).supports)?void 0:e.call(t,"height","100dvh"))?"100dvh":"100vh"},N=function(e){var t=e.children,r=F((0,c.useState)(!1),2),n=r[0],l=r[1],i=(0,o.useField)(),u=(0,a.useMemoizedFn)(function(e,t){i.form.query(e).take(function(e){e&&(e.visible=t,e.hidden=!t)})});return(0,c.useEffect)(function(){u("success",n),u("form",!n),n||i.form.query("promptMessage").take(function(e){e&&(e.visible=!1,e.hidden=!0)})},[i.form,n,u]),s().createElement(_.Provider,{value:{showMessage:n,setShowMessage:l}},t)},W=function(e){return s().createElement(l.AssociationField,A(x({},e),{popupMatchSelectWidth:!0}))};W.SubTable=l.AssociationField.SubTable,W.Nester=l.AssociationField.Nester,W.AddNewer=l.Action.Container,W.Selector=l.Action.Container,W.Viewer=l.Action.Container,W.InternalSelect=l.AssociationField.InternalSelect,W.ReadPretty=l.AssociationField.ReadPretty,W.FileSelector=l.AssociationField.FileSelector;var K=function(e){return s().createElement(h,e)};K.FilterWithPicker=l.DatePicker.FilterWithPicker,K.RangePicker=l.DatePicker.RangePicker;var $={Button:u.$n,Select:function(e){return s().createElement(O,e)},DatePicker:K,UnixTimestamp:h,Modal:u.lG,AssociationField:W};function z(){var e,t,r,o,a,u,b=(0,p.useParams)(),y=(0,l.useRequest)({url:"publicForms:getMeta/".concat(b.name),skipAuth:!0},{onSuccess:function(e){var t;localStorage.setItem("NOCOBASE_FORM_TOKEN",null==e||null==(t=e.data)?void 0:t.token)}}),m=y.error,v=y.data,h=y.loading,g=y.run,w=F((0,c.useState)(""),2),O=w[0],S=w[1],C=(0,c.useContext)(l.SchemaComponentContext);if(e=(0,l.useCompile)(),(0,c.useEffect)(function(){var t;v&&(document.title=e(null==v||null==(t=v.data)?void 0:t.title))},[e,v]),(0,c.useEffect)(function(){if(!f.isDesktop){var e=document.querySelector('meta[name="viewport"]');e||((e=document.createElement("meta")).setAttribute("name","viewport"),document.head.appendChild(e)),e.setAttribute("content","width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"),document.body.style.backgroundColor=q,document.body.style.overflow="hidden";var t=document.createElement("div");document.body.appendChild(t),document.body.removeChild(t)}},[]),(null==m||null==(t=m.response)?void 0:t.status)===401||(null==v||null==(r=v.data)?void 0:r.passwordRequired))return s().createElement("div",null,s().createElement(i.Modal,{centered:!0,title:"Password",open:!0,cancelButtonProps:{hidden:!0},onOk:function(){g({password:O})}},s().createElement(i.Input.Password,{onChange:function(e){S(e.target.value)}})));if((null==m||null==(o=m.response)?void 0:o.status)===500)return s().createElement(P,null);if(h)return s().createElement(i.Spin,null);if(!(null==v?void 0:v.data))return s().createElement(k,null);var j=f.isMobile?$:{},E=V();return s().createElement(l.ACLCustomContext.Provider,{value:{allowAll:!0}},s().createElement(B,null,s().createElement("div",{style:x({minHeight:f.isDesktop?"100vh":E,background:q,height:E},f.isDesktop?{overflow:"auto"}:{overflowX:"hidden",overflowY:"auto",WebkitOverflowScrolling:"touch"})},s().createElement("div",{style:{maxWidth:800,margin:"0 auto",position:"relative",zIndex:0},className:(0,n.css)(I())},s().createElement(R,{dataSource:null==v||null==(a=v.data)?void 0:a.dataSource},s().createElement(l.SchemaComponentContext.Provider,{value:A(x({},C),{designable:!1})},s().createElement(l.SchemaComponent,{schema:null==v||null==(u=v.data)?void 0:u.schema,scope:{useCreateActionProps:d.nQ},components:x({PublicFormMessageProvider:N},j)}))),s().createElement("div",{style:{marginBottom:"20px"}},s().createElement(l.PoweredBy,null))))))}function G(){return s().createElement(l.GlobalThemeProvider,{theme:{token:{marginBlock:18,borderRadiusBlock:0,boxShadowTertiary:"none",fontSize:14}}},s().createElement(l.VariablesProvider,{filterVariables:function(e){return!["$user","$nRole","$nToken"].includes(e.key)}},s().createElement(z,null)))}},5473:function(e,t,r){r.d(t,{yY:function(){return g},W2:function(){return c},nQ:function(){return d},vT:function(){return l}});var n=r(3342),o=r(2059);function a(e,t,r,n,o,a,l){try{var i=e[a](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,o)}function l(){var e=o.App.useApp().message,t=(0,n.useCollectionRecordData)(),r=(0,n.useDataBlockResource)(),l=(0,n.useBlockRequestContext)().service,i=(0,n.useCollection)();return{confirm:{title:"Delete",content:"Are you sure you want to delete it?"},onClick:function(){var n;return(n=function(){return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(n){switch(n.label){case 0:if(!i)throw Error("collection does not exist");return[4,r.destroy({filterByTk:t[i.filterTargetKey]})];case 1:return n.sent(),[4,l.refresh()];case 2:return n.sent(),e.success("Deleted!"),[2]}})},function(){var e=this,t=arguments;return new Promise(function(r,o){var l=n.apply(e,t);function i(e){a(l,r,o,i,u,"next",e)}function u(e){a(l,r,o,i,u,"throw",e)}i(void 0)})})()}}}var i=r(9452),u=r(9155),c=function(){var e=(0,n.useCollectionRecordData)();return{form:(0,u.useMemo)(function(){return(0,i.createForm)({initialValues:e})},[e])}},s=r(5230),f=r(3170);function p(e,t,r,n,o,a,l){try{var i=e[a](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,o)}var d=function(){var e=(0,s.useForm)(),t=(0,n.useDataBlockResource)(),r=(0,s.useField)(),o=(0,n.useCollectValuesToSubmit)(),a=(0,s.useFieldSchema)(),l=(0,n.useFormBlockContext)().updateAssociationValues,i=(0,u.useContext)(f.PublicFormMessageContext).setShowMessage;return{type:"primary",onClick:function(){var n;return(n=function(){var n,u,c,s,f;return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(p){switch(p.label){case 0:if(c=(u=null!=(n=null==a?void 0:a["x-action-settings"])?n:{}).skipValidator,s=u.triggerWorkflows,c)return[3,2];return[4,e.submit()];case 1:p.sent(),p.label=2;case 2:return[4,o()];case 3:f=p.sent(),r.data=r.data||{},r.data.loading=!0,p.label=4;case 4:return p.trys.push([4,8,,9]),[4,e.submit()];case 5:return p.sent(),[4,t.publicSubmit({values:f,triggerWorkflows:(null==s?void 0:s.length)?s.map(function(e){return[e.workflowKey,e.context].filter(Boolean).join("!")}).join(","):void 0,updateAssociationValues:l})];case 6:return p.sent(),[4,e.reset()];case 7:return p.sent(),r.data.loading=!1,i(!0),[3,9];case 8:return p.sent(),r.data.loading=!1,[3,9];case 9:return[2]}})},function(){var e=this,t=arguments;return new Promise(function(r,o){var a=n.apply(e,t);function l(e){p(a,r,o,l,i,"next",e)}function i(e){p(a,r,o,l,i,"throw",e)}l(void 0)})})()}}},b=r(166),y=r(3127);function m(e,t,r,n,o,a,l){try{var i=e[a](l),u=i.value}catch(e){r(e);return}i.done?t(u):Promise.resolve(u).then(n,o)}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n})}return e}function h(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}var g=function(){var e=(0,n.useActionContext)().setVisible,t=o.App.useApp().message,r=(0,s.useForm)(),a=(0,n.useDataBlockResource)(),l=(0,n.useCollection)(),i=(0,n.useAPIClient)(),u=(0,n.usePlugin)(y.default),c=(0,n.useBlockRequestContext)().service;return{type:"primary",onClick:function(){var n;return(n=function(){var n,o,s,f,p;return function(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(r)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,n=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(d){switch(d.label){case 0:return[4,r.submit()];case 1:if(d.sent(),!(n=r.values)[l.filterTargetKey])return[3,3];return[4,a.update({values:h(v({},n),{version:"v1"}),filterByTk:n[l.filterTargetKey]})];case 2:return d.sent(),[3,6];case 3:var y,m;return o=(0,b.uid)(),s=u.getFormSchemaByType(n.type),y=s({collection:(f=n.collection.split(":")).pop(),dataSource:f.pop()||"main"}),m=u.t.bind(u),(p={type:"void",name:(0,b.uid)(),"x-decorator":"PublicFormMessageProvider",properties:{form:y,promptMessage:{type:"void","x-component":"h3","x-component-props":{style:{margin:"10px 0px 10px"},children:'{{ t("Prompt after successful submission",{ns:"public-forms"})}}'}},success:{type:"void","x-editable":!1,"x-toolbar-props":{draggable:!1},"x-settings":"blockSettings:publicMarkdown","x-component":"Markdown.Void","x-decorator":"CardItem","x-component-props":{content:m("# Submitted successfully!\nThis is a demo text, **supports Markdown syntax**.")},"x-decorator-props":{name:"markdown",engine:"handlebars"}}}})["x-uid"]=o,[4,a.create({values:h(v({},n),{key:o,version:"v1"})})];case 4:return d.sent(),[4,i.resource("uiSchemas").insert({values:p})];case 5:d.sent(),d.label=6;case 6:return r.reset(),[4,c.refresh()];case 7:return d.sent(),t.success("Saved successfully!"),e(!1),[2]}})},function(){var e=this,t=arguments;return new Promise(function(r,o){var a=n.apply(e,t);function l(e){m(a,r,o,l,i,"next",e)}function i(e){m(a,r,o,l,i,"throw",e)}l(void 0)})})()}}}}}]);
|
|
@@ -1,10 +0,0 @@
|
|
|
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
|
-
"use strict";(self.webpackChunk_nocobase_plugin_public_forms_client_v2=self.webpackChunk_nocobase_plugin_public_forms_client_v2||[]).push([["169"],{648:function(e,t,n){n.r(t),n.d(t,{default:function(){return y}});var r=n(694),o=n(59),l=n(155),u=n.n(l),a=n(442),i=n(913);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function f(e,t,n,r,o,l,u){try{var a=e[l](u),i=a.value}catch(e){n(e);return}a.done?t(i):Promise.resolve(i).then(r,o)}function s(e,t){return null!=t&&"u">typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function p(e){var t,n=e.model,a=(0,r.useFlowContext)(),i=function(e){if(Array.isArray(e))return e}(t=(0,l.useState)(null))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o=[],l=!0,u=!1;try{for(r=r.call(e);!(l=(t=r.next()).done)&&(o.push(t.value),2!==o.length);l=!0);}catch(e){u=!0,n=e}finally{try{l||null==r.return||r.return()}finally{if(u)throw n}}return o}}(t)||function(e){if(e){if("string"==typeof e)return c(e,2);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return c(e,2)}}(t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),p=i[0],y=i[1],d=(0,l.useMemo)(function(){var e=new r.FlowContext;return s(a,r.FlowContext)&&e.addDelegate(a),e.defineProperty("view",{value:{type:"embed",inputArgs:{},Header:null,Footer:null,close:function(){var e;return(e=function(){return function(e,t){var n,r,o,l={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},u=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),a=Object.defineProperty;return a(u,"next",{value:i(0)}),a(u,"throw",{value:i(1)}),a(u,"return",{value:i(2)}),"function"==typeof Symbol&&a(u,Symbol.iterator,{value:function(){return this}}),u;function i(a){return function(i){var c=[a,i];if(n)throw TypeError("Generator is already executing.");for(;u&&(u=0,c[0]&&(l=0)),l;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return l.label++,{value:c[1],done:!1};case 5:l.label++,r=c[1],c=[0];continue;case 7:c=l.ops.pop(),l.trys.pop();continue;default:if(!(o=(o=l.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){l=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){l.label=c[1];break}if(6===c[0]&&l.label<o[1]){l.label=o[1],o=c;break}if(o&&l.label<o[2]){l.label=o[2],l.ops.push(c);break}o[2]&&l.ops.pop(),l.trys.pop();continue}c=t.call(e,l)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(e){return[2,void 0]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var l=e.apply(t,n);function u(e){f(l,r,o,u,a,"next",e)}function a(e){f(l,r,o,u,a,"throw",e)}u(void 0)})})()},update:function(){}}}),e.defineProperty("flowSettingsEnabled",{value:!0}),e},[a]),v=(0,l.useMemo)(function(){return!!(s(n.context,r.FlowContext)&&s(d,r.FlowContext))},[n.context,d]);return((0,l.useLayoutEffect)(function(){return s(n.context,r.FlowContext)&&s(d,r.FlowContext)?(n.context.addDelegate(d),y({model:n,context:d}),function(){s(n.context,r.FlowContext)&&n.context.removeDelegate(d)}):void y(null)},[n,n.context,d]),v&&((null==p?void 0:p.model)!==n||p.context!==d))?u().createElement(o.Spin,null):u().createElement(r.FlowViewContextProvider,{context:d},u().createElement(r.FlowModelRenderer,{model:n,showFlowSettings:!1}))}function y(){var e=(0,a.useParams)().name;return u().createElement(i.PublicFormsSettingsDetailView,{pageUid:e},function(e){var t,n,r=Array.isArray(n=null==(t=e.subModels)?void 0:t.page)?n[0]:n;return r?u().createElement(p,{model:r}):u().createElement(o.Spin,null)})}}}]);
|