UNPKG

@cause-911/material

Version:

Run `npm install @cause-911/material --save` to add this library to your project

209 lines 16.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ElementRef, HostListener, Input } from '@angular/core'; var MenuSidebarComponent = /** @class */ (function () { function MenuSidebarComponent(element) { var _this = this; this.menuItems = []; this.version = ''; this.keepMenuExpanded = false; this.hostElement = (/** @type {?} */ (element.nativeElement)); this.hostElement.addEventListener('mouseover', (/** * @param {?} e * @return {?} */ function (e) { return _this.onMouseOver(e); })); this.hostElement.addEventListener('mouseout', (/** * @param {?} e * @return {?} */ function (e) { return _this.onMouseOut(e); })); this.setDisplayMenu(); } /** * @return {?} */ MenuSidebarComponent.prototype.ngOnInit = /** * @return {?} */ function () { }; /** * @param {?} e * @return {?} */ MenuSidebarComponent.prototype.onResize = /** * @param {?} e * @return {?} */ function (e) { this.setDisplayMenu(); }; /** * @return {?} */ MenuSidebarComponent.prototype.onMenuItemClick = /** * @return {?} */ function () { if (window.innerWidth < 1000) { this.hideOnMobile(); } }; /** * @return {?} */ MenuSidebarComponent.prototype.hideOnMobile = /** * @return {?} */ function () { this.hostElement.classList.remove('mobile'); this.hostElement.classList.add('hidden'); }; /** * @return {?} */ MenuSidebarComponent.prototype.showOnMobile = /** * @return {?} */ function () { this.hostElement.classList.remove('hidden'); this.hostElement.classList.add('mobile'); }; /** * @return {?} */ MenuSidebarComponent.prototype.onToggleCollapse = /** * @return {?} */ function () { if (this.keepMenuExpanded) { this.onCollpseMenu(); this.hostElement.classList.remove('keepExpanded'); } else { this.onExpandedMenu(); this.hostElement.classList.add('keepExpanded'); } this.keepMenuExpanded = !this.keepMenuExpanded; localStorage.setItem('cause-menu-status', this.keepMenuExpanded ? 'expanded' : 'collapsed'); }; /** * @private * @return {?} */ MenuSidebarComponent.prototype.setDisplayMenu = /** * @private * @return {?} */ function () { this.hostElement.className = ''; if (window.innerWidth < 1000) { this.hostElement.classList.add('hidden'); } else { if (localStorage.getItem('cause-menu-status') === 'expanded') { this.keepMenuExpanded = true; this.hostElement.classList.add('keepExpanded'); } this.hostElement.classList.add(this.keepMenuExpanded ? 'expanded' : 'collapsed'); } }; /** * @private * @param {?} e * @return {?} */ MenuSidebarComponent.prototype.onMouseOver = /** * @private * @param {?} e * @return {?} */ function (e) { if (!this.keepMenuExpanded) { this.onExpandedMenu(); } e.stopPropagation(); }; /** * @private * @param {?} e * @return {?} */ MenuSidebarComponent.prototype.onMouseOut = /** * @private * @param {?} e * @return {?} */ function (e) { if (!this.keepMenuExpanded) { this.onCollpseMenu(); } e.stopPropagation(); }; /** * @private * @return {?} */ MenuSidebarComponent.prototype.onExpandedMenu = /** * @private * @return {?} */ function () { if (window.innerWidth >= 1000) { this.hostElement.classList.remove('collapsed'); this.hostElement.classList.add('expanded'); } }; /** * @private * @return {?} */ MenuSidebarComponent.prototype.onCollpseMenu = /** * @private * @return {?} */ function () { if (window.innerWidth >= 1000) { this.hostElement.classList.remove('expanded'); this.hostElement.classList.add('collapsed'); } }; MenuSidebarComponent.decorators = [ { type: Component, args: [{ selector: 'cause-menu-sidebar', template: "<div>\n <button mat-icon-button class=\"close\" (click)=\"hideOnMobile()\">\n <mat-icon>clear</mat-icon>\n </button>\n <ng-content select=\"[header]\"></ng-content>\n</div>\n<div>\n <ng-content select=\"[beforeMenu]\"></ng-content>\n <cause-menu-vertical #menu [menuItems]=\"menuItems\" (itemClick)=\"onMenuItemClick()\"></cause-menu-vertical>\n <ng-content select=\"[afterMenu]\"></ng-content>\n</div>\n<div *ngIf=\"version\" class=\"version\">\n <div class=\"double-arrow\" (click)=\"onToggleCollapse()\"></div>\n <span class=\"full\">{{'material.version' | translate}} {{version}}</span>\n <span class=\"abbr\">{{version}}</span>\n</div>\n", styles: [":host{height:100%;flex-direction:column;display:flex;transition:.1s ease-out;overflow:hidden;scrollbar-width:5px;scrollbar-color:rgba(0,0,0,.1) rgba(0,0,0,.2)}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{border-radius:5px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.1)}::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(0,0,0,.2);outline:#708090 solid 1px}:host>div{flex:1}:host>div:first-child{flex:0 0 auto}:host>div:nth-child(2){flex-grow:1;overflow:hidden auto}:host>div:last-child{max-height:1em}:host.hidden{width:0;min-width:0;max-width:0}:host.mobile{width:275px;min-width:275px;max-width:275px;position:absolute;z-index:10}:host.collapsed{width:75px;min-width:75px;max-width:75px}:host.expanded{width:275px;min-width:275px;max-width:275px}:host .close{display:none}:host.mobile .close{right:0;display:inline-block;position:absolute}.double-arrow{height:2.9em;line-height:2.9em;cursor:pointer;position:absolute;opacity:.25;margin-top:-1em}.double-arrow:hover{opacity:1}:host.collapsed .double-arrow:before,:host.expanded .double-arrow:before{font-family:\"Material Icons\";content:\"double_arrow\";font-size:2.9em;text-align:right}:host.collapsed .double-arrow{margin-left:10px}:host.expanded .double-arrow{margin-left:200px}:host.collapsed ::ng-deep .menu-caption,:host.collapsed ::ng-deep .submenu{display:none}:host.keepExpanded .double-arrow{transform:rotate(180deg);opacity:1}.version{bottom:0;padding:1em}.abbr,.full{display:none}:host.collapsed .abbr{display:inline}:host.expanded .full,:host.mobile .full{display:inline}@media only screen and (max-width:1000px){.double-arrow{display:none}}"] }] } ]; /** @nocollapse */ MenuSidebarComponent.ctorParameters = function () { return [ { type: ElementRef } ]; }; MenuSidebarComponent.propDecorators = { menuItems: [{ type: Input }], version: [{ type: Input }], onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }] }; return MenuSidebarComponent; }()); export { MenuSidebarComponent }; if (false) { /** @type {?} */ MenuSidebarComponent.prototype.menuItems; /** @type {?} */ MenuSidebarComponent.prototype.version; /** * @type {?} * @private */ MenuSidebarComponent.prototype.hostElement; /** * @type {?} * @private */ MenuSidebarComponent.prototype.keepMenuExpanded; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvbWF0ZXJpYWwvIiwic291cmNlcyI6WyJsaWIvbWVudS1zaWRlYmFyL21lbnUtc2lkZWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFnQixZQUFZLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUlsSDtJQVlJLDhCQUFZLE9BQW1CO1FBQS9CLGlCQU1DO1FBWlEsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQUMzQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBR2QscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsbUJBQUEsT0FBTyxDQUFDLGFBQWEsRUFBa0IsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFdBQVc7Ozs7UUFBRSxVQUFDLENBQUMsSUFBSyxPQUFBLEtBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQW5CLENBQW1CLEVBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFVBQVU7Ozs7UUFBRSxVQUFDLENBQUMsSUFBSyxPQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQWxCLENBQWtCLEVBQUMsQ0FBQztRQUV6RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7OztJQUVELHVDQUFROzs7SUFBUjtJQUNBLENBQUM7Ozs7O0lBR0QsdUNBQVE7Ozs7SUFEUixVQUNTLENBQUM7UUFDTixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7OztJQUVELDhDQUFlOzs7SUFBZjtRQUNJLElBQUksTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFD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SUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMvQztJQUNMLENBQUM7O2dCQXBHSixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsZ3JCQUE0Qzs7aUJBRS9DOzs7O2dCQVJrQixVQUFVOzs7NEJBVXhCLEtBQUs7MEJBQ0wsS0FBSzsyQkFnQkwsWUFBWSxTQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7SUE4RTdDLDJCQUFDO0NBQUEsQUFyR0QsSUFxR0M7U0FoR1ksb0JBQW9COzs7SUFDN0IseUNBQW9DOztJQUNwQyx1Q0FBc0I7Ozs7O0lBRXRCLDJDQUFvQzs7Ozs7SUFDcEMsZ0RBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL21lbnUtaXRlbSc7XG5pbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2F1c2UtbWVudS1zaWRlYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tZW51LXNpZGViYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBNZW51U2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG4gICAgQElucHV0KCkgdmVyc2lvbiA9ICcnO1xuXG4gICAgcHJpdmF0ZSBob3N0RWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBrZWVwTWVudUV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQgPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKGUpID0+IHRoaXMub25Nb3VzZU92ZXIoZSkpO1xuICAgICAgICB0aGlzLmhvc3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgKGUpID0+IHRoaXMub25Nb3VzZU91dChlKSk7XG5cbiAgICAgICAgdGhpcy5zZXREaXNwbGF5TWVudSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICAgIG9uUmVzaXplKGUpIHtcbiAgICAgICAgdGhpcy5zZXREaXNwbGF5TWVudSgpO1xuICAgIH1cblxuICAgIG9uTWVudUl0ZW1DbGljaygpIHtcbiAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTAwMCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlT25Nb2JpbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGVPbk1vYmlsZSgpIHtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdtb2JpbGUnKTtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICB9XG5cbiAgICBzaG93T25Nb2JpbGUoKSB7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbW9iaWxlJyk7XG4gICAgfVxuXG4gICAgb25Ub2dnbGVDb2xsYXBzZSgpIHtcbiAgICAgICAgaWYgKHRoaXMua2VlcE1lbnVFeHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkNvbGxwc2VNZW51KCk7XG4gICAgICAgICAgICB0aGlzLmhvc3RFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2tlZXBFeHBhbmRlZCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbkV4cGFuZGVkTWVudSgpO1xuICAgICAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdrZWVwRXhwYW5kZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMua2VlcE1lbnVFeHBhbmRlZCA9ICF0aGlzLmtlZXBNZW51RXhwYW5kZWQ7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYXVzZS1tZW51LXN0YXR1cycsIHRoaXMua2VlcE1lbnVFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREaXNwbGF5TWVudSgpIHtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc05hbWUgPSAnJztcblxuICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDAwKSB7XG4gICAgICAgICAgICB0aGlzLmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjYXVzZS1tZW51LXN0YXR1cycpID09PSAnZXhwYW5kZWQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5rZWVwTWVudUV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2tlZXBFeHBhbmRlZCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5rZWVwTWVudUV4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25Nb3VzZU92ZXIoZSkge1xuICAgICAgICBpZiAoIXRoaXMua2VlcE1lbnVFeHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkV4cGFuZGVkTWVudSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTW91c2VPdXQoZSkge1xuICAgICAgICBpZiAoIXRoaXMua2VlcE1lbnVFeHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkNvbGxwc2VNZW51KCk7XG4gICAgICAgIH1cblxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25FeHBhbmRlZE1lbnUoKSB7XG4gICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA+PSAxMDAwKSB7XG4gICAgICAgICAgICB0aGlzLmhvc3RFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2NvbGxhcHNlZCcpO1xuICAgICAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdleHBhbmRlZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNvbGxwc2VNZW51KCkge1xuICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPj0gMTAwMCkge1xuICAgICAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdleHBhbmRlZCcpO1xuICAgICAgICAgICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjb2xsYXBzZWQnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==