@reqquest/ui 1.1.17 → 1.2.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.
- package/dist/components/CommentCard.svelte +95 -0
- package/dist/components/CommentCard.svelte.d.ts +46 -0
- package/dist/components/InfoCard.svelte +211 -0
- package/dist/components/InfoCard.svelte.d.ts +63 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +2 -0
- package/dist/registry.js +1 -1
- package/dist/typed-client/schema.d.ts +82 -7
- package/dist/typed-client/schema.graphql +61 -4
- package/dist/typed-client/schema.js +6 -0
- package/dist/typed-client/types.d.ts +34 -1
- package/dist/typed-client/types.js +308 -218
- package/package.json +1 -1
|
@@ -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} ({authorLogin}){/if} · {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';
|
package/dist/components/index.js
CHANGED
|
@@ -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:
|
|
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:
|
|
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 {
|
|
@@ -630,6 +641,8 @@ export interface RequirementPrompt {
|
|
|
630
641
|
fetchedData: (Scalars['JsonData'] | null);
|
|
631
642
|
/** Extra configuration data that is relevant for this prompt. This configuration is explicitly gathered from related requirements and prompts by the gatherConfig function in the prompt definition. */
|
|
632
643
|
gatheredConfigData: Scalars['JsonData'];
|
|
644
|
+
/** Identifies if the prompt already has saved data. Assists in determining if the user has previously interacted with this prompt. */
|
|
645
|
+
hasSavedData: Scalars['Boolean'];
|
|
633
646
|
id: Scalars['ID'];
|
|
634
647
|
/** When true, this prompt has been invalidated by the answer to another prompt. The `answered` field will remain true so be sure to check this field as well when determining whether the prompt is complete. */
|
|
635
648
|
invalidated: Scalars['Boolean'];
|
|
@@ -643,6 +656,8 @@ export interface RequirementPrompt {
|
|
|
643
656
|
navTitle: Scalars['String'];
|
|
644
657
|
/** 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
658
|
preloadData: (Scalars['JsonData'] | null);
|
|
659
|
+
/** Smartly identifies if the prompt requires pre staging processing. */
|
|
660
|
+
prestage: Scalars['Boolean'];
|
|
646
661
|
/** The requirement that this prompt is associated with. */
|
|
647
662
|
requirement: ApplicationRequirement;
|
|
648
663
|
/** A human readable title for the prompt. This is what will be shown to users. */
|
|
@@ -676,6 +691,13 @@ export interface ValidatedConfigurationResponse {
|
|
|
676
691
|
success: Scalars['Boolean'];
|
|
677
692
|
__typename: 'ValidatedConfigurationResponse';
|
|
678
693
|
}
|
|
694
|
+
export interface ValidatedNoteResponse {
|
|
695
|
+
messages: MutationMessage[];
|
|
696
|
+
note: Note;
|
|
697
|
+
/** True if the mutation succeeded (e.g. saved data or passed validation), even if there were warnings. */
|
|
698
|
+
success: Scalars['Boolean'];
|
|
699
|
+
__typename: 'ValidatedNoteResponse';
|
|
700
|
+
}
|
|
679
701
|
export interface ValidatedPeriodResponse {
|
|
680
702
|
messages: MutationMessage[];
|
|
681
703
|
period: (Period | null);
|
|
@@ -975,6 +997,10 @@ export interface AppRequestActionsGenqlSelection {
|
|
|
975
997
|
completeRequest?: boolean | number;
|
|
976
998
|
/** 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
999
|
completeReview?: boolean | number;
|
|
1000
|
+
/** User is able to create a new internal note on the app request. */
|
|
1001
|
+
createNote?: boolean | number;
|
|
1002
|
+
/** User is able to create a new internal note on the app request. */
|
|
1003
|
+
createPersistentNote?: boolean | number;
|
|
978
1004
|
/** User may reopen this app request, whether as the owner or as a reviewer/admin. */
|
|
979
1005
|
reopen?: boolean | number;
|
|
980
1006
|
/** User may return this app request to the applicant phase. */
|
|
@@ -1147,7 +1173,11 @@ export interface ApplicationRequirementGenqlSelection {
|
|
|
1147
1173
|
key?: boolean | number;
|
|
1148
1174
|
/** 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
1175
|
navTitle?: boolean | number;
|
|
1150
|
-
prompts?: RequirementPromptGenqlSelection
|
|
1176
|
+
prompts?: (RequirementPromptGenqlSelection & {
|
|
1177
|
+
__args?: {
|
|
1178
|
+
filter?: (RequirementPromptFilter | null);
|
|
1179
|
+
};
|
|
1180
|
+
});
|
|
1151
1181
|
/** 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
1182
|
smartTitle?: boolean | number;
|
|
1153
1183
|
/** The status of the requirement. This is what will be shown to users. */
|
|
@@ -1250,10 +1280,12 @@ export interface MutationGenqlSelection {
|
|
|
1250
1280
|
};
|
|
1251
1281
|
});
|
|
1252
1282
|
/** Add a note to the app request. */
|
|
1253
|
-
addNote?: (
|
|
1283
|
+
addNote?: (ValidatedNoteResponseGenqlSelection & {
|
|
1254
1284
|
__args: {
|
|
1255
1285
|
/** The content of the note. HTML is expected. */
|
|
1256
1286
|
content: Scalars['String'];
|
|
1287
|
+
persistent?: (Scalars['Boolean'] | null);
|
|
1288
|
+
validateOnly?: (Scalars['Boolean'] | null);
|
|
1257
1289
|
};
|
|
1258
1290
|
});
|
|
1259
1291
|
/** 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 +1338,7 @@ export interface MutationGenqlSelection {
|
|
|
1306
1338
|
/** Delete an existing note. */
|
|
1307
1339
|
deleteNote?: {
|
|
1308
1340
|
__args: {
|
|
1309
|
-
noteId: Scalars['
|
|
1341
|
+
noteId: Scalars['ID'];
|
|
1310
1342
|
};
|
|
1311
1343
|
};
|
|
1312
1344
|
deletePeriod?: (ValidatedResponseGenqlSelection & {
|
|
@@ -1394,12 +1426,26 @@ export interface MutationGenqlSelection {
|
|
|
1394
1426
|
validateOnly?: (Scalars['Boolean'] | null);
|
|
1395
1427
|
};
|
|
1396
1428
|
});
|
|
1429
|
+
/** Stage the data for a prompt in this app request. */
|
|
1430
|
+
stagePrompt?: (ValidatedAppRequestResponseGenqlSelection & {
|
|
1431
|
+
__args: {
|
|
1432
|
+
/** 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. */
|
|
1433
|
+
dataVersion?: (Scalars['Int'] | null);
|
|
1434
|
+
promptId: Scalars['ID'];
|
|
1435
|
+
};
|
|
1436
|
+
});
|
|
1397
1437
|
/** Submit the app request. */
|
|
1398
1438
|
submitAppRequest?: (ValidatedAppRequestResponseGenqlSelection & {
|
|
1399
1439
|
__args: {
|
|
1400
1440
|
appRequestId: Scalars['ID'];
|
|
1401
1441
|
};
|
|
1402
1442
|
});
|
|
1443
|
+
/** Toggle an existing note's persistent status. */
|
|
1444
|
+
togglePersistence?: (ValidatedNoteResponseGenqlSelection & {
|
|
1445
|
+
__args: {
|
|
1446
|
+
noteId: Scalars['ID'];
|
|
1447
|
+
};
|
|
1448
|
+
});
|
|
1403
1449
|
updateConfiguration?: (ValidatedConfigurationResponseGenqlSelection & {
|
|
1404
1450
|
__args: {
|
|
1405
1451
|
data: Scalars['JsonData'];
|
|
@@ -1409,10 +1455,10 @@ export interface MutationGenqlSelection {
|
|
|
1409
1455
|
};
|
|
1410
1456
|
});
|
|
1411
1457
|
/** Update the content of an existing note. */
|
|
1412
|
-
updateNote?: (
|
|
1458
|
+
updateNote?: (ValidatedNoteResponseGenqlSelection & {
|
|
1413
1459
|
__args: {
|
|
1414
1460
|
content: Scalars['String'];
|
|
1415
|
-
noteId: Scalars['
|
|
1461
|
+
noteId: Scalars['ID'];
|
|
1416
1462
|
};
|
|
1417
1463
|
});
|
|
1418
1464
|
updatePeriod?: (ValidatedPeriodResponseGenqlSelection & {
|
|
@@ -1463,6 +1509,8 @@ export interface NoteGenqlSelection {
|
|
|
1463
1509
|
content?: boolean | number;
|
|
1464
1510
|
createdAt?: boolean | number;
|
|
1465
1511
|
id?: boolean | number;
|
|
1512
|
+
/** 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. */
|
|
1513
|
+
persistent?: boolean | number;
|
|
1466
1514
|
updatedAt?: boolean | number;
|
|
1467
1515
|
__typename?: boolean | number;
|
|
1468
1516
|
__scalar?: boolean | number;
|
|
@@ -1471,6 +1519,7 @@ export interface NoteGenqlSelection {
|
|
|
1471
1519
|
export interface NoteActionsGenqlSelection {
|
|
1472
1520
|
delete?: boolean | number;
|
|
1473
1521
|
update?: boolean | number;
|
|
1522
|
+
updatePersistent?: boolean | number;
|
|
1474
1523
|
__typename?: boolean | number;
|
|
1475
1524
|
__scalar?: boolean | number;
|
|
1476
1525
|
}
|
|
@@ -1729,6 +1778,8 @@ export interface RequirementPromptGenqlSelection {
|
|
|
1729
1778
|
} | boolean | number;
|
|
1730
1779
|
/** Extra configuration data that is relevant for this prompt. This configuration is explicitly gathered from related requirements and prompts by the gatherConfig function in the prompt definition. */
|
|
1731
1780
|
gatheredConfigData?: boolean | number;
|
|
1781
|
+
/** Identifies if the prompt already has saved data. Assists in determining if the user has previously interacted with this prompt. */
|
|
1782
|
+
hasSavedData?: boolean | number;
|
|
1732
1783
|
id?: boolean | number;
|
|
1733
1784
|
/** When true, this prompt has been invalidated by the answer to another prompt. The `answered` field will remain true so be sure to check this field as well when determining whether the prompt is complete. */
|
|
1734
1785
|
invalidated?: boolean | number;
|
|
@@ -1747,6 +1798,8 @@ export interface RequirementPromptGenqlSelection {
|
|
|
1747
1798
|
schemaVersion?: (Scalars['String'] | null);
|
|
1748
1799
|
};
|
|
1749
1800
|
} | boolean | number;
|
|
1801
|
+
/** Smartly identifies if the prompt requires pre staging processing. */
|
|
1802
|
+
prestage?: boolean | number;
|
|
1750
1803
|
/** The requirement that this prompt is associated with. */
|
|
1751
1804
|
requirement?: ApplicationRequirementGenqlSelection;
|
|
1752
1805
|
/** A human readable title for the prompt. This is what will be shown to users. */
|
|
@@ -1761,6 +1814,17 @@ export interface RequirementPromptActionsGenqlSelection {
|
|
|
1761
1814
|
__typename?: boolean | number;
|
|
1762
1815
|
__scalar?: boolean | number;
|
|
1763
1816
|
}
|
|
1817
|
+
export interface RequirementPromptFilter {
|
|
1818
|
+
/** When true only returns answered prompts. */
|
|
1819
|
+
answered?: (Scalars['Boolean'] | null);
|
|
1820
|
+
appRequestIds?: (Scalars['ID'][] | null);
|
|
1821
|
+
applicationIds?: (Scalars['ID'][] | null);
|
|
1822
|
+
ids?: (Scalars['ID'][] | null);
|
|
1823
|
+
promptKeys?: (Scalars['String'][] | null);
|
|
1824
|
+
/** When true only returns reachable prompts. */
|
|
1825
|
+
reachable?: (Scalars['Boolean'] | null);
|
|
1826
|
+
requirementIds?: (Scalars['ID'][] | null);
|
|
1827
|
+
}
|
|
1764
1828
|
export interface RoleActionsGenqlSelection {
|
|
1765
1829
|
delete?: boolean | number;
|
|
1766
1830
|
update?: boolean | number;
|
|
@@ -1783,6 +1847,14 @@ export interface ValidatedConfigurationResponseGenqlSelection {
|
|
|
1783
1847
|
__typename?: boolean | number;
|
|
1784
1848
|
__scalar?: boolean | number;
|
|
1785
1849
|
}
|
|
1850
|
+
export interface ValidatedNoteResponseGenqlSelection {
|
|
1851
|
+
messages?: MutationMessageGenqlSelection;
|
|
1852
|
+
note?: NoteGenqlSelection;
|
|
1853
|
+
/** True if the mutation succeeded (e.g. saved data or passed validation), even if there were warnings. */
|
|
1854
|
+
success?: boolean | number;
|
|
1855
|
+
__typename?: boolean | number;
|
|
1856
|
+
__scalar?: boolean | number;
|
|
1857
|
+
}
|
|
1786
1858
|
export interface ValidatedPeriodResponseGenqlSelection {
|
|
1787
1859
|
messages?: MutationMessageGenqlSelection;
|
|
1788
1860
|
period?: PeriodGenqlSelection;
|
|
@@ -1939,6 +2011,9 @@ export declare const isValidatedAppRequestResponse: (obj?: {
|
|
|
1939
2011
|
export declare const isValidatedConfigurationResponse: (obj?: {
|
|
1940
2012
|
__typename?: any;
|
|
1941
2013
|
} | null) => obj is ValidatedConfigurationResponse;
|
|
2014
|
+
export declare const isValidatedNoteResponse: (obj?: {
|
|
2015
|
+
__typename?: any;
|
|
2016
|
+
} | null) => obj is ValidatedNoteResponse;
|
|
1942
2017
|
export declare const isValidatedPeriodResponse: (obj?: {
|
|
1943
2018
|
__typename?: any;
|
|
1944
2019
|
} | null) => obj is ValidatedPeriodResponse;
|