Skip to content

Website: add tabs to homepage comparison table#46407

Merged
mike-j-thomas merged 2 commits into
mainfrom
website-add-tabs-to-comparison-table
May 29, 2026
Merged

Website: add tabs to homepage comparison table#46407
mike-j-thomas merged 2 commits into
mainfrom
website-add-tabs-to-comparison-table

Conversation

@eashaw
Copy link
Copy Markdown
Contributor

@eashaw eashaw commented May 28, 2026

Changes:

  • Replaced the dropdown comparison switcher with tabs on the homepage desktop comparison table.

Summary by CodeRabbit

  • New Features
    • Replaced the dropdown selector with a horizontal tabs interface in the "Moving to Fleet?" comparison table, enabling users to easily switch between vendor options. The tabs feature a visual indicator for the active selection. Added responsive styling that adapts seamlessly to smaller screen sizes, maintaining readability and usability across all devices.

Review Change Stack

@eashaw eashaw requested review from Copilot and mike-j-thomas May 28, 2026 23:24
Copy link
Copy Markdown

@claude claude Bot left a comment

Choose a reason for hiding this comment

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

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@fleet-release fleet-release added the ~ga4-annotation This label is automatically applied to certain website changes label May 28, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Replaces the desktop comparison-table dropdown on the homepage with a row of clickable tabs, and adds matching LESS styles (including a smaller variant for ≤991px viewports).

Changes:

  • Swap dropdown markup for five comparison-tab divs bound to clickSwitchComparisonTableColumn.
  • Add [purpose='comparison-table-tabs'] styles with active underline.
  • Add reduced padding/font size for the tabs at max-width: 991px.

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.

File Description
website/views/pages/homepage.ejs Replaces desktop comparison dropdown with five tab divs; selected friendly name still shown in header.
website/assets/styles/pages/homepage.less Adds tab container/tab/active styles and a responsive override at ≤991px.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 28, 2026

Walkthrough

This PR replaces the dropdown-based vendor selector in the homepage "Moving to Fleet?" comparison table with a horizontal tab control. The tabs display five vendors (Jamf Pro, Workspace ONE, SCCM, Intune, PatchMyPC) as clickable elements that trigger clickSwitchComparisonTableColumn(), with the active vendor's friendly name shown in the comparison header. New CSS styles define the tab layout with flex containers, fixed widths, centered images, and an active state underline. Responsive overrides adjust padding and font sizing for mobile devices.

Possibly related PRs

  • fleetdm/fleet#45777: Both modify the "Moving to Fleet?" comparison-table vendor selector rendering in the same file, switching the UI control type and updating how the active vendor is displayed.
  • fleetdm/fleet#46293: Simplifies clickSwitchComparisonTableColumn() to update only comparisonModeForIt, which is the state handler called by the new tab click handlers in this PR.
  • fleetdm/fleet#45001: Also modifies the homepage comparison table vendor selector in the same UI area, adjusting dropdown option rendering connected to the same selection mechanism.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The description is minimal but accurately reflects the change. However, it lacks detail and does not follow the provided repository template structure. Expand description to follow the template structure, add related issue number, clarify testing approach, and document any manual QA performed.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding tabs to the homepage comparison table.
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 website-add-tabs-to-comparison-table

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

🤖 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 `@website/views/pages/homepage.ejs`:
- Around line 181-187: The clickable vendor tabs are implemented as <div>s and
are not keyboard-accessible; change each <div purpose="comparison-tab" ...> to a
semantic <button type="button"> while keeping the :class binding and
data-compare-with attribute and preserving the `@click` handler
clickSwitchComparisonTableColumn('...'); also add appropriate ARIA state (e.g.
aria-pressed or aria-selected bound to comparisonModeForIt === '<vendor>') and
ensure the container conveys a tablist/toolbar role if needed so keyboard and
screen-reader users can switch vendors with the existing
clickSwitchComparisonTableColumn logic.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: a48ab580-a560-4c1f-a963-59bf660b1336

📥 Commits

Reviewing files that changed from the base of the PR and between aeaa7a2 and 71e2c59.

📒 Files selected for processing (2)
  • website/assets/styles/pages/homepage.less
  • website/views/pages/homepage.ejs

