/** * */ package xapi.polymer.core; import static xapi.components.impl.JsSupport.addClassName; import static xapi.components.impl.JsSupport.findInShadowRoot; import static xapi.components.impl.JsSupport.newDivWithHtml; import static xapi.components.impl.JsSupport.setAttr; import static xapi.elemental.X_Elemental.getElementalService; import static xapi.ui.html.api.Style.Overflow.Auto; import static xapi.ui.html.api.Style.Position.Relative; import static xapi.ui.html.api.Style.UnitType.Px; import com.google.gwt.core.client.js.JsProperty; import com.google.gwt.core.client.js.JsType; import com.google.gwt.core.shared.GWT; import elemental.dom.Element; import elemental.html.DivElement; import xapi.annotation.common.Property; import xapi.components.api.IsWebComponent; import xapi.components.api.OnWebComponentCreated; import xapi.components.api.WebComponent; import xapi.components.api.WebComponentFactory; import xapi.components.impl.WebComponentWithCallbacks; import xapi.ui.html.X_Html; import xapi.ui.html.api.Css; import xapi.ui.html.api.El; import xapi.ui.html.api.Html; import xapi.ui.html.api.Style; import xapi.ui.html.api.Style.Display; import xapi.ui.html.api.Style.Rgb; import xapi.ui.html.api.Style.Unit; import xapi.ui.html.api.Style.UnitType; @JsType @WebComponent(tagName=PaperHeaderPanel.TAG_NAME) @Css( style= { @Style( names="."+PaperHeaderPanel.CLASS_NAME+" core-header-panel", display=Display.InlineBlock, position=Relative, overflow=Auto, width=@Unit(value=700), minHeight=@Unit(value=700, type=Px) ) } ) @Html( document="core-header-panel", renderOrder= { "getHeaderPanel", "getContentPanel" } ) public interface PaperHeaderPanel extends IsWebComponent<Element>, OnWebComponentCreated<Element>, WebComponentWithCallbacks<Element> { WebComponentFactory<PaperHeaderPanel> NEW_HEADER_PANEL = GWT.create(PaperHeaderPanel.class); String TAG_NAME = "xapi-header-panel"; String CLASS_NAME = "xapi-header"; @JsProperty @El( className="core-header", properties= { @Property(name="horizontal"), @Property(name="layout"), @Property(name="center"), }, style= { @Style( names=".core-header", properties=@Property(name="background", value="radial-gradient(ellipse at center, #1e5799 0%,#2989d8 57%,#7db9e8 100%)"), borderRadius= {@Unit(value=3), @Unit(value=3), @Unit(value=0), @Unit(value=0)} ), @Style( names=".core-header paper-button", marginRight=@Unit(value=0) ), @Style( names=".core-header .header-text", color=@Rgb(r=0xff,g=0xff,b=0xff), marginLeft=@Unit(value=1, type=UnitType.Em) ) } ) Element getHeaderPanel(); @JsProperty void setHeaderPanel(Element header); @JsProperty Element getContainerPanel(); @JsProperty void setContainerPanel(Element container); @JsProperty @El( className="content", style=@Style( names="."+CLASS_NAME+ " .content", overflowX=Auto ) ) Element getContentPanel(); @JsProperty void setContentPanel(Element content); default void setHeaderText(String text) { DivElement header = newDivWithHtml(text); addClassName(header, "header-text"); setAttr(header, "flex"); getHeaderPanel().appendChild(header); } default Element getScrollContainer() { Element container = getContainerPanel(); return findInShadowRoot(container, "mainContainer"); } @Override default void onCreated(Element e) { addClassName(e, CLASS_NAME); e.setInnerHTML(X_Html.toHtml(PaperHeaderPanel.class, this, getElementalService())); setContentPanel(e.querySelector(".content")); setHeaderPanel(e.querySelector(".core-header")); setContainerPanel(e.getFirstElementChild()); } }