Skip to content

Commit 7d9815e

Browse files
committed
refactor: set max-height to 75vh on scrollable modals
1 parent 5d61fad commit 7d9815e

16 files changed

Lines changed: 78 additions & 116 deletions

File tree

client/src/components/Logs.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@
1616
* limitations under the License.
1717
*/
1818

19+
import cx from "classnames";
1920
import React, { createRef, ReactNode, useEffect, useState } from "react";
21+
import { ArrowRepeat, FileEarmarkArrowDown } from "react-bootstrap-icons";
2022
import {
2123
Button,
22-
Modal,
2324
ModalBody,
2425
ModalFooter,
2526
ModalHeader,
@@ -42,9 +43,7 @@ import {
4243
generateZip,
4344
} from "../utils/helpers/HelperFunctions";
4445
import { Loader } from "./Loader";
45-
46-
import cx from "classnames";
47-
import { ArrowRepeat, FileEarmarkArrowDown } from "react-bootstrap-icons";
46+
import ScrollableModal from "./modal/ScrollableModal";
4847

4948
import styles from "./Logs.module.scss";
5049

@@ -460,10 +459,9 @@ function EnvironmentLogsPresent({
460459
if (!logs?.show || logs?.show !== name || !logs) return null;
461460

462461
return (
463-
<Modal
462+
<ScrollableModal
464463
isOpen={!!logs.show}
465464
className="modal-xl"
466-
scrollable={true}
467465
toggle={() => {
468466
toggleLogs(name);
469467
}}
@@ -488,7 +486,7 @@ function EnvironmentLogsPresent({
488486
<ModalFooter>
489487
<SessionLogsButtons fetchLogs={fetchLogs} logs={logs} name={name} />
490488
</ModalFooter>
491-
</Modal>
489+
</ScrollableModal>
492490
);
493491
}
494492

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
.modal :global(.modal-content) {
22
height: unset !important;
3+
4+
& :global(.modal-body) {
5+
max-height: 75vh;
6+
}
37
}

client/src/features/ProjectPageV2/ProjectPageContent/DataConnectors/ProjectConnectDataConnectorsModal.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,31 @@ import {
3232
Form,
3333
Input,
3434
Label,
35-
Modal,
3635
ModalBody,
3736
ModalFooter,
3837
} from "reactstrap";
38+
3939
import { RtkOrNotebooksError } from "../../../../components/errors/RtkErrorAlert";
40+
import { ExternalLink } from "../../../../components/ExternalLinks";
4041
import { Loader } from "../../../../components/Loader";
4142
import ModalHeader from "../../../../components/modal/ModalHeader";
43+
import ScrollableModal from "../../../../components/modal/ScrollableModal";
4244
import useAppDispatch from "../../../../utils/customHooks/useAppDispatch.hook";
4345
import useAppSelector from "../../../../utils/customHooks/useAppSelector.hook";
4446
import {
4547
dataConnectorsApi,
4648
usePostDataConnectorsByDataConnectorIdProjectLinksMutation,
4749
usePostDataConnectorsGlobalMutation,
4850
} from "../../../dataConnectorsV2/api/data-connectors.enhanced-api";
51+
import { DATA_CONNECTORS_DOI_DOCS_URL } from "../../../dataConnectorsV2/components/dataConnector.constants";
4952
import DataConnectorModal, {
5053
DataConnectorModalBodyAndFooter,
5154
} from "../../../dataConnectorsV2/components/DataConnectorModal/index";
5255
import dataConnectorFormSlice from "../../../dataConnectorsV2/state/dataConnectors.slice";
5356
import type { Project } from "../../../projectsV2/api/projectV2.api";
5457
import { projectV2Api } from "../../../projectsV2/api/projectV2.enhanced-api";
58+
5559
import styles from "../../../dataConnectorsV2/components/DataConnectorModal/DataConnectorModal.module.scss";
56-
import { ExternalLink } from "../../../../components/ExternalLinks";
57-
import { DATA_CONNECTORS_DOI_DOCS_URL } from "../../../dataConnectorsV2/components/dataConnector.constants";
5860

5961
interface ProjectConnectDataConnectorsModalProps
6062
extends Omit<
@@ -79,15 +81,14 @@ export default function ProjectConnectDataConnectorsModal({
7981
originalToggle();
8082
}, [dispatch, originalToggle]);
8183
return (
82-
<Modal
84+
<ScrollableModal
8385
backdrop="static"
8486
centered
8587
className={styles.modal}
8688
data-cy="project-data-connector-connect-modal"
8789
fullscreen="lg"
8890
id={"connect-project-data-connector"}
8991
isOpen={isOpen}
90-
scrollable
9192
size="lg"
9293
unmountOnClose={false}
9394
toggle={toggle}
@@ -127,7 +128,7 @@ export default function ProjectConnectDataConnectorsModal({
127128
}}
128129
/>
129130
)}
130-
</Modal>
131+
</ScrollableModal>
131132
);
132133
}
133134

client/src/features/ProjectPageV2/ProjectPageContent/Documentation/Documentation.module.scss

Lines changed: 0 additions & 3 deletions
This file was deleted.

client/src/features/ProjectPageV2/ProjectPageContent/Documentation/Documentation.tsx

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919
import cx from "classnames";
2020
import { useCallback, useEffect, useState } from "react";
21-
2221
import { FileEarmarkText, Markdown, Pencil, XLg } from "react-bootstrap-icons";
22+
import { useForm } from "react-hook-form";
2323
import {
2424
Button,
2525
ButtonGroup,
@@ -30,23 +30,18 @@ import {
3030
ModalBody,
3131
ModalFooter,
3232
} from "reactstrap";
33-
import { useForm } from "react-hook-form";
3433

3534
import { RtkOrNotebooksError } from "../../../../components/errors/RtkErrorAlert";
35+
import { ExternalLink } from "../../../../components/ExternalLinks";
3636
import { Loader } from "../../../../components/Loader";
37-
import ModalHeader from "../../../../components/modal/ModalHeader";
3837
import LazyRenkuMarkdown from "../../../../components/markdown/LazyRenkuMarkdown";
38+
import ModalHeader from "../../../../components/modal/ModalHeader";
3939
import ScrollableModal from "../../../../components/modal/ScrollableModal";
40-
4140
import PermissionsGuard from "../../../permissionsV2/PermissionsGuard";
4241
import { Project } from "../../../projectsV2/api/projectV2.api";
4342
import { usePatchProjectsByProjectIdMutation } from "../../../projectsV2/api/projectV2.enhanced-api";
44-
4543
import useProjectPermissions from "../../utils/useProjectPermissions.hook";
46-
4744
import DocumentationInput from "./DocumentationInput";
48-
import { ExternalLink } from "../../../../components/ExternalLinks";
49-
import styles from "./Documentation.module.scss";
5045

5146
// Taken from src/features/projectsV2/api/projectV2.openapi.json
5247
const DESCRIPTION_MAX_LENGTH = 5000;
@@ -219,10 +214,7 @@ function DocumentationModal({
219214
/>
220215

221216
<Form noValidate onSubmit={handleSubmit(onSubmit)}>
222-
<ModalBody
223-
data-cy="project-documentation-modal-body"
224-
className={styles.modalBody}
225-
>
217+
<ModalBody data-cy="project-documentation-modal-body">
226218
<div className={cx("d-flex", "gap-4")}>
227219
<ButtonGroup size="sm">
228220
<Button

client/src/features/admin/AddManyUsersToResourcePoolButton.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ import {
4141
FormText,
4242
Input,
4343
Label,
44-
Modal,
4544
ModalBody,
4645
ModalFooter,
4746
ModalHeader,
4847
} from "reactstrap";
4948

5049
import { Loader } from "../../components/Loader";
5150
import { RtkErrorAlert } from "../../components/errors/RtkErrorAlert";
51+
import ScrollableModal from "../../components/modal/ScrollableModal";
5252
import { useAddUsersToResourcePoolMutation } from "../dataServices/computeResources.api";
5353
import { ResourcePool } from "../dataServices/dataServices.types";
5454
import { useGetKeycloakUsersQuery } from "./adminKeycloak.api";
@@ -183,13 +183,12 @@ function AddManyUsersToResourcePoolModal({
183183
}, [isOpen, reset, result]);
184184

185185
return (
186-
<Modal
186+
<ScrollableModal
187187
className={styles.modal}
188188
backdrop="static"
189189
centered
190190
fullscreen="lg"
191191
isOpen={isOpen}
192-
scrollable
193192
size="lg"
194193
toggle={toggle}
195194
>
@@ -302,7 +301,7 @@ function AddManyUsersToResourcePoolModal({
302301
</Button>
303302
)}
304303
</ModalFooter>
305-
</Modal>
304+
</ScrollableModal>
306305
);
307306
}
308307

client/src/features/admin/UpdateResourceClassButton.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,14 @@ import {
2626
Input,
2727
InputGroup,
2828
Label,
29-
Modal,
3029
ModalBody,
3130
ModalFooter,
3231
ModalHeader,
3332
} from "reactstrap";
33+
3434
import { Loader } from "../../components/Loader";
3535
import { RtkErrorAlert } from "../../components/errors/RtkErrorAlert";
36+
import ScrollableModal from "../../components/modal/ScrollableModal";
3637
import { useUpdateResourceClassMutation } from "../dataServices/computeResources.api";
3738
import {
3839
NodeAffinity,
@@ -167,13 +168,12 @@ function UpdateResourceClassModal({
167168
}, [reset, resourceClass]);
168169

169170
return (
170-
<Modal
171+
<ScrollableModal
171172
backdrop="static"
172173
centered
173174
className={styles.modal}
174175
fullscreen="lg"
175176
isOpen={isOpen}
176-
scrollable
177177
size="lg"
178178
toggle={toggle}
179179
>
@@ -463,7 +463,7 @@ function UpdateResourceClassModal({
463463
Update resource class
464464
</Button>
465465
</ModalFooter>
466-
</Modal>
466+
</ScrollableModal>
467467
);
468468
}
469469

client/src/features/dataConnectorsV2/components/DataConnectorModal/index.tsx

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,33 +20,30 @@ import { skipToken } from "@reduxjs/toolkit/query";
2020
import cx from "classnames";
2121
import { useCallback, useEffect } from "react";
2222
import { Database } from "react-bootstrap-icons";
23-
import { Modal, ModalBody, ModalFooter, ModalHeader } from "reactstrap";
23+
import { ModalBody, ModalFooter, ModalHeader } from "reactstrap";
2424

2525
import { RtkOrNotebooksError } from "../../../../components/errors/RtkErrorAlert";
2626
import { Loader } from "../../../../components/Loader";
27+
import ScrollableModal from "../../../../components/modal/ScrollableModal";
2728
import useAppDispatch from "../../../../utils/customHooks/useAppDispatch.hook";
28-
29+
import PermissionsGuard from "../../../permissionsV2/PermissionsGuard";
2930
import { useGetStorageSchemaQuery } from "../../../project/components/cloudStorage/api/projectCloudStorage.api";
3031
import {
3132
CLOUD_STORAGE_TOTAL_STEPS,
3233
EMPTY_CLOUD_STORAGE_STATE,
3334
} from "../../../project/components/cloudStorage/projectCloudStorage.constants";
3435
import { AddCloudStorageState } from "../../../project/components/cloudStorage/projectCloudStorage.types";
35-
36-
import PermissionsGuard from "../../../permissionsV2/PermissionsGuard";
3736
import type { Project } from "../../../projectsV2/api/projectV2.api";
38-
39-
import { useGetDataConnectorsByDataConnectorIdSecretsQuery } from "../../api/data-connectors.enhanced-api";
4037
import type { DataConnectorRead } from "../../api/data-connectors.api";
38+
import { useGetDataConnectorsByDataConnectorIdSecretsQuery } from "../../api/data-connectors.enhanced-api";
4139
import dataConnectorFormSlice from "../../state/dataConnectors.slice";
4240
import useDataConnectorPermissions from "../../utils/useDataConnectorPermissions.hook";
43-
4441
import { dataConnectorToFlattened } from "../dataConnector.utils";
45-
46-
import styles from "./DataConnectorModal.module.scss";
4742
import DataConnectorModalBody from "./DataConnectorModalBody";
4843
import DataConnectorModalFooter from "./DataConnectorModalFooter";
4944

45+
import styles from "./DataConnectorModal.module.scss";
46+
5047
export function DataConnectorModalBodyAndFooter({
5148
dataConnector = null,
5249
isOpen,
@@ -164,15 +161,14 @@ export default function DataConnectorModal({
164161
}, [dispatch, originalToggle]);
165162

166163
return (
167-
<Modal
164+
<ScrollableModal
168165
backdrop="static"
169166
centered
170167
className={styles.modal}
171168
data-cy="data-connector-edit-modal"
172169
fullscreen="lg"
173170
id={dataConnector?.id ?? "new-data-connector"}
174171
isOpen={isOpen}
175-
scrollable
176172
size="lg"
177173
unmountOnClose={false}
178174
toggle={toggle}
@@ -210,7 +206,7 @@ export default function DataConnectorModal({
210206
) : (
211207
<DataConnectorModalBodyAndFooterUnauthorized />
212208
)}
213-
</Modal>
209+
</ScrollableModal>
214210
);
215211
}
216212

client/src/features/groupsV2/new/GroupNew.tsx

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,27 +21,21 @@ import { useCallback, useEffect } from "react";
2121
import { CheckLg, People, XLg } from "react-bootstrap-icons";
2222
import { useForm } from "react-hook-form";
2323
import { generatePath, useNavigate } from "react-router";
24-
import {
25-
Button,
26-
Form,
27-
FormGroup,
28-
Modal,
29-
ModalBody,
30-
ModalFooter,
31-
} from "reactstrap";
24+
import { Button, Form, FormGroup, ModalBody, ModalFooter } from "reactstrap";
3225

3326
import { RtkOrNotebooksError } from "../../../components/errors/RtkErrorAlert";
3427
import { Loader } from "../../../components/Loader";
35-
import ModalHeader from "../../../components/modal/ModalHeader";
3628
import LoginAlert from "../../../components/loginAlert/LoginAlert";
29+
import ModalHeader from "../../../components/modal/ModalHeader";
30+
import ScrollableModal from "../../../components/modal/ScrollableModal";
3731
import { ABSOLUTE_ROUTES } from "../../../routing/routes.constants";
3832
import useLocationHash from "../../../utils/customHooks/useLocationHash.hook";
3933
import { slugFromTitle } from "../../../utils/helpers/HelperFunctions";
4034
import type { GroupPostRequest } from "../../projectsV2/api/namespace.api";
4135
import { usePostGroupsMutation } from "../../projectsV2/api/projectV2.enhanced-api";
4236
import DescriptionFormField from "../../projectsV2/fields/DescriptionFormField";
4337
import NameFormField from "../../projectsV2/fields/NameFormField";
44-
import SlugPreviewFormField from "../../projectsV2/fields/SlugPreviewFormField.tsx";
38+
import SlugPreviewFormField from "../../projectsV2/fields/SlugPreviewFormField";
4539
import { useGetUserQuery } from "../../usersV2/api/users.api";
4640
import { GROUP_CREATION_HASH } from "./createGroup.constants";
4741

@@ -59,13 +53,12 @@ export default function GroupNew() {
5953

6054
return (
6155
<>
62-
<Modal
56+
<ScrollableModal
6357
backdrop="static"
6458
centered
6559
data-cy="new-group-modal"
6660
fullscreen="lg"
6761
isOpen={showGroupCreationModal}
68-
scrollable
6962
size="lg"
7063
unmountOnClose={true}
7164
toggle={toggleModal}
@@ -102,7 +95,7 @@ export default function GroupNew() {
10295
</ModalBody>
10396
)}
10497
</div>
105-
</Modal>
98+
</ScrollableModal>
10699
</>
107100
);
108101
}

0 commit comments

Comments
 (0)