// // @description : // @author : Adarsh Pastakia // @copyright : 2016 // @license : MIT import {autoinject, bindable, containerless, customElement, inlineView, children, DOM} from "aurelia-framework"; import {UIEvent} from "../../utils/ui-event"; import * as _ from "lodash"; @autoinject() @customElement('ui-panel-group') @inlineView(``) export class UIPanelGroup { constructor(public element: Element) { } attached() { if (_.find(this.panels, ['collapsed', false]) == null) this.panels[0].collapsed = false; } @children('ui-panel') panels; __unCollapse() { let panel: any = _.find(this.panels, ['collapsed', false]) if (panel) panel.collapsed = true; } } @autoinject() @customElement('ui-panel') @inlineView(``) export class UIPanel { constructor(public element: Element) { this.collapsed = element.hasAttribute('collapsed'); } closePanel() { DOM.removeNode(this.element); } collapsed = false; toggleCollapse() { setTimeout(() => this.collapsed = !this.collapsed, 200); } } @autoinject() @customElement('ui-panel-body') @inlineView(``) export class UIContent { constructor(public element: Element) { if (element.hasAttribute('flex')) element.classList.add('ui-row-column'); if (element.hasAttribute('scroll')) element.classList.add('ui-scroll'); if (element.hasAttribute('padded')) element.classList.add('ui-pad-all'); } __wrapperClass = ''; @bindable() height = 'auto'; @bindable() maxHeight = 'auto'; } @autoinject() @customElement('ui-header-tool') @inlineView(``) export class UIHeaderTool { constructor(public element: Element) { if (element.hasAttribute('collapse')) this.__type = "collapse"; if (element.hasAttribute('collapse')) this.__icon = "fi-ui-angle-up"; if (element.hasAttribute('minimize')) this.__type = "minimize"; if (element.hasAttribute('minimize')) this.__icon = "fi-ui-dialog-minimize"; if (element.hasAttribute('maximize')) this.__type = "maximize"; if (element.hasAttribute('maximize')) this.__icon = "fi-ui-dialog-maximize"; if (element.hasAttribute('close')) this.__type = "close"; if (element.hasAttribute('close')) this.__icon = "fi-ui-close"; if (element.hasAttribute('refresh')) this.__type = "refresh"; if (element.hasAttribute('refresh')) this.__icon = "fi-ui-refresh"; } __type; __icon; fireEvent(evt) { if (evt.button != 0) return true; return UIEvent.fireEvent(this.__type, this.element); } } @autoinject() @customElement('ui-header-icon') @inlineView(``) export class UIHeaderIcon { constructor(public element: Element) { } @bindable() icon = ''; } @autoinject() @customElement('ui-header-title') @inlineView(``) export class UIHeaderTitle { constructor(public element: Element) { } } @autoinject() @customElement('ui-header') @inlineView(``) export class UIHeader { constructor(public element: Element) { if (this.element.hasAttribute('primary')) element.classList.add('ui-primary'); else if (this.element.hasAttribute('secondary')) element.classList.add('ui-secondary'); else if (this.element.hasAttribute('dark')) element.classList.add('ui-dark'); else if (this.element.hasAttribute('light')) element.classList.add('ui-light'); else if (this.element.hasAttribute('info')) element.classList.add('ui-info'); else if (this.element.hasAttribute('danger')) element.classList.add('ui-danger'); else if (this.element.hasAttribute('success')) element.classList.add('ui-success'); else if (this.element.hasAttribute('warning')) element.classList.add('ui-warning'); } }