Comment on lines +181 to +187
<div purpose="comparison-table-tabs">
<div purpose="comparison-tab" :class="[comparisonModeForIt === 'jamf' ? 'active' : '']" data-compare-with="jamf" @click="clickSwitchComparisonTableColumn('jamf')"><strong>Jamf Pro</strong></div>
<div purpose="comparison-tab" :class="[comparisonModeForIt === 'omnissa' ? 'active' : '']" data-compare-with="omnissa" @click="clickSwitchComparisonTableColumn('omnissa')"><strong>Workspace ONE</strong></div>
<div purpose="comparison-tab" :class="[comparisonModeForIt === 'sccm' ? 'active' : '']" data-compare-with="sccm" @click="clickSwitchComparisonTableColumn('sccm')"><strong>SCCM</strong></div>
<div purpose="comparison-tab" :class="[comparisonModeForIt === 'intune' ? 'active' : '']" data-compare-with="intune" @click="clickSwitchComparisonTableColumn('intune')"><strong>Intune</strong></div>
<div purpose="comparison-tab" :class="[comparisonModeForIt === 'patchmypc' ? 'active' : '']" data-compare-with="patchmypc" @click="clickSwitchComparisonTableColumn('patchmypc')"><strong>PatchMyPC</strong></div>
</div>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use semantic buttons for tab controls (keyboard/a11y blocker).

Line 182–Line 186 use clickable <div>s, which are not keyboard-accessible by default. Desktop users navigating by keyboard/screen reader can’t reliably switch vendors.

Suggested fix
-          <div purpose="comparison-table-tabs">
-            <div purpose="comparison-tab" :class="[comparisonModeForIt === 'jamf' ? 'active' : '']" data-compare-with="jamf" `@click`="clickSwitchComparisonTableColumn('jamf')"><strong>Jamf Pro</strong></div>
-            <div purpose="comparison-tab" :class="[comparisonModeForIt === 'omnissa' ? 'active' : '']" data-compare-with="omnissa" `@click`="clickSwitchComparisonTableColumn('omnissa')"><strong>Workspace ONE</strong></div>
-            <div purpose="comparison-tab" :class="[comparisonModeForIt === 'sccm' ? 'active' : '']" data-compare-with="sccm" `@click`="clickSwitchComparisonTableColumn('sccm')"><strong>SCCM</strong></div>
-            <div purpose="comparison-tab" :class="[comparisonModeForIt === 'intune' ? 'active' : '']" data-compare-with="intune" `@click`="clickSwitchComparisonTableColumn('intune')"><strong>Intune</strong></div>
-            <div purpose="comparison-tab" :class="[comparisonModeForIt === 'patchmypc' ? 'active' : '']" data-compare-with="patchmypc" `@click`="clickSwitchComparisonTableColumn('patchmypc')"><strong>PatchMyPC</strong></div>
-          </div>
+          <div purpose="comparison-table-tabs">
+            <button type="button" purpose="comparison-tab" :class="[comparisonModeForIt === 'jamf' ? 'active' : '']" :aria-pressed="comparisonModeForIt === 'jamf'" data-compare-with="jamf" `@click`="clickSwitchComparisonTableColumn('jamf')"><strong>Jamf Pro</strong></button>
+            <button type="button" purpose="comparison-tab" :class="[comparisonModeForIt === 'omnissa' ? 'active' : '']" :aria-pressed="comparisonModeForIt === 'omnissa'" data-compare-with="omnissa" `@click`="clickSwitchComparisonTableColumn('omnissa')"><strong>Workspace ONE</strong></button>
+            <button type="button" purpose="comparison-tab" :class="[comparisonModeForIt === 'sccm' ? 'active' : '']" :aria-pressed="comparisonModeForIt === 'sccm'" data-compare-with="sccm" `@click`="clickSwitchComparisonTableColumn('sccm')"><strong>SCCM</strong></button>
+            <button type="button" purpose="comparison-tab" :class="[comparisonModeForIt === 'intune' ? 'active' : '']" :aria-pressed="comparisonModeForIt === 'intune'" data-compare-with="intune" `@click`="clickSwitchComparisonTableColumn('intune')"><strong>Intune</strong></button>
+            <button type="button" purpose="comparison-tab" :class="[comparisonModeForIt === 'patchmypc' ? 'active' : '']" :aria-pressed="comparisonModeForIt === 'patchmypc'" data-compare-with="patchmypc" `@click`="clickSwitchComparisonTableColumn('patchmypc')"><strong>PatchMyPC</strong></button>
+          </div>
🤖 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 `@website/views/pages/homepage.ejs` around lines 181 - 187, The clickable
vendor tabs are implemented as <div>s and are not keyboard-accessible; change
each <div purpose="comparison-tab" ...> to a semantic <button type="button">
while keeping the :class binding and data-compare-with attribute and preserving
the `@click` handler clickSwitchComparisonTableColumn('...'); also add appropriate
ARIA state (e.g. aria-pressed or aria-selected bound to comparisonModeForIt ===
'<vendor>') and ensure the container conveys a tablist/toolbar role if needed so
keyboard and screen-reader users can switch vendors with the existing
clickSwitchComparisonTableColumn logic.

@mike-j-thomas mike-j-thomas merged commit 87b755c into main May 29, 2026
10 checks passed
@mike-j-thomas mike-j-thomas deleted the website-add-tabs-to-comparison-table branch May 29, 2026 00:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

~ga4-annotation This label is automatically applied to certain website changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants