@haxtheweb/haxcms-nodejs
Version:
HAXcms single and multisite nodejs server, api, and administration
110 lines (96 loc) • 4.55 kB
JavaScript
/**
@license
Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at
http://polymer.github.io/LICENSE.txt The complete set of authors may be found at
http://polymer.github.io/AUTHORS.txt The complete set of contributors may be
found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as
part of the polymer project is also subject to an additional IP rights grant
found at http://polymer.github.io/PATENTS.txt
*/
import"../polymer/polymer-legacy.js";import"./iron-doc-viewer-styles.js";import{Polymer as e}from"../polymer/lib/legacy/polymer-fn.js";import{dom as t,flush as i}from"../polymer/lib/legacy/polymer.dom.js";import{html as o}from"../polymer/lib/utils/html-tag.js";function _section(e,t,i){for(var o=[],a=0;a<(i||[]).length;a++){var s=i[a],r=s.tagname?"<"+s.tagname+">":s.name;if(r){for(var n=t+(s.tagname||s.name),l=[],p=0;p<(s.demos||[]).length;p++){var d=s.demos[p];if(d.url){var m=d.description?d.description.toLowerCase().replace(/\s+/g,"-"):d.url;l.push({path:n+"/demos/"+m,description:d.description||"Demo"})}}o.push({name:r,path:n,demos:l})}}return o.sort((function(e,t){return e.name.localeCompare(t.name)})),{heading:e,items:o}}e({_template:o`
<style include="iron-doc-viewer-styles">
:host {
display: block;
}
section {
@apply --iron-doc-font-body;
border-bottom: 1px solid #e0e0e0;
}
h3 {
@apply --paper-font-subhead;
color: #717171;
padding: 0 24px;
}
ul {
list-style: none;
padding: 0;
}
li {
line-height: 30px;
}
a {
color: #333;
padding: 0 24px;
display: block;
text-decoration: none;
}
a:hover {
color: var(--iron-doc-accent-color-internal) ;
}
a[selected] {
color: var(--iron-doc-accent-color-internal);
}
.tray {
transition: height 180ms linear, opacity 180ms linear;
box-sizing: border-box;
overflow: hidden;
}
.tray:not([expanded]) {
height: 0 ;
opacity: 0;
visibility: hidden; /** Prevent keyboard etc. focus. */
}
.tray[expanded] {
opacity: 1;
visibility: visible;
}
.tray ul {
padding: 10px 0;
margin: 10px 0;
white-space: nowrap;
background-color: #eee;
border-top: 1px solid #dedede;
border-bottom: 1px solid white;
}
.tray a {
padding-left: 35px;
color: #333;
}
</style>
<template is="dom-repeat" items="[[_sections]]" as="section">
<section hidden\$="[[!section.items.length]]">
<h3>[[section.heading]]</h3>
<ul>
<template is="dom-repeat" items="[[section.items]]">
<li>
<a href="[[baseHref]][[item.path]]" title\$="[[item.name]]" on-tap="_select" selected\$="[[_isSelected(item.path, path)]]">
[[item.name]]
</a>
<div class="tray" expanded\$="[[_isExpanded(item, path)]]">
<ul>
<template is="dom-repeat" items="[[item.demos]]" as="demo">
<li>
<a href="[[baseHref]][[demo.path]]" title\$="[[demo.description]]" on-tap="_select" selected\$="[[_isSelected(demo.path, path)]]">
[[demo.description]]
</a>
</li>
</template>
</ul>
</div>
</li>
</template>
</ul>
</section>
</template>
`,is:"iron-doc-nav",properties:{descriptor:{type:Object,observer:"_descriptorChanged"},path:String,baseHref:{type:String,value:"#"},_sections:Array},_descriptorChanged(e){e=e||{},this._sections=[_section("Namespaces","/namespaces/",e.namespaces),_section("Elements","/elements/",e.elements),_section("Behaviors","/behaviors/",((e.metadata||{}).polymer||{}).behaviors),_section("Mixins","/mixins/",e.mixins),_section("Classes","/classes/",e.classes)],i();for(var o=t(this.root).querySelectorAll(".tray"),a=0;a<o.length;a++){var s=o[a],r=s.hasAttribute("expanded");r||s.setAttribute("expanded",""),s.style.height="auto",s.style.height=s.offsetHeight+"px",r||s.removeAttribute("expanded","")}},_select(e){this.fire("select")},_isSelected:(e,t)=>e===t,_isExpanded:(e,t)=>!(!(e&&t&&e.path&&e.demos&&e.demos.length>0)||t!==e.path&&0!==t.indexOf(e.path+"/"))});