Contributing
The more reusable patterns, components and helpers EvoToolkit contains, the more useful it will be for us. If you have an idea for a contribution, the first step is to raise a task in the "EvoCSS / Toolkit Development" project on the dev system.
Here's a few tips on what would make a good EvoToolkit contribution:-
- Coding Standards - EvoToolkit has SCSS linting standards built in, so on build any deviations will be flagged. Have all these been fixed? Also, make sure the structure of your contributions matches the rest of the codebase, including things like code comment format etc.
- Compatibility - We still support older browsers going back to Internet Explorer 11. Does your component display and function correctly here?
- Consistency - If you need icons in your new component, it would be first worth checking if EvoToolkit already has one which meets your needs.
- Event Hooks - If your component requires JavaScript logic, does this logic contain event hooks so other developers can add their own custom behaviour in future? (See Extending EvoToolkit for more info on this)
- Event Triggers - With many EvoToolkit components, it's possible to programatically trigger certain behaviours (For example, open a modal via JS). Does your component also have this functionality built in? (See Extending EvoToolkit for more info on this)
- Format - Does your new component use icons? If yes, make sure they're SVG format, which will look great on any device.
- General Purpose - Not every UI component needs to be in the Toolkit. We only need general purpose components which are likely to be used across multiple projects. Any UI components which are ultra contextual may not be accepted as they likely won't be used again.
- Optional Classes - Some objects, components and utility classes are optional, with the idea being to enable as required. This ensures EvoToolkit stays lean and only compiles what it needs to on build. If your contribution introduces a lot of new classes, can any of these be made optional?
- Responsive - Besides desktop, does your new object pattern or component look and work great on the smallest of screens (320px min) to the largest (4k)?
- Theme - EvoToolkit supports theming, so component colour SCSS variables can be tweaked to meet the needs of a particular brand. Is this supported?
- Usability - If decorated, is the component's design simple and straightforward enough that even non-proficient computer users could get to grips with it?
If your changes meet the goals of what EvoToolkit is trying to achieve, and don't introduce any bugs, they'll be accepted and merged.
It's then just a matter of adding its documentation to this pattern library, which is contained in the EvoToolkitLibrary repo.