{"id":26391223,"url":"https://github.com/matteo-campana/customtimelinecontrol","last_synced_at":"2026-04-11T09:32:42.584Z","repository":{"id":274416478,"uuid":"915943718","full_name":"matteo-campana/CustomTimelineControl","owner":"matteo-campana","description":"The Custom Timeline Control is a PowerApps Component Framework (PCF) control designed to meet customer needs by providing a customisable timeline view for emails in Dynamics 365 in case forms, supporting the display of emails and WhatsApp chats related to parent and ancestor cases.","archived":false,"fork":false,"pushed_at":"2025-03-19T08:53:02.000Z","size":269,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-01T07:02:22.393Z","etag":null,"topics":["customer-service","customer-service-hub","dynamics","dynamics-365","dynamics-crm","fluent-ui","fluent-ui-components","fluentui","javascript","microsoft","model-driven-app","model-driven-apps","nodejs","pcf","powerapps","powerapps-component-framework","react","timeline","timeline-component","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matteo-campana.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-13T06:38:59.000Z","updated_at":"2025-03-19T08:53:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"4fe2a079-9502-49ef-9858-9c5e83963873","html_url":"https://github.com/matteo-campana/CustomTimelineControl","commit_stats":null,"previous_names":["matteo-campana/customemailtimelinecontrol","matteo-campana/customtimelinecontrol"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/matteo-campana/CustomTimelineControl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matteo-campana%2FCustomTimelineControl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matteo-campana%2FCustomTimelineControl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matteo-campana%2FCustomTimelineControl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matteo-campana%2FCustomTimelineControl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matteo-campana","download_url":"https://codeload.github.com/matteo-campana/CustomTimelineControl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matteo-campana%2FCustomTimelineControl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266334549,"owners_count":23913003,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["customer-service","customer-service-hub","dynamics","dynamics-365","dynamics-crm","fluent-ui","fluent-ui-components","fluentui","javascript","microsoft","model-driven-app","model-driven-apps","nodejs","pcf","powerapps","powerapps-component-framework","react","timeline","timeline-component","typescript"],"created_at":"2025-03-17T10:18:46.892Z","updated_at":"2026-04-11T09:32:37.551Z","avatar_url":"https://github.com/matteo-campana.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Custom Timeline Control 📧\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n![Build Status](https://img.shields.io/badge/build-passing-brightgreen.svg)\n![Version](https://img.shields.io/badge/version-1.0.8-brightgreen.svg)\n\n## Overview\n\nCustom 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.\n\n![Custom Timeline Control](imgs/sample.png)\n\nYou can try out the Custom Timeline Control on StackBlitz:\n\n[![Edit on StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/edit/github-whzswgsb?file=README.md)\n\n## Features\n\n- 📬 Customizable activities timeline view\n- 📧 Collect emails and WhatsApp chats\n- 📚 Multi-language support\n- 📈 Support for debug mode\n- 📱 Responsive design for any devices\n- 🎨 Fluent UI components for a modern look\n- 🛠️ Easy configuration settings\n- 📅 Easy integration with model-driven apps\n- 🔧 Configurable settings for display\n\n## Installation\n\nTo install the Custom Email Timeline Control, follow these steps:\n\n```powershell\ngit clone https://github.com/matteo-campana/CustomEmailTimelineControl.git\ncd CustomEmailTimelineControl\nnpm install\nnpm run build -- --buildMode production\nnpm run start:watch\n```\n\n## Building and Deploying to Dataverse\n\nTo create and import a solution file:\n\n```powershell\nmkdir Solutions\ncd Solutions\npac solution init --publisher-name developer --publisher-prefix dev\npac solution add-reference --path c:\\downloads\\mysamplecomponent\nmsbuild /t:restore\nmsbuild\n# Or if you have installed the .NET SDK, version \u003e= 6:\ndotnet build\n```\n\n\u003e Tip: If `msbuild 15.9.*` is not in the path, open Developer Command Prompt for VS 2017 to run the `msbuild` commands.\n\nThe generated solution files are located inside the `\\bin\\debug\\` folder after the build is successful.\n\nManually import the solution into Dataverse using the web portal or automatically using the Microsoft Power Platform Build Tools.\n\n### Connecting to your environment\n\n```powershell\npac auth create --url \u003chttps://xyz.crm.dynamics.com\u003e\npac auth list\npac auth select --index \u003cindex of the active profile\u003e\n```\n\n### Selecting the target environment\n\n```powershell\npac env list\npac env select --index \u003cindex of the target environment\u003e\n```\n\n### Deploying code components\n\nEnsure 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:\n\n```powershell\npac pcf push --publisher-prefix \u003cyour publisher prefix\u003e --publisher-name \u003cyour publisher name\u003e\n```\n\n\u003e 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.\n\n## Input Parameters\n\nThe Custom Email Timeline Control accepts the following input parameters:\n\n- `DebugMode`: A boolean option to enable or disable debug mode.\n- `CollectCurrentRecord`: A boolean option to collect emails related to the current record.\n- `CollectParent`: A boolean option to collect emails related to the parent record.\n- `CollectAncestor`: A boolean option to collect emails related to ancestor records.\n- `CollectEmails`: A boolean option to collect emails.\n- `CollectWhatsAppChats`: A boolean option to collect WhatsApp chats.\n\n## Scripts\n\nThe following scripts are available:\n\n- `build`: Builds the project using `pcf-scripts build`.\n- `clean`: Cleans the project using `pcf-scripts clean`.\n- `lint`: Lints the project using `pcf-scripts lint`.\n- `lint:fix`: Fixes linting issues using `pcf-scripts lint fix`.\n- `rebuild`: Rebuilds the project using `pcf-scripts rebuild`.\n- `start`: Starts the project using `pcf-scripts start`.\n- `start:watch`: Starts the project in watch mode using `pcf-scripts start watch`.\n\n## Dependencies\n\nThe project has the following dependencies:\n\n- `react`: 16.14.0\n- `@fluentui/react-components`: 9.46.2\n- `react-dom`: 16.14.0\n\n## Usage\n\nTo use the Custom Email Timeline Control in your model-driven app, follow these steps:\n\n1. Import the solution into your environment.\n2. Add the control to the desired form.\n3. Configure the control settings as needed.\n\n## Translations\n\nThe Custom Email Timeline Control supports multiple languages. The following translations are available:\n\n- English (en-US)\n- French (fr-FR)\n- German (de-DE)\n- Italian (it-IT)\n\nTo add a new translation, follow these steps:\n\n1. Create a new `.resx` file in the `strings` directory with the appropriate language code.\n2. Add the necessary translations to the `.resx` file.\n3. Update the `ControlManifest.Input.xml` file to include the new `.resx` file.\n\nExample:\n\n```xml\n\u003cresx path=\"strings/CustomEmailTimelineControl.\u003clanguage-code\u003e.resx\" version=\"1.0.2\" /\u003e\n```\n\n## Contributing\n\nContributions are welcome! Please open an issue or submit a pull request for any changes.\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n## ⭐️ Show your support\n\nGive a ⭐️ if this project helped you!\n\n## 📬 Stay in touch\n\n- Author: Matteo Campana\n- GitHub: [matteo-campana](https://github.com/matteo-campana)\n- LinkedIn: [matteo-campana](https://www.linkedin.com/in/matteo-campana)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatteo-campana%2Fcustomtimelinecontrol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatteo-campana%2Fcustomtimelinecontrol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatteo-campana%2Fcustomtimelinecontrol/lists"}