Skip to content

Commit 429dfb4

Browse files
authored
Add HelpTips to Console (#3054)
1 parent 1d7bb0b commit 429dfb4

21 files changed

+556
-45
lines changed

portal-ui/src/screens/Console/Account/AddServiceAccountScreen.tsx

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import {
2828
InputBox,
2929
Switch,
3030
ServiceAccountIcon,
31+
HelpTip,
3132
} from "mds";
3233
import { modalStyleUtils } from "../Common/FormComponents/common/styleLibrary";
3334
import { NewServiceAccount } from "../Common/CredentialsPrompt/types";
@@ -190,10 +191,24 @@ const AddServiceAccount = () => {
190191
{isRestrictedByPolicy && (
191192
<Grid item xs={12}>
192193
<Box>
193-
<PanelTitle>
194-
Current User Policy - edit the JSON to remove permissions
195-
for this Access Key
196-
</PanelTitle>
194+
<HelpTip
195+
content={
196+
<Fragment>
197+
<a
198+
target="blank"
199+
href="https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure"
200+
>
201+
Guide to access policy structure
202+
</a>
203+
</Fragment>
204+
}
205+
placement="right"
206+
>
207+
<PanelTitle>
208+
Current User Policy - edit the JSON to remove
209+
permissions for this Access Key
210+
</PanelTitle>
211+
</HelpTip>
197212
</Box>
198213
<Grid item xs={12} sx={{ ...modalStyleUtils.formScrollable }}>
199214
<CodeMirrorWrapper

portal-ui/src/screens/Console/Account/ServiceAccountPolicy.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
// You should have received a copy of the GNU Affero General Public License
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

17-
import React, { useEffect, useState } from "react";
17+
import React, { useEffect, useState, Fragment } from "react";
1818
import { Button, ChangeAccessPolicyIcon, Grid } from "mds";
1919
import { api } from "api";
2020
import { errorToHandler } from "api/errors";
@@ -98,6 +98,16 @@ const ServiceAccountPolicy = ({
9898
setPolicyDefinition(value);
9999
}}
100100
editorHeight={"350px"}
101+
helptip={
102+
<Fragment>
103+
<a
104+
target="blank"
105+
href="https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/policy-based-access-control.html#policy-document-structure"
106+
>
107+
Guide to access policy structure
108+
</a>
109+
</Fragment>
110+
}
101111
/>
102112
</Grid>
103113
<Grid item xs={12} sx={modalStyleUtils.modalButtonBar}>

portal-ui/src/screens/Console/Buckets/BucketDetails/AccessDetailsPanel.tsx

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import React, { Fragment, useEffect, useState } from "react";
1818
import { useSelector } from "react-redux";
1919
import { useNavigate, useParams } from "react-router-dom";
20-
import { DataTable, SectionTitle, Tabs } from "mds";
20+
import { DataTable, SectionTitle, Tabs, HelpTip } from "mds";
2121
import { api } from "api";
2222
import { errorToHandler } from "api/errors";
2323
import {
@@ -145,7 +145,32 @@ const AccessDetails = () => {
145145

146146
return (
147147
<Fragment>
148-
<SectionTitle separator>Access Audit</SectionTitle>
148+
<SectionTitle separator>
149+
<HelpTip
150+
content={
151+
<Fragment>
152+
Understand which{" "}
153+
<a
154+
target="blank"
155+
href="https://min.io/docs/minio/linux/administration/identity-access-management/policy-based-access-control.html#"
156+
>
157+
Policies
158+
</a>{" "}
159+
and{" "}
160+
<a
161+
target="blank"
162+
href="https://min.io/docs/minio/linux/administration/identity-access-management/minio-user-management.html"
163+
>
164+
Users
165+
</a>{" "}
166+
are authorized to access this Bucket.
167+
</Fragment>
168+
}
169+
placement="right"
170+
>
171+
Access Audit
172+
</HelpTip>
173+
</SectionTitle>
149174
<Tabs
150175
currentTabOrPath={curTab}
151176
onTabClick={(newValue: string) => {

portal-ui/src/screens/Console/Buckets/BucketDetails/AccessRulePanel.tsx

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

1717
import React, { Fragment, useEffect, useState } from "react";
18-
import { AddIcon, Button, DataTable, SectionTitle } from "mds";
18+
import { AddIcon, Button, DataTable, SectionTitle, HelpTip } from "mds";
1919
import { useSelector } from "react-redux";
2020
import { useParams } from "react-router-dom";
2121
import { api } from "api";
@@ -194,7 +194,25 @@ const AccessRule = () => {
194194
</SecureComponent>
195195
}
196196
>
197-
Anonymous Access
197+
<HelpTip
198+
content={
199+
<Fragment>
200+
Setting an{" "}
201+
<a
202+
href="https://min.io/docs/minio/linux/reference/minio-mc/mc-anonymous-set.html"
203+
target="blank"
204+
>
205+
Anonymous
206+
</a>{" "}
207+
policy allows clients to access the Bucket or prefix contents and
208+
perform actions consistent with the specified policy without
209+
authentication.
210+
</Fragment>
211+
}
212+
placement="right"
213+
>
214+
Anonymous Access
215+
</HelpTip>
198216
</SectionTitle>
199217
<SecureComponent
200218
scopes={[IAM_SCOPES.S3_GET_BUCKET_POLICY, IAM_SCOPES.S3_GET_ACTIONS]}

portal-ui/src/screens/Console/Buckets/BucketDetails/AddAccessRule.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
// You should have received a copy of the GNU Affero General Public License
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

17-
import React, { useEffect, useState } from "react";
17+
import React, { useEffect, useState, Fragment } from "react";
1818
import ModalWrapper from "../../Common/ModalWrapper/ModalWrapper";
1919
import {
2020
AddAccessRuleIcon,
@@ -115,6 +115,13 @@ const AddAccessRule = ({
115115
value={selectedAccess}
116116
options={accessOptions}
117117
disabled={false}
118+
helpTip={
119+
<Fragment>
120+
Select the desired level of access available to unauthenticated
121+
Users
122+
</Fragment>
123+
}
124+
helpTipPlacement="right"
118125
/>
119126
<Grid item xs={12} sx={modalStyleUtils.modalButtonBar}>
120127
<Button

portal-ui/src/screens/Console/Buckets/BucketDetails/AddEvent.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
// You should have received a copy of the GNU Affero General Public License
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

17-
import React, { useCallback, useEffect, useState } from "react";
17+
import React, { useCallback, useEffect, useState, Fragment } from "react";
1818
import { Button, DataTable, EventSubscriptionIcon, Grid, InputBox } from "mds";
1919
import { ErrorResponseHandler } from "../../../../common/types";
2020
import { setModalErrorSnackMessage } from "../../../../systemSlice";
@@ -170,6 +170,16 @@ const AddEvent = ({
170170
label={"ARN"}
171171
value={arn}
172172
options={arnValues || []}
173+
helptip={
174+
<Fragment>
175+
<a
176+
target="blank"
177+
href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html"
178+
>
179+
Amazon Resource Name
180+
</a>
181+
</Fragment>
182+
}
173183
/>
174184
</Grid>
175185
<Grid item xs={12} sx={formFieldStyles.formFieldRow}>

portal-ui/src/screens/Console/Buckets/BucketDetails/AddLifecycleModal.tsx

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

1717
import React, { Fragment, useEffect, useState } from "react";
18+
1819
import get from "lodash/get";
1920
import {
2021
Button,
@@ -44,6 +45,7 @@ import ModalWrapper from "../../Common/ModalWrapper/ModalWrapper";
4445
import QueryMultiSelector from "../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector";
4546
import InputUnitMenu from "../../Common/FormComponents/InputUnitMenu/InputUnitMenu";
4647
import FormSwitchWrapper from "../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper";
48+
import { IAM_PAGES } from "common/SecureComponent/permissions";
4749

4850
interface IReplicationModal {
4951
open: boolean;
@@ -218,14 +220,41 @@ const AddLifecycleModal = ({
218220
currentValue={ilmType}
219221
id="ilm_type"
220222
name="ilm_type"
221-
label="Type of lifecycle"
223+
label="Type of Lifecycle"
222224
onChange={(e) => {
223225
setIlmType(e.target.value as "expiry" | "transition");
224226
}}
225227
selectorOptions={[
226228
{ value: "expiry", label: "Expiry" },
227229
{ value: "transition", label: "Transition" },
228230
]}
231+
helpTip={
232+
<Fragment>
233+
Select{" "}
234+
<a
235+
target="blank"
236+
href="https://min.io/docs/minio/kubernetes/upstream/administration/object-management/create-lifecycle-management-expiration-rule.html"
237+
>
238+
Expiry
239+
</a>{" "}
240+
to delete Objects per this rule. Select{" "}
241+
<a
242+
target="blank"
243+
href="https://min.io/docs/minio/kubernetes/upstream/administration/object-management/transition-objects-to-minio.html"
244+
>
245+
Transition
246+
</a>{" "}
247+
to move Objects to a remote storage{" "}
248+
<a
249+
target="blank"
250+
href="https://min.io/docs/minio/windows/administration/object-management/transition-objects-to-minio.html#configure-the-remote-storage-tier"
251+
>
252+
Tier
253+
</a>{" "}
254+
per this rule.
255+
</Fragment>
256+
}
257+
helpTipPlacement="right"
229258
/>
230259
{versioningInfo?.status === "Enabled" && (
231260
<Select
@@ -240,6 +269,20 @@ const AddLifecycleModal = ({
240269
{ value: "current", label: "Current Version" },
241270
{ value: "noncurrent", label: "Non-Current Version" },
242271
]}
272+
helpTip={
273+
<Fragment>
274+
Select whether to apply the rule to current or non-current
275+
Object
276+
<a
277+
target="blank"
278+
href="https://min.io/docs/minio/kubernetes/upstream/administration/object-management/create-lifecycle-management-expiration-rule.html#expire-versioned-objects"
279+
>
280+
{" "}
281+
Versions
282+
</a>
283+
</Fragment>
284+
}
285+
helpTipPlacement="right"
243286
/>
244287
)}
245288

@@ -276,6 +319,20 @@ const AddLifecycleModal = ({
276319
setStorageClass(value as string);
277320
}}
278321
options={tiersList}
322+
helpTip={
323+
<Fragment>
324+
Configure a{" "}
325+
<a
326+
href={IAM_PAGES.TIERS_ADD}
327+
color="secondary"
328+
style={{ textDecoration: "underline" }}
329+
>
330+
remote tier
331+
</a>{" "}
332+
to receive transitioned Objects
333+
</Fragment>
334+
}
335+
helpTipPlacement="right"
279336
/>
280337
)}
281338
<Grid item xs={12} sx={formFieldRowFilter}>

portal-ui/src/screens/Console/Buckets/BucketDetails/BucketEventsPanel.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {
2626
DataTable,
2727
Grid,
2828
SectionTitle,
29+
HelpTip,
2930
} from "mds";
3031
import { api } from "api";
3132
import { NotificationConfig } from "api/consoleApi";
@@ -176,7 +177,24 @@ const BucketEventsPanel = () => {
176177
</SecureComponent>
177178
}
178179
>
179-
Events
180+
<HelpTip
181+
content={
182+
<Fragment>
183+
MinIO{" "}
184+
<a
185+
target="blank"
186+
href="https://min.io/docs/minio/kubernetes/upstream/administration/monitoring.html"
187+
>
188+
bucket notifications
189+
</a>{" "}
190+
allow administrators to send notifications to supported external
191+
services on certain object or bucket events.
192+
</Fragment>
193+
}
194+
placement="right"
195+
>
196+
Events
197+
</HelpTip>
180198
</SectionTitle>
181199

182200
<Grid container>

portal-ui/src/screens/Console/Buckets/BucketDetails/BucketLifecyclePanel.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
HelpBox,
2525
SectionTitle,
2626
TiersIcon,
27+
HelpTip,
2728
} from "mds";
2829
import { useSelector } from "react-redux";
2930
import { api } from "api";
@@ -292,7 +293,24 @@ const BucketLifecyclePanel = () => {
292293
</SecureComponent>
293294
}
294295
>
295-
Lifecycle Rules
296+
<HelpTip
297+
content={
298+
<Fragment>
299+
MinIO derives it’s behavior and syntax from{" "}
300+
<a
301+
target="blank"
302+
href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html"
303+
>
304+
S3 lifecycle
305+
</a>{" "}
306+
for compatibility in migrating workloads and lifecycle rules from
307+
S3 to MinIO.
308+
</Fragment>
309+
}
310+
placement="right"
311+
>
312+
Lifecycle Rules
313+
</HelpTip>
296314
</SectionTitle>
297315
<Grid container>
298316
<Grid item xs={12}>

portal-ui/src/screens/Console/Buckets/BucketDetails/BucketReplicationPanel.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import {
2727
HelpBox,
2828
SectionTitle,
2929
TrashIcon,
30+
HelpTip,
3031
} from "mds";
3132
import api from "../../../../common/api";
3233
import {
@@ -303,7 +304,24 @@ const BucketReplicationPanel = () => {
303304
</Box>
304305
}
305306
>
306-
Replication
307+
<HelpTip
308+
content={
309+
<Fragment>
310+
MinIO{" "}
311+
<a
312+
target="blank"
313+
href="https://min.io/docs/minio/kubernetes/upstream/administration/bucket-replication.html"
314+
>
315+
server-side bucket replication
316+
</a>{" "}
317+
is an automatic bucket-level configuration that synchronizes
318+
objects between a source and destination bucket.
319+
</Fragment>
320+
}
321+
placement="right"
322+
>
323+
Replication
324+
</HelpTip>
307325
</SectionTitle>
308326
<Grid container>
309327
<Grid item xs={12}>

0 commit comments

Comments
 (0)