Skip to content

Commit 9be727e

Browse files
committed
move the explainer note for Imaging Orders to be more prominent
1 parent 142cb08 commit 9be727e

File tree

2 files changed

+114
-104
lines changed

2 files changed

+114
-104
lines changed

client/src/grid/octopusImagingOrderDisplay.tsx

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
IMAGINE_REQUEST_TYPES,
66
IMAGING_REQUEST_ITEM_TYPE,
77
ImagingRequestType,
8-
} from "../../../shared/octopusImaging";
8+
} from "shared/octopusImaging";
99
import { agateSans } from "../../fontNormaliser";
1010
import { useGlobalStateContext } from "../globalState";
1111
import { space } from "@guardian/source-foundations";
@@ -22,39 +22,19 @@ export const OctopusImagingOrderDisplay = ({
2222
return (
2323
<div
2424
css={css`
25-
${agateSans.xxsmall()}
25+
display: flex;
26+
flex-direction: column;
27+
gap: ${space[1]}px;
28+
${agateSans.xxsmall()};
2629
`}
2730
>
2831
<h3
2932
css={css`
30-
margin: 0 0 ${space[1]}px;
33+
margin: 0;
3134
`}
3235
>
3336
Imaging Order
3437
</h3>
35-
{isEditable && (
36-
<div
37-
css={css`
38-
padding-right: 25px;
39-
`}
40-
>
41-
<em>
42-
{
43-
"Don't forget to provide some notes to help Imaging team to understand your request"
44-
}
45-
</em>
46-
</div>
47-
)}
48-
<img
49-
src={payload.thumbnail}
50-
css={css`
51-
object-fit: contain;
52-
width: 100%;
53-
height: 100%;
54-
`}
55-
draggable={false}
56-
// TODO: hover for larger thumbnail
57-
/>
5838
<div>
5939
<strong>Request Type: </strong>
6040
{isEditable ? (
@@ -78,6 +58,16 @@ export const OctopusImagingOrderDisplay = ({
7858
payload.requestType
7959
)}
8060
</div>
61+
<img
62+
src={payload.thumbnail}
63+
css={css`
64+
object-fit: contain;
65+
width: 100%;
66+
height: 100%;
67+
`}
68+
draggable={false}
69+
// TODO: hover for larger thumbnail
70+
/>
8171
</div>
8272
);
8373
};

client/src/itemInputBox.tsx

Lines changed: 98 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { Group, User } from "shared/graphql/graphql";
88
import { AvatarRoundel } from "./avatarRoundel";
99
import { agateSans } from "../fontNormaliser";
1010
import { scrollbarsCss } from "./styling";
11-
import { composer } from "../colours";
11+
import { composer, pinMetal } from "../colours";
1212
import { LazyQueryHookOptions, useApolloClient } from "@apollo/client";
1313
import { gqlSearchMentionableUsers } from "../gql";
1414
import { SvgSpinner } from "@guardian/source-react-components";
@@ -254,53 +254,72 @@ export const ItemInputBox = ({
254254
<div
255255
css={css`
256256
flex-grow: 1;
257-
background-color: white;
258-
border-radius: ${space[1]}px;
259-
padding-bottom: 0.1px;
260-
${rtaStyles}
261257
`}
262258
>
263-
{maybeReplyingToElement}
264-
<ReactTextareaAutocomplete<User | Group>
265-
innerRef={(element) => (textAreaRef.current = element)}
266-
disabled={isSending}
267-
trigger={{
268-
"@": {
269-
dataProvider: addUnverifiedMention
270-
? mentionsDataProvider
271-
: () => [],
272-
component: Suggestion,
273-
output: (userOrGroup) => ({
274-
key: isGroup(userOrGroup)
275-
? userOrGroup.shorthand
276-
: userOrGroup.email,
277-
text: isGroup(userOrGroup)
278-
? groupToMentionHandle(userOrGroup)
279-
: userToMentionHandle(userOrGroup),
280-
caretPosition: "next",
281-
}),
282-
allowWhitespace: true,
283-
},
284-
}}
285-
minChar={0}
286-
loadingComponent={LoadingSuggestions}
287-
placeholder="enter message here..."
288-
value={message}
289-
onFocus={({ target }) => resizeTextArea(target)}
290-
onChange={(event) => {
291-
resizeTextArea(event.target);
292-
setMessage(event.target.value);
293-
}}
294-
onKeyPress={
295-
sendItem &&
296-
((event) => {
297-
event.stopPropagation();
298-
if (isHardReturn(event)) {
299-
const hasSomethingToSend =
300-
payloadToBeSent?.type === IMAGING_REQUEST_ITEM_TYPE
301-
? message
302-
: message?.trim() || payloadToBeSent;
303-
if (!isAsGridPayloadLoading && hasSomethingToSend) {
259+
{payloadToBeSent?.type === IMAGING_REQUEST_ITEM_TYPE && (
260+
<div
261+
css={css`
262+
${agateSans.xxsmall()};
263+
margin-bottom: ${space[1]}px;
264+
color: ${message ? pinMetal : composer.warning["100"]};
265+
`}
266+
>
267+
<em>
268+
You must provide some notes to help Imaging team to understand your
269+
request
270+
</em>
271+
</div>
272+
)}
273+
<div
274+
css={css`
275+
background-color: white;
276+
border-radius: ${space[1]}px;
277+
padding-bottom: 0.1px;
278+
${rtaStyles}
279+
`}
280+
>
281+
{maybeReplyingToElement}
282+
<ReactTextareaAutocomplete<User | Group>
283+
innerRef={(element) => (textAreaRef.current = element)}
284+
disabled={isSending}
285+
trigger={{
286+
"@": {
287+
dataProvider: addUnverifiedMention
288+
? mentionsDataProvider
289+
: () => [],
290+
component: Suggestion,
291+
output: (userOrGroup) => ({
292+
key: isGroup(userOrGroup)
293+
? userOrGroup.shorthand
294+
: userOrGroup.email,
295+
text: isGroup(userOrGroup)
296+
? groupToMentionHandle(userOrGroup)
297+
: userToMentionHandle(userOrGroup),
298+
caretPosition: "next",
299+
}),
300+
allowWhitespace: true,
301+
},
302+
}}
303+
minChar={0}
304+
loadingComponent={LoadingSuggestions}
305+
placeholder="enter message here..."
306+
value={message}
307+
onFocus={({ target }) => resizeTextArea(target)}
308+
onChange={(event) => {
309+
resizeTextArea(event.target);
310+
setMessage(event.target.value);
311+
}}
312+
onKeyPress={
313+
sendItem &&
314+
((event) => {
315+
event.stopPropagation();
316+
if (isHardReturn(event)) {
317+
const hasSomethingToSend =
318+
payloadToBeSent?.type === IMAGING_REQUEST_ITEM_TYPE
319+
? message
320+
: message?.trim() || payloadToBeSent;
321+
if (!isAsGridPayloadLoading && hasSomethingToSend
322+
) {
304323
sendItem();
305324
}
306325
event.preventDefault();
@@ -320,39 +339,40 @@ export const ItemInputBox = ({
320339
}
321340
/* Firefox needs this hint to get the correct initial height.
322341
Chrome will sometimes show a scrollbar at 21px, so give it a .1px extra as a nudge not to add one */
323-
height: 21.1px;
324-
${addUnverifiedMention ? "max-height: 74px;" : ""}
325-
${agateSans.small({ lineHeight: "tight" })};
326-
resize: none;
327-
${scrollbarsCss(palette.neutral[86])}
328-
`}
329-
boundariesElement={panelElement || undefined}
330-
/>
331-
{isAsGridPayloadLoading && (
332-
<div
333-
css={css`
334-
display: flex;
335-
align-items: center;
336-
padding: 5px;
337-
${agateSans.small({ fontStyle: "italic" })};
338-
`}
339-
>
340-
<SvgSpinner size="small" />
341-
&nbsp;please wait a moment
342-
</div>
343-
)}
344-
{payloadToBeSent && (
345-
<div
346-
css={css`
347-
margin: 0 ${space[1]}px;
342+
height: 21.1px;
343+
${addUnverifiedMention ? "max-height: 74px;" : ""}
344+
${agateSans.small({ lineHeight: "tight" })};
345+
resize: none;
346+
${scrollbarsCss(palette.neutral[86])}
348347
`}
349-
>
350-
<PayloadDisplay
351-
payloadAndType={payloadToBeSent}
352-
clearPayloadToBeSent={clearPayloadToBeSent}
353-
/>
354-
</div>
355-
)}
348+
boundariesElement={panelElement || undefined}
349+
/>
350+
{isAsGridPayloadLoading && (
351+
<div
352+
css={css`
353+
display: flex;
354+
align-items: center;
355+
padding: 5px;
356+
${agateSans.small({ fontStyle: "italic" })};
357+
`}
358+
>
359+
<SvgSpinner size="small" />
360+
&nbsp;please wait a moment
361+
</div>
362+
)}
363+
{payloadToBeSent && (
364+
<div
365+
css={css`
366+
margin: 0 ${space[1]}px;
367+
`}
368+
>
369+
<PayloadDisplay
370+
payloadAndType={payloadToBeSent}
371+
clearPayloadToBeSent={clearPayloadToBeSent}
372+
/>
373+
</div>
374+
)}
375+
</div>
356376
</div>
357377
);
358378
};

0 commit comments

Comments
 (0)