@sealcode/sealgen 0.8.0 → 0.8.2
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/autocomplete.d.ts +20 -0
- package/@types/forms/controls/checkbox-group.d.ts +21 -0
- package/@types/forms/controls/checkbox.d.ts +8 -1
- package/@types/forms/controls/collapsible-checkbox-group.d.ts +12 -0
- package/@types/forms/controls/collapsible-field-group.d.ts +21 -0
- package/@types/forms/controls/controls.d.ts +4 -0
- package/@types/forms/controls/field-group.d.ts +12 -4
- package/@types/forms/controls/simple-input.d.ts +9 -2
- package/@types/forms/controls/tickable.d.ts +9 -12
- package/@types/forms/fields/enum-multiple.d.ts +18 -0
- package/@types/forms/fields/existing-sealious-value.d.ts +6 -0
- package/@types/forms/fields/field.d.ts +8 -4
- package/@types/forms/fields/proxy-field.d.ts +13 -0
- package/@types/page/list.d.ts +3 -3
- package/@types/utils/input-wrapper.d.ts +2 -1
- package/lib/forms/controls/autocomplete.js +27 -0
- package/lib/forms/controls/autocomplete.js.map +1 -0
- package/lib/forms/controls/checkbox-group.js +27 -0
- package/lib/forms/controls/checkbox-group.js.map +1 -0
- package/lib/forms/controls/checkbox.js +12 -1
- package/lib/forms/controls/checkbox.js.map +1 -1
- package/lib/forms/controls/collapsible-checkbox-group.js +17 -0
- package/lib/forms/controls/collapsible-checkbox-group.js.map +1 -0
- package/lib/forms/controls/collapsible-field-group.js +82 -0
- package/lib/forms/controls/collapsible-field-group.js.map +1 -0
- package/lib/forms/controls/controls.js +4 -0
- package/lib/forms/controls/controls.js.map +1 -1
- package/lib/forms/controls/field-group.js +39 -8
- package/lib/forms/controls/field-group.js.map +1 -1
- package/lib/forms/controls/simple-input.js +64 -29
- package/lib/forms/controls/simple-input.js.map +1 -1
- package/lib/forms/controls/tickable.js +4 -2
- package/lib/forms/controls/tickable.js.map +1 -1
- package/lib/forms/fields/boolean.js +7 -0
- package/lib/forms/fields/boolean.js.map +1 -1
- package/lib/forms/fields/enum-multiple.js +45 -0
- package/lib/forms/fields/enum-multiple.js.map +1 -0
- package/lib/forms/fields/existing-sealious-value.js +20 -0
- package/lib/forms/fields/existing-sealious-value.js.map +1 -0
- package/lib/forms/fields/field.js +7 -0
- package/lib/forms/fields/field.js.map +1 -1
- package/lib/forms/fields/pick-from-list.js +1 -1
- package/lib/forms/fields/pick-from-list.js.map +1 -1
- package/lib/forms/fields/proxy-field.js +24 -0
- package/lib/forms/fields/proxy-field.js.map +1 -0
- package/lib/mount.js +1 -0
- package/lib/mount.js.map +1 -1
- package/lib/page/list.js +9 -6
- package/lib/page/list.js.map +1 -1
- package/lib/sanitize.js +1 -1
- package/lib/sanitize.js.map +1 -1
- package/lib/utils/input-wrapper.js.map +1 -1
- package/package.json +2 -2
- package/src/forms/controls/autocomplete.ts +46 -0
- package/src/forms/controls/checkbox-group.ts +81 -0
- package/src/forms/controls/checkbox.ts +16 -1
- package/src/forms/controls/collapsible-checkbox-group.ts +31 -0
- package/src/forms/controls/collapsible-field-group.ts +96 -0
- package/src/forms/controls/controls.ts +4 -0
- package/src/forms/controls/field-group.ts +60 -9
- package/src/forms/controls/simple-input.ts +90 -42
- package/src/forms/controls/tickable.ts +14 -10
- package/src/forms/fields/boolean.ts +6 -0
- package/src/forms/fields/enum-multiple.ts +58 -0
- package/src/forms/fields/existing-sealious-value.ts +22 -0
- package/src/forms/fields/field.ts +14 -2
- package/src/forms/fields/pick-from-list.ts +1 -1
- package/src/forms/fields/proxy-field.ts +24 -0
- package/src/forms/forms.scss +11 -0
- package/src/mount.ts +1 -0
- package/src/page/list.ts +12 -10
- package/src/sanitize.ts +1 -1
- package/src/utils/input-wrapper.ts +5 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SimpleInput = void 0;
|
|
4
|
+
const tempstream_1 = require("tempstream");
|
|
4
5
|
const sanitize_1 = require("../../sanitize");
|
|
5
6
|
const input_wrapper_1 = require("../../utils/input-wrapper");
|
|
6
7
|
const controls_1 = require("./controls");
|
|
@@ -10,41 +11,75 @@ class SimpleInput extends controls_1.FormFieldControl {
|
|
|
10
11
|
this.field = field;
|
|
11
12
|
this.options = options;
|
|
12
13
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
getType() {
|
|
15
|
+
return this.options.type || "text";
|
|
16
|
+
}
|
|
17
|
+
getLabel() {
|
|
18
|
+
return this.options.label != undefined
|
|
16
19
|
? this.options.label
|
|
17
20
|
: this.field.name;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
}
|
|
22
|
+
getID() {
|
|
23
|
+
return this.options.id || this.field.name;
|
|
24
|
+
}
|
|
25
|
+
getPlaceholder() {
|
|
26
|
+
return this.options.placeholder || this.getType();
|
|
27
|
+
}
|
|
28
|
+
async getInputAttributes(ctx, data, field_prefix, form_id) {
|
|
23
29
|
const readonly = this.options.readonly || false;
|
|
24
30
|
const required = this.field.required;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
const { parsed, raw, valid } = await this.field.getValue(ctx, data);
|
|
32
|
+
return Object.fromEntries([
|
|
33
|
+
["id", this.getID()],
|
|
34
|
+
["type", this.getType()],
|
|
35
|
+
["name", `${field_prefix}${this.field.name}`],
|
|
36
|
+
[
|
|
37
|
+
"value",
|
|
38
|
+
!valid && raw
|
|
39
|
+
? raw.toString()
|
|
40
|
+
: parsed !== undefined && parsed !== null
|
|
41
|
+
? parsed?.toString() || ""
|
|
42
|
+
: "",
|
|
43
|
+
],
|
|
44
|
+
...(form_id ? [["form", form_id]] : []),
|
|
45
|
+
["placeholder", this.getPlaceholder()],
|
|
46
|
+
...(readonly ? [["readonly", true]] : []),
|
|
47
|
+
...(required ? [["required", true]] : []),
|
|
48
|
+
...(!this.options.autocomplete ? [["autocomplete", "off"]] : []),
|
|
49
|
+
...(this.options.step ? [["step", this.options.step]] : []),
|
|
50
|
+
]);
|
|
51
|
+
}
|
|
52
|
+
renderAttributes(attrs) {
|
|
53
|
+
return Object.entries(attrs)
|
|
54
|
+
.map(([key, value]) => {
|
|
55
|
+
if (value === true) {
|
|
56
|
+
return key;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return `${key}="${sanitize_1.attribute(value)}"`;
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
.join(" ");
|
|
63
|
+
}
|
|
64
|
+
async postInput(ctx) {
|
|
65
|
+
return "";
|
|
66
|
+
}
|
|
67
|
+
async render(ctx, data, _messages, field_prefix, form_id) {
|
|
68
|
+
const id = this.getID();
|
|
69
|
+
const label = this.getLabel();
|
|
70
|
+
const type = this.getType();
|
|
71
|
+
const { parsed, raw, valid, message } = await this.field.getValue(ctx, data);
|
|
72
|
+
const placeholder = this.getPlaceholder();
|
|
73
|
+
return input_wrapper_1.inputWrapper([id, type, input_wrapper_1.getRequiredClass(this.field.required)], tempstream_1.tempstream /* HTML */ `
|
|
74
|
+
<label for="${id}">${label}</label>
|
|
75
|
+
<input
|
|
76
|
+
${this.renderAttributes(await this.getInputAttributes(ctx, data, field_prefix, form_id))}
|
|
77
|
+
/>
|
|
78
|
+
${this.postInput(ctx)}
|
|
79
|
+
${~valid && !this.options.hide_errors
|
|
45
80
|
? `<div class="input__error">${message}</div>`
|
|
46
81
|
: ""}
|
|
47
|
-
`);
|
|
82
|
+
`);
|
|
48
83
|
}
|
|
49
84
|
}
|
|
50
85
|
exports.SimpleInput = SimpleInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-input.js","sourceRoot":"","sources":["../../../src/forms/controls/simple-input.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"simple-input.js","sourceRoot":"","sources":["../../../src/forms/controls/simple-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,13 +32,15 @@ class Tickable extends controls_1.FormFieldControl {
|
|
|
32
32
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
33
33
|
const readonly = this.options.readonly || false;
|
|
34
34
|
const required = this.field.required;
|
|
35
|
+
const value = this.getValueAttribute(ctx, data, parsed);
|
|
35
36
|
return input_wrapper_1.inputWrapper(this.getWrapperClasses(ctx, data, parsed),
|
|
36
37
|
/* HTML */ `
|
|
37
38
|
<input
|
|
38
39
|
id="${id}"
|
|
39
40
|
type="${this.type}"
|
|
40
|
-
name="${field_prefix}${this.
|
|
41
|
-
|
|
41
|
+
name="${field_prefix}${this.options.name ||
|
|
42
|
+
this.field.name}"
|
|
43
|
+
${value ? `value="${sanitize_1.attribute(value)}"` : ""}
|
|
42
44
|
${form_id ? `form="${form_id}"` : ""}
|
|
43
45
|
${this.isChecked(ctx, data, parsed) ? "checked" : ""}
|
|
44
46
|
${readonly ? "readonly" : ""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tickable.js","sourceRoot":"","sources":["../../../src/forms/controls/tickable.ts"],"names":[],"mappings":";;;AAEA,6CAA2C;AAC3C,6DAA2E;AAG3E,yCAA8C;
|
|
1
|
+
{"version":3,"file":"tickable.js","sourceRoot":"","sources":["../../../src/forms/controls/tickable.ts"],"names":[],"mappings":";;;AAEA,6CAA2C;AAC3C,6DAA2E;AAG3E,yCAA8C;AAU9C,MAAsB,QAA4B,SAAQ,2BAAgB;IACzE,YACQ,KAA4B,EAC5B,UAA2B,EAAE;QAEpC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAHR,UAAK,GAAL,KAAK,CAAuB;QAC5B,YAAO,GAAP,OAAO,CAAsB;IAGrC,CAAC;IAgBD,WAAW;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,iBAAiB,CAChB,GAAY,EACZ,IAAmC,EACnC,KAAQ;QAER,OAAO;YACN,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC;YACtC,gCAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACX,GAAY,EACZ,IAAmC,EACnC,CAAY,EACZ,YAAoB,EACpB,OAAe;QAEf,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,KAAK,GACV,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS;YAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YACpB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACpB,yEAAyE;QACzE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxE,yEAAyE;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAErC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAExD,OAAO,4BAAY,CAClB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;QAEzC,UAAU,CAAC;;WAEH,EAAE;aACA,IAAI,CAAC,IAAI;aACT,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;YACxC,IAAI,CAAC,KAAK,CAAC,IAAI;OACb,KAAK,CAAC,CAAC,CAAC,UAAU,oBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;OAC1C,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE;OAClC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;OAClD,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;OAC1B,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;8EAC6C,IAAI;aAC3E,KAAK;aACL,IAAI;;;;kBAIO,EAAE,KAAK,KAAK;;;;;;;;;;;;;MAaxB,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW;YACpC,CAAC,CAAC,6BAA6B,OAAO,QAAQ;YAC9C,CAAC,CAAC,EAAE;IACL,CACD,CAAC;IACH,CAAC;CACD;AAnGD,4BAmGC"}
|
|
@@ -29,6 +29,13 @@ class Boolean extends field_1.FormField {
|
|
|
29
29
|
error: null,
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
+
else if (ts_predicates_1.is(value, ts_predicates_1.predicates.undefined)) {
|
|
33
|
+
return {
|
|
34
|
+
parsable: true,
|
|
35
|
+
parsed_value: false,
|
|
36
|
+
error: null,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
32
39
|
else {
|
|
33
40
|
return {
|
|
34
41
|
parsable: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../src/forms/fields/boolean.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAGzD,mCAAsD;AAEtD,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1C,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAE1C,MAAa,OAAkC,SAAQ,iBAGtD;IAEA,YAAY,QAAkB,EAAS,gBAAwB,EAAE;QAChE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADsB,kBAAa,GAAb,aAAa,CAAa;QADjE,cAAS,GAAG,0BAAU,CAAC,OAAO,CAAC;IAG/B,CAAC;IAEM,KAAK,CAAC,YAAY,CACxB,CAAU,EACV,KAAc;QAEd,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE;YAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;SACrD;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CACV,CAAU,EACV,KAAoB;QAEpB,IAAI,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,OAAO,CAAC,EAAE;YAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SAC5D;aAAM,IACN,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,MAAM,CAAC;YAC5B,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpC;YACD,OAAO;gBACN,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACpC,KAAK,EAAE,IAAI;aACX,CAAC;SACF;aAAM;YACN,OAAO;gBACN,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,wBAAwB;aAC/B,CAAC;SACF;IACF,CAAC;IAEM,aAAa;QACnB,OAAO,KAAK,CAAC;IACd,CAAC;CACD;
|
|
1
|
+
{"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../src/forms/fields/boolean.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAGzD,mCAAsD;AAEtD,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1C,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAE1C,MAAa,OAAkC,SAAQ,iBAGtD;IAEA,YAAY,QAAkB,EAAS,gBAAwB,EAAE;QAChE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADsB,kBAAa,GAAb,aAAa,CAAa;QADjE,cAAS,GAAG,0BAAU,CAAC,OAAO,CAAC;IAG/B,CAAC;IAEM,KAAK,CAAC,YAAY,CACxB,CAAU,EACV,KAAc;QAEd,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE;YAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;SACrD;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CACV,CAAU,EACV,KAAoB;QAEpB,IAAI,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,OAAO,CAAC,EAAE;YAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SAC5D;aAAM,IACN,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,MAAM,CAAC;YAC5B,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpC;YACD,OAAO;gBACN,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACpC,KAAK,EAAE,IAAI;aACX,CAAC;SACF;aAAM,IAAI,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,SAAS,CAAC,EAAE;YAC3C,OAAO;gBACN,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,KAAK;gBACnB,KAAK,EAAE,IAAI;aACX,CAAC;SACF;aAAM;YACN,OAAO;gBACN,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,wBAAwB;aAC/B,CAAC;SACF;IACF,CAAC;IAEM,aAAa;QACnB,OAAO,KAAK,CAAC;IACd,CAAC;CACD;AApDD,0BAoDC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnumMultipleField = void 0;
|
|
4
|
+
const ts_predicates_1 = require("@sealcode/ts-predicates");
|
|
5
|
+
const field_1 = require("./field");
|
|
6
|
+
class EnumMultipleField extends field_1.FormField {
|
|
7
|
+
constructor(required, options, error_message = (options) => options.join(", ")) {
|
|
8
|
+
super(required);
|
|
9
|
+
this.options = options;
|
|
10
|
+
this.error_message = error_message;
|
|
11
|
+
this.predicate = ts_predicates_1.predicates.enum(this.options);
|
|
12
|
+
}
|
|
13
|
+
async isValueValid(_, values) {
|
|
14
|
+
for (const value of values) {
|
|
15
|
+
if (!ts_predicates_1.is(value, ts_predicates_1.predicates.string)) {
|
|
16
|
+
return { valid: false, message: "expected a string" };
|
|
17
|
+
}
|
|
18
|
+
if (!this.options.includes(value)) {
|
|
19
|
+
return { valid: false, message: "invalid value" };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return { valid: true, message: "" };
|
|
23
|
+
}
|
|
24
|
+
async parse(_, value) {
|
|
25
|
+
if (ts_predicates_1.is(value, ts_predicates_1.predicates.array(ts_predicates_1.predicates.string))) {
|
|
26
|
+
return {
|
|
27
|
+
parsable: true,
|
|
28
|
+
parsed_value: value,
|
|
29
|
+
error: null,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return {
|
|
34
|
+
parsable: false,
|
|
35
|
+
parsed_value: null,
|
|
36
|
+
error: "Please enter a string",
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
getEmptyValue() {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.EnumMultipleField = EnumMultipleField;
|
|
45
|
+
//# sourceMappingURL=enum-multiple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum-multiple.js","sourceRoot":"","sources":["../../../src/forms/fields/enum-multiple.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAGzD,mCAAsD;AAEtD,MAAa,iBAGX,SAAQ,iBAA6B;IACtC,YACC,QAAkB,EACX,OAAgB,EAChB,gBAA8C,CAAC,OAAO,EAAE,EAAE,CAChE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAEnB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAJT,YAAO,GAAP,OAAO,CAAS;QAChB,kBAAa,GAAb,aAAa,CACD;QAKpB,cAAS,GAAG,0BAAU,CAAC,IAAI,CAAU,IAAI,CAAC,OAAO,CAAC,CAAC;IAFnD,CAAC;IAIM,KAAK,CAAC,YAAY,CACxB,CAAU,EACV,MAAgB;QAEhB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC3B,IAAI,CAAC,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,MAAM,CAAC,EAAE;gBAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;aACtD;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;aAClD;SACD;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CACV,CAAU,EACV,KAAoB;QAEpB,IAAI,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,KAAK,CAAC,0BAAU,CAAC,MAAM,CAAC,CAAC,EAAE;YACnD,OAAO;gBACN,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,KAAK;gBACnB,KAAK,EAAE,IAAI;aACX,CAAC;SACF;aAAM;YACN,OAAO;gBACN,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,uBAAuB;aAC9B,CAAC;SACF;IACF,CAAC;IAEM,aAAa;QACnB,OAAO,EAAE,CAAC;IACX,CAAC;CACD;AApDD,8CAoDC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExistingSealiousValue = void 0;
|
|
4
|
+
const pick_from_list_1 = require("./pick-from-list");
|
|
5
|
+
class ExistingSealiousValue extends pick_from_list_1.PickFromListField {
|
|
6
|
+
constructor(required, field) {
|
|
7
|
+
super(required, async (ctx) => {
|
|
8
|
+
const { items } = await field.collection.list(ctx.$context).fetch();
|
|
9
|
+
return Object.fromEntries(items.map((item) => {
|
|
10
|
+
const value = item.get(field.name);
|
|
11
|
+
return [value, value];
|
|
12
|
+
}));
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
getEmptyValue() {
|
|
16
|
+
return "";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.ExistingSealiousValue = ExistingSealiousValue;
|
|
20
|
+
//# sourceMappingURL=existing-sealious-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"existing-sealious-value.js","sourceRoot":"","sources":["../../../src/forms/fields/existing-sealious-value.ts"],"names":[],"mappings":";;;AACA,qDAAqD;AAErD,MAAa,qBAEX,SAAQ,kCAA2B;IACpC,YAAY,QAAkB,EAAE,KAAY;QAC3C,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;YACpE,OAAO,MAAM,CAAC,WAAW,CACxB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,aAAa;QACZ,OAAO,EAAE,CAAC;IACX,CAAC;CACD;AAlBD,sDAkBC"}
|
|
@@ -21,6 +21,7 @@ class FormField {
|
|
|
21
21
|
constructor(required) {
|
|
22
22
|
this.required = required;
|
|
23
23
|
this.predicate = ts_predicates_1.predicates.unknown;
|
|
24
|
+
this.mapToFilter = (value) => value;
|
|
24
25
|
}
|
|
25
26
|
init(fieldname) {
|
|
26
27
|
this.name = fieldname;
|
|
@@ -66,6 +67,10 @@ class FormField {
|
|
|
66
67
|
raw: all_form_values[this.name],
|
|
67
68
|
};
|
|
68
69
|
}
|
|
70
|
+
setMapToFilter(fn) {
|
|
71
|
+
this.mapToFilter = fn;
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
69
74
|
}
|
|
70
75
|
exports.FormField = FormField;
|
|
71
76
|
__exportStar(require("./simple-form-field"), exports);
|
|
@@ -77,4 +82,6 @@ __exportStar(require("./regexp"), exports);
|
|
|
77
82
|
__exportStar(require("./email"), exports);
|
|
78
83
|
__exportStar(require("./enum"), exports);
|
|
79
84
|
__exportStar(require("./boolean"), exports);
|
|
85
|
+
__exportStar(require("./enum-multiple"), exports);
|
|
86
|
+
__exportStar(require("./existing-sealious-value"), exports);
|
|
80
87
|
//# sourceMappingURL=field.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/forms/fields/field.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2DAAgE;AAEhE,qDAA0C;AA4B1C,SAAgB,aAAa,CAC5B,GAAW;IAEX,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CACxC,CAAC;AAC5B,CAAC;AAND,sCAMC;
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/forms/fields/field.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2DAAgE;AAEhE,qDAA0C;AA4B1C,SAAgB,aAAa,CAC5B,GAAW;IAEX,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CACxC,CAAC;AAC5B,CAAC;AAND,sCAMC;AAcD,MAAsB,SAAS;IAK9B,YAA4B,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAC9C,cAAS,GAAc,0BAAU,CAAC,OAAO,CAAC;QAC1C,gBAAW,GAAqC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;IAFhB,CAAC;IAIlD,IAAI,CAAC,SAAiB;QACrB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,SAAS,CACrB,GAAY,EACZ,KAAkB;QAElB,IACC,IAAI,CAAC,QAAQ;YACb,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,EACtD;YACD,OAAO;gBACN,KAAK,EAAE,KAAK;gBAEZ,OAAO,EAAE,aAAC,CACT,GAAG,EACH,mBAAmB,EACnB,EAAE,EACF,wBAAwB,CACxB;aACD,CAAC;SACF;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAIM,KAAK,CAAC,YAAY,CACxB,GAAY,EACZ,KAAkB;QAElB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAOD,KAAK,CAAC,QAAQ,CACb,GAAY,EACZ,eAA8C;QAO9C,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9C,gCAAgC;YAChC,OAAO;gBACN,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC5B,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,EAAE;gBACX,GAAG,EAAE,EAAE;aACP,CAAC;SACF;QACD,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,EAAE,WAAW,GAClB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE;YACd,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC5B,GAAG;gBACH,OAAO,EAAE,WAAW,IAAI,OAAO;aAC/B,CAAC;SACF;QACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAC9C,GAAG,EACH,YAA2B,CAC3B,CAAC;QACF,OAAO;YACN,MAAM,EAAE,YAA2B;YACnC,KAAK;YACL,OAAO;YACP,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/B,CAAC;IACH,CAAC;IAED,cAAc,CAAC,EAAoC;QAClD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AAjGD,8BAiGC;AAED,sDAAoC;AACpC,oDAAkC;AAClC,qDAAmC;AACnC,2CAAyB;AACzB,mDAAiC;AACjC,2CAAyB;AACzB,0CAAwB;AACxB,yCAAuB;AACvB,4CAA0B;AAC1B,kDAAgC;AAChC,4DAA0C"}
|
|
@@ -19,7 +19,7 @@ class PickFromListField extends simple_form_field_1.SimpleFormField {
|
|
|
19
19
|
if (!ts_predicates_1.is(value, ts_predicates_1.predicates.string)) {
|
|
20
20
|
return { valid: false, message: "not a string" };
|
|
21
21
|
}
|
|
22
|
-
if (!Object.keys(options).includes(value)) {
|
|
22
|
+
if (this.required && !Object.keys(options).includes(value)) {
|
|
23
23
|
return {
|
|
24
24
|
valid: false,
|
|
25
25
|
message: `"${value}" is not one of the options`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick-from-list.js","sourceRoot":"","sources":["../../../src/forms/fields/pick-from-list.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAGzD,2DAAsD;AAEtD,MAAa,iBAEX,SAAQ,mCAAyB;IAClC,YACQ,QAAkB,EAClB,eAEuD,EACvD,mBAIqC,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CACpE,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;QAEjC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAXT,aAAQ,GAAR,QAAQ,CAAU;QAClB,oBAAe,GAAf,eAAe,CAEwC;QACvD,qBAAgB,GAAhB,gBAAgB,CAKU;QAKlC,cAAS,GAAG,0BAAU,CAAC,MAAM,CAAC;IAF9B,CAAC;IAIM,YAAY,CAClB,GAAY,EACZ,KAAa;QAEb,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAChB,GAAY,EACZ,KAAc;QAEd,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,MAAM,CAAC,EAAE;YAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;SACjD;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"pick-from-list.js","sourceRoot":"","sources":["../../../src/forms/fields/pick-from-list.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAGzD,2DAAsD;AAEtD,MAAa,iBAEX,SAAQ,mCAAyB;IAClC,YACQ,QAAkB,EAClB,eAEuD,EACvD,mBAIqC,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CACpE,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;QAEjC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAXT,aAAQ,GAAR,QAAQ,CAAU;QAClB,oBAAe,GAAf,eAAe,CAEwC;QACvD,qBAAgB,GAAhB,gBAAgB,CAKU;QAKlC,cAAS,GAAG,0BAAU,CAAC,MAAM,CAAC;IAF9B,CAAC;IAIM,YAAY,CAClB,GAAY,EACZ,KAAa;QAEb,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAChB,GAAY,EACZ,KAAc;QAEd,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAE,CAAC,KAAK,EAAE,0BAAU,CAAC,MAAM,CAAC,EAAE;YAClC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;SACjD;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC3D,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,IAAI,KAAK,6BAA6B;aAC/C,CAAC;SACF;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAEM,aAAa;QACnB,OAAO,EAAE,CAAC;IACX,CAAC;CACD;AA/CD,8CA+CC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProxyFormField = void 0;
|
|
4
|
+
const field_1 = require("./field");
|
|
5
|
+
class ProxyFormField extends field_1.FormField {
|
|
6
|
+
constructor(required, name, empty_value, parsed_value) {
|
|
7
|
+
super(required);
|
|
8
|
+
this.name = name;
|
|
9
|
+
this.empty_value = empty_value;
|
|
10
|
+
this.parsed_value = parsed_value;
|
|
11
|
+
}
|
|
12
|
+
getEmptyValue() {
|
|
13
|
+
return this.empty_value;
|
|
14
|
+
}
|
|
15
|
+
async parse() {
|
|
16
|
+
return {
|
|
17
|
+
parsable: true,
|
|
18
|
+
error: null,
|
|
19
|
+
parsed_value: this.parsed_value,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.ProxyFormField = ProxyFormField;
|
|
24
|
+
//# sourceMappingURL=proxy-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-field.js","sourceRoot":"","sources":["../../../src/forms/fields/proxy-field.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAEpC,MAAa,cAAkB,SAAQ,iBAAqB;IAC3D,YACC,QAAiB,EACV,IAAY,EACZ,WAAc,EACd,YAAe;QAEtB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAJT,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAG;QACd,iBAAY,GAAZ,YAAY,CAAG;IAGvB,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK;QACV,OAAc;YACb,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;YACX,YAAY,EAAE,IAAI,CAAC,YAAY;SAC/B,CAAC;IACH,CAAC;CACD;AArBD,wCAqBC"}
|
package/lib/mount.js
CHANGED
|
@@ -26,6 +26,7 @@ function mount(router, url, mountable) {
|
|
|
26
26
|
ctx.set("content-type", "text/html;charset=utf-8");
|
|
27
27
|
const access_result = await mountable.canAccess(ctx);
|
|
28
28
|
if (!access_result.canAccess) {
|
|
29
|
+
ctx.status = 403;
|
|
29
30
|
ctx.body = access_result.message || "no access";
|
|
30
31
|
return;
|
|
31
32
|
}
|
package/lib/mount.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":";;;AAEA,uCAAuC;AAGvC,KAAK,UAAU,iBAAiB,CAAC,GAAY,EAAE,IAAc;IAC5D,MAAM,IAAI,EAAE,CAAC;IACb,IAAI,GAAG,CAAC,IAAI,YAAY,OAAO,EAAE;QAChC,mEAAmE;QACnE,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;KAC1B;IACD,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,KAAK,CAAC,MAAc,EAAE,GAAW,EAAE,SAAoB;IACtE,MAAM,CAAC,GAAG,CACT,GAAG,EACH,sBAAW,CAAC,cAAc,EAAE,EAC5B,sBAAW,CAAC,SAAS,EAAE,EACvB,iBAAiB,CACjB,CAAC;IACF,SAAS,CAAC,IAAI,EAAE,CAAC;IAEjB,yCAAyC;IACzC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;YACrB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC9B;QACD,MAAM,IAAI,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACnC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC7B,GAAG,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO,IAAI,WAAW,CAAC;YAChD,OAAO;SACP;QACD,MAAM,IAAI,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":";;;AAEA,uCAAuC;AAGvC,KAAK,UAAU,iBAAiB,CAAC,GAAY,EAAE,IAAc;IAC5D,MAAM,IAAI,EAAE,CAAC;IACb,IAAI,GAAG,CAAC,IAAI,YAAY,OAAO,EAAE;QAChC,mEAAmE;QACnE,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;KAC1B;IACD,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,KAAK,CAAC,MAAc,EAAE,GAAW,EAAE,SAAoB;IACtE,MAAM,CAAC,GAAG,CACT,GAAG,EACH,sBAAW,CAAC,cAAc,EAAE,EAC5B,sBAAW,CAAC,SAAS,EAAE,EACvB,iBAAiB,CACjB,CAAC;IACF,SAAS,CAAC,IAAI,EAAE,CAAC;IAEjB,yCAAyC;IACzC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;YACrB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC9B;QACD,MAAM,IAAI,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACnC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC7B,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO,IAAI,WAAW,CAAC;YAChD,OAAO;SACP;QACD,MAAM,IAAI,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AA/BD,sBA+BC"}
|
package/lib/page/list.js
CHANGED
|
@@ -27,11 +27,13 @@ class ListPage extends page_1.Page {
|
|
|
27
27
|
renderListContainer(_, content) {
|
|
28
28
|
return tempstream_1.tempstream `<div>${content}</div>`;
|
|
29
29
|
}
|
|
30
|
-
async renderItems(ctx, values = this.extractRawValues(ctx)) {
|
|
30
|
+
async renderItems(ctx, values = this.extractRawValues(ctx), items) {
|
|
31
31
|
const { parsed: page } = await this.fields.page.getValue(ctx, values);
|
|
32
32
|
const { parsed: itemsPerPage } = await this.fields.itemsPerPage.getValue(ctx, values);
|
|
33
33
|
const items_promise = this.getItems(ctx, page, itemsPerPage, values);
|
|
34
|
-
return tempstream_1.tempstream `${
|
|
34
|
+
return tempstream_1.tempstream `${(items
|
|
35
|
+
? Promise.resolve(items)
|
|
36
|
+
: items_promise).then((items) => items.map((item) => this.renderItem(ctx, item)))}`;
|
|
35
37
|
}
|
|
36
38
|
async render(ctx) {
|
|
37
39
|
const values = this.extractRawValues(ctx);
|
|
@@ -85,7 +87,7 @@ ${this.renderListContainer(ctx, this.renderItems(ctx, values))}`;
|
|
|
85
87
|
for (const [fieldname, field] of Object.entries(this.filterFields)) {
|
|
86
88
|
// eslint-disable-next-line no-await-in-loop
|
|
87
89
|
const { parsed } = await field.getValue(ctx, raw_values);
|
|
88
|
-
filter[fieldname] = parsed;
|
|
90
|
+
filter[fieldname] = field.mapToFilter(parsed);
|
|
89
91
|
}
|
|
90
92
|
return filter;
|
|
91
93
|
}
|
|
@@ -96,9 +98,10 @@ ${this.renderListContainer(ctx, this.renderItems(ctx, values))}`;
|
|
|
96
98
|
"page",
|
|
97
99
|
...Object.values(this.filterFields).map((f) => f.name),
|
|
98
100
|
])}
|
|
99
|
-
${this.filterControls.map((control) =>
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
${this.filterControls.map((control) => {
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
103
|
+
return control.render(ctx, values, [], "", "");
|
|
104
|
+
})}
|
|
102
105
|
</form>`;
|
|
103
106
|
}
|
|
104
107
|
}
|
package/lib/page/list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/page/list.ts"],"names":[],"mappings":";;;AAGA,2CAAsE;AACtE,qDAAgD;AAChD,iCAA8B;AAG9B,iDAA+D;AAC/D,0CAAkE;AAElE,8DAAyD;AAE5C,QAAA,kBAAkB,GAAU,EAAE,CAAC;AAG/B,QAAA,kBAAkB,GAAU;IACxC,IAAI,EAAE,IAAI,mBAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/B,YAAY,EAAE,IAAI,mBAAW,CAAC,KAAK,EAAE,EAAE,CAAC;CACxC,CAAC;AAEF,MAAsB,QAGpB,SAAQ,WAAO;IAHjB;;QAmBC,iBAAY,GAA8B,EAAE,CAAC;QAC7C,mBAAc,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/page/list.ts"],"names":[],"mappings":"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"}
|
package/lib/sanitize.js
CHANGED
package/lib/sanitize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":";;;AAAA,SAAgB,SAAS,CAAC,GAAW;IACpC,OAAO,GAAG;
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":";;;AAAA,SAAgB,SAAS,CAAC,GAAW;IACpC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;SAChB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;SACtB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AALD,8BAKC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-wrapper.js","sourceRoot":"","sources":["../../src/utils/input-wrapper.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"input-wrapper.js","sourceRoot":"","sources":["../../src/utils/input-wrapper.ts"],"names":[],"mappings":";;;AACA,2CAAyD;AAEzD,SAAgB,gBAAgB,CAAC,UAAmB;IACnD,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,CAAC;AAFD,4CAEC;AAED,SAAS,kBAAkB,CAAC,SAAmB;IAC9C,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,YAAY,CAC3B,SAAmB,EACnB,KAAsB;IAEtB,OAAO,uBAAU,CAAA,UAAU,CAAC;0CACa,kBAAkB,CAAC,SAAS,CAAC;;IAEnE,KAAK;QACD,CAAC;AACT,CAAC;AATD,oCASC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sealcode/sealgen",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"description": "Module to automate adding routes and collections to a sealious application",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -52,6 +52,6 @@
|
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"@koa/router": "^10.1.1",
|
|
54
54
|
"koa": "^2.13.0",
|
|
55
|
-
"sealious": "^0.17.
|
|
55
|
+
"sealious": "^0.17.7"
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Context } from "koa";
|
|
2
|
+
import { FlatTemplatable } from "tempstream";
|
|
3
|
+
import { attribute } from "../../sanitize";
|
|
4
|
+
import { getRequiredClass, inputWrapper } from "../../utils/input-wrapper";
|
|
5
|
+
import { PickFromListField } from "../fields/pick-from-list";
|
|
6
|
+
import { FormDataValue } from "../form";
|
|
7
|
+
import { FormFieldControl } from "./form-field-control";
|
|
8
|
+
import { SimpleInput } from "./simple-input";
|
|
9
|
+
|
|
10
|
+
export class Autocomplete extends SimpleInput {
|
|
11
|
+
constructor(
|
|
12
|
+
public field: PickFromListField<boolean>,
|
|
13
|
+
public options: { id?: string; label?: string }
|
|
14
|
+
) {
|
|
15
|
+
super(field);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
getListID(): string {
|
|
19
|
+
return this.getID() + "_list";
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async getInputAttributes(
|
|
23
|
+
ctx: Context,
|
|
24
|
+
data: Record<string, FormDataValue>,
|
|
25
|
+
field_prefix: string,
|
|
26
|
+
form_id: string
|
|
27
|
+
) {
|
|
28
|
+
return {
|
|
29
|
+
...(await super.getInputAttributes(
|
|
30
|
+
ctx,
|
|
31
|
+
data,
|
|
32
|
+
field_prefix,
|
|
33
|
+
form_id
|
|
34
|
+
)),
|
|
35
|
+
list: this.getListID(),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async postInput(ctx: Context) {
|
|
40
|
+
return /* HTML */ `<datalist id="${this.getListID()}">
|
|
41
|
+
${Object.entries(await this.field.generateOptions(ctx)).map(
|
|
42
|
+
([key, value]) => /* HTML */ `<option>${key}</option>`
|
|
43
|
+
)}
|
|
44
|
+
</datalist>`;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Context } from "koa";
|
|
2
|
+
import { FlatTemplatable } from "tempstream";
|
|
3
|
+
import { EnumMultipleField, FormField } from "../fields/field";
|
|
4
|
+
import { ProxyFormField } from "../fields/proxy-field";
|
|
5
|
+
import { FormDataValue, FormMessage } from "../form";
|
|
6
|
+
import { CheckboxWithValue } from "./checkbox";
|
|
7
|
+
import { FieldGroup, FormFieldControl } from "./controls";
|
|
8
|
+
|
|
9
|
+
export type DefaultCheckboxOptions = {
|
|
10
|
+
id?: string;
|
|
11
|
+
label?: string;
|
|
12
|
+
hide_errors?: boolean;
|
|
13
|
+
readonly?: boolean;
|
|
14
|
+
name?: string;
|
|
15
|
+
checkboxNameToLabel?: (name: string) => string;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export class CheckboxGroup<
|
|
19
|
+
Options extends DefaultCheckboxOptions = DefaultCheckboxOptions
|
|
20
|
+
> extends FormFieldControl {
|
|
21
|
+
constructor(
|
|
22
|
+
public field: EnumMultipleField<readonly string[], boolean>,
|
|
23
|
+
public options: Options = {} as Options
|
|
24
|
+
) {
|
|
25
|
+
super([field]);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
wrapGroup(
|
|
29
|
+
ctx: Context,
|
|
30
|
+
data: Record<string, FormDataValue>,
|
|
31
|
+
messages: FormMessage[],
|
|
32
|
+
field_prefix: string,
|
|
33
|
+
form_id: string,
|
|
34
|
+
checkboxes: CheckboxWithValue[]
|
|
35
|
+
): Promise<FlatTemplatable> {
|
|
36
|
+
return new FieldGroup(checkboxes, { label: this.options.label }).render(
|
|
37
|
+
ctx,
|
|
38
|
+
data,
|
|
39
|
+
messages,
|
|
40
|
+
field_prefix,
|
|
41
|
+
form_id
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async render<Fields extends Record<string, FormField>>(
|
|
46
|
+
ctx: Context,
|
|
47
|
+
data: Record<string, FormDataValue>,
|
|
48
|
+
messages: FormMessage[],
|
|
49
|
+
field_prefix: string,
|
|
50
|
+
form_id: string
|
|
51
|
+
): Promise<FlatTemplatable> {
|
|
52
|
+
const { parsed: values } = await this.field.getValue(ctx, data);
|
|
53
|
+
const checkboxes = this.field.options.map(
|
|
54
|
+
(option) =>
|
|
55
|
+
new CheckboxWithValue(
|
|
56
|
+
new ProxyFormField(
|
|
57
|
+
false,
|
|
58
|
+
this.field.name + "[]",
|
|
59
|
+
false,
|
|
60
|
+
values.includes(option)
|
|
61
|
+
),
|
|
62
|
+
{
|
|
63
|
+
id: this.field.name + "__" + option,
|
|
64
|
+
label: (
|
|
65
|
+
this.options.checkboxNameToLabel ||
|
|
66
|
+
((s: string) => s)
|
|
67
|
+
)(option),
|
|
68
|
+
},
|
|
69
|
+
option
|
|
70
|
+
)
|
|
71
|
+
);
|
|
72
|
+
return this.wrapGroup(
|
|
73
|
+
ctx,
|
|
74
|
+
data,
|
|
75
|
+
messages,
|
|
76
|
+
field_prefix,
|
|
77
|
+
form_id,
|
|
78
|
+
checkboxes
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Context } from "koa";
|
|
2
2
|
import { FormDataValue } from "../form";
|
|
3
|
-
import { Tickable } from "./tickable";
|
|
3
|
+
import { Tickable, TickableOptions } from "./tickable";
|
|
4
|
+
import { FormField } from "../fields/field";
|
|
4
5
|
|
|
5
6
|
export class Checkbox extends Tickable<boolean> {
|
|
6
7
|
type = <const>"checkbox";
|
|
@@ -17,3 +18,17 @@ export class Checkbox extends Tickable<boolean> {
|
|
|
17
18
|
return "";
|
|
18
19
|
}
|
|
19
20
|
}
|
|
21
|
+
|
|
22
|
+
export class CheckboxWithValue extends Checkbox {
|
|
23
|
+
constructor(
|
|
24
|
+
public field: FormField<boolean, boolean>,
|
|
25
|
+
options: TickableOptions,
|
|
26
|
+
public value: string
|
|
27
|
+
) {
|
|
28
|
+
super(field, options);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
getValueAttribute(): string {
|
|
32
|
+
return this.value;
|
|
33
|
+
}
|
|
34
|
+
}
|