Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tradeshift/elements
Tradeshift Elements - Reusable Tradeshift UI Components as Web Components https://tradeshift.github.io/elements
https://github.com/tradeshift/elements
client-side components css customelements javascript reusable shadowdom tradeshift ui webcomponents
Last synced: 30 days ago
JSON representation
Tradeshift Elements - Reusable Tradeshift UI Components as Web Components https://tradeshift.github.io/elements
- Host: GitHub
- URL: https://github.com/tradeshift/elements
- Owner: Tradeshift
- License: other
- Created: 2018-11-15T09:15:26.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-03T20:02:35.000Z (about 1 month ago)
- Last Synced: 2024-10-08T15:18:50.702Z (about 1 month ago)
- Topics: client-side, components, css, customelements, javascript, reusable, shadowdom, tradeshift, ui, webcomponents
- Language: JavaScript
- Size: 27.5 MB
- Stars: 15
- Watchers: 8
- Forks: 19
- Open Issues: 60
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
Elements
Reusable Tradeshift UI Components as Web Components
https://tradeshift.github.io/elements
## ➤ How to use it
- Install the core package of the Elements
```shell
$ npm i @tradeshift/elements --save
```- Install the package of the component you need ([available components](https://github.com/Tradeshift/elements/tree/master/packages/components))
```shell
$ npm i @tradeshift/elements.button --save
```- Import the component
```js
import '@tradeshift/elements.button';
```or
```html
```
- Import the css variables
```js
import '@tradeshift/elements/src/vars.css';
```or
```html
```
- Use it
```html
Sample Button
```- Our components rely on having the `Open Sans` available, You can see the `font-weight` and `font-style` you need to load [here](https://github.com/Tradeshift/elements/blob/master/packages/core/src/fonts.css), or you can just load it from our package (for now)
```html
```
## ➤ Polyfills
For supporting IE11 you need to do couple of more things
- If you are using the [Tradeshift-ui](https://github.com/Tradeshift/tradeshift-ui) you need to upgrade it to a compatible version:
- For version `12` you should upgrade to `12.2.9` or newer version
- For version `11` you should upgrade to `11.3.2` or newer version- Don't shim CSS Custom Properties in IE11
```html
if (!window.Promise) {
window.ShadyCSS = { nativeCss: true };
}```
##### You have two options for polyfills library:
1. Use [`@open-wc/polyfills-loader`](https://github.com/open-wc/open-wc/tree/master/packages/polyfills-loader)
- Installation
```shell
$ npm i @open-wc/polyfills-loader
```- Load it
```js
import loadPolyfills from '@open-wc/polyfills-loader';loadPolyfills().then(() => import('./my-app.js'));
```2. Use [`@webcomponents/webcomponentsjs`](https://github.com/webcomponents/polyfills/tree/master/packages/webcomponentsjs)
- Installation
```shell
$ npm i @webcomponents/webcomponentsjs --save
```- Enable ES5 class-less Custom Elements
```html
```
- Load appropriate polyfills and shims with [`@webcomponents/webcomponentsjs`](https://github.com/webcomponents/webcomponentsjs)
```html
```
- Load the core and components scripts after `WebComponensReady` event:
```html
window.addEventListener('WebComponentsReady', function () {
// Load Tradeshift Elements core package
var coreEl = document.createElement('script');
coreEl.setAttribute('src', '/packages/core/lib/core.umd.js');
document.body.appendChild(coreEl);// Load other Tradeshift Elements once the core package is loaded
coreEl.onload = function () {
var components = ['root', 'button'];
components.forEach(function (component) {
var el = document.createElement('script');
el.setAttribute('src', '/packages/components/' + component + '/lib/' + component + '.umd.js');
document.body.appendChild(el);
});
};
});```
## ➤ How to run it
- Make sure your node version is > 10. If you are using `nvm` you can just run:
```shell
$ nvm use
```- We are using [lerna](https://github.com/lerna/lerna) to manage our components in single repo but their own packages, so for installation you need to run:
```shell
$ npx lerna bootstrap # bootstrap all packages and make sure they work together
```- You can start the development server which is watching for changes:
```shell
$ npm start
```- Open [http://127.0.0.1:8080/](http://127.0.0.1:8080/), or e.g. http://127.0.0.1:8080/packages/components/{PACKAGE_NAME}/ if you want to test a specific element and that element (PACKAGE_NAME) has got an `index.html` file. If not, feel free to add one. Example: [http://127.0.0.1:8080/packages/components/action-select/](http://127.0.0.1:8080/packages/components/action-select/)
## ➤ How to contribute
Thanks for your interest and help!
- First thing you need to do is read this [[Component Checklist](https://github.com/Tradeshift/elements/wiki/Component-checklist)] which contains lots of important information about what you need to consider when you are creating/changing components
##### [General info](https://github.com/Tradeshift/elements/wiki/Useful-materials-starter)
You can find some [links to useful materials](https://github.com/Tradeshift/elements/wiki/Useful-materials-starter) about what we are using and some tutorials and articles that can help you get started.
#### `ts.elements`-specific info
- Extend `TSElement`, instead of `LitElement`
- Import `css`, `unsafeCSS` & `html` from `@tradeshift/elements` instead of `lit-html`
- Add the UMD global namespace to [`rollup.globals.json`](https://github.com/Tradeshift/elements/blob/master/rollup.globals.json)
- Add your package to the [`package.json`](<(https://github.com/Tradeshift/elements/blob/master/package.json)>) dependencies## ➤ How to create new component
To make it simpler and more consistent, we added a `Component generator`, You can use our its script to generate a new component from terminal and it will create the component inside `packages/components`
- **NOTE**: Still you need to add the UMD global namespace to [`rollup.globals.json`](https://github.com/Tradeshift/elements/blob/master/rollup.globals.json) and add your package to the [`package.json`](<(https://github.com/Tradeshift/elements/blob/master/package.json)>) dependencies, for now
```shell
$ npm run component-gen
```## ➤ How to release
We are using [lerna to publish](https://github.com/lerna/lerna/tree/main/commands/version#readme) our elements
- Checkout a master branch.
- Run the `npm run new-version` command. It will invoke a shell script that:
- calculate a new version number
- create a new branch with new version number and a new git tag
- generate CHANGELOG.md for all components
- make a commit with a predefined commit message to created branch
- push this branch and git tag to origin
- Go to Github and create a PR from the branch created at previous step.
- After merge a new version of elements will be built and published to NPM registry and Github Packages.---
## ➤ [Polyfill Limitations](https://github.com/Tradeshift/elements/wiki/Polyfill-Limitations)
You can see a list of limitations that we should watch out for, [here](https://github.com/Tradeshift/elements/wiki/Polyfill-Limitations)
## ➤ License
- You can always create forks on GitHub, submit Issues and Pull Requests.
- You can only use Tradeshift Elements to make apps on a Tradeshift platform, e.g. tradeshift.com.
- You can fix a bug until the bugfix is deployed by Tradeshift.
- You can host Tradeshift Elements yourself.
- If you want to make a bigger change or just want to talk with us, reach out to our team here on GitHub.You can read the full license agreement in the [LICENSE.md](https://github.com/Tradeshift/elements/blob/master/LICENSE.md).