{"version":3,"file":"fundamental-ngx-platform-split-menu-button.mjs","sources":["../../../../libs/platform/split-menu-button/split-menu-button.component.ts","../../../../libs/platform/split-menu-button/split-menu-button.component.html","../../../../libs/platform/split-menu-button/split-menu-button.module.ts","../../../../libs/platform/split-menu-button/fundamental-ngx-platform-split-menu-button.ts"],"sourcesContent":["import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n    ViewChild,\n    computed,\n    inject\n} from '@angular/core';\n\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent, ButtonType } from '@fundamental-ngx/core/button';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { MenuComponent, MenuTriggerDirective } from '@fundamental-ngx/platform/menu';\nimport { BaseComponent } from '@fundamental-ngx/platform/shared';\n\n/**\n * <fdp-split-menu-button [menu]=\"menu\" [buttonLabel]=\"Default button\" (primaryButtonClick)=\"onPrimaryButtonClick1()\">\n * </fdp-split-menu-button>\n *\n * <fdp-menu #menu xPosition=\"after|before\">\n *      <fdp-menu-item (itemSelect)=\"onItemSelect1('Option 1')\">Option 1</fdp-menu-item>\n *      <fdp-menu-item (itemSelect)=\"onItemSelect1('Option 2')\">Option 2</fdp-menu-item>\n *      <fdp-menu-item (itemSelect)=\"onItemSelect1('Option 3')\">Option 3</fdp-menu-item>\n * </fdp-menu>\n */\n@Component({\n    selector: 'fdp-split-menu-button',\n    templateUrl: './split-menu-button.component.html',\n    styleUrl: 'split-menu-button.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ButtonComponent, MenuTriggerDirective, FdTranslatePipe]\n})\nexport class SplitMenuButtonComponent extends BaseComponent implements OnInit, AfterViewInit {\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    /** text for tooltip */\n    @Input()\n    title: string;\n\n    /** text for tooltip */\n    @Input()\n    menuTitle: string;\n\n    /** Label for the first Button */\n    @Input()\n    buttonLabel: string;\n\n    /** reference to menu which will be controlled by split button */\n    @Input()\n    menu: MenuComponent;\n\n    /** The icon to include in the menu-button */\n    @Input()\n    icon: string;\n\n    /** Glyph font family */\n    @Input()\n    iconFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n    /** The type of the button.\n     * 'Emphasized', 'Ghost', 'standard', 'positive', 'negative', 'transparent'\n     * Leave empty for default.'*/\n    @Input()\n    type: ButtonType;\n\n    /** Event sent when split-menu-button primary button is clicked */\n    @Output()\n    primaryButtonClick: EventEmitter<any> = new EventEmitter();\n\n    /** @hidden */\n    @ViewChild('primaryBtn', { read: ElementRef })\n    primaryBtn: ElementRef;\n\n    /** used as id for Menu Button\n     * @hidden\n     */\n    public secondaryId: string;\n\n    /** @hidden */\n    primaryButtonWidth: string;\n    /** Defined max width of Split menu button */\n    splitButtonMaxWidth = '12rem';\n    /** @hidden */\n    get typeClass(): string {\n        return this.type ? `fd-button-split--${this.type}` : '';\n    }\n\n    /** handles rtl service\n     * @hidden */\n    protected readonly dir = computed<'ltr' | 'rtl'>(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'));\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** Tabindex for button. */\n    get tabindex(): number {\n        return this.disabled ? -1 : 0;\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this.secondaryId = 'secondary-' + this.id;\n        // if no title provided.\n        this.title = this.title || this.buttonLabel;\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        if (this.fixedWidth) {\n            this._setPrimaryButtonWidth();\n        }\n    }\n\n    /**\n     *  Handles split-menu-button button click\n     */\n    public primaryButtonClicked(event: any): void {\n        event.stopPropagation();\n        this.primaryButtonClick.emit();\n    }\n\n    /** @hidden */\n    private _setPrimaryButtonWidth(): void {\n        if (this.primaryBtn && this.primaryBtn.nativeElement) {\n            this.primaryButtonWidth = this.primaryBtn.nativeElement.getBoundingClientRect().width + 'px';\n        }\n    }\n}\n","<div\n    class=\"fd-button-split\"\n    [class]=\"typeClass\"\n    role=\"group\"\n    [attr.aria-label]=\"('platformSplitMenuButton.groupLabel' | fdTranslate)()\"\n    [attr.dir]=\"dir()\"\n    [style.max-width]=\"splitButtonMaxWidth\"\n>\n    <button\n        fd-button\n        #primaryBtn\n        [label]=\"buttonLabel\"\n        [style.width]=\"primaryButtonWidth\"\n        [style.overflow]=\"'hidden'\"\n        [attr.id]=\"id\"\n        [attr.name]=\"name\"\n        [attr.title]=\"title\"\n        [attr.aria-label]=\"buttonLabel\"\n        [disabled]=\"disabled\"\n        [fdType]=\"type\"\n        [glyph]=\"icon\"\n        [glyphFont]=\"iconFont\"\n        [attr.tabindex]=\"tabindex\"\n        (click)=\"primaryButtonClicked($event)\"\n    ></button>\n    <button\n        fd-button\n        [attr.id]=\"secondaryId\"\n        [attr.name]=\"name\"\n        [attr.title]=\"menuTitle\"\n        [attr.aria-label]=\"menuTitle\"\n        glyph=\"slim-arrow-down\"\n        [disabled]=\"disabled\"\n        [fdType]=\"type\"\n        [attr.tabindex]=\"tabindex\"\n        [attr.aria-haspopup]=\"true\"\n        [fdpMenuTriggerFor]=\"menu\"\n    ></button>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { SplitMenuButtonComponent } from './split-menu-button.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [SplitMenuButtonComponent, ContentDensityModule],\n    exports: [SplitMenuButtonComponent, ContentDensityModule]\n})\nexport class PlatformSplitMenuButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}