@formancy/react 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -57,6 +57,10 @@ export declare function useRepeater(path: string | Path): RepeaterBinding;
57
57
  interface WizardBinding {
58
58
  page: number;
59
59
  pageCount: number;
60
+ /** Whether there is a live page after this one. Not `page < pageCount - 1`
61
+ * once a page can be walked past: the last live page is not always the last. */
62
+ canGoNext: boolean;
63
+ canGoBack: boolean;
60
64
  /** Resolves true iff the page advanced; a failed validation keeps the page. */
61
65
  next(): Promise<boolean>;
62
66
  back(): void;
@@ -84,7 +88,13 @@ export declare function useSubmit(): () => {
84
88
  errors: Record<string, string[]>;
85
89
  };
86
90
  //#endregion
87
- //#region src/form.d.ts
91
+ //#region src/fields/internals.d.ts
92
+ /**
93
+ * The pieces every control shares: the shell it renders inside, the prop shapes, and the few helpers more than one of them needs.
94
+ *
95
+ * One file per control, because a control changes for its own reasons.
96
+ * These were one 2,154-line file — the largest in the repository.
97
+ */
88
98
  /**
89
99
  * The component registry — theming mechanism number two. The schema decides
90
100
  * WHAT a field is; the registry decides what RENDERS it, with per-path entries
@@ -126,6 +136,20 @@ interface FormancyFormProps {
126
136
  submitLabel?: string;
127
137
  onSubmit?: (outcome: SubmitOutcome) => void;
128
138
  }
139
+ //#endregion
140
+ //#region src/form.d.ts
141
+ /**
142
+ * The form, the list that walks it, and which component renders which type.
143
+ *
144
+ * What is left after the controls moved into `fields/`: 2,154 lines that had
145
+ * become the place things went. Three subjects remain here and they are one —
146
+ * a form renders a list, a list renders a slot, a slot may render a repeater,
147
+ * and a repeater renders a list. Mutual recursion is not a seam.
148
+ *
149
+ * `null` in the map is not an omission. `hidden` renders nothing by design, and
150
+ * `group`, `page` and `repeater` are containers the list itself walks rather
151
+ * than controls.
152
+ */
129
153
  /**
130
154
  * Renders the whole form from the engine: one slot per field, resolved through
131
155
  * the registry. Slots subscribe individually, so a keystroke re-renders one
@@ -315,6 +339,25 @@ interface StoredFile {
315
339
  /** Where the bytes are, in whatever the host's storage calls a location. */
316
340
  storageKey: string;
317
341
  }
342
+ /**
343
+ * What the field tells an uploader about the file it is sending.
344
+ *
345
+ * An uploader that reads none of it still works — a function of the file alone is an
346
+ * `Uploader` — and the field then shows the file as uploading with no figure, and a
347
+ * cancel that stops waiting for it rather than stopping the transfer
348
+ * ([0130](../../../docs/decisions/0130-each-file-is-its-own-upload.md)).
349
+ */
350
+ interface UploadOptions {
351
+ /**
352
+ * The field the file is for, at the data path a server reads — `items[].receipt` for
353
+ * a file field in a repeater row, whichever row it is.
354
+ */
355
+ field: string;
356
+ /** Aborted when the person cancels this file. Hand it to `fetch` and the transfer stops. */
357
+ signal: AbortSignal;
358
+ /** Bytes sent so far, of how many. `fetch` cannot report an upload's progress; XHR can. */
359
+ onProgress(sent: number, total: number): void;
360
+ }
318
361
  /**
319
362
  * Uploads one file and reports what was stored.
320
363
  *
@@ -322,7 +365,7 @@ interface StoredFile {
322
365
  * file, because a submission somebody believes carries their evidence and does not is
323
366
  * the worst outcome available here.
324
367
  */
325
- type Uploader = (file: File) => Promise<StoredFile>;
368
+ type Uploader = (file: File, options: UploadOptions) => Promise<StoredFile>;
326
369
  export declare const UploaderProvider: import("react").Provider<Uploader | undefined>;
