Skip to content

Frontend/cosmetology UI updates#1517

Merged
isabeleliassen merged 4 commits intocsg-org:mainfrom
InspiringApps:frontend/cosm-ssn-updates
May 6, 2026
Merged

Frontend/cosmetology UI updates#1517
isabeleliassen merged 4 commits intocsg-org:mainfrom
InspiringApps:frontend/cosm-ssn-updates

Conversation

@jsandoval81
Copy link
Copy Markdown
Collaborator

@jsandoval81 jsandoval81 commented Apr 30, 2026

Requirements List

  • None

Description List

  • For Cosmetology:
    • Remove "show full ssn" button from licensee detail page
    • Remove "Read SSN" permission from staff user management UI
    • Remove "Registration email" from licensee detail page
    • Remove "Investigation status" from search form
    • Update wording above licensee search results list
    • Update wording of subtext on "Live status" input on Compact / State config forms
    • Add limited-info License cards to public search result detail page

Testing List

  • yarn test:unit:all should run without errors or warnings
  • yarn serve should run without errors or warnings
  • yarn build should run without errors or warnings
  • Code review
  • Testing
    • For Cosmetology:
      • Confirm staff users can no longer set Read SSN permission
      • Confirm staff users no longer see "Reveal full SSN" button under SSN last four on licensee detail page
      • Confirm "Registration email" is no longer displayed on licensee detail page
      • Confirm "Investigation status" search input no longer appears on licensee search form for staff
      • Confirm new wording above licensee search results list
      • Confirm new wording on Compact Settings "Live status" input subtext
      • Confirm new wording on State Settings "Live status" input subtext
      • Confirm that in the Public search, license cards are now displayed on the detail page
    • For any other compact:
      • Confirm the above changes are not in affect, and items remain as they were previously
      • This is fairly easily accomplished by using the compact switcher in the nav menu in mock mode

Closes #1473
Closes #1472
Closes #1471
Closes #1475

Summary by CodeRabbit

  • New Features

    • Added mode-specific list description for licensees.
    • Investigation status field now conditionally displayed based on app mode.
    • Permission management updated to exclude SSN read capability in cosmetology mode.
    • Registration email field now hidden in cosmetology mode.
  • Documentation

    • Updated confirmation text for license registration and privilege purchase to clarify reciprocal grants and irreversibility.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 30, 2026

📝 Walkthrough

Walkthrough

Components and pages were updated to be cosmetology-aware: UI text, conditional fields, permission options, and list/collection rendering now switch behavior or content when the app is in cosmetology mode.

Changes

Cohort / File(s) Summary
LicenseeList Display
webroot/src/components/Licensee/LicenseeList/LicenseeList.ts, webroot/src/components/Licensee/LicenseeList/LicenseeList.vue
Added listDescriptionText getter and switched template to use it so the displayed list description can be cosmetology-specific.
LicenseeSearch Filtering
webroot/src/components/Licensee/LicenseeSearch/LicenseeSearch.ts, webroot/src/components/Licensee/LicenseeSearch/LicenseeSearch.vue
Made investigationStatus mock default conditional on JCC mode and added v-if to hide the investigation status dropdown when not JCC.
User Permission Options
webroot/src/components/Users/UserInvite/UserInvite.ts, webroot/src/components/Users/UserRowEdit/UserRowEdit.ts
Refactored permission option getters to omit READ_SSN in cosmetology mode; permission builders remove isReadSsn from payloads in cosmetology mode.
Licensing Detail (SSN / Email)
webroot/src/pages/LicensingDetail/LicensingDetail.ts, webroot/src/pages/LicensingDetail/LicensingDetail.vue
Added isAppModeCosmetology checks to suppress SSN read access evaluation and conditionally hide registration email in cosmetology mode.
Compact / State Settings Labels
webroot/src/components/CompactSettingsConfig/CompactSettingsConfig.ts, webroot/src/components/StateSettingsConfig/StateSettingsConfig.ts
Added liveStatusLabel getters to return cosmetology-aware subtext for registration/purchase enabled fields.
LicenseCard Public Search
webroot/src/components/LicenseCard/LicenseCard.ts, webroot/src/components/LicenseCard/LicenseCard.vue
Added isPublicSearch prop and conditionally hide status description, discipline status item, and compact eligibility UI when isPublicSearch is true.
Public Licensing Detail (UI + Logic)
webroot/src/pages/PublicLicensingDetail/PublicLicensingDetail.ts, webroot/src/pages/PublicLicensingDetail/PublicLicensingDetail.vue, webroot/src/pages/PublicLicensingDetail/PublicLicensingDetail.less
Added isLicensesCollapsed state and toggle, registered LicenseCard/Icon, added cosmetology-only collapsible license list (passes isPublicSearch=true), introduced sorting/aggregation logic for licenses/privileges, and added styles for license sections.
Localization
webroot/src/locales/en.json, webroot/src/locales/es.json
Added cosmetology-specific localization keys and updated live/purchase subtext wording to reflect cosmetology/Agreement phrasing.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • jlkravitz
  • rmolinares
  • isabeleliassen

Poem

🐰 Hopped in quick to change the view,
Cosmetology colors the text anew,
SSNs hidden, emails tucked away,
Cards shrink tidy in public display,
A little rabbit applause—hip hop hooray!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Frontend/cosmetology UI updates' is a generic, high-level categorization that lacks specificity about the actual changes made. While it correctly identifies the scope as frontend cosmetology work, it does not describe the main changes (removing SSN features, hiding fields, updating wording, adding license cards) in any meaningful way, making it vague for someone scanning commit history. Consider using a more specific title that highlights the primary change, such as 'Hide SSN and registration email fields in cosmetology mode' or break into multiple, focused PRs with titles referencing the specific feature removals/updates.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The code changes meet all primary coding objectives: SSN display/permissions removed [#1473], registration email hidden [#1472], investigation status field hidden [#1471], and wording updated [#1475] across components and localization files.
Out of Scope Changes check ✅ Passed All code changes are directly aligned with the four linked issues; new prop isPublicSearch in LicenseCard and styling for PublicLicensingDetail support the objective to add limited-info license cards to the public search detail page.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The PR description comprehensively covers all required template sections with detailed requirements, implementation details, testing procedures, and issue closures.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 the current code and only fix it if needed.

Inline comments:
In `@webroot/src/locales/en.json`:
- Line 544: The locale string for the key "licenseRegistrationEnabledSubtext" is
missing the reciprocal sentence and the phrase "in your state"; update the value
of licenseRegistrationEnabledSubtext in webroot/src/locales/en.json to the
agreed wording that includes the reciprocal sentence and the phrase "in your
state", preserving the existing HTML emphasis (<em>...</em>) and JSON string
quoting/commas so the file remains valid and consistent with other locale
entries.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 11c42585-500e-47e8-bfdf-6139aef820a7

📥 Commits

Reviewing files that changed from the base of the PR and between 8379965 and 2ff5a6c.

📒 Files selected for processing (10)
  • webroot/src/components/Licensee/LicenseeList/LicenseeList.ts
  • webroot/src/components/Licensee/LicenseeList/LicenseeList.vue
  • webroot/src/components/Licensee/LicenseeSearch/LicenseeSearch.ts
  • webroot/src/components/Licensee/LicenseeSearch/LicenseeSearch.vue
  • webroot/src/components/Users/UserInvite/UserInvite.ts
  • webroot/src/components/Users/UserRowEdit/UserRowEdit.ts
  • webroot/src/locales/en.json
  • webroot/src/locales/es.json
  • webroot/src/pages/LicensingDetail/LicensingDetail.ts
  • webroot/src/pages/LicensingDetail/LicensingDetail.vue

Comment thread webroot/src/locales/en.json Outdated
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.

🧹 Nitpick comments (1)
webroot/src/pages/PublicLicensingDetail/PublicLicensingDetail.vue (1)

49-53: ⚡ Quick win

Use a stable key for each LicenseCard.

LicenseCard owns local UI state, so :key="'license'+index" lets Vue reuse one card instance for a different license if this sorted list changes order after a refresh. Please key this list with a license identifier instead of the array index.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@webroot/src/pages/PublicLicensingDetail/PublicLicensingDetail.vue` around
lines 49 - 53, The v-for list in PublicLicensingDetail.vue uses the array index
as the key ("'license'+index"), which can cause LicenseCard components to be
reused incorrectly; change the :key on the element rendering LicenseCard to use
a stable license identifier from each item (e.g., license.id or
license.licenseId) instead of the index so each LicenseCard instance is uniquely
tied to its license in the licenseeLicenses array.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@webroot/src/pages/PublicLicensingDetail/PublicLicensingDetail.vue`:
- Around line 49-53: The v-for list in PublicLicensingDetail.vue uses the array
index as the key ("'license'+index"), which can cause LicenseCard components to
be reused incorrectly; change the :key on the element rendering LicenseCard to
use a stable license identifier from each item (e.g., license.id or
license.licenseId) instead of the index so each LicenseCard instance is uniquely
tied to its license in the licenseeLicenses array.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 852467ac-6dec-4e2f-b752-15f142ecb322

📥 Commits

Reviewing files that changed from the base of the PR and between 2ff5a6c and 708e861.

📒 Files selected for processing (10)
  • webroot/src/components/CompactSettingsConfig/CompactSettingsConfig.ts
  • webroot/src/components/LicenseCard/LicenseCard.ts
  • webroot/src/components/LicenseCard/LicenseCard.vue
  • webroot/src/components/StateSettingsConfig/StateSettingsConfig.ts
  • webroot/src/locales/en.json
  • webroot/src/locales/es.json
  • webroot/src/pages/LicensingDetail/LicensingDetail.vue
  • webroot/src/pages/PublicLicensingDetail/PublicLicensingDetail.less
  • webroot/src/pages/PublicLicensingDetail/PublicLicensingDetail.ts
  • webroot/src/pages/PublicLicensingDetail/PublicLicensingDetail.vue
✅ Files skipped from review due to trivial changes (2)
  • webroot/src/pages/LicensingDetail/LicensingDetail.vue
  • webroot/src/components/LicenseCard/LicenseCard.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • webroot/src/locales/en.json

@jsandoval81 jsandoval81 changed the title WIP: cosm updates Frontend/cosmetology UI updates May 4, 2026
@jsandoval81 jsandoval81 requested a review from rmolinares May 4, 2026 14:13
@jsandoval81 jsandoval81 requested a review from jlkravitz May 4, 2026 20:43
@jsandoval81
Copy link
Copy Markdown
Collaborator Author

@jlkravitz This is ready for your review.

Copy link
Copy Markdown
Collaborator

@jlkravitz jlkravitz left a comment

Choose a reason for hiding this comment

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

@isabeleliassen Good to merge!

@isabeleliassen isabeleliassen merged commit f5065f5 into csg-org:main May 6, 2026
2 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request May 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

4 participants