Skip to content

feat: [DHIS2-21875] Unify overflow menu between View Event page and Stages and Events widget - #4657

Open
henrikmv wants to merge 77 commits into
hv/chore/DHIS2-21941_SingleSourceChangelogValuesfrom
hv/feat/DHIS2-21875_unify-overflow-menus-event
Open

feat: [DHIS2-21875] Unify overflow menu between View Event page and Stages and Events widget#4657
henrikmv wants to merge 77 commits into
hv/chore/DHIS2-21941_SingleSourceChangelogValuesfrom
hv/feat/DHIS2-21875_unify-overflow-menus-event

Conversation

@henrikmv

@henrikmv henrikmv commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

DHIS2-21875

Verification matrix by event status

Baseline: user has canEditProgramStage. Without it, no mutation actions appear at all (overflow menu section hidden).

Event status Edit form Complete/Uncomplete button Skip/Unskip menu item Delete menu item
ACTIVE Editable if not expired ¹ Complete — enabled if not expired ¹ Hidden Enabled if not expired ¹
COMPLETED (blockEntryForm=false) Editable if not expired ¹ Uncomplete — enabled when user has F_UNCOMPLETE_EVENT AND (not expired OR has F_EDIT_EXPIRED) Hidden Enabled if not expired ¹
COMPLETED (blockEntryForm=true) Read-only — badge "This event has been completed"; must Uncomplete first Uncomplete — enabled when user has F_UNCOMPLETE_EVENT AND (not expired OR has F_EDIT_EXPIRED) Hidden Enabled if not expired ¹
SCHEDULE Editable — user picks a valid occurredAt ² Hidden Skip — enabled if not expired ¹ Enabled if not expired ¹
OVERDUE Editable — user picks a valid occurredAt ² Hidden Skip — enabled if not expired ³ Enabled if not expired ³
SKIPPED Read-only — event is skipped Hidden Unskip — enabled if not expired ¹ Enabled if not expired ¹

Additonal information

¹ Expiry rules

"Not expired" means the event's relevant date is inside the program's editing window:

  • occurredAt for ACTIVE / COMPLETED
  • scheduledAt for SCHEDULE / OVERDUE / SKIPPED

F_EDIT_EXPIRED bypasses expiry checks. However, it does not bypass other permission requirements. For example, Uncomplete still requires F_UNCOMPLETE_EVENT.

² SCHEDULE / OVERDUE edit exception

For SCHEDULE and OVERDUE, form editing checks expiry against the date currently entered in the form rather than the server-side date.

This means a user without F_EDIT_EXPIRED can still save the event by selecting a valid date inside the editing window.

³ Skip / Delete on OVERDUE

Skip and Delete continue to check the server-side scheduledAt.

If scheduledAt is outside the editing window, both actions remain disabled unless the user has F_EDIT_EXPIRED.

Completed events with blockEntryForm=true

When an event is COMPLETED and blockEntryForm=true, the form is read-only. To edit the event, you have to Uncomplete — requires F_UNCOMPLETE_EVENT.

If the event is expired, Uncomplete also requires F_EDIT_EXPIRED.

Overflow menu visibility

Action Visible for
Skip / Unskip SCHEDULE, SKIPPED, OVERDUE
Complete / Uncomplete ACTIVE, COMPLETED
Delete All statuses

@henrikmv
henrikmv requested a review from a team as a code owner July 22, 2026 12:32
@henrikmv
henrikmv changed the base branch from master to hv/feat/DHIS2-21655_uncomplete-event-view-mode July 22, 2026 12:32
@henrikmv
henrikmv marked this pull request as draft July 22, 2026 12:32
@github-actions

Copy link
Copy Markdown

henrikmv added 17 commits July 27, 2026 11:24
…vent-view-mode' into hv/feat/DHIS2-21875_unify-overflow-menus-event
…/feat/DHIS2-21875_unify-overflow-menus-event
…vent-view-mode' into hv/feat/DHIS2-21875_unify-overflow-menus-event
…/feat/DHIS2-21875_unify-overflow-menus-event
…vent-view-mode' into hv/feat/DHIS2-21875_unify-overflow-menus-event
…vent-view-mode' into hv/feat/DHIS2-21875_unify-overflow-menus-event
…/feat/DHIS2-21875_unify-overflow-menus-event
…/feat/DHIS2-21875_unify-overflow-menus-event
…vent-view-mode' into hv/feat/DHIS2-21875_unify-overflow-menus-event
…hv/feat/DHIS2-21875_unify-overflow-menus-event
…hv/feat/DHIS2-21875_unify-overflow-menus-event
…hv/feat/DHIS2-21875_unify-overflow-menus-event
…hv/feat/DHIS2-21875_unify-overflow-menus-event
@henrikmv henrikmv added testing and removed testing labels Aug 28, 2026
devin-ai-integration[bot]

This comment was marked as resolved.

@sonarqubecloud

Copy link
Copy Markdown

@henrikmv
henrikmv marked this pull request as ready for review August 28, 2026 12:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant