{"version":3,"file":"fundamental-ngx-core-split-button.mjs","sources":["../../../../libs/core/split-button/split-button-utils/split-button.directives.ts","../../../../libs/core/split-button/split-button.component.ts","../../../../libs/core/split-button/split-button.component.html","../../../../libs/core/split-button/split-button.module.ts","../../../../libs/core/split-button/fundamental-ngx-core-split-button.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n/**\n * Directive used to identify the template which will populate the main action button.\n * Used to achieve complex buttons that require more than a string.\n *```html\n *    <fd-button-split>\n *        <ng-template fd-button-split-action-title>\n *            <p>Paragraph 1</p>\n *            <p>Paragraph 2</p>\n *        </ng-template>\n *        <fd-menu>\n *             <li fd-menu-item>\n *               <a fd-menu-interactive [routerLink]=\"'/'\">\n *                   <span fd-menu-title>option2</span>\n *               </a>\n *            </li>\n *            <li fd-menu-item>\n *               <a fd-menu-interactive [routerLink]=\"'/'\">\n *                   <span fd-menu-title>option2</span>\n *               </a>\n *            </li>\n *        </fd-menu>\n *    </fd-button-split>\n *</fd-button-split>\n *```\n */\n@Directive({\n    // TODO to be discussed\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fd-split-button-action-title]',\n    standalone: true\n})\nexport class SplitButtonActionTitle {}\n","import {\n    AfterContentInit,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    DestroyRef,\n    effect,\n    ElementRef,\n    EventEmitter,\n    inject,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    Renderer2,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ButtonType } from '@fundamental-ngx/core/button';\nimport { MenuComponent, MenuItemComponent } from '@fundamental-ngx/core/menu';\nimport { Subscription, tap } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { MenuTriggerDirective } from '@fundamental-ngx/core/menu';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { MainAction } from './main-action';\nimport { SplitButtonActionTitle } from './split-button-utils/split-button.directives';\n\nexport const splitButtonTextClass = 'fd-button-split__text';\nconst splitButtonTextClasses = [splitButtonTextClass];\n\n/**\n * Split Button component, used to enhance standard HTML button and add possibility to put some dropdown with\n * additional options.\n *\n * ```html\n * <fd-split-button>\n *   <fd-menu>\n *       <li fd-menu-item>\n *           <div fd-menu-interactive>\n *               <span fd-menu-title>Option 1</span>\n *           </div>\n *       </li>\n *       <li fd-menu-item>\n *           <div fd-menu-interactive>\n *               <span fd-menu-title>Option 2</span>\n *           </div>\n *       </li>\n *    </fd-menu>\n *</fd-split-button>\n * ```\n */\n@Component({\n    selector: 'fd-split-button',\n    templateUrl: 'split-button.component.html',\n    styleUrl: './split-button.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [contentDensityObserverProviders()],\n    imports: [NgClass, MenuTriggerDirective, ButtonComponent, NgTemplateOutlet, FdTranslatePipe]\n})\nexport class SplitButtonComponent implements AfterContentInit, OnChanges, OnDestroy, AfterViewInit {\n    /** The icon to include in the button. See the icon page for the list of icons. */\n    @Input()\n    glyph = 'slim-arrow-down';\n\n    /** Glyph font family */\n    @Input()\n    glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n    /** The icon to include in the button. See the icon page for the list of icons. */\n    @Input()\n    disabled: boolean;\n\n    /** The type of the button. Types include 'standard', 'positive', 'medium', and 'negative'.\n     * Leave empty for default (Action button).'*/\n    @Input()\n    fdType: ButtonType;\n\n    /** Title attribute used to describe expand button */\n    @Input()\n    expandButtonTitle: string;\n\n    /** Selected menu item */\n    @Input()\n    selected: MenuItemComponent;\n\n    /** Whether or not the element should keep a fixed width. The width could change if the text changes length. */\n    @Input()\n    fixedWidth = true;\n\n    /**\n     * The object that contains the mainActionTitle, keepMainAction option and the callback function that should be\n     * executed when the button is clicked.\n     */\n    @Input()\n    mainAction: MainAction;\n\n    /** aria-label attribute */\n    @Input()\n    arialLabel: string;\n\n    /** Event sent when primary button is clicked */\n    @Output()\n    readonly primaryButtonClicked: EventEmitter<Event> = new EventEmitter<Event>();\n\n    /** @hidden */\n    @ContentChild(SplitButtonActionTitle, { read: TemplateRef })\n    titleTemplate: TemplateRef<any> | null;\n\n    /** @hidden */\n    @ContentChild(MenuComponent)\n    menu: MenuComponent;\n\n    /** @hidden */\n    @ViewChild('mainActionButton', { read: ElementRef })\n    mainActionBtn: ElementRef;\n\n    /** @hidden */\n    @ViewChild('menuActionButton', { read: ElementRef })\n    menuActionBtn: ElementRef;\n\n    /** The Title for main action button */\n    mainActionTitle: string;\n\n    /** @hidden */\n    mainButtonWidth: string;\n\n    /** @hidden */\n    get typeClass(): string {\n        return this.fdType ? `fd-button-split--${this.fdType}` : '';\n    }\n\n    /** @hidden */\n    private _mainActionTitle: string;\n\n    /** @hidden */\n    private _menuItemSubscriptions = new Subscription();\n\n    /** @hidden */\n    private _menuSubscription = new Subscription();\n\n    /** @hidden */\n    private _contentDensitySubscription = new Subscription();\n\n    /** @hidden */\n    private _menuActivePathSubscription = new Subscription();\n\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n\n    /** @hidden */\n    constructor(\n        private _cdRef: ChangeDetectorRef,\n        private _destroyRef: DestroyRef,\n        private _contentDensityObserver: ContentDensityObserver,\n        private _renderer: Renderer2\n    ) {}\n\n    /** @hidden Emits event when main button is clicked */\n    onMainButtonClick(event: MouseEvent): void {\n        this.primaryButtonClicked.emit(event);\n        if (this.selected) {\n            this.selected.elementRef.nativeElement.click();\n        } else if (this.mainAction && this.mainAction.callback) {\n            this.mainAction.callback();\n        }\n        event.stopPropagation();\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this.menu.menuItems.forEach((item: MenuItemComponent) => {\n            item.menuInteractive._fromSplitButton = true;\n        });\n        this._setupMenuSubscription();\n        this._setupMenuItemSubscriptions();\n        this._handleMainActionObject();\n\n        if (!this.mainActionTitle && !this.titleTemplate && !this.selected) {\n            this.selectMenuItem(this.menu.menuItems[0] as MenuItemComponent);\n        } else if (!this.mainActionTitle && this.selected) {\n            this.selectMenuItem(this.selected);\n        }\n\n        this._menuActivePathSubscription.add(\n            this.menu.activePath.subscribe((items) => {\n                const lastItem = items[items.length - 1];\n                if (lastItem && !lastItem.submenu) {\n                    this.menu.close();\n                    this._focusTriggerElement();\n                }\n            })\n        );\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._contentDensityObserver.isCompact$\n            .pipe(tap(this._addButtonTextClass), takeUntilDestroyed(this._destroyRef))\n            .subscribe();\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if ('selected' in changes) {\n            this.selectMenuItem(this.selected);\n        }\n        if ('mainAction' in changes) {\n            this._handleMainActionObject();\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._menuItemSubscriptions.unsubscribe();\n        this._menuSubscription.unsubscribe();\n        this._contentDensitySubscription.unsubscribe();\n        this._menuActivePathSubscription.unsubscribe();\n    }\n\n    /** Function called to select a menu item for the split button. */\n    selectMenuItem(menuItem: MenuItemComponent): void {\n        if (menuItem && (!this.mainAction || !this.mainAction.keepMainAction)) {\n            menuItem.setSelected(true);\n        }\n    }\n\n    /**\n     * Wrapper gets focused programmatically by menu\n     * when the \"escape\" button is pressed.\n     * In this case we need to transit focus to the \"more actions\" button\n     */\n    _onGroupFocused(): void {\n        this._focusTriggerElement();\n    }\n\n    /** @hidden */\n    private _getMainButtonWidth(): void {\n        if (this.mainActionBtn && this.mainActionBtn.nativeElement) {\n            this.mainButtonWidth = this.mainActionBtn.nativeElement.getBoundingClientRect().width + 'px';\n        }\n    }\n\n    /** @hidden */\n    private _setupMenuItemSubscriptions(): void {\n        this.menu.menuItems.forEach((menuItem: MenuItemComponent) => {\n            menuItem.onSelect.pipe(first()).subscribe(() => {\n                if (this.fixedWidth) {\n                    this._getMainButtonWidth();\n                }\n            });\n            this._menuItemSubscriptions.add(\n                menuItem.onSelect.subscribe(() => {\n                    this._handleMenuItemSelection(menuItem);\n                })\n            );\n        });\n    }\n\n    /** @hidden */\n    private _handleMenuItemSelection(menuItem: MenuItemComponent): void {\n        if (!this.mainAction || !this.mainAction.keepMainAction) {\n            this.selected = menuItem;\n            this.menu.menuItems.forEach((item: MenuItemComponent) => {\n                item.setSelected(false, true);\n            });\n            menuItem.setSelected(true, true);\n            this.titleTemplate = null;\n            this.mainActionTitle = menuItem.menuItemTitle.title;\n            this._cdRef.detectChanges();\n        }\n    }\n\n    /** @hidden */\n    private _setupMenuSubscription(): void {\n        // React to menu items changes using effect with signal\n        effect(\n            () => {\n                // Read the signal to track it\n                const menuItems = this.menu.menuItems;\n                // Only rebuild subscriptions if menu items actually exist\n                if (menuItems.length > 0) {\n                    this._menuItemSubscriptions.unsubscribe();\n                    this._menuItemSubscriptions.closed = false;\n                    this._setupMenuItemSubscriptions();\n                }\n            },\n            { injector: this._injector }\n        );\n        // call markForCheck once menu open state gets changed\n        this._menuSubscription.add(this.menu.isOpenChange.subscribe(() => this._cdRef.markForCheck()));\n    }\n\n    /** @hidden */\n    private _handleMainActionObject(): void {\n        if (this.mainAction && typeof this.mainAction.mainActionTitle === 'string') {\n            this.mainActionTitle = this.mainAction.mainActionTitle;\n        } else if (this.mainAction && this.mainAction.mainActionTitle instanceof TemplateRef) {\n            this.titleTemplate = this.mainAction.mainActionTitle;\n        }\n    }\n\n    /** @hidden */\n    private _addButtonTextClass = (): void => {\n        const textSpanElement = this.mainActionBtn?.nativeElement.querySelector('.fd-button__text');\n        if (!textSpanElement) {\n            return;\n        }\n        splitButtonTextClasses.forEach((_class) => this._renderer.removeClass(textSpanElement, _class));\n        this._renderer.addClass(textSpanElement, splitButtonTextClass);\n    };\n\n    /** @hidden */\n    private _focusTriggerElement(): void {\n        this.menuActionBtn?.nativeElement.focus();\n    }\n}\n","<div\n    class=\"fd-button-split fd-has-margin-right-small\"\n    [ngClass]=\"typeClass\"\n    role=\"group\"\n    tabindex=\"-1\"\n    [attr.aria-label]=\"arialLabel || ('coreSplitButton.arialLabel' | fdTranslate)()\"\n    [fdMenuTrigger]=\"menu\"\n    (focus)=\"_onGroupFocused()\"\n>\n    <button\n        fd-button\n        #mainActionButton\n        [label]=\"mainActionTitle\"\n        [style.width]=\"mainButtonWidth\"\n        [fdType]=\"fdType\"\n        [disabled]=\"disabled\"\n        (click)=\"onMainButtonClick($event)\"\n    >\n        <ng-template [ngTemplateOutlet]=\"titleTemplate\"></ng-template>\n    </button>\n\n    <button\n        fd-button\n        #menuActionButton\n        [glyph]=\"glyph\"\n        [glyphFont]=\"glyphFont\"\n        [fdType]=\"fdType\"\n        [disabled]=\"disabled\"\n        [ariaLabel]=\"('coreSplitButton.expandButtonAriaLabel' | fdTranslate)()\"\n        [attr.title]=\"expandButtonTitle || ('coreSplitButton.expandButtonAriaLabel' | fdTranslate)()\"\n        [class.is-active]=\"menu.isOpen()\"\n    ></button>\n    <ng-content select=\"fd-menu\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { SplitButtonActionTitle } from './split-button-utils/split-button.directives';\nimport { SplitButtonComponent } from './split-button.component';\n\n/**\n * @deprecated\n * Use individual component imports.\n */\n@NgModule({\n    imports: [SplitButtonComponent, SplitButtonActionTitle],\n    exports: [SplitButtonComponent, SplitButtonActionTitle]\n})\nexport class SplitButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}