UNPKG

igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

1 lines • 17.6 kB
{"version":3,"file":"igniteui-angular-banner.mjs","sources":["../../../projects/igniteui-angular/banner/src/banner/banner.directives.ts","../../../projects/igniteui-angular/banner/src/banner/banner.component.ts","../../../projects/igniteui-angular/banner/src/banner/banner.component.html","../../../projects/igniteui-angular/banner/src/banner/public_api.ts","../../../projects/igniteui-angular/banner/src/banner/banner.module.ts","../../../projects/igniteui-angular/banner/src/igniteui-angular-banner.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'igx-banner-actions',\n standalone: true\n})\nexport class IgxBannerActionsDirective { }\n","import { Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, inject } from '@angular/core';\n\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxButtonDirective, IgxRippleDirective } from 'igniteui-angular/directives';\nimport { IgxBannerActionsDirective } from './banner.directives';\nimport {\n CancelableEventArgs,\n IBaseEventArgs,\n BannerResourceStringsEN,\n IBannerResourceStrings,\n getCurrentResourceStrings,\n IToggleView\n} from 'igniteui-angular/core';\nimport { IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, ToggleAnimationSettings } from 'igniteui-angular/expansion-panel';\n\nexport interface BannerEventArgs extends IBaseEventArgs {\n event?: Event;\n}\n\nexport interface BannerCancelEventArgs extends BannerEventArgs, CancelableEventArgs {\n}\n/**\n * **Ignite UI for Angular Banner** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/banner.html)\n *\n * The Ignite UI Banner provides a highly template-able and easy to use banner that can be shown in your application.\n *\n * Usage:\n *\n * ```html\n * <igx-banner #banner>\n * Our privacy settings have changed.\n * <igx-banner-actions>\n * <button type=\"button\" igxButton=\"contained\">Read More</button>\n * <button type=\"button\" igxButton=\"contained\">Accept and Continue</button>\n * </igx-banner-actions>\n * </igx-banner>\n * ```\n */\n@Component({\n selector: 'igx-banner',\n templateUrl: 'banner.component.html',\n imports: [IgxExpansionPanelComponent, IgxExpansionPanelBodyComponent, IgxButtonDirective, IgxRippleDirective]\n})\nexport class IgxBannerComponent implements IToggleView {\n public elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * @hidden\n */\n @ContentChild(IgxIconComponent)\n public bannerIcon: IgxIconComponent;\n\n /**\n * Fires after the banner shows up\n * ```typescript\n * public handleOpened(event) {\n * ...\n * }\n * ```\n * ```html\n * <igx-banner (opened)=\"handleOpened($event)\"></igx-banner>\n * ```\n */\n @Output()\n public opened = new EventEmitter<BannerEventArgs>();\n\n /**\n * Fires before the banner shows up\n * ```typescript\n * public handleOpening(event) {\n * ...\n * }\n * ```\n * ```html\n * <igx-banner (opening)=\"handleOpening($event)\"></igx-banner>\n * ```\n */\n @Output()\n public opening = new EventEmitter<BannerCancelEventArgs>();\n\n /**\n * Fires after the banner hides\n * ```typescript\n * public handleClosed(event) {\n * ...\n * }\n * ```\n * ```html\n * <igx-banner (closed)=\"handleClosed($event)\"></igx-banner>\n * ```\n */\n @Output()\n public closed = new EventEmitter<BannerEventArgs>();\n\n /**\n * Fires before the banner hides\n * ```typescript\n * public handleClosing(event) {\n * ...\n * }\n * ```\n * ```html\n * <igx-banner (closing)=\"handleClosing($event)\"></igx-banner>\n * ```\n */\n @Output()\n public closing = new EventEmitter<BannerCancelEventArgs>();\n\n /** @hidden */\n public get useDefaultTemplate(): boolean {\n return !this._bannerActionTemplate;\n }\n\n /**\n * Set the animation settings used by the banner open/close methods\n * ```typescript\n * import { slideInLeft, slideOutRight } from 'igniteui-angular';\n * ...\n * banner.animationSettings: ToggleAnimationSettings = { openAnimation: slideInLeft, closeAnimation: slideOutRight };\n * ```\n */\n public set animationSettings(settings: ToggleAnimationSettings) {\n this._animationSettings = settings;\n }\n\n /**\n * Get the animation settings used by the banner open/close methods\n * ```typescript\n * let currentAnimations: ToggleAnimationSettings = banner.animationSettings\n * ```\n */\n @Input()\n public get animationSettings(): ToggleAnimationSettings {\n return this._animationSettings ? this._animationSettings : this._expansionPanel.animationSettings;\n }\n\n /**\n * Gets/Sets the resource strings.\n *\n * @remarks\n * By default it uses EN resources.\n */\n @Input()\n public set resourceStrings(value: IBannerResourceStrings) {\n this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n }\n\n public get resourceStrings(): IBannerResourceStrings {\n return this._resourceStrings;\n }\n\n /**\n * Gets/Sets whether the banner is expanded (visible) or collapsed (hidden).\n * Defaults to `false`.\n * Setting to `true` opens the banner, while `false` closes it.\n *\n * @example\n * // Expand the banner\n * banner.expanded = true;\n *\n * @example\n * // Collapse the banner\n * banner.expanded = false;\n *\n * @example\n * // Check if the banner is expanded\n * const isExpanded = banner.expanded;\n */\n @Input()\n public get expanded(): boolean {\n return this._expanded;\n }\n\n public set expanded(value: boolean) {\n if (value === this._expanded) {\n return;\n }\n\n this._expanded = value;\n this._shouldFireEvent = true;\n\n if (value) {\n this._expansionPanel.open();\n } else {\n this._expansionPanel.close();\n }\n }\n\n /**\n * Gets whether the banner is collapsed.\n *\n * ```typescript\n * const isCollapsed: boolean = banner.collapsed;\n * ```\n */\n public get collapsed(): boolean {\n return this._expansionPanel.collapsed;\n }\n\n /**\n * Returns the native element of the banner component\n * ```typescript\n * const myBannerElement: HTMLElement = banner.element;\n * ```\n */\n public get element() {\n return this.elementRef.nativeElement;\n }\n\n @HostBinding('class')\n public cssClass = 'igx-banner-host';\n\n /**\n * @hidden\n */\n @HostBinding('style.display')\n public get displayStyle(): string {\n return this.collapsed ? '' : 'block';\n }\n\n @ViewChild('expansionPanel', { static: true })\n private _expansionPanel: IgxExpansionPanelComponent;\n\n @ContentChild(IgxBannerActionsDirective)\n private _bannerActionTemplate: IgxBannerActionsDirective;\n\n private _expanded: boolean = false;\n private _shouldFireEvent: boolean = false;\n private _bannerEvent: BannerEventArgs;\n private _animationSettings: ToggleAnimationSettings;\n private _resourceStrings = getCurrentResourceStrings(BannerResourceStringsEN);\n\n /**\n * Opens the banner\n *\n * ```typescript\n * myBanner.open();\n * ```\n *\n * ```html\n * <igx-banner #banner>\n * ...\n * </igx-banner>\n * <button type=\"button\" (click)=\"banner.open()\">Open Banner</button>\n * ```\n */\n public open(event?: Event) {\n this._bannerEvent = { owner: this, event };\n const openingArgs: BannerCancelEventArgs = {\n owner: this,\n event,\n cancel: false\n };\n this.opening.emit(openingArgs);\n if (openingArgs.cancel) {\n return;\n }\n this._expansionPanel.open(event);\n this._expanded = true;\n this._shouldFireEvent = false;\n }\n\n /**\n * Closes the banner\n *\n * ```typescript\n * myBanner.close();\n * ```\n *\n * ```html\n * <igx-banner #banner>\n * ...\n * </igx-banner>\n * <button type=\"button\" (click)=\"banner.close()\">Close Banner</button>\n * ```\n */\n public close(event?: Event) {\n this._bannerEvent = { owner: this, event};\n const closingArgs: BannerCancelEventArgs = {\n owner: this,\n event,\n cancel: false\n };\n this.closing.emit(closingArgs);\n if (closingArgs.cancel) {\n return;\n }\n this._expansionPanel.close(event);\n this._expanded = false;\n this._shouldFireEvent = false;\n }\n\n /**\n * Toggles the banner\n *\n * ```typescript\n * myBanner.toggle();\n * ```\n *\n * ```html\n * <igx-banner #banner>\n * ...\n * </igx-banner>\n * <button type=\"button\" (click)=\"banner.toggle()\">Toggle Banner</button>\n * ```\n */\n public toggle(event?: Event) {\n if (this.collapsed) {\n this.open(event);\n } else {\n this.close(event);\n }\n }\n\n /** @hidden */\n public onExpansionPanelOpen() {\n if (this._shouldFireEvent) {\n return;\n }\n this.opened.emit(this._bannerEvent);\n }\n\n /** @hidden */\n public onExpansionPanelClose() {\n if (this._shouldFireEvent) {\n return;\n }\n this.closed.emit(this._bannerEvent);\n }\n}\n","<igx-expansion-panel #expansionPanel [animationSettings]=\"animationSettings\" (contentCollapsed)=\"onExpansionPanelClose()\" (contentExpanded)=\"onExpansionPanelOpen()\"\n [collapsed]=\"collapsed\" role=\"status\" aria-live=\"polite\" [attr.aria-hidden]=\"collapsed\">\n <igx-expansion-panel-body>\n <div class=\"igx-banner\">\n <div class=\"igx-banner__message\">\n @if (bannerIcon) {\n <div class=\"igx-banner__illustration\">\n <ng-content select=\"igx-icon\"></ng-content>\n </div>\n }\n <span class=\"igx-banner__text\">\n <ng-content></ng-content>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n @if (useDefaultTemplate) {\n <button type=\"button\" igxButton=\"flat\" igxRipple (click)=\"close()\">\n {{ resourceStrings.igx_banner_button_dismiss }}\n </button>\n } @else {\n <ng-content select=\"igx-banner-actions\"></ng-content>\n }\n </div>\n </div>\n </igx-expansion-panel-body>\n</igx-expansion-panel>\n","import { IgxBannerComponent } from './banner.component';\nimport { IgxBannerActionsDirective } from './banner.directives';\n\nexport * from './banner.component';\nexport * from './banner.directives';\n\n/* Banner directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_BANNER_DIRECTIVES = [\n IgxBannerComponent,\n IgxBannerActionsDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_BANNER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [...IGX_BANNER_DIRECTIVES],\n exports: [...IGX_BANNER_DIRECTIVES]\n})\nexport class IgxBannerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxBannerComponent","i2.IgxBannerActionsDirective"],"mappings":"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"}