UNPKG

@haxtheweb/haxcms-nodejs

Version:

HAXcms single and multisite nodejs server, api, and administration

88 lines (74 loc) 3.74 kB
/** @license Copyright (c) 2015 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-flex-layout/iron-flex-layout.js";import{Polymer as t}from"../../polymer/lib/legacy/polymer-fn.js";import{dom as e}from"../../polymer/lib/legacy/polymer.dom.js";import{html as o}from"../../polymer/lib/utils/html-tag.js";import{AppLayoutBehavior as i}from"../app-layout-behavior/app-layout-behavior.js";t({_template:o` <style> :host { display: block; /** * Force app-header-layout to have its own stacking context so that its parent can * control the stacking of it relative to other elements (e.g. app-drawer-layout). * This could be done using \`isolation: isolate\`, but that's not well supported * across browsers. */ position: relative; z-index: 0; } #wrapper ::slotted([slot=header]) { @apply --layout-fixed-top; z-index: 1; } #wrapper.initializing ::slotted([slot=header]) { position: relative; } :host([has-scrolling-region]) { height: 100%; } :host([has-scrolling-region]) #wrapper ::slotted([slot=header]) { position: absolute; } :host([has-scrolling-region]) #wrapper.initializing ::slotted([slot=header]) { position: relative; } :host([has-scrolling-region]) #wrapper #contentContainer { @apply --layout-fit; overflow-y: auto; -webkit-overflow-scrolling: touch; } :host([has-scrolling-region]) #wrapper.initializing #contentContainer { position: relative; } :host([fullbleed]) { @apply --layout-vertical; @apply --layout-fit; } :host([fullbleed]) #wrapper, :host([fullbleed]) #wrapper #contentContainer { @apply --layout-vertical; @apply --layout-flex; } #contentContainer { /* Create a stacking context here so that all children appear below the header. */ position: relative; z-index: 0; } @media print { :host([has-scrolling-region]) #wrapper #contentContainer { overflow-y: visible; } } </style> <div id="wrapper" class="initializing"> <slot id="headerSlot" name="header"></slot> <div id="contentContainer"> <slot></slot> </div> </div> `,is:"app-header-layout",behaviors:[i],properties:{hasScrollingRegion:{type:Boolean,value:!1,reflectToAttribute:!0}},observers:["resetLayout(isAttached, hasScrollingRegion)"],get header(){return e(this.$.headerSlot).getDistributedNodes()[0]},_updateLayoutStates:function(){var t=this.header;if(this.isAttached&&t){this.$.wrapper.classList.remove("initializing"),t.scrollTarget=this.hasScrollingRegion?this.$.contentContainer:this.ownerDocument.documentElement;var e=t.offsetHeight;this.hasScrollingRegion?(t.style.left="",t.style.right=""):requestAnimationFrame(function(){var e=this.getBoundingClientRect(),o=document.documentElement.clientWidth-e.right;t.style.left=e.left+"px",t.style.right=o+"px"}.bind(this));var o=this.$.contentContainer.style;t.fixed&&!t.condenses&&this.hasScrollingRegion?(o.marginTop=e+"px",o.paddingTop=""):(o.paddingTop=e+"px",o.marginTop="")}}});