DocsAPI referenceUI machinesquestionnaire

questionnaire machine

The public state machine contract for @grassroot/ui-machines/questionnaire. The machine owns behaviour; the matching headless layer owns composition.

@grassroot/ui-machines/questionnaire

Package

13 exports
View source packages/ui-machines/src/questionnaire/index.ts

Service example

questionnaire.tsts
import { createService } from "@grassroot/statechart";
import { questionnaireMachine } from "@grassroot/ui-machines/questionnaire";
const service = createService(questionnaireMachine, { input: {} });
service.start();
service.send({ type: "…" });
service.stop();

Exports

DeclarationView source
QuestionnaireAnswerts
type QuestionnaireAnswer = {
readonly name: string;
readonly values: readonly string[];
readonly skipped?: boolean;
};
Name
Kind
Type
Requirement
name
property
string
required
skipped
property
boolean
optional
values
property
readonly string[]
required
Name
name
Kind
property
Type
string
Requirement
required
Name
skipped
Kind
property
Type
boolean
Requirement
optional
Name
values
Kind
property
Type
readonly string[]
Requirement
required
DeclarationView source
QuestionnaireChoicets
type QuestionnaireChoice = {
readonly value: string;
readonly disabled?: boolean;
};
Name
Kind
Type
Requirement
disabled
property
boolean
optional
value
property
string
required
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Name
value
Kind
property
Type
string
Requirement
required
DeclarationView source
QuestionnaireCommandts
type QuestionnaireCommand = CommandObject & ({
readonly type: "ITEM_CHANGE_REQUEST";
readonly item: string;
readonly reason: QuestionnaireReason;
} | {
readonly type: "ANSWERS_CHANGE_REQUEST";
readonly answers: readonly QuestionnaireAnswer[];
readonly reason: QuestionnaireReason;
} | {
readonly type: "SUBMIT_REQUEST";
readonly answers: readonly QuestionnaireAnswer[];
readonly reason: QuestionnaireReason;
});
DeclarationView source
QuestionnaireContextts
type QuestionnaireContext = {
readonly item?: string;
readonly answers: readonly QuestionnaireAnswer[];
readonly itemMode: BindingMode;
readonly answersMode: BindingMode;
};
Name
Kind
Type
Requirement
answers
property
readonly QuestionnaireAnswer[]
required
answersMode
property
BindingMode
required
item
property
string
optional
itemMode
property
BindingMode
required
Name
answers
Kind
property
Type
readonly QuestionnaireAnswer[]
Requirement
required
Name
answersMode
Kind
property
Type
BindingMode
Requirement
required
Name
item
Kind
property
Type
string
Requirement
optional
Name
itemMode
Kind
property
Type
BindingMode
Requirement
required
DeclarationView source
QuestionnaireDiagnosticCodests
export declare const QuestionnaireDiagnosticCodes: readonly DiagnosticCatalogueEntry[];
DeclarationView source
QuestionnaireEventts
type QuestionnaireEvent = {
readonly type: "GO_TO";
readonly item: string;
readonly reason: QuestionnaireReason;
} | {
readonly type: "SET_ANSWER";
readonly name: string;
readonly values: readonly string[];
readonly reason: QuestionnaireReason;
} | {
readonly type: "TOGGLE_CHOICE";
readonly name: string;
readonly value: string;
readonly reason: QuestionnaireReason;
} | {
readonly type: "NEXT";
readonly reason: QuestionnaireReason;
} | {
readonly type: "PREVIOUS";
readonly reason: QuestionnaireReason;
} | {
readonly type: "SKIP";
readonly reason: QuestionnaireReason;
} | {
readonly type: "SUBMIT";
readonly reason: QuestionnaireReason;
} | {
readonly type: "RESET";
};
DeclarationView source
QuestionnaireInputts
type QuestionnaireInput = {
readonly items: readonly QuestionnaireItem[];
readonly item?: string;
readonly defaultItem?: string;
readonly answers?: readonly QuestionnaireAnswer[];
readonly defaultAnswers?: readonly QuestionnaireAnswer[];
readonly shortcuts?: "letters" | "numbers";
};
Name
Kind
Type
Requirement
answers
property
readonly QuestionnaireAnswer[]
optional
defaultAnswers
property
readonly QuestionnaireAnswer[]
optional
defaultItem
property
string
optional
item
property
string
optional
items
property
readonly QuestionnaireItem[]
required
shortcuts
property
"letters" | "numbers"
optional
Name
answers
Kind
property
Type
readonly QuestionnaireAnswer[]
Requirement
optional
Name
defaultAnswers
Kind
property
Type
readonly QuestionnaireAnswer[]
Requirement
optional
Name
defaultItem
Kind
property
Type
string
Requirement
optional
Name
item
Kind
property
Type
string
Requirement
optional
Name
items
Kind
property
Type
readonly QuestionnaireItem[]
Requirement
required
Name
shortcuts
Kind
property
Type
"letters" | "numbers"
Requirement
optional
DeclarationView source
QuestionnaireItemts
type QuestionnaireItem = {
readonly name: string;
readonly choices?: readonly QuestionnaireChoice[];
readonly multiple?: boolean;
readonly required?: boolean;
readonly disabled?: boolean;
readonly skippable?: boolean;
};
Name
Kind
Type
Requirement
choices
property
readonly QuestionnaireChoice[]
optional
disabled
property
boolean
optional
multiple
property
boolean
optional
name
property
string
required
required
property
boolean
optional
skippable
property
boolean
optional
Name
choices
Kind
property
Type
readonly QuestionnaireChoice[]
Requirement
optional
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Name
multiple
Kind
property
Type
boolean
Requirement
optional
Name
name
Kind
property
Type
string
Requirement
required
Name
required
Kind
property
Type
boolean
Requirement
optional
Name
skippable
Kind
property
Type
boolean
Requirement
optional
DeclarationView source
questionnaireMachinets
export declare const questionnaireMachine: Machine<QuestionnaireInput, "ready", QuestionnaireContext, QuestionnaireEvent, QuestionnaireCommand>;
DeclarationView source
QuestionnaireReasonts
type QuestionnaireReason = "pointer" | "keyboard" | "programmatic";
DeclarationView source
questionnaireReplaySequencets
export declare const questionnaireReplaySequence: readonly QuestionnaireEvent[];
DeclarationView source
questionnaireSelectorsts
export declare const questionnaireSelectors: {
item: (snapshot: QuestionnaireSnapshot) => string | undefined;
answers: (snapshot: QuestionnaireSnapshot) => readonly QuestionnaireAnswer[];
};
Name
Kind
Type
Requirement
answers
property
(snapshot: QuestionnaireSnapshot) => readonly QuestionnaireAnswer[]
required
item
property
(snapshot: QuestionnaireSnapshot) => string | undefined
required
Name
answers
Kind
property
Type
(snapshot: QuestionnaireSnapshot) => readonly QuestionnaireAnswer[]
Requirement
required
Name
item
Kind
property
Type
(snapshot: QuestionnaireSnapshot) => string | undefined
Requirement
required
DeclarationView source
QuestionnaireSnapshotts
type QuestionnaireSnapshot = Snapshot<"ready", QuestionnaireContext>;