UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

1,371 lines (1,362 loc) 66.1 kB
import { __read, __decorate, __metadata, __spread } from 'tslib'; import { Injectable, InjectionToken, SkipSelf, Optional, Inject, Directive, ChangeDetectorRef, Input, ContentChildren, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Host, Output, ViewChild, ElementRef, Renderer2, NgModule } from '@angular/core'; import { InputBoolean } from 'ng-zorro-antd/core/util'; import { Subject, BehaviorSubject, merge, combineLatest } from 'rxjs'; import { map, flatMap, filter, mapTo, auditTime, distinctUntilChanged, takeUntil, startWith, switchMap } from 'rxjs/operators'; import { NavigationEnd, RouterLink, RouterLinkWithHref, Router } from '@angular/router'; import { CdkOverlayOrigin, OverlayModule } from '@angular/cdk/overlay'; import { Platform, PlatformModule } from '@angular/cdk/platform'; import { NzNoAnimationDirective, NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation'; import { POSITION_MAP, getPlacementName } from 'ng-zorro-antd/core/overlay'; import { collapseMotion, zoomBigMotion, slideMotion } from 'ng-zorro-antd/core/animation'; import { CommonModule } from '@angular/common'; import { NzOutletModule } from 'ng-zorro-antd/core/outlet'; import { NzIconModule } from 'ng-zorro-antd/icon'; /** * @fileoverview added by tsickle * Generated from: menu.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var MenuService = /** @class */ (function () { function MenuService() { /** * all descendant menu click * */ this.descendantMenuItemClick$ = new Subject(); /** * child menu item click * */ this.childMenuItemClick$ = new Subject(); this.theme$ = new BehaviorSubject('light'); this.mode$ = new BehaviorSubject('vertical'); this.inlineIndent$ = new BehaviorSubject(24); this.isChildSubMenuOpen$ = new BehaviorSubject(false); } /** * @param {?} menu * @return {?} */ MenuService.prototype.onDescendantMenuItemClick = /** * @param {?} menu * @return {?} */ function (menu) { this.descendantMenuItemClick$.next(menu); }; /** * @param {?} menu * @return {?} */ MenuService.prototype.onChildMenuItemClick = /** * @param {?} menu * @return {?} */ function (menu) { this.childMenuItemClick$.next(menu); }; /** * @param {?} mode * @return {?} */ MenuService.prototype.setMode = /** * @param {?} mode * @return {?} */ function (mode) { this.mode$.next(mode); }; /** * @param {?} theme * @return {?} */ MenuService.prototype.setTheme = /** * @param {?} theme * @return {?} */ function (theme) { this.theme$.next(theme); }; /** * @param {?} indent * @return {?} */ MenuService.prototype.setInlineIndent = /** * @param {?} indent * @return {?} */ function (indent) { this.inlineIndent$.next(indent); }; MenuService.decorators = [ { type: Injectable } ]; return MenuService; }()); if (false) { /** * all descendant menu click * * @type {?} */ MenuService.prototype.descendantMenuItemClick$; /** * child menu item click * * @type {?} */ MenuService.prototype.childMenuItemClick$; /** @type {?} */ MenuService.prototype.theme$; /** @type {?} */ MenuService.prototype.mode$; /** @type {?} */ MenuService.prototype.inlineIndent$; /** @type {?} */ MenuService.prototype.isChildSubMenuOpen$; } /** * @fileoverview added by tsickle * Generated from: menu.token.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var NzIsMenuInsideDropDownToken = new InjectionToken('NzIsInDropDownMenuToken'); /** @type {?} */ var NzMenuServiceLocalToken = new InjectionToken('NzMenuServiceLocalToken'); /** * @fileoverview added by tsickle * Generated from: submenu.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var NzSubmenuService = /** @class */ (function () { function NzSubmenuService(nzHostSubmenuService, nzMenuService, isMenuInsideDropDown) { var _this = this; this.nzHostSubmenuService = nzHostSubmenuService; this.nzMenuService = nzMenuService; this.isMenuInsideDropDown = isMenuInsideDropDown; this.mode$ = this.nzMenuService.mode$.pipe(map((/** * @param {?} mode * @return {?} */ function (mode) { if (mode === 'inline') { return 'inline'; /** if inside another submenu, set the mode to vertical **/ } else if (mode === 'vertical' || _this.nzHostSubmenuService) { return 'vertical'; } else { return 'horizontal'; } }))); this.level = 1; this.isCurrentSubMenuOpen$ = new BehaviorSubject(false); this.isChildSubMenuOpen$ = new BehaviorSubject(false); /** * submenu title & overlay mouse enter status * */ this.isMouseEnterTitleOrOverlay$ = new Subject(); this.childMenuItemClick$ = new Subject(); if (this.nzHostSubmenuService) { this.level = this.nzHostSubmenuService.level + 1; } /** * close if menu item clicked * * @type {?} */ var isClosedByMenuItemClick = this.childMenuItemClick$.pipe(flatMap((/** * @return {?} */ function () { return _this.mode$; })), filter((/** * @param {?} mode * @return {?} */ function (mode) { return mode !== 'inline' || _this.isMenuInsideDropDown; })), mapTo(false)); /** @type {?} */ var isCurrentSubmenuOpen$ = merge(this.isMouseEnterTitleOrOverlay$, isClosedByMenuItemClick); /** * combine the child submenu status with current submenu status to calculate host submenu open * * @type {?} */ var isSubMenuOpenWithDebounce$ = combineLatest([this.isChildSubMenuOpen$, isCurrentSubmenuOpen$]).pipe(map((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = __read(_a, 2), isChildSubMenuOpen = _b[0], isCurrentSubmenuOpen = _b[1]; return isChildSubMenuOpen || isCurrentSubmenuOpen; })), auditTime(150), distinctUntilChanged()); isSubMenuOpenWithDebounce$.pipe(distinctUntilChanged()).subscribe((/** * @param {?} data * @return {?} */ function (data) { _this.setOpenStateWithoutDebounce(data); if (_this.nzHostSubmenuService) { /** set parent submenu's child submenu open status **/ _this.nzHostSubmenuService.isChildSubMenuOpen$.next(data); } else { _this.nzMenuService.isChildSubMenuOpen$.next(data); } })); } /** * menu item inside submenu clicked * @param menu */ /** * menu item inside submenu clicked * @param {?} menu * @return {?} */ NzSubmenuService.prototype.onChildMenuItemClick = /** * menu item inside submenu clicked * @param {?} menu * @return {?} */ function (menu) { this.childMenuItemClick$.next(menu); }; /** * @param {?} value * @return {?} */ NzSubmenuService.prototype.setOpenStateWithoutDebounce = /** * @param {?} value * @return {?} */ function (value) { this.isCurrentSubMenuOpen$.next(value); }; /** * @param {?} value * @return {?} */ NzSubmenuService.prototype.setMouseEnterTitleOrOverlayState = /** * @param {?} value * @return {?} */ function (value) { this.isMouseEnterTitleOrOverlay$.next(value); }; NzSubmenuService.decorators = [ { type: Injectable } ]; /** @nocollapse */ NzSubmenuService.ctorParameters = function () { return [ { type: NzSubmenuService, decorators: [{ type: SkipSelf }, { type: Optional }] }, { type: MenuService }, { type: Boolean, decorators: [{ type: Inject, args: [NzIsMenuInsideDropDownToken,] }] } ]; }; return NzSubmenuService; }()); if (false) { /** @type {?} */ NzSubmenuService.prototype.mode$; /** @type {?} */ NzSubmenuService.prototype.level; /** @type {?} */ NzSubmenuService.prototype.isCurrentSubMenuOpen$; /** * @type {?} * @private */ NzSubmenuService.prototype.isChildSubMenuOpen$; /** * submenu title & overlay mouse enter status * * @type {?} * @private */ NzSubmenuService.prototype.isMouseEnterTitleOrOverlay$; /** * @type {?} * @private */ NzSubmenuService.prototype.childMenuItemClick$; /** * @type {?} * @private */ NzSubmenuService.prototype.nzHostSubmenuService; /** @type {?} */ NzSubmenuService.prototype.nzMenuService; /** @type {?} */ NzSubmenuService.prototype.isMenuInsideDropDown; } /** * @fileoverview added by tsickle * Generated from: menu-item.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var NzMenuItemDirective = /** @class */ (function () { function NzMenuItemDirective(nzMenuService, cdr, nzSubmenuService, isMenuInsideDropDown, routerLink, routerLinkWithHref, router) { var _this = this; this.nzMenuService = nzMenuService; this.cdr = cdr; this.nzSubmenuService = nzSubmenuService; this.isMenuInsideDropDown = isMenuInsideDropDown; this.routerLink = routerLink; this.routerLinkWithHref = routerLinkWithHref; this.router = router; this.destroy$ = new Subject(); this.level = this.nzSubmenuService ? this.nzSubmenuService.level + 1 : 1; this.selected$ = new Subject(); this.inlinePaddingLeft = null; this.nzDisabled = false; this.nzSelected = false; this.nzMatchRouterExact = false; this.nzMatchRouter = false; if (router) { (/** @type {?} */ (this.router)).events.pipe(takeUntil(this.destroy$), filter((/** * @param {?} e * @return {?} */ function (e) { return e instanceof NavigationEnd; }))).subscribe((/** * @return {?} */ function () { _this.updateRouterActive(); })); } } /** clear all item selected status except this */ /** * clear all item selected status except this * @param {?} e * @return {?} */ NzMenuItemDirective.prototype.clickMenuItem = /** * clear all item selected status except this * @param {?} e * @return {?} */ function (e) { if (this.nzDisabled) { e.preventDefault(); e.stopPropagation(); } else { this.nzMenuService.onDescendantMenuItemClick(this); if (this.nzSubmenuService) { /** menu item inside the submenu **/ this.nzSubmenuService.onChildMenuItemClick(this); } else { /** menu item inside the root menu **/ this.nzMenuService.onChildMenuItemClick(this); } } }; /** * @param {?} value * @return {?} */ NzMenuItemDirective.prototype.setSelectedState = /** * @param {?} value * @return {?} */ function (value) { this.nzSelected = value; this.selected$.next(value); }; /** * @private * @return {?} */ NzMenuItemDirective.prototype.updateRouterActive = /** * @private * @return {?} */ function () { var _this = this; if (!this.listOfRouterLink || !this.listOfRouterLinkWithHref || !this.router || !this.router.navigated || !this.nzMatchRouter) { return; } Promise.resolve().then((/** * @return {?} */ function () { /** @type {?} */ var hasActiveLinks = _this.hasActiveLinks(); if (_this.nzSelected !== hasActiveLinks) { _this.nzSelected = hasActiveLinks; _this.setSelectedState(_this.nzSelected); _this.cdr.markForCheck(); } })); }; /** * @private * @return {?} */ NzMenuItemDirective.prototype.hasActiveLinks = /** * @private * @return {?} */ function () { /** @type {?} */ var isActiveCheckFn = this.isLinkActive((/** @type {?} */ (this.router))); return ((this.routerLink && isActiveCheckFn(this.routerLink)) || (this.routerLinkWithHref && isActiveCheckFn(this.routerLinkWithHref)) || this.listOfRouterLink.some(isActiveCheckFn) || this.listOfRouterLinkWithHref.some(isActiveCheckFn)); }; /** * @private * @param {?} router * @return {?} */ NzMenuItemDirective.prototype.isLinkActive = /** * @private * @param {?} router * @return {?} */ function (router) { var _this = this; return (/** * @param {?} link * @return {?} */ function (link) { return router.isActive(link.urlTree, _this.nzMatchRouterExact); }); }; /** * @return {?} */ NzMenuItemDirective.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; /** store origin padding in padding */ combineLatest([this.nzMenuService.mode$, this.nzMenuService.inlineIndent$]) .pipe(takeUntil(this.destroy$)) .subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = __read(_a, 2), mode = _b[0], inlineIndent = _b[1]; _this.inlinePaddingLeft = mode === 'inline' ? _this.level * inlineIndent : null; })); }; /** * @return {?} */ NzMenuItemDirective.prototype.ngAfterContentInit = /** * @return {?} */ function () { var _this = this; this.listOfRouterLink.changes.pipe(takeUntil(this.destroy$)).subscribe((/** * @return {?} */ function () { return _this.updateRouterActive(); })); this.listOfRouterLinkWithHref.changes.pipe(takeUntil(this.destroy$)).subscribe((/** * @return {?} */ function () { return _this.updateRouterActive(); })); this.updateRouterActive(); }; /** * @param {?} changes * @return {?} */ NzMenuItemDirective.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes.nzSelected) { this.setSelectedState(this.nzSelected); } }; /** * @return {?} */ NzMenuItemDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { this.destroy$.next(); this.destroy$.complete(); }; NzMenuItemDirective.decorators = [ { type: Directive, args: [{ selector: '[nz-menu-item]', exportAs: 'nzMenuItem', host: { '[class.ant-dropdown-menu-item]': "isMenuInsideDropDown", '[class.ant-dropdown-menu-item-selected]': "isMenuInsideDropDown && nzSelected", '[class.ant-dropdown-menu-item-disabled]': "isMenuInsideDropDown && nzDisabled", '[class.ant-menu-item]': "!isMenuInsideDropDown", '[class.ant-menu-item-selected]': "!isMenuInsideDropDown && nzSelected", '[class.ant-menu-item-disabled]': "!isMenuInsideDropDown && nzDisabled", '[style.paddingLeft.px]': 'nzPaddingLeft || inlinePaddingLeft', '(click)': 'clickMenuItem($event)' } },] } ]; /** @nocollapse */ NzMenuItemDirective.ctorParameters = function () { return [ { type: MenuService }, { type: ChangeDetectorRef }, { type: NzSubmenuService, decorators: [{ type: Optional }] }, { type: Boolean, decorators: [{ type: Inject, args: [NzIsMenuInsideDropDownToken,] }] }, { type: RouterLink, decorators: [{ type: Optional }] }, { type: RouterLinkWithHref, decorators: [{ type: Optional }] }, { type: Router, decorators: [{ type: Optional }] } ]; }; NzMenuItemDirective.propDecorators = { nzPaddingLeft: [{ type: Input }], nzDisabled: [{ type: Input }], nzSelected: [{ type: Input }], nzMatchRouterExact: [{ type: Input }], nzMatchRouter: [{ type: Input }], listOfRouterLink: [{ type: ContentChildren, args: [RouterLink, { descendants: true },] }], listOfRouterLinkWithHref: [{ type: ContentChildren, args: [RouterLinkWithHref, { descendants: true },] }] }; __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzMenuItemDirective.prototype, "nzDisabled", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzMenuItemDirective.prototype, "nzSelected", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzMenuItemDirective.prototype, "nzMatchRouterExact", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzMenuItemDirective.prototype, "nzMatchRouter", void 0); return NzMenuItemDirective; }()); if (false) { /** @type {?} */ NzMenuItemDirective.ngAcceptInputType_nzDisabled; /** @type {?} */ NzMenuItemDirective.ngAcceptInputType_nzSelected; /** @type {?} */ NzMenuItemDirective.ngAcceptInputType_nzMatchRouterExact; /** @type {?} */ NzMenuItemDirective.ngAcceptInputType_nzMatchRouter; /** * @type {?} * @private */ NzMenuItemDirective.prototype.destroy$; /** @type {?} */ NzMenuItemDirective.prototype.level; /** @type {?} */ NzMenuItemDirective.prototype.selected$; /** @type {?} */ NzMenuItemDirective.prototype.inlinePaddingLeft; /** @type {?} */ NzMenuItemDirective.prototype.nzPaddingLeft; /** @type {?} */ NzMenuItemDirective.prototype.nzDisabled; /** @type {?} */ NzMenuItemDirective.prototype.nzSelected; /** @type {?} */ NzMenuItemDirective.prototype.nzMatchRouterExact; /** @type {?} */ NzMenuItemDirective.prototype.nzMatchRouter; /** @type {?} */ NzMenuItemDirective.prototype.listOfRouterLink; /** @type {?} */ NzMenuItemDirective.prototype.listOfRouterLinkWithHref; /** * @type {?} * @private */ NzMenuItemDirective.prototype.nzMenuService; /** * @type {?} * @private */ NzMenuItemDirective.prototype.cdr; /** * @type {?} * @private */ NzMenuItemDirective.prototype.nzSubmenuService; /** @type {?} */ NzMenuItemDirective.prototype.isMenuInsideDropDown; /** * @type {?} * @private */ NzMenuItemDirective.prototype.routerLink; /** * @type {?} * @private */ NzMenuItemDirective.prototype.routerLinkWithHref; /** * @type {?} * @private */ NzMenuItemDirective.prototype.router; } /** * @fileoverview added by tsickle * Generated from: submenu.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var listOfVerticalPositions = [ POSITION_MAP.rightTop, POSITION_MAP.right, POSITION_MAP.rightBottom, POSITION_MAP.leftTop, POSITION_MAP.left, POSITION_MAP.leftBottom ]; /** @type {?} */ var listOfHorizontalPositions = [POSITION_MAP.bottomLeft]; var NzSubMenuComponent = /** @class */ (function () { function NzSubMenuComponent(nzMenuService, cdr, nzSubmenuService, platform, isMenuInsideDropDown, noAnimation) { this.nzMenuService = nzMenuService; this.cdr = cdr; this.nzSubmenuService = nzSubmenuService; this.platform = platform; this.isMenuInsideDropDown = isMenuInsideDropDown; this.noAnimation = noAnimation; this.nzMenuClassName = null; this.nzPaddingLeft = null; this.nzTitle = null; this.nzIcon = null; this.nzOpen = false; this.nzDisabled = false; this.nzOpenChange = new EventEmitter(); this.cdkOverlayOrigin = null; this.listOfNzSubMenuComponent = null; this.listOfNzMenuItemDirective = null; this.level = this.nzSubmenuService.level; this.destroy$ = new Subject(); this.position = 'right'; this.triggerWidth = null; this.theme = 'light'; this.mode = 'vertical'; this.inlinePaddingLeft = null; this.overlayPositions = listOfVerticalPositions; this.isSelected = false; this.isActive = false; } /** set the submenu host open status directly **/ /** * set the submenu host open status directly * * @param {?} open * @return {?} */ NzSubMenuComponent.prototype.setOpenStateWithoutDebounce = /** * set the submenu host open status directly * * @param {?} open * @return {?} */ function (open) { this.nzSubmenuService.setOpenStateWithoutDebounce(open); }; /** * @return {?} */ NzSubMenuComponent.prototype.toggleSubMenu = /** * @return {?} */ function () { this.setOpenStateWithoutDebounce(!this.nzOpen); }; /** * @param {?} value * @return {?} */ NzSubMenuComponent.prototype.setMouseEnterState = /** * @param {?} value * @return {?} */ function (value) { this.isActive = value; if (this.mode !== 'inline') { this.nzSubmenuService.setMouseEnterTitleOrOverlayState(value); } }; /** * @return {?} */ NzSubMenuComponent.prototype.setTriggerWidth = /** * @return {?} */ function () { if (this.mode === 'horizontal' && this.platform.isBrowser && this.cdkOverlayOrigin) { /** TODO: fast dom **/ this.triggerWidth = (/** @type {?} */ (this.cdkOverlayOrigin)).nativeElement.getBoundingClientRect().width; } }; /** * @param {?} position * @return {?} */ NzSubMenuComponent.prototype.onPositionChange = /** * @param {?} position * @return {?} */ function (position) { /** @type {?} */ var placement = getPlacementName(position); if (placement === 'rightTop' || placement === 'rightBottom' || placement === 'right') { this.position = 'right'; } else if (placement === 'leftTop' || placement === 'leftBottom' || placement === 'left') { this.position = 'left'; } this.cdr.markForCheck(); }; /** * @return {?} */ NzSubMenuComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; /** submenu theme update **/ this.nzMenuService.theme$.pipe(takeUntil(this.destroy$)).subscribe((/** * @param {?} theme * @return {?} */ function (theme) { _this.theme = theme; _this.cdr.markForCheck(); })); /** submenu mode update **/ this.nzSubmenuService.mode$.pipe(takeUntil(this.destroy$)).subscribe((/** * @param {?} mode * @return {?} */ function (mode) { _this.mode = mode; if (mode === 'horizontal') { _this.overlayPositions = listOfHorizontalPositions; } else if (mode === 'vertical') { _this.overlayPositions = listOfVerticalPositions; } _this.cdr.markForCheck(); })); /** inlineIndent update **/ combineLatest([this.nzSubmenuService.mode$, this.nzMenuService.inlineIndent$]) .pipe(takeUntil(this.destroy$)) .subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = __read(_a, 2), mode = _b[0], inlineIndent = _b[1]; _this.inlinePaddingLeft = mode === 'inline' ? _this.level * inlineIndent : null; _this.cdr.markForCheck(); })); /** current submenu open status **/ this.nzSubmenuService.isCurrentSubMenuOpen$.pipe(takeUntil(this.destroy$)).subscribe((/** * @param {?} open * @return {?} */ function (open) { _this.isActive = open; if (open !== _this.nzOpen) { _this.setTriggerWidth(); _this.nzOpen = open; _this.nzOpenChange.emit(_this.nzOpen); _this.cdr.markForCheck(); } })); }; /** * @return {?} */ NzSubMenuComponent.prototype.ngAfterContentInit = /** * @return {?} */ function () { var _this = this; this.setTriggerWidth(); /** @type {?} */ var listOfNzMenuItemDirective = this.listOfNzMenuItemDirective; /** @type {?} */ var changes = (/** @type {?} */ (listOfNzMenuItemDirective)).changes; /** @type {?} */ var mergedObservable = merge.apply(void 0, __spread([changes], (/** @type {?} */ (listOfNzMenuItemDirective)).map((/** * @param {?} menu * @return {?} */ function (menu) { return menu.selected$; })))); changes .pipe(startWith(listOfNzMenuItemDirective), switchMap((/** * @return {?} */ function () { return mergedObservable; })), startWith(true), map((/** * @return {?} */ function () { return (/** @type {?} */ (listOfNzMenuItemDirective)).some((/** * @param {?} e * @return {?} */ function (e) { return e.nzSelected; })); })), takeUntil(this.destroy$)) .subscribe((/** * @param {?} selected * @return {?} */ function (selected) { _this.isSelected = selected; _this.cdr.markForCheck(); })); }; /** * @param {?} changes * @return {?} */ NzSubMenuComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { var nzOpen = changes.nzOpen; if (nzOpen) { this.nzSubmenuService.setOpenStateWithoutDebounce(this.nzOpen); this.setTriggerWidth(); } }; /** * @return {?} */ NzSubMenuComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this.destroy$.next(); this.destroy$.complete(); }; NzSubMenuComponent.decorators = [ { type: Component, args: [{ selector: '[nz-submenu]', exportAs: 'nzSubmenu', providers: [NzSubmenuService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, template: "\n <div\n nz-submenu-title\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n [nzIcon]=\"nzIcon\"\n [nzTitle]=\"nzTitle\"\n [mode]=\"mode\"\n [nzDisabled]=\"nzDisabled\"\n [isMenuInsideDropDown]=\"isMenuInsideDropDown\"\n [paddingLeft]=\"nzPaddingLeft || inlinePaddingLeft\"\n (subMenuMouseState)=\"setMouseEnterState($event)\"\n (toggleSubMenu)=\"toggleSubMenu()\"\n >\n <ng-content select=\"[title]\" *ngIf=\"!nzTitle\"></ng-content>\n </div>\n <div\n *ngIf=\"mode === 'inline'; else nonInlineTemplate\"\n nz-submenu-inline-child\n [mode]=\"mode\"\n [nzOpen]=\"nzOpen\"\n [@.disabled]=\"noAnimation?.nzNoAnimation\"\n [nzNoAnimation]=\"noAnimation?.nzNoAnimation\"\n [menuClass]=\"nzMenuClassName\"\n [templateOutlet]=\"subMenuTemplate\"\n ></div>\n <ng-template #nonInlineTemplate>\n <ng-template\n cdkConnectedOverlay\n (positionChange)=\"onPositionChange($event)\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayWidth]=\"triggerWidth\"\n [cdkConnectedOverlayOpen]=\"nzOpen\"\n >\n <div\n nz-submenu-none-inline-child\n [theme]=\"theme\"\n [mode]=\"mode\"\n [nzOpen]=\"nzOpen\"\n [position]=\"position\"\n [nzDisabled]=\"nzDisabled\"\n [isMenuInsideDropDown]=\"isMenuInsideDropDown\"\n [templateOutlet]=\"subMenuTemplate\"\n [menuClass]=\"nzMenuClassName\"\n [@.disabled]=\"noAnimation?.nzNoAnimation\"\n [nzNoAnimation]=\"noAnimation?.nzNoAnimation\"\n (subMenuMouseState)=\"setMouseEnterState($event)\"\n ></div>\n </ng-template>\n </ng-template>\n\n <ng-template #subMenuTemplate>\n <ng-content></ng-content>\n </ng-template>\n ", host: { '[class.ant-dropdown-menu-submenu]': "isMenuInsideDropDown", '[class.ant-dropdown-menu-submenu-disabled]': "isMenuInsideDropDown && nzDisabled", '[class.ant-dropdown-menu-submenu-open]': "isMenuInsideDropDown && nzOpen", '[class.ant-dropdown-menu-submenu-selected]': "isMenuInsideDropDown && isSelected", '[class.ant-dropdown-menu-submenu-vertical]': "isMenuInsideDropDown && mode === 'vertical'", '[class.ant-dropdown-menu-submenu-horizontal]': "isMenuInsideDropDown && mode === 'horizontal'", '[class.ant-dropdown-menu-submenu-inline]': "isMenuInsideDropDown && mode === 'inline'", '[class.ant-dropdown-menu-submenu-active]': "isMenuInsideDropDown && isActive", '[class.ant-menu-submenu]': "!isMenuInsideDropDown", '[class.ant-menu-submenu-disabled]': "!isMenuInsideDropDown && nzDisabled", '[class.ant-menu-submenu-open]': "!isMenuInsideDropDown && nzOpen", '[class.ant-menu-submenu-selected]': "!isMenuInsideDropDown && isSelected", '[class.ant-menu-submenu-vertical]': "!isMenuInsideDropDown && mode === 'vertical'", '[class.ant-menu-submenu-horizontal]': "!isMenuInsideDropDown && mode === 'horizontal'", '[class.ant-menu-submenu-inline]': "!isMenuInsideDropDown && mode === 'inline'", '[class.ant-menu-submenu-active]': "!isMenuInsideDropDown && isActive" } }] } ]; /** @nocollapse */ NzSubMenuComponent.ctorParameters = function () { return [ { type: MenuService }, { type: ChangeDetectorRef }, { type: NzSubmenuService }, { type: Platform }, { type: Boolean, decorators: [{ type: Inject, args: [NzIsMenuInsideDropDownToken,] }] }, { type: NzNoAnimationDirective, decorators: [{ type: Host }, { type: Optional }] } ]; }; NzSubMenuComponent.propDecorators = { nzMenuClassName: [{ type: Input }], nzPaddingLeft: [{ type: Input }], nzTitle: [{ type: Input }], nzIcon: [{ type: Input }], nzOpen: [{ type: Input }], nzDisabled: [{ type: Input }], nzOpenChange: [{ type: Output }], cdkOverlayOrigin: [{ type: ViewChild, args: [CdkOverlayOrigin, { static: true, read: ElementRef },] }], listOfNzSubMenuComponent: [{ type: ContentChildren, args: [NzSubMenuComponent, { descendants: true },] }], listOfNzMenuItemDirective: [{ type: ContentChildren, args: [NzMenuItemDirective, { descendants: true },] }] }; __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzSubMenuComponent.prototype, "nzOpen", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzSubMenuComponent.prototype, "nzDisabled", void 0); return NzSubMenuComponent; }()); if (false) { /** @type {?} */ NzSubMenuComponent.ngAcceptInputType_nzOpen; /** @type {?} */ NzSubMenuComponent.ngAcceptInputType_nzDisabled; /** @type {?} */ NzSubMenuComponent.prototype.nzMenuClassName; /** @type {?} */ NzSubMenuComponent.prototype.nzPaddingLeft; /** @type {?} */ NzSubMenuComponent.prototype.nzTitle; /** @type {?} */ NzSubMenuComponent.prototype.nzIcon; /** @type {?} */ NzSubMenuComponent.prototype.nzOpen; /** @type {?} */ NzSubMenuComponent.prototype.nzDisabled; /** @type {?} */ NzSubMenuComponent.prototype.nzOpenChange; /** @type {?} */ NzSubMenuComponent.prototype.cdkOverlayOrigin; /** @type {?} */ NzSubMenuComponent.prototype.listOfNzSubMenuComponent; /** @type {?} */ NzSubMenuComponent.prototype.listOfNzMenuItemDirective; /** * @type {?} * @private */ NzSubMenuComponent.prototype.level; /** * @type {?} * @private */ NzSubMenuComponent.prototype.destroy$; /** @type {?} */ NzSubMenuComponent.prototype.position; /** @type {?} */ NzSubMenuComponent.prototype.triggerWidth; /** @type {?} */ NzSubMenuComponent.prototype.theme; /** @type {?} */ NzSubMenuComponent.prototype.mode; /** @type {?} */ NzSubMenuComponent.prototype.inlinePaddingLeft; /** @type {?} */ NzSubMenuComponent.prototype.overlayPositions; /** @type {?} */ NzSubMenuComponent.prototype.isSelected; /** @type {?} */ NzSubMenuComponent.prototype.isActive; /** @type {?} */ NzSubMenuComponent.prototype.nzMenuService; /** * @type {?} * @private */ NzSubMenuComponent.prototype.cdr; /** @type {?} */ NzSubMenuComponent.prototype.nzSubmenuService; /** * @type {?} * @private */ NzSubMenuComponent.prototype.platform; /** @type {?} */ NzSubMenuComponent.prototype.isMenuInsideDropDown; /** @type {?} */ NzSubMenuComponent.prototype.noAnimation; } /** * @fileoverview added by tsickle * Generated from: menu.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @param {?} serviceInsideDropDown * @param {?} serviceOutsideDropDown * @return {?} */ function MenuServiceFactory(serviceInsideDropDown, serviceOutsideDropDown) { return serviceInsideDropDown ? serviceInsideDropDown : serviceOutsideDropDown; } /** * @param {?} isMenuInsideDropDownToken * @return {?} */ function MenuDropDownTokenFactory(isMenuInsideDropDownToken) { return isMenuInsideDropDownToken ? isMenuInsideDropDownToken : false; } var NzMenuDirective = /** @class */ (function () { function NzMenuDirective(nzMenuService, isMenuInsideDropDown, cdr) { this.nzMenuService = nzMenuService; this.isMenuInsideDropDown = isMenuInsideDropDown; this.cdr = cdr; this.nzInlineIndent = 24; this.nzTheme = 'light'; this.nzMode = 'vertical'; this.nzInlineCollapsed = false; this.nzSelectable = !this.isMenuInsideDropDown; this.nzClick = new EventEmitter(); this.actualMode = 'vertical'; this.inlineCollapsed$ = new BehaviorSubject(this.nzInlineCollapsed); this.mode$ = new BehaviorSubject(this.nzMode); this.destroy$ = new Subject(); this.listOfOpenedNzSubMenuComponent = []; } /** * @param {?} inlineCollapsed * @return {?} */ NzMenuDirective.prototype.setInlineCollapsed = /** * @param {?} inlineCollapsed * @return {?} */ function (inlineCollapsed) { this.nzInlineCollapsed = inlineCollapsed; this.inlineCollapsed$.next(inlineCollapsed); }; /** * @return {?} */ NzMenuDirective.prototype.updateInlineCollapse = /** * @return {?} */ function () { if (this.listOfNzMenuItemDirective) { if (this.nzInlineCollapsed) { this.listOfOpenedNzSubMenuComponent = this.listOfNzSubMenuComponent.filter((/** * @param {?} submenu * @return {?} */ function (submenu) { return submenu.nzOpen; })); this.listOfNzSubMenuComponent.forEach((/** * @param {?} submenu * @return {?} */ function (submenu) { return submenu.setOpenStateWithoutDebounce(false); })); } else { this.listOfOpenedNzSubMenuComponent.forEach((/** * @param {?} submenu * @return {?} */ function (submenu) { return submenu.setOpenStateWithoutDebounce(true); })); this.listOfOpenedNzSubMenuComponent = []; } } }; /** * @return {?} */ NzMenuDirective.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; combineLatest([this.inlineCollapsed$, this.mode$]) .pipe(takeUntil(this.destroy$)) .subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = __read(_a, 2), inlineCollapsed = _b[0], mode = _b[1]; _this.actualMode = inlineCollapsed ? 'vertical' : mode; _this.nzMenuService.setMode(_this.actualMode); _this.cdr.markForCheck(); })); this.nzMenuService.descendantMenuItemClick$.pipe(takeUntil(this.destroy$)).subscribe((/** * @param {?} menu * @return {?} */ function (menu) { _this.nzClick.emit(menu); if (_this.nzSelectable && !menu.nzMatchRouter) { _this.listOfNzMenuItemDirective.forEach((/** * @param {?} item * @return {?} */ function (item) { return item.setSelectedState(item === menu); })); } })); }; /** * @return {?} */ NzMenuDirective.prototype.ngAfterContentInit = /** * @return {?} */ function () { var _this = this; this.inlineCollapsed$.pipe(takeUntil(this.destroy$)).subscribe((/** * @return {?} */ function () { _this.updateInlineCollapse(); _this.cdr.markForCheck(); })); }; /** * @param {?} changes * @return {?} */ NzMenuDirective.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { var nzInlineCollapsed = changes.nzInlineCollapsed, nzInlineIndent = changes.nzInlineIndent, nzTheme = changes.nzTheme, nzMode = changes.nzMode; if (nzInlineCollapsed) { this.inlineCollapsed$.next(this.nzInlineCollapsed); } if (nzInlineIndent) { this.nzMenuService.setInlineIndent(this.nzInlineIndent); } if (nzTheme) { this.nzMenuService.setTheme(this.nzTheme); } if (nzMode) { this.mode$.next(this.nzMode); if (!changes.nzMode.isFirstChange() && this.listOfNzSubMenuComponent) { this.listOfNzSubMenuComponent.forEach((/** * @param {?} submenu * @return {?} */ function (submenu) { return submenu.setOpenStateWithoutDebounce(false); })); } } }; /** * @return {?} */ NzMenuDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { this.destroy$.next(); this.destroy$.complete(); }; NzMenuDirective.decorators = [ { type: Directive, args: [{ selector: '[nz-menu]', exportAs: 'nzMenu', providers: [ { provide: NzMenuServiceLocalToken, useClass: MenuService }, /** use the top level service **/ { provide: MenuService, useFactory: MenuServiceFactory, deps: [[new SkipSelf(), new Optional(), MenuService], NzMenuServiceLocalToken] }, /** check if menu inside dropdown-menu component **/ { provide: NzIsMenuInsideDropDownToken, useFactory: MenuDropDownTokenFactory, deps: [[new SkipSelf(), new Optional(), NzIsMenuInsideDropDownToken]] } ], host: { '[class.ant-dropdown-menu]': "isMenuInsideDropDown", '[class.ant-dropdown-menu-root]': "isMenuInsideDropDown", '[class.ant-dropdown-menu-light]': "isMenuInsideDropDown && nzTheme === 'light'", '[class.ant-dropdown-menu-dark]': "isMenuInsideDropDown && nzTheme === 'dark'", '[class.ant-dropdown-menu-vertical]': "isMenuInsideDropDown && actualMode === 'vertical'", '[class.ant-dropdown-menu-horizontal]': "isMenuInsideDropDown && actualMode === 'horizontal'", '[class.ant-dropdown-menu-inline]': "isMenuInsideDropDown && actualMode === 'inline'", '[class.ant-dropdown-menu-inline-collapsed]': "isMenuInsideDropDown && nzInlineCollapsed", '[class.ant-menu]': "!isMenuInsideDropDown", '[class.ant-menu-root]': "!isMenuInsideDropDown", '[class.ant-menu-light]': "!isMenuInsideDropDown && nzTheme === 'light'", '[class.ant-menu-dark]': "!isMenuInsideDropDown && nzTheme === 'dark'", '[class.ant-menu-vertical]': "!isMenuInsideDropDown && actualMode === 'vertical'", '[class.ant-menu-horizontal]': "!isMenuInsideDropDown && actualMode === 'horizontal'", '[class.ant-menu-inline]': "!isMenuInsideDropDown && actualMode === 'inline'", '[class.ant-menu-inline-collapsed]': "!isMenuInsideDropDown && nzInlineCollapsed" } },] } ]; /** @nocollapse */ NzMenuDirective.ctorParameters = function () { return [ { type: MenuService }, { type: Boolean, decorators: [{ type: Inject, args: [NzIsMenuInsideDropDownToken,] }] }, { type: ChangeDetectorRef } ]; }; NzMenuDirective.propDecorators = { listOfNzMenuItemDirective: [{ type: ContentChildren, args: [NzMenuItemDirective, { descendants: true },] }], listOfNzSubMenuComponent: [{ type: ContentChildren, args: [NzSubMenuComponent, { descendants: true },] }], nzInlineIndent: [{ type: Input }], nzTheme: [{ type: Input }], nzMode: [{ type: Input }], nzInlineCollapsed: [{ type: Input }], nzSelectable: [{ type: Input }], nzClick: [{ type: Output }] }; __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzMenuDirective.prototype, "nzInlineCollapsed", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzMenuDirective.prototype, "nzSelectable", void 0); return NzMenuDirective; }()); if (false) { /** @type {?} */ NzMenuDirective.ngAcceptInputType_nzInlineCollapsed; /** @type {?} */ NzMenuDirective.ngAcceptInputType_nzSelectable; /** @type {?} */ NzMenuDirective.prototype.listOfNzMenuItemDirective; /** @type {?} */ NzMenuDirective.prototype.listOfNzSubMenuComponent; /** @type {?} */ NzMenuDirective.prototype.nzInlineIndent; /** @type {?} */ NzMenuDirective.prototype.nzTheme; /** @type {?} */ NzMenuDirective.prototype.nzMode; /** @type {?} */ NzMenuDirective.prototype.nzInlineCollapsed; /** @type {?} */ NzMenuDirective.prototype.nzSelectable; /** @type {?} */ NzMenuDirective.prototype.nzClick; /** @type {?} */ NzMenuDirective.prototype.actualMode; /** * @type {?} * @private */ NzMenuDirective.prototype.inlineCollapsed$; /** * @type {?} * @private */ NzMenuDirective.prototype.mode$; /** * @type {?} * @private */ NzMenuDirective.prototype.destroy$; /** * @type {?} * @private */ NzMenuDirective.prototype.listOfOpenedNzSubMenuComponent; /** * @type {?} * @private */ NzMenuDirective.prototype.nzMenuService; /** @type {?} */ NzMenuDirective.prototype.isMenuInsideDropDown; /** * @type {?} * @private */ NzMenuDirective.prototype.cdr; } /** * @fileoverview added by tsickle * Generated from: menu-group.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @param {?} isMenuInsideDropDownToken * @return {?} */ function MenuGroupFactory(isMenuInsideDropDownToken) { return isMenuInsideDropDownToken ? isMenuInsideDropDownToken : false; } var NzMenuGroupComponent = /** @class */ (function () { function NzMenuGroupComponent(elementRef, renderer, isMenuInsideDropDown) { this.elementRef = elementRef; this.renderer = renderer; this.isMenuInsideDropDown = isMenuInsideDropDown; /** @type {?} */ var className = this.isMenuInsideDropDown ? 'ant-dropdown-menu-item-group' : 'ant-menu-item-group'; this.renderer.addClass(elementRef.nativeElement, className); } /** * @return {?} */ NzMenuGroupComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { /** @type {?} */ var ulElement = this.renderer.nextSibling(this.titleElement.nativeElement); if (ulElement) { /** * add classname to ul * * @type {?} */ var className = this.isMenuInsideDropDown ? 'ant-dropdown-menu-item-group-list' : 'ant-menu-item-group-list'; this.renderer.addClass(ulElement, className); } }; NzMenuGroupComponent.decorators = [ { type: Component, args: [{ selector: '[nz-menu-group]', exportAs: 'nzMenuGroup', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ /** check if menu inside dropdown-menu component **/ { provide: NzIsMenuInsideDropDownToken, useFactory: MenuGroupFactory, deps: [[new SkipSelf(), new Optional(), NzIsMenuInsideDropDownToken]] } ], encapsulation: ViewEncapsulation.None, template: "\n <div\n [class.ant-menu-item-group-title]=\"!isMenuInsideDropDown\"\n [class.ant-dropdown-menu-item-group-title]=\"isMenuInsideDropDown\"\n #titleElement\n >\n <ng-container *nzStringTemplateOutlet=\"nzTitle\">{{ nzTitle }}</ng-container>\n <ng-content select=\"[title]\" *ngIf=\"!nzTitle\"></ng-content>\n </div>\n <ng-content></ng-content>\n ", preserveWhitespaces: false }] } ]; /** @nocollapse */ NzMenuGroupComponent.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: Boolean, decorators: [{ type: Inject, args: [NzIsMenuInsideDropDownToken,] }] } ]; }; NzMenuGroupComponent.propDecorators = { nzTitle: [{ type: Input }], titleElement: [{ type: ViewChild, args: ['titleElement',] }] }; return NzMenuGroupComponent; }()); if (false) { /** @type {?} */ NzMenuGroupComponent.prototype.nzTitle; /** @type {?} */ NzMenuGroupComponent.prototype.titleElement; /** @type {?} */ NzMenuGroupComponent.prototype.elementRef; /** * @type {?} * @private */ NzMenuGroupComponent.prototype.renderer; /** @type {?} */ NzMenuGroupComponent.prototype.isMenuInsideDropDown; } /** * @fileoverview added by tsickle * Generated from: menu-divider.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var NzMenuDividerDirective = /** @class */ (function () { function NzMenuDividerDirective(elementRef, renderer) { this.elementRef = elementRef; this.renderer = renderer; this.renderer.addClass(elementRef.nativeElement, 'ant-dropdown-menu-item-divider'); } NzMenuDividerDirective.decorators = [ { type: Directive, args: [{ selector: '[nz-menu-divider]', exportAs: 'nzMenuDivider'