Custom Timeline Control is a PowerApps Component Framework (PCF) control that provides a customized timeline view for emails and WhatsApp chats within a model-driven app.
You can try out the Custom Timeline Control on StackBlitz:
- 📬 Customizable activities timeline view
- 📧 Collect emails and WhatsApp chats
- 📚 Multi-language support
- 📈 Support for debug mode
- 📱 Responsive design for any devices
- 🎨 Fluent UI components for a modern look
- 🛠️ Easy configuration settings
- 📅 Easy integration with model-driven apps
- 🔧 Configurable settings for display
To install the Custom Email Timeline Control, follow these steps:
git clone https://github.com/matteo-campana/CustomEmailTimelineControl.git
cd CustomEmailTimelineControl
npm install
npm run build -- --buildMode production
npm run start:watch
To create and import a solution file:
mkdir Solutions
cd Solutions
pac solution init --publisher-name developer --publisher-prefix dev
pac solution add-reference --path c:\downloads\mysamplecomponent
msbuild /t:restore
msbuild
# Or if you have installed the .NET SDK, version >= 6:
dotnet build
Tip: If
msbuild 15.9.*
is not in the path, open Developer Command Prompt for VS 2017 to run themsbuild
commands.
The generated solution files are located inside the \bin\debug\
folder after the build is successful.
Manually import the solution into Dataverse using the web portal or automatically using the Microsoft Power Platform Build Tools.
pac auth create --url <https://xyz.crm.dynamics.com>
pac auth list
pac auth select --index <index of the active profile>
pac env list
pac env select --index <index of the target environment>
Ensure that you have a valid authentication profile created. Navigate to the directory where the sample component file is located and push the code components to the Dataverse instance:
pac pcf push --publisher-prefix <your publisher prefix> --publisher-name <your publisher name>
Note: The publisher prefix that you use with the push command should match the publisher prefix of your solution in which the components will be included.
The Custom Email Timeline Control accepts the following input parameters:
DebugMode
: A boolean option to enable or disable debug mode.CollectCurrentRecord
: A boolean option to collect emails related to the current record.CollectParent
: A boolean option to collect emails related to the parent record.CollectAncestor
: A boolean option to collect emails related to ancestor records.CollectEmails
: A boolean option to collect emails.CollectWhatsAppChats
: A boolean option to collect WhatsApp chats.
The following scripts are available:
build
: Builds the project usingpcf-scripts build
.clean
: Cleans the project usingpcf-scripts clean
.lint
: Lints the project usingpcf-scripts lint
.lint:fix
: Fixes linting issues usingpcf-scripts lint fix
.rebuild
: Rebuilds the project usingpcf-scripts rebuild
.start
: Starts the project usingpcf-scripts start
.start:watch
: Starts the project in watch mode usingpcf-scripts start watch
.
The project has the following dependencies:
react
: 16.14.0@fluentui/react-components
: 9.46.2react-dom
: 16.14.0
To use the Custom Email Timeline Control in your model-driven app, follow these steps:
- Import the solution into your environment.
- Add the control to the desired form.
- Configure the control settings as needed.
The Custom Email Timeline Control supports multiple languages. The following translations are available:
- English (en-US)
- French (fr-FR)
- German (de-DE)
- Italian (it-IT)
To add a new translation, follow these steps:
- Create a new
.resx
file in thestrings
directory with the appropriate language code. - Add the necessary translations to the
.resx
file. - Update the
ControlManifest.Input.xml
file to include the new.resx
file.
Example:
<resx path="strings/CustomEmailTimelineControl.<language-code>.resx" version="1.0.2" />
Contributions are welcome! Please open an issue or submit a pull request for any changes.
This project is licensed under the MIT License. See the LICENSE file for details.
Give a ⭐️ if this project helped you!
- Author: Matteo Campana
- GitHub: matteo-campana
- LinkedIn: matteo-campana