# Infor Design System Web Components Library

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![npm version](https://badge.fury.io/js/ids-enterprise-wc.svg)](https://badge.fury.io/js/ids-enterprise-wc)
[![Visual tests](https://percy.io/static/images/percy-badge.svg)](https://percy.io/00aaa841/web/enterprise-wc-v2)

The Infor Design System Enterprise Web Components Library is a framework-agnostic UI toolkit that delivers modern, consistent user experiences across Infor applications. Built with native web components, it enables developers to create interfaces that are accessible, responsive, and visually cohesive while maintaining full compatibility with any JavaScript framework.

## Key Features

- WCAG 2.0 AAA compliant themes with comprehensive theming capabilities
- Fully responsive with mobile-first design and touch optimization
- High-quality SVG icons for crisp display on any device
- Built-in localization, XSS protection, and extensive test coverage
- Framework-agnostic with TypeScript support
- Detailed documentation in `.md` format
- Contains an extensive [Change log](./doc/CHANGELOG.md) which lists any and all breaking changes
- [Fully linted code](./doc/LINTING.md)
- Follows [WAI-ARIA authoring practices](https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-12) with a focus on accessibility
- Built on Web Components standards with an `ids-` namespace
- We follow the [Gold standard for making web components](https://github.com/webcomponents/gold-standard/wiki)
- Includes types for typescript users
- Every component has the CSS and DOM Encapsulation for css collision avoidance
- 100+ Components
- Includes Visual Code intellisense with [standard schemas](https://github.com/webcomponents/custom-elements-manifest)
- Typescript types
- Supports Es Modules
- Bundle size in npm is 33% smaller (with code splitting enabled)
- Supports [CSP](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) including css and js CSP
- The newest designs will be added here
- Removed a lot of older less commonly used features and misused patterns
- New scroll view component to replace circle pager
- New chart components
- Data Grid virtual DOM
- Flexible Flex Grid and responsive grid

## Browser Support

We support the latest release and the release previous to the latest (R-1) for browsers and OS versions:

<!-- markdownlint-disable MD013 MD033 -->
| [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>IE Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>Safari | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari-ios/safari-ios_48x48.png" alt="iOS Safari" width="24px" height="24px" />](http://godban.github.io/browsers-support-badges/)</br>iOS Safari |
| --------- | --------- | --------- | --------- | --------- |
| R-1 | R-1 | R-1| R-1| R-1

<!-- markdownlint-enable MD013 MD033 -->

## Installation

The components are available via npm/yarn:

```sh
npm install --save ids-enterprise-wc@latest
```

To Clone and Run this Repo locally (requires node 18 (16 or 17))

```sh
mkdir enterprise-wc
cd enterprise-wc
git clone ssh://git@oxfordssh.awsdev.infor.com:7999/infor-design/enterprise-wc.git .
npm i
npm run start
```

Also include the [Source Sans Pro Font](https://oxford.awsdev.infor.com/infor-design/ids-foundation/-/blob/development/fonts/README.md) in your project and app pages.

## Using Code Hinting

The npm package ships with a file called `vscode.html-custom-data.json`. The file describes the custom elements and their settings for use in Visual Studio Code to provide “IntelliSense”. To enable it, you just need to tell VS Code where the file is.

1. As per above, install with `npm install --save ids-enterprise-wc@latest`
1. Create a folder called `.vscode` at the root of your project
1. Create a file inside that folder called `settings.json`
1. Add the following setting to the file.

```json
{
  "html.customData": ["./node_modules/ids-enterprise-wc/vscode.html-custom-data.json"]
}
```

You may need to restart VS Code for the changes to take affect.

Most popular editors support custom code completion with different configurations. Please [submit a feature request and/or pull request](https://inforwiki.atlassian.net/jira/software/c/projects/IDS/issues) if you want to add your editor.

## Documentation

- See the [Documentation](doc/DOCUMENTATION.md) for each component in markdown format. In addition to this index you will see a `.md` file in each [component folder](https://oxford.awsdev.infor.com/infor-design/enterprise-wc/-/tree/development/src/components) if browsing the source and examples.
- See the [Migration Guide](doc/MIGRATION-GUIDE.md).
- See the [Change Log](doc/CHANGELOG.md) for info and breaking changes by version.
- See the [Examples in popular frameworks](https://oxford.awsdev.infor.com/infor-design/enterprise-wc-examples) for examples and notes on using these in several frameworks.
- See the [component pages](https://design.infor.com/components/overview/) on design.infor.com for UX and accessibility guidance.

## Other Documentation

- [Contributors Guide](doc/CONTRIBUTING.md)
- [Publishing Guide](doc/PUBLISH.md) - How to create releases and publish to npm
- [Articles about Web Components](doc/ARTICLES.md)
- [Things to consider for each component](doc/CHECKLIST.md)
- [How to make a new component](doc/COMPONENTS.md)
- [Info on which linters we use](doc/LINTING.md)
- [Info on running and debugging tests](doc/TESTING.md)
- Use [Jira Issues](https://inforwiki.atlassian.net/jira/software/c/projects/IDS/issues) to report enhancements, bugs, questions, and feature requests
- [Review source code changes](https://oxford.awsdev.infor.com/infor-design/enterprise-wc/-/merge_requests)
- [Roadmap and Sprint Board](https://inforwiki.atlassian.net/jira/software/c/projects/IDS/boards/5023)
