@cause-911/material
Version:
Run `npm install @cause-911/material --save` to add this library to your project
209 lines • 16.2 kB
JavaScript
/**
* @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==