327
370
  /**
328
371
  * The host's uploader, or undefined when there is none.
@@ -446,5 +489,5 @@ interface ResumeNoticeProps {
446
489
  }
447
490
  export declare function ResumeNotice({ migration, labels }: ResumeNoticeProps): ReactElement | null;
448
491
  //#endregion
449
- export type { ErrorSummaryProps, FieldBinding, FieldComponent, FieldComponentProps, FormancyFormProps, OptionsRequest, OptionsSource, OptionsSources, Registry, RepeaterBinding, ResumeMigration, ResumeNoticeProps, RichTextEditorFactory, RichTextEditorHandle, RichTextEditorMount, ScanRequest, Scanner, StoredFile, SubmitOutcome, Uploader, WizardBinding };
492
+ export type { ErrorSummaryProps, FieldBinding, FieldComponent, FieldComponentProps, FormancyFormProps, OptionsRequest, OptionsSource, OptionsSources, Registry, RepeaterBinding, ResumeMigration, ResumeNoticeProps, RichTextEditorFactory, RichTextEditorHandle, RichTextEditorMount, ScanRequest, Scanner, StoredFile, SubmitOutcome, UploadOptions, Uploader, WizardBinding };
450
493
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/context.tsx","../src/use-field.ts","../src/use-repeater.ts","../src/use-wizard.ts","../src/use-submit.ts","../src/form.tsx","../src/error-summary.tsx","../src/rich-text.tsx","../src/options-source.ts","../src/scanning.ts","../src/uploads.ts","../src/rich-text-editor.ts","../src/resume-notice.tsx"],"mappings":";;;;wBAYgB,mBAAmB,QAAQ;EAAc,QAAQ;EAAY,WAAW;oBAAW,IAAA;wBAInF,iBAAiB;;;UCXhB,qBAAqB;EACpC,SAAS;EACT;;EAEA,cAAc;;EAEd;IAAc;IAAY;;;EAE1B;IAAc;;;;;;;;;;;;;wBAaA,SAAS,eAAe,OAAO;;;UCrB9B;EACf;;EAEA;EACA;EACA,UAAU;;EAEV,QAAQ,cAAc;;;;;;;wBAQR,YAAY,eAAe,OAAO;;;UCjBjC;EACf;EACA;;EAEA,QAAQ;EACR;;EAEA,KAAK;;;;;;;wBAQS,aAAa;;;;;;;;;;;wBCLb;EAAqB;EAAa,QAAQ;;;;;;;;;;;UCgBzC;EACf;EACA;;KAGU,iBAAiB,cAAc;UAE1B;EACf,SAAS,QAAQ,OAAO,WAAW;EACnC,SAAS,eAAe;;UAGT;EACf;EACA,QAAQ;;EAER;;UAGe;;;;;;;EAOf,SAAS;EACT,WAAW;;;;;;;EAOX;EACA;EACA,YAAY,SAAS;;;;;;;;;;;wBAYP,aAAa,OAAO,oCAAiB,IAAA;;;UCxEpC;EACf,SAAS;;;;;;;;;;;wBAYK,eAAe,UAAU,oCAAiB,IAAA;;;;;;;;;;;;;;;;;;;;wBCI1C,WAAW;EAAY;IAAmB;;;;;;;;;;UCZzC;;;;;EAKf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;;;;EASA;;EAEA;;EAEA,QAAQ;;;;;;;;;;;UAYO;EACf,QAAQ,SAAS,iBAAiB,iBAAiB;;EAEnD;;EAEA;;EAEA;;;;;;;;;;;;;KAcU,iBAAiB,SAAS,eAAe;qBAIxC,wCAAsB,SAAA,SAAA,eAAA;;;;;;;;;wBAUnB,qBAAqB;;;;;;;;;;;;UCxEpB;;EAEf;;EAEA;;;;;;;;;;;;;;;;;;;KAoBU,WAAW,SAAS,gBAAgB;qBAInC,iCAAe,SAAA;;;;;;;;wBASZ,cAAc;;;;;;;;;;;;;UCpCb;;EAEf;EACA;EACA;EACA;;EAEA;;;;;;;;;KAUU,YAAY,MAAM,SAAS,QAAQ;qBAIlC,kCAAgB,SAAA;;;;;;;;;wBAUb,eAAe;;;;;;;;;;;;;;;;;;;;;UCtBd;;EAEf;;EAEA,WAAW;;;;;;;;;;;;;EAaX,MAAM,SAAS,aAAa;;EAE5B,WAAW,SAAS;EACpB;;UAGe;;WAEN,SAAS;;WAET;;WAEA,WAAW;WACX;;;;;;;;;;WAUA,YAAY,SAAS;;KAGpB,yBAAyB,OAAO,wBAAwB;qBAIvD,wCAAsB,SAAA;;;;;;;;;wBAUnB,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;UClD3B;WACN;WACA,SAAS;aAAyB;aAAuB;;;UAGnD;;WAEN,YAAY;;WAEZ,SAAS,SAAS;;wBAGb,eAAe,WAAW,UAAU,oBAAoB"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/context.tsx","../src/use-field.ts","../src/use-repeater.ts","../src/use-wizard.ts","../src/use-submit.ts","../src/fields/internals.tsx","../src/form.tsx","../src/error-summary.tsx","../src/rich-text.tsx","../src/options-source.ts","../src/scanning.ts","../src/uploads.ts","../src/rich-text-editor.ts","../src/resume-notice.tsx"],"mappings":";;;;wBAagB,mBAAmB,QAAQ;EAAc,QAAQ;EAAY,WAAW;oBAAW,IAAA;wBAOnF,iBAAiB;;;UCfhB,qBAAqB;EACpC,SAAS;EACT;;EAEA,cAAc;;EAEd;IAAc;IAAY;;;EAE1B;IAAc;;;;;;;;;;;;;wBAaA,SAAS,eAAe,OAAO;;;UCrB9B;EACf;;EAEA;EACA;EACA,UAAU;;EAEV,QAAQ,cAAc;;;;;;;wBAQR,YAAY,eAAe,OAAO;;;UCjBjC;EACf;EACA;;;EAGA;EACA;;EAEA,QAAQ;EACR;;EAEA,KAAK;;;;;;;wBAQS,aAAa;;;;;;;;;;;wBCTb;EAAqB;EAAa,QAAQ;;;;;;;;;;;;;;;;;UCQzC;EACf;EACA;;KAGU,iBAAiB,cAAc;UAE1B;EACf,SAAS,QAAQ,OAAO,WAAW;EACnC,SAAS,eAAe;;UAGT;EACf;EACA,QAAQ;;EAER;;UAGe;;;;;;;EAOf,SAAS;EACT,WAAW;;;;;;;EAOX;EACA;EACA,YAAY,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;wBCDP,aAAa,OAAO,oCAAiB,IAAA;;;UCnDpC;EACf,SAAS;;;;;;;;;;;wBAYK,eAAe,UAAU,oCAAiB,IAAA;;;;;;;;;;;;;;;;;;;;wBCI1C,WAAW;EAAY;IAAmB;;;;;;;;;;UCZzC;;;;;EAKf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;;;;EASA;;EAEA;;EAEA,QAAQ;;;;;;;;;;;UAYO;EACf,QAAQ,SAAS,iBAAiB,iBAAiB;;EAEnD;;EAEA;;EAEA;;;;;;;;;;;;;KAcU,iBAAiB,SAAS,eAAe;qBAIxC,wCAAsB,SAAA,SAAA,eAAA;;;;;;;;;wBAUnB,qBAAqB;;;;;;;;;;;;UCxEpB;;EAEf;;EAEA;;;;;;;;;;;;;;;;;;;KAoBU,WAAW,SAAS,gBAAgB;qBAInC,iCAAe,SAAA;;;;;;;;wBASZ,cAAc;;;;;;;;;;;;;UCpCb;;EAEf;EACA;EACA;EACA;;EAEA;;;;;;;;;;UAWe;;;;;EAKf;;EAEA,QAAQ;;EAER,WAAW,cAAc;;;;;;;;;KAUf,YAAY,MAAM,MAAM,SAAS,kBAAkB,QAAQ;qBAI1D,kCAAgB,SAAA;;;;;;;;;wBAUb,eAAe;;;;;;;;;;;;;;;;;;;;;UC1Cd;;EAEf;;EAEA,WAAW;;;;;;;;;;;;;EAaX,MAAM,SAAS,aAAa;;EAE5B,WAAW,SAAS;EACpB;;UAGe;;WAEN,SAAS;;WAET;;WAEA,WAAW;WACX;;;;;;;;;;WAUA,YAAY,SAAS;;KAGpB,yBAAyB,OAAO,wBAAwB;qBAIvD,wCAAsB,SAAA;;;;;;;;;wBAUnB,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;UClD3B;WACN;WACA,SAAS;aAAyB;aAAuB;;;UAGnD;;WAEN,YAAY;;WAEZ,SAAS,SAAS;;wBAGb,eAAe,WAAW,UAAU,oBAAoB"}