Birthday Anniversary Control PCF in Power Platform.

Birthday Anniversary Control 

Technology Stack: 

- Power Apps Component Framework (PCF) 
- React (TypeScript) 

Purpose 

This PCF control renders a React-based EventCard that shows the next Birthday and Work Anniversary for a user, calculated from input dates. It also allows users to download .ics calendar files to add these events to their personal calendars. 

Functional Overview 

Responsibilities: 

- Reads input values: dateOfBirth and joiningDate 
- Passes them as props to the EventCard React component 
- Renders content using createRoot from React 18 
- No output or two-way data binding 
- Cleanup logic is currently empty 

React Component: EventCard 

Props: 

Name 

Type 

Description 

dateOfBirth 

Date 

User’s date of birth 

joiningDate 

Date 

User’s joining date 

Core Features 

- getNextOccurrence: Calculates the next occurrence of a date (e.g., birthday or work anniversary) from today. 
- calculateYears: Computes age or years worked based on current date. 
- isUpcoming: Checks if an event is within 7 days from today and adds visual cue if true. 
- formatDate: Formats date to a user-friendly string. 
- generateICSFile: Creates downloadable .ics calendar event files. 

UI Structure 

Main Card: Title - "Upcoming Events" 

Events Rendered: 

Event 

Icon 

Info 

Extras 

Birthday 

🎉 

Date, Age 

Add to Calendar button 

Work Anniversary 

🏆 

Date, Years Worked 

Add to Calendar button 

If upcoming 

 

 

Notification badge 

Accessibility 

- Container uses role='region' and aria-label='Upcoming Events' 
- Proper semantic tags are used for clarity 
- Each event item has clear labels and icons 

Inputs 

Property 

Type 

Required 

Source 

Default Value 

dateOfBirth 

Date 

Yes 

PCF 

Current Date 

joiningDate 

Date 

Yes 

PCF 

Current Date 

Outputs 



Dependencies 

- React for UI rendering 
- createRoot for DOM mount 
- Blob and URL APIs for ICS generation 

Potential Enhancements 

- Allow setting the number of 'upcoming days' threshold via input 
- Add localization support 
- Define outputs if data should sync back to the model-driven app 

Comments

Popular posts from this blog

Attachment PCF

Contacts View PCF Control

Trigger JavaScript on Click of Button PCF Control