Reusable Tradeshift UI Components as Web Components https://tradeshift.github.io/elements
$ 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>
Open Sans
available, You can see the font-weight
and font-style
you need to load here, or you can just load it from our package (for now)<link rel="stylesheet" href="https://github.com/Tradeshift/elements/blob/master/node_modules/@tradeshift/elements/src/fonts.css" />
For supporting IE11 you need to do couple of more things
If you are using the Tradeshift-ui you need to upgrade it to a compatible version:
12
you should upgrade to 12.2.9
or newer version11
you should upgrade to 11.3.2
or newer versionDon't shim CSS Custom Properties in IE11
<!-- Place this in the <head>, before the Web Component polyfills are loaded -->
<script>
if (!window.Promise) {
window.ShadyCSS = { nativeCss: true };
}
</script>
$ npm i @open-wc/polyfills-loader
import loadPolyfills from '@open-wc/polyfills-loader';
loadPolyfills().then(() => import('./my-app.js'));
$ npm i @webcomponents/webcomponentsjs --save
<script src="https://github.com/Tradeshift/elements/raw/master/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js"></script>
@webcomponents/webcomponentsjs
<script src="https://github.com/Tradeshift/elements/raw/master/node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js" defer></script>
WebComponensReady
event:<!-- 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>
nvm
you can just run:$ nvm use
$ npx lerna bootstrap # bootstrap all packages and make sure they work together
$ npm start
index.html
file. If not, feel free to add one. Example: http://127.0.0.1:8080/packages/components/action-select/Thanks for your interest and help!
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 infoTSElement
, instead of LitElement
css
, unsafeCSS
& html
from @tradeshift/elements
instead of lit-html
rollup.globals.json
package.json
dependenciesTo 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
rollup.globals.json
and add your package to the package.json
dependencies, for now$ npm run component-gen
We are using lerna to publish our elements
npm run new-version
command. It will invoke a shell script that:
You can see a list of limitations that we should watch out for, here
You can read the full license agreement in the LICENSE.md.