UNPKG

@ng-bootstrap/ng-bootstrap

Version:
1 lines 36.5 kB
{"version":3,"file":"ng-bootstrap-ng-bootstrap-dropdown.mjs","sources":["../../../src/dropdown/dropdown-config.ts","../../../src/dropdown/dropdown.ts","../../../src/dropdown/dropdown.module.ts","../../../src/dropdown/ng-bootstrap-ng-bootstrap-dropdown.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Options } from '@popperjs/core';\nimport { PlacementArray } from './_ngb-ngbootstrap-utilities.mjs';\n\n/**\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the dropdowns used in the application.\n */\n@Injectable({ providedIn: 'root' })\nexport class NgbDropdownConfig {\n\tautoClose: boolean | 'outside' | 'inside' = true;\n\tplacement: PlacementArray = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n\tpopperOptions = (options: Partial<Options>) => options;\n\tcontainer: null | 'body' = null;\n}\n","import {\n\tAfterContentInit,\n\tafterNextRender,\n\tafterEveryRender,\n\tAfterRenderRef,\n\tChangeDetectorRef,\n\tContentChild,\n\tContentChildren,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tQueryList,\n\tSimpleChanges,\n\tDOCUMENT,\n} from '@angular/core';\n\nimport { fromEvent, Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport {\n\tngbPositioning,\n\tPlacement,\n\tPlacementArray,\n\taddPopperOffset,\n\tngbAutoClose,\n\tSOURCE,\n\tFOCUSABLE_ELEMENTS_SELECTOR,\n\tgetActiveElement,\n} from './_ngb-ngbootstrap-utilities.mjs';\n\nimport { NgbDropdownConfig } from './dropdown-config';\n\n/**\n * A directive you should put on a dropdown item to enable keyboard navigation.\n * Arrow keys will move focus between items marked with this directive.\n *\n * @since 4.1.0\n */\n@Directive({\n\tselector: '[ngbDropdownItem]',\n\thost: {\n\t\tclass: 'dropdown-item',\n\t\t'[class.disabled]': 'disabled',\n\t\t'[tabIndex]': 'disabled ? -1 : tabindex',\n\t},\n})\nexport class NgbDropdownItem {\n\tstatic ngAcceptInputType_disabled: boolean | '';\n\n\tprivate _disabled = false;\n\n\tnativeElement = inject(ElementRef).nativeElement as HTMLElement;\n\n\t@Input() tabindex: string | number = 0;\n\n\t@Input()\n\tset disabled(value: boolean) {\n\t\tthis._disabled = <any>value === '' || value === true; // accept an empty attribute as true\n\t}\n\n\tget disabled(): boolean {\n\t\treturn this._disabled;\n\t}\n}\n\n/**\n * A directive that will be applied if dropdown item is a button.\n * It will only set the disabled property.\n */\n@Directive({\n\tselector: 'button[ngbDropdownItem]',\n\thost: { '[disabled]': 'item.disabled' },\n})\nexport class NgbDropdownButtonItem {\n\titem = inject(NgbDropdownItem);\n}\n\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\n@Directive({\n\tselector: '[ngbDropdownMenu]',\n\thost: {\n\t\tclass: 'dropdown-menu',\n\t\t'[class.show]': 'dropdown.isOpen()',\n\t\t'(keydown.ArrowUp)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.ArrowDown)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.Home)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.End)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.Enter)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.Space)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.Tab)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.Shift.Tab)': 'dropdown.onKeyDown($any($event))',\n\t},\n})\nexport class NgbDropdownMenu {\n\tdropdown = inject(NgbDropdown);\n\tnativeElement = inject(ElementRef).nativeElement as HTMLElement;\n\n\t@ContentChildren(NgbDropdownItem) menuItems: QueryList<NgbDropdownItem>;\n}\n\n/**\n * A directive to mark an element to which dropdown menu will be anchored.\n *\n * This is a simple version of the `NgbDropdownToggle` directive.\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\n * for events other than click.\n *\n * @since 1.1.0\n */\n@Directive({\n\tselector: '[ngbDropdownAnchor]',\n\thost: {\n\t\tclass: 'dropdown-toggle',\n\t\t'[class.show]': 'dropdown.isOpen()',\n\t\t'[attr.aria-expanded]': 'dropdown.isOpen()',\n\t},\n})\nexport class NgbDropdownAnchor {\n\tdropdown = inject(NgbDropdown);\n\tnativeElement = inject(ElementRef).nativeElement as HTMLElement;\n}\n\n/**\n * A directive to mark an element that will toggle dropdown via the `click` event.\n *\n * You can also use `NgbDropdownAnchor` as an alternative.\n */\n@Directive({\n\tselector: '[ngbDropdownToggle]',\n\thost: {\n\t\tclass: 'dropdown-toggle',\n\t\t'[class.show]': 'dropdown.isOpen()',\n\t\t'[attr.aria-expanded]': 'dropdown.isOpen()',\n\t\t'(click)': 'dropdown.toggle()',\n\t\t'(keydown.ArrowUp)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.ArrowDown)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.Home)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.End)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.Tab)': 'dropdown.onKeyDown($any($event))',\n\t\t'(keydown.Shift.Tab)': 'dropdown.onKeyDown($any($event))',\n\t},\n\tproviders: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }],\n})\nexport class NgbDropdownToggle extends NgbDropdownAnchor {}\n\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\n@Directive({\n\tselector: '[ngbDropdown]',\n\texportAs: 'ngbDropdown',\n\thost: { '[class.show]': 'isOpen()' },\n})\nexport class NgbDropdown implements OnInit, AfterContentInit, OnChanges, OnDestroy {\n\tstatic ngAcceptInputType_autoClose: boolean | string;\n\tstatic ngAcceptInputType_display: string;\n\n\tprivate _changeDetector = inject(ChangeDetectorRef);\n\tprivate _config = inject(NgbDropdownConfig);\n\tprivate _document = inject(DOCUMENT);\n\tprivate _injector = inject(Injector);\n\tprivate _ngZone = inject(NgZone);\n\tprivate _nativeElement = inject(ElementRef).nativeElement as HTMLElement;\n\n\tprivate _destroyCloseHandlers$ = new Subject<void>();\n\tprivate _afterRenderRef: AfterRenderRef | undefined;\n\tprivate _bodyContainer: HTMLElement | null = null;\n\n\tprivate _positioning = ngbPositioning();\n\n\t@ContentChild(NgbDropdownMenu, { static: false }) private _menu: NgbDropdownMenu;\n\t@ContentChild(NgbDropdownAnchor, { static: false }) private _anchor: NgbDropdownAnchor;\n\n\t/**\n\t * Indicates whether the dropdown should be closed when clicking one of dropdown items or pressing ESC.\n\t *\n\t * * `true` - the dropdown will close on both outside and inside (menu) clicks.\n\t * * `false` - the dropdown can only be closed manually via `close()` or `toggle()` methods.\n\t * * `\"inside\"` - the dropdown will close on inside menu clicks, but not outside clicks.\n\t * * `\"outside\"` - the dropdown will close only on the outside clicks and not on menu clicks.\n\t */\n\t@Input() autoClose = this._config.autoClose;\n\n\t/**\n\t * A custom class that is applied only to the `ngbDropdownMenu` parent element.\n\t * * In case of the inline dropdown it will be the `<div ngbDropdown>`\n\t * * In case of the dropdown with `container=\"body\"` it will be the `<div class=\"dropdown\">` attached to the `<body>`\n\t *\n\t * Useful mainly when dropdown is attached to the body.\n\t * If the dropdown is inline just use `<div ngbDropdown class=\"custom-class\">` instead.\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() dropdownClass: string;\n\n\t/**\n\t * Defines whether or not the dropdown menu is opened initially.\n\t */\n\t@Input('open') _open = false;\n\n\t/**\n\t * The preferred placement of the dropdown, among the [possible values](#/guides/positioning#api).\n\t *\n\t * The default order of preference is `\"bottom-start bottom-end top-start top-end\"`\n\t *\n\t * Please see the [positioning overview](#/positioning) for more details.\n\t */\n\t@Input() placement = this._config.placement;\n\n\t/**\n\t * Allows to change default Popper options when positioning the dropdown.\n\t * Receives current popper options and returns modified ones.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() popperOptions = this._config.popperOptions;\n\n\t/**\n\t * A selector specifying the element the dropdown should be appended to.\n\t * Currently only supports \"body\".\n\t *\n\t * @since 4.1.0\n\t */\n\t@Input() container: null | 'body' = this._config.container;\n\n\t/**\n\t * Enable or disable the dynamic positioning. The default value is dynamic unless the dropdown is used\n\t * inside a Bootstrap navbar. If you need custom placement for a dropdown in a navbar, set it to\n\t * dynamic explicitly. See the [positioning of dropdown](#/positioning#dropdown)\n\t * and the [navbar demo](/#/components/dropdown/examples#navbar) for more details.\n\t *\n\t * @since 4.2.0\n\t */\n\t@Input() display: 'dynamic' | 'static';\n\n\t/**\n\t * An event fired when the dropdown is opened or closed.\n\t *\n\t * The event payload is a `boolean`:\n\t * * `true` - the dropdown was opened\n\t * * `false` - the dropdown was closed\n\t */\n\t@Output() openChange = new EventEmitter<boolean>();\n\n\tngOnInit(): void {\n\t\tif (!this.display) {\n\t\t\tthis.display = this._nativeElement.closest('.navbar') ? 'static' : 'dynamic';\n\t\t}\n\t}\n\n\tngAfterContentInit() {\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\twrite: () => {\n\t\t\t\t\tthis._applyPlacementClasses();\n\t\t\t\t\tif (this._open) {\n\t\t\t\t\t\tthis._setCloseHandlers();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes.container && this._open) {\n\t\t\tthis._applyContainer(this.container);\n\t\t}\n\n\t\tif (changes.placement && !changes.placement.firstChange) {\n\t\t\tthis._positioning.setOptions({\n\t\t\t\thostElement: this._anchor.nativeElement,\n\t\t\t\ttargetElement: this._bodyContainer || this._menu.nativeElement,\n\t\t\t\tplacement: this.placement,\n\t\t\t});\n\t\t\tthis._applyPlacementClasses();\n\t\t}\n\n\t\tif (changes.dropdownClass) {\n\t\t\tconst { currentValue, previousValue } = changes.dropdownClass;\n\t\t\tthis._applyCustomDropdownClass(currentValue, previousValue);\n\t\t}\n\n\t\tif (changes.autoClose && this._open) {\n\t\t\tthis.autoClose = changes.autoClose.currentValue;\n\t\t\tthis._setCloseHandlers();\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the dropdown menu is open.\n\t */\n\tisOpen(): boolean {\n\t\treturn this._open;\n\t}\n\n\t/**\n\t * Opens the dropdown menu.\n\t */\n\topen(): void {\n\t\tif (!this._open) {\n\t\t\tthis._open = true;\n\t\t\tthis._applyContainer(this.container);\n\t\t\tthis.openChange.emit(true);\n\t\t\tthis._setCloseHandlers();\n\t\t\tif (this._anchor) {\n\t\t\t\tthis._anchor.nativeElement.focus();\n\t\t\t\tif (this.display === 'dynamic') {\n\t\t\t\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\t\t\t\tthis._positioning.createPopper({\n\t\t\t\t\t\t\thostElement: this._anchor.nativeElement,\n\t\t\t\t\t\t\ttargetElement: this._bodyContainer || this._menu.nativeElement,\n\t\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\t\tupdatePopperOptions: (options) => this.popperOptions(addPopperOffset([0, 2])(options)),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._applyPlacementClasses();\n\t\t\t\t\t\tthis._afterRenderRef = afterEveryRender(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\twrite: () => {\n\t\t\t\t\t\t\t\t\tthis._positionMenu();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ injector: this._injector },\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _setCloseHandlers() {\n\t\tthis._destroyCloseHandlers$.next(); // destroy any existing close handlers\n\n\t\tngbAutoClose(\n\t\t\tthis._ngZone,\n\t\t\tthis._document,\n\t\t\tthis.autoClose,\n\t\t\t(source: SOURCE) => {\n\t\t\t\tthis.close();\n\t\t\t\tif (source === SOURCE.ESCAPE) {\n\t\t\t\t\tthis._anchor.nativeElement.focus();\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._destroyCloseHandlers$,\n\t\t\tthis._menu ? [this._menu.nativeElement] : [],\n\t\t\tthis._anchor ? [this._anchor.nativeElement] : [],\n\t\t\t'.dropdown-item,.dropdown-divider',\n\t\t);\n\t}\n\n\t/**\n\t * Closes the dropdown menu.\n\t */\n\tclose(): void {\n\t\tif (this._open) {\n\t\t\tthis._open = false;\n\t\t\tthis._resetContainer();\n\t\t\tthis._positioning.destroy();\n\t\t\tthis._afterRenderRef?.destroy();\n\t\t\tthis._destroyCloseHandlers$.next();\n\t\t\tthis.openChange.emit(false);\n\t\t\tthis._changeDetector.markForCheck();\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the dropdown menu.\n\t */\n\ttoggle(): void {\n\t\tif (this.isOpen()) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis.close();\n\t}\n\n\tonKeyDown(event: KeyboardEvent) {\n\t\tconst { key } = event;\n\t\tconst itemElements = this._getMenuElements();\n\n\t\tlet position = -1;\n\t\tlet itemElement: HTMLElement | null = null;\n\t\tconst isEventFromToggle = this._isEventFromToggle(event);\n\n\t\tif (!isEventFromToggle && itemElements.length) {\n\t\t\titemElements.forEach((item, index) => {\n\t\t\t\tif (item.contains(event.target as HTMLElement)) {\n\t\t\t\t\titemElement = item;\n\t\t\t\t}\n\t\t\t\tif (item === getActiveElement(this._document)) {\n\t\t\t\t\tposition = index;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// closing on Enter / Space\n\t\tif (key === ' ' || key === 'Enter') {\n\t\t\tif (itemElement && (this.autoClose === true || this.autoClose === 'inside')) {\n\t\t\t\t// Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\n\t\t\t\t// So we have to register a one-time click handler that will fire after any user defined click handlers\n\t\t\t\t// to close the dropdown\n\t\t\t\tfromEvent(itemElement, 'click')\n\t\t\t\t\t.pipe(take(1))\n\t\t\t\t\t.subscribe(() => this.close());\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (key === 'Tab') {\n\t\t\tif (event.target && this.isOpen() && this.autoClose) {\n\t\t\t\tif (this._anchor.nativeElement === event.target) {\n\t\t\t\t\tif (this.container === 'body' && !event.shiftKey) {\n\t\t\t\t\t\t/* This case is special: user is using [Tab] from the anchor/toggle.\n User expects the next focusable element in the dropdown menu to get focus.\n But the menu is not a sibling to anchor/toggle, it is at the end of the body.\n Trick is to synchronously focus the menu element, and let the [keydown.Tab] go\n so that browser will focus the proper element (first one focusable in the menu) */\n\t\t\t\t\t\tthis._menu.nativeElement.setAttribute('tabindex', '0');\n\t\t\t\t\t\tthis._menu.nativeElement.focus();\n\t\t\t\t\t\tthis._menu.nativeElement.removeAttribute('tabindex');\n\t\t\t\t\t} else if (event.shiftKey) {\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t} else if (this.container === 'body') {\n\t\t\t\t\tconst focusableElements = this._menu.nativeElement.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR);\n\t\t\t\t\tif (event.shiftKey && event.target === focusableElements[0]) {\n\t\t\t\t\t\tthis._anchor.nativeElement.focus();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t} else if (!event.shiftKey && event.target === focusableElements[focusableElements.length - 1]) {\n\t\t\t\t\t\tthis._anchor.nativeElement.focus();\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfromEvent<FocusEvent>(event.target as HTMLElement, 'focusout')\n\t\t\t\t\t\t.pipe(take(1))\n\t\t\t\t\t\t.subscribe(({ relatedTarget }) => {\n\t\t\t\t\t\t\tif (!this._nativeElement.contains(relatedTarget as HTMLElement)) {\n\t\t\t\t\t\t\t\tthis.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// opening / navigating\n\t\tif (isEventFromToggle || itemElement) {\n\t\t\tthis.open();\n\n\t\t\tif (itemElements.length) {\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\t\tposition = Math.min(position + 1, itemElements.length - 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\t\tif (this._isDropup() && position === -1) {\n\t\t\t\t\t\t\tposition = itemElements.length - 1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tposition = Math.max(position - 1, 0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Home':\n\t\t\t\t\t\tposition = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'End':\n\t\t\t\t\t\tposition = itemElements.length - 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\titemElements[position].focus();\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tprivate _isDropup(): boolean {\n\t\treturn this._nativeElement.classList.contains('dropup');\n\t}\n\n\tprivate _isEventFromToggle(event: KeyboardEvent) {\n\t\treturn this._anchor.nativeElement.contains(event.target as HTMLElement);\n\t}\n\n\tprivate _getMenuElements(): HTMLElement[] {\n\t\treturn this._menu\n\t\t\t? this._menu.menuItems.filter(({ disabled }) => !disabled).map(({ nativeElement }) => nativeElement)\n\t\t\t: [];\n\t}\n\n\tprivate _positionMenu() {\n\t\tconst menu = this._menu;\n\t\tif (this.isOpen() && menu) {\n\t\t\tif (this.display === 'dynamic') {\n\t\t\t\tthis._positioning.update();\n\t\t\t\tthis._applyPlacementClasses();\n\t\t\t} else {\n\t\t\t\tthis._applyPlacementClasses(this._getFirstPlacement(this.placement));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _getFirstPlacement(placement: PlacementArray): Placement {\n\t\treturn Array.isArray(placement) ? placement[0] : (placement.split(' ')[0] as Placement);\n\t}\n\n\tprivate _resetContainer() {\n\t\tif (this._menu) {\n\t\t\tthis._nativeElement.appendChild(this._menu.nativeElement);\n\t\t}\n\t\tif (this._bodyContainer) {\n\t\t\tthis._document.body.removeChild(this._bodyContainer);\n\t\t\tthis._bodyContainer = null;\n\t\t}\n\t}\n\n\tprivate _applyContainer(container: null | 'body' = null) {\n\t\tthis._resetContainer();\n\t\tif (container === 'body') {\n\t\t\tconst dropdownMenuElement = this._menu.nativeElement;\n\t\t\tconst bodyContainer = (this._bodyContainer = this._bodyContainer || this._document.createElement('div'));\n\n\t\t\t// Override some styles to have the positioning working\n\t\t\tbodyContainer.style.position = 'absolute';\n\t\t\tdropdownMenuElement.style.position = 'static';\n\t\t\tbodyContainer.style.zIndex = '1055';\n\n\t\t\tbodyContainer.appendChild(dropdownMenuElement);\n\t\t\tthis._document.body.appendChild(bodyContainer);\n\t\t}\n\n\t\tthis._applyCustomDropdownClass(this.dropdownClass);\n\t}\n\n\tprivate _applyCustomDropdownClass(newClass: string, oldClass?: string) {\n\t\tconst targetElement = this.container === 'body' ? this._bodyContainer : this._nativeElement;\n\t\tif (targetElement) {\n\t\t\tif (oldClass) {\n\t\t\t\ttargetElement.classList.remove(oldClass);\n\t\t\t}\n\t\t\tif (newClass) {\n\t\t\t\ttargetElement.classList.add(newClass);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _applyPlacementClasses(placement?: Placement | null) {\n\t\tif (this._menu) {\n\t\t\tif (!placement) {\n\t\t\t\tplacement = this._getFirstPlacement(this.placement);\n\t\t\t}\n\n\t\t\t// remove the current placement classes\n\t\t\tthis._nativeElement.classList.remove('dropup', 'dropdown');\n\t\t\tif (this.display === 'static') {\n\t\t\t\tthis._menu.nativeElement.setAttribute('data-bs-popper', 'static');\n\t\t\t} else {\n\t\t\t\tthis._menu.nativeElement.removeAttribute('data-bs-popper');\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * apply the new placement\n\t\t\t * in case of top use up-arrow or down-arrow otherwise\n\t\t\t */\n\t\t\tconst dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n\t\t\tthis._nativeElement.classList.add(dropdownClass);\n\n\t\t\tif (this._bodyContainer) {\n\t\t\t\tthis._bodyContainer.classList.remove('dropup', 'dropdown');\n\t\t\t\tthis._bodyContainer.classList.add(dropdownClass);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport {\n\tNgbDropdown,\n\tNgbDropdownAnchor,\n\tNgbDropdownToggle,\n\tNgbDropdownMenu,\n\tNgbDropdownItem,\n\tNgbDropdownButtonItem,\n} from './dropdown';\n\nexport {\n\tNgbDropdown,\n\tNgbDropdownAnchor,\n\tNgbDropdownToggle,\n\tNgbDropdownMenu,\n\tNgbDropdownItem,\n\tNgbDropdownButtonItem,\n} from './dropdown';\nexport { NgbDropdownConfig } from './dropdown-config';\n\nconst NGB_DROPDOWN_DIRECTIVES = [\n\tNgbDropdown,\n\tNgbDropdownAnchor,\n\tNgbDropdownToggle,\n\tNgbDropdownMenu,\n\tNgbDropdownItem,\n\tNgbDropdownButtonItem,\n];\n\n@NgModule({\n\timports: NGB_DROPDOWN_DIRECTIVES,\n\texports: NGB_DROPDOWN_DIRECTIVES,\n})\nexport class NgbDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}