{"version":3,"file":"ng2-material-dropdown.mjs","sources":["../../src/modules/components/button/ng2-dropdown-button.ts","../../src/modules/components/button/template.html","../../src/modules/components/menu/actions.ts","../../src/modules/services/ng2-dropdown-state.ts","../../src/modules/services/dropdown-state.service.ts","../../src/modules/components/menu-item/ng2-menu-item.ts","../../src/modules/components/menu/ng2-dropdown-menu.ts","../../src/modules/components/dropdown/ng2-dropdown.ts","../../src/modules/ng2-dropdown.module.ts","../../ng2-material-dropdown.ts"],"sourcesContent":["import {\n Component,\n Output,\n Input,\n EventEmitter,\n ElementRef\n} from '@angular/core';\n\n@Component({\n selector: 'ng2-dropdown-button',\n styleUrls: [ './style.scss' ],\n templateUrl: './template.html'\n})\nexport class Ng2DropdownButton {\n @Output() public onMenuToggled: EventEmitter = new EventEmitter();\n @Input() public showCaret: boolean = true;\n\n constructor(private element: ElementRef) {}\n\n /**\n * @name toggleMenu\n * @desc emits event to toggle menu\n */\n public toggleMenu(): void {\n this.onMenuToggled.emit(true);\n }\n\n /**\n * @name getPosition\n * @desc returns position of the button\n */\n public getPosition(): ClientRect {\n return this.element.nativeElement.getBoundingClientRect();\n }\n}\n","\n","import { Ng2MenuItem } from '../menu-item/ng2-menu-item';\nimport { Ng2DropdownMenu } from './ng2-dropdown-menu';\nimport { Ng2DropdownState } from '../../services/ng2-dropdown-state';\n\nconst KEYS = {\n BACKSPACE: 9,\n PREV: 38,\n NEXT: 40,\n ENTER: 13,\n ESCAPE: 27\n};\n\n/**\n * @name onSwitchNext\n * @param index\n * @param items\n * @param state\n */\nconst onSwitchNext = (index: number, items: Ng2MenuItem[], state: Ng2DropdownState) => {\n if (index < items.length - 1) {\n state.select(items[index + 1], true);\n }\n};\n\n/**\n * @name onSwitchPrev\n * @param index\n * @param items\n * @param state\n */\nconst onSwitchPrev = (index: number, items: Ng2MenuItem[], state: Ng2DropdownState) => {\n if (index > 0) {\n state.select(items[index - 1], true);\n }\n};\n\n/**\n * @name onBackspace\n * @param index\n * @param items\n * @param state\n */\nconst onBackspace = (index: number, items: Ng2MenuItem[], state: Ng2DropdownState) => {\n if (index < items.length - 1) {\n state.select(items[index + 1], true);\n } else {\n state.select(items[0], true);\n }\n};\n\nfunction onEscape(this: Ng2DropdownMenu) {\n this.hide();\n};\n\n/**\n * @name onItemClicked\n * @param index\n * @param items\n * @param state\n */\nconst onItemClicked = (index: number, items: Ng2MenuItem[], state: Ng2DropdownState) => {\n return state.selectedItem ? state.selectedItem.click() : undefined;\n};\n\nexport const ACTIONS = {\n [KEYS.BACKSPACE]: onBackspace,\n [KEYS.PREV]: onSwitchPrev,\n [KEYS.NEXT]: onSwitchNext,\n [KEYS.ENTER]: onItemClicked,\n [KEYS.ESCAPE]: onEscape\n};\n\nexport function arrowKeysHandler(event): void {\n if ([38, 40].indexOf(event.keyCode) > -1) {\n event.preventDefault();\n }\n}\n","import { EventEmitter } from '@angular/core';\nimport { Ng2MenuItem } from '../components/menu-item/ng2-menu-item';\nexport class Ng2DropdownState {\n public onItemSelected: EventEmitter = new EventEmitter<\n Ng2MenuItem\n >();\n public onItemClicked: EventEmitter = new EventEmitter<\n Ng2MenuItem\n >();\n public onItemDestroyed: EventEmitter = new EventEmitter<\n Ng2MenuItem\n >();\n\n private _selectedItem: Ng2MenuItem;\n\n /**\n * @name selectedItem\n * @desc getter for _selectedItem\n */\n public get selectedItem(): Ng2MenuItem {\n return this._selectedItem;\n }\n\n /**\n * @name selects a menu item and emits event\n * @param item\n */\n public select(item: Ng2MenuItem | undefined, dispatchEvent = true): void {\n this._selectedItem = item;\n\n if (!dispatchEvent || !item) {\n return;\n }\n\n item.focus();\n\n this.onItemSelected.emit(item);\n }\n\n /**\n * @name unselect\n * @desc sets _selectedItem as undefined\n */\n public unselect(): void {\n this._selectedItem = undefined;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Ng2DropdownState } from './ng2-dropdown-state';\n\n@Injectable()\nexport class DropdownStateService {\n public menuState = {\n isVisible: false,\n toString(): string {\n return this.isVisible === true ? 'visible' : 'hidden';\n }\n };\n\n public dropdownState = new Ng2DropdownState();\n}\n","import { Component, Input, ElementRef, OnDestroy } from '@angular/core';\nimport { DropdownStateService } from '../../services/dropdown-state.service';\n\n@Component({\n selector: 'ng2-menu-item',\n styleUrls: ['./style.scss'],\n template: `\n \n \n \n `\n})\nexport class Ng2MenuItem implements OnDestroy {\n /**\n * @preventClose\n * @desc if true, clicking on the item won't close the dropdown\n */\n @Input() public preventClose = false;\n\n /**\n * @name value\n * @desc any value associated to the item\n */\n @Input() public value: any;\n\n constructor(\n private state: DropdownStateService,\n private element: ElementRef\n ) {}\n\n public ngOnDestroy(): void {\n this.state.dropdownState.onItemDestroyed.emit(this);\n }\n\n /**\n * @name isSelected\n * @desc returns current selected item\n */\n public get isSelected(): boolean {\n return this === this.state.dropdownState.selectedItem;\n }\n\n /**\n * @name click\n * @desc emits select event\n */\n public select($event?): void {\n this.state.dropdownState.select(this, true);\n\n if ($event) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n\n /**\n * @name click\n * @desc emits click event\n */\n public click(): void {\n this.state.dropdownState.onItemClicked.emit(this);\n }\n\n /**\n * @name focus\n */\n public focus() {\n this.element.nativeElement.children[0].focus();\n }\n}\n","import {\n Component,\n ElementRef,\n Renderer2,\n ContentChildren,\n QueryList,\n Input\n} from '@angular/core';\n\nimport {\n trigger,\n style,\n transition,\n animate,\n keyframes,\n state\n} from '@angular/animations';\n\nimport { ACTIONS, arrowKeysHandler } from './actions';\n\nimport { Ng2MenuItem } from '../menu-item/ng2-menu-item';\nimport { DropdownStateService } from '../../services/dropdown-state.service';\n\n@Component({\n selector: 'ng2-dropdown-menu',\n styleUrls: ['./style.scss'],\n template: `\n \n \n \n \n \n \n\n \n \n `,\n animations: [\n trigger('fade', [\n state('visible', style({ opacity: 1, height: '*', width: '*' })),\n state(\n 'hidden',\n style({ opacity: 0, overflow: 'hidden', height: 0, width: 0 })\n ),\n transition('hidden => visible', [\n animate(\n '250ms ease-in',\n style({ opacity: 1, height: '*', width: '*' })\n )\n ]),\n transition('visible => hidden', [\n animate(\n '350ms ease-out',\n style({ opacity: 0, width: 0, height: 0 })\n )\n ])\n ]),\n trigger('opacity', [\n transition('hidden => visible', [\n animate(\n '450ms ease-in',\n keyframes([\n style({ opacity: 0, offset: 0 }),\n style({ opacity: 1, offset: 1 })\n ])\n )\n ]),\n transition('visible => hidden', [\n animate(\n '250ms ease-out',\n keyframes([\n style({ opacity: 1, offset: 0 }),\n style({ opacity: 0.5, offset: 0.3 }),\n style({ opacity: 0, offset: 1 })\n ])\n )\n ])\n ])\n ]\n})\nexport class Ng2DropdownMenu {\n /**\n * @name width\n */\n @Input() public width = 4;\n\n /**\n * @description if set to true, the first element of the dropdown will be automatically focused\n * @name focusFirstElement\n */\n @Input() public focusFirstElement = true;\n\n /**\n * @description sets dropdown offset from the button\n * @name offset {string} follow format ' ' ex. '0 20'\n */\n @Input() public offset: string;\n\n /**\n * @name appendToBody\n */\n @Input() public appendToBody = true;\n\n /**\n * @name zIndex\n */\n @Input() public zIndex = 1000;\n\n /**\n * @name items\n */\n @ContentChildren(Ng2MenuItem, { descendants: true })\n public items!: QueryList;\n\n private position: ClientRect;\n\n private listeners = {\n arrowHandler: undefined,\n handleKeypress: undefined\n };\n\n constructor(\n public dropdownState: DropdownStateService,\n private element: ElementRef,\n private renderer: Renderer2\n ) {}\n\n /**\n * @name show\n * @shows menu and selects first item\n */\n public show(position?: ClientRect, dynamic = true): void {\n const dc = typeof document !== 'undefined' ? document : undefined;\n const wd = typeof window !== 'undefined' ? window : undefined;\n\n if (!this.dropdownState.menuState.isVisible) {\n // setting handlers\n this.listeners.handleKeypress = this.renderer.listen(\n dc.body,\n 'keydown',\n this.handleKeypress.bind(this)\n );\n this.listeners.arrowHandler = this.renderer.listen(\n wd,\n 'keydown',\n arrowKeysHandler\n );\n }\n\n // update state\n this.dropdownState.menuState.isVisible = true;\n\n if (position) {\n this.updatePosition(position, dynamic);\n }\n }\n\n /**\n * @name hide\n * @desc hides menu\n */\n public hide(): void {\n this.dropdownState.menuState.isVisible = false;\n\n // reset selected item state\n this.dropdownState.dropdownState.unselect();\n\n // call function to unlisten\n this.listeners.arrowHandler && this.listeners.arrowHandler();\n this.listeners.handleKeypress && this.listeners.handleKeypress();\n }\n\n /**\n * @name updatePosition\n * @desc updates the menu position every time it is toggled\n * @param position {ClientRect}\n * @param dynamic {boolean}\n */\n public updatePosition(position: ClientRect, dynamic: boolean): void {\n this.position = position;\n this.updateOnChange(dynamic);\n }\n\n /**\n * @name handleKeypress\n * @desc executes functions on keyPress based on the key pressed\n * @param $event\n */\n public handleKeypress($event): void {\n const key = $event.keyCode;\n const items = this.items.toArray();\n const index = items.indexOf(\n this.dropdownState.dropdownState.selectedItem\n );\n\n if (!ACTIONS.hasOwnProperty(key)) {\n return;\n }\n\n ACTIONS[key].call(this, index, items, this.dropdownState.dropdownState);\n }\n\n /**\n * @name getMenuElement\n */\n private getMenuElement(): Element {\n return this.element.nativeElement.children[0];\n }\n\n /**\n * @name calcPositionOffset\n * @param position\n */\n private calcPositionOffset(position): { top: string; left: string } {\n const wd = typeof window !== 'undefined' ? window : undefined;\n const dc = typeof document !== 'undefined' ? document : undefined;\n\n if (!wd || !dc || !position) {\n return;\n }\n\n const element = this.getMenuElement();\n const supportPageOffset = wd.pageXOffset !== undefined;\n const isCSS1Compat = (dc.compatMode || '') === 'CSS1Compat';\n\n const x = supportPageOffset\n ? wd.pageXOffset\n : isCSS1Compat\n ? dc.documentElement.scrollLeft\n : dc.body.scrollLeft;\n\n const y = supportPageOffset\n ? wd.pageYOffset\n : isCSS1Compat\n ? dc.documentElement.scrollTop\n : dc.body.scrollTop;\n\n let { top, left } = this.applyOffset(\n `${position.top + (this.appendToBody ? y - 15 : 0)}px`,\n `${position.left + x - 5}px`\n );\n\n const clientWidth = element.clientWidth;\n const clientHeight = element.clientHeight;\n\n const marginFromBottom =\n parseInt(top) + clientHeight + (this.appendToBody ? 0 : y - 15);\n const marginFromRight = parseInt(left) + clientWidth;\n\n const windowScrollHeight = wd.innerHeight + wd.scrollY;\n const windowScrollWidth = wd.innerWidth + wd.scrollX;\n\n if (marginFromBottom >= windowScrollHeight) {\n top = `${parseInt(top.replace('px', '')) - clientHeight}px`;\n }\n\n if (marginFromRight >= windowScrollWidth) {\n const marginRight = marginFromRight - windowScrollWidth + 30;\n left = `${parseInt(left.replace('px', '')) - marginRight}px`;\n }\n\n return { top, left };\n }\n\n private applyOffset(\n top: string,\n left: string\n ): { top: string; left: string } {\n if (!this.offset) {\n return { top, left };\n }\n\n const offset = this.offset.split(' ');\n\n if (!offset[1]) {\n offset[1] = '0';\n }\n\n top = `${parseInt(top.replace('px', '')) + parseInt(offset[0])}px`;\n left = `${parseInt(left.replace('px', '')) + parseInt(offset[1])}px`;\n\n return { top, left };\n }\n\n public ngOnInit() {\n const dc = typeof document !== 'undefined' ? document : undefined;\n if (this.appendToBody) {\n // append menu element to the body\n dc.body.appendChild(this.element.nativeElement);\n }\n }\n\n public updateOnChange(dynamic = true) {\n const element = this.getMenuElement();\n const position = this.calcPositionOffset(this.position);\n\n if (position) {\n this.renderer.setStyle(element, 'top', position.top.toString());\n this.renderer.setStyle(element, 'left', position.left.toString());\n }\n\n // select first item unless user disabled this option\n if (\n this.focusFirstElement &&\n this.items.first &&\n !this.dropdownState.dropdownState.selectedItem\n ) {\n this.dropdownState.dropdownState.select(this.items.first, false);\n }\n }\n\n public ngOnDestroy() {\n const elem = this.element.nativeElement;\n elem.parentNode.removeChild(elem);\n\n if (this.listeners.handleKeypress) {\n this.listeners.handleKeypress();\n }\n }\n}\n","import {\n HostListener,\n Component,\n ContentChild,\n Output,\n EventEmitter,\n Input\n} from '@angular/core';\n\nimport { Ng2DropdownButton } from '../button/ng2-dropdown-button';\nimport { Ng2DropdownMenu } from '../menu/ng2-dropdown-menu';\nimport { DropdownStateService } from '../../services/dropdown-state.service';\nimport { Ng2MenuItem } from '../menu-item/ng2-menu-item';\n\n@Component({\n selector: 'ng2-dropdown',\n template: `\n
\n \n \n
\n `,\n providers: [DropdownStateService]\n})\nexport class Ng2Dropdown {\n // get children components\n @ContentChild(Ng2DropdownButton, {static: true})\n public button!: Ng2DropdownButton;\n @ContentChild(Ng2DropdownMenu, {static: true})\n public menu!: Ng2DropdownMenu;\n\n @Input() public dynamicUpdate = true;\n\n // outputs\n @Output() public onItemClicked = new EventEmitter();\n @Output() public onItemSelected = new EventEmitter();\n @Output() public onShow = new EventEmitter();\n @Output() public onHide = new EventEmitter();\n\n constructor(private state: DropdownStateService) {\n }\n\n public ngOnInit() {\n this.state.dropdownState.onItemClicked.subscribe(item => {\n this.onItemClicked.emit(item);\n\n if (item.preventClose) {\n return;\n }\n\n this.hide.call(this);\n });\n\n if (this.button) {\n this.button.onMenuToggled.subscribe(() => {\n this.toggleMenu();\n });\n }\n\n this.state.dropdownState.onItemSelected.subscribe(item => {\n this.onItemSelected.emit(item);\n });\n\n this.state.dropdownState.onItemDestroyed.subscribe(\n (item: Ng2MenuItem) => {\n let newSelectedItem: Ng2MenuItem | undefined;\n const items = this.menu.items.toArray();\n\n if (item !== this.state.dropdownState.selectedItem) {\n return;\n }\n\n if (this.menu.focusFirstElement) {\n newSelectedItem =\n item === items[0] && items.length > 1\n ? items[1]\n : items[0];\n }\n\n this.state.dropdownState.select(newSelectedItem);\n }\n );\n }\n\n /**\n * @name toggleMenu\n * @desc toggles menu visibility\n */\n public toggleMenu(position = this.button.getPosition()): void {\n this.state.menuState.isVisible ? this.hide() : this.show(position);\n }\n\n /**\n * - hides dropdown\n * @name hide\n */\n public hide(): void {\n this.menu.hide();\n this.onHide.emit(this);\n }\n\n /**\n * - shows dropdown\n * @name show\n * @param position\n */\n public show(position = this.button.getPosition()): void {\n this.menu.show(position, this.dynamicUpdate);\n this.onShow.emit(this);\n }\n\n /**\n * @name scrollListener\n */\n @HostListener('window:scroll')\n public scrollListener() {\n if (this.button && this.dynamicUpdate) {\n this.menu.updatePosition(this.button.getPosition(), true);\n }\n }\n}\n","import { Ng2Dropdown } from './components/dropdown/ng2-dropdown';\nimport { Ng2DropdownMenu } from './components/menu/ng2-dropdown-menu';\nimport { Ng2DropdownButton } from './components/button/ng2-dropdown-button';\nimport { Ng2MenuItem } from './components/menu-item/ng2-menu-item';\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownStateService } from './services/dropdown-state.service';\n\n@NgModule({\n exports: [\n Ng2MenuItem,\n Ng2DropdownButton,\n Ng2DropdownMenu,\n Ng2Dropdown\n ],\n declarations: [\n Ng2Dropdown,\n Ng2MenuItem,\n Ng2DropdownButton,\n Ng2DropdownMenu,\n ],\n imports: [\n CommonModule\n ]\n})\nexport class Ng2DropdownModule {}\n\nexport {\n Ng2Dropdown,\n Ng2DropdownMenu,\n Ng2MenuItem,\n Ng2DropdownButton,\n DropdownStateService\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}