IMPORTANT: The Conectate Elements are a work in progress and subject to major changes.
The Conectate Elements (CT) are a collection of Web Components maintained by @herberthobregon that implement Material Design.
Install a component (ct-button for example) from NPM:
npm i @conectate/ct-button @webcomponents/webcomponentsjs
# or
yarn install @conectate/ct-button @webcomponents/webcomponentsjs
Import the component's JavaScript module, use the component in your HTML, and control it with JavaScript, just like you would with a built-in element such as <button>
:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>My Example App</title>
<!-- Add support for Web Components to older browsers. -->
<script src="./node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
<!-- Your application must load the Roboto and Material Icons fonts. -->
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">
<body>
<!-- Use Web Components in your HTML like regular built-in elements. -->
<ct-button id="myButton" raised>Click Me!</ct-button>
<!-- The Conectate Elements use standard JavaScript modules. -->
<script type="module">
// Importing this module registers <ct-button> as an element that you
// can use in this page.
//
// ====================================================================
// Note this import is a BARE MODULE specifier, so it must be converted
// to a path using a server such as es-dev-server.
// ====================================================================
import '@conectate/ct-button';
// Standard DOM APIs work with Web Components just like they do for
// built-in elements.
const button = document.querySelector('#myButton');
button.addEventListener('click', () => {
alert('You clicked!');
});
</script>
</body>
</html>
Serve your HTML with any server or build process that supports bare module specifier resolution (see next section):
npm install -g es-dev-server
es-dev-server --node-resolve
The Conectate Elements are published as standard JavaScript modules that use bare module specifiers. Bare module specifiers are not yet supported by browsers, so it is necessary to use a tool that transforms
them to a path (for example from @conectate/ct-button
to ./node_modules/@conectate/ct-button/ct-button.js
).
Two great choices for tools that do this are:
- During local development, use open-wc's
es-dev-server
with the--node-resolve
flag. - For your production deployment, build your application with Webpack or Rollup with the
rollup-plugin-node-resolve
plugin.
Most applications should include the following tags in their main HTML file to ensure that text and icons render correctly:
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet" />
The Conectate Elements default to using the Roboto font for text. This fonts are not automatically loaded, so it is the application's responsiblity to ensure that they are loaded.
The Conectate Elements use modern browser features that are natively supported in the latest versions of Chrome, Safari, Firefox, and Edge. IE11 and some older versions of other browsers are also supported, but they require additional build steps and polyfills.
Feature |
Chrome |
Safari |
Firefox |
Edge |
IE11 |
---|---|---|---|---|---|
Web Components | * | ||||
Modules | * | ||||
ES2015 | * |
To support Web Components in IE11 and other older browsers, install the Web Components Polyfills:
npm install @webcomponents/webcomponentsjs
And include the webcomponents-loader.js
script in your HTML, which detects when polyfills are needed and loads them automatically:
<!-- Add support for Web Components to IE11. -->
<script src="node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
To support IE11 or other older browsers that do not support JavaScript modules, you must transform JavaScript modules to classic JavaScript scripts. Webpack or Rollup is a popular tool that can consume JavaScript modules and produce a number of other formats, such as AMD.
If you support IE11 or other older browsers that do not support the latest version of JavaScript, you must transpile your application to ES5. Babel is a popular tool that does this. You can integrate Babel transpilation into a Rollup or Webpack.