Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
3681b72
fix(vote): update vote flow and validate context metadata; fix tests …
JosephRana11 Sep 3, 2025
e6e6b0b
chore: update vote rationale context validation logic
JosephRana11 Sep 4, 2025
c04491a
Merge pull request #4053 from JosephRana11/develop
kneerose Sep 4, 2025
5c351b3
fix: update Random sort option to Activity sort for DReps list displa…
JosephRana11 Sep 4, 2025
86ed7ba
Merge pull request #4055 from JosephRana11/develop
kneerose Sep 4, 2025
33378f1
Unify and Enhance Search Experience in Live Voting Section #4008
Sep 4, 2025
6d66493
Merge pull request #4056 from IntersectMBO/issue-4008-at
bosko-m Sep 4, 2025
dd7a423
fix drep vote calculation for proposal display tests
JosephRana11 Sep 5, 2025
5ac3838
Merge pull request #4057 from JosephRana11/develop
kneerose Sep 5, 2025
09bf4c3
🐛 Governance Action Page Fails When Index Is Missing in URL and walle…
Sep 5, 2025
b29634c
Merge pull request #4061 from IntersectMBO/issue-4058
bosko-m Sep 5, 2025
18726f1
Issue 4062 Filter ans Sorting Icons goes to new line
mirekzielinski Sep 5, 2025
40a5bf4
Merge pull request #4063 from IntersectMBO/issue4062
bosko-m Sep 8, 2025
10eb266
chore: update @intersect.mbo/govtool-outcomes-pillar-ui to v1.5.8
github-actions[bot] Sep 9, 2025
1fb1075
Merge pull request #4064 from IntersectMBO/chore/@intersect.mbo/govto…
bosko-m Sep 9, 2025
072fb70
Fix/Issue 4062 Filter ans Sorting Icons goes to new line
mirekzielinski Sep 9, 2025
9ed3077
Merge pull request #4065 from IntersectMBO/issue4602/fix
bosko-m Sep 10, 2025
07255d2
chore: update @intersect.mbo/pdf-ui to 1.0.14-beta
github-actions[bot] Sep 10, 2025
117fe94
Merge pull request #4067 from IntersectMBO/chore/@intersect.mbo/pdf-u…
bosko-m Sep 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions govtool/frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions govtool/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@
"@emotion/styled": "^11.11.0",
"@emurgo/cardano-serialization-lib-asmjs": "^14.1.1",
"@hookform/resolvers": "^3.3.1",
"@intersect.mbo/govtool-outcomes-pillar-ui": "v1.5.7",
"@intersect.mbo/govtool-outcomes-pillar-ui": "v1.5.8",
"@intersect.mbo/intersectmbo.org-icons-set": "^1.0.8",
"@intersect.mbo/pdf-ui": "1.0.13-beta",
"@intersect.mbo/pdf-ui": "1.0.14-beta",
"@mui/icons-material": "^5.14.3",
"@mui/material": "^5.14.4",
"@noble/ed25519": "^2.3.0",
Expand Down
82 changes: 46 additions & 36 deletions govtool/frontend/src/components/molecules/DataActionsBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,9 @@ export const DataActionsBar: FC<DataActionsBarProps> = ({
alignItems="center"
display="flex"
justifyContent="space-between"
gap={1.5}
flexWrap="wrap"
gap={{ xs: 0.75, sm: 1.5 }}
flexWrap={{ xs: "wrap", sm: "nowrap" }}
width="100%"
>
<InputBase
inputProps={{ "data-testid": "search-input" }}
Expand All @@ -93,15 +94,15 @@ export const DataActionsBar: FC<DataActionsBarProps> = ({
/>
}
endAdornment={
searchText && (
searchText ? (
<IconButton
size="small"
onClick={() => setSearchText("")}
sx={{ ml: 1 }}
>
<CloseIcon fontSize="small" />
</IconButton>
)
) : null
}
sx={{
bgcolor: "white",
Expand All @@ -113,38 +114,50 @@ export const DataActionsBar: FC<DataActionsBarProps> = ({
fontWeight: 500,
height: 48,
padding: "16px 24px",
maxWidth: 500,
flex: "0 0 auto",
flex: "1 1 0",
minWidth: 0,
maxWidth: "100%",
}}
/>

<OrderActionsChip
chosenFiltersLength={chosenFiltersLength}
filtersOpen={effectiveFiltersOpen}
isFiltering={isFiltering}
setFiltersOpen={setEffectiveFiltersOpen}
chosenSorting={chosenSorting}
setSortOpen={setEffectiveSortOpen}
sortOpen={effectiveSortOpen}
<Box
sx={{
display: "flex",
alignItems: "center",
gap: { xs: 0.5, sm: 1.25 },
flex: "0 0 auto",
flexShrink: 0,
mt: { xs: 1, sm: 0 },
}}
>
{effectiveFiltersOpen && (
<DataActionsFilters
chosenFilters={chosenFilters}
setChosenFilters={setChosenFilters}
closeFilters={closeFilters}
options={filterOptions}
title={filtersTitle}
/>
)}
{effectiveSortOpen && (
<DataActionsSorting
chosenSorting={chosenSorting}
setChosenSorting={setChosenSorting}
closeSorts={closeSorts}
options={sortOptions}
/>
)}
</OrderActionsChip>
<OrderActionsChip
chosenFiltersLength={chosenFiltersLength}
filtersOpen={effectiveFiltersOpen}
isFiltering={isFiltering}
setFiltersOpen={setEffectiveFiltersOpen}
chosenSorting={chosenSorting}
setSortOpen={setEffectiveSortOpen}
sortOpen={effectiveSortOpen}
>
{effectiveFiltersOpen && (
<DataActionsFilters
chosenFilters={chosenFilters}
setChosenFilters={setChosenFilters}
closeFilters={closeFilters}
options={filterOptions}
title={filtersTitle}
/>
)}
{effectiveSortOpen && (
<DataActionsSorting
chosenSorting={chosenSorting}
setChosenSorting={setChosenSorting}
closeSorts={closeSorts}
options={sortOptions}
/>
)}
</OrderActionsChip>
</Box>
</Box>

{selectedFilterItems.length > 0 && (
Expand All @@ -153,10 +166,7 @@ export const DataActionsBar: FC<DataActionsBarProps> = ({
flexWrap="wrap"
gap={1}
alignItems="flex-start"
sx={{
mt: 2,
"& > *": { flex: "0 0 auto", alignSelf: "flex-start" },
}}
sx={{ mt: 2, "& > *": { flex: "0 0 auto", alignSelf: "flex-start" } }}
>
{selectedFilterItems.map(({ key, label }) => (
<ChipButton
Expand Down
129 changes: 73 additions & 56 deletions govtool/frontend/src/components/organisms/DashboardDrawerMobile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,34 @@ import { useFeatureFlag } from "@context";
import { DashboardDrawerMobileProps } from "./types";

const DRAWER_PADDING = 2;
// 8 is number of multiple in Material UI 2 is left and right side
const CALCULATED_DRAWER_PADDING = DRAWER_PADDING * 8 * 2;

type DrawerLinkBase = {
dataTestId?: string;
label: string;
navTo: string;
newTabLink?: string;
};

type NavItem = DrawerLinkBase & {
childNavItems?: DrawerLinkBase[];
};

export const DashboardDrawerMobile = ({
isDrawerOpen,
setIsDrawerOpen,
}: DashboardDrawerMobileProps) => {
const { isProposalDiscussionForumEnabled, isGovernanceOutcomesPillarEnabled } = useFeatureFlag();
const {
isProposalDiscussionForumEnabled,
isGovernanceOutcomesPillarEnabled,
} = useFeatureFlag();
const { screenWidth } = useScreenDimension();
const { voter } = useGetVoterInfo();

const openDrawer = () => {
setIsDrawerOpen(true);
};
const openDrawer = () => setIsDrawerOpen(true);
const closeDrawer = () => setIsDrawerOpen(false);

const closeDrawer = () => {
setIsDrawerOpen(false);
};
const navItems = CONNECTED_NAV_ITEMS as unknown as NavItem[];

return (
<SwipeableDrawer
Expand Down Expand Up @@ -73,65 +83,72 @@ export const DashboardDrawerMobile = ({
<img alt="drawer" src={ICONS.closeDrawerIcon} />
</IconButton>
</Box>

<Grid container direction="column" rowGap={4} mt={6}>
{CONNECTED_NAV_ITEMS.map((navItem) => (
<Grid item>
{navItems.map((navItem, i) => (
<Grid
item
key={
navItem.dataTestId ??
navItem.label ??
navItem.navTo ??
`nav-${i}`
}
>
<Link
{...navItem}
size="big"
onClick={() => {
if (navItem.newTabLink) {
openInNewTab(navItem.newTabLink);
}
setIsDrawerOpen(false);
}}
if (navItem.newTabLink) openInNewTab(navItem.newTabLink);
setIsDrawerOpen(false);
}}
isConnectWallet
/>
{navItem.childNavItems && (
<Grid
container
direction="column"
rowGap={4}
mt={3}
pl={3}
>
{navItem.childNavItems.map((childItem) => {
if (
!isProposalDiscussionForumEnabled &&
childItem.dataTestId === "proposal-discussion-link"
) {
return null;
}

if (
!isGovernanceOutcomesPillarEnabled &&
(childItem.dataTestId === "governance-actions-voted-by-me-link" ||
childItem.dataTestId === "governance-actions-outcomes-link")
) {
return null;
}

return (
<Link
key={childItem.label}
{...childItem}
size="big"
onClick={() => {
if (childItem.newTabLink) {
openInNewTab(childItem.newTabLink);
}
setIsDrawerOpen(false);
}}
isConnectWallet
/>
);
})}
</Grid>
)}
{!!navItem.childNavItems?.length && (
<Grid container direction="column" rowGap={4} mt={3} pl={3}>
{navItem.childNavItems.map((childItem, ci) => {
if (
!isProposalDiscussionForumEnabled &&
childItem.dataTestId === "proposal-discussion-link"
) {
return null;
}
if (
!isGovernanceOutcomesPillarEnabled &&
(childItem.dataTestId ===
"governance-actions-voted-by-me-link" ||
childItem.dataTestId ===
"governance-actions-outcomes-link")
) {
return null;
}
return (
<Link
key={
childItem.dataTestId ??
childItem.label ??
childItem.navTo ??
`child-${i}-${ci}`
}
{...childItem}
size="big"
onClick={() => {
if (childItem.newTabLink)
openInNewTab(childItem.newTabLink);
setIsDrawerOpen(false);
}}
isConnectWallet
/>
);
})}
</Grid>
)}
</Grid>
))}
))}
</Grid>
</Box>

{(voter?.isRegisteredAsDRep || voter?.isRegisteredAsSoleVoter) && (
<DRepInfoCard />
)}
Expand Down
Loading
Loading