Skip to content

Commit 5cb7ded

Browse files
committed
ui: Updated AddSession component to include permissions dropdown
1 parent 03c5d74 commit 5cb7ded

File tree

3 files changed

+47
-6
lines changed

3 files changed

+47
-6
lines changed

app/src/components/common/FormSelect.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ interface Props {
5858
extra?: ReactNode;
5959
placeholder?: string;
6060
onChange?: (value: string) => void;
61+
className?: string;
6162
}
6263

6364
const FormSelect: React.FC<Props> = ({
@@ -66,17 +67,17 @@ const FormSelect: React.FC<Props> = ({
6667
value,
6768
placeholder,
6869
onChange,
70+
className,
6971
}) => {
7072
const { Wrapper, Select } = Styled;
7173
return (
72-
<Wrapper>
74+
<Wrapper className={className}>
7375
<Select
7476
value={value}
7577
onChange={v => onChange && onChange(v as string)}
7678
placeholder={placeholder}
7779
aria-label={label}
7880
options={options}
79-
dropdownClassName="asdf"
8081
/>
8182
</Wrapper>
8283
);

app/src/components/connect/AddSession.tsx

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ import React, { useCallback, useState } from 'react';
22
import { observer } from 'mobx-react-lite';
33
import styled from '@emotion/styled';
44
import { usePrefixedTranslation } from 'hooks';
5+
import * as LIT from 'types/generated/lit-sessions_pb';
56
import { MAX_DATE } from 'util/constants';
67
import { useStore } from 'store';
78
import { Button, Column, HeaderFour, Row } from 'components/base';
89
import FormField from 'components/common/FormField';
910
import FormInput from 'components/common/FormInput';
11+
import FormSelect from 'components/common/FormSelect';
1012
import PurpleButton from './PurpleButton';
1113

1214
const Styled = {
@@ -21,6 +23,17 @@ const Styled = {
2123
padding: 12px 16px;
2224
}
2325
`,
26+
FormSelect: styled(FormSelect)`
27+
.rc-select {
28+
font-family: ${props => props.theme.fonts.open.regular};
29+
font-size: ${props => props.theme.sizes.m};
30+
padding: 12px 40px 8px 0px;
31+
}
32+
33+
.rc-select-selection-item {
34+
padding-left: 14px;
35+
}
36+
`,
2437
};
2538

2639
interface Props {
@@ -32,18 +45,25 @@ const AddSession: React.FC<Props> = ({ primary }) => {
3245
const { sessionStore } = useStore();
3346

3447
const [label, setLabel] = useState('');
48+
const [permissions, setPermissions] = useState('admin');
3549
const [editing, setEditing] = useState(false);
3650

3751
const toggleEditing = useCallback(() => setEditing(e => !e), []);
3852
const handleSubmit = useCallback(async () => {
39-
const session = await sessionStore.addSession(label, MAX_DATE);
53+
const sessionType =
54+
permissions === 'admin'
55+
? LIT.SessionType.TYPE_MACAROON_ADMIN
56+
: LIT.SessionType.TYPE_MACAROON_READONLY;
57+
58+
const session = await sessionStore.addSession(label, sessionType, MAX_DATE);
59+
4060
if (session) {
4161
setLabel('');
4262
setEditing(false);
4363
}
44-
}, [label]);
64+
}, [label, permissions]);
4565

46-
const { Wrapper, FormHeader, FormInput } = Styled;
66+
const { Wrapper, FormHeader, FormInput, FormSelect } = Styled;
4767
if (!editing) {
4868
return (
4969
<PurpleButton tertiary={!primary} onClick={toggleEditing}>
@@ -54,13 +74,32 @@ const AddSession: React.FC<Props> = ({ primary }) => {
5474

5575
return (
5676
<Wrapper>
57-
<FormHeader>{l('label')}</FormHeader>
77+
<Row>
78+
<Column>
79+
<FormHeader>{l('label')}</FormHeader>
80+
</Column>
81+
<Column>
82+
<FormHeader>{l('permissions')}</FormHeader>
83+
</Column>
84+
</Row>
5885
<Row>
5986
<Column cols={6}>
6087
<FormField>
6188
<FormInput value={label} onChange={setLabel} placeholder={l('labelHint')} />
6289
</FormField>
6390
</Column>
91+
<Column>
92+
<FormField>
93+
<FormSelect
94+
value={permissions}
95+
onChange={setPermissions}
96+
options={[
97+
{ label: 'Admin', value: 'admin' },
98+
{ label: 'Read Only', value: 'read-only' },
99+
]}
100+
/>
101+
</FormField>
102+
</Column>
64103
<Column>
65104
<PurpleButton onClick={handleSubmit}>{l('common.submit')}</PurpleButton>
66105
<Button ghost borderless onClick={toggleEditing}>

app/src/i18n/locales/en-US.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"cmps.common.Wizard.backTip": "Back to Previous",
3434
"cmps.connect.AddSession.create": "Create a new session",
3535
"cmps.connect.AddSession.label": "Label",
36+
"cmps.connect.AddSession.permissions": "Permissions",
3637
"cmps.connect.AddSession.labelHint": "My First Session",
3738
"cmps.connect.AddSession.expiration": "Expiration",
3839
"cmps.connect.AddSession.expirationSuffix": "",

0 commit comments

Comments
 (0)