Skip to content

Commit b706a7e

Browse files
authored
feat(tiles): allow users to toggle between editing and viewing (#1238)
<img width="502" height="189" alt="image" src="https://github.com/user-attachments/assets/d4ce4e83-a390-4e81-b597-4584e4f6841f" />
1 parent 60c6770 commit b706a7e

File tree

2 files changed

+14
-19
lines changed

2 files changed

+14
-19
lines changed

packages/frontend/src/pages/Tile/components/TableBanner/EditMode.tsx

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { useMemo } from 'react'
2+
import { BiChevronDown } from 'react-icons/bi'
23
import { MdOutlineModeEdit, MdOutlineRemoveRedEye } from 'react-icons/md'
34
import { Flex, MenuButton, MenuItem, MenuList, Text } from '@chakra-ui/react'
45
import { Badge, Menu } from '@opengovsg/design-system-react'
@@ -14,18 +15,18 @@ interface ModeOption {
1415
}
1516

1617
const MODES: ModeOption[] = [
17-
{
18-
label: 'View only',
19-
icon: <MdOutlineRemoveRedEye size={16} />,
20-
colorScheme: 'secondary',
21-
value: 'view',
22-
},
2318
{
2419
label: 'Edit Mode',
2520
icon: <MdOutlineModeEdit size={16} />,
2621
colorScheme: 'primary',
2722
value: 'edit',
2823
},
24+
{
25+
label: 'View only',
26+
icon: <MdOutlineRemoveRedEye size={16} />,
27+
colorScheme: 'secondary',
28+
value: 'view',
29+
},
2930
]
3031

3132
const EditMode = () => {
@@ -36,31 +37,25 @@ const EditMode = () => {
3637
[mode],
3738
)
3839

39-
if (hasEditPermission) {
40-
return null
41-
}
42-
4340
return (
4441
<Menu gutter={0} colorScheme="secondary">
4542
<Badge
4643
as={MenuButton}
47-
/**
48-
* Prevent the button from being clicked, as it is only used to display the current mode
49-
* remove this prop to allow selection of view/edit mode
50-
*/
51-
pointerEvents="none"
5244
variant="subtle"
5345
size="xs"
5446
fontSize="xs"
55-
py={1}
47+
height={{ base: 10, md: 7 }}
48+
my="auto"
5649
border="none"
5750
colorScheme={selectedModeOption.colorScheme}
51+
pointerEvents={hasEditPermission ? 'auto' : 'none'}
5852
>
59-
<Flex alignItems="center" gap={1}>
53+
<Flex alignItems="center" gap={2}>
6054
{selectedModeOption.icon}
6155
<Text display={{ base: 'none', md: 'flex' }}>
6256
{selectedModeOption.label}
6357
</Text>
58+
{hasEditPermission && <BiChevronDown />}
6459
</Flex>
6560
</Badge>
6661

packages/frontend/src/pages/Tile/components/TableBanner/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ function TableBanner() {
2020
overflow="hidden"
2121
zIndex={10}
2222
>
23-
<Flex alignItems="center" gap={4}>
23+
<Flex alignItems="center" gap={8}>
2424
{role ? <BreadCrumb /> : <Text textStyle="subhead-1">{tableName}</Text>}
25-
<EditMode />
2625
</Flex>
2726
<Flex gap={2}>
2827
<RefreshButton />
28+
<EditMode />
2929
<ImportExportToolbar />
3030
</Flex>
3131
</Flex>

0 commit comments

Comments
 (0)