@sealcode/sealgen 0.8.33 → 0.8.35
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/@types/forms/controls/derived.d.ts +2 -0
- package/lib/forms/controls/derived-frame.js +0 -1
- package/lib/forms/controls/derived-frame.js.map +1 -1
- package/lib/forms/controls/derived.js +12 -3
- package/lib/forms/controls/derived.js.map +1 -1
- package/package.json +1 -1
- package/src/forms/controls/derived-frame.ts +0 -1
- package/src/forms/controls/derived.ts +23 -3
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FlatTemplatable } from "tempstream";
|
|
2
2
|
import { FormField } from "../fields/field";
|
|
3
|
+
import { FormDataValue } from "../form";
|
|
3
4
|
import { FormControl, FormControlContext } from "./form-control";
|
|
4
5
|
export declare class Derived<Consts extends Record<string, unknown | undefined>> extends FormControl {
|
|
5
6
|
fields: FormField[];
|
|
@@ -7,5 +8,6 @@ export declare class Derived<Consts extends Record<string, unknown | undefined>>
|
|
|
7
8
|
getConsts: (fctx: FormControlContext) => Promise<Consts>;
|
|
8
9
|
role: "decoration";
|
|
9
10
|
constructor(fields: FormField[], _render: (values: Record<string, string>, consts: Consts) => Promise<FlatTemplatable>, getConsts: (fctx: FormControlContext) => Promise<Consts>);
|
|
11
|
+
getBackendValues(fctx: FormControlContext): Promise<Record<string, FormDataValue>>;
|
|
10
12
|
render(fctx: FormControlContext): Promise<FlatTemplatable>;
|
|
11
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derived-frame.js","sourceRoot":"","sources":["../../../src/forms/controls/derived-frame.ts"],"names":[],"mappings":";;;AACA,2DAA+D;AAG/D,2CAAyD;AACzD,qDAAiD;AAEjD,uCAAoC;AACpC,iDAAoD;AAEpD,MAAa,YAAa,SAAQ,iBAIhC;IACD,YACQ,UAAkB,EACzB,MAAmB,EACZ,oBAGsB;IAC7B,mCAAmC;IAC5B,WAAW,GAAG,GAAG,oBAAQ,CAAC,UAAU,CAAC;QAE5C,KAAK,CACJ,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC;UAC9B,MAAM,CAAC,QAAQ;aACZ,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC;YAC1C,GAAG,MAAM;YACT,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;SACjB,CAAC;aACA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;aACxC,IAAI,CAAC,GAAG,CAAC;mBACI,EAChB,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CACF,CAAC;QA1BK,eAAU,GAAV,UAAU,CAAQ;QAElB,yBAAoB,GAApB,oBAAoB,CAGE;QAEtB,aAAQ,GAAR,QAAQ,CAA6B;IAoB7C,CAAC;IAED,0BAA0B,CAAC,IAAa,EAAE,OAAwB;QACjE,OAAO,uBAAU,CAAA,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"derived-frame.js","sourceRoot":"","sources":["../../../src/forms/controls/derived-frame.ts"],"names":[],"mappings":";;;AACA,2DAA+D;AAG/D,2CAAyD;AACzD,qDAAiD;AAEjD,uCAAoC;AACpC,iDAAoD;AAEpD,MAAa,YAAa,SAAQ,iBAIhC;IACD,YACQ,UAAkB,EACzB,MAAmB,EACZ,oBAGsB;IAC7B,mCAAmC;IAC5B,WAAW,GAAG,GAAG,oBAAQ,CAAC,UAAU,CAAC;QAE5C,KAAK,CACJ,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC;UAC9B,MAAM,CAAC,QAAQ;aACZ,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC;YAC1C,GAAG,MAAM;YACT,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;SACjB,CAAC;aACA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;aACxC,IAAI,CAAC,GAAG,CAAC;mBACI,EAChB,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CACF,CAAC;QA1BK,eAAU,GAAV,UAAU,CAAQ;QAElB,yBAAoB,GAApB,oBAAoB,CAGE;QAEtB,aAAQ,GAAR,QAAQ,CAA6B;IAoB7C,CAAC;IAED,0BAA0B,CAAC,IAAa,EAAE,OAAwB;QACjE,OAAO,uBAAU,CAAA,UAAU,CAAC;SACrB,IAAI,CAAC,QAAQ;;;KAGjB,OAAO,IAAI,EAAE;iBACD,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAc;QACnB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YACxB,IACC,CAAC,wBAAQ,CACR;gBACC,iBAAiB,EAAE,0BAAU,CAAC,MAAM;gBACpC,OAAO,EAAE,0BAAU,CAAC,MAAM;gBAC1B,QAAQ,EAAE,0BAAU,CAAC,MAAM;aAC3B,EACD,KAAK,CACL,EACA;gBACD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,0BAA0B,CACzC,GAAG,EACH,sBAAsB,CACtB,CAAC;gBACF,OAAO;aACP;YACD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,0BAA0B,CACzC,GAAG,EACH,MAAM,IAAI,CAAC,oBAAoB,CAC9B,IAAI,iCAAkB,CACrB,GAAG,EACH,GAAG,CAAC,KAAK,EACT,EAAE,EACF,KAAK,CAAC,iBAAiB,EACvB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CACxC,EACD,GAAG,CAAC,KAAK,CACT,CACD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO;IACR,CAAC;CACD;AAhFD,oCAgFC"}
|
|
@@ -12,11 +12,17 @@ class Derived extends form_control_1.FormControl {
|
|
|
12
12
|
this.getConsts = getConsts;
|
|
13
13
|
this.role = "decoration";
|
|
14
14
|
}
|
|
15
|
+
async getBackendValues(fctx) {
|
|
16
|
+
const fieldnames = this.fields.map((f) => f.name);
|
|
17
|
+
const result = Object.fromEntries(Object.entries(fctx.data).filter(([key]) => fieldnames.includes(key)));
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
15
20
|
async render(fctx) {
|
|
16
21
|
// the A makes it always a valid id, as it cannot start with a number
|
|
17
22
|
const id = "A" + crypto_1.randomUUID();
|
|
18
23
|
const consts = this.getConsts(fctx);
|
|
19
|
-
const frontend_side_refresh_code =
|
|
24
|
+
const frontend_side_refresh_code = (values_code = "getValues()") => `render(${values_code}, consts)
|
|
25
|
+
.then(result=>document.querySelector("#${id}").innerHTML=result)`;
|
|
20
26
|
return tempstream_1.tempstream /* HTML */ `<div>
|
|
21
27
|
<script>
|
|
22
28
|
(function () {
|
|
@@ -40,6 +46,9 @@ class Derived extends form_control_1.FormControl {
|
|
|
40
46
|
let input = form_container.querySelector(
|
|
41
47
|
\`input[name="\${field_name}"]\`
|
|
42
48
|
);
|
|
49
|
+
if (!input) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
43
52
|
if (input.type === "radio") {
|
|
44
53
|
input = form_container.querySelector(
|
|
45
54
|
\`input[name="\${field_name}"]:checked\`
|
|
@@ -54,13 +63,13 @@ class Derived extends form_control_1.FormControl {
|
|
|
54
63
|
.querySelectorAll(\`input[name="\${field_name}"]\`)
|
|
55
64
|
.forEach((input) => {
|
|
56
65
|
input.addEventListener("change", () => {
|
|
57
|
-
${frontend_side_refresh_code};
|
|
66
|
+
${frontend_side_refresh_code()};
|
|
58
67
|
});
|
|
59
68
|
});
|
|
60
69
|
}
|
|
61
70
|
${JSON.stringify(this.fields.map((field) => field.name))}.forEach(setupWatcher);
|
|
62
71
|
setTimeout(() => {
|
|
63
|
-
${frontend_side_refresh_code};
|
|
72
|
+
${frontend_side_refresh_code(JSON.stringify(await this.getBackendValues(fctx)))};
|
|
64
73
|
}, 0);
|
|
65
74
|
})();
|
|
66
75
|
</script>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derived.js","sourceRoot":"","sources":["../../../src/forms/controls/derived.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,2CAAyD;
|
|
1
|
+
{"version":3,"file":"derived.js","sourceRoot":"","sources":["../../../src/forms/controls/derived.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,2CAAyD;AAGzD,iDAAiE;AAEjE,MAAa,OAEX,SAAQ,0BAAW;IAGpB,YACQ,MAAmB,EACnB,OAGsB,EACtB,SAAwD;QAE/D,KAAK,EAAE,CAAC;QAPD,WAAM,GAAN,MAAM,CAAa;QACnB,YAAO,GAAP,OAAO,CAGe;QACtB,cAAS,GAAT,SAAS,CAA+C;QARhE,SAAI,GAAU,YAAY,CAAC;IAW3B,CAAC;IAED,KAAK,CAAC,gBAAgB,CACrB,IAAwB;QAExB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAC1C,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CACxB,CACD,CAAC;QACF,OAAO,MAAM,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAwB;QACpC,qEAAqE;QACrE,MAAM,EAAE,GAAG,GAAG,GAAG,mBAAU,EAAE,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEpC,MAAM,0BAA0B,GAAG,CAAC,WAAW,GAAG,aAAa,EAAE,EAAE,CAClE,UAAU,WAAW;yCACiB,EAAE,sBAAsB,CAAC;QAChE,OAAO,uBAAU,CAAA,UAAU,CAAC;;;sBAGR,GAAG;YACpB,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;iBAClC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACrB,OAAO,IAAI,GAAG,MACb,OAAO,KAAK,KAAK,QAAQ;oBACxB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;oBACvB,CAAC,CAAC,OAAO,KAAK,IAAI,QAAQ;wBAC1B,CAAC,CAAC,GAAG,GAAI,KAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG;wBAC1C,CAAC,CAAE,KAAgB,CAAC,QAAQ,EAC9B,EAAE,CAAC;YACJ,CAAC,CAAC;iBACD,IAAI,CAAC,GAAG,CAAC;YACX,GAAG;;;sBAGc,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;;;SAGpC,IAAI,CAAC,SAAS,CACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CACtC;;;;;;;;;;;;;;;;;;;;;WAqBG,0BAA0B,EAAE;;;;OAIhC,IAAI,CAAC,SAAS,CACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CACtC;;QAEE,0BAA0B,CAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACjD;;;;cAIO,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,MAAM,CAAC;SAC1C,CAAC;IACT,CAAC;CACD;AAlGD,0BAkGC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from "crypto";
|
|
2
2
|
import { FlatTemplatable, tempstream } from "tempstream";
|
|
3
3
|
import { FormField } from "../fields/field";
|
|
4
|
+
import { FormDataValue } from "../form";
|
|
4
5
|
import { FormControl, FormControlContext } from "./form-control";
|
|
5
6
|
|
|
6
7
|
export class Derived<
|
|
@@ -19,13 +20,27 @@ export class Derived<
|
|
|
19
20
|
super();
|
|
20
21
|
}
|
|
21
22
|
|
|
23
|
+
async getBackendValues(
|
|
24
|
+
fctx: FormControlContext
|
|
25
|
+
): Promise<Record<string, FormDataValue>> {
|
|
26
|
+
const fieldnames = this.fields.map((f) => f.name);
|
|
27
|
+
const result = Object.fromEntries(
|
|
28
|
+
Object.entries(fctx.data).filter(([key]) =>
|
|
29
|
+
fieldnames.includes(key)
|
|
30
|
+
)
|
|
31
|
+
);
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
|
|
22
35
|
async render(fctx: FormControlContext): Promise<FlatTemplatable> {
|
|
23
36
|
// the A makes it always a valid id, as it cannot start with a number
|
|
24
37
|
const id = "A" + randomUUID();
|
|
25
38
|
|
|
26
39
|
const consts = this.getConsts(fctx);
|
|
27
40
|
|
|
28
|
-
const frontend_side_refresh_code =
|
|
41
|
+
const frontend_side_refresh_code = (values_code = "getValues()") =>
|
|
42
|
+
`render(${values_code}, consts)
|
|
43
|
+
.then(result=>document.querySelector("#${id}").innerHTML=result)`;
|
|
29
44
|
return tempstream/* HTML */ `<div>
|
|
30
45
|
<script>
|
|
31
46
|
(function () {
|
|
@@ -53,6 +68,9 @@ export class Derived<
|
|
|
53
68
|
let input = form_container.querySelector(
|
|
54
69
|
\`input[name="\${field_name}"]\`
|
|
55
70
|
);
|
|
71
|
+
if (!input) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
56
74
|
if (input.type === "radio") {
|
|
57
75
|
input = form_container.querySelector(
|
|
58
76
|
\`input[name="\${field_name}"]:checked\`
|
|
@@ -67,7 +85,7 @@ export class Derived<
|
|
|
67
85
|
.querySelectorAll(\`input[name="\${field_name}"]\`)
|
|
68
86
|
.forEach((input) => {
|
|
69
87
|
input.addEventListener("change", () => {
|
|
70
|
-
${frontend_side_refresh_code};
|
|
88
|
+
${frontend_side_refresh_code()};
|
|
71
89
|
});
|
|
72
90
|
});
|
|
73
91
|
}
|
|
@@ -75,7 +93,9 @@ export class Derived<
|
|
|
75
93
|
this.fields.map((field) => field.name)
|
|
76
94
|
)}.forEach(setupWatcher);
|
|
77
95
|
setTimeout(() => {
|
|
78
|
-
${frontend_side_refresh_code
|
|
96
|
+
${frontend_side_refresh_code(
|
|
97
|
+
JSON.stringify(await this.getBackendValues(fctx))
|
|
98
|
+
)};
|
|
79
99
|
}, 0);
|
|
80
100
|
})();
|
|
81
101
|
</script>
|