@reqquest/ui 1.8.1 → 1.10.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.
@@ -0,0 +1,47 @@
1
+ <!--
2
+ @component
3
+ Lays out a prompt's display data as challenge/response rows that align with the
4
+ surrounding prompt list, for prompts that collect several question/answer pairs in a
5
+ single form but should read as individual rows on the review screens. Rows take on
6
+ the same padding and border treatment as the prompt rows around them, so each
7
+ challenge/response is indistinguishable from a standalone prompt.
8
+
9
+ Place this as the root element of a `displayComponent` and register the prompt with
10
+ `displayMode: 'large'`. The full-width answer area becomes a subgrid of the prompt
11
+ list, so rows share the exact column tracks of the real prompt rows around them and
12
+ wrap at the same breakpoints. Fill it with `PromptDisplayRow` children; pass `full`
13
+ on a row to span the entire width.
14
+
15
+ It may also be the root element of a `formComponent` registered with
16
+ `formMode: 'large'`: the reviewer screen's inline edit form is bridged into the same
17
+ subgrid, so rows of field inputs align with the prompt rows too. Rendered anywhere
18
+ without a prompt list around it (the edit modal, applicant pages), the grid falls back
19
+ to laying out its own two columns.
20
+ -->
21
+ <dl class="prompt-display-grid">
22
+ <slot />
23
+ </dl>
24
+
25
+ <style>
26
+ dl.prompt-display-grid {
27
+ display: grid;
28
+ grid-column: 1 / -1;
29
+ /* The review screens set --prompt-display-subgrid: subgrid when this grid is positioned
30
+ to share their prompt-list tracks. Anywhere else (edit modals, applicant pages) it
31
+ lays out its own two columns so full rows and placement still work. */
32
+ grid-template-columns: var(--prompt-display-subgrid, var(--prompt-display-columns, fit-content(50%) minmax(0, 1fr)));
33
+ align-items: stretch;
34
+ row-gap: var(--prompt-display-row-gap, 0);
35
+ margin: 0;
36
+ }
37
+ dl.prompt-display-grid > :global(.prompt-display-challenge),
38
+ dl.prompt-display-grid > :global(.prompt-display-response),
39
+ dl.prompt-display-grid > :global(.prompt-display-full) {
40
+ border-bottom: 1px solid var(--cds-border-subtle);
41
+ padding: var(--prompt-display-row-padding, 1rem 15px);
42
+ }
43
+ dl.prompt-display-grid > :global(.prompt-display-challenge),
44
+ dl.prompt-display-grid > :global(.prompt-display-full) {
45
+ padding-left: calc(var(--prompt-display-challenge-padding-left, 32px) + var(--prompt-display-indent, 0) * var(--prompt-display-indent-size, 1rem));
46
+ }
47
+ </style>
@@ -0,0 +1,45 @@
1
+ export default PromptDisplayGrid;
2
+ type PromptDisplayGrid = SvelteComponent<any, {
3
+ [evt: string]: CustomEvent<any>;
4
+ }, {
5
+ default: {};
6
+ }> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ /**
10
+ * Lays out a prompt's display data as challenge/response rows that align with the
11
+ * surrounding prompt list, for prompts that collect several question/answer pairs in a
12
+ * single form but should read as individual rows on the review screens. Rows take on
13
+ * the same padding and border treatment as the prompt rows around them, so each
14
+ * challenge/response is indistinguishable from a standalone prompt.
15
+ *
16
+ * Place this as the root element of a `displayComponent` and register the prompt with
17
+ * `displayMode: 'large'`. The full-width answer area becomes a subgrid of the prompt
18
+ * list, so rows share the exact column tracks of the real prompt rows around them and
19
+ * wrap at the same breakpoints. Fill it with `PromptDisplayRow` children; pass `full`
20
+ * on a row to span the entire width.
21
+ *
22
+ * It may also be the root element of a `formComponent` registered with
23
+ * `formMode: 'large'`: the reviewer screen's inline edit form is bridged into the same
24
+ * subgrid, so rows of field inputs align with the prompt rows too. Rendered anywhere
25
+ * without a prompt list around it (the edit modal, applicant pages), the grid falls back
26
+ * to laying out its own two columns.
27
+ */
28
+ declare const PromptDisplayGrid: $$__sveltets_2_IsomorphicComponent<any, {
29
+ [evt: string]: CustomEvent<any>;
30
+ }, {
31
+ default: {};
32
+ }, {}, string>;
33
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
34
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
35
+ $$bindings?: Bindings;
36
+ } & Exports;
37
+ (internal: unknown, props: {
38
+ $$events?: Events;
39
+ $$slots?: Slots;
40
+ }): Exports & {
41
+ $set?: any;
42
+ $on?: any;
43
+ };
44
+ z_$$bindings?: Bindings;
45
+ }
@@ -0,0 +1,42 @@
1
+ <!--
2
+ @component
3
+ One challenge/response row inside a `PromptDisplayGrid`. The challenge lands in the
4
+ same column as the prompt titles around it and the response in the answer column.
5
+
6
+ - `challenge` prop or slot for the question, default slot for the answer.
7
+ - `full` spans the entire grid width instead, for content that needs the whole row
8
+ (documents, notes, notifications).
9
+ - `indentLevel` indents the challenge (or full-row content) to suggest hierarchy,
10
+ e.g. follow-up questions under a parent question.
11
+ -->
12
+ <script lang="ts">
13
+ /** The question being answered. Use the `challenge` slot instead if you need markup. */
14
+ export let challenge: string | undefined = undefined
15
+ /** Span the full width of the grid instead of splitting into challenge/response. */
16
+ export let full = false
17
+ /**
18
+ * Indent the challenge (or full-row content) by this multiple of a small indent unit
19
+ * (1rem per level, tunable with --prompt-display-indent-size). Default 0.
20
+ */
21
+ export let indentLevel = 0
22
+ </script>
23
+
24
+ {#if full}
25
+ <div class="prompt-display-full" style:--prompt-display-indent={indentLevel || undefined}><slot /></div>
26
+ {:else}
27
+ <dt class="prompt-display-challenge" style:--prompt-display-indent={indentLevel || undefined}><slot name="challenge">{challenge}</slot></dt>
28
+ <dd class="prompt-display-response"><slot /></dd>
29
+ {/if}
30
+
31
+ <style>
32
+ dt.prompt-display-challenge {
33
+ grid-column: 1;
34
+ }
35
+ dd.prompt-display-response {
36
+ grid-column: 2;
37
+ margin: 0;
38
+ }
39
+ div.prompt-display-full {
40
+ grid-column: 1 / -1;
41
+ }
42
+ </style>
@@ -0,0 +1,46 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: Props & {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
15
+ default: any;
16
+ } ? Props extends Record<string, never> ? any : {
17
+ children?: any;
18
+ } : {});
19
+ /**
20
+ * One challenge/response row inside a `PromptDisplayGrid`. The challenge lands in the
21
+ * same column as the prompt titles around it and the response in the answer column.
22
+ *
23
+ * - `challenge` prop or slot for the question, default slot for the answer.
24
+ * - `full` spans the entire grid width instead, for content that needs the whole row
25
+ * (documents, notes, notifications).
26
+ * - `indentLevel` indents the challenge (or full-row content) to suggest hierarchy,
27
+ * e.g. follow-up questions under a parent question.
28
+ */
29
+ declare const PromptDisplayRow: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
30
+ /** The question being answered. Use the `challenge` slot instead if you need markup. */ challenge?: string | undefined;
31
+ /** Span the full width of the grid instead of splitting into challenge/response. */ full?: boolean;
32
+ /**
33
+ * Indent the challenge (or full-row content) by this multiple of a small indent unit
34
+ * (1rem per level, tunable with --prompt-display-indent-size). Default 0.
35
+ */ indentLevel?: number;
36
+ }, {
37
+ default: {};
38
+ challenge: {};
39
+ }>, {
40
+ [evt: string]: CustomEvent<any>;
41
+ }, {
42
+ default: {};
43
+ challenge: {};
44
+ }, {}, string>;
45
+ type PromptDisplayRow = InstanceType<typeof PromptDisplayRow>;
46
+ export default PromptDisplayRow;
@@ -2,4 +2,6 @@ export { default as CommentCard } from './CommentCard.svelte';
2
2
  export { default as FieldCardCheckbox } from './FieldCardCheckbox.svelte';
3
3
  export { default as FieldCardRadio } from './FieldCardRadio.svelte';
4
4
  export { default as InfoCard } from './InfoCard.svelte';
5
+ export { default as PromptDisplayGrid } from './PromptDisplayGrid.svelte';
6
+ export { default as PromptDisplayRow } from './PromptDisplayRow.svelte';
5
7
  export { default as QuestionnairePrompt } from './QuestionnairePrompt.svelte';
@@ -2,4 +2,6 @@ export { default as CommentCard } from './CommentCard.svelte';
2
2
  export { default as FieldCardCheckbox } from './FieldCardCheckbox.svelte';
3
3
  export { default as FieldCardRadio } from './FieldCardRadio.svelte';
4
4
  export { default as InfoCard } from './InfoCard.svelte';
5
+ export { default as PromptDisplayGrid } from './PromptDisplayGrid.svelte';
6
+ export { default as PromptDisplayRow } from './PromptDisplayRow.svelte';
5
7
  export { default as QuestionnairePrompt } from './QuestionnairePrompt.svelte';
@@ -86,6 +86,10 @@ export interface PromptDefinition {
86
86
  *
87
87
  * There is no 'full' mode for displayComponent, since we always want to be able to print the
88
88
  * full information dump on a one-pager.
89
+ *
90
+ * If your prompt collects several question/answer pairs that should each read as their own
91
+ * row in the prompt list, set 'large' and build the displayComponent on `PromptDisplayGrid` /
92
+ * `PromptDisplayRow` — its rows will align with the surrounding prompt rows.
89
93
  */
90
94
  displayMode?: 'small' | 'large';
91
95
  /**
@@ -271,12 +271,16 @@ export type AppRequestPhase = 'ACCEPTANCE' | 'COMPLETE' | 'STARTED' | 'SUBMITTED
271
271
  * the database and the status of each application.
272
272
  *
273
273
  */
274
- export type AppRequestStatus = 'ACCEPTANCE' | 'ACCEPTED' | 'APPROVAL' | 'APPROVED' | 'CANCELLED' | 'DISQUALIFIED' | 'NOT_ACCEPTED' | 'NOT_APPROVED' | 'PREAPPROVAL' | 'READY_TO_ACCEPT' | 'READY_TO_SUBMIT' | 'REVIEW_IN_PROGRESS' | 'REVIEW_COMPLETE' | 'STARTED' | 'WITHDRAWN';
274
+ export type AppRequestStatus = 'ACCEPTANCE' | 'ACCEPTED' | 'APPROVAL' | 'APPROVED' | 'CANCELLED' | 'DISQUALIFIED' | 'NOT_ACCEPTED' | 'NOT_APPROVED' | 'PREAPPROVAL' | 'READY_TO_ACCEPT' | 'READY_TO_SUBMIT' | 'REVIEW_COMPLETE' | 'REVIEW_IN_PROGRESS' | 'STARTED' | 'WITHDRAWN';
275
275
  /** An application represents the applicant applying to a specific program. Each appRequest has multiple applications - one per program defined in the system. Some applications are mutually exclusive and/or will be eliminated early based on PREQUAL requirements, but they all technically exist in the data model - there is no concept of picking one application over another, just two applications where one dies and the other survives. */
276
276
  export interface Application {
277
277
  actions: ApplicationActions;
278
+ /** A brief description, written for applicants, of the program this application is for. */
279
+ applicantDescription: (Scalars['String'] | null);
278
280
  /** True when at least one reachable prompt on this application has been invalidated and must be re-answered. Status is still computed from the answers on file, so pair status displays with this flag to indicate that a correction is outstanding. */
279
281
  awaitingCorrection: Scalars['Boolean'];
282
+ /** A prose summary of the applicant-side requirements of the program this application is for. Intended to be shown alongside statusReason when the application becomes ineligible before submission, since an applicant disqualified early may never have seen the program's prompts and the statusReason alone lacks context. */
283
+ eligibilityDescription: (Scalars['String'] | null);
280
284
  id: Scalars['ID'];
281
285
  /** The phase in which this application became ineligible for benefits. Useful for reporting / filtering. Null if the application is not (yet) ineligible. */
282
286
  ineligiblePhase: (IneligiblePhases | null);
@@ -453,7 +457,7 @@ export interface Mutation {
453
457
  acceptOffer: ValidatedAppRequestResponse;
454
458
  /** Add a note to the app request. */
455
459
  addNote: ValidatedNoteResponse;
456
- /** Moves the application to the next workflow stage. If phase is READY_FOR_WORKFLOW, moves to the first or next blocking workflow stage. If on the last blocking workflow, moves to REVIEW_COMPLETE. If on the last non-blocking workflow, moves the application to COMPLETE. If all applications are COMPLETE, automatically triggers the app request close mutation. */
460
+ /** Moves the application to the next blocking workflow stage. If phase is READY_FOR_WORKFLOW, moves to the first or next blocking workflow stage. If on the last blocking workflow, moves to REVIEW_COMPLETE. In the non-blocking (WORKFLOW_NONBLOCKING) phase the workflow is non-sequential with all non-blocking requirements editable at once and once they are all resolved this becomes a single "Send to Complete" action that moves the application to COMPLETE. */
457
461
  advanceWorkflow: ValidatedAppRequestResponse;
458
462
  /** Cancel or withdraw the app request, depending on its current phase. This is only available if the app request is in a cancellable state. */
459
463
  cancelAppRequest: ValidatedAppRequestResponse;
@@ -480,7 +484,7 @@ export interface Mutation {
480
484
  returnToOffer: ValidatedAppRequestResponse;
481
485
  /** Return the app request to the review phase from acceptance, non-blocking workflow, or completion. */
482
486
  returnToReview: ValidatedAppRequestResponse;
483
- /** Moves the application back to the previous workflow stage. If on the first blocking workflow stage, moves back to APPROVAL. If on the first non-blocking workflow, throws an error. */
487
+ /** Moves the application back to the previous blocking workflow stage. Non-blocking workflow stages are excluded from the reverse order, so this only steps back through the blocking workflow during the review (SUBMITTED) phase. If no blocking then moved to APPROVAL */
484
488
  reverseWorkflow: ValidatedAppRequestResponse;
485
489
  roleAddGrant: AccessRoleValidatedResponse;
486
490
  roleCreate: AccessRoleValidatedResponse;
@@ -582,6 +586,10 @@ export interface PeriodActions {
582
586
  }
583
587
  export interface PeriodProgram {
584
588
  actions: PeriodProgramActions;
589
+ /** A brief description of the program, written for applicants. */
590
+ applicantDescription: (Scalars['String'] | null);
591
+ /** A prose summary of the applicant-side requirements of the program. Intended to be shown to applicants who become ineligible before submission, since they may never have seen the program's prompts. */
592
+ eligibilityDescription: (Scalars['String'] | null);
585
593
  /** Whether the program is enabled in this period. This is set by the system administrator. */
586
594
  enabled: Scalars['Boolean'];
587
595
  key: Scalars['ID'];
@@ -637,6 +645,10 @@ export interface PeriodWorkflowStage {
637
645
  __typename: 'PeriodWorkflowStage';
638
646
  }
639
647
  export interface Program {
648
+ /** A brief description of the program, written for applicants. */
649
+ applicantDescription: (Scalars['String'] | null);
650
+ /** A prose summary of the applicant-side requirements of the program. Intended to be shown to applicants who become ineligible before submission, since they may never have seen the program's prompts. */
651
+ eligibilityDescription: (Scalars['String'] | null);
640
652
  key: Scalars['ID'];
641
653
  navTitle: Scalars['String'];
642
654
  title: Scalars['String'];
@@ -1107,6 +1119,8 @@ export interface AppRequestActivityFilters {
1107
1119
  impersonatedBy?: (Scalars['ID'][] | null);
1108
1120
  /** Return activities that were performed while one of the given logins was being impersonated by someone else. */
1109
1121
  impersonatedUsers?: (Scalars['ID'][] | null);
1122
+ /** Filter activities by matching description content. */
1123
+ search?: (Scalars['String'] | null);
1110
1124
  /** Return activities that were performed by one of the given logins. Also returns activities that were performed while one of the given logins was impersonating someone else. */
1111
1125
  users?: (Scalars['ID'][] | null);
1112
1126
  }
@@ -1180,8 +1194,12 @@ export interface AppRequestNoteFilters {
1180
1194
  /** An application represents the applicant applying to a specific program. Each appRequest has multiple applications - one per program defined in the system. Some applications are mutually exclusive and/or will be eliminated early based on PREQUAL requirements, but they all technically exist in the data model - there is no concept of picking one application over another, just two applications where one dies and the other survives. */
1181
1195
  export interface ApplicationGenqlSelection {
1182
1196
  actions?: ApplicationActionsGenqlSelection;
1197
+ /** A brief description, written for applicants, of the program this application is for. */
1198
+ applicantDescription?: boolean | number;
1183
1199
  /** True when at least one reachable prompt on this application has been invalidated and must be re-answered. Status is still computed from the answers on file, so pair status displays with this flag to indicate that a correction is outstanding. */
1184
1200
  awaitingCorrection?: boolean | number;
1201
+ /** A prose summary of the applicant-side requirements of the program this application is for. Intended to be shown alongside statusReason when the application becomes ineligible before submission, since an applicant disqualified early may never have seen the program's prompts and the statusReason alone lacks context. */
1202
+ eligibilityDescription?: boolean | number;
1185
1203
  id?: boolean | number;
1186
1204
  /** The phase in which this application became ineligible for benefits. Useful for reporting / filtering. Null if the application is not (yet) ineligible. */
1187
1205
  ineligiblePhase?: boolean | number;
@@ -1421,7 +1439,7 @@ export interface MutationGenqlSelection {
1421
1439
  validateOnly?: (Scalars['Boolean'] | null);
1422
1440
  };
1423
1441
  });
1424
- /** Moves the application to the next workflow stage. If phase is READY_FOR_WORKFLOW, moves to the first or next blocking workflow stage. If on the last blocking workflow, moves to REVIEW_COMPLETE. If on the last non-blocking workflow, moves the application to COMPLETE. If all applications are COMPLETE, automatically triggers the app request close mutation. */
1442
+ /** Moves the application to the next blocking workflow stage. If phase is READY_FOR_WORKFLOW, moves to the first or next blocking workflow stage. If on the last blocking workflow, moves to REVIEW_COMPLETE. In the non-blocking (WORKFLOW_NONBLOCKING) phase the workflow is non-sequential with all non-blocking requirements editable at once and once they are all resolved this becomes a single "Send to Complete" action that moves the application to COMPLETE. */
1425
1443
  advanceWorkflow?: (ValidatedAppRequestResponseGenqlSelection & {
1426
1444
  __args: {
1427
1445
  applicationId: Scalars['ID'];
@@ -1515,7 +1533,7 @@ export interface MutationGenqlSelection {
1515
1533
  appRequestId: Scalars['ID'];
1516
1534
  };
1517
1535
  });
1518
- /** Moves the application back to the previous workflow stage. If on the first blocking workflow stage, moves back to APPROVAL. If on the first non-blocking workflow, throws an error. */
1536
+ /** Moves the application back to the previous blocking workflow stage. Non-blocking workflow stages are excluded from the reverse order, so this only steps back through the blocking workflow during the review (SUBMITTED) phase. If no blocking then moved to APPROVAL */
1519
1537
  reverseWorkflow?: (ValidatedAppRequestResponseGenqlSelection & {
1520
1538
  __args: {
1521
1539
  applicationId: Scalars['ID'];
@@ -1732,6 +1750,10 @@ export interface PeriodFilters {
1732
1750
  }
1733
1751
  export interface PeriodProgramGenqlSelection {
1734
1752
  actions?: PeriodProgramActionsGenqlSelection;
1753
+ /** A brief description of the program, written for applicants. */
1754
+ applicantDescription?: boolean | number;
1755
+ /** A prose summary of the applicant-side requirements of the program. Intended to be shown to applicants who become ineligible before submission, since they may never have seen the program's prompts. */
1756
+ eligibilityDescription?: boolean | number;
1735
1757
  /** Whether the program is enabled in this period. This is set by the system administrator. */
1736
1758
  enabled?: boolean | number;
1737
1759
  key?: boolean | number;
@@ -1799,6 +1821,10 @@ export interface PeriodWorkflowStageGenqlSelection {
1799
1821
  __scalar?: boolean | number;
1800
1822
  }
1801
1823
  export interface ProgramGenqlSelection {
1824
+ /** A brief description of the program, written for applicants. */
1825
+ applicantDescription?: boolean | number;
1826
+ /** A prose summary of the applicant-side requirements of the program. Intended to be shown to applicants who become ineligible before submission, since they may never have seen the program's prompts. */
1827
+ eligibilityDescription?: boolean | number;
1802
1828
  key?: boolean | number;
1803
1829
  navTitle?: boolean | number;
1804
1830
  title?: boolean | number;
@@ -486,6 +486,9 @@ input AppRequestActivityFilters {
486
486
  """
487
487
  impersonatedUsers: [ID!]
488
488
 
489
+ """Filter activities by matching description content."""
490
+ search: String
491
+
489
492
  """
490
493
  Return activities that were performed by one of the given logins. Also returns activities that were performed while one of the given logins was impersonating someone else.
491
494
  """
@@ -726,6 +729,11 @@ enum AppRequestStatus {
726
729
  """
727
730
  REVIEW_COMPLETE
728
731
 
732
+ """
733
+ A reviewer has begun their part on at least one application, some APPROVAL requirement prompt data has been input, but application has not finished review yet.
734
+ """
735
+ REVIEW_IN_PROGRESS
736
+
729
737
  """Applicant has begun the process and has not yet submitted."""
730
738
  STARTED
731
739
 
@@ -741,10 +749,20 @@ An application represents the applicant applying to a specific program. Each app
741
749
  type Application {
742
750
  actions: ApplicationActions!
743
751
 
752
+ """
753
+ A brief description, written for applicants, of the program this application is for.
754
+ """
755
+ applicantDescription: String
756
+
744
757
  """
745
758
  True when at least one reachable prompt on this application has been invalidated and must be re-answered. Status is still computed from the answers on file, so pair status displays with this flag to indicate that a correction is outstanding.
746
759
  """
747
760
  awaitingCorrection: Boolean!
761
+
762
+ """
763
+ A prose summary of the applicant-side requirements of the program this application is for. Intended to be shown alongside statusReason when the application becomes ineligible before submission, since an applicant disqualified early may never have seen the program's prompts and the statusReason alone lacks context.
764
+ """
765
+ eligibilityDescription: String
748
766
  id: ID!
749
767
 
750
768
  """
@@ -847,7 +865,7 @@ enum ApplicationPhase {
847
865
  ACCEPTANCE
848
866
 
849
867
  """
850
- The applicant has submitted the application and any PREAPPROVAL requirements are passing. The application is under review.
868
+ The applicant has submitted the application and any PREAPPROVAL requirements are passing. The application is pending review.
851
869
  """
852
870
  APPROVAL
853
871
 
@@ -892,10 +910,15 @@ enum ApplicationPhase {
892
910
  READY_TO_SUBMIT
893
911
 
894
912
  """
895
- The application has been reviewed and any blocking workflow stages have been completed. The application is ready for results (whether eligible or not) to be released to the applicant. A reviewer must manually advanced the phase, and will do so for the whole appRequest, not one application at a time. So the application will sit in this state until all applications are REVIEW_COMPLETE. If there is no acceptance phase (because there are no acceptance requirements), or if the application is not eligible, the makeOffer prompt will move the phase to WORKFLOW_NONBLOCKING or COMPLETE.
913
+ The application has been reviewed and any blocking workflow stages have been completed. Its results (whether eligible or not) are released to the applicant as soon as it reaches this phase - the eligibility decision no longer waits for the appRequest Complete Review. A reviewer must still manually advance the appRequest phase, so the application will sit in this state until all applications are REVIEW_COMPLETE and the reviewer completes the review. If there is no acceptance phase, or if the application is not eligible, the makeOffer prompt will move the phase to WORKFLOW_NONBLOCKING or COMPLETE.
896
914
  """
897
915
  REVIEW_COMPLETE
898
916
 
917
+ """
918
+ The review for this application is currently in progress (some APPROVAL requirement prompt data has been input)
919
+ """
920
+ REVIEW_IN_PROGRESS
921
+
899
922
  """
900
923
  The application review has been completed and now there is a workflow process to audit the review BEFORE marking the application status as eligible or ineligible. It should remain pending until the blocking workflow stages have been completed. Workflow stages that evaluate to INELIGIBLE will also make the application status INELIGIBLE. Prompts from the applicant and review phases are locked.
901
924
  """
@@ -1223,7 +1246,7 @@ type Mutation {
1223
1246
  ): ValidatedNoteResponse!
1224
1247
 
1225
1248
  """
1226
- Moves the application to the next workflow stage. If phase is READY_FOR_WORKFLOW, moves to the first or next blocking workflow stage. If on the last blocking workflow, moves to REVIEW_COMPLETE. If on the last non-blocking workflow, moves the application to COMPLETE. If all applications are COMPLETE, automatically triggers the app request close mutation.
1249
+ Moves the application to the next blocking workflow stage. If phase is READY_FOR_WORKFLOW, moves to the first or next blocking workflow stage. If on the last blocking workflow, moves to REVIEW_COMPLETE. In the non-blocking (WORKFLOW_NONBLOCKING) phase the workflow is non-sequential with all non-blocking requirements editable at once and once they are all resolved this becomes a single "Send to Complete" action that moves the application to COMPLETE.
1227
1250
  """
1228
1251
  advanceWorkflow(applicationId: ID!): ValidatedAppRequestResponse!
1229
1252
 
@@ -1287,7 +1310,7 @@ type Mutation {
1287
1310
  returnToReview(appRequestId: ID!): ValidatedAppRequestResponse!
1288
1311
 
1289
1312
  """
1290
- Moves the application back to the previous workflow stage. If on the first blocking workflow stage, moves back to APPROVAL. If on the first non-blocking workflow, throws an error.
1313
+ Moves the application back to the previous blocking workflow stage. Non-blocking workflow stages are excluded from the reverse order, so this only steps back through the blocking workflow during the review (SUBMITTED) phase. If no blocking then moved to APPROVAL
1291
1314
  """
1292
1315
  reverseWorkflow(applicationId: ID!): ValidatedAppRequestResponse!
1293
1316
  roleAddGrant(grant: AccessRoleGrantCreate!, roleId: ID!, validateOnly: Boolean): AccessRoleValidatedResponse!
@@ -1505,6 +1528,14 @@ input PeriodFilters {
1505
1528
  type PeriodProgram {
1506
1529
  actions: PeriodProgramActions!
1507
1530
 
1531
+ """A brief description of the program, written for applicants."""
1532
+ applicantDescription: String
1533
+
1534
+ """
1535
+ A prose summary of the applicant-side requirements of the program. Intended to be shown to applicants who become ineligible before submission, since they may never have seen the program's prompts.
1536
+ """
1537
+ eligibilityDescription: String
1538
+
1508
1539
  """
1509
1540
  Whether the program is enabled in this period. This is set by the system administrator.
1510
1541
  """
@@ -1606,6 +1637,13 @@ type PeriodWorkflowStage {
1606
1637
  }
1607
1638
 
1608
1639
  type Program {
1640
+ """A brief description of the program, written for applicants."""
1641
+ applicantDescription: String
1642
+
1643
+ """
1644
+ A prose summary of the applicant-side requirements of the program. Intended to be shown to applicants who become ineligible before submission, since they may never have seen the program's prompts.
1645
+ """
1646
+ eligibilityDescription: String
1609
1647
  key: ID!
1610
1648
  navTitle: String!
1611
1649
  title: String!
@@ -230,6 +230,7 @@ declare const _default: {
230
230
  impersonated: number[];
231
231
  impersonatedBy: number[];
232
232
  impersonatedUsers: number[];
233
+ search: number[];
233
234
  users: number[];
234
235
  __typename: number[];
235
236
  };
@@ -281,7 +282,9 @@ declare const _default: {
281
282
  AppRequestStatus: {};
282
283
  Application: {
283
284
  actions: number[];
285
+ applicantDescription: number[];
284
286
  awaitingCorrection: number[];
287
+ eligibilityDescription: number[];
285
288
  id: number[];
286
289
  ineligiblePhase: number[];
287
290
  navTitle: number[];
@@ -647,6 +650,8 @@ declare const _default: {
647
650
  };
648
651
  PeriodProgram: {
649
652
  actions: number[];
653
+ applicantDescription: number[];
654
+ eligibilityDescription: number[];
650
655
  enabled: number[];
651
656
  key: number[];
652
657
  navTitle: number[];
@@ -694,6 +699,8 @@ declare const _default: {
694
699
  __typename: number[];
695
700
  };
696
701
  Program: {
702
+ applicantDescription: number[];
703
+ eligibilityDescription: number[];
697
704
  key: number[];
698
705
  navTitle: number[];
699
706
  title: number[];
@@ -600,6 +600,9 @@ export default {
600
600
  "impersonatedUsers": [
601
601
  49
602
602
  ],
603
+ "search": [
604
+ 85
605
+ ],
603
606
  "users": [
604
607
  49
605
608
  ],
@@ -727,9 +730,15 @@ export default {
727
730
  "actions": [
728
731
  34
729
732
  ],
733
+ "applicantDescription": [
734
+ 85
735
+ ],
730
736
  "awaitingCorrection": [
731
737
  41
732
738
  ],
739
+ "eligibilityDescription": [
740
+ 85
741
+ ],
733
742
  "id": [
734
743
  49
735
744
  ],
@@ -1710,6 +1719,12 @@ export default {
1710
1719
  "actions": [
1711
1720
  70
1712
1721
  ],
1722
+ "applicantDescription": [
1723
+ 85
1724
+ ],
1725
+ "eligibilityDescription": [
1726
+ 85
1727
+ ],
1713
1728
  "enabled": [
1714
1729
  41
1715
1730
  ],
@@ -1827,6 +1842,12 @@ export default {
1827
1842
  ]
1828
1843
  },
1829
1844
  "Program": {
1845
+ "applicantDescription": [
1846
+ 85
1847
+ ],
1848
+ "eligibilityDescription": [
1849
+ 85
1850
+ ],
1830
1851
  "key": [
1831
1852
  49
1832
1853
  ],
package/dist/types.d.ts CHANGED
@@ -43,6 +43,8 @@ export interface AppRequestForDetails {
43
43
  export interface ApplicationForDetails {
44
44
  id: string;
45
45
  title: string;
46
+ applicantDescription?: string | null;
47
+ eligibilityDescription?: string | null;
46
48
  ineligiblePhase: IneligiblePhases | null;
47
49
  status: ApplicationStatus;
48
50
  statusReason?: string | null;
package/package.json CHANGED
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "name": "@reqquest/ui",
3
- "version": "1.8.1",
3
+ "version": "1.10.0",
4
+ "overrides": {
5
+ "esrap": "2.3.2"
6
+ },
4
7
  "exports": {
5
8
  ".": {
6
9
  "types": "./dist/index.d.ts",