@sealcode/sealgen 0.18.3 → 0.18.5

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.
Files changed (194) hide show
  1. package/@types/add-collection.d.ts +1 -0
  2. package/@types/add-crud.d.ts +3 -0
  3. package/@types/add-jdd-component.d.ts +1 -0
  4. package/@types/add-list-route.test.d.ts +1 -0
  5. package/@types/add-route.d.ts +3 -0
  6. package/@types/add-route.test.d.ts +1 -0
  7. package/@types/add-verbose-crud.d.ts +3 -0
  8. package/@types/build.d.ts +3 -0
  9. package/@types/builders/backend-ts-builder.d.ts +7 -0
  10. package/@types/builders/builder.d.ts +11 -0
  11. package/@types/builders/colors-builder.d.ts +10 -0
  12. package/@types/builders/css-builder.d.ts +19 -0
  13. package/@types/builders/fonts-builder.d.ts +7 -0
  14. package/@types/builders/frontend-ts-builder.d.ts +11 -0
  15. package/@types/cli.d.ts +2 -0
  16. package/@types/components/components.d.ts +2 -0
  17. package/@types/components/tabs.d.ts +2 -0
  18. package/@types/components/toggle-modal.d.ts +6 -0
  19. package/@types/crud-field-snippets.d.ts +3 -0
  20. package/@types/embeddable-file-extensions.d.ts +1 -0
  21. package/@types/esbuild-plugins/load-assets.d.ts +5 -0
  22. package/@types/esbuild-plugins/rewrite-asset-imports.d.ts +5 -0
  23. package/@types/example.test.d.ts +1 -0
  24. package/@types/find-css-includes.d.ts +1 -0
  25. package/@types/forms/controls/array.d.ts +35 -0
  26. package/@types/forms/controls/autocomplete.d.ts +22 -0
  27. package/@types/forms/controls/big-radio-group.d.ts +14 -0
  28. package/@types/forms/controls/checkbox-group.d.ts +21 -0
  29. package/@types/forms/controls/checkbox.d.ts +17 -0
  30. package/@types/forms/controls/checkboxed-list-input.d.ts +21 -0
  31. package/@types/forms/controls/checkboxed-list-input.test.d.ts +1 -0
  32. package/@types/forms/controls/collapsible-checkbox-group.d.ts +11 -0
  33. package/@types/forms/controls/collapsible-field-group.d.ts +21 -0
  34. package/@types/forms/controls/controls.d.ts +31 -0
  35. package/@types/forms/controls/derived-frame.d.ts +21 -0
  36. package/@types/forms/controls/derived.d.ts +13 -0
  37. package/@types/forms/controls/dropdown.d.ts +30 -0
  38. package/@types/forms/controls/editable-collection-subset.d.ts +20 -0
  39. package/@types/forms/controls/field-group.d.ts +23 -0
  40. package/@types/forms/controls/file.d.ts +13 -0
  41. package/@types/forms/controls/file.test.d.ts +1 -0
  42. package/@types/forms/controls/form-control.d.ts +20 -0
  43. package/@types/forms/controls/form-field-control.d.ts +13 -0
  44. package/@types/forms/controls/form-header.d.ts +8 -0
  45. package/@types/forms/controls/form-paragraph.d.ts +7 -0
  46. package/@types/forms/controls/frame.d.ts +17 -0
  47. package/@types/forms/controls/hidden-input.d.ts +9 -0
  48. package/@types/forms/controls/html.d.ts +11 -0
  49. package/@types/forms/controls/multiple-files.d.ts +40 -0
  50. package/@types/forms/controls/multiple-photos.d.ts +19 -0
  51. package/@types/forms/controls/number.d.ts +13 -0
  52. package/@types/forms/controls/photo.d.ts +21 -0
  53. package/@types/forms/controls/photo.test.d.ts +1 -0
  54. package/@types/forms/controls/radio.d.ts +16 -0
  55. package/@types/forms/controls/reverse-single-reference.d.ts +1 -0
  56. package/@types/forms/controls/simple-input.d.ts +33 -0
  57. package/@types/forms/controls/single-reference.d.ts +13 -0
  58. package/@types/forms/controls/single-reference.test.d.ts +1 -0
  59. package/@types/forms/controls/table.d.ts +34 -0
  60. package/@types/forms/controls/textarea.d.ts +25 -0
  61. package/@types/forms/controls/tickable.d.ts +25 -0
  62. package/@types/forms/fields/boolean.d.ts +17 -0
  63. package/@types/forms/fields/boolean.test.d.ts +1 -0
  64. package/@types/forms/fields/checkboxed-list.d.ts +21 -0
  65. package/@types/forms/fields/collection-field.d.ts +15 -0
  66. package/@types/forms/fields/email.d.ts +7 -0
  67. package/@types/forms/fields/email.test.d.ts +1 -0
  68. package/@types/forms/fields/enum-multiple.d.ts +18 -0
  69. package/@types/forms/fields/enum-multiple.test.d.ts +1 -0
  70. package/@types/forms/fields/enum.d.ts +18 -0
  71. package/@types/forms/fields/enum.test.d.ts +1 -0
  72. package/@types/forms/fields/existing-sealious-value.d.ts +6 -0
  73. package/@types/forms/fields/field.d.ts +48 -0
  74. package/@types/forms/fields/field.test.d.ts +1 -0
  75. package/@types/forms/fields/fields.d.ts +16 -0
  76. package/@types/forms/fields/file.d.ts +19 -0
  77. package/@types/forms/fields/file.test.d.ts +1 -0
  78. package/@types/forms/fields/multiple-files.d.ts +14 -0
  79. package/@types/forms/fields/number.d.ts +23 -0
  80. package/@types/forms/fields/number.test.d.ts +1 -0
  81. package/@types/forms/fields/pick-from-list.d.ts +14 -0
  82. package/@types/forms/fields/pick-from-list.test.d.ts +1 -0
  83. package/@types/forms/fields/proxy-field.d.ts +13 -0
  84. package/@types/forms/fields/regexp.d.ts +16 -0
  85. package/@types/forms/fields/regexp.test.d.ts +1 -0
  86. package/@types/forms/fields/reverse-single-reference.d.ts +13 -0
  87. package/@types/forms/fields/simple-form-field.d.ts +9 -0
  88. package/@types/forms/fields/structured-array.d.ts +14 -0
  89. package/@types/forms/fields/table.d.ts +13 -0
  90. package/@types/forms/form-types.d.ts +26 -0
  91. package/@types/forms/form.d.ts +31 -0
  92. package/@types/forms/form.test.d.ts +6 -0
  93. package/@types/forms/multiform.d.ts +24 -0
  94. package/@types/forms/multiform.test.d.ts +1 -0
  95. package/@types/generate-collections.d.ts +2 -0
  96. package/@types/generate-components.d.ts +1 -0
  97. package/@types/generate-routes.d.ts +5 -0
  98. package/@types/generate-routes.test.d.ts +1 -0
  99. package/@types/generate-stimulus.d.ts +1 -0
  100. package/@types/get-fonts.d.ts +2 -0
  101. package/@types/index.d.ts +46 -0
  102. package/@types/make-env.d.ts +1 -0
  103. package/@types/make-hidden-inputs.d.ts +5 -0
  104. package/@types/mount.d.ts +7 -0
  105. package/@types/notifier.d.ts +2 -0
  106. package/@types/page/access-control.d.ts +6 -0
  107. package/@types/page/default-list-filters.d.ts +18 -0
  108. package/@types/page/list.d.ts +48 -0
  109. package/@types/page/mountable-with-fields.d.ts +42 -0
  110. package/@types/page/mountable-with-fields.test.d.ts +1 -0
  111. package/@types/page/mountable.d.ts +11 -0
  112. package/@types/page/page.d.ts +19 -0
  113. package/@types/page/props-parser.d.ts +16 -0
  114. package/@types/page/sealious-list.d.ts +20 -0
  115. package/@types/page/sealious-list.test.d.ts +1 -0
  116. package/@types/page/stateful-page.d.ts +63 -0
  117. package/@types/page/stateful-page.test.d.ts +1 -0
  118. package/@types/register-external.d.ts +2 -0
  119. package/@types/register-external.test.d.ts +1 -0
  120. package/@types/run.d.ts +1 -0
  121. package/@types/sanitize.d.ts +1 -0
  122. package/@types/src/builder.d.ts +9 -7
  123. package/@types/src/register-external.d.ts +2 -0
  124. package/@types/src/register-external.test.d.ts +1 -0
  125. package/@types/target-locreq.d.ts +4 -0
  126. package/@types/templates/collection.d.ts +1 -0
  127. package/@types/templates/form.d.ts +16 -0
  128. package/@types/templates/jdd-component.d.ts +1 -0
  129. package/@types/templates/jdd-editor.d.ts +1 -0
  130. package/@types/templates/list.d.ts +1 -0
  131. package/@types/templates/long-running-process.d.ts +1 -0
  132. package/@types/templates/multiform.d.ts +1 -0
  133. package/@types/templates/page.d.ts +1 -0
  134. package/@types/templates/post.d.ts +1 -0
  135. package/@types/templates/redirect.d.ts +1 -0
  136. package/@types/templates/route-test.d.ts +1 -0
  137. package/@types/templates/shared/collection-create-form.d.ts +1 -0
  138. package/@types/templates/shared/collection-edit-form.d.ts +1 -0
  139. package/@types/templates/shared/collection-list.d.ts +16 -0
  140. package/@types/templates/shared/handlers/boolean.d.ts +2 -0
  141. package/@types/templates/shared/handlers/date.d.ts +2 -0
  142. package/@types/templates/shared/handlers/deep-reverse-single-reference.d.ts +2 -0
  143. package/@types/templates/shared/handlers/default.d.ts +2 -0
  144. package/@types/templates/shared/handlers/enum.d.ts +2 -0
  145. package/@types/templates/shared/handlers/file.d.ts +2 -0
  146. package/@types/templates/shared/handlers/image.d.ts +2 -0
  147. package/@types/templates/shared/handlers/int.d.ts +2 -0
  148. package/@types/templates/shared/handlers/jdd.d.ts +2 -0
  149. package/@types/templates/shared/handlers/single-reference.d.ts +2 -0
  150. package/@types/templates/shared/handlers/structured-array.d.ts +2 -0
  151. package/@types/templates/shared/item-delete.d.ts +1 -0
  152. package/@types/templates/shared/shared-crud-form-fields.d.ts +68 -0
  153. package/@types/templates/stateful-page.d.ts +1 -0
  154. package/@types/templates/stimulus-controller.d.ts +1 -0
  155. package/@types/templates/templates.d.ts +21 -0
  156. package/@types/test_utils/exec_async.d.ts +1 -0
  157. package/@types/test_utils/locator_is_visible.d.ts +2 -0
  158. package/@types/test_utils/test-on-real-app.d.ts +27 -0
  159. package/@types/utils/assert-throws.d.ts +1 -0
  160. package/@types/utils/base64.d.ts +2 -0
  161. package/@types/utils/browser-creator.d.ts +1 -0
  162. package/@types/utils/escape-url-params.d.ts +2 -0
  163. package/@types/utils/exec.d.ts +5 -0
  164. package/@types/utils/extract-fields-from-collection.d.ts +14 -0
  165. package/@types/utils/format-external-url.d.ts +1 -0
  166. package/@types/utils/import-path.d.ts +2 -0
  167. package/@types/utils/input-wrapper.d.ts +3 -0
  168. package/@types/utils/list-collections.d.ts +1 -0
  169. package/@types/utils/make-slug.d.ts +1 -0
  170. package/@types/utils/module-dirname.d.ts +1 -0
  171. package/@types/utils/natural-numbers.d.ts +1 -0
  172. package/@types/utils/prettier.d.ts +3 -0
  173. package/@types/utils/question.d.ts +1 -0
  174. package/@types/utils/render-attributes.d.ts +1 -0
  175. package/@types/utils/sleep.d.ts +1 -0
  176. package/@types/utils/translate.d.ts +3 -0
  177. package/@types/utils/url-with-new-params.d.ts +2 -0
  178. package/@types/utils/utils.d.ts +17 -0
  179. package/@types/utils/walk.d.ts +1 -0
  180. package/@types/utils/with-fallback.d.ts +2 -0
  181. package/@types/utils/write-file.d.ts +1 -0
  182. package/README.md +57 -0
  183. package/lib/cli.js +7 -1
  184. package/lib/esbuild-plugins/rewrite-asset-imports.js +0 -2
  185. package/lib/page/list.js +6 -2
  186. package/lib/register-external.js +105 -0
  187. package/lib/register-external.test.js +340 -0
  188. package/package.json +1 -1
  189. package/src/cli.ts +6 -0
  190. package/src/esbuild-plugins/rewrite-asset-imports.ts +0 -2
  191. package/src/page/list.ts +16 -3
  192. package/src/register-external.test.ts +469 -0
  193. package/src/register-external.ts +148 -0
  194. package/remove-named-imports.js +0 -68
