{"version":3,"file":"koobiq-components-split-button.mjs","sources":["../../../packages/components/split-button/split-button.ts","../../../packages/components/split-button/split-button.module.ts","../../../packages/components/split-button/koobiq-components-split-button.ts"],"sourcesContent":["import {\n    AfterContentInit,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ContentChildren,\n    Input,\n    QueryList,\n    ViewEncapsulation\n} from '@angular/core';\nimport { KbqButton, KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqColorDirective, KbqComponentColors, kbqInjectNativeElement, ThemePalette } from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { delay } from 'rxjs/operators';\n\n@Component({\n    selector: 'kbq-split-button, [kbq-split-button]',\n    template: `\n        <ng-content select=\"[kbq-button]\" />\n\n        <ng-content select=\"[kbq-button]\" />\n    `,\n    styleUrls: ['./split-button.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-split-button',\n        '[class]': 'kbqStyle',\n        '[class.kbq-split-button_styles-for-nested]': 'buttons.length > 1',\n        '[class.kbq-split-button_first-disabled]': 'firstDisabled',\n        '[class.kbq-split-button_second-disabled]': 'secondDisabled'\n    }\n})\nexport class KbqSplitButton extends KbqColorDirective implements AfterContentInit {\n    private nativeElement = kbqInjectNativeElement();\n\n    /** @docs-private */\n    @ContentChildren(KbqButton) protected buttons: QueryList<KbqButton>;\n    /** @docs-private */\n    @ContentChild(KbqDropdownTrigger) protected dropdownTrigger: KbqDropdownTrigger;\n\n    /** Sets the width of the dropdown to the width of the trigger. Default is false */\n    @Input() panelAutoWidth: boolean = false;\n\n    /** component style, will be set for nested buttons */\n    @Input()\n    get kbqStyle(): string {\n        return `kbq-button_${this._kbqStyle}`;\n    }\n\n    set kbqStyle(value: KbqButtonStyles | string) {\n        this._kbqStyle = value || KbqButtonStyles.Filled;\n\n        this.updateStyle(this._kbqStyle);\n    }\n\n    private _kbqStyle: string | KbqButtonStyles = KbqButtonStyles.Filled;\n\n    /** component color, will be set for nested buttons */\n    @Input()\n    get color(): KbqComponentColors | ThemePalette | string {\n        return this._color;\n    }\n\n    set color(value: KbqComponentColors | ThemePalette | string) {\n        if (!value) return;\n\n        super.color = value;\n\n        this.updateColor(this.color);\n    }\n\n    /** Whether the checkbox is disabled. */\n    @Input({ transform: booleanAttribute })\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    set disabled(value: boolean) {\n        this._disabled = value;\n\n        this.updateDisabledState(this._disabled);\n    }\n\n    protected _disabled: boolean;\n\n    get firstDisabled(): boolean {\n        return this.buttons.first?.disabled;\n    }\n\n    get secondDisabled(): boolean {\n        return this.buttons.length > 1 && this.buttons.last?.disabled;\n    }\n\n    constructor() {\n        super();\n\n        this.color = KbqComponentColors.ContrastFade;\n    }\n\n    ngAfterContentInit(): void {\n        this.updateClasses();\n        this.updateStyle(this._kbqStyle);\n        this.updateColor(this.color);\n        this.updateDisabledState(this.disabled);\n        this.updateDropdownParams();\n\n        if (!this.buttons.length) {\n            throw new Error(`kbq-split-button must contain at least one button`);\n        }\n\n        this.buttons.changes.pipe(delay(0)).subscribe(() => {\n            this.updateClasses();\n            this.updateStyle(this._kbqStyle);\n            this.updateColor(this.color);\n            this.updateDropdownParams();\n        });\n    }\n\n    private updateClasses() {\n        this.buttons.forEach((button: KbqButton) => {\n            button.getHostElement().classList.remove(`kbq-split-button_first`, `kbq-split-button_second`);\n        });\n\n        this.buttons.first?.getHostElement().classList.add(`kbq-split-button_first`);\n        this.buttons.last?.getHostElement().classList.add(`kbq-split-button_second`);\n        this.buttons.forEach((button: KbqButton) => {\n            button.getHostElement().classList.add(`kbq-split-button_item`);\n        });\n    }\n\n    private updateColor(color: KbqComponentColors | ThemePalette | string) {\n        this.buttons?.forEach((button: KbqButton) => (button.color = color));\n    }\n\n    private updateStyle(style: KbqButtonStyles | string) {\n        this.buttons?.forEach((button: KbqButton) => (button.kbqStyle = style));\n    }\n\n    private updateDisabledState(state: boolean) {\n        if (state === undefined) return;\n\n        this.buttons?.forEach((button: KbqButton) => (button.disabled = state));\n    }\n\n    private updateDropdownParams = () => {\n        if (!this.dropdownTrigger) return;\n\n        this.dropdownTrigger.dropdown.xPosition = 'before';\n\n        if (this.panelAutoWidth) {\n            // we need to use a timeout of about 50ms to wait for the styles to apply\n            setTimeout(() => {\n                const { width } = this.nativeElement.getClientRects()[0];\n\n                this.dropdownTrigger.dropdown.triggerWidth = `${Math.round(width)}px`;\n            }, 50);\n        }\n    };\n}\n","import { NgModule } from '@angular/core';\nimport { KbqSplitButton } from './split-button';\n\n@NgModule({\n    imports: [\n        KbqSplitButton\n    ],\n    exports: [KbqSplitButton]\n})\nexport class KbqSplitButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}