@reqquest/ui 1.1.16 → 1.1.18

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,95 @@
1
+ <script lang="ts">
2
+ import { ActionSet, type ActionItem } from '@txstate-mws/carbon-svelte'
3
+ import { DateTime } from 'luxon'
4
+
5
+ /**
6
+ * The HTML content of the comment.
7
+ * @type {string}
8
+ */
9
+ export let content: string
10
+
11
+ /**
12
+ * The full name of the author.
13
+ * @type {string}
14
+ */
15
+ export let authorName: string
16
+
17
+ /**
18
+ * The login name of the author (e.g. netid). Optional.
19
+ * @type {string | undefined}
20
+ */
21
+ export let authorLogin: string | undefined = undefined
22
+
23
+ /**
24
+ * The timestamp this comment was created. Accepts a Luxon DateTime or an ISO string.
25
+ * @type {DateTime | string}
26
+ */
27
+ export let createdAt: DateTime | string
28
+
29
+ /**
30
+ * Actions available on this comment (shown as an overflow menu in the top right).
31
+ * @type {ActionItem[]}
32
+ */
33
+ export let actions: ActionItem[] = []
34
+
35
+ /**
36
+ * If true, the comment box will not have a background, drop shadow, or padding.
37
+ * Use this when rendering a comment in a context that already provides its own framing.
38
+ * @type {boolean}
39
+ */
40
+ export let noborder = false
41
+
42
+ $: createdAtDt = typeof createdAt === 'string' ? DateTime.fromISO(createdAt) : createdAt
43
+ </script>
44
+
45
+ <div class="comment-card">
46
+ <div class="comment-box" class:noborder class:hasactions={actions.length > 0}>
47
+ <div class="comment-content">{@html content}</div>
48
+ {#if actions.length}
49
+ <div class="comment-actions">
50
+ <ActionSet {actions} noPrimaryAction small forceOverflow />
51
+ </div>
52
+ {/if}
53
+ </div>
54
+ <div class="comment-meta">
55
+ {authorName}{#if authorLogin}&nbsp;({authorLogin}){/if} &middot; {createdAtDt.toFormat('f')}
56
+ </div>
57
+ </div>
58
+
59
+ <style>
60
+ .comment-card {
61
+ display: flex;
62
+ flex-direction: column;
63
+ }
64
+ .comment-box {
65
+ position: relative;
66
+ background: white;
67
+ padding: 0.75rem;
68
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.08);
69
+ }
70
+ .comment-box.hasactions {
71
+ padding-right: 2.5rem;
72
+ }
73
+ .comment-box.noborder {
74
+ background: transparent;
75
+ padding: 0;
76
+ box-shadow: none;
77
+ }
78
+ .comment-box.noborder.hasactions {
79
+ padding-right: 2.5rem;
80
+ }
81
+ .comment-content :global(p) {
82
+ margin: 0;
83
+ font-size: 100%;
84
+ }
85
+ .comment-actions {
86
+ position: absolute;
87
+ top: 0.25rem;
88
+ right: 0.25rem;
89
+ }
90
+ .comment-meta {
91
+ font-size: 0.75rem;
92
+ color: var(--cds-text-02);
93
+ margin-top: 0.25rem;
94
+ }
95
+ </style>
@@ -0,0 +1,46 @@
1
+ import { type ActionItem } from '@txstate-mws/carbon-svelte';
2
+ import { DateTime } from 'luxon';
3
+ 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> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports & {
11
+ $set?: any;
12
+ $on?: any;
13
+ };
14
+ z_$$bindings?: Bindings;
15
+ }
16
+ declare const CommentCard: $$__sveltets_2_IsomorphicComponent<{
17
+ /**
18
+ * The HTML content of the comment.
19
+ * @type {string}
20
+ */ content: string;
21
+ /**
22
+ * The full name of the author.
23
+ * @type {string}
24
+ */ authorName: string;
25
+ /**
26
+ * The login name of the author (e.g. netid). Optional.
27
+ * @type {string | undefined}
28
+ */ authorLogin?: string | undefined;
29
+ /**
30
+ * The timestamp this comment was created. Accepts a Luxon DateTime or an ISO string.
31
+ * @type {DateTime | string}
32
+ */ createdAt: DateTime | string;
33
+ /**
34
+ * Actions available on this comment (shown as an overflow menu in the top right).
35
+ * @type {ActionItem[]}
36
+ */ actions?: ActionItem[];
37
+ /**
38
+ * If true, the comment box will not have a background, drop shadow, or padding.
39
+ * Use this when rendering a comment in a context that already provides its own framing.
40
+ * @type {boolean}
41
+ */ noborder?: boolean;
42
+ }, {
43
+ [evt: string]: CustomEvent<any>;
44
+ }, {}, {}, string>;
45
+ type CommentCard = InstanceType<typeof CommentCard>;
46
+ export default CommentCard;
@@ -0,0 +1,211 @@
1
+ <script lang="ts">
2
+ import { TagSet, type ActionItem, type TagItem } from '@txstate-mws/carbon-svelte'
3
+ import { modifierKey } from '@txstate-mws/svelte-components'
4
+ import Button from 'carbon-components-svelte/src/Button/Button.svelte'
5
+ import ChevronRight from 'carbon-icons-svelte/lib/ChevronRight.svelte'
6
+ import { afterUpdate, getContext } from 'svelte'
7
+ import { randomid } from 'txstate-utils'
8
+
9
+ /**
10
+ * The title of the component.
11
+ * @type {string}
12
+ */
13
+ export let title: string
14
+
15
+ /**
16
+ * The subheading for the component, which is optional.
17
+ * @type {string | undefined}
18
+ */
19
+ export let subhead: string | undefined = undefined
20
+
21
+ /**
22
+ * Adds visual emphasis to the title
23
+ * @type {boolean}
24
+ */
25
+ export let emphasizeTitle = false
26
+
27
+ /**
28
+ * Combined actions and navigations rendered as buttons at the bottom of the card.
29
+ * @type {ActionItem[]}
30
+ */
31
+ export let actions: ActionItem[] = []
32
+
33
+ /**
34
+ * Prevents the first button from having primary styling.
35
+ * @type {boolean}
36
+ */
37
+ export let noPrimaryAction = false
38
+
39
+ /**
40
+ * Array of tag items to display on the card.
41
+ * @type {TagItem[]}
42
+ */
43
+ export let tags: TagItem[] = []
44
+
45
+ /**
46
+ * Determines whether the tags should be displayed in the body of the card.
47
+ * @type {boolean}
48
+ */
49
+ export let tagsInBody = false
50
+
51
+ /**
52
+ * The ARIA role for the card. Defaults to 'listitem' when nested inside a CardGrid, 'region' otherwise.
53
+ * @type {string | undefined}
54
+ */
55
+ export let role: string | undefined = undefined
56
+
57
+ const isInCardGrid = getContext('card-grid') || false
58
+ $: ariaRole = role ?? (isInCardGrid ? 'listitem' : 'region')
59
+
60
+ let activeAction = 0
61
+ const actionelements: (HTMLButtonElement | HTMLAnchorElement)[] = []
62
+
63
+ function actionActivate (idx: number) {
64
+ activeAction = idx
65
+ actionelements[idx].focus()
66
+ }
67
+
68
+ function actionUp () {
69
+ const nextIdx = activeAction - 1
70
+ if (nextIdx >= 0 && nextIdx !== activeAction) actionActivate(nextIdx)
71
+ }
72
+
73
+ function actionDown () {
74
+ const nextIdx = activeAction + 1
75
+ if (nextIdx < actions.length && nextIdx !== activeAction) {
76
+ actionActivate(nextIdx)
77
+ }
78
+ }
79
+
80
+ function actionClick (action: ActionItem) {
81
+ return (e: MouseEvent) => {
82
+ if (action.disabled) e.preventDefault()
83
+ else void action.onClick?.()
84
+ }
85
+ }
86
+
87
+ function actionKeyDown (e: KeyboardEvent) {
88
+ if (modifierKey(e)) return
89
+ if (e.key.startsWith('Arrow')) {
90
+ e.stopPropagation()
91
+ e.preventDefault()
92
+ }
93
+ if (e.key === 'ArrowRight' || e.key === 'ArrowUp') actionUp()
94
+ else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') actionDown()
95
+ }
96
+
97
+ afterUpdate(() => {
98
+ for (const btn of actionelements) {
99
+ btn?.removeEventListener('keydown', actionKeyDown as any)
100
+ btn?.addEventListener('keydown', actionKeyDown as any)
101
+ }
102
+ })
103
+
104
+ const titleId = randomid()
105
+ </script>
106
+
107
+ <div
108
+ role={ariaRole}
109
+ class="info-card shadow [ flex flex-col ]"
110
+ aria-labelledby={titleId}
111
+ >
112
+ <header class="info-card-header [ flex items-start justify-between p-[8px] ]">
113
+ <div class="info-card-header-left [ flex-grow flex-shrink ]">
114
+ <div
115
+ id={titleId}
116
+ class="info-card-title [ text-lg font-bold ]"
117
+ class:emphasizeTitle
118
+ >
119
+ {title}
120
+ </div>
121
+ {#if subhead}<div class="info-card-subhead">{subhead}</div>{/if}
122
+ </div>
123
+ <div class="info-card-header-right">
124
+ <slot name="header-right" />
125
+ </div>
126
+ </header>
127
+
128
+ {#if tags.length}
129
+ <TagSet {tags} describedById={titleId} class={tagsInBody ? 'info-card-tags' : 'info-card-tags hasbg'} />
130
+ {/if}
131
+
132
+ <div class="info-card-content [ p-[8px] ]">
133
+ <slot />
134
+ </div>
135
+
136
+ {#if actions.length}
137
+ <!-- svelte-ignore a11y-no-noninteractive-element-to-interactive-role -->
138
+ <div
139
+ class="info-card-footer [ flex flex-wrap flex-row-reverse ]"
140
+ class:singular={actions.length === 1}
141
+ role="menubar"
142
+ >
143
+ {#each actions as action, i}
144
+ <Button
145
+ bind:ref={actionelements[i]}
146
+ href={action.href}
147
+ size="field"
148
+ role="menuitem"
149
+ aria-disabled={action.disabled}
150
+ aria-describedby={titleId}
151
+ tabindex={(i === activeAction ? 0 : -1) as any}
152
+ icon={action.icon ?? ChevronRight}
153
+ kind={noPrimaryAction || i > 0 ? 'secondary' : 'primary'}
154
+ class="info-card-action [ w-full ] {action.disabled ? 'bx--btn--disabled' : ''}"
155
+ on:click={actionClick(action)}
156
+ >{action.label}</Button>
157
+ {/each}
158
+ </div>
159
+ {/if}
160
+ </div>
161
+
162
+ <style>
163
+ .info-card {
164
+ border: 2px solid #e7e5e4;
165
+ }
166
+ .info-card-header {
167
+ background-color: #e7e5e4;
168
+ }
169
+ .info-card-title {
170
+ margin-block-start: 0;
171
+ width: -moz-fit-content;
172
+ width: fit-content;
173
+ }
174
+ .info-card-title.emphasizeTitle {
175
+ background-color: #d8d0cf;
176
+ padding: 0 8px;
177
+ }
178
+ .info-card :global(.info-card-tags) {
179
+ padding: 8px;
180
+ }
181
+ .info-card :global(.info-card-tags > *) {
182
+ max-width: calc(50% - 2px);
183
+ }
184
+ .info-card :global(.info-card-tags.hasbg) {
185
+ padding-top: 0;
186
+ background-color: #e7e5e4;
187
+ }
188
+ .info-card-footer {
189
+ margin-block-start: auto;
190
+ gap: 1px;
191
+ }
192
+ .info-card .info-card-footer > :global(*) {
193
+ flex-grow: 1;
194
+ flex-basis: calc((300px - 100%) * 999);
195
+ min-width: 100px;
196
+ max-width: 100%;
197
+ border: 0;
198
+ }
199
+ .info-card .info-card-footer.singular > :global(*) {
200
+ width: 100%;
201
+ }
202
+ /* 3 items get a higher threshold so they stack earlier */
203
+ .info-card .info-card-footer > :global(:nth-last-child(n + 3)),
204
+ .info-card .info-card-footer > :global(:nth-last-child(n + 3) ~ *) {
205
+ flex-basis: calc((400px - 100%) * 999);
206
+ }
207
+ .info-card .info-card-footer > :global(:nth-last-child(n + 4)),
208
+ .info-card .info-card-footer > :global(:nth-last-child(n + 4) ~ *) {
209
+ flex-basis: 100%;
210
+ }
211
+ </style>
@@ -0,0 +1,63 @@
1
+ import { type ActionItem, type TagItem } from '@txstate-mws/carbon-svelte';
2
+ 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> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
16
+ default: any;
17
+ } ? Props extends Record<string, never> ? any : {
18
+ children?: any;
19
+ } : {});
20
+ declare const InfoCard: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
21
+ /**
22
+ * The title of the component.
23
+ * @type {string}
24
+ */ title: string;
25
+ /**
26
+ * The subheading for the component, which is optional.
27
+ * @type {string | undefined}
28
+ */ subhead?: string | undefined;
29
+ /**
30
+ * Adds visual emphasis to the title
31
+ * @type {boolean}
32
+ */ emphasizeTitle?: boolean;
33
+ /**
34
+ * Combined actions and navigations rendered as buttons at the bottom of the card.
35
+ * @type {ActionItem[]}
36
+ */ actions?: ActionItem[];
37
+ /**
38
+ * Prevents the first button from having primary styling.
39
+ * @type {boolean}
40
+ */ noPrimaryAction?: boolean;
41
+ /**
42
+ * Array of tag items to display on the card.
43
+ * @type {TagItem[]}
44
+ */ tags?: TagItem[];
45
+ /**
46
+ * Determines whether the tags should be displayed in the body of the card.
47
+ * @type {boolean}
48
+ */ tagsInBody?: boolean;
49
+ /**
50
+ * The ARIA role for the card. Defaults to 'listitem' when nested inside a CardGrid, 'region' otherwise.
51
+ * @type {string | undefined}
52
+ */ role?: string | undefined;
53
+ }, {
54
+ 'header-right': {};
55
+ default: {};
56
+ }>, {
57
+ [evt: string]: CustomEvent<any>;
58
+ }, {
59
+ 'header-right': {};
60
+ default: {};
61
+ }, {}, string>;
62
+ type InfoCard = InstanceType<typeof InfoCard>;
63
+ export default InfoCard;
@@ -1,3 +1,5 @@
1
+ export { default as CommentCard } from './CommentCard.svelte';
1
2
  export { default as FieldCardCheckbox } from './FieldCardCheckbox.svelte';
2
3
  export { default as FieldCardRadio } from './FieldCardRadio.svelte';
4
+ export { default as InfoCard } from './InfoCard.svelte';
3
5
  export { default as QuestionnairePrompt } from './QuestionnairePrompt.svelte';
@@ -1,3 +1,5 @@
1
+ export { default as CommentCard } from './CommentCard.svelte';
1
2
  export { default as FieldCardCheckbox } from './FieldCardCheckbox.svelte';
2
3
  export { default as FieldCardRadio } from './FieldCardRadio.svelte';
4
+ export { default as InfoCard } from './InfoCard.svelte';
3
5
  export { default as QuestionnairePrompt } from './QuestionnairePrompt.svelte';
package/dist/registry.js CHANGED
@@ -15,7 +15,7 @@ export class UIRegistry {
15
15
  for (const program of config.programs)
16
16
  this.programMap[program.key] = program;
17
17
  this.lang = {
18
- appRequest: config.terminology?.appRequest ?? config.programs.length > 1 ? 'App Request' : 'Application',
18
+ appRequest: config.terminology?.appRequest ?? (config.programs.length > 1 ? 'App Request' : 'Application'),
19
19
  login: config.terminology?.login ?? 'Login',
20
20
  period: config.terminology?.period ?? 'Period'
21
21
  };
@@ -196,6 +196,10 @@ export interface AppRequestActions {
196
196
  completeRequest: Scalars['Boolean'];
197
197
  /** User may complete the review app request. Sends the app request to the acceptance phase, or if there is no acceptance phase, to the non-blocking workflow or completion. */
198
198
  completeReview: Scalars['Boolean'];
199
+ /** User is able to create a new internal note on the app request. */
200
+ createNote: Scalars['Boolean'];
201
+ /** User is able to create a new internal note on the app request. */
202
+ createPersistentNote: Scalars['Boolean'];
199
203
  /** User may reopen this app request, whether as the owner or as a reviewer/admin. */
200
204
  reopen: Scalars['Boolean'];
201
205
  /** User may return this app request to the applicant phase. */
@@ -402,7 +406,7 @@ export interface Mutation {
402
406
  /** This is for the applicant to accept or reject the offer that was made based on their app request. The difference between accept and reject is determined by the status of the acceptance requirements. They will still "accept offer" after they answer that they do not want the offer. If there is non-blocking workflow on any applications, the first one in each will begin. Applications without non-blocking workflow will be advanced to the COMPLETE phase. If all applications are complete, the app request will be closed. */
403
407
  acceptOffer: ValidatedAppRequestResponse;
404
408
  /** Add a note to the app request. */
405
- addNote: ValidatedAppRequestResponse;
409
+ addNote: ValidatedNoteResponse;
406
410
  /** 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. */
407
411
  advanceWorkflow: ValidatedAppRequestResponse;
408
412
  /** Cancel or withdraw the app request, depending on its current phase. This is only available if the app request is in a cancellable state. */
@@ -438,11 +442,15 @@ export interface Mutation {
438
442
  roleDeleteGrant: AccessRoleValidatedResponse;
439
443
  roleUpdate: AccessRoleValidatedResponse;
440
444
  roleUpdateGrant: AccessRoleValidatedResponse;
445
+ /** Stage the data for a prompt in this app request. */
446
+ stagePrompt: ValidatedAppRequestResponse;
441
447
  /** Submit the app request. */
442
448
  submitAppRequest: ValidatedAppRequestResponse;
449
+ /** Toggle an existing note's persistent status. */
450
+ togglePersistence: ValidatedNoteResponse;
443
451
  updateConfiguration: ValidatedConfigurationResponse;
444
452
  /** Update the content of an existing note. */
445
- updateNote: Note;
453
+ updateNote: ValidatedNoteResponse;
446
454
  updatePeriod: ValidatedPeriodResponse;
447
455
  updatePeriodRequirement: ValidatedResponse;
448
456
  /** Update the data for a prompt in this app request. */
@@ -470,6 +478,8 @@ export interface Note {
470
478
  content: Scalars['String'];
471
479
  createdAt: Scalars['DateTime'];
472
480
  id: Scalars['ID'];
481
+ /** Whether this note contains permanently useful information about a person, as opposed to only being relevant in the context of the app request it was posted to. */
482
+ persistent: Scalars['Boolean'];
473
483
  updatedAt: Scalars['DateTime'];
474
484
  __typename: 'Note';
475
485
  }
@@ -477,6 +487,7 @@ export interface Note {
477
487
  export interface NoteActions {
478
488
  delete: Scalars['Boolean'];
479
489
  update: Scalars['Boolean'];
490
+ updatePersistent: Scalars['Boolean'];
480
491
  __typename: 'NoteActions';
481
492
  }
482
493
  export interface PaginationInfoWithTotalItems {
@@ -643,6 +654,8 @@ export interface RequirementPrompt {
643
654
  navTitle: Scalars['String'];
644
655
  /** Preload data that has been generated according to the prompt definition. For example, a prompt might query the database for answers given in previous requests or query an external API to learn facts about the user. */
645
656
  preloadData: (Scalars['JsonData'] | null);
657
+ /** Smartly identifies if the prompt requires pre staging processing. */
658
+ prestage: Scalars['Boolean'];
646
659
  /** The requirement that this prompt is associated with. */
647
660
  requirement: ApplicationRequirement;
648
661
  /** A human readable title for the prompt. This is what will be shown to users. */
@@ -676,6 +689,13 @@ export interface ValidatedConfigurationResponse {
676
689
  success: Scalars['Boolean'];
677
690
  __typename: 'ValidatedConfigurationResponse';
678
691
  }
692
+ export interface ValidatedNoteResponse {
693
+ messages: MutationMessage[];
694
+ note: Note;
695
+ /** True if the mutation succeeded (e.g. saved data or passed validation), even if there were warnings. */
696
+ success: Scalars['Boolean'];
697
+ __typename: 'ValidatedNoteResponse';
698
+ }
679
699
  export interface ValidatedPeriodResponse {
680
700
  messages: MutationMessage[];
681
701
  period: (Period | null);
@@ -975,6 +995,10 @@ export interface AppRequestActionsGenqlSelection {
975
995
  completeRequest?: boolean | number;
976
996
  /** User may complete the review app request. Sends the app request to the acceptance phase, or if there is no acceptance phase, to the non-blocking workflow or completion. */
977
997
  completeReview?: boolean | number;
998
+ /** User is able to create a new internal note on the app request. */
999
+ createNote?: boolean | number;
1000
+ /** User is able to create a new internal note on the app request. */
1001
+ createPersistentNote?: boolean | number;
978
1002
  /** User may reopen this app request, whether as the owner or as a reviewer/admin. */
979
1003
  reopen?: boolean | number;
980
1004
  /** User may return this app request to the applicant phase. */
@@ -1147,7 +1171,11 @@ export interface ApplicationRequirementGenqlSelection {
1147
1171
  key?: boolean | number;
1148
1172
  /** A human readable title for the requirement in the navigation. You probably want it to be shorter than the full title. If not provided, the title will be used. */
1149
1173
  navTitle?: boolean | number;
1150
- prompts?: RequirementPromptGenqlSelection;
1174
+ prompts?: (RequirementPromptGenqlSelection & {
1175
+ __args?: {
1176
+ filter?: (RequirementPromptFilter | null);
1177
+ };
1178
+ });
1151
1179
  /** The smart title for this requirement in the app request's period. For instance, might be "Applicant must have GPA over 3.4" instead of the regular title "Applicant must meet GPA requirement". Will fall back to the regular title for any requirement that does not provide a smart title. */
1152
1180
  smartTitle?: boolean | number;
1153
1181
  /** The status of the requirement. This is what will be shown to users. */
@@ -1250,10 +1278,12 @@ export interface MutationGenqlSelection {
1250
1278
  };
1251
1279
  });
1252
1280
  /** Add a note to the app request. */
1253
- addNote?: (ValidatedAppRequestResponseGenqlSelection & {
1281
+ addNote?: (ValidatedNoteResponseGenqlSelection & {
1254
1282
  __args: {
1255
1283
  /** The content of the note. HTML is expected. */
1256
1284
  content: Scalars['String'];
1285
+ persistent?: (Scalars['Boolean'] | null);
1286
+ validateOnly?: (Scalars['Boolean'] | null);
1257
1287
  };
1258
1288
  });
1259
1289
  /** 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. */
@@ -1306,7 +1336,7 @@ export interface MutationGenqlSelection {
1306
1336
  /** Delete an existing note. */
1307
1337
  deleteNote?: {
1308
1338
  __args: {
1309
- noteId: Scalars['String'];
1339
+ noteId: Scalars['ID'];
1310
1340
  };
1311
1341
  };
1312
1342
  deletePeriod?: (ValidatedResponseGenqlSelection & {
@@ -1394,12 +1424,26 @@ export interface MutationGenqlSelection {
1394
1424
  validateOnly?: (Scalars['Boolean'] | null);
1395
1425
  };
1396
1426
  });
1427
+ /** Stage the data for a prompt in this app request. */
1428
+ stagePrompt?: (ValidatedAppRequestResponseGenqlSelection & {
1429
+ __args: {
1430
+ /** The data version of the app request at the time this prompt was loaded. If provided, the API will perform an optimistic concurrency check and fail the update if someone else has updated the data in the meantime. */
1431
+ dataVersion?: (Scalars['Int'] | null);
1432
+ promptId: Scalars['ID'];
1433
+ };
1434
+ });
1397
1435
  /** Submit the app request. */
1398
1436
  submitAppRequest?: (ValidatedAppRequestResponseGenqlSelection & {
1399
1437
  __args: {
1400
1438
  appRequestId: Scalars['ID'];
1401
1439
  };
1402
1440
  });
1441
+ /** Toggle an existing note's persistent status. */
1442
+ togglePersistence?: (ValidatedNoteResponseGenqlSelection & {
1443
+ __args: {
1444
+ noteId: Scalars['ID'];
1445
+ };
1446
+ });
1403
1447
  updateConfiguration?: (ValidatedConfigurationResponseGenqlSelection & {
1404
1448
  __args: {
1405
1449
  data: Scalars['JsonData'];
@@ -1409,10 +1453,10 @@ export interface MutationGenqlSelection {
1409
1453
  };
1410
1454
  });
1411
1455
  /** Update the content of an existing note. */
1412
- updateNote?: (NoteGenqlSelection & {
1456
+ updateNote?: (ValidatedNoteResponseGenqlSelection & {
1413
1457
  __args: {
1414
1458
  content: Scalars['String'];
1415
- noteId: Scalars['String'];
1459
+ noteId: Scalars['ID'];
1416
1460
  };
1417
1461
  });
1418
1462
  updatePeriod?: (ValidatedPeriodResponseGenqlSelection & {
@@ -1463,6 +1507,8 @@ export interface NoteGenqlSelection {
1463
1507
  content?: boolean | number;
1464
1508
  createdAt?: boolean | number;
1465
1509
  id?: boolean | number;
1510
+ /** Whether this note contains permanently useful information about a person, as opposed to only being relevant in the context of the app request it was posted to. */
1511
+ persistent?: boolean | number;
1466
1512
  updatedAt?: boolean | number;
1467
1513
  __typename?: boolean | number;
1468
1514
  __scalar?: boolean | number;
@@ -1471,6 +1517,7 @@ export interface NoteGenqlSelection {
1471
1517
  export interface NoteActionsGenqlSelection {
1472
1518
  delete?: boolean | number;
1473
1519
  update?: boolean | number;
1520
+ updatePersistent?: boolean | number;
1474
1521
  __typename?: boolean | number;
1475
1522
  __scalar?: boolean | number;
1476
1523
  }
@@ -1747,6 +1794,8 @@ export interface RequirementPromptGenqlSelection {
1747
1794
  schemaVersion?: (Scalars['String'] | null);
1748
1795
  };
1749
1796
  } | boolean | number;
1797
+ /** Smartly identifies if the prompt requires pre staging processing. */
1798
+ prestage?: boolean | number;
1750
1799
  /** The requirement that this prompt is associated with. */
1751
1800
  requirement?: ApplicationRequirementGenqlSelection;
1752
1801
  /** A human readable title for the prompt. This is what will be shown to users. */
@@ -1761,6 +1810,17 @@ export interface RequirementPromptActionsGenqlSelection {
1761
1810
  __typename?: boolean | number;
1762
1811
  __scalar?: boolean | number;
1763
1812
  }
1813
+ export interface RequirementPromptFilter {
1814
+ /** When true only returns answered prompts. */
1815
+ answered?: (Scalars['Boolean'] | null);
1816
+ appRequestIds?: (Scalars['ID'][] | null);
1817
+ applicationIds?: (Scalars['ID'][] | null);
1818
+ ids?: (Scalars['ID'][] | null);
1819
+ promptKeys?: (Scalars['String'][] | null);
1820
+ /** When true only returns reachable prompts. */
1821
+ reachable?: (Scalars['Boolean'] | null);
1822
+ requirementIds?: (Scalars['ID'][] | null);
1823
+ }
1764
1824
  export interface RoleActionsGenqlSelection {
1765
1825
  delete?: boolean | number;
1766
1826
  update?: boolean | number;
@@ -1783,6 +1843,14 @@ export interface ValidatedConfigurationResponseGenqlSelection {
1783
1843
  __typename?: boolean | number;
1784
1844
  __scalar?: boolean | number;
1785
1845
  }
1846
+ export interface ValidatedNoteResponseGenqlSelection {
1847
+ messages?: MutationMessageGenqlSelection;
1848
+ note?: NoteGenqlSelection;
1849
+ /** True if the mutation succeeded (e.g. saved data or passed validation), even if there were warnings. */
1850
+ success?: boolean | number;
1851
+ __typename?: boolean | number;
1852
+ __scalar?: boolean | number;
1853
+ }
1786
1854
  export interface ValidatedPeriodResponseGenqlSelection {
1787
1855
  messages?: MutationMessageGenqlSelection;
1788
1856
  period?: PeriodGenqlSelection;
@@ -1939,6 +2007,9 @@ export declare const isValidatedAppRequestResponse: (obj?: {
1939
2007
  export declare const isValidatedConfigurationResponse: (obj?: {
1940
2008
  __typename?: any;
1941
2009
  } | null) => obj is ValidatedConfigurationResponse;
2010
+ export declare const isValidatedNoteResponse: (obj?: {
2011
+ __typename?: any;
2012
+ } | null) => obj is ValidatedNoteResponse;
1942
2013
  export declare const isValidatedPeriodResponse: (obj?: {
1943
2014
  __typename?: any;
1944
2015
  } | null) => obj is ValidatedPeriodResponse;