@@ -0,0 +1 @@
1
+ export declare function addCollection(params?: Record<string, string | boolean>): Promise<void>;
@@ -0,0 +1,3 @@
1
+ export declare function addCRUD(params: Partial<{
2
+ [key in "collection" | "url"]: string;
3
+ }>, app_directory?: string): Promise<void>;
@@ -0,0 +1 @@
1
+ export declare function addJDDComponent(): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function addRoute(params: Partial<{
2
+ [key in "action" | "url" | "mode"]: string;
3
+ }>, app_directory?: string): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function addVerboseCRUD(params: Partial<{
2
+ [key in "collection" | "url"]: string;
3
+ }>, app_directory?: string): Promise<void>;
@@ -0,0 +1,3 @@
1
+ export declare function buildProject({ watch, }: {
2
+ watch: boolean;
3
+ }): Promise<void>;
@@ -0,0 +1,7 @@
1
+ import { Builder } from "./builder.js";
2
+ export declare class BackendTSBuilder extends Builder {
3
+ getName(): string;
4
+ ownsFile(file_path: string): boolean;
5
+ dispose(): Promise<void>;
6
+ _build(): Promise<void>;
7
+ }
@@ -0,0 +1,11 @@
1
+ export declare abstract class Builder {
2
+ project_dir: string;
3
+ style_dirs: string[];
4
+ abstract ownsFile(file_path: string): boolean;
5
+ abstract getName(): string;
6
+ abstract _build(): Promise<void>;
7
+ abstract dispose(): Promise<void>;
8
+ constructor(project_dir: string, style_dirs: string[]);
9
+ ongoing_build: Promise<void> | null;
10
+ build(notifier?: (message: string) => void): Promise<void>;
11
+ }
@@ -0,0 +1,10 @@
1
+ import { Builder } from "./builder.js";
2
+ export declare const COLORS_TS_PATH = "src/back/colors.ts";
3
+ export declare const COLORS_CSS_PATH = "src/colors.css";
4
+ export declare const COLORS_HTML_PATH = "public/dist/colors.html";
5
+ export declare class ColorsBuilder extends Builder {
6
+ getName(): string;
7
+ ownsFile(file_path: string): boolean;
8
+ dispose(): Promise<void>;
9
+ _build(): Promise<void>;
10
+ }
@@ -0,0 +1,19 @@
1
+ import { Builder } from "./builder.js";
2
+ export declare class CSSClump {
3
+ project_dir: string;
4
+ name: string;
5
+ files: string[];
6
+ constructor(project_dir: string, name: string);
7
+ addFile(full_path: string): void;
8
+ build(): Promise<void>;
9
+ getEntrypointPath(): string;
10
+ makeEntrypoint(): Promise<void>;
11
+ static assignFileToClumps(file_path: string): string[];
12
+ static findCSSClumps(project_dir: string, style_dirs: string[]): Promise<CSSClump[]>;
13
+ }
14
+ export declare class CSSBuilder extends Builder {
15
+ getName(): string;
16
+ ownsFile(file_path: string): boolean;
17
+ dispose(): Promise<void>;
18
+ _build(): Promise<void>;
19
+ }
@@ -0,0 +1,7 @@
1
+ import { Builder } from "./builder.js";
2
+ export declare class FontsBuilder extends Builder {
3
+ getName(): string;
4
+ ownsFile(file_path: string): boolean;
5
+ dispose(): Promise<void>;
6
+ _build(): Promise<void>;
7
+ }
@@ -0,0 +1,11 @@
1
+ import { Builder } from "./builder.js";
2
+ export declare class FrontendTSBuilder extends Builder {
3
+ project_dir: string;
4
+ style_dirs: string[];
5
+ controller_dirs: string[];
6
+ constructor(project_dir: string, style_dirs: string[], controller_dirs: string[]);
7
+ getName(): string;
8
+ ownsFile(file_path: string): boolean;
9
+ dispose(): Promise<void>;
10
+ _build(): Promise<void>;
11
+ }
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from "./tabs.js";
2
+ export * from "./toggle-modal.js";
@@ -0,0 +1,2 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ export declare function tabs(tabs: Record<string, FlatTemplatable>, selected_tab_style?: string, selected_index?: number, hide_tabs_width?: number): FlatTemplatable;
@@ -0,0 +1,6 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ export declare function toggleModal(options: {
3
+ name: string;
4
+ contentWrapped: (id: string) => FlatTemplatable | Promise<FlatTemplatable>;
5
+ contentUnwrapped: (id: string) => FlatTemplatable | Promise<FlatTemplatable>;
6
+ }): string | Promise<string>;
@@ -0,0 +1,3 @@
1
+ export declare function crudFieldSnippets(params: Partial<{
2
+ [key in "collection" | "url"]: string;
3
+ }>, app_directory?: string): Promise<void>;
@@ -0,0 +1 @@
1
+ export declare const embeddable_file_extensions: string[];
@@ -0,0 +1,5 @@
1
+ import { PluginBuild } from "esbuild";
2
+ export declare const load_assets_plugin: {
3
+ name: string;
4
+ setup(build: PluginBuild): void;
5
+ };
@@ -0,0 +1,5 @@
1
+ import { PluginBuild } from "esbuild";
2
+ export declare const rewrite_asset_imports_plugin: (project_dir: string) => {
3
+ name: string;
4
+ setup(build: PluginBuild): void;
5
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="koa__router" resolution-mode="require"/>
3
+ import Router from "@koa/router";
4
+ import { Context } from "koa";
5
+ import { Field, FieldsetOutput } from "sealious";
6
+ import { FormField } from "../fields/field.js";
7
+ import { StructuredArrayField } from "../fields/structured-array.js";
8
+ import { FormDataValue } from "../form-types.js";
9
+ import { FormControl, FormControlContext } from "./form-control.js";
10
+ import { FormFieldControl } from "./form-field-control.js";
11
+ export type UnboundControlStorage<F extends {
12
+ new (...args: any): FormFieldControl;
13
+ } = {
14
+ new (...args: any): FormFieldControl;
15
+ }> = [F, string, ConstructorParameters<F>];
16
+ export declare function UnboundControl<F extends {
17
+ new (...args: any): FormFieldControl;
18
+ }>(controlClass: F, arbitrary_field_name: string, params: ConstructorParameters<F>["1"]): UnboundControlStorage;
19
+ export declare class StructuredArray<Subfields extends Record<string, Field<any>>> extends FormFieldControl {
20
+ field: StructuredArrayField<Subfields>;
21
+ item_controls: Array<FormControl | UnboundControlStorage>;
22
+ constructor(field: StructuredArrayField<Subfields>, item_controls: Array<FormControl | UnboundControlStorage>);
23
+ getFrameID(): string;
24
+ getInnerFormID(): string;
25
+ getActionURL(form_id?: string, action?: Record<string, unknown>): string;
26
+ getDefaultItemBody(): Promise<{}>;
27
+ makeSubfield(_field_name: string): FormField;
28
+ renderItemControl(ctx: Context, form_id: string, control: FormControl | UnboundControlStorage, item: FieldsetOutput<Subfields>, index: number): Promise<(string | number | import("stream").Readable | null) | (string | number | import("stream").Readable | null)[] | Promise<string | number | import("stream").Readable | null>[]>;
29
+ renderItem(ctx: Context, form_id: string, item: FieldsetOutput<Subfields>, index: number): Promise<string>;
30
+ getItems(ctx: Context, raw_values: Record<string, FormDataValue>): Promise<FieldsetOutput<Subfields>[]>;
31
+ _render(ctx: Context, form_id: string, raw_values: Record<string, FormDataValue>): Promise<string>;
32
+ render(fctx: FormControlContext): Promise<string>;
33
+ getTargetItemID(ctx: Context): Promise<string>;
34
+ mount(router: Router): void;
35
+ }
@@ -0,0 +1,22 @@
1
+ import { Context } from "koa";
2
+ import { PickFromListField } from "../fields/pick-from-list.js";
3
+ import { FormControlContext } from "./form-control.js";
4
+ import { SimpleInput } from "./simple-input.js";
5
+ export declare class Autocomplete extends SimpleInput<string | null> {
6
+ field: PickFromListField<boolean>;
7
+ options: {
8
+ id?: string;
9
+ label?: string;
10
+ placeholder?: string;
11
+ };
12
+ constructor(field: PickFromListField<boolean>, options: {
13
+ id?: string;
14
+ label?: string;
15
+ placeholder?: string;
16
+ });
17
+ getListID(): string;
18
+ getInputAttributes(fctx: FormControlContext): Promise<{
19
+ list: string;
20
+ }>;
21
+ postInput(ctx: Context): Promise<string>;
22
+ }
@@ -0,0 +1,14 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { FormField } from "../fields/field.js";
3
+ import { FormControlContext } from "./form-control.js";
4
+ import { FormFieldControl } from "./form-field-control.js";
5
+ export declare class BigRadioGroup extends FormFieldControl {
6
+ field: FormField;
7
+ options: Record<string, {
8
+ description: FlatTemplatable | ((fctx: FormControlContext) => FlatTemplatable);
9
+ }>;
10
+ constructor(field: FormField, options: Record<string, {
11
+ description: FlatTemplatable | ((fctx: FormControlContext) => FlatTemplatable);
12
+ }>);
13
+ render(fctx: FormControlContext): Promise<FlatTemplatable>;
14
+ }
@@ -0,0 +1,21 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { EnumMultipleField } from "../fields/enum-multiple.js";
3
+ import { CheckboxWithValue } from "./checkbox.js";
4
+ import { FormControlContext } from "./form-control.js";
5
+ import { FormFieldControl } from "./form-field-control.js";
6
+ export type DefaultCheckboxOptions = {
7
+ id?: string;
8
+ label?: string;
9
+ hide_errors?: boolean;
10
+ readonly?: boolean;
11
+ name?: string;
12
+ checkboxNameToLabel?: (name: string) => string;
13
+ classes?: string[];
14
+ };
15
+ export declare class CheckboxGroup<Options extends DefaultCheckboxOptions = DefaultCheckboxOptions> extends FormFieldControl {
16
+ field: EnumMultipleField<readonly string[], boolean>;
17
+ options: Options;
18
+ constructor(field: EnumMultipleField<readonly string[], boolean>, options?: Options);
19
+ wrapGroup(fctx: FormControlContext, checkboxes: CheckboxWithValue[]): Promise<FlatTemplatable>;
20
+ render(fctx: FormControlContext): Promise<FlatTemplatable>;
21
+ }
@@ -0,0 +1,17 @@
1
+ import { Context } from "koa";
2
+ import { FormDataValue } from "../form-types.js";
3
+ import { Tickable, TickableOptions } from "./tickable.js";
4
+ import { FormField } from "../fields/field.js";
5
+ export declare class Checkbox extends Tickable<boolean> {
6
+ field: FormField<boolean, boolean>;
7
+ type: "checkbox";
8
+ constructor(field: FormField<boolean, boolean>, options?: Partial<TickableOptions<boolean>>);
9
+ isChecked(_ctx: Context, _data: Record<string, FormDataValue>, value: boolean): boolean;
10
+ getValueAttribute(): string;
11
+ }
12
+ export declare class CheckboxWithValue extends Checkbox {
13
+ field: FormField<boolean, boolean>;
14
+ value: string;
15
+ constructor(field: FormField<boolean, boolean>, options: TickableOptions<boolean>, value: string);
16
+ getValueAttribute(): string;
17
+ }
@@ -0,0 +1,21 @@
1
+ import { CheckboxedListField } from "../fields/checkboxed-list.js";
2
+ import { FormControlContext } from "./form-control.js";
3
+ import { FormFieldControl } from "./form-field-control.js";
4
+ export declare class CheckboxedListInput extends FormFieldControl {
5
+ field: CheckboxedListField<boolean>;
6
+ options: {
7
+ label: string;
8
+ };
9
+ constructor(field: CheckboxedListField<boolean>, options?: {
10
+ label: string;
11
+ });
12
+ generateCountBasedClasses(n: number): string[];
13
+ render(fctx: FormControlContext): Promise<string>;
14
+ renderOption({ name, value, form_id, label, checked, }: {
15
+ name: string;
16
+ form_id: string;
17
+ value: string;
18
+ label?: string;
19
+ checked: boolean;
20
+ }): string | Promise<string>;
21
+ }
@@ -0,0 +1,11 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { CheckboxWithValue } from "./checkbox.js";
3
+ import { CheckboxGroup, DefaultCheckboxOptions } from "./checkbox-group.js";
4
+ import { FormControlContext } from "./form-control.js";
5
+ export declare class CollapsibleCheckboxGroup extends CheckboxGroup<DefaultCheckboxOptions & {
6
+ textWhenOpen?: string;
7
+ textWhenClosed?: string;
8
+ groupID?: string;
9
+ }> {
10
+ wrapGroup(fctx: FormControlContext, checkboxes: CheckboxWithValue[]): Promise<FlatTemplatable>;
11
+ }
@@ -0,0 +1,21 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { FieldGroup } from "./field-group.js";
3
+ import { FormControl } from "./form-control.js";
4
+ type CollapsibleFieldGroupOptions = {
5
+ label?: string;
6
+ classes?: string[];
7
+ openOnStart?: boolean;
8
+ textWhenOpen?: string;
9
+ textWhenClosed?: string;
10
+ groupID?: string;
11
+ };
12
+ export declare class CollapsibleFieldGroup extends FieldGroup {
13
+ controls: FormControl[];
14
+ options: CollapsibleFieldGroupOptions;
15
+ collapseID: string;
16
+ constructor(controls: FormControl[], options?: CollapsibleFieldGroupOptions);
17
+ getGroupLabelProps(): string | Promise<string>;
18
+ preLabelContainer(): FlatTemplatable;
19
+ postLabel(): FlatTemplatable;
20
+ }
21
+ export {};
@@ -0,0 +1,31 @@
1
+ export { FormControl } from "./form-control.js";
2
+ export { FormFieldControl } from "./form-field-control.js";
3
+ export { EditableCollectionSubset } from "./editable-collection-subset.js";
4
+ export { Frame } from "./frame.js";
5
+ export { CheckboxedListInput } from "./checkboxed-list-input.js";
6
+ export * from "./dropdown.js";
7
+ export * from "./single-reference.js";
8
+ export { SimpleInput } from "./simple-input.js";
9
+ export { FormHeader } from "./form-header.js";
10
+ export { FormParagraph } from "./form-paragraph.js";
11
+ export { HTML } from "./html.js";
12
+ export { HiddenInput } from "./hidden-input.js";
13
+ export { Textarea } from "./textarea.js";
14
+ export { FieldGroup } from "./field-group.js";
15
+ export * from "./derived.js";
16
+ export * from "./derived-frame.js";
17
+ export * from "./tickable.js";
18
+ export * from "./checkbox.js";
19
+ export * from "./radio.js";
20
+ export * from "./big-radio-group.js";
21
+ export * from "./checkbox-group.js";
22
+ export * from "./collapsible-field-group.js";
23
+ export * from "./collapsible-checkbox-group.js";
24
+ export * from "./autocomplete.js";
25
+ export * from "./file.js";
26
+ export * from "./photo.js";
27
+ export * from "./multiple-files.js";
28
+ export * from "./number.js";
29
+ export * from "./multiple-photos.js";
30
+ export * from "./array.js";
31
+ export * from "./table.js";
@@ -0,0 +1,21 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="koa__router" resolution-mode="require"/>
3
+ import Router from "@koa/router";
4
+ import { Context } from "koa";
5
+ import { ParsedUrlQuery } from "querystring";
6
+ import { FlatTemplatable } from "tempstream";
7
+ import { FormField } from "../fields/field.js";
8
+ import { Derived } from "./derived.js";
9
+ import { FormControlContext } from "./form-control.js";
10
+ export declare class DerivedFrame extends Derived<{
11
+ frame_id: string;
12
+ form_id: string;
13
+ field_name_prefix: string;
14
+ }> {
15
+ frame_name: string;
16
+ generateFrameContent: (ctx: FormControlContext, args: ParsedUrlQuery) => Promise<FlatTemplatable>;
17
+ frame_id: string;
18
+ constructor(frame_name: string, fields: FormField[], generateFrameContent: (ctx: FormControlContext, args: ParsedUrlQuery) => Promise<FlatTemplatable>, frame_id?: string);
19
+ renderBackendResponseFrame(_ctx: Context, content: FlatTemplatable): string | Promise<string>;
20
+ mount(router: Router): void;
21
+ }
@@ -0,0 +1,13 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { FormField } from "../fields/field.js";
3
+ import { FormDataValue } from "../form-types.js";
4
+ import { FormControl, FormControlContext } from "./form-control.js";
5
+ export declare class Derived<Consts extends Record<string, unknown | undefined>> extends FormControl {
6
+ fields: FormField[];
7
+ _render: (values: Record<string, string>, consts: Consts) => Promise<FlatTemplatable>;
8
+ getConsts: (fctx: FormControlContext) => Promise<Consts>;
9
+ role: "decoration";
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>>;
12
+ render(fctx: FormControlContext): Promise<FlatTemplatable>;
13
+ }
@@ -0,0 +1,30 @@
1
+ import { Context } from "koa";
2
+ import { FlatTemplatable } from "tempstream";
3
+ import { FormField } from "../fields/field.js";
4
+ import { PickFromListField } from "../fields/pick-from-list.js";
5
+ import { FormDataValue } from "../form-types.js";
6
+ import { FormControlContext } from "./form-control.js";
7
+ import { SimpleInput } from "./simple-input.js";
8
+ export type DropdownOptions = {
9
+ label: string;
10
+ autosubmit?: boolean;
11
+ autocomplete?: boolean;
12
+ };
13
+ export type DropdownOption = {
14
+ value: string;
15
+ label: string;
16
+ };
17
+ export declare class FreeformDropdown extends SimpleInput<string | null> {
18
+ field: FormField<boolean, string | null>;
19
+ _generateOptions: (ctx: Context) => Promise<DropdownOption[]>;
20
+ options: DropdownOptions;
21
+ constructor(field: FormField<boolean, string | null>, _generateOptions: (ctx: Context) => Promise<DropdownOption[]>, options?: DropdownOptions);
22
+ generateOptions(ctx: Context): Promise<DropdownOption[]>;
23
+ getInputAttributes(fctx: FormControlContext): Promise<Record<string, string | boolean>>;
24
+ renderInput(ctx: Context, attributes_str: string, data: Record<string, FormDataValue>): Promise<FlatTemplatable>;
25
+ }
26
+ export declare class Dropdown extends FreeformDropdown {
27
+ field: PickFromListField<boolean>;
28
+ options: DropdownOptions;
29
+ constructor(field: PickFromListField<boolean>, options?: DropdownOptions);
30
+ }
@@ -0,0 +1,20 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { PickFromListField } from "../fields/pick-from-list.js";
3
+ import { FormControlContext } from "./form-control.js";
4
+ import { FormFieldControl } from "./form-field-control.js";
5
+ /**
6
+ * This control has own forms in it so if you want to use it you
7
+ * probably shouldn't use `await super.render(ctx, data, path)` in
8
+ * render method of you from implementation and you should write
9
+ * your own implementation of this method. See forms that uses
10
+ * this control for reference.
11
+ */
12
+ export declare class EditableCollectionSubset extends FormFieldControl {
13
+ field: PickFromListField<false>;
14
+ actionname: string;
15
+ listLabel?: string | undefined;
16
+ selectLabel?: string | undefined;
17
+ constructor(field: PickFromListField<false>, actionname: string, listLabel?: string | undefined, selectLabel?: string | undefined);
18
+ render(fctx: FormControlContext): Promise<FlatTemplatable>;
19
+ role: "input";
20
+ }
@@ -0,0 +1,23 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { FormControl, FormControlContext } from "./form-control.js";
3
+ import { FormFieldControl } from "./form-field-control.js";
4
+ export declare class FieldGroup extends FormFieldControl {
5
+ controls: FormControl[];
6
+ options: {
7
+ label?: string;
8
+ classes?: string[];
9
+ containerID?: string;
10
+ };
11
+ constructor(controls: FormControl[], options?: {
12
+ label?: string;
13
+ classes?: string[];
14
+ containerID?: string;
15
+ });
16
+ preLabel(): FlatTemplatable;
17
+ preLabelContainer(): FlatTemplatable;
18
+ postLabel(): FlatTemplatable;
19
+ preFields(): FlatTemplatable;
20
+ postFields(): FlatTemplatable;
21
+ getGroupLabelProps(): FlatTemplatable;
22
+ render(fctx: FormControlContext): Promise<FlatTemplatable>;
23
+ }
@@ -0,0 +1,13 @@
1
+ import { Context } from "koa";
2
+ import { FilePointer } from "@sealcode/file-manager";
3
+ import { FlatTemplatable } from "tempstream";
4
+ import { FileContainer } from "../fields/file.js";
5
+ import { FormDataValue } from "../form-types.js";
6
+ import { FormControlContext } from "./form-control.js";
7
+ import { SimpleInput } from "./simple-input.js";
8
+ export declare class File extends SimpleInput<FileContainer> {
9
+ getType(): string;
10
+ renderFilePreview(_ctx: Context, file: FilePointer | null): Promise<FlatTemplatable>;
11
+ preInput(fctx: FormControlContext, data: Record<string, FormDataValue>): Promise<string>;
12
+ getInputAttributes(fctx: FormControlContext): Promise<Record<string, string | boolean>>;
13
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ /// <reference types="koa__router" resolution-mode="require"/>
2
+ import Router from "@koa/router";
3
+ import { Context } from "koa";
4
+ import { FlatTemplatable } from "tempstream";
5
+ import { FormDataValue, FormMessage } from "../form-types.js";
6
+ import type { Form } from "../form.js";
7
+ export declare class FormControlContext {
8
+ ctx: Context;
9
+ data: Record<string, FormDataValue>;
10
+ messages: FormMessage[];
11
+ field_name_prefix: string;
12
+ form_id: string;
13
+ validate: boolean;
14
+ constructor(ctx: Context, data: Record<string, FormDataValue>, messages: FormMessage[], field_name_prefix: string, form_id: string, validate: boolean);
15
+ }
16
+ export declare abstract class FormControl {
17
+ abstract render(fctx: FormControlContext): FlatTemplatable | Promise<FlatTemplatable>;
18
+ abstract role: "input" | "decoration" | "messages" | "submit";
19
+ mount(_router: Router, _form: Form<any, any>): void;
20
+ }
@@ -0,0 +1,13 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { FormField } from "../fields/field.js";
3
+ import { FieldValueType } from "../form-types.js";
4
+ import { FormControl, FormControlContext } from "./form-control.js";
5
+ export type FormFieldsToTypes<FormFields extends readonly FormField[]> = {
6
+ [Index in keyof FormFields]: FormFields[Index] extends FormField ? FieldValueType<FormFields[Index]> : never;
7
+ };
8
+ export declare abstract class FormFieldControl extends FormControl {
9
+ fields: FormField[];
10
+ role: "input";
11
+ constructor(fields: FormField[]);
12
+ abstract render(fctx: FormControlContext): FlatTemplatable | Promise<FlatTemplatable>;
13
+ }
@@ -0,0 +1,8 @@
1
+ import { FormControl, FormControlContext } from "./form-control.js";
2
+ export declare class FormHeader extends FormControl {
3
+ text: string;
4
+ isVisible: (fctx: FormControlContext) => Promise<boolean>;
5
+ role: "decoration";
6
+ constructor(text: string, isVisible?: (fctx: FormControlContext) => Promise<boolean>);
7
+ render(fctx: FormControlContext): Promise<string>;
8
+ }
@@ -0,0 +1,7 @@
1
+ import { FormControl } from "./form-control.js";
2
+ export declare class FormParagraph extends FormControl {
3
+ text: string;
4
+ role: "decoration";
5
+ constructor(text: string);
6
+ render(): string;
7
+ }
@@ -0,0 +1,17 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { FormControl } from "./form-control.js";
3
+ /**
4
+ * This class will render `turbo-frame` tag so that u can
5
+ * embed other route inside your form. This will require
6
+ * to add value to `data: FormData` (inside your master form
7
+ * render function) with key `Frame.FRAME_PATH_KEY`. Value
8
+ * needs to be url to route that you want to embed. If you
9
+ * this value wont be provided frame will redner empty string.
10
+ * See `src/back/routes/profile/[id].form.ts` for an example.
11
+ */
12
+ export declare class Frame extends FormControl {
13
+ src: string;
14
+ constructor(src: string);
15
+ render(): FlatTemplatable | Promise<FlatTemplatable>;
16
+ role: "decoration";
17
+ }
@@ -0,0 +1,9 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { FormField } from "../fields/field.js";
3
+ import { FormControlContext } from "./form-control.js";
4
+ import { FormFieldControl } from "./form-field-control.js";
5
+ export declare class HiddenInput extends FormFieldControl {
6
+ field: FormField;
7
+ constructor(field: FormField);
8
+ render(fctx: FormControlContext): Promise<FlatTemplatable>;
9
+ }
@@ -0,0 +1,11 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ import { FormControl, FormControlContext } from "./form-control.js";
3
+ type Renderer = ((fctx: FormControlContext) => FlatTemplatable) | FlatTemplatable;
4
+ export declare class HTML extends FormControl {
5
+ role: "decoration" | "submit";
6
+ renderer: Renderer;
7
+ constructor(role: "decoration" | "submit", renderer: Renderer);
8
+ constructor(renderer: Renderer);
9
+ render(fctx: FormControlContext): Promise<FlatTemplatable>;
10
+ }
11
+ export {};