Component Name: membershipBanner¶
Last Updated: 2025-09-29 Source Code: https://bitbucket.org/i2cinc/i2c.salesforce.metadata/src/STAGING/force-app/main/default/lwc/membershipBanner
API Name: c-membershipBanner Type: Display Component Target: Not specified
Business Purpose¶
Displays membership status banner on Account record pages. Shows different colored banners and messages based on membership status: Deceased (black), Expired (red), Grace Period (orange), Expiring Soon (<14 days, yellow), Active (green for Corporate Council). Helps admins quickly identify membership issues.
Component Structure¶
Files: membershipBanner.html, membershipBanner.js (96 lines), membershipBanner.js-meta.xml
JavaScript Controller¶
Properties (API)¶
@api recordId- Account record ID@api objectApiName- "Account"
Wire Adapters¶
@wire(getRecord)- Loads Account fields: Membership_status__c, Member_Type__c, Membership_End_Date__c, Auto_Renew__c, Is_a_Fellow__c, Deceased__c, IsPersonAccount, Is_Member__c
Computed Properties¶
isDeceased- Returns true if Deceased__c = trueisExpired- Returns true if status = "Expired"isExpiredGracePeriod- Returns true if status = "Within Grace period"isDateExpiring- Compares end date to today (unused/broken logic)isAlmostExpired- Returns true if 0-14 days until expirationitIsPersonAccount- Returns true if IsPersonAccountisCorporateCouncilMember- Returns true if Member_Type = "Corporate Council Member"showActiveStatus- Returns true for active Corporate Council members
Usage¶
<!-- On Account record page -->
<c-membership-banner record-id={recordId} object-api-name="Account"></c-membership-banner>
⚠️ Pre-Go-Live Concerns¶
HIGH¶
- isDateExpiring broken: Lines 58-68 logic always returns true (localeCompare returns number, not boolean)
- Timezone issues: Lines 60-62 mix local and Chicago timezones incorrectly
- No unit tests: Zero coverage for date calculations
MEDIUM¶
- Hardcoded "Corporate Council Member": Line 12 constant not configurable
- Hardcoded 14 days: Expiration warning threshold should be configurable (line 77)
LOW¶
- isDateExpiring unused: Computed property defined but never used in template
Maintenance Notes¶
Complexity: Low-Medium Key Notes: - CRITICAL: isDateExpiring has broken logic (localeCompare comparison) - Component displays colored banners based on membership status - Date calculations for "expiring soon" warning (14 days) - Deceased status gets highest priority - Grace period and expired are distinct statuses - Corporate Council members get special "Active" status display - Component used on Account record pages - All date logic uses client-side JavaScript (timezone sensitive)
Browser Compatibility: - Standard browser support - Date calculations may vary by browser timezone settings