CMS / foldkit-cms

EditorForm

interface · packages/cms/src/editor.ts:127

interface EditorForm<
  FormModel,
  FormMessage,
  Value,
  Resources = {},
  Services = never,
> {
  readonly name: string
  readonly input: {
    readonly schema: Schema.Struct<any>
  }
  readonly bundle: {
    readonly Model: Schema.Codec<FormModel, unknown>
    readonly Message: Schema.Codec<FormMessage, unknown>
    readonly update: (
      model: FormModel,
      message: FormMessage,
      args: void,
    ) => Update.ReturnWithOutMessage<
      FormModel,
      FormMessage,
      Submitted<Value>,
      Services
    >
    readonly subscriptions?: (
      args: void,
    ) => Subscription.Subscriptions<FormModel, FormMessage, Services>
    readonly resources?: (args: void) => Resources
  }
  readonly Message: {
    readonly Submitted: () => FormMessage
    readonly Refused: (payload: {
      readonly key: never
      readonly error: string
    }) => FormMessage
    readonly About: (payload: {
      readonly subject: Readonly<Record<string, string>>
    }) => FormMessage
  }
  readonly initial: FormModel
  readonly fill: (
    model: FormModel,
    values: Partial<Value>,
  ) => {
    readonly model: FormModel
  }
  readonly partial: (model: FormModel) => Partial<Value>
  readonly settled: (model: FormModel) => FormModel
  readonly subject: (model: FormModel) => Readonly<Record<string, string>>
  authoredChanged(before: FormModel, after: FormModel): boolean
  readonly engine: {
    readonly isValidating: (model: FormModel) => boolean
  }
  readonly field: (
    model: FormModel,
    key: never,
  ) => FieldValidation.Field<unknown>
}

Services is what the form's Commands and Subscriptions require, which the editor's then do.

Members

EditorForm.name

property · packages/cms/src/editor.ts:128

readonly name: string

EditorForm.input

property · packages/cms/src/editor.ts:129

readonly input: {
  readonly schema: Schema.Struct<any>
}

EditorForm.bundle

property · packages/cms/src/editor.ts:130

readonly bundle: {
  readonly Model: Schema.Codec<FormModel, unknown>
  readonly Message: Schema.Codec<FormMessage, unknown>
  readonly update: (
    model: FormModel,
    message: FormMessage,
    args: void,
  ) => Update.ReturnWithOutMessage<
    FormModel,
    FormMessage,
    Submitted<Value>,
    Services
  >
  readonly subscriptions?: (
    args: void,
  ) => Subscription.Subscriptions<FormModel, FormMessage, Services>
  readonly resources?: (args: void) => Resources
}

EditorForm.Message

property · packages/cms/src/editor.ts:145

readonly Message: {
  readonly Submitted: () => FormMessage
  readonly Refused: (payload: {
    readonly key: never
    readonly error: string
  }) => FormMessage
  readonly About: (payload: {
    readonly subject: Readonly<Record<string, string>>
  }) => FormMessage
}

EditorForm.initial

property · packages/cms/src/editor.ts:150

readonly initial: FormModel

EditorForm.fill

property · packages/cms/src/editor.ts:151

readonly fill: (
  model: FormModel,
  values: Partial<Value>,
) => {
  readonly model: FormModel
}

EditorForm.partial

property · packages/cms/src/editor.ts:152

readonly partial: (model: FormModel) => Partial<Value>

EditorForm.settled

property · packages/cms/src/editor.ts:153

readonly settled: (model: FormModel) => FormModel

EditorForm.subject

property · packages/cms/src/editor.ts:155

readonly subject: (model: FormModel) => Readonly<Record<string, string>>

What the form is editing; {} while it creates. See Form.FormModel.subject.

EditorForm.authoredChanged

method · packages/cms/src/editor.ts:162

authoredChanged(before: FormModel, after: FormModel): boolean

Whether a completed transition changed authored content (§45). The editor asks this instead of recognizing the form's Message tags, so a control it does not know about — a Bundle-backed one, a stateful one — autosaves the same way a text field does, and a blur or a refused edit does not.

EditorForm.engine

property · packages/cms/src/editor.ts:164

readonly engine: {
  readonly isValidating: (model: FormModel) => boolean
}

Whether a check is still running, which a submit waits for.

EditorForm.field

property · packages/cms/src/editor.ts:165

readonly field: (
  model: FormModel,
  key: never,
) => FieldValidation.Field<unknown>