@reqquest/ui 1.8.1 → 1.9.1
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/components/PromptDisplayGrid.svelte +47 -0
- package/dist/components/PromptDisplayGrid.svelte.d.ts +45 -0
- package/dist/components/PromptDisplayRow.svelte +42 -0
- package/dist/components/PromptDisplayRow.svelte.d.ts +46 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +2 -0
- package/dist/registry.d.ts +4 -0
- package/dist/typed-client/schema.d.ts +7 -5
- package/dist/typed-client/schema.graphql +17 -4
- package/dist/typed-client/types.d.ts +1 -0
- package/dist/typed-client/types.js +3 -0
- package/package.json +4 -1
|
@@ -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';
|
package/dist/components/index.js
CHANGED
|
@@ -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';
|
package/dist/registry.d.ts
CHANGED
|
@@ -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,7 +271,7 @@ 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' | '
|
|
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;
|
|
@@ -453,7 +453,7 @@ export interface Mutation {
|
|
|
453
453
|
acceptOffer: ValidatedAppRequestResponse;
|
|
454
454
|
/** Add a note to the app request. */
|
|
455
455
|
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.
|
|
456
|
+
/** 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
457
|
advanceWorkflow: ValidatedAppRequestResponse;
|
|
458
458
|
/** 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
459
|
cancelAppRequest: ValidatedAppRequestResponse;
|
|
@@ -480,7 +480,7 @@ export interface Mutation {
|
|
|
480
480
|
returnToOffer: ValidatedAppRequestResponse;
|
|
481
481
|
/** Return the app request to the review phase from acceptance, non-blocking workflow, or completion. */
|
|
482
482
|
returnToReview: ValidatedAppRequestResponse;
|
|
483
|
-
/** Moves the application back to the previous workflow stage.
|
|
483
|
+
/** 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
484
|
reverseWorkflow: ValidatedAppRequestResponse;
|
|
485
485
|
roleAddGrant: AccessRoleValidatedResponse;
|
|
486
486
|
roleCreate: AccessRoleValidatedResponse;
|
|
@@ -1107,6 +1107,8 @@ export interface AppRequestActivityFilters {
|
|
|
1107
1107
|
impersonatedBy?: (Scalars['ID'][] | null);
|
|
1108
1108
|
/** Return activities that were performed while one of the given logins was being impersonated by someone else. */
|
|
1109
1109
|
impersonatedUsers?: (Scalars['ID'][] | null);
|
|
1110
|
+
/** Filter activities by matching description content. */
|
|
1111
|
+
search?: (Scalars['String'] | null);
|
|
1110
1112
|
/** 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
1113
|
users?: (Scalars['ID'][] | null);
|
|
1112
1114
|
}
|
|
@@ -1421,7 +1423,7 @@ export interface MutationGenqlSelection {
|
|
|
1421
1423
|
validateOnly?: (Scalars['Boolean'] | null);
|
|
1422
1424
|
};
|
|
1423
1425
|
});
|
|
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.
|
|
1426
|
+
/** 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
1427
|
advanceWorkflow?: (ValidatedAppRequestResponseGenqlSelection & {
|
|
1426
1428
|
__args: {
|
|
1427
1429
|
applicationId: Scalars['ID'];
|
|
@@ -1515,7 +1517,7 @@ export interface MutationGenqlSelection {
|
|
|
1515
1517
|
appRequestId: Scalars['ID'];
|
|
1516
1518
|
};
|
|
1517
1519
|
});
|
|
1518
|
-
/** Moves the application back to the previous workflow stage.
|
|
1520
|
+
/** 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
1521
|
reverseWorkflow?: (ValidatedAppRequestResponseGenqlSelection & {
|
|
1520
1522
|
__args: {
|
|
1521
1523
|
applicationId: Scalars['ID'];
|
|
@@ -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
|
|
|
@@ -847,7 +855,7 @@ enum ApplicationPhase {
|
|
|
847
855
|
ACCEPTANCE
|
|
848
856
|
|
|
849
857
|
"""
|
|
850
|
-
The applicant has submitted the application and any PREAPPROVAL requirements are passing. The application is
|
|
858
|
+
The applicant has submitted the application and any PREAPPROVAL requirements are passing. The application is pending review.
|
|
851
859
|
"""
|
|
852
860
|
APPROVAL
|
|
853
861
|
|
|
@@ -892,10 +900,15 @@ enum ApplicationPhase {
|
|
|
892
900
|
READY_TO_SUBMIT
|
|
893
901
|
|
|
894
902
|
"""
|
|
895
|
-
The application has been reviewed and any blocking workflow stages have been completed.
|
|
903
|
+
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
904
|
"""
|
|
897
905
|
REVIEW_COMPLETE
|
|
898
906
|
|
|
907
|
+
"""
|
|
908
|
+
The review for this application is currently in progress (some APPROVAL requirement prompt data has been input)
|
|
909
|
+
"""
|
|
910
|
+
REVIEW_IN_PROGRESS
|
|
911
|
+
|
|
899
912
|
"""
|
|
900
913
|
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
914
|
"""
|
|
@@ -1223,7 +1236,7 @@ type Mutation {
|
|
|
1223
1236
|
): ValidatedNoteResponse!
|
|
1224
1237
|
|
|
1225
1238
|
"""
|
|
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.
|
|
1239
|
+
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
1240
|
"""
|
|
1228
1241
|
advanceWorkflow(applicationId: ID!): ValidatedAppRequestResponse!
|
|
1229
1242
|
|
|
@@ -1287,7 +1300,7 @@ type Mutation {
|
|
|
1287
1300
|
returnToReview(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
1288
1301
|
|
|
1289
1302
|
"""
|
|
1290
|
-
Moves the application back to the previous workflow stage.
|
|
1303
|
+
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
1304
|
"""
|
|
1292
1305
|
reverseWorkflow(applicationId: ID!): ValidatedAppRequestResponse!
|
|
1293
1306
|
roleAddGrant(grant: AccessRoleGrantCreate!, roleId: ID!, validateOnly: Boolean): AccessRoleValidatedResponse!
|