@sealcode/sealgen 0.8.5 → 0.8.8
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/big-radio-group.d.ts +3 -3
- package/@types/forms/controls/textarea.d.ts +3 -3
- package/@types/forms/fields/number.d.ts +1 -1
- package/@types/page/list.d.ts +4 -0
- package/lib/forms/controls/big-radio-group.js +2 -2
- package/lib/forms/controls/big-radio-group.js.map +1 -1
- package/lib/forms/controls/textarea.js.map +1 -1
- package/lib/page/list.js +15 -4
- package/lib/page/list.js.map +1 -1
- package/lib/templates/form.js +2 -2
- package/package.json +1 -1
- package/src/forms/controls/big-radio-group.ts +6 -3
- package/src/forms/controls/textarea.ts +4 -2
- package/src/forms/fields/number.ts +1 -1
- package/src/page/list.ts +18 -6
- package/src/templates/form.ts +2 -2
|
@@ -6,10 +6,10 @@ import { FormFieldControl } from "./form-field-control";
|
|
|
6
6
|
export declare class BigRadioGroup extends FormFieldControl {
|
|
7
7
|
field: FormField;
|
|
8
8
|
options: Record<string, {
|
|
9
|
-
description: FlatTemplatable | ((ctx: Context, data: Record<string, FormDataValue>, messages: [], feld_name_prefix: string, form_id: string) => FlatTemplatable);
|
|
9
|
+
description: FlatTemplatable | ((ctx: Context, data: Record<string, FormDataValue>, messages: [], feld_name_prefix: string, form_id: string, show_field_errors: boolean) => FlatTemplatable);
|
|
10
10
|
}>;
|
|
11
11
|
constructor(field: FormField, options: Record<string, {
|
|
12
|
-
description: FlatTemplatable | ((ctx: Context, data: Record<string, FormDataValue>, messages: [], feld_name_prefix: string, form_id: string) => FlatTemplatable);
|
|
12
|
+
description: FlatTemplatable | ((ctx: Context, data: Record<string, FormDataValue>, messages: [], feld_name_prefix: string, form_id: string, show_field_errors: boolean) => FlatTemplatable);
|
|
13
13
|
}>);
|
|
14
|
-
render(ctx: Context, data: Record<string, FormDataValue>, messages: [], field_name_prefix: string, form_id: string): Promise<FlatTemplatable>;
|
|
14
|
+
render(ctx: Context, data: Record<string, FormDataValue>, messages: [], field_name_prefix: string, form_id: string, show_field_errors: boolean): Promise<FlatTemplatable>;
|
|
15
15
|
}
|
|
@@ -2,15 +2,15 @@ import { Context } from "koa";
|
|
|
2
2
|
import { FormField } from "../fields/field";
|
|
3
3
|
import { FormDataValue } from "../form";
|
|
4
4
|
import { SimpleInput, SimpleInputOptions } from "./simple-input";
|
|
5
|
-
export declare class Textarea<Required extends boolean> extends SimpleInput<string> {
|
|
6
|
-
field: FormField<boolean, string>;
|
|
5
|
+
export declare class Textarea<Required extends boolean> extends SimpleInput<string | null> {
|
|
6
|
+
field: FormField<boolean, string | null>;
|
|
7
7
|
options: SimpleInputOptions & {
|
|
8
8
|
label?: string;
|
|
9
9
|
rows?: number;
|
|
10
10
|
cols?: number;
|
|
11
11
|
description?: string;
|
|
12
12
|
};
|
|
13
|
-
constructor(field: FormField<boolean, string>, options?: SimpleInputOptions & {
|
|
13
|
+
constructor(field: FormField<boolean, string | null>, options?: SimpleInputOptions & {
|
|
14
14
|
label?: string;
|
|
15
15
|
rows?: number;
|
|
16
16
|
cols?: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Context } from "koa";
|
|
2
2
|
import { FormDataValue } from "../form";
|
|
3
3
|
import { FieldParseResult, FormField } from "./field";
|
|
4
|
-
export declare class NumberField<DefaultValue extends number | null =
|
|
4
|
+
export declare class NumberField<DefaultValue extends number | null = number, Required extends boolean = boolean> extends FormField<Required, number | DefaultValue> {
|
|
5
5
|
default_value: DefaultValue;
|
|
6
6
|
options: Partial<{
|
|
7
7
|
max: number;
|
package/@types/page/list.d.ts
CHANGED
|
@@ -20,6 +20,10 @@ export declare abstract class ListPage<ItemType, F extends typeof BaseListPageFi
|
|
|
20
20
|
filterControls: FormControl[];
|
|
21
21
|
init(): void;
|
|
22
22
|
renderListContainer(_: Context, content: Templatable): FlatTemplatable;
|
|
23
|
+
getPaginationConfig(ctx: Context): Promise<{
|
|
24
|
+
page: number;
|
|
25
|
+
itemsPerPage: number;
|
|
26
|
+
}>;
|
|
23
27
|
renderItems(ctx: Context, values?: Record<string, FormDataValue>, items?: ItemType[]): Promise<FlatTemplatable>;
|
|
24
28
|
render(ctx: Context): Promise<FlatTemplatable>;
|
|
25
29
|
renderPagination(ctx: Context, values: Record<string, FormDataValue>): Promise<FlatTemplatable>;
|
|
@@ -9,7 +9,7 @@ class BigRadioGroup extends form_field_control_1.FormFieldControl {
|
|
|
9
9
|
this.field = field;
|
|
10
10
|
this.options = options;
|
|
11
11
|
}
|
|
12
|
-
async render(ctx, data, messages, field_name_prefix, form_id) {
|
|
12
|
+
async render(ctx, data, messages, field_name_prefix, form_id, show_field_errors) {
|
|
13
13
|
const { raw: current_value } = await this.field.getValue(ctx, data);
|
|
14
14
|
return tempstream_1.tempstream /* HTML */ `<div class="bigradios">
|
|
15
15
|
${Object.entries(this.options).map(([key, { description }]) => {
|
|
@@ -25,7 +25,7 @@ class BigRadioGroup extends form_field_control_1.FormFieldControl {
|
|
|
25
25
|
/>
|
|
26
26
|
<div class="bigradio">
|
|
27
27
|
${typeof description == "function"
|
|
28
|
-
? description(ctx, data, messages, field_name_prefix, form_id)
|
|
28
|
+
? description(ctx, data, messages, field_name_prefix, form_id, show_field_errors)
|
|
29
29
|
: description}
|
|
30
30
|
<label class="bigradio__cta" for="${id}">Wybierz</label>
|
|
31
31
|
</div>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"big-radio-group.js","sourceRoot":"","sources":["../../../src/forms/controls/big-radio-group.ts"],"names":[],"mappings":";;;AACA,2CAAyD;AAGzD,6DAAwD;AAExD,MAAa,aAAc,SAAQ,qCAAgB;IAClD,YACQ,KAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"big-radio-group.js","sourceRoot":"","sources":["../../../src/forms/controls/big-radio-group.ts"],"names":[],"mappings":";;;AACA,2CAAyD;AAGzD,6DAAwD;AAExD,MAAa,aAAc,SAAQ,qCAAgB;IAClD,YACQ,KAAgB,EAChB,OAcN;QAED,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAjBR,UAAK,GAAL,KAAK,CAAW;QAChB,YAAO,GAAP,OAAO,CAcb;IAGF,CAAC;IAED,KAAK,CAAC,MAAM,CACX,GAAY,EACZ,IAAmC,EACnC,QAAY,EACZ,iBAAyB,EACzB,OAAe,EACf,iBAA0B;QAE1B,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpE,OAAO,uBAAU,CAAA,UAAU,CAAC;KACzB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;YAC7D,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,UAAU,GAAG,EAAE,CAAC;YAC7C,OAAO,uBAAU,CAAA,UAAU,CAAC;;cAElB,IAAI,CAAC,KAAK,CAAC,IAAI;eACd,GAAG;YACN,EAAE;;QAEN,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QACrC,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;;QAGrC,OAAO,WAAW,IAAI,UAAU;gBACjC,CAAC,CAAC,WAAW,CACX,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,iBAAiB,CAChB;gBACH,CAAC,CAAC,WAAW;0CACsB,EAAE;YAChC,CAAC;QACV,CAAC,CAAC;SACI,CAAC;IACT,CAAC;CACD;AA3DD,sCA2DC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/forms/controls/textarea.ts"],"names":[],"mappings":";;;AAOA,iDAAiE;AAEjE,MAAa,QAAmC,SAAQ,
|
|
1
|
+
{"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/forms/controls/textarea.ts"],"names":[],"mappings":";;;AAOA,iDAAiE;AAEjE,MAAa,QAAmC,SAAQ,0BAEvD;IACA,YACQ,KAAwC,EACxC,UAKH,EAAE;QAEN,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QARf,UAAK,GAAL,KAAK,CAAmC;QACxC,YAAO,GAAP,OAAO,CAKR;IAGP,CAAC;IAED,iBAAiB;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW;YAC9B,CAAC,CAAC,UAAU,CAAC;OACT,IAAI,CAAC,OAAO,CAAC,WAAW;YACnB;YACT,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,KAAK,CAAC,WAAW,CAChB,GAAY,EACZ,UAAkB,EAClB,IAAmC;QAEnC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/D,OAAO,UAAU,CAAC,aAAa,UAAU,IAAI,KAAK,aAAa,CAAC;IACjE,CAAC;CACD;AA/BD,4BA+BC"}
|
package/lib/page/list.js
CHANGED
|
@@ -27,12 +27,17 @@ class ListPage extends page_1.Page {
|
|
|
27
27
|
renderListContainer(_, content) {
|
|
28
28
|
return tempstream_1.tempstream `<div>${content}</div>`;
|
|
29
29
|
}
|
|
30
|
+
async getPaginationConfig(ctx) {
|
|
31
|
+
const values = await this.extractRawValues(ctx);
|
|
32
|
+
const { parsed: page } = await this.fields.page.getValue(ctx, values);
|
|
33
|
+
const { parsed: itemsPerPage } = await this.fields.itemsPerPage.getValue(ctx, values);
|
|
34
|
+
return { page, itemsPerPage };
|
|
35
|
+
}
|
|
30
36
|
async renderItems(ctx, values, items) {
|
|
31
37
|
if (!values) {
|
|
32
38
|
values = await this.extractRawValues(ctx);
|
|
33
39
|
}
|
|
34
|
-
const {
|
|
35
|
-
const { parsed: itemsPerPage } = await this.fields.itemsPerPage.getValue(ctx, values);
|
|
40
|
+
const { itemsPerPage, page } = await this.getPaginationConfig(ctx);
|
|
36
41
|
const items_promise = this.getItems(ctx, page, itemsPerPage, values);
|
|
37
42
|
return tempstream_1.tempstream `${(items
|
|
38
43
|
? Promise.resolve(items)
|
|
@@ -45,8 +50,7 @@ class ListPage extends page_1.Page {
|
|
|
45
50
|
${this.renderListContainer(ctx, this.renderItems(ctx, values))}`;
|
|
46
51
|
}
|
|
47
52
|
async renderPagination(ctx, values) {
|
|
48
|
-
const {
|
|
49
|
-
const { parsed: itemsPerPage } = await this.fields.itemsPerPage.getValue(ctx, values);
|
|
53
|
+
const { itemsPerPage, page } = await this.getPaginationConfig(ctx);
|
|
50
54
|
const totalIems = await this.getTotalPages(ctx, itemsPerPage, values);
|
|
51
55
|
return tempstream_1.tempstream /* HTML */ `<center>
|
|
52
56
|
${page > 1 ? this.renderPageButton(ctx, 1, "Pierwsza strona") : ""}
|
|
@@ -90,6 +94,7 @@ ${this.renderListContainer(ctx, this.renderItems(ctx, values))}`;
|
|
|
90
94
|
for (const [fieldname, field] of Object.entries(this.filterFields)) {
|
|
91
95
|
// eslint-disable-next-line no-await-in-loop
|
|
92
96
|
const { parsed } = await field.getValue(ctx, raw_values);
|
|
97
|
+
console.log("PARSED", fieldname, parsed);
|
|
93
98
|
filter[fieldname] = field.mapToFilter(parsed);
|
|
94
99
|
}
|
|
95
100
|
return filter;
|
|
@@ -123,6 +128,12 @@ class SealiousItemListPage extends ListPage {
|
|
|
123
128
|
}
|
|
124
129
|
async addFilter(ctx, list) {
|
|
125
130
|
const filters = await this.getFilterValues(ctx);
|
|
131
|
+
for (const key in filters) {
|
|
132
|
+
if (filters[key] === undefined || filters[key] == "") {
|
|
133
|
+
delete filters[key];
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
console.log("GOT FILTER!", filters);
|
|
126
137
|
if (Object.keys(filters).length) {
|
|
127
138
|
list.filter(filters);
|
|
128
139
|
}
|
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,GAAkB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/page/list.ts"],"names":[],"mappings":"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"}
|
package/lib/templates/form.js
CHANGED
|
@@ -51,8 +51,8 @@ export default new (class ${action_name}Form extends Form<typeof fields, void> {
|
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
async render(ctx: Context, data: FormData) {
|
|
55
|
-
return html(ctx, "${action_name}", await super.render(ctx, data));
|
|
54
|
+
async render(ctx: Context, data: FormData, show_field_errors: boolean) {
|
|
55
|
+
return html(ctx, "${action_name}", await super.render(ctx, data, show_field_errors));
|
|
56
56
|
}
|
|
57
57
|
})();
|
|
58
58
|
`;
|
package/package.json
CHANGED
|
@@ -17,7 +17,8 @@ export class BigRadioGroup extends FormFieldControl {
|
|
|
17
17
|
data: Record<string, FormDataValue>,
|
|
18
18
|
messages: [],
|
|
19
19
|
feld_name_prefix: string,
|
|
20
|
-
form_id: string
|
|
20
|
+
form_id: string,
|
|
21
|
+
show_field_errors: boolean
|
|
21
22
|
) => FlatTemplatable);
|
|
22
23
|
}
|
|
23
24
|
>
|
|
@@ -30,7 +31,8 @@ export class BigRadioGroup extends FormFieldControl {
|
|
|
30
31
|
data: Record<string, FormDataValue>,
|
|
31
32
|
messages: [],
|
|
32
33
|
field_name_prefix: string,
|
|
33
|
-
form_id: string
|
|
34
|
+
form_id: string,
|
|
35
|
+
show_field_errors: boolean
|
|
34
36
|
): Promise<FlatTemplatable> {
|
|
35
37
|
const { raw: current_value } = await this.field.getValue(ctx, data);
|
|
36
38
|
return tempstream/* HTML */ `<div class="bigradios">
|
|
@@ -52,7 +54,8 @@ export class BigRadioGroup extends FormFieldControl {
|
|
|
52
54
|
data,
|
|
53
55
|
messages,
|
|
54
56
|
field_name_prefix,
|
|
55
|
-
form_id
|
|
57
|
+
form_id,
|
|
58
|
+
show_field_errors
|
|
56
59
|
)
|
|
57
60
|
: description}
|
|
58
61
|
<label class="bigradio__cta" for="${id}">Wybierz</label>
|
|
@@ -7,9 +7,11 @@ import { FormDataValue } from "../form";
|
|
|
7
7
|
import { FormFieldControl } from "./form-field-control";
|
|
8
8
|
import { SimpleInput, SimpleInputOptions } from "./simple-input";
|
|
9
9
|
|
|
10
|
-
export class Textarea<Required extends boolean> extends SimpleInput<
|
|
10
|
+
export class Textarea<Required extends boolean> extends SimpleInput<
|
|
11
|
+
string | null
|
|
12
|
+
> {
|
|
11
13
|
constructor(
|
|
12
|
-
public field: FormField<boolean, string>,
|
|
14
|
+
public field: FormField<boolean, string | null>,
|
|
13
15
|
public options: SimpleInputOptions & {
|
|
14
16
|
label?: string;
|
|
15
17
|
rows?: number;
|
|
@@ -4,7 +4,7 @@ import { FormDataValue } from "../form";
|
|
|
4
4
|
import { FieldParseResult, FormField } from "./field";
|
|
5
5
|
|
|
6
6
|
export class NumberField<
|
|
7
|
-
DefaultValue extends number | null =
|
|
7
|
+
DefaultValue extends number | null = number,
|
|
8
8
|
Required extends boolean = boolean
|
|
9
9
|
> extends FormField<Required, number | DefaultValue> {
|
|
10
10
|
constructor(
|
package/src/page/list.ts
CHANGED
|
@@ -52,6 +52,14 @@ export abstract class ListPage<
|
|
|
52
52
|
return tempstream`<div>${content}</div>`;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
async getPaginationConfig(ctx: Context) {
|
|
56
|
+
const values = await this.extractRawValues(ctx);
|
|
57
|
+
const { parsed: page } = await this.fields.page.getValue(ctx, values);
|
|
58
|
+
const { parsed: itemsPerPage } =
|
|
59
|
+
await this.fields.itemsPerPage.getValue(ctx, values);
|
|
60
|
+
return { page, itemsPerPage };
|
|
61
|
+
}
|
|
62
|
+
|
|
55
63
|
async renderItems(
|
|
56
64
|
ctx: Context,
|
|
57
65
|
values?: Record<string, FormDataValue>,
|
|
@@ -60,9 +68,7 @@ export abstract class ListPage<
|
|
|
60
68
|
if (!values) {
|
|
61
69
|
values = await this.extractRawValues(ctx);
|
|
62
70
|
}
|
|
63
|
-
const {
|
|
64
|
-
const { parsed: itemsPerPage } =
|
|
65
|
-
await this.fields.itemsPerPage.getValue(ctx, values);
|
|
71
|
+
const { itemsPerPage, page } = await this.getPaginationConfig(ctx);
|
|
66
72
|
const items_promise = this.getItems(ctx, page, itemsPerPage, values);
|
|
67
73
|
return tempstream`${(items
|
|
68
74
|
? Promise.resolve(items)
|
|
@@ -82,9 +88,7 @@ ${this.renderListContainer(ctx, this.renderItems(ctx, values))}`;
|
|
|
82
88
|
ctx: Context,
|
|
83
89
|
values: Record<string, FormDataValue>
|
|
84
90
|
): Promise<FlatTemplatable> {
|
|
85
|
-
const {
|
|
86
|
-
const { parsed: itemsPerPage } =
|
|
87
|
-
await this.fields.itemsPerPage.getValue(ctx, values);
|
|
91
|
+
const { itemsPerPage, page } = await this.getPaginationConfig(ctx);
|
|
88
92
|
const totalIems = await this.getTotalPages(ctx, itemsPerPage, values);
|
|
89
93
|
|
|
90
94
|
return tempstream/* HTML */ `<center>
|
|
@@ -137,6 +141,7 @@ ${this.renderListContainer(ctx, this.renderItems(ctx, values))}`;
|
|
|
137
141
|
for (const [fieldname, field] of Object.entries(this.filterFields)) {
|
|
138
142
|
// eslint-disable-next-line no-await-in-loop
|
|
139
143
|
const { parsed } = await field.getValue(ctx, raw_values);
|
|
144
|
+
console.log("PARSED", fieldname, parsed);
|
|
140
145
|
filter[fieldname] = field.mapToFilter(parsed);
|
|
141
146
|
}
|
|
142
147
|
return filter;
|
|
@@ -174,6 +179,13 @@ export abstract class SealiousItemListPage<
|
|
|
174
179
|
|
|
175
180
|
protected async addFilter(ctx: Context, list: ItemList<C>): Promise<void> {
|
|
176
181
|
const filters = await this.getFilterValues(ctx);
|
|
182
|
+
|
|
183
|
+
for (const key in filters) {
|
|
184
|
+
if (filters[key] === undefined || filters[key] == "") {
|
|
185
|
+
delete filters[key];
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
console.log("GOT FILTER!", filters);
|
|
177
189
|
if (Object.keys(filters).length) {
|
|
178
190
|
list.filter(filters as Partial<ItemFields<C>>);
|
|
179
191
|
}
|
package/src/templates/form.ts
CHANGED
|
@@ -52,8 +52,8 @@ export default new (class ${action_name}Form extends Form<typeof fields, void> {
|
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
async render(ctx: Context, data: FormData) {
|
|
56
|
-
return html(ctx, "${action_name}", await super.render(ctx, data));
|
|
55
|
+
async render(ctx: Context, data: FormData, show_field_errors: boolean) {
|
|
56
|
+
return html(ctx, "${action_name}", await super.render(ctx, data, show_field_errors));
|
|
57
57
|
}
|
|
58
58
|
})();
|
|
59
59
|
`;
|