view

code

panel.component.css

:host {
display:flex;
min-width:300px }

panel.component.html

<header class="fxs-blade-header fxs-header fxs-blade-border fxs-trim-border fxs-trim fxs-blade-loaded">
<div class="fxs-blade-title-content">
<div class="fxs-blade-title">
<h2 class="fxs-blade-title-titleText msportalfx-tooltip-overflow" tabindex="-1">
{{headerTitle}}
</h2>
</div>
<div class="fxs-blade-actions" role="menubar" *ngIf="!disableAction">
<button type="button" role="menuitem" class="fxs-blade-collapser fxs-trim-svg fxs-trim-hover" title="Restore" (click)="minmize()" *ngIf="width=='100%'">
<svg height="100%" width="100%" aria-hidden="true" role="presentation" focusable="false">
<g xmlns="http://www.w3.org/2000/svg">
<path d="M 11 5 H 2 v 9 h 9 V 5 Z m -7 7 V 7 h 5 v 5 H 4 Z" />
<path d="M 8 6 V 3 h 5 v 5 h -3 v 2 h 5 V 1 H 6 v 5 h 2 Z" />
</g>
</svg>
</button>
<button type="button" role="menuitem" class="fxs-blade-pin fxs-trim-svg fxs-trim-hover" title="Maximize" (click)="maximize()" *ngIf="width!='100%'">
<svg height="100%" width="100%" role="presentation">
<g xmlns="http://www.w3.org/2000/svg">
<path d="M 1 2 v 12 h 14 V 2 H 1 Z m 2 10 V 6 h 10 v 6 H 3 Z" />
</g>
</svg>
</button>
<button type="button" role="menuitem" class="fxs-blade-close fxs-trim-svg" title="关闭" (click)="close()">
<svg height="100%" width="100%" role="presentation">
<g xmlns="http://www.w3.org/2000/svg">
<path d="M 14 3.3 L 12.7 2 L 8 6.7 L 3.3 2 L 2 3.3 L 6.7 8 L 2 12.7 L 3.3 14 L 8 9.3 l 4.7 4.7 l 1.3 -1.3 L 9.3 8 Z" />
</g>
</svg>
</button>
</div>
</div>
</header>
<div class="fxs-blade-content-container fxs-portal-text" [ngStyle]="{'height.px':height}">
<div class="fxs-blade-content-container-default fxs-blade-border fxs-portal-border fxs-bladecontent fxs-mode-locked fxs-blade-locked fx-rightClick fxs-bladestyle-default fxs-bladesize-small">
<div class="fxs-blade-commandBarContainer" *ngIf="menuItems.length>0">
<div class="fxs-commandBar-target fxs-portal-border fxs-portal-background fxs-portal-svg fxs-commandBar">
<ul class="fxs-commandBar-itemList" role="menubar" style="position: relative;">
<li class="fxs-commandBar-item fxs-portal-border fxs-portal-hover" *ngFor="let item of menuItems" (click)="item.event()" [title]="item.title">
<div class="fxs-commandBar-item-buttoncontainer">
<div class="fxs-commandBar-item-icon">
<svg height="100%" width="100%" role="presentation">
<use xmlns:xlink="http://www.w3.org/1999/xlink" [attr.xlink:href]="item.icon"></use>
</svg>
</div>
<div class="fxs-commandBar-item-text msportalfx-tooltip-overflow" preserveFragment="false">
{{item.title}}
</div>
</div>
</li>
</ul>
</div>
</div>
<ng-content></ng-content>
</div>
</div>

panel.component.ts

import { Component, Input, Output, EventEmitter } from '@angular/core';

@Component({
selector: 'panel-component',
templateUrl: './panel.component.html',
styleUrls: ['./panel.component.css'],
host: {
'class': 'fxs-blade fxs-stacklayout-child fxs-blade-maximized fxs-blade-firstblade',
'[class.whatever]': "{'fxs-blade-maximized': width=='100%'}",
'[style.width]': 'width'
}
})
export class PanelComponent { width: string;
height: string; @Input()
initWidth: string; @Input()
headerTitle: string; @Input()
menuItems: Array<{
title: string,
icon: string,
event: string;
}> = []; @Output()
closeEvent: EventEmitter<any> = new EventEmitter(); @Input()
disableAction: boolean = false; constructor() { } ngOnInit() {
var self = this;
this.width = this.initWidth;
this.height = (document.body.clientHeight - 85) + "";
window.addEventListener("resize", function () {
self.height = (document.body.clientHeight - 85) + "";
});
} maximize() {
this.width = "100%";
} minmize() {
this.width = this.initWidth;
} close() {
this.closeEvent.emit();
} }

panel.component.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { PanelComponent } from './panel.component';
@NgModule({
declarations: [
PanelComponent,
],
imports: [
CommonModule,
],
exports: [
PanelComponent
]
})
export class PanelComponentModuleModule {
}

示例:

<div class="fxs-journey-target fxs-journey">
<div class="fxs-journey-layout fxs-stacklayout-horizontal fxs-stacklayout fxs-journey-withspacer">
<panel-component [menuItems]="menuItems" headerTitle="开发者中心" initWidth="600px" (closeEvent)="close()">
</panel-component>
</div>
</div>
import { Component } from '@angular/core';
import { Router } from '@angular/router'; @Component({
selector: 'devCenter-page',
templateUrl: './devCenter.html'
})
export class DevCenterPage {
constructor(private router: Router) { } menuItems: any = [
{ title: "添加", icon: "#FxSymbol0-010", event: null }, ] close() {
this.router.navigate([''], {});
}
}

【angular5项目积累总结】panel组件的更多相关文章

  1. 【angular5 项目积累总结】项目公共样式

    main.css @font-face { font-family: 'wf_segoe-ui_normal'; src: local('Segoe UI'),url('../fonts/segoe- ...

  2. 【angular5项目积累总结】优秀组件以及应用实例

    1.手机端 图片预览组件 组件:sideshow 效果图:(预览图全屏 且可以左右移动)                  code: <div class="row ui-app-s ...

  3. 【angular5项目积累总结】avatar组件

    View Code import { Component, HostListener, ElementRef } from '@angular/core'; import { Adal4Service ...

  4. 【angular5项目积累总结】breadcrumb面包屑组件

    view code <div class="fxs-breadcrumb-wrapper" aria-label="Navigation history" ...

  5. 【angular5项目积累总结】遇到的一些问题以及解决办法

    1.项目中字符串特别是\r\n,替换成br之后,在页面换行无法生效? 答:绑定元素 innerHTML. <div class="panel-body" [innerHTML ...

  6. 【angular5项目积累总结】消息订阅服务

    code import { Injectable } from '@angular/core'; import { Subject } from 'rxjs/Subject'; @Injectable ...

  7. 【angular5项目积累总结】文件上传

    <div class="form-group row"> <label class="col-sm-2 col-form-label"> ...

  8. 【angular5项目积累总结】侧栏菜单 navmenu

    View Code import { Component, OnInit } from '@angular/core'; import { HttpClient } from '@angular/co ...

  9. 【angular5项目积累总结】结合adal4实现http拦截器(token)

    import { Injectable } from '@angular/core'; import { HttpEvent, HttpInterceptor, HttpHandler, HttpRe ...

随机推荐

  1. 纸壳CMS列表Grid的配置

    纸壳CMS(ZKEACMS)里的Grid是一个TagHelper,是对jQuery插件datatables的一个配置封装. Easy.Mvc.TagHelpers.GridTagHelper grid ...

  2. SharePoint Adventures : Using Claims with Reporting Services

    Cannot convert claims identity to a windows token.  This may be due to user not logging in using win ...

  3. django系列8.3.2--django中间件实现登录验证(2) 个人构想逻辑

    middleware.py from django.utils.deprecation import MiddlewareMixin from django.shortcuts import rend ...

  4. 内置函数enumerate()使用

    描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. Python 2.3. 以上版本可用,2. ...

  5. 在 django模型中封装元组和字典, 字段中使用chioce参数实现数据的一一对应

    一.models.py中 class OrderInfo(BaseModel): '''订单模型类''' # 封装一个字典, 便于在视图中取值, 进行比对 PAY_METHODS = { : &quo ...

  6. combining-filters

    The previous two examples showed a single filter in use. In practice, you will probably need to filt ...

  7. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option)

    今天运行Redis时发生错误,错误信息如下: org.springframework.dao.InvalidDataAccessApiUsageException: MISCONF Redis is ...

  8. selenium常用命令--操作页面元素及获取元素内容整理

    selenium常用命令之操作页面元素及获取元素内容的事件整理 例子:  /**id <input type="text" id="phone" name ...

  9. Set的总结

    Set最重要的操作是查找,为查找而设计.存入HashSet的元素必须定义hashCode(); Set不保存重复的元素,元素必须唯一.通过equals()方法一确保对象的唯一性. Set中最常被用于归 ...

  10. 3.1)DFM-塑胶件设计总章

    本章目的:各种塑胶工艺了解,DFM-塑胶件的设计准则是依据哪种工艺. 1.塑胶概念 塑胶的定义(美国塑料工业协会): 塑胶主要由碳.氧.氢和氮及其他有机或无机元素所构成,成品为固体,在制造过程中是熔融 ...