Tradeshift / elements

Tradeshift Elements - Reusable Tradeshift UI Components as Web Components https://tradeshift.github.io/elements
Other
15 stars 17 forks source link
client-side components css customelements javascript reusable shadowdom tradeshift ui webcomponents

Tradeshift

Elements

Reusable Tradeshift UI Components as Web Components https://tradeshift.github.io/elements

NPM Version Downloads per month Contributors
Closed issues Open issues Open pull requests Closed pull requests Last commit

➤ How to use it

$ npm i @tradeshift/elements --save
$ npm i @tradeshift/elements.button --save
import '@tradeshift/elements.button';

or

<script src="https://github.com/Tradeshift/elements/raw/master/node_modules/@tradeshift/elements/lib/core.umd.js"></script>
<script src="https://github.com/Tradeshift/elements/raw/master/node_modules/@tradeshift/elements.button/lib/button.umd.js"></script>
import '@tradeshift/elements/src/vars.css';

or

<link rel="stylesheet" href="https://github.com/Tradeshift/elements/blob/master/node_modules/@tradeshift/elements/src/vars.css" />
<ts-button type="primary"> Sample Button </ts-button>
<link rel="stylesheet" href="https://github.com/Tradeshift/elements/blob/master/node_modules/@tradeshift/elements/src/fonts.css" />

➤ Polyfills

For supporting IE11 you need to do couple of more things

<!-- Place this in the <head>, before the Web Component polyfills are loaded -->
<script>
    if (!window.Promise) {
        window.ShadyCSS = { nativeCss: true };
    }
</script>
You have two options for polyfills library:
  1. Use @open-wc/polyfills-loader
$ npm i @open-wc/polyfills-loader
import loadPolyfills from '@open-wc/polyfills-loader';

loadPolyfills().then(() => import('./my-app.js'));
  1. Use @webcomponents/webcomponentsjs
$ npm i @webcomponents/webcomponentsjs --save
<script src="https://github.com/Tradeshift/elements/raw/master/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js"></script>
<script src="https://github.com/Tradeshift/elements/raw/master/node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js" defer></script>
<!-- Load Tradeshift Elements once the polyfills are ready -->
<script>
    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);
            });
        };
    });
</script>

➤ How to run it

$ nvm use
$ npx lerna bootstrap     # bootstrap all packages and make sure they work together
$ npm start

➤ How to contribute

Thanks for your interest and help!

General info

You can find some links to useful materials about what we are using and some tutorials and articles that can help you get started.

ts.elements-specific info

➤ 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

$ npm run component-gen

➤ How to release

We are using lerna to publish our elements


Polyfill Limitations

You can see a list of limitations that we should watch out for, here

➤ License

You can read the full license agreement in the LICENSE.md.