Skip to content

Latest commit

History

1,248 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Tradeshift

Elements

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

NPM VersionDownloads per monthContributors
Closed issuesOpen issuesOpen pull requestsClosed pull requestsLast commit

➤ How to use it

  • Install the core package of the Elements
$ npm i @tradeshift/elements --save
$ npm i @tradeshift/elements.button --save
  • Import the component
import'@tradeshift/elements.button';

or

<scriptsrc="node_modules/@tradeshift/elements/lib/core.umd.js"></script><scriptsrc="node_modules/@tradeshift/elements.button/lib/button.umd.js"></script>
  • Import the css variables
import'@tradeshift/elements/src/vars.css';

or

<linkrel="stylesheet" href="node_modules/@tradeshift/elements/src/vars.css" />
  • Use it
<ts-buttontype="primary"> Sample Button </ts-button>
  • Our components rely on having the 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)
<linkrel="stylesheet" href="node_modules/@tradeshift/elements/src/fonts.css" />

➤ Polyfills

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:

    • 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

<!-- 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
  • Installation
$ npm i @open-wc/polyfills-loader
  • Load it
importloadPolyfillsfrom'@open-wc/polyfills-loader';loadPolyfills().then(()=>import('./my-app.js'));
  1. Use @webcomponents/webcomponentsjs
  • Installation
$ npm i @webcomponents/webcomponentsjs --save
  • Enable ES5 class-less Custom Elements
<scriptsrc="/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js"></script>
<scriptsrc="/node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js" defer></script>
  • Load the core and components scripts after WebComponensReady event:
<!-- Load Tradeshift Elements once the polyfills are ready --><script>window.addEventListener('WebComponentsReady',function(){// Load Tradeshift Elements core packagevarcoreEl=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 loadedcoreEl.onload=function(){varcomponents=['root','button'];components.forEach(function(component){varel=document.createElement('script');el.setAttribute('src','/packages/components/'+component+'/lib/'+component+'.umd.js');document.body.appendChild(el);});};});</script>

➤ How to run it

  • Make sure your node version is > 10. If you are using nvm you can just run:
$ nvm use
  • We are using lerna to manage our components in single repo but their own packages, so for installation you need to run:
$ npx lerna bootstrap # bootstrap all packages and make sure they work together
  • You can start the development server which is watching for changes:
$ npm start

➤ How to contribute

Thanks for your interest and help!

  • First thing you need to do is read this [Component Checklist] which contains lots of important information about what you need to consider when you are creating/changing components

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

  • 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
  • Add your package to the 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 and add your package to the package.json dependencies, for now
$ npm run component-gen

➤ How to release

We are using lerna to publish 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.

➤ How to test a PR before it's merged

Comment on the PR to publish a temporary preview version to GitHub Packages (restricted to Tradeshift org members / the repo owner):

  • npm publish — builds and publishes every package with the same 0.0.0-<uuid> version, under the pr-preview dist-tag. Package dependencies between them (e.g. @tradeshift/elements.header's dependency on @tradeshift/elements.app-icon) are automatically rewritten to match.
  • npm publish <name> — publishes only that one package, e.g. npm publish app-icon (npm publish core or npm publish elements for @tradeshift/elements itself). Use this only when nothing that package depends on changed — it does not rewrite that package's own dependency ranges, so a change in a dependency won't be reflected unless that dependency is also published (with npm publish or its own npm publish <name>).
  • The bot replies with the exact npm install ... --registry=https://npm.pkg.github.com command(s) to try it out.

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

➤ 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.

About

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

Topics

Resources

Stars

18 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages