Skip to content

UX: Always show cancel and continue button in start/join room dialog#2333

Open
samuelwei wants to merge 4 commits into
developfrom
ux-join-start-buttons-hidden
Open

UX: Always show cancel and continue button in start/join room dialog#2333
samuelwei wants to merge 4 commits into
developfrom
ux-join-start-buttons-hidden

Conversation

@samuelwei
Copy link
Copy Markdown
Collaborator

@samuelwei samuelwei commented Jul 24, 2025

  • Bugfix
  • Feature
  • Documentation
  • Refactoring (e.g. Style updates, Test implementation, etc.): UX
  • Other (please describe):

Checklist

  • Code updated to current develop branch head
  • Passes CI checks
  • Is a part of an issue
  • Tests added for the bugfix or newly implemented feature, describe below why if not
  • Changelog is updated
  • Documentation of code and features exists

Changes

  • Fixed Cancel and Continue buttons were not immediately visible on small screens in the Start/Join Room
  • Adds scroll-shadow to all dialogs

Other information

Initial UX issue when doing this change: On mobile no scrollbars are shown; same on mac os if a system setting is set. Users might not know that there is an addition checkbox and note if they are 'hidden' behind the buttons.

This issue is called Illusion of Completeness. This PR therefore adds the scroll-shadow design pattern to all dialogs, solving the Illusion of Completeness in most dialogs.

The following dialogs don't have a bottom content shadow due to a missing footer:

  • Attendance list
  • Room statistics
  • Stale dialogs (not a real issue, just one line of content)
Before After
Cancel and continue button are only visible when scolled down Cancel and continue button are always visible

Summary by CodeRabbit

  • Bug Fixes

    • Dialog buttons and content now display correctly on small screens.
  • New Features

    • Dialogs support placing a submit control in the footer that properly submits the form.
    • Dialog component includes improved detection of scroll position to drive header/footer behavior.
  • Style

    • Refined dialog spacing and footer positioning for better layout and accessibility.
    • Added scroll-shadow indicators on dialog header/footer for clearer scrolling cues.

Review Change Stack

@codecov
Copy link
Copy Markdown

codecov Bot commented Jul 24, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 97.20%. Comparing base (e5f22fe) to head (f72a2ab).

Additional details and impacted files
@@              Coverage Diff              @@
##             develop    #2333      +/-   ##
=============================================
+ Coverage      96.78%   97.20%   +0.41%     
=============================================
  Files            468      183     -285     
  Lines          13364     6576    -6788     
  Branches        2215     2217       +2     
=============================================
- Hits           12935     6392    -6543     
+ Misses           429      184     -245     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@cypress
Copy link
Copy Markdown

cypress Bot commented Jul 24, 2025

PILOS    Run #3072

Run Properties:  status check passed Passed #3072  •  git commit f72a2ab838: UX: Always show cancel and continue button in start/join room dialog
Project PILOS
Branch Review ux-join-start-buttons-hidden
Run status status check passed Passed #3072
Run duration 07m 42s
Commit git commit f72a2ab838: UX: Always show cancel and continue button in start/join room dialog
Committer Samuel Weirich
View all properties for this run ↗︎

Test results
Tests that failed  Failures 0
Tests that were flaky  Flaky 0
Tests that did not run due to a developer annotating a test with .skip  Pending 0
Tests that did not run due to a failure in a mocha hook  Skipped 0
Tests that passed  Passing 632
View all changes introduced in this branch ↗︎

@samuelwei samuelwei marked this pull request as ready for review July 24, 2025 13:46
@samuelwei samuelwei force-pushed the develop branch 2 times, most recently from 88ee280 to bc9287a Compare October 20, 2025 15:17
coderabbitai[bot]

This comment was marked as outdated.

@samuelwei samuelwei force-pushed the ux-join-start-buttons-hidden branch from d8bfba9 to 8328633 Compare May 22, 2026 14:17
@THM-Health THM-Health deleted a comment from coderabbitai Bot May 22, 2026
@samuelwei samuelwei requested a review from Sabr1n4W May 22, 2026 15:00
@samuelwei
Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 22, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 22, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 3442b7fa-e516-4652-a8f5-d2a5e2d1f279

📥 Commits

Reviewing files that changed from the base of the PR and between 7ee5cd4 and f72a2ab.

📒 Files selected for processing (1)
  • resources/js/components/Dialog.vue

Walkthrough

This PR fixes small-screen layout issues in the room join dialog by introducing a scroll-aware wrapper component with dynamic shadow indicators, restructuring the form and footer into separate DOM regions with form-id-based submission wiring, refining content spacing, and documenting the fixes in the changelog.

Changes

Room join dialog layout and submission fix

Layer / File(s) Summary
Dialog wrapper component with scroll tracking
resources/js/components/Dialog.vue
New Dialog.vue wraps PrimeVue Dialog and tracks scroll state on the dialog content element using useScroll and useResizeObserver, toggling data-scroll-shaddow attributes on header and footer based on scroll position and content scrollability.
Dialog CSS overrides for scroll shadows and layout
resources/css/override/_dialog.css, resources/css/override/override.css
New _dialog.css adds scroll shadow rules for header/footer when data-scroll-shaddow="true", base Tailwind utilities for z-index and transitions, footer padding, overflow constraint, and removes bottom padding from content when footer exists; CSS import added to override.css.
RoomJoinButton form id and footer slot
resources/js/components/RoomJoinButton.vue
Form element receives explicit id="startJoinForm" to enable external submission; form closes before a named #footer slot is introduced to host action buttons outside the form; submit button uses form="startJoinForm" attribute to target the relocated form.
RoomJoinButton content spacing refinement
resources/js/components/RoomJoinButton.vue
Content wrapper and feature information sections (attendance recording, recording, streaming) transition from mb-4 margin-based spacing to gap-2 flex column layout for improved small-screen consistency.
Changelog documentation
CHANGELOG.md
Adds two Unreleased "Fixed" entries for issue #2333 documenting small-screen visibility and cropping fixes, plus reference link definition at end of changelog.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • Sabr1n4W
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the primary UX fix—ensuring Cancel and Continue buttons are always visible in the Start/Join Room dialog on small screens, which directly aligns with the main objective of this changeset.
Description check ✅ Passed The description covers the type (UX/Refactoring), includes completed checklist items (code updated, CI passes, changelog updated), explains changes with before/after visuals, and discusses the Illusion of Completeness issue. However, the author noted the checkbox for 'Is a part of an issue' remains unchecked despite PR #2333 being referenced.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ux-join-start-buttons-hidden

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
resources/js/components/RoomJoinButton.vue (1)

43-43: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use an instance-unique form id to prevent cross-dialog submit collisions.

Line 43 and Line 174 use a static startJoinForm id/form target. With multiple RoomJoinButton instances mounted, this can submit the wrong form.

Suggested fix
-    <Form
-      id="startJoinForm"
+    <Form
+      :id="startJoinFormId"
       :disabled="isLoadingAction || loadingError"
       `@submit`="getJoinUrl"
     >
...
-          form="startJoinForm"
+          :form="startJoinFormId"
 const features = ref({});
+const startJoinFormId = computed(() => `startJoinForm-${props.roomId}`);

Also applies to: 174-174

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@resources/js/components/RoomJoinButton.vue` at line 43, The static form id
startJoinForm in RoomJoinButton causes cross-instance collisions; change the id
usages to an instance-unique id by generating a per-component suffix (e.g. use
the component's _uid or a small random/UUID string) and bind it: replace the
literal "startJoinForm" on the form element and the target/form attributes (the
template occurrences referenced in RoomJoinButton) with a computed/prop like
startJoinFormId so each mounted instance has a distinct id; update any
references in methods or attributes that target the form to use that bound
startJoinFormId.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@resources/js/components/Dialog.vue`:
- Around line 33-35: The onModalHide function clears dialogContentRef but leaves
dialogContentScrollable unchanged, causing stale header/footer shadow state on
reopen; update onModalHide to also reset dialogContentScrollable (set
dialogContentScrollable.value = false) so scrollability and related shadow flags
are cleared when the modal hides.

---

Duplicate comments:
In `@resources/js/components/RoomJoinButton.vue`:
- Line 43: The static form id startJoinForm in RoomJoinButton causes
cross-instance collisions; change the id usages to an instance-unique id by
generating a per-component suffix (e.g. use the component's _uid or a small
random/UUID string) and bind it: replace the literal "startJoinForm" on the form
element and the target/form attributes (the template occurrences referenced in
RoomJoinButton) with a computed/prop like startJoinFormId so each mounted
instance has a distinct id; update any references in methods or attributes that
target the form to use that bound startJoinFormId.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: d328fbab-3c11-4fed-b07c-4a2226de4f05

📥 Commits

Reviewing files that changed from the base of the PR and between 034c9b0 and 7ee5cd4.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • resources/css/override/_dialog.css
  • resources/css/override/override.css
  • resources/js/components/Dialog.vue
  • resources/js/components/RoomJoinButton.vue
✅ Files skipped from review due to trivial changes (1)
  • resources/css/override/override.css

Comment thread resources/js/components/Dialog.vue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant