UNPKG

@alyle/ui

Version:

Minimal Design, a set of components for Angular

1 lines 34.6 kB
{"version":3,"file":"alyle-ui-menu.mjs","sources":["../../../lib/menu/menu.ts","../../../lib/menu/menu.html","../../../lib/menu/menu.module.ts","../../../lib/menu/alyle-ui-menu.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n Output,\n EventEmitter,\n OnChanges,\n ContentChildren,\n forwardRef,\n QueryList,\n HostBinding\n } from '@angular/core';\nimport {\n LyOverlay,\n LyTheme2,\n OverlayFactory,\n Placement,\n Positioning,\n shadowBuilder,\n ThemeVariables,\n XPosition,\n YPosition,\n StyleCollection,\n LyClasses,\n StyleTemplate,\n ThemeRef,\n LyOverlayPosition,\n StyleRenderer } from '@alyle/ui';\nimport {\n trigger,\n style,\n animate,\n transition,\n AnimationEvent,\n group\n} from '@angular/animations';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { Subject, asapScheduler } from 'rxjs';\nimport { take, delay, debounceTime } from 'rxjs/operators';\n\nexport interface LyMenuTheme {\n /** Styles for Menu Component */\n root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n}\n\nexport interface LyMenuVariables {\n menu?: LyMenuTheme;\n}\n\nconst STYLE_PRIORITY = -1;\n\nexport const STYLES = (theme: ThemeVariables & LyMenuVariables, ref: ThemeRef) => {\n const menu = ref.selectorsOf(STYLES);\n const { after } = theme;\n return {\n $name: LyMenu.и,\n $priority: STYLE_PRIORITY,\n root: () => (\n theme.menu?.root\n && (theme.menu.root instanceof StyleCollection\n ? theme.menu.root.setTransformer(fn => fn(menu)).css\n : theme.menu.root(menu))\n ),\n container: (_className: string) => `${_className}{background:${theme.background.primary.default};border-radius:2px;box-shadow:${shadowBuilder(4)};display:block;padding-top:8px;padding-bottom:8px;transform-origin:inherit;pointer-events:all;overflow:auto;max-height:inherit;max-width:inherit;box-sizing:border-box;}`,\n item: (_className: string) => `${_className}{display:flex;min-height:48px;border-radius:0;width:100%;justify-content:flex-start;font-weight:400;}${_className} ly-icon{margin-${after}:16px;}`,\n itemSubMenuTrigger: () => (_className: string) => `${_className}{padding-${after}:32px;}${_className}::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:\"\";display:inline-block;position:absolute;top:50%;${after}:16px;transform:translateY(-50%);}`\n };\n};\n\nconst ANIMATIONS = [\n trigger('transformMenu', [\n transition('void => enter', group([\n style({\n opacity: 0,\n transform: 'scale(0.8)'\n }),\n animate('100ms linear', style({\n opacity: 1\n })),\n animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({transform: 'scale(1)'})),\n ]))\n ]),\n trigger('transformMenuLeave', [\n transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 })))\n ])\n];\n\n/** Menu container */\n@Component({\n selector: 'ly-menu',\n animations: [...ANIMATIONS],\n templateUrl: 'menu.html',\n exportAs: 'lyMenu',\n providers: [\n StyleRenderer\n ],\n standalone: false\n})\nexport class LyMenu implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n /** Menu Trigger */\n @Input()\n set ref(value: LyMenuTriggerFor) {\n this._ref = value;\n this._menuRef = value._menuRef!;\n }\n get ref() {\n return this._ref;\n }\n\n /** Whether the menu has a backdrop. */\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n constructor(\n private _theme: LyTheme2,\n private _el: ElementRef,\n private _renderer: Renderer2,\n private _viewportRuler: ViewportRuler,\n readonly sRenderer: StyleRenderer\n ) { }\n\n /** @docs-private */\n static readonly и = 'LyMenu';\n\n\n static ngAcceptInputType_hasBackdrop: BooleanInput;\n\n /**\n * styles\n * @docs-private\n */\n readonly classes = this.sRenderer.renderSheet(STYLES, true);\n\n /** Whether the menu is animating. */\n _isAnimating: boolean;\n\n /** Whether the menu is destroying. */\n _isDestroying: boolean;\n\n /** Emits whenever an animation on the menu completes. */\n _animationDone = new Subject<AnimationEvent>();\n\n private _menuRef: OverlayFactory<any>;\n /**\n * Destroy menu\n * @docs-private\n */\n destroy: () => void;\n @ViewChild('container') _container?: ElementRef<HTMLDivElement>;\n @ContentChildren(forwardRef(() => LyMenuItem)) readonly menuItems?: QueryList<LyMenuItem>;\n private _ref: LyMenuTriggerFor;\n\n /** The point in the anchor where the menu `xAxis` will be attached. */\n @Input() xAnchor: XPosition;\n\n /** The point in the anchor where the menu `yAxis` will be attached. */\n @Input() yAnchor: YPosition;\n\n /** The x-axis position of the menu. */\n @Input() xAxis: XPosition;\n\n /** The y-axis position of the menu. */\n @Input() yAxis: YPosition;\n\n /**\n * Position where the menu will be placed.\n * @deprecated Use `xAxis` and` yAxis` together instead.\n */\n @Input() placement: Placement;\n\n\n /**\n * The x-axis position of the menu.\n * @deprecated Use `xAxis` instead.\n */\n @Input() xPosition: XPosition;\n\n /**\n * The y-axis position of the menu.\n * @deprecated Use `yAxis` instead.\n */\n @Input() yPosition: YPosition;\n private _hasBackdrop: boolean = true;\n private _mouseenterListen?: () => void;\n private _mouseleaveListen?: () => void;\n\n @HostBinding('@transformMenuLeave') transformMenuLeave: unknown;\n\n ngOnChanges() {\n if (this.ref?._menuRef && this._container) {\n // Update backdrop\n this.ref._menuRef.updateBackdrop(this.ref._isItemSubMenuTrigger() ? false : this.hasBackdrop);\n this._updatePlacement();\n this._checkBackdropAndOpenOnHover();\n }\n }\n\n ngOnInit() {\n if (!this.ref) {\n throw new Error('LyMenu: require @Input() ref');\n }\n }\n\n ngAfterViewInit() {\n if (this.ref._menuRef) {\n this.ref._menuRef.onResizeScroll = this._updatePlacement.bind(this);\n this.ref._menuRef.updateBackdrop(this.ref._isItemSubMenuTrigger() ? false : this.hasBackdrop);\n this._checkBackdropAndOpenOnHover();\n }\n this._updatePlacement();\n this.ref.menuOpened.emit();\n Promise.resolve(null).then(() => {\n this.ref._setMenuOpenToTrue();\n });\n const hostTrigger = this._getHostMenuTrigger();\n hostTrigger._menuDetached\n .pipe(take(1))\n .subscribe(() => this._ref.closeMenu());\n this._addOpenOnHover();\n }\n\n ngOnDestroy() {\n this._removeOpenOnHoverListeners();\n }\n\n private _checkBackdropAndOpenOnHover() {\n const hostTrigger = this._getHostMenuTrigger();\n if (this.hasBackdrop && hostTrigger._menuOpenOnHoverRef?.openOnHover) {\n throw new Error(`${LyMenu.и}: Can't use [hasBackdrop] with [openOnHover] at the same time, set [hasBackdrop] to false to use [openOnHover]`);\n }\n }\n\n private _getHostMenuTrigger() {\n let menuTrigger = this.ref;\n\n while (menuTrigger._menu?.ref) {\n menuTrigger = menuTrigger._menu.ref;\n }\n\n return menuTrigger;\n }\n\n private _addOpenOnHover() {\n const hostTrigger = this._getHostMenuTrigger();\n if (hostTrigger._menuOpenOnHoverRef?.openOnHover && !this._mouseenterListen && !this._mouseleaveListen) {\n hostTrigger._menuOpenOnHoverRef!._handleMouseEnterOrLeave(true);\n this._mouseenterListen = this._renderer\n .listen(\n this._el.nativeElement,\n 'mouseenter',\n () => hostTrigger._menuOpenOnHoverRef!._handleMouseEnterOrLeave(true)\n );\n\n this._mouseleaveListen = this._renderer\n .listen(\n this._el.nativeElement,\n 'mouseleave',\n () => hostTrigger._menuOpenOnHoverRef!._handleMouseEnterOrLeave(false)\n );\n }\n }\n\n /** Remove listeners */\n private _removeOpenOnHoverListeners() {\n if (this._mouseenterListen) {\n this._mouseenterListen();\n }\n if (this._mouseleaveListen) {\n this._mouseleaveListen();\n }\n }\n\n /** Update Menu Position */\n private _updatePlacement() {\n const el = this.ref._menuRef?.containerElement;\n const container = this._container?.nativeElement;\n\n // Do not update when not available\n if (!el || !container) {\n return;\n }\n\n // reset height & width\n this._renderer.setStyle(container, 'height', 'initial');\n this._renderer.setStyle(container, 'width', 'initial');\n\n const position = this.placement\n ? new Positioning(this.placement, this.xPosition, this.yPosition, this.ref._getHostElement(), el, this._theme.variables)\n : !this.ref._isItemSubMenuTrigger()\n ? new LyOverlayPosition(this._theme, this._viewportRuler, this.ref._getHostElement(), el)\n .setXAnchor(this.xAnchor)\n .setYAnchor(this.yAnchor)\n .setXAxis(this.xAxis)\n .setYAxis(this.yAxis)\n .setFlip(true)\n .build()\n : new LyOverlayPosition(this._theme, this._viewportRuler, this.ref._getHostElement(), el)\n .setXAnchor(XPosition.after)\n .setYAnchor(YPosition.above)\n .setFlip(true)\n .build();\n\n if (position instanceof Positioning) {\n // set position deprecated\n this._renderer.setStyle(el, 'transform', `translate3d(${position.x}px, ${position.y}px, 0)`);\n this._renderer.setStyle(this._el.nativeElement, 'transform-origin', `${position.ox} ${position.oy} 0`);\n\n // set height & width deprecated\n this._renderer.setStyle(container, 'height', position.height === 'initial' ? '100%' : position.height);\n this._renderer.setStyle(container, 'width', position.width === 'initial' ? '100%' : position.width);\n } else {\n // set position\n this._renderer.setStyle(el, 'left', `${position.x}px`);\n this._renderer.setStyle(el, 'top', `${position.y}px`);\n this._renderer.setStyle(container, 'width', position.width ? `${position.width}px` : '100%');\n this._renderer.setStyle(container, 'height', position.height ? `${position.height}px` : '100%');\n this._renderer.setStyle(this._el.nativeElement, 'transform-origin', `${position.xo}px ${position.yo}px 0`);\n }\n\n }\n @HostListener('@transformMenuLeave.start', ['$event']) _onAnimationStart(event: AnimationEvent) {\n this._isAnimating = true;\n if (event.triggerName === 'transformMenuLeave' && event.toState === 'void') {\n this._isDestroying = true;\n }\n }\n @HostListener('@transformMenuLeave.done', ['$event']) _onAnimationDone(event: AnimationEvent) {\n this._animationDone.next(event);\n this._isAnimating = false;\n if (event.toState === 'void' && event.triggerName === 'transformMenuLeave') {\n this.ref.destroy(this._menuRef);\n }\n }\n}\n\n@Directive({\n selector: '[ly-menu-item]',\n host: {\n '(click)': '_handleClick()',\n '(mouseenter)': '_handleMouseEnter()'\n },\n standalone: false\n})\nexport class LyMenuItem {\n\n constructor(\n @Optional() private _menu: LyMenu,\n el: ElementRef,\n renderer: Renderer2\n ) {\n renderer.addClass(el.nativeElement, _menu.classes.item);\n }\n private _itemSubMenuTrigger?: LyMenuTriggerFor;\n\n _handleClick() {\n if (this._menu.ref && this._menu.ref._menuRef) {\n if (!this._getItemSubMenuTrigger()) {\n let currentTrigger = this._menu.ref;\n while (currentTrigger) {\n currentTrigger.closeMenu();\n currentTrigger = currentTrigger._menu?.ref;\n }\n }\n }\n }\n\n _handleMouseEnter() {\n const itemSubMenuTrigger = this._getItemSubMenuTrigger();\n if (itemSubMenuTrigger && !this._menu._isDestroying) {\n if (this._menu._isAnimating) {\n this._menu._animationDone\n .pipe(take(1), delay(0, asapScheduler))\n .subscribe(() => {\n itemSubMenuTrigger.openMenu();\n this._closeOtherMenus();\n });\n } else {\n itemSubMenuTrigger.openMenu();\n this._closeOtherMenus();\n }\n } else {\n this._closeOtherMenus();\n }\n }\n\n /** Except for this, close all menus */\n private _closeOtherMenus() {\n this._menu.menuItems!.forEach(menuItem => {\n if (menuItem !== this) {\n menuItem._getItemSubMenuTrigger()?.closeMenu();\n }\n });\n }\n\n _setItemSubMenuTrigger(menuTrigger: LyMenuTriggerFor) {\n this._itemSubMenuTrigger = menuTrigger;\n }\n _getItemSubMenuTrigger() {\n return this._itemSubMenuTrigger;\n }\n}\n\n\n@Directive({\n selector: '[lyMenuTriggerFor]',\n host: {\n '(click)': '_handleClick()'\n },\n exportAs: 'lyMenuTriggerFor',\n providers: [\n StyleRenderer\n ],\n standalone: false\n})\nexport class LyMenuTriggerFor implements OnDestroy {\n readonly classes = this.sRenderer.renderSheet(STYLES);\n\n /** Current menuRef */\n _menuRef?: OverlayFactory | null;\n private _menuOpen = false;\n private _destroying: boolean;\n _menuDetached = new Subject<void>();\n _menuOpenOnHoverRef?: LyMenuOpenOnHover;\n\n /** Whether the menu is open. */\n get menuOpen() {\n return this._menuOpen;\n }\n\n @Input() lyMenuTriggerFor: TemplateRef<any>;\n\n /** Data to be passed to the menu. */\n @Input('lyMenuTriggerData') menuData: any;\n\n @Output() readonly menuOpened = new EventEmitter<void>();\n @Output() readonly menuClosed = new EventEmitter<void>();\n\n constructor(\n private elementRef: ElementRef,\n private overlay: LyOverlay,\n @Optional() private _menuItem: LyMenuItem,\n readonly sRenderer: StyleRenderer,\n @Optional() public _menu: LyMenu\n ) {\n if (this._isItemSubMenuTrigger()) {\n _menuItem._setItemSubMenuTrigger(this);\n sRenderer.addClass(this.classes.itemSubMenuTrigger);\n }\n }\n\n ngOnDestroy() {\n // Not force destruction if it is already being destroyed\n if (!this._destroying) {\n this.closeMenu();\n }\n this._menuDetached.complete();\n }\n\n _handleClick() {\n if (!this._isItemSubMenuTrigger()) {\n this.toggleMenu();\n }\n }\n\n /** Opens the menu */\n openMenu() {\n if (!this._menuRef) {\n this._menuRef = this.overlay.create(this.lyMenuTriggerFor, {\n $implicit: this,\n data: this.menuData\n }, {\n styles: {\n top: 0,\n left: 0,\n pointerEvents: null\n },\n fnDestroy: this.detach.bind(this),\n hasBackdrop: false\n });\n }\n }\n\n /** Closes the menu */\n closeMenu() {\n this.detach();\n }\n\n /** Toggle menu */\n toggleMenu() {\n if (this._menuRef) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n }\n\n /** @docs-private */\n detach() {\n if (this._menuRef) {\n this._menuRef.detach();\n this._menuRef = null;\n this._destroying = true;\n this._menuDetached.next();\n }\n }\n\n /** @docs-private */\n destroy(menuRef: OverlayFactory<any>) {\n this.menuClosed.emit(null!);\n menuRef.remove();\n this._destroying = false;\n Promise.resolve(null).then(() => this._menuOpen = false);\n }\n\n _getHostElement() {\n return this.elementRef.nativeElement;\n }\n\n _setMenuOpenToTrue() {\n this._menuOpen = true;\n }\n\n /**\n * @docs-private\n */\n _isItemSubMenuTrigger() {\n return !!this._menuItem;\n }\n\n}\n\n@Directive({\n selector: '[lyMenuTriggerFor][openOnHover]',\n host: {\n '(mouseenter)': '_handleMouseEnterOrLeave(true)',\n '(mouseleave)': '_handleMouseEnterOrLeave(false)'\n },\n standalone: false\n})\nexport class LyMenuOpenOnHover implements OnDestroy {\n\n private _events = new Subject<boolean>();\n\n /** Whether menu should open on hover. */\n @Input()\n get openOnHover(): boolean {\n return this._openOnHover;\n }\n set openOnHover(value: boolean) {\n this._openOnHover = coerceBooleanProperty(value);\n Promise.resolve(null)\n .then(() => this._openOnHover\n ? this._trigger._menuOpenOnHoverRef = this\n : delete this._trigger._menuOpenOnHoverRef);\n }\n private _openOnHover: boolean = true;\n\n constructor(\n private _trigger: LyMenuTriggerFor\n ) {\n _trigger._menuOpenOnHoverRef = this;\n this._events\n .pipe(\n debounceTime(200)\n )\n .subscribe(enterOrLeave => {\n if (this.openOnHover) {\n if (enterOrLeave) {\n _trigger.openMenu();\n } else {\n _trigger.closeMenu();\n }\n }\n });\n }\n\n ngOnDestroy() {\n this._events.complete();\n }\n\n /** Handle mouseenter */\n _handleMouseEnterOrLeave(enter: true): void;\n /** Handle mouseleave */\n _handleMouseEnterOrLeave(leave: false): void;\n /** Handle mouseenter or mouseleave */\n _handleMouseEnterOrLeave(leaveOrEnter: boolean): void {\n if (this.openOnHover) {\n if (leaveOrEnter) {\n this._trigger.openMenu();\n }\n this._events.next(leaveOrEnter);\n }\n }\n}\n","<div #container\n [class]=\"classes.container\"\n [@transformMenu]=\"'enter'\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n>\n <ng-content></ng-content>\n</div>","import { LyMenu, LyMenuTriggerFor, LyMenuItem, LyMenuOpenOnHover } from './menu';\nimport { LyCommonModule, LyOverlayModule } from '@alyle/ui';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n imports: [CommonModule, FormsModule, LyCommonModule, LyOverlayModule],\n exports: [LyMenu, LyMenuItem, LyMenuTriggerFor, LyMenuOpenOnHover],\n declarations: [LyMenu, LyMenuItem, LyMenuTriggerFor, LyMenuOpenOnHover],\n})\nexport class LyMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}