diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d70bf8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +content-gen.js diff --git a/.travis.yml b/.travis.yml index 07d33ac..0414da9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,17 +3,15 @@ node_js: - '6' cache: directories: - - node_modules + - node_modules before_install: -- openssl aes-256-cbc -K $encrypted_b0dab8baefe0_key -iv $encrypted_b0dab8baefe0_iv - -in client-secret.json.enc -out client-secret.json -d -before_deploy: - - node gen.js +- 'if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then openssl aes-256-cbc -K $encrypted_5ae6bda58156_key -iv $encrypted_5ae6bda58156_iv + -in client-secret.json.enc -out client-secret.json -d; fi' +script: +- node gen.js deploy: provider: gae skip_cleanup: true keyfile: client-secret.json project: web-components-resources - config: app.yaml - version: 1 default: true diff --git a/README.md b/README.md index 9cf6014..c4f19f5 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ # Adding or modifying content 1. Decide what the content type is: - * Evergreen pages such as Polyfills, Specifications should me modified in [/static] + * Evergreen pages such as Polyfills, Specifications should be modified in [/static] * Posts such as articles/podcasts/presentations should be added to [/documents] 1. Send a PR with the changes. 1. Done! Once it's merged, the site will update with the latest content. diff --git a/app.js b/app.js index 892b043..abe9666 100644 --- a/app.js +++ b/app.js @@ -60,7 +60,7 @@ app.get('/content/*', function(request, response) { // Return full author metadata if (metadata.authors) { - for (var author of metadata.authors) + for (let author of metadata.authors) Object.assign(author, authors[author.id]); } @@ -98,6 +98,24 @@ app.get('/resources', function(request, response) { response.status(200).send(createResult(metadata.all, offset, limit)); }); +app.get('/resources/author/:author', function(request, response) { + response.header('Access-Control-Allow-Origin', '*'); + const offset = parseInt(request.query.offset) || 0; + const limit = parseInt(request.query.limit) || 10; + + let filtered = metadata.all.filter(function(item) { + if (!item.authors) + return false; + for (let author of item.authors) { + if (author.id == request.params.author) + return true; + } + return false; + }); + response.status(200).send( + createResult(filtered, offset, limit)); +}); + app.get('/resources/:bucket', function(request, response) { response.header('Access-Control-Allow-Origin', '*'); if (!metadata[request.params.bucket]) { diff --git a/app.yaml b/app.yaml index b22edb5..f0ccc6d 100644 --- a/app.yaml +++ b/app.yaml @@ -1,2 +1 @@ -runtime: nodejs -vm: true +runtime: nodejs8 diff --git a/assets/images/building-a-custom-tag-input-with-skate-js.png b/assets/images/building-a-custom-tag-input-with-skate-js.png new file mode 100644 index 0000000..b0aa475 Binary files /dev/null and b/assets/images/building-a-custom-tag-input-with-skate-js.png differ diff --git a/assets/images/custom-elements-interop-angular.png b/assets/images/custom-elements-interop-angular.png new file mode 100644 index 0000000..a6ec7f0 Binary files /dev/null and b/assets/images/custom-elements-interop-angular.png differ diff --git a/authors.js b/authors.js index f7e5197..df413f0 100755 --- a/authors.js +++ b/authors.js @@ -11,6 +11,12 @@ module.exports = { github: "1240073", twitter: "onishiweb" }, + alex_sexton: { + name: "Alex Sexton", + bio: "Alex is a Front-end Infrastructure at Stripe", + github: "96554", + twitter: "SlexAxton" + }, amal_hussein: { name: "Amal Hussein", bio: "Amal Hussein is a software developer in Boston, MA & a panelist on The Web Platform Podcast", @@ -107,12 +113,31 @@ module.exports = { gravatar: "f3d812c50181277a75a997270518ee15", twitter: "findajit" }, + btopro: { + name: "Bryan Ollendyke", + bio: "Bryan is lead of HAX and ELMS: Learning Network at Penn State. ELMS:LN and HAX seek to democratise content production and transform education through advanced authoring tools.", + gravatar: "8f21ddd50ee3f5856d9be912e6a5b37d", + github: "329735", + twitter: "btopro" + }, bill_heaton: { name: "Bill Heaton", bio: "Bill is a Senior UI Engineer at CrowdStrike who loves to build great applications with Ember.js.", github: "17178", twitter: "pixelhandler" }, + ben_lesh: { + name: "Ben Lesh", + bio: "Ben is a Software engineer at Google, a RxJS core team member, and moderndotweb podcast penelist.", + github: "1540597", + twitter: "BenLesh" + }, + brian_holt: { + name: "Brian Holt", + bio: "Brian is a staff engineer at LinkedIn and a teacher for Frontend Masters", + github: "999523", + twitter: "holtbt" + }, bruce_lawson: { name: "Bruce Lawson", bio: "Bruce is co-author of Introducing HTML5 and Opera employee.", @@ -293,6 +318,18 @@ module.exports = { github: "189541", twitter: "filipearaujo" }, + fred_schott: { + name: "Fred Schott", + bio: "Fred is an Engineer at Google", + github: "622227", + twitter: "FredKSchott" + }, + gerwin_sturm: { + name: "Gerwin Sturm", + bio: "Gerwin is a Google Developer Expert from Vienna, Austria.", + github: "809528", + twitter: "scarygami" + }, gil_fink: { name: "Gil Fink", bio: "Gil is a web developer and the founder of sparXys", @@ -311,6 +348,11 @@ module.exports = { github: "598730", twitter: "guybedford" }, + hector_zarco: { + name: "Hector Zarco", + github: "1194982", + twitter: "zzarcon" + }, hidde_de_vries: { name: "Hidde de Vries", bio: "Hidde is web designer and developer, experienced with things like responsive web design, front-end development and progressive enhancement.", @@ -359,6 +401,12 @@ module.exports = { github: "1749548", twitter: "jeffposnick" }, + jem_young: { + name: "Jem Young", + bio: "Jem is a Senior Software Engineer at Netflix and a panelist on @FrontendHH", + github: "984983", + twitter: "JemYoung" + }, jen_simmons: { name: "Jen Simmons", bio: "Jen is a professional designer and developer in the New York City area. She is host of The Web Ahead Podcast.", @@ -449,6 +497,12 @@ module.exports = { github: "2549335", twitter: "jcmmit" }, + justin_willis: { + name: "Justin Willis", + bio: "Justin is a developer at Ionic", + github: "8823093", + twitter: "justinwillis96" + }, kaelig: { name: "Kaelig Deloumeau-Prigent", bio: "Kaelig is a french blogger, author and front-end web developer working in London at FT Labs. Previously, he worked on the responsive sites of the BBC News and the Guardian.", @@ -467,6 +521,12 @@ module.exports = { github: "1500684", twitter: "kentcdodds" }, + kenneth_christiansen: { + name: "Kenneth Christiansen", + bio: "Kenneth is a Web Platform hacker at Intel", + github: "1101339", + twitter: "kennethrohde" + }, kevin_gleason: { name: "Kevin Gleason", bio: "Kevin is an Embedded Systems and Internet of Things Intern at Pubnub", @@ -479,6 +539,18 @@ module.exports = { github: "1354932", twitter: "kevinpschaaf" }, + kito_mann: { + name: "Kito Mann", + bio: "Kito is a Principal Consultant at Virtua", + github: "3187538", + twitter: "kito99" + }, + lars_knudsen: { + name: "Lars Knudsen", + bio: "Lars is the founder of IT Knows and a web platform and hardware connectivity evangelist", + github: "1014678", + twitter: "denladeside" + }, lea_alcantara: { name: "Lea Alcantara", bio: " Lea is a lead designer of Bright Umbrella, designs websites with sass, and hosts the Ctrl+Click Podcast", @@ -569,6 +641,12 @@ module.exports = { gravatar: "255122f396049d1c7fb264cfa6ec584c", twitter: "ModusSchwartz" }, + mikeal_rogers: { + name: "Mikeal Rogers", + bio: "Mikeal is creator of NodeConf and request", + github: "579", + twitter: "Mikeal" + }, monica_dinculescu: { name: "Monica Dinculescu", bio: "Monica is a Software Engineer working on Polymer and Chrome for Google", @@ -635,6 +713,12 @@ module.exports = { github: "1043291", twitter: "morewry" }, + rachel_white: { + name: "Rachel White", + bio: "Rachel is a tech evangelist at Microsoft", + github: "228230", + twitter: "ohhoe" + }, raphael_rougeron: { name: "Raphaël Rougeron", bio: "Raphael is creator of The Bosonic Project, entrepreneur, and software engineer.", @@ -653,6 +737,12 @@ module.exports = { github: "1779253", twitter: "richcampbell" }, + rob_bearman: { + name: "Rob Bearman", + bio: "Rob is co-founder of Component Kitchen & Elix", + github: "1823198", + twitter: "robbearman" + }, rob_dodson: { name: "Rob Dodson", bio: "Rob is a Developer Advocate on the Google Chrome team. He is currently helping to educate developers about web components and Polymer. Though he's originally from the South, these days he divides his time between Mountain View and San Francisco.", @@ -665,6 +755,18 @@ module.exports = { gravatar:"e1709218ec4ecc612e5c9a6d5d59e68f", twitter: "EisenbergEffect" }, + ryan_anklam:{ + name: 'Ryan Anklam', + bio: 'Ryan is a Senior UI Engineer at Netflix.', + github: '392624', + twitter: 'bittersweetryan' + }, + sam_li: { + name: "Sam Li", + bio: "Sam is a Software Engineer on the Google Chrome team", + github: "787668", + twitter: "samdotli" + }, scott_miles: { name: "Scott Miles", bio: "Scott is a Software engineer in the Polymer team. He currently lives in Napa, CA.", @@ -689,6 +791,12 @@ module.exports = { github: "36964", twitter: "theefer" }, + stacy_london: { + name: "Stacy London", + bio: "Stacy is a front-end engineer at Atlassian Bitbucket and a panelist on Frontend Happy Hour podcast", + github: "1217129", + twitter: "stacylondoner" + }, steve_faulkner: { name: "Steve Faulkner", bio: "Steve is Principal Accessibility Engineer at Paciello Group and Web Components Accessibility Expert.", diff --git a/client-secret.json.enc b/client-secret.json.enc index d6e289c..f0ef137 100644 Binary files a/client-secret.json.enc and b/client-secret.json.enc differ diff --git a/documents/articles/building-a-custom-tag-input-with-skate-js.html.md b/documents/articles/building-a-custom-tag-input-with-skate-js.html.md new file mode 100644 index 0000000..aea8cdb --- /dev/null +++ b/documents/articles/building-a-custom-tag-input-with-skate-js.html.md @@ -0,0 +1,13 @@ +--- +title: Building a custom tag input with Skate.js +authors: [hector_zarco] +date: 2017-1-4 +original_date: 2017-1-4 +image: building-a-custom-tag-input-with-skate-js.png +link: https://hackernoon.com/building-a-custom-tag-input-with-skate-js-fbd4cdf744f#.ytkckk3gc +category: articles +--- + +Are you lost trying to build and use Web Components? Skate.js uses the platform and sheds some light on it. + + diff --git a/documents/articles/custom-elements-interop-angular.html.md b/documents/articles/custom-elements-interop-angular.html.md new file mode 100644 index 0000000..df5daa2 --- /dev/null +++ b/documents/articles/custom-elements-interop-angular.html.md @@ -0,0 +1,13 @@ +--- +title: Custom Element Inter-op with Angular 2 +authors: [danny_blue] +date: 2017-03-16 +original_date: 2016-06-30 +link: https://medium.com/@dee_bloo/custom-element-inter-op-with-angular-2-ed75f013a9ba +category: articles +image: custom-elements-interop-angular.png +--- + +Learn how to use custom elements in Angular 2 + + diff --git a/documents/articles/polymer-in-legacy-production.html.md b/documents/articles/polymer-in-legacy-production.html.md new file mode 100644 index 0000000..2c3360a --- /dev/null +++ b/documents/articles/polymer-in-legacy-production.html.md @@ -0,0 +1,12 @@ +--- +title: Polymer in Production +authors: [gerwin_sturm] +date: 2017-03-16 +original_date: 2017-03-13 +link: https://codingwithgerwin.blogspot.com.au/2017/03/polymer-in-production.html +category: articles +--- + +Gerwin provides insight on how to bring web components & Polymer to a large legacy application. + + diff --git a/documents/articles/universal-web-components.html.md b/documents/articles/universal-web-components.html.md new file mode 100644 index 0000000..253bdce --- /dev/null +++ b/documents/articles/universal-web-components.html.md @@ -0,0 +1,12 @@ +--- +title: Universal Web Components +authors: [jordan_last] +date: 2017-03-13 +original_date: 2017-03-06 +link: https://scotch.io/bar-talk/universal-web-components +category: articles +layout: single +tags: ['Custom Elements'] +--- + +Applications built from web components can be easy to understand, grow, and refactor, because they are easy to break up into modular and declarative pieces. They work well in the browser, but I believe there is far greater potential as they begin to spill out of the browser, into the desktop, server, and even embedded applications. diff --git a/documents/articles/web-components-org-update.html.md b/documents/articles/web-components-org-update.html.md new file mode 100644 index 0000000..5c524b6 --- /dev/null +++ b/documents/articles/web-components-org-update.html.md @@ -0,0 +1,54 @@ +--- +title: What's new on webcomponents.org +authors: [sam_li] +date: 2017-05-11 +original_date: 2017-05-11 +category: articles +--- + +A roundup of what's new in the web components world in the short few months since webcomponents.org has launched. + + +In the short few months since webcomponents.org has launched, we have seen: + * almost 900 elements have been added + * reached an incredible milestone of 1 million page views each month + * a new web components library, [slim.js](https://github.com/eavichay/slim.js) + * [Safari 10.1 and iOS Safari 10.3](http://caniuse.com/#feat=custom-elementsv1) shipped Custom Elements v1 + * stable v1.0.0 release of [webcomponents.js polyfills](https://github.com/webcomponents/webcomponentsjs) + +## webcomponents.org changes + +### Vanilla custom element support +Vanilla custom elements using v1 class syntax now supported by documentation generation. + +### Polymer 2.0 support +Polymer 2.0 elements now supported by documentation generation in the same fashion Polymer 1.0 was supported. + +### Custom pages +In addition to your README & automatically generated documentation pages, you can now specify custom pages. You can use custom pages to provide usage guides, contribution guides or documentation. Specify custom pages under the `pages` attribute in your `bower.json`. These pages are markdown pages inside your repository and support inline demos like the README.md. + +Sample change: +```json +{ + "pages": { + "Contributing guide": "contributing.md", + "Usage with Angular": "folder/page.md" + } +} +``` + +### Specifying demo files +Not using Polymer and want full-sized demos? You can now specify a list of demos in your `bower.json` file. Just ensure all necessary dependencies are specified in your `bower.json`. + +Sample change: +```json +{ + "demos": { + "My simple demo": "path/simple-demo.html", + "A complex demo": "my-complex-demo.html" + } +} +``` + +### ES2015 (ES6) automatic transpilation +All demos, including inline demos are now automatically transpiled for browsers that don't support ES2015 syntax. diff --git a/documents/podcasts/1-history-of-polymer.html.md b/documents/podcasts/1-history-of-polymer.html.md index 1c52764..f3a7b03 100644 --- a/documents/podcasts/1-history-of-polymer.html.md +++ b/documents/podcasts/1-history-of-polymer.html.md @@ -6,7 +6,6 @@ date: 2015-05-28 original_date: 2015-05-28 link: "http://www.stitcher.com/podcast/polymer-podcasst/polymer-podcast/e/history-of-polymer-38325109" category: podcasts -layout: single --- In this episode, we talk with Rob Dodson, developer evangelist for the Polymer Project, about the history of Polymer. We also get to to hear Rob's thoughts on the future of the web and the role Polymer will play in it. diff --git a/documents/podcasts/110-the-amp-mobile-revolution.html.md b/documents/podcasts/110-the-amp-mobile-revolution.html.md index 97e012d..4706df3 100644 --- a/documents/podcasts/110-the-amp-mobile-revolution.html.md +++ b/documents/podcasts/110-the-amp-mobile-revolution.html.md @@ -6,7 +6,6 @@ date: 2016-10-14 original_date: 2016-10-11 link: "http://thewebplatformpodcast.com/110-the-amp-mobile-revolution" category: podcasts -layout: single --- Paul Bakaus, Google Engineer, has recently been leading the AMP Project which is an open source initiative to optimize content for mobile devices using the web. \ No newline at end of file diff --git a/documents/podcasts/111-extensible-web-components.html.md b/documents/podcasts/111-extensible-web-components.html.md index cc70dcd..5ce0180 100644 --- a/documents/podcasts/111-extensible-web-components.html.md +++ b/documents/podcasts/111-extensible-web-components.html.md @@ -6,7 +6,6 @@ date: 2016-10-21 original_date: 2016-10-18 link: "http://thewebplatformpodcast.com/111-extensible-web-components" category: podcasts -layout: single --- Jeremy Keith, web guru & co-founder of ClearLeft, talks with us about the potential pitfalls and hopes on Progressive Enhancement with Web Components. \ No newline at end of file diff --git a/documents/podcasts/115-aia-polymer-and-web-components-with-angular-2.html.md b/documents/podcasts/115-aia-polymer-and-web-components-with-angular-2.html.md index 5890cda..3e854e6 100644 --- a/documents/podcasts/115-aia-polymer-and-web-components-with-angular-2.html.md +++ b/documents/podcasts/115-aia-polymer-and-web-components-with-angular-2.html.md @@ -6,7 +6,6 @@ date: 2016-10-20 original_date: 2016-10-20 link: "https://devchat.tv/adv-in-angular/115-aia-polymer-and-web-components-with-angular-2-with-rob-dodson" category: podcasts -layout: single --- Rob Dodson talks with the Adventures in Angular Panel on Angular 2 integration with Web Components \ No newline at end of file diff --git a/documents/podcasts/121-the-webcomponentsorg-relaunch.html.md b/documents/podcasts/121-the-webcomponentsorg-relaunch.html.md new file mode 100644 index 0000000..b67eccd --- /dev/null +++ b/documents/podcasts/121-the-webcomponentsorg-relaunch.html.md @@ -0,0 +1,11 @@ +--- +title: "121 The WebComponents.org Relaunch" +authors: [taylor_savage, sam_li, danny_blue, leon_revill] +podcast: "The Web Platform Podcast" +date: 2017-01-13 +original_date: 2017-01-13 +link: "http://thewebplatformpodcast.com/121-the-webcomponentsorg-relaunch" +category: podcasts +--- + +WebComponents.org has long been a great resource for learning and understanding web components. Recently, Google & the Web Components community have worked hard to make the site a place not only to consume information on Web Components, but also to share your own components and consume others. \ No newline at end of file diff --git a/documents/podcasts/123-universal-web-components.html.md b/documents/podcasts/123-universal-web-components.html.md new file mode 100644 index 0000000..9d77b7d --- /dev/null +++ b/documents/podcasts/123-universal-web-components.html.md @@ -0,0 +1,11 @@ +--- +title: "123: Universal Web Components" +authors: [jordan_last, justin_ribeiro, leon_revill, danny_blue] +podcast: "The Web Platform Podcast" +date: 2017-02-01 +original_date: 2017-02-01 +link: "http://thewebplatformpodcast.com/123-universal-web-components" +category: podcasts +--- + +Web Components Remote Conference is a two day conference all about Web Components. Jordan Last (@lastmjs) will be delivering a very interesting talk “Universal Web Components” which takes the idea of Web Components for GUIs, throws it out the window and then uses Web Components to control a drone instead! With the Custom Elements and Shadow DOM specifications settled on V1 and greater browser support than ever now is the perfect time to be investing in Web Components. This episode covers why Web Components are important, what challenges people face and some very interesting use cases for Web Components you probably never thought of. \ No newline at end of file diff --git a/documents/podcasts/124-web-components-typescript-and-bears-oh-my.html.md b/documents/podcasts/124-web-components-typescript-and-bears-oh-my.html.md new file mode 100644 index 0000000..97953bf --- /dev/null +++ b/documents/podcasts/124-web-components-typescript-and-bears-oh-my.html.md @@ -0,0 +1,11 @@ +--- +title: "124: Web Components, TypeScript, and Bears Oh My" +authors: [kito_mann, justin_ribeiro, amal_hussein, danny_blue] +podcast: "The Web Platform Podcast" +date: 2017-03-01 +original_date: 2017-03-01 +link: "http://thewebplatformpodcast.com/124-web-components-typescript-and-bears-oh-my" +category: podcasts +--- + +Web Components Remote Conference is a two day conference all about Web Components. Kito Mann (@kito99) will be delivering a very interesting talk “Beautiful Web Apps with Polymer and TypeScript”. This episode covers why Web Components are important, what challenges people face and some very interesting use cases for Web Components you probably never thought of. \ No newline at end of file diff --git a/documents/podcasts/126-gold-standard-checklist-for-web-components.html.md b/documents/podcasts/126-gold-standard-checklist-for-web-components.html.md new file mode 100644 index 0000000..2720198 --- /dev/null +++ b/documents/podcasts/126-gold-standard-checklist-for-web-components.html.md @@ -0,0 +1,11 @@ +--- +title: "126: Gold Standard Checklist for Web Components" +authors: [rob_bearman, jan_miksovsky, justin_ribeiro, leon_revill, danny_blue] +podcast: "The Web Platform Podcast" +date: 2017-03-29 +original_date: 2017-03-29 +link: "http://thewebplatformpodcast.com/126-gold-standard-checklist-for-web-components" +category: podcasts +--- + +This week we are joined with special guests Jan Miksovsky and Rob Bearman from Component Kitchen to talk about their work on the Web Component Gold Standard. The Gold Standard is an open source project which outlines best practices for creating Web Components. The Gold Standard presents developers with a checklist they can use to ensure their Web Components are of exceptional high quality matching that of native elements. The episode goes into where the requirement for the Gold Standard came from and why it is such an invaluable resource for Web Component developers. This includes discussion on why code reuse on the web is so difficult and how Web Components and the Gold Standard can help. We also talk about the future of the Gold Standard and how the community can help make it even better. \ No newline at end of file diff --git a/documents/podcasts/129-elix-project.html.md b/documents/podcasts/129-elix-project.html.md new file mode 100644 index 0000000..f24b02d --- /dev/null +++ b/documents/podcasts/129-elix-project.html.md @@ -0,0 +1,11 @@ +--- +title: "129: Elix Project" +authors: [rob_bearman, jan_miksovsky, justin_ribeiro, leon_revill] +podcast: "The Web Platform Podcast" +date: 2017-04-24 +original_date: 2017-04-24 +link: "http://thewebplatformpodcast.com/129-elix-project" +category: podcasts +--- + +In this episode, Leon and Justin sit down with Jan Miksovsky and Rob Bearman of of the recently released Elix Project. Elix is a community-driven collection of high-quality web components for common user interface patterns such as lists, menus, dialogs, carousels, and so on. The modular nature of web components let you easily incorporate them into your web apps, and their standard definition ensures good results across all mainstream browsers. \ No newline at end of file diff --git a/documents/podcasts/133-ionic-and-web-components.html.md b/documents/podcasts/133-ionic-and-web-components.html.md new file mode 100644 index 0000000..fb22eb2 --- /dev/null +++ b/documents/podcasts/133-ionic-and-web-components.html.md @@ -0,0 +1,11 @@ +--- +title: "133: Ionic & Web Components" +authors: [justin_willis, leon_revill, justin_ribeiro, danny_blue] +podcast: "The Web Platform Podcast" +date: 2017-08-03 +original_date: 2017-08-03 +link: "http://thewebplatformpodcast.com/133-ionic-web-components" +category: podcasts +--- + +Justin Willis from Ionic joins us this week to talk about hybrid app development with Ionic and some amazing work they have been doing with Web Components. Justin gives us an overview of the Ionic project, its background and how it makes building hybrid apps super easy. We then move on to talk about why Ionic have chosen to rebuild their components as Web Components and the benefits they are seeing from making this move. \ No newline at end of file diff --git a/documents/podcasts/136-polymer-summit-recap.html.md b/documents/podcasts/136-polymer-summit-recap.html.md new file mode 100644 index 0000000..79bc9d1 --- /dev/null +++ b/documents/podcasts/136-polymer-summit-recap.html.md @@ -0,0 +1,11 @@ +--- +title: "136: Polymer Summit Recap" +authors: [kenneth_christiansen, lars_knudsen, danny_blue, leon_revill, amal_hussein] +podcast: "The Web Platform Podcast" +date: 2017-08-31 +original_date: 2017-08-31 +link: "http://thewebplatformpodcast.com/136-polymer-summit-recap" +category: podcasts +--- + +This week the crew is joined by Lars Knudsen (@denladeside) and Kenneth Christiansen (@kennethrohde) to talk about the recent Polymer Summit and all of the awesome stuff revealed there. Are web components really ready? Who is using web components? Answers to these questions and more on this week’s episode of the Web Platform Podcast. \ No newline at end of file diff --git a/documents/podcasts/2-polymer-io.html.md b/documents/podcasts/2-polymer-io.html.md index 09adaa5..e67d1fd 100644 --- a/documents/podcasts/2-polymer-io.html.md +++ b/documents/podcasts/2-polymer-io.html.md @@ -6,7 +6,6 @@ date: 2015-05-29 original_date: 2015-05-29 link: "http://www.stitcher.com/podcast/polymer-podcast/e/38325099" category: podcasts -layout: single --- In this episode, the Polymer Podcast panel talks with Taylor Savage, product manager for the Polymer Project, about the announcements at Google I/O and Polymer 1.0. We learn about the Polymer starter kit, the new web component catalogs, and how the polymer team gets things done! diff --git a/documents/podcasts/21-building-component-based-systems-with-josh-crowther.html.md b/documents/podcasts/21-building-component-based-systems-with-josh-crowther.html.md index 90fa4ab..50b7444 100644 --- a/documents/podcasts/21-building-component-based-systems-with-josh-crowther.html.md +++ b/documents/podcasts/21-building-component-based-systems-with-josh-crowther.html.md @@ -6,7 +6,6 @@ date: 2016-10-20 original_date: 2016-10-20 link: "https://soundcloud.com/techpeople/tp-021-building-component-based-systems-with-josh-crowther-from-family-search" category: podcasts -layout: single --- In this episode Carlos Taborda chats about the evolution of how web applications are built, and how Family Search is leveraging a component-based architecture with Web Components. \ No newline at end of file diff --git a/documents/podcasts/3-testing-polymer.html.md b/documents/podcasts/3-testing-polymer.html.md index 6ae8115..d57f6e5 100644 --- a/documents/podcasts/3-testing-polymer.html.md +++ b/documents/podcasts/3-testing-polymer.html.md @@ -6,7 +6,6 @@ date: 2015-06-23 original_date: 2015-06-23 link: "http://www.stitcher.com/podcast/polymer-podcast/e/39470555" category: podcasts -layout: single --- The Polymer Podcast panel talks with to Ian MacLeod, core architect behind web-component-tester about testing with Polymer. They also delve into WCT's rich history and tackle some of the harder aspects of testing. diff --git a/documents/podcasts/4-polymer-1-review.html.md b/documents/podcasts/4-polymer-1-review.html.md index f599313..f5a7f1e 100644 --- a/documents/podcasts/4-polymer-1-review.html.md +++ b/documents/podcasts/4-polymer-1-review.html.md @@ -6,7 +6,6 @@ date: 2015-07-28 original_date: 2015-07-28 link: "http://www.stitcher.com/podcast/polymer-podcast/e/39972949" category: podcasts -layout: single --- After one month of some intense rewrites and migration, The Polymer Podcast team sits down and discusses the road to Polymer 1.0 diff --git a/documents/podcasts/42-web-components-with-rob-dodson-tushar-mathur-and-monica-dinculescu.html.md b/documents/podcasts/42-web-components-with-rob-dodson-tushar-mathur-and-monica-dinculescu.html.md index 703fd1a..1c291e8 100644 --- a/documents/podcasts/42-web-components-with-rob-dodson-tushar-mathur-and-monica-dinculescu.html.md +++ b/documents/podcasts/42-web-components-with-rob-dodson-tushar-mathur-and-monica-dinculescu.html.md @@ -6,7 +6,6 @@ date: 2016-09-29 original_date: 2016-09-29 link: "http://audio.javascriptair.com/e/042-jsair-web-components-with-rob-dodson-tushar-mathur-and-monica-dinculescu/" category: podcasts -layout: single --- There's been quite a bit of talk about the Web Components spec lately. As with anything new, there's been a lot of fear, uncertainty, and doubt (FUD) about Web Components. We're going to chat about some of their use cases, strengths, and weaknesses to give us all a better idea of this tech. diff --git a/documents/podcasts/44-web-components-with-john-rogerson.html.md b/documents/podcasts/44-web-components-with-john-rogerson.html.md index d4f9044..e70c105 100644 --- a/documents/podcasts/44-web-components-with-john-rogerson.html.md +++ b/documents/podcasts/44-web-components-with-john-rogerson.html.md @@ -6,7 +6,6 @@ date: 2015-05-21 original_date: 2015-05-21 link: "http://ctrlclickcast.com/episodes/web-components" category: podcasts -layout: single --- Front-end expert John Rogerson offers some practical use cases and draws analogies to web dev approaches we are all already familiar with. John further discusses the pros of web components (modularity, extensibility), the cons (new technology, undefined standards, accessibility) and how they may reflect the future of web development. diff --git a/documents/podcasts/5-polymer-summit.html.md b/documents/podcasts/5-polymer-summit.html.md index 11c0ecf..02ef29e 100644 --- a/documents/podcasts/5-polymer-summit.html.md +++ b/documents/podcasts/5-polymer-summit.html.md @@ -6,7 +6,6 @@ date: 2015-10-05 original_date: 2015-10-05 link: "http://www.stitcher.com/podcast/polymer-podcast/e/40733300" category: podcasts -layout: single --- Now that the Polymer Summit is over but not forgotten, we review our favorite moments from the conference. diff --git a/documents/podcasts/6-component-show.html.md b/documents/podcasts/6-component-show.html.md index 9947aa7..40593cf 100644 --- a/documents/podcasts/6-component-show.html.md +++ b/documents/podcasts/6-component-show.html.md @@ -6,7 +6,6 @@ date: 2015-11-12 original_date: 2015-11-12 link: "http://www.stitcher.com/podcast/polymer-podcast/e/41246109" category: podcasts -layout: single --- Components, components, components! We join Charles Grugan and discuss our favorite components and their uses. diff --git a/documents/podcasts/65-strand-web-components.html.md b/documents/podcasts/65-strand-web-components.html.md index 2aae613..36e1471 100644 --- a/documents/podcasts/65-strand-web-components.html.md +++ b/documents/podcasts/65-strand-web-components.html.md @@ -6,7 +6,6 @@ date: 2015-10-13 original_date: 2015-10-13 link: "http://thewebplatformpodcast.com/65-strand-web-components" category: podcasts -layout: single --- MediaMath has created an open source project built on top of Web Components & Polymer called Strand. It was created for their internal web product Terminal One but is available and easy to get on Github. Daniel Lasky, Justin Moore, & Anthony Koerber chat with us about the pains of migrating from Polymer 0.5 to 1.0 as well as what it has been like to drive an open source Web Components library with Polymer Elements ranging from basic buttons to complex grids. Check out Strand’s documentation for further detail diff --git a/documents/podcasts/66-custom-elements-and-skatejs.html.md b/documents/podcasts/66-custom-elements-and-skatejs.html.md index eedbb71..41b247f 100644 --- a/documents/podcasts/66-custom-elements-and-skatejs.html.md +++ b/documents/podcasts/66-custom-elements-and-skatejs.html.md @@ -6,7 +6,6 @@ date: 2015-10-20 original_date: 2015-10-19 link: "http://thewebplatformpodcast.com/66-custom-elements-skatejs" category: podcasts -layout: single --- Atlassian leaders Trey Shugart and Jonathon Creenaune chat with us about how and why they created Skate.js. Skate is a lightweight Web Components wrapper created to help the needs of a large and diverse technology stack while providing simplicity and almost no-barrier-to-entry. Only focusing on Custom Elements, Skate has made its code base easy for companies to buy into. diff --git a/documents/podcasts/7-chrome-dev-summit.html.md b/documents/podcasts/7-chrome-dev-summit.html.md index 7b9f8cc..37163bd 100644 --- a/documents/podcasts/7-chrome-dev-summit.html.md +++ b/documents/podcasts/7-chrome-dev-summit.html.md @@ -6,7 +6,6 @@ date: 2015-11-18 original_date: 2015-11-18 link: "http://www.stitcher.com/podcast/polymer-podcast/e/41349286" category: podcasts -layout: single --- Live from the Chrome Dev Summit, our special guests Taylor Savage and Jeff Posnick talk to us about service workers and the Polymer State of the Union. diff --git a/documents/podcasts/70-web-components-at-microsoft.html.md b/documents/podcasts/70-web-components-at-microsoft.html.md index 09f6aa2..559768f 100644 --- a/documents/podcasts/70-web-components-at-microsoft.html.md +++ b/documents/podcasts/70-web-components-at-microsoft.html.md @@ -6,7 +6,6 @@ date: 2015-11-24 original_date: 2015-11-24 link: "http://thewebplatformpodcast.com/70-web-components-at-microsoft" category: podcasts -layout: single --- Daniel Buchner, former Mozillian & Program Manager at Microsoft takes us through the plans for Web Components at Microsoft. Daniel is the creator of the Web Components free open source library, X-Tag which Microsoft is now officially supporting and using as of release 1.5. How are the teams at Microsoft using Web Components now and what is the plan for the future? diff --git a/documents/podcasts/71-vaadin-elements.html.md b/documents/podcasts/71-vaadin-elements.html.md index 263093c..1925e8b 100644 --- a/documents/podcasts/71-vaadin-elements.html.md +++ b/documents/podcasts/71-vaadin-elements.html.md @@ -6,7 +6,6 @@ date: 2015-12-07 original_date: 2015-12-07 link: "http://thewebplatformpodcast.com/71-vaadin-elements" category: podcasts -layout: single --- Danny Blue and Justin Ribeiro chat with Manolo Carrasco and Moñino Jouni Koivuviita from Vaadin about their work with Web Components in the enterprise world. Vaadin has begun to create enterprise ready web components ‘ready for production’ usage. Built on top of Polymer, Vaadin Elements are helping to push new web technologies to larger companies. diff --git a/documents/podcasts/79-basic-web-components-and-best-practices.html.md b/documents/podcasts/79-basic-web-components-and-best-practices.html.md index 004f498..2f2e24b 100644 --- a/documents/podcasts/79-basic-web-components-and-best-practices.html.md +++ b/documents/podcasts/79-basic-web-components-and-best-practices.html.md @@ -6,7 +6,6 @@ date: 2016-03-09 original_date: 2016-03-09 link: "http://thewebplatformpodcast.com/79-basic-web-components-and-best-practices" category: podcasts -layout: single --- There is more than one set of custom elements out there. In this episode, we speak with Jan Miksovsky about basic web components, a comprehensive set of high-quality web components for common user interface patterns. diff --git a/documents/podcasts/82-are-web-components-ready-now.html.md b/documents/podcasts/82-are-web-components-ready-now.html.md index ef326b9..4471815 100644 --- a/documents/podcasts/82-are-web-components-ready-now.html.md +++ b/documents/podcasts/82-are-web-components-ready-now.html.md @@ -6,7 +6,6 @@ date: 2016-05-02 original_date: 2016-03-29 link: "http://thewebplatformpodcast.com/82-are-web-components-ready-now" category: podcasts -layout: single --- This episode is a follow up on episode 59 'Are Web Components Ready Yet?'. Leon, Justin & Erik chat about where we are in Web Component development today and what's happened over the past 6 months. diff --git a/documents/podcasts/97-predix-ui-and-polymer.html.md b/documents/podcasts/97-predix-ui-and-polymer.html.md index b607aa0..e56d80b 100644 --- a/documents/podcasts/97-predix-ui-and-polymer.html.md +++ b/documents/podcasts/97-predix-ui-and-polymer.html.md @@ -6,7 +6,6 @@ date: 2016-07-12 original_date: 2016-07-12 link: "http://thewebplatformpodcast.com/97-predix-ui-polymer" category: podcasts -layout: single --- Eric Knudtson from GE Digital walks us through their Predix UI Web Components library built on top of Google’s Polymer Project. diff --git a/documents/podcasts/98-server-side-web-components.html.md b/documents/podcasts/98-server-side-web-components.html.md index 450bf86..c9ca0cb 100644 --- a/documents/podcasts/98-server-side-web-components.html.md +++ b/documents/podcasts/98-server-side-web-components.html.md @@ -6,7 +6,6 @@ date: 2016-07-19 original_date: 2016-07-19 link: "http://thewebplatformpodcast.com/98-server-side-web-components-0" category: podcasts -layout: single --- Software developer at Softwire, Tim Perry, has created a set of “Server Components”. These are simple, lightweight tools for “composable HTML rendering in Node.js, broadly following the Web Components browser specification, but on the server side”. diff --git a/documents/podcasts/99-polymer-native.html.md b/documents/podcasts/99-polymer-native.html.md index 36c8604..a4a3d22 100644 --- a/documents/podcasts/99-polymer-native.html.md +++ b/documents/podcasts/99-polymer-native.html.md @@ -6,7 +6,6 @@ date: 2016-07-28 original_date: 2016-07-28 link: "http://thewebplatformpodcast.com/99-polymer-native" category: podcasts -layout: single --- Denis Radin, Web Component advocate, has started work on a project called Polymer Native to enable developers to create part-hybrid, part-native applications using Web Components. diff --git a/documents/podcasts/S04E02-polymer-and-webcomponents-vs-frameworks.md b/documents/podcasts/S04E02-polymer-and-webcomponents-vs-frameworks.md new file mode 100644 index 0000000..3002cea --- /dev/null +++ b/documents/podcasts/S04E02-polymer-and-webcomponents-vs-frameworks.md @@ -0,0 +1,11 @@ +--- +title: "121 The WebComponents.org Relaunch" +authors: [ben_lesh, fred_schott, monica_dinculescu] +podcast: "The Modern Web Podcast" +date: 2016-12-22 +original_date: 2016-12-22 +link: "S04E02 - Polymer and Web Components vs Frameworks (Jerry Springer Edition)" +category: podcasts +--- + +In this episode of the Modern Web podcast - Ben Lesh stars as the Jerry Springer of JavaScript stirs things up with the Polymer team Monica Dinculescu and Fred Schott with hard questions about louder voices representing Polymer on twitter and the reasoning behind perceived abrasiveness. \ No newline at end of file diff --git a/documents/podcasts/are-web-components-ready-yet.html.md b/documents/podcasts/are-web-components-ready-yet.html.md index 35befd0..07e647c 100644 --- a/documents/podcasts/are-web-components-ready-yet.html.md +++ b/documents/podcasts/are-web-components-ready-yet.html.md @@ -6,7 +6,6 @@ date: 2015-07-28 original_date: 2015-07-28 link: http://thewebplatform.libsyn.com/54-are-web-components-ready-yet category: podcasts -layout: single --- An honest & candid talk about what we learned since the beginning of Web Components; a hard look at the good, the bad, and the ugly. Christian Heilmann (@codepo8), Wilson Page (@wilsonpage), & Rob Eisenberg (@eisenbergeffect) talks with the panel on development with Web Components in today's production environments. diff --git a/documents/podcasts/customizing-the-web-with-rob-dodson-on-the-web-ahead.html.md b/documents/podcasts/customizing-the-web-with-rob-dodson-on-the-web-ahead.html.md index 14a96ba..36f8f80 100644 --- a/documents/podcasts/customizing-the-web-with-rob-dodson-on-the-web-ahead.html.md +++ b/documents/podcasts/customizing-the-web-with-rob-dodson-on-the-web-ahead.html.md @@ -6,7 +6,6 @@ date: 2014-10-08 original_date: 2014-10-08 link: "http://5by5.tv/webahead/86" category: podcasts -layout: single --- Web Components are all the rage these days — a way to create the web using chunks of code that are reusable across projects. Polymer, a library on top of web components, is using Web Components today. Rob Dodson joins Jen Simmons in explaining the current landscape. diff --git a/documents/podcasts/google-polymer-with-rob-dodson-and-eric-bidelman-on-javascript-jabber.html.md b/documents/podcasts/google-polymer-with-rob-dodson-and-eric-bidelman-on-javascript-jabber.html.md index e0c1789..f5fe1e8 100644 --- a/documents/podcasts/google-polymer-with-rob-dodson-and-eric-bidelman-on-javascript-jabber.html.md +++ b/documents/podcasts/google-polymer-with-rob-dodson-and-eric-bidelman-on-javascript-jabber.html.md @@ -6,7 +6,6 @@ date: 2014-08-06 original_date: 2014-08-06 link: "http://devchat.tv/js-jabber/120-jsj-google-polymer-with-rob-dodson-and-eric-bidelman" category: podcasts -layout: single --- The JavaScript Jabber Panel discusses the Polymer Project with guests Rob Dodson & Eric Bidelman who work on the project at Google. They discuss the components, frameworks, & libraries available to developers as well the strengths and weaknesses of web components. diff --git a/documents/podcasts/hax-floss-weekly.md b/documents/podcasts/hax-floss-weekly.md new file mode 100644 index 0000000..8aa30fd --- /dev/null +++ b/documents/podcasts/hax-floss-weekly.md @@ -0,0 +1,11 @@ +--- +title: "HAX - FLOSS Weekly 495" +authors: [btopro] +podcast: "FLOSS Weekly" +date: 2018-11-06 +original_date: 2018-08-29 +link: "https://twit.tv/shows/floss-weekly/episodes/495" +category: podcasts +--- + +Bryan Ollendyke is the lead of the HAX the web, web component authoring system as well as lead of the ELMS: Learning Network project. He's been a 100% effort FOSS developer for over 10 years at Penn State, meaning every line he's written the last 10 years has been an open contribution! diff --git a/documents/podcasts/marcy-sutton-on-shop-talk-show.html.md b/documents/podcasts/marcy-sutton-on-shop-talk-show.html.md index 78b3623..a828038 100644 --- a/documents/podcasts/marcy-sutton-on-shop-talk-show.html.md +++ b/documents/podcasts/marcy-sutton-on-shop-talk-show.html.md @@ -6,7 +6,6 @@ date: 2014-11-10 original_date: 2014-11-10 link: "http://shoptalkshow.com/episodes/141-marcy-sutton/" category: podcasts -layout: single --- Shop Talk Show is joined by Marcy Sutton. Marcy is an web accessibility expert & interactive developer at Substantial in Seattle. Chris & Dave take a deep dive into web components, accessibility, Angular JS, AJAX, ARIA, and more! diff --git a/documents/podcasts/mozilla-brick-uikit-for-the-web-on-the-web-platform-podcast.html.md b/documents/podcasts/mozilla-brick-uikit-for-the-web-on-the-web-platform-podcast.html.md index 72e183a..169ef3f 100644 --- a/documents/podcasts/mozilla-brick-uikit-for-the-web-on-the-web-platform-podcast.html.md +++ b/documents/podcasts/mozilla-brick-uikit-for-the-web-on-the-web-platform-podcast.html.md @@ -6,7 +6,6 @@ date: 2014-11-30 original_date: 2014-11-30 link: "http://thewebplatform.libsyn.com/mozilla-brick-a-uikit-for-mobile-first" category: podcasts -layout: single --- Mozilla Brick contributors Matt Claypotch and Soledad Penades join The Web Platform Podcast to talk about building UI focused Web Components for 'Mobile First' Web Development. diff --git a/documents/podcasts/one-part-beer-three-parts-web-components.html.md b/documents/podcasts/one-part-beer-three-parts-web-components.html.md new file mode 100644 index 0000000..83d2ff6 --- /dev/null +++ b/documents/podcasts/one-part-beer-three-parts-web-components.html.md @@ -0,0 +1,11 @@ +--- +title: "One part beer, three parts web components. Add lemon to taste" +authors: [trey_shugart, jem_young, ryan_anklam, brian_holt, stacy_london] +podcast: "Front End Happy Hour" +date: 2017-05-07 +original_date: 2017-05-07 +link: "http://frontendhappyhour.com/episodes/one-part-beer-three-parts-web-components-add-lemon-to-taste/" +category: podcasts +--- + +In this episode, we are joined by Trey Shugart who is a front-end developer (Principal Developer) at Atlassian, proponent of web components, and author of SkateJS to talk about Web Components. diff --git a/documents/podcasts/polymer-10.html.md b/documents/podcasts/polymer-10.html.md index 406039a..2c62fd6 100644 --- a/documents/podcasts/polymer-10.html.md +++ b/documents/podcasts/polymer-10.html.md @@ -6,7 +6,6 @@ date: 2015-06-02 original_date: 2015-06-02 link: "http://thewebplatform.libsyn.com/46-polymer-10" category: podcasts -layout: single --- Polymer 1.0 is here! Lean mean and production ready. On episode 46 The Web Platform Podcast talks to a Proverbial Packed Panel of Professional Polymer People. Polymer has grown a ton since its developer preview and has been streamlined for performance. It's a a big show with a panel of both GDE’s and members of the Polymer team to get a better idea of just how this project has grown and why Polymer and web components as a whole are important for the modern and future web platform. diff --git a/documents/podcasts/react-and-reactive-elements.html.md b/documents/podcasts/react-and-reactive-elements.html.md index 2a12343..82aee70 100644 --- a/documents/podcasts/react-and-reactive-elements.html.md +++ b/documents/podcasts/react-and-reactive-elements.html.md @@ -6,7 +6,6 @@ date: 2015-03-16 original_date: 2015-03-16 link: "http://thewebplatform.libsyn.com/35-react-reactive-elements" category: podcasts -layout: single --- Andrew Rota & Denis Radin talk about the ways you can leverage both Web Components & React.js together in a symbiotic fashion. Denis, creator of Reactive Elements, starts us off explaining how his library came to be and why he chose to marry these two technologies in his work. Andrew, who spoke at ReactConf 2015 talks about his experiences with Web Components & React as well. diff --git a/documents/podcasts/rob-dodson-on-shop-talk-show.html.md b/documents/podcasts/rob-dodson-on-shop-talk-show.html.md index 25e2a8f..85756c1 100644 --- a/documents/podcasts/rob-dodson-on-shop-talk-show.html.md +++ b/documents/podcasts/rob-dodson-on-shop-talk-show.html.md @@ -6,7 +6,6 @@ date: 2014-08-12 original_date: 2014-08-12 link: "http://shoptalkshow.com/episodes/124-rob-dodson/" category: podcasts -layout: single --- Shop Talk Show is joined by Rob Dodson. Rob works on Polymer at Google. Chris & Dave take a deep dive with him into Polymer and Web Components. diff --git a/documents/podcasts/the-bosonic-project-on-the-web-platform-podcast.html.md b/documents/podcasts/the-bosonic-project-on-the-web-platform-podcast.html.md index a46509b..2f67947 100644 --- a/documents/podcasts/the-bosonic-project-on-the-web-platform-podcast.html.md +++ b/documents/podcasts/the-bosonic-project-on-the-web-platform-podcast.html.md @@ -6,7 +6,6 @@ date: 2014-09-15 original_date: 2014-09-15 link: http://thewebplatform.libsyn.com/the-bosonic-project category: podcasts -layout: single --- Raphael Rougeron joins The Web Platform Podscast from Toulouse, France to talk about The Bosonic Project. Raphael and his team of developers mostly focus their development efforts working in the Financial Industry, building out secure and robust applications as well as intricate cross browser UI Components. diff --git a/documents/podcasts/the-return-of-bosonic.html.md b/documents/podcasts/the-return-of-bosonic.html.md index 0d45165..86ab804 100644 --- a/documents/podcasts/the-return-of-bosonic.html.md +++ b/documents/podcasts/the-return-of-bosonic.html.md @@ -6,7 +6,6 @@ date: 2015-09-18 original_date: 2015-09-18 link: http://thewebplatform.libsyn.com/61-the-return-of-bosonic category: podcasts -layout: single --- Raphaël Rougeron, one of the Web Components pioneers, along with his team created the Bosonic Project some while back. It was a very different approach to working with Web Components than x-tag and Polymer and it involved a required build step to create Web Components as close to specs as possible with minimal abstractions at runtime. diff --git a/documents/podcasts/the-web-components-community-on-the-web-platform-podcast.html.md b/documents/podcasts/the-web-components-community-on-the-web-platform-podcast.html.md index 32f522b..e848736 100644 --- a/documents/podcasts/the-web-components-community-on-the-web-platform-podcast.html.md +++ b/documents/podcasts/the-web-components-community-on-the-web-platform-podcast.html.md @@ -6,7 +6,6 @@ date: 2014-08-04 original_date: 2014-08-04 link: "http://thewebplatform.libsyn.com/the-web-components-community-helpful-resources" category: podcasts -layout: single --- Web Components are a set of emerging and rapidly changing technologies that are altering the way many developers are starting to build web applications. Zeno Rocha, a dominant force in the front end development community, talks with The Web Platform Podcast on how developers can get started building with these technologies today & how to build their very own components. diff --git a/documents/podcasts/the-x-tag-project-on-the-web-platform-podcast.html.md b/documents/podcasts/the-x-tag-project-on-the-web-platform-podcast.html.md index 3419cd5..942dfe8 100644 --- a/documents/podcasts/the-x-tag-project-on-the-web-platform-podcast.html.md +++ b/documents/podcasts/the-x-tag-project-on-the-web-platform-podcast.html.md @@ -6,7 +6,6 @@ date: 2014-12-12 original_date: 2014-12-12 link: "http://thewebplatform.libsyn.com/21-the-x-tag-project" category: podcasts -layout: single --- Daniel Buchner talks with The Web Platform Podcast on x-tag, the Custom Elements library competitor to Polymer, that he created alongside former Mozillian & Kraken Developer, Arron Schaar. diff --git a/documents/podcasts/understanding-web-components-and-polymer.html.md b/documents/podcasts/understanding-web-components-and-polymer.html.md index 155c1d2..05bbacd 100644 --- a/documents/podcasts/understanding-web-components-and-polymer.html.md +++ b/documents/podcasts/understanding-web-components-and-polymer.html.md @@ -6,7 +6,6 @@ date: 2015-10-30 original_date: 2015-10-30 link: "http://hanselminutes.com/499/understanding-web-components-and-polymer-with-monica-dinculescu" category: podcasts -layout: single --- Monica Dinculescu works on Polymer and Chrome for Google. In this episode she teaches Scott all about Web Components and the Polymer Project. Are Web Components the future of the web, and why? Where does Polymer fit in, and what should YOU use if you are starting a project today? diff --git a/documents/podcasts/web-accessibility-for-javascript-components-and-custom-elements-on-the-web-platform-podcast.html.md b/documents/podcasts/web-accessibility-for-javascript-components-and-custom-elements-on-the-web-platform-podcast.html.md index 831d01a..a54f67a 100644 --- a/documents/podcasts/web-accessibility-for-javascript-components-and-custom-elements-on-the-web-platform-podcast.html.md +++ b/documents/podcasts/web-accessibility-for-javascript-components-and-custom-elements-on-the-web-platform-podcast.html.md @@ -6,7 +6,6 @@ date: 2014-09-03 original_date: 2014-09-03 link: "http://thewebplatform.libsyn.com/web-accessibility-for-javascript-components-and-custom-elements" category: podcasts -layout: single --- Steve Faulkner and Marcy Sutton discuss the lack of focus in development today with regards to building accessible applications & services. Many times web accessibility becomes an afterthought in creating a software product, having low prioritization from the business side until it is a real painful problem. diff --git a/documents/podcasts/web-accessibility-in-polymer.html.md b/documents/podcasts/web-accessibility-in-polymer.html.md index 34cb9ec..5a0dba9 100644 --- a/documents/podcasts/web-accessibility-in-polymer.html.md +++ b/documents/podcasts/web-accessibility-in-polymer.html.md @@ -6,7 +6,6 @@ date: 2015-06-18 original_date: 2015-06-18 link: "http://thewebplatform.libsyn.com/48-web-accessibility-in-polymer" category: podcasts -layout: single --- The Web Platform Podcast talks with Chrome team member & Accessibility champion Alice Boxhall and Polymer members, Chris Joel & Daniel Freedman about the Polymer 1.0 and what is new as far as web accessibility of this release as well as what we should expect looking forward. diff --git a/documents/podcasts/web-components-and-wtf-is-shadow-dom.html.md b/documents/podcasts/web-components-and-wtf-is-shadow-dom.html.md new file mode 100644 index 0000000..054fd28 --- /dev/null +++ b/documents/podcasts/web-components-and-wtf-is-shadow-dom.html.md @@ -0,0 +1,11 @@ +--- +title: "Web Components and WTF is Shadow DOM?" +authors: [mikeal_rogers, alex_sexton, rachel_white] +podcast: "JS Party" +date: 2017-04-11 +original_date: 2017-04-11 +link: "https://changelog.com/jsparty/6" +category: podcasts +--- + +Mikeal Rogers, Alex Sexton, and Rachel White discuss Web Components and questions like — "WTF is Shadow DOM?" and "Are custom elements ready?" We also discuss the JavaScript conference scene as well as attending, speaking and organizing conferences. Plus, the project of the week — p5.js. \ No newline at end of file diff --git a/documents/podcasts/web-components-interop-and-polymer-on-the-web-platform-podcast.html.md b/documents/podcasts/web-components-interop-and-polymer-on-the-web-platform-podcast.html.md index d81042a..c30829f 100644 --- a/documents/podcasts/web-components-interop-and-polymer-on-the-web-platform-podcast.html.md +++ b/documents/podcasts/web-components-interop-and-polymer-on-the-web-platform-podcast.html.md @@ -6,7 +6,6 @@ date: 2014-10-17 original_date: 2014-10-17 link: "http://thewebplatform.libsyn.com/web-components-interop-and-polymer" category: podcasts -layout: single --- Rob Dodson, Google Engineer, goes through many of the recent changes made to Polymer, including accessibility and performance enhancements that help in making applications more integrated. diff --git a/documents/podcasts/web-components-with-cory-house-on-dotnet-rocks.html.md b/documents/podcasts/web-components-with-cory-house-on-dotnet-rocks.html.md index a199fd8..090b3a8 100644 --- a/documents/podcasts/web-components-with-cory-house-on-dotnet-rocks.html.md +++ b/documents/podcasts/web-components-with-cory-house-on-dotnet-rocks.html.md @@ -6,7 +6,6 @@ date: 2015-02-04 original_date: 2015-02-04 link: "http://www.dotnetrocks.com/default.aspx?showNum=1096" category: podcasts -layout: single --- Carl and Richard talk to Cory House about the web component specification and what that will look like in your modern web development. As Cory explains, the key idea behind web components is to provide a framework for Javascript library extensibility that doesn't force you to own the library yourself. diff --git a/documents/podcasts/web-components-with-peter-gasston-on-the-web-ahead.html.md b/documents/podcasts/web-components-with-peter-gasston-on-the-web-ahead.html.md index 461833b..c042a16 100644 --- a/documents/podcasts/web-components-with-peter-gasston-on-the-web-ahead.html.md +++ b/documents/podcasts/web-components-with-peter-gasston-on-the-web-ahead.html.md @@ -6,7 +6,6 @@ date: 2014-04-09 original_date: 2014-04-09 link: "http://5by5.tv/webahead/66" category: podcasts -layout: single --- Web Components seem to be taking the JavaScript community by storm. The parts of this technology give developers a chance to define their own HTML elements, adjust the defaults, and share with others. Learn about it all from Peter Gasston as he joins Jen Simmons to explain. diff --git a/documents/podcasts/x-tag-the-x-generation-on-the-web-platform-podcast.html.md b/documents/podcasts/x-tag-the-x-generation-on-the-web-platform-podcast.html.md index b12d95e..66a0710 100644 --- a/documents/podcasts/x-tag-the-x-generation-on-the-web-platform-podcast.html.md +++ b/documents/podcasts/x-tag-the-x-generation-on-the-web-platform-podcast.html.md @@ -6,7 +6,6 @@ date: 2015-06-09 original_date: 2015-06-09 link: "http://thewebplatform.libsyn.com/47-x-tag-the-x-generation" category: podcasts -layout: single --- Daniel Buchner talks about the X-Tag project and some if its interesting features. The Web Platform Podcast discusses the Web Component specs and much more. Big companies like Google have thrown their full support behind the Web Components technology umbrella. Will others such as Microsoft follow suit? And what will it take for browser vendors to implement web components natively? diff --git a/gen.js b/gen.js index edb8958..bccda0f 100644 --- a/gen.js +++ b/gen.js @@ -1,15 +1,20 @@ +/** + * This script runs before deployment to generate necessary metadata for the + * running server. It parses docpad documents in the `documents/` directory and + * outputs a `content-gen.js` file. The generated file contains extracted + * metadata from all these documents. At runtime, the server loads the + * generated metadata to fulfill API requests. + */ + 'use strict'; let fs = require('fs'); -let docpad = require('docpad'); +const DocPad = require('docpad'); +const docpadInstance = new DocPad(); let authors = require('./authors.js'); let metadata = []; -docpad.createInstance({}, function(err, docpadInstance) { - if (err) - return console.error(err.stack); - docpadInstance.parseDocumentDirectory({path: 'documents'}, processFiles); -}); +docpadInstance.parseDocumentDirectory({path: 'documents'}, processFiles); /** * Process all the files that have been read. @@ -29,7 +34,7 @@ function processFiles(err, files) { let expandedAuthors = []; if (attributes.authors) { - for (var id of attributes.authors) { + for (let id of attributes.authors) { let author = authors[id]; if (!author) continue; diff --git a/mock-gen.js b/mock-gen.js index fad5c87..2e55ee2 100644 --- a/mock-gen.js +++ b/mock-gen.js @@ -2,7 +2,7 @@ module.exports = [ { 'title': 'test-article', 'authors': [ - { id: 'an_author' }, + {id: 'an_author'}, ], 'category': 'articles', 'relativePath': 'articles/test-article', @@ -10,8 +10,8 @@ module.exports = [ { 'title': 'excerpt-article', 'authors': [ - { id: 'first_author' }, - { id: 'second_author' }, + {id: 'first_author'}, + {id: 'second_author'}, ], 'category': 'articles', 'relativePath': 'articles/has-excerpt', @@ -19,7 +19,7 @@ module.exports = [ { 'title': 'valid-author', 'authors': [ - { id: 'aaron_frost' }, + {id: 'aaron_frost'}, ], 'category': 'articles', 'relativePath': 'articles/valid-author', diff --git a/package.json b/package.json index 3d3437d..244a131 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.0.1", "private": true, "engines": { - "node": "~4.2" + "node": "8.x" }, "scripts": { "start": "node app.js", diff --git a/static/about.md b/static/about.md index 0a634d9..77000d3 100644 --- a/static/about.md +++ b/static/about.md @@ -1,3 +1,11 @@ -WebComponents.org aims to make it easy to share and discover reusable web UI components. As well as a place to publish, browse and search for components, WebComponents.org provides articles, presentations, podcasts, tools and more to help web professionals build first-class DOM objects in the browsers. All the content on this site is totally free, and contributions are welcome. +WebComponents.org aims to make it easy to share, discover, and reuse web components. Web components is a standard created to empower developers to create new HTML tags such that `` would be valid and able to be utilized across all browsers. It creates a framework agnostic way of composing and repurposing code. -This site will be a long-term project committed to making the web better by sharing peer-reviewed custom elements that are usable across all browsers, and interoperable with existing libraries. The Web Component APIs are the result of broad collaboration between browser vendors. This site is intended to be a place for broad developer collaboration across libraries and frameworks to make the most of these powerful new APIs. \ No newline at end of file +As well as a place to publish, browse and search for components, WebComponents.org provides articles, presentations, podcasts, tools and more to help web professionals build first-class DOM objects in the browsers. All the content on this site is totally free, and contributions are welcome. + +This site will be a long-term project committed to making the web better by sharing peer-reviewed custom elements that are usable across all browsers, and interoperable with existing libraries. The Web Component APIs are the result of broad collaboration between browser vendors. This site is intended to be a place for broad developer collaboration across libraries and frameworks to make the most of these powerful new APIs. + +## Community engagement +As web components are not a product but a standard, the community is vast but fragmented. While not the only places, the web components community is active on the following platforms: +- The [webcomponents.org gitter](https://gitter.im/webcomponents/community) +- Twitter via the [#webcomponents](https://twitter.com/search?src=typd&q=%23webcomponents) and [#usetheplatform](https://twitter.com/search?src=typd&q=%23usetheplatform) hash tags +- [Polymer's Slack channel](http://polymer.slack.com) diff --git a/static/introduction.md b/static/introduction.md index e91809b..7f6ff21 100644 --- a/static/introduction.md +++ b/static/introduction.md @@ -7,13 +7,13 @@ Web components are based on existing web standards. Features to support web comp Web components are based on four main specifications: ## Custom Elements -The [Custom Elements specification](https://w3c.github.io/webcomponents/spec/custom/) lays the foundation for designing and using new types of DOM elements. +The [Custom Elements specification](https://wicg.github.io/webcomponents/spec/custom/) lays the foundation for designing and using new types of DOM elements. ## Shadow DOM -The [shadow DOM specification](https://w3c.github.io/webcomponents/spec/shadow/) defines how to use encapsulated style and markup in web components. +The [shadow DOM specification](https://wicg.github.io/webcomponents/spec/shadow/) defines how to use encapsulated style and markup in web components. -## HTML imports -The [HTML imports specification](https://w3c.github.io/webcomponents/spec/imports/) defines the inclusion and reuse of HTML documents in other HTML documents. +## ES Modules +The [ES Modules specification](https://html.spec.whatwg.org/multipage/webappapis.html#integration-with-the-javascript-module-system) defines the inclusion and reuse of JS documents in a standards based, modular, performant way. ## HTML Template The [HTML template element specification](https://html.spec.whatwg.org/multipage/scripting.html#the-template-element/) defines how to declare fragments of markup that go unused at page load, but can be instantiated later on at runtime. @@ -21,24 +21,24 @@ The [HTML template element specification](https://html.spec.whatwg.org/multipage # How do I use a web component? The components on this site provide new HTML elements that you can use in your web pages and web applications. -Using a custom element is as simple as importing it, and using the new tags in an HTML document. For example, to use the [Emoji Rain element](https://beta.webcomponents.org/element/notwaldorf/emoji-rain): +Using a custom element is as simple as importing it, and using the new tags in an HTML document. For example, to use the [paper-button element](https://www.webcomponents.org/element/@polymer/paper-button): ```html - + ... - +raised ``` -There are a number of ways to install custom elements. When you find an element you want to use, look at its README for the commands to install it. Most elements today can be installed with Bower. Bower also handles installing the components' dependencies. For more information on Bower, see [Bower.io](https://bower.io/). +There are a number of ways to install custom elements. When you find an element you want to use, look at its README for the commands to install it. Most elements today can be installed with NPM. NPM also handles installing the components' dependencies. For more information on NPM, see [npmjs.com](https://www.npmjs.com/). -For example, the [Emoji Rain README](https://beta.webcomponents.org/element/notwaldorf/emoji-rain) describes the install process with Bower: +For example, the [paper-button overview](https://www.webcomponents.org/element/@polymer/paper-button) describes the install process with npm: ``` -mkdir emoji-rain-demo && cd emoji-rain-demo -bower install emoji-rain +mkdir my-new-app && cd my-new-app +npm install --save @polymer/paper-button ``` # How do I define a new HTML element? -This section describes the syntax for the new cross-browser version (v1) of the Web Components specification. +This section describes the syntax for the cross-browser version of the Web Components specification. Use JavaScript to define a new HTML element and its tag with the customElements global. Call customElements.define() with the tag name you want to create and a JavaScript class that extends the base HTMLElement. @@ -47,12 +47,6 @@ For example, to define a mobile drawer panel, ``: class AppDrawer extends HTMLElement {...} window.customElements.define('app-drawer', AppDrawer); ``` -v0 of the Custom Elements specification used document.registerElement() for this purpose: -```js -var XFoo = document.registerElement('x-foo'); -document.body.appendChild(new XFoo()); -``` -See this article on the [v0 Custom Elements specification](https://www.html5rocks.com/en/tutorials/webcomponents/customelements/) for more information. To use the new tag: ```html @@ -63,11 +57,11 @@ Using a custom element is no different to using a `
` or any other element. ```html ``` @@ -83,16 +77,10 @@ shadowRoot.innerHTML = '

Hello Shadow DOM

'; // Could also use appendChil // header.shadowRoot === shadowRoot // shadowRoot.host === header ``` - -Version 0 of the shadow DOM specification provided a slightly different method for creating shadow DOM: -```js -var root = host.createShadowRoot(); -``` -See this article on [shadow DOM v0](https://www.html5rocks.com/en/tutorials/webcomponents/shadowdom/) for more information. See also [Hayato Ito's comparison of v0 and v1 of the shadow DOM specification](http://hayato.io/2016/shadowdomv1/). - # Libraries for building web components -Many libraries already exist that make it easier to build web components. To dive in and create your own components, here are some you can try out: - * [Bosonic](https://bosonic.github.io/) is a collection of components designed to meet the everyday needs of web developers. +Many libraries already exist that make it easier to build web components. [The libraries section](https://www.webcomponents.org/libraries) of the site has additional details but here are some you can try out: + * [Hybrids](https://github.com/hybridsjs/hybrids) is a UI library for creating Web Components with simple and functional API. + * [lit-element](https://github.com/lit/lit/tree/main/packages/lit-element) uses [lit-html](https://github.com/lit/lit/tree/main/packages/lit-html) to render into the element's Shadow DOM and adds API to help manage element properties and attributes. * [Polymer](https://www.polymer-project.org) provides a set of features for creating custom elements. - * [SkateJS](https://github.com/skatejs/skatejs) is a JavaScript library for writing web components with a small footprint. - * [X-Tag](https://x-tag.github.io/) is an open source JavaScript library that provides an interface for component development. \ No newline at end of file + * [Slim.js](http://slimjs.com) is an opensource lightweight web component library that provides data-binding and extended capabilities for components, using es6 native class inheritance. + * [Stencil](https://stenciljs.com/) is an opensource compiler that generates standards-compliant web components. diff --git a/static/libraries.md b/static/libraries.md index e2e3ee2..6f7fe21 100644 --- a/static/libraries.md +++ b/static/libraries.md @@ -9,13 +9,22 @@ However, if you’re writing lots and lots of custom elements, using a library c # What should you look for in a web component library? -When choosing a web component library, make sure it has a large enough featureset to cover all of your use cases. Interoperability is also important - does the library leak implementation details? A good web component library should produce a web component that “just works” like any other HTML element. You should also be aware of browser compatibility, and any polyfills that will be needed to support features you use or the library uses. Good libraries also have a high value-to-payload ratio - that is, they provide a lot of value for their download size. +When choosing a web component library, make sure it has a large enough featureset to cover all of your use cases. Interoperability is also important - does the library leak implementation details? A good web component library should produce a web component that “just works” like any other HTML element. Good libraries also have a high value-to-payload ratio - that is, they provide a lot of value for their download size. Libraries which support ES modules, Custom Element, Shadow DOM and Template are listed below. +# Some web component libraries -# Existing web component libraries +This list has been compiled by the community and can be modified [via pull request under the community repository](https://github.com/webcomponents/community/edit/master/static/libraries.md) for this website. Projects are listed alphabetically and are known to support all four aspects of the web components specification. - * [Polymer](https://www.polymer-project.org/) is a web component library built by Google, with a simple element creation API. Polymer offers one- and two-way data binding into element templates, and provides shims for better cross-browser performance. +* [FAST](https://fast.design) is a web component library built by Microsoft, which offers several packages to leverage depending on your project needs. [Fast Element](https://github.com/microsoft/fast/tree/master/packages/web-components/fast-element) is a lightweight means to easily build performant, memory-efficient, standards-compliant Web Components. [Fast Foundation](https://github.com/microsoft/fast/tree/master/packages/web-components/fast-foundation) is a library of Web Component classes, templates, and other utilities built on fast-element intended to be composed into registered Web Components. + + * [Hybrids](https://github.com/hybridsjs/hybrids) is a UI library for creating web components with simple and functional API. The library uses plain objects and pure functions for defining custom elements, which allow very flexible composition. It provides built-in cache mechanism, template engine based on tagged template literals, and integration with developer tools. - * [Skate.js](http://skate.js.org/) is a library built on top of the W3C web component specs that enables you to write functional and performant web components with a very small footprint. Skate is Inherently cross-framework compatible. For example, it works seamlessly with - and complements - React and other frameworks. + * [LitElement](https://github.com/Polymer/lit-element) uses [lit-html](https://github.com/Polymer/lit-html) to render into the element's Shadow DOM and adds API to help manage element properties and attributes. LitElement reacts to changes in properties and renders declaratively using lit-html. + + * [Polymer](https://www.polymer-project.org/) is a web component library built by Google, with a simple element creation API. Polymer offers one- and two-way data binding into element templates, and provides shims for better cross-browser performance. - * [X-Tag](http://x-tag.github.io/) is a Microsoft supported, open source, JavaScript library that wraps the W3C standard Web Components family of APIs to provide a compact, feature-rich interface for rapid component development. While X-Tag offers feature hooks for all Web Component APIs (Custom Elements, Shadow DOM, Templates, and HTML Imports), it only requires Custom Element support to operate. In the absence of native Custom Element support, X-Tag uses a set of polyfills shared with Google's Polymer framework. + * [Skate.js](https://skatejs.gitbooks.io/skatejs/content/) is a library built on top of the W3C web component specs that enables you to write functional and performant web components with a very small footprint. Skate is inherently cross-framework compatible. For example, it works seamlessly with - and complements - React and other frameworks. + + * [Slim.js](http://slimjs.com) Slim.js is a lightweight web component library that provides extended capabilities for components, such as data binding, using es6 native class inheritance. This library is focused for providing the developer the ability to write robust and native web components without the hassle of dependencies and an overhead of a framework. + + * [Stencil](https://stenciljs.com/) is an opensource compiler that generates standards-compliant web components. diff --git a/static/polyfills.md b/static/polyfills.md index cdae0b7..8a00760 100644 --- a/static/polyfills.md +++ b/static/polyfills.md @@ -6,32 +6,18 @@ The polyfills are available on GitHub: https://github.com/WebComponents/webcompo To install the polyfills, run this command: ``` -bower install --save webcomponents/webcomponentsjs +npm install @webcomponents/webcomponentsjs ``` +There are severeal different ways of applying the polyfill [which you can read about here](https://github.com/WebComponents/webcomponentsjs#how-to-use). The easiest way to utilize webcomponents across platform is the following: +```html + + -To feature detect: -```js -(function() { - if ('registerElement' in document - && 'import' in document.createElement('link') - && 'content' in document.createElement('template')) { - // platform is good! - } else { - // polyfill the platform! - var e = document.createElement('script'); - e.src = '/bower_components/webcomponentsjs/webcomponents-lite.min.js'; - document.body.appendChild(e); - } -})(); -``` - -# Shadow DOM polyfill -The shadow DOM polyfill provides shadow DOM v0 functionality in browsers that don't support it natively. See the Compatibility table for more information. - -The shadow DOM polyfill, though very powerful, is also fairly intrusive and can add significant performance overhead. For this reason, many Web Components-based libraries like Polymer work around having to use this polyfill, and provide a lighter-weight alternative. These libraries don’t require loading the full Web Components polyfill, but instead use a “lite” version of the polyfill with shadow DOM removed: + + -``` -webcomponents/webcomponents-lite.min.js + + ``` ## Wrappers @@ -79,7 +65,7 @@ If you plan to work with elements that need to be wrapped over and over, try pas ## Event Retargeting An important aspect of the shadow DOM is that events are retargeted to never expose the shadow DOM to the light DOM. For example: -``` +```js var div = document.createElement('div'); div.innerHTML = 'Click me'; var shadow = div.createShadowRoot(); @@ -98,7 +84,7 @@ To support this kind of behavior the event dispatching in the browser has to be * No live `NodeLists`. All node lists are snapshotted upon read. * `document`, window`, document.body`, document.head` and others are non configurable and cannot be overridden. We are trying to make these work as seamlessly as possible but there will doubtlessly be cases where there will be problems; for those cases you can use wrapand unwrap to get unblocked. * Cross window/frame access is not implemented. - * CSS `:host()` rules can only have (at most) one level of nested parentheses in their argument selectors. For example, `:host(.zot)` and `:host(.zot:not(.bar)` both work, but `:host(.zot:not(.bar:nth-child(2)))` does not. + * CSS `:host()` rules can only have (at most) one level of nested parentheses in their argument selectors. For example, `:host(.zot)` and `:host(.zot:not(.bar))` both work, but `:host(.zot:not(.bar:nth-child(2)))` does not. # Custom Elements polyfill The Custom Elements polyfill provides support for v0 of the Custom Elements spec. A polyfill for v1 is in progress at https://github.com/webcomponents/custom-elements. @@ -126,35 +112,3 @@ The Custom Elements specification is still under discussion. The polyfill implem * `attributeChangedCallback(attributeName)` is called when a custom element's attribute value has changed `createdCallback` is invoked synchronously with element instantiation, the other callbacks are called asynchronously. The asynchronous callbacks generally use the `MutationObserver` timing model, which means they are called before layouts, paints, or other triggered events, so the developer need not worry about flashing content or other bad things happening before the callback has a chance to react to changes. - -# HTML Imports Polyfill - -In imported documents, `href` and `src` attributes in HTML, and `urlproperties` in CSS files, are relative to the location of the imported document, not the main document. - -The HTML Imports polyfill begins processing link tags when the `DOMContentLoaded` event fires. To know when loading is complete, listen for the `HTMLImportsLoaded` event on document or window. For example: - -```html - -``` - -The polyfill loads linked stylesheets, external scripts, and nested HTML imports, but does not parse any data in the loaded resources. For parsing imports, combine HTML Imports with Custom Elements. As long as the HTML Imports is loaded first, the Custom Elements polyfill will detect it, and process all imports when `HTMLImportsLoaded` event fires. - -## The WebComponentsReady event - -Under native imports, ` -``` - -In native HTML Imports, `document.currentScript.ownerDocument` references the import document itself. In the polyfill, use `document._currentScript.ownerDocument` (note the underscore). diff --git a/static/resources.md b/static/resources.md index 758d7fe..5cdd8ea 100644 --- a/static/resources.md +++ b/static/resources.md @@ -4,30 +4,32 @@ The WebComponents.org Resources section is a place to showcase useful tools and Web Components is a set of specs that introduce powerful new capabilities to the web platform. Before getting started with your first custom element, it will be helpful to understand the scope of these new features. The [Introduction](/introduction) section contains an overview of these APIs. The [Community](/community) section is also a great way to catch up on the latest goings-on in the Web Components world. We’d also recommend starting out by reading the Getting Started sections of: * [Polymer's documentation;](https://www.polymer-project.org/) - * [SkateJS's documentation.](http://skate.js.org/) - * [X-Tag's documentation.](http://x-tag.github.io/docs) + * [Slim.js's documentation.](http://slim.js.org/) + * [Skate.js's documentation.](https://skatejs.netlify.com/) -These will give you an idea on how these libraries for building web components work and what might be best for you. +These will give you an idea on how these libraries for building web components work and what might be best for you. Another incredible resource is the [web-components-todo repo](https://github.com/shprink/web-components-todo) which has the same to-do list app created in an ever growing list of web component and component compatible library methodologies. It's a great way to learn from the differences in techniques across libraries and see which one is right for your needs. # 2. Create Once you’ve learned about Web Components, it's time to create your own element! There are a number of different jumping-off points for getting started using a Web Component library, or just using the vanilla Web Component APIs directly: * [Polymer Boilerplate](https://github.com/webcomponents/polymer-boilerplate) - * [X-Tag Boilerplate](https://github.com/webcomponents/xtag-boilerplate); * [VanillaJS Boilerplate.](https://github.com/webcomponents/element-boilerplate) -In these boilerplates, we solve the same problem using different libraries (Polymer/X-Tag) or no library at all (VanillaJS), with the same tools and directory structure. +In these boilerplates, we solve the same problem using different libraries (Polymer / SkateJS / LitElement / SlimJS) or no library at all (VanillaJS), with the same tools and directory structure. -We encourage a series of best practices like setting up a live demo, documenting your API, maintaining a changelog for release purposes, and sharing your component on Bower. The boilerplates form small, opinionated starter-kits with all you need included, from polyfills to automated tasks. +We encourage a series of best practices like setting up a live demo, documenting your API, maintaining a changelog for release purposes, and sharing your component on NPM. The boilerplates form small, opinionated starter-kits with all you need included, from polyfills to automated tasks. You’ll still need to make some manual changes after forking each boilerplate, like changing an element's name in different files. In order to automate this process, we created a [Yeoman](http://yeoman.io/) Generator and a [Slush](http://slushjs.github.io/#/) Generator that can scaffold a web component using the command-line: - * [Element Generator for Yeoman.](https://github.com/webcomponents/generator-element) - * [Element Generator for Slush.](https://github.com/webcomponents/slush-element) + * [Element Generator for Yeoman](https://github.com/webcomponents/generator-element) + * [Element Generator for Slush](https://github.com/webcomponents/slush-element) + * [RHElement Generator](https://github.com/rhelements/generator-rhelement) -The generators help ensure an even more seamless start, helping with tasks like validating your element's name according to W3C's spec rules and checking if there's a similarly-named project on Bower. +The generators help ensure an even more seamless start, helping with tasks like validating your element's name according to W3C's spec rules and checking if there's a similarly-named project on NPM. -The Polymer Project also has a command-line tool to help automate the scaffolding of Polymer-based web components and applications: - * [Polymer CLI](https://www.polymer-project.org/1.0/docs/tools/polymer-cli) +Some projects also have command-line tools to help automate the scaffolding of web components and applications: + * [Polymer CLI](https://www.polymer-project.org/3.0/docs/tools/polymer-cli) - CLI + build Polymer 3 & scaffold full applications + * [StencilJS](https://www.stenciljs.com/) - CLI & Compiler to generate VanillaJS elements + * [Web Component Factory](https://github.com/elmsln/wcfactory) - CLI to produce boilerplate VanillaJS, SlimJS, StencilJS, Polmer 3, LitElement # 3. Share @@ -35,5 +37,4 @@ Now that you’ve finished your element it's time to share it with the world! Th The best way to share a component is by making it available for use with one of the current JavaScript package managers. Currently most web component libraries have great support for [Bower](https://bower.io/), and are working on improving support for [npm](https://www.npmjs.com/). -And make sure to publish your element to webcomponents.org! Check out the [Publish page](https://beta.webcomponents.org/publish) to learn how to publish your element. - +And make sure to publish your element to webcomponents.org! Check out the [Publish page](https://webcomponents.org/publish) to learn how to publish your element. diff --git a/static/specs.md b/static/specs.md index 05beb96..e381123 100644 --- a/static/specs.md +++ b/static/specs.md @@ -1,11 +1,13 @@ -Web components are based on four main specifications: +Web components is a meta-specification made possible by four other specifications: * The Custom Elements specification * The shadow DOM specification - * The HTML imports specification * The HTML Template specification + * The ES Module specification + +These four specifications can be used on their own but combined allow developers to define their own tags (custom element), whose styles are encapsulated and isolated (shadow dom), that can be restamped many times (template), and have a consistent way of being integrated into applications (es module). # The Custom Elements specification -The previous version of the Custom Elements specification, v0, was only shipped in Chromium-based browsers. It is being phased out in favour of v1. This section mostly applies to the new, cross-browser version of the Custom Elements specification (v1). See Eric Bidelman’s articles on [Custom Elements v1](https://developers.google.com/web/fundamentals/getting-started/primers/customelements#historysupport) or [Custom Elements v0](https://www.html5rocks.com/en/tutorials/webcomponents/customelements/) for full details. +This section applies to the cross-browser version of the Custom Elements specification (v1). See Eric Bidelman’s articles on [Custom Elements v1](https://developers.google.com/web/fundamentals/getting-started/primers/customelements#historysupport). The [Custom Elements specification](https://w3c.github.io/webcomponents/spec/custom/) lays the foundation for designing and using new types of DOM elements that are fully-featured and conforming. Following the Custom Elements spec, authors can define behaviors and styles for new HTML elements. @@ -13,7 +15,7 @@ The [Custom Elements specification](https://w3c.github.io/webcomponents/spec/cus * Customized built-ins extend existing HTML elements with custom functionality. They inherit semantics from the elements they extend. The specification for customized built-ins is still a work in progress, and at present is only supported by Chrome. ## Create a custom button as an autonomous custom element -To create an autonomous custom element, extend HTMLElement. The Custom Elements v1 syntax is: +To create an autonomous custom element, extend HTMLElement. The Custom Elements syntax is: ```html class AutonomousButton extends HTMLElement { ... @@ -21,12 +23,6 @@ class AutonomousButton extends HTMLElement { customElements.define("autonomous-button", AutonomousButton); ``` -The (deprecated) Custom Elements v0 syntax is: -```js -var AutonomousButton = document.registerElement('autonomous-button', {prototype: Object.create(HTMLElement.prototype) }); -document.body.appendChild(new AutonomousButton()); -``` - To use the element: ```html Click Me :) @@ -37,7 +33,7 @@ When the browser sees the `` tag, it constructs and renders a ## Create a custom button as a customized built-in You can extend an existing native HTML element to create a customized built-in*. -The Custom Elements v1 syntax is: +The Custom Elements syntax is: ```html class CustomizedButton extends HTMLButtonElement { ... @@ -45,14 +41,6 @@ class CustomizedButton extends HTMLButtonElement { customElements.define("customized-button", CustomizedButton, { extends: "button" }); ``` -The Custom Elements v0 syntax is: -```js -var CustomizedButton = document.registerElement('customized-button', { - prototype: Object.create(HTMLButtonElement.prototype), - extends: 'button' -}); -``` - To use the element: ```html @@ -64,7 +52,7 @@ By extending HTMLButtonElement instead of HTMLElement, CustomizedButton inherits # The shadow DOM specification -This section is a summary of the new, cross-browser version (v1) of the shadow DOM specification. See [Eric Bidelman’s article on shadow DOM v1](https://developers.google.com/web/fundamentals/getting-started/primers/shadowdom), [Dominic Cooney’s article on shadow DOM v0](https://www.html5rocks.com/en/tutorials/webcomponents/shadowdom/), and [Hayato Ito’s summary of the differences](https://hayato.io/2016/shadowdomv1/) for full details. +This section is a summary of the shadow DOM specification. See [Eric Bidelman’s article on shadow DOM](https://developers.google.com/web/fundamentals/getting-started/primers/shadowdom). The DOM (Document Object Model) is a representation of the structure of an html document. The DOM models a document as a tree, with elements in parent-child relationships. @@ -73,21 +61,15 @@ On its own, the DOM API contains no support for encapsulation. This makes it har The shadow DOM API overcomes this limitation by letting you attach DOM subtrees to elements in a web document. These subtrees are encapsulated; style information inside them cannot apply to outside elements, and vice versa. ## Creating shadow DOM for a custom element -In Shadow DOM v1, use the attachShadow() method to create shadow DOM: +In Shadow DOM, use the attachShadow() method to create shadow DOM: ```js const header = document.createElement('header'); const shadowRoot = header.attachShadow({mode: 'open'}); shadowRoot.innerHTML = '

Hello Shadow DOM

'; ``` -In Shadow DOM v0, use the createShadowRoot() method to create shadow DOM: -```js -let e = document.createElement('div'); -let shadowRoot = e.createShadowRoot(); -``` - ## Composition and slots -By default, if an element has shadow DOM, the shadow tree is rendered instead of the element's children. To allow children to render, you need to add placeholders for them in your shadow tree. To do this in shadow DOM v1: +By default, if an element has shadow DOM, the shadow tree is rendered instead of the element's children. To allow children to render, you need to add placeholders for them in your shadow tree. To do this in shadow DOM: Consider the following shadow tree for ``: @@ -113,23 +95,6 @@ The header renders as if the `` element was replaced by the children: ``` -To do this in shadow DOM v0, use `` as a placeholder. See [Hayato Ito's cheat sheet](https://hayato.io/2016/shadowdomv1/#insertion-points-v0-vs-slots-v1) for the source of this code, and for more explanation. -```html - - - - - - - - -
- - - -
-``` - ## Styling Styles inside a shadow tree are scoped to the shadow tree, and don't affect elements outside the shadow tree. @@ -154,24 +119,29 @@ To style elements with a shadow root, you can use custom properties if the eleme In this example, the `
` has a blue background, even though the div selector is less specific than the .test selector in the main document. That's because the main document selector doesn't match the `
` in the shadow DOM at all. On the other hand, the white text color set on the document body inherits down to `` and into its shadow root. -# The HTML imports specification -The [HTML imports specification](https://w3c.github.io/webcomponents/spec/imports/) defines the inclusion and reuse of HTML documents in other HTML documents. There are no corresponding changes to HTML imports for cross-browser specifications. +# The ES Module specification +The [ES Module specification](https://html.spec.whatwg.org/multipage/webappapis.html#integration-with-the-javascript-module-system) defines the inclusion and reuse of JS documents in other JS documents. -HTML imports enable web components to be developed in a modular way. You can define the interface of your custom element in an HTML file which is then included with an import. Imported HTML files are merged into one file at build time. +ES Modules enable web components to be developed in a modular way that is in alignment with other industry accepted implementations for JavaScript application development. You can define the interface of your custom element in a JS file which is then included with an `type="module"` attribute. ES Module files are merged into one file client side or can be rolled up into single packages ahead of time. -Supposing an element is defined in cool-thing.html, you would import it using the following link: +Supposing an element is defined in awesome-explosion.js, you would import it using one of the following script: ```html - + +... + ``` -Now you can use the cool-thing element in your own pages: +Now you can use the awesome-explosion element in your own pages: ```html - + ... - + ``` - # The HTML Template specification The [HTML template element specification](https://html.spec.whatwg.org/multipage/scripting.html#the-template-element/) defines how to declare fragments of markup that go unused at page load, but can be instantiated later on at runtime. There are no corresponding changes to HTML templates for cross-browser specifications. @@ -203,4 +173,4 @@ t.content.querySelector('img').src = 'logo.png'; var clone = document.importNode(t.content, true); document.body.appendChild(clone); -``` \ No newline at end of file +``` diff --git a/test/test.js b/test/test.js index c5f0ca7..abf1587 100644 --- a/test/test.js +++ b/test/test.js @@ -143,4 +143,17 @@ describe('api/resources', function() { done(); }); }); + + it('should return filtered list by author', function(done) { + chai.request(server) + .get('/resources/author/aaron_frost') + .end(function(err, response) { + const header = response.header; + header.should.have.property('access-control-allow-origin', '*'); + response.should.have.status(200); + response.should.be.json; + JSON.parse(response.text).should.have.property('count', 1); + done(); + }); + }); });