@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
230 lines (222 loc) • 12.5 kB
JavaScript
import { CommonModule } from '@angular/common';
import { Injectable, Component, Input, EventEmitter, ChangeDetectionStrategy, Output, NgModule } from '@angular/core';
import { Router, RouterModule } from '@angular/router';
import { DropDownModule } from '@duoduo-oba/ng-devui/dropdown';
import { SearchModule } from '@duoduo-oba/ng-devui/search';
/**
* @fileoverview added by tsickle
* Generated from: breadcrumb.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class BreadCrumbService {
/**
* @param {?} router
*/
constructor(router) {
this.router = router;
}
// 与原生routerLink表现形式一致,navigateByUrl()可直接传入字符串类型的链接,并将链接解析为routerLink的urlTree的形式
/**
* @param {?} $event
* @param {?} item
* @return {?}
*/
navigateTo($event, item) {
// 兼容a标签与不同键的交互形式
if ($event.button !== 0 || $event.ctrlKey || $event.metaKey || $event.shiftKey) {
return;
}
if (typeof item.target === 'string' && item.target !== '_self') {
return;
}
$event.preventDefault();
this.router.navigateByUrl(item.link);
}
}
BreadCrumbService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
BreadCrumbService.ctorParameters = () => [
{ type: Router }
];
if (false) {
/**
* @type {?}
* @private
*/
BreadCrumbService.prototype.router;
}
/**
* @fileoverview added by tsickle
* Generated from: breadcrumb.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class BreadCrumbComponent {
/**
* @param {?} breadCrumbService
*/
constructor(breadCrumbService) {
this.breadCrumbService = breadCrumbService;
this.source = [];
}
/**
* @param {?} $event
* @param {?} item
* @return {?}
*/
navigateTo($event, item) {
this.breadCrumbService.navigateTo($event, item);
}
}
BreadCrumbComponent.decorators = [
{ type: Component, args: [{
selector: 'd-breadcrumb',
exportAs: 'dBreadcrumb',
template: "<ng-container *ngIf=\"source && source.length\">\r\n <d-breadcrumb-item\r\n *ngFor=\"let item of source\"\r\n [showMenu]=\"item.showMenu\"\r\n [isSearch]=\"item.isSearch\"\r\n [menuList]=\"item.menuList\"\r\n [customMenuTemplate]=\"item.customMenuTemplate\"\r\n >\r\n <a\r\n *ngIf=\"!item.noNavigation && (!item.linkType || item.linkType === 'hrefLink')\"\r\n rel=\"noopener\"\r\n [href]=\"item.link\"\r\n [target]=\"item.target ? item.target : '_self'\"\r\n >{{ item.title }}</a\r\n >\r\n <a\r\n *ngIf=\"!item.noNavigation && item.linkType === 'routerLink'\"\r\n rel=\"noopener\"\r\n [target]=\"item.target\"\r\n [href]=\"item.link\"\r\n (click)=\"navigateTo($event, item)\"\r\n >{{ item.title }}</a\r\n >\r\n <span *ngIf=\"item.noNavigation\">{{ item.title }}</span>\r\n </d-breadcrumb-item>\r\n</ng-container>\r\n<ng-container *ngIf=\"!(source && source.length)\">\r\n <ng-content></ng-content>\r\n</ng-container>\r\n",
styles: [":host{display:block}:host ::ng-deep d-breadcrumb-item:last-child .devui-breadcrumb-separator{display:none}"]
}] }
];
/** @nocollapse */
BreadCrumbComponent.ctorParameters = () => [
{ type: BreadCrumbService }
];
BreadCrumbComponent.propDecorators = {
separatorIcon: [{ type: Input }],
source: [{ type: Input }]
};
if (false) {
/** @type {?} */
BreadCrumbComponent.prototype.separatorIcon;
/** @type {?} */
BreadCrumbComponent.prototype.source;
/**
* @type {?}
* @private
*/
BreadCrumbComponent.prototype.breadCrumbService;
}
/**
* @fileoverview added by tsickle
* Generated from: breadcrumb-item/breadcrumb-item.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class BreadCrumbItemComponent {
/**
* @param {?} breadCrumbComponent
* @param {?} breadCrumbService
*/
constructor(breadCrumbComponent, breadCrumbService) {
this.breadCrumbComponent = breadCrumbComponent;
this.breadCrumbService = breadCrumbService;
this.showMenu = false;
this.isSearch = false;
this.toggleEvent = new EventEmitter();
}
/**
* @return {?}
*/
ngOnInit() {
this.menuListDisplay = this.menuList;
}
/**
* @param {?} $event
* @return {?}
*/
onToggle($event) {
this.isOpen = $event;
this.toggleEvent.emit($event);
}
/**
* @param {?} $event
* @return {?}
*/
searchEvent($event) {
if (this.menuList) {
this.menuListDisplay = this.menuList.filter((/**
* @param {?} item
* @return {?}
*/
item => item.name.toLowerCase().includes($event.toLowerCase())));
}
}
/**
* @param {?} $event
* @param {?} item
* @return {?}
*/
navigateTo($event, item) {
this.breadCrumbService.navigateTo($event, item);
}
}
BreadCrumbItemComponent.decorators = [
{ type: Component, args: [{
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'd-breadcrumb-item',
exportAs: 'dBreadcrumbItem',
template: "<ng-container *ngIf=\"showMenu; else breadcrumbContentTpl\">\r\n <span [ngClass]=\"{ 'devui-breadcrumb-item-active': isOpen }\" #origin>\r\n <ng-template [ngTemplateOutlet]=\"breadcrumbContentTpl\"></ng-template>\r\n <i\r\n class=\"devui-breadcrumb-down-icon\"\r\n dDropDown\r\n dDropDownToggle\r\n appendToBody\r\n [alignOrigin]=\"origin\"\r\n [closeScope]=\"'blank'\"\r\n (toggleEvent)=\"onToggle($event)\"\r\n >\r\n <svg\r\n width=\"5px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 5 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon\r\n id=\"Triangle-Copy-2\"\r\n fill=\"#959EB2\"\r\n transform=\"translate(2.500000, 7.500000) scale(1, -1) translate(-2.500000, -7.500000) \"\r\n points=\"2.5 6 5 9 0 9\"\r\n ></polygon>\r\n </g>\r\n </svg>\r\n <div dDropDownMenu>\r\n <ng-template\r\n [ngTemplateOutlet]=\"customMenuTemplate ? customMenuTemplate : dropDownMenuTpl\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: this\r\n }\"\r\n >\r\n </ng-template>\r\n </div>\r\n </i>\r\n </span>\r\n</ng-container>\r\n\r\n<ng-template #breadcrumbContentTpl>\r\n <span class=\"devui-breadcrumb-item\">\r\n <ng-content></ng-content>\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #dropDownMenuTpl>\r\n <div *ngIf=\"isSearch\" class=\"devui-search-container\">\r\n <d-search [size]=\"'sm'\" (searchFn)=\"searchEvent($event)\"></d-search>\r\n </div>\r\n <ul class=\"devui-breadcrumb-dropdown-menu\">\r\n <li *ngFor=\"let item of menuListDisplay\" title=\"{{ item.name }}\">\r\n <a\r\n *ngIf=\"!item.linkType || item.linkType === 'hrefLink'\"\r\n [href]=\"item.link\"\r\n rel=\"noopener\"\r\n [target]=\"item.target ? item.target : '_self'\"\r\n >{{ item.name }}</a\r\n >\r\n <a\r\n *ngIf=\"item.linkType === 'routerLink'\"\r\n rel=\"noopener\"\r\n [target]=\"item.target\"\r\n [href]=\"item.link\"\r\n (click)=\"navigateTo($event, item)\"\r\n >{{ item.name }}</a\r\n >\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<span class=\"devui-breadcrumb-separator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"breadCrumbComponent.separatorIcon ? breadCrumbComponent.separatorIcon : defaultSeparator\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: this\r\n }\"\r\n >\r\n </ng-template>\r\n</span>\r\n\r\n<ng-template #defaultSeparator>\r\n <span class=\"devui-breadcrumb-separator\">\r\n /\r\n </span>\r\n</ng-template>\r\n",
styles: [".devui-breadcrumb-font-style,.devui-breadcrumb-item,.devui-breadcrumb-item ::ng-deep a,.devui-breadcrumb-separator{font-size:12px;color:#8a8e99;line-height:20px}.devui-breadcrumb-item{cursor:auto}.devui-breadcrumb-item ::ng-deep a:hover{color:#252b3a;text-decoration:none}.devui-breadcrumb-item ::ng-deep a{cursor:pointer}.devui-breadcrumb-item ::ng-deep a:focus{text-decoration:none}.devui-breadcrumb-down-icon{vertical-align:middle;display:inline-block;cursor:pointer;width:16px;height:16px;margin-right:-5px;text-align:center;outline:0}.devui-breadcrumb-down-icon:hover svg g polygon{fill:#252b3a}.devui-breadcrumb-item-active{color:#252b3a}.devui-breadcrumb-item-active ::ng-deep a{color:#252b3a;text-decoration:none}.devui-breadcrumb-item-active svg g polygon{fill:#252b3a}.devui-breadcrumb-item-active span{color:#252b3a}.devui-breadcrumb-separator{margin:0 3px}.devui-breadcrumb-dropdown-menu{padding:10px 0;max-width:200px}.devui-breadcrumb-dropdown-menu li{padding:0 15px;font-size:12px;line-height:36px;width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer}.devui-breadcrumb-dropdown-menu li a{color:#252b3a;line-height:36px;width:170px;display:inline-block}.devui-breadcrumb-dropdown-menu li a:focus{text-decoration:none}.devui-breadcrumb-dropdown-menu li:hover{background:#f2f5fc}.devui-breadcrumb-dropdown-menu li:hover a{text-decoration:none}.devui-search-container{padding:10px 15px;max-width:200px}"]
}] }
];
/** @nocollapse */
BreadCrumbItemComponent.ctorParameters = () => [
{ type: BreadCrumbComponent },
{ type: BreadCrumbService }
];
BreadCrumbItemComponent.propDecorators = {
showMenu: [{ type: Input }],
customMenuTemplate: [{ type: Input }],
menuList: [{ type: Input }],
isSearch: [{ type: Input }],
toggleEvent: [{ type: Output }]
};
if (false) {
/** @type {?} */
BreadCrumbItemComponent.prototype.showMenu;
/** @type {?} */
BreadCrumbItemComponent.prototype.customMenuTemplate;
/** @type {?} */
BreadCrumbItemComponent.prototype.menuList;
/** @type {?} */
BreadCrumbItemComponent.prototype.isSearch;
/** @type {?} */
BreadCrumbItemComponent.prototype.toggleEvent;
/** @type {?} */
BreadCrumbItemComponent.prototype.menuListDisplay;
/** @type {?} */
BreadCrumbItemComponent.prototype.isOpen;
/** @type {?} */
BreadCrumbItemComponent.prototype.breadCrumbComponent;
/**
* @type {?}
* @private
*/
BreadCrumbItemComponent.prototype.breadCrumbService;
}
/**
* @fileoverview added by tsickle
* Generated from: breadcrumb.module.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class BreadcrumbModule {
}
BreadcrumbModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, RouterModule, DropDownModule, SearchModule],
exports: [BreadCrumbComponent, BreadCrumbItemComponent],
declarations: [BreadCrumbComponent, BreadCrumbItemComponent],
providers: [BreadCrumbService],
},] }
];
/**
* @fileoverview added by tsickle
* Generated from: public-api.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* Generated from: ng-devui-breadcrumb.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { BreadCrumbComponent, BreadCrumbItemComponent, BreadCrumbService, BreadcrumbModule };
//# sourceMappingURL=ng-devui-breadcrumb.js.map