{"version":3,"file":"fundamental-ngx-core-checkbox.mjs","sources":["../../../../libs/core/checkbox/tokens.ts","../../../../libs/core/checkbox/checkbox/fd-checkbox-values.interface.ts","../../../../libs/core/checkbox/checkbox/checkbox.component.ts","../../../../libs/core/checkbox/checkbox/checkbox.component.html","../../../../libs/core/checkbox/checkbox.module.ts","../../../../libs/core/checkbox/fundamental-ngx-core-checkbox.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FD_CHECKBOX_COMPONENT = new InjectionToken('FdCheckboxComponent');\n","export interface FdCheckboxValues {\n    trueValue?: any;\n    falseValue?: any;\n    thirdStateValue?: any;\n}\n\nexport const FD_CHECKBOX_VALUES_DEFAULT: Readonly<FdCheckboxValues> = {\n    trueValue: true,\n    falseValue: false,\n    thirdStateValue: null\n};\n","import { CdkPortalOutlet, DomPortal, PortalModule } from '@angular/cdk/portal';\nimport { NgClass } from '@angular/common';\nimport {\n    AfterViewInit,\n    Attribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    Output,\n    Renderer2,\n    ViewChild,\n    ViewEncapsulation,\n    forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FormStates } from '@fundamental-ngx/cdk/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n    ContentDensityModule,\n    ContentDensityObserver,\n    contentDensityObserverProviders\n} from '@fundamental-ngx/core/content-density';\nimport { FormItemControl, registerFormItemControl } from '@fundamental-ngx/core/form';\nimport { shallowEqual } from 'fast-equals';\nimport { Subscription } from 'rxjs';\nimport { FD_CHECKBOX_COMPONENT } from '../tokens';\nimport { FD_CHECKBOX_VALUES_DEFAULT, FdCheckboxValues } from './fd-checkbox-values.interface';\n\nlet checkboxUniqueId = 0;\n\nexport type FdCheckboxTypes = 'checked' | 'unchecked' | 'indeterminate' | 'force-checked';\n\n@Component({\n    selector: 'fd-checkbox',\n    templateUrl: './checkbox.component.html',\n    styleUrl: './checkbox.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => CheckboxComponent),\n            multi: true\n        },\n        {\n            provide: FD_CHECKBOX_COMPONENT,\n            useExisting: CheckboxComponent\n        },\n        registerFormItemControl(CheckboxComponent),\n        contentDensityObserverProviders()\n    ],\n    host: { '[attr.tabindex]': '-1' },\n    imports: [FormsModule, NgClass, ContentDensityModule, PortalModule]\n})\nexport class CheckboxComponent<T = unknown> implements ControlValueAccessor, AfterViewInit, OnDestroy, FormItemControl {\n    /** @hidden */\n    @ViewChild('inputElement')\n    inputElement: ElementRef<HTMLInputElement>;\n\n    /** @hidden */\n    @ViewChild('labelElement')\n    labelElement: ElementRef;\n\n    /** Whether input label should be wrapped */\n    @Input() wrapLabel: boolean;\n\n    /** Vertical position of the label compared to the checkbox box */\n    @Input() valignLabel: 'top' | 'middle' = 'middle';\n\n    /** Sets the `aria-label` attribute to the element. */\n    @Input()\n    ariaLabel: Nullable<string>;\n\n    /**\n     * Sets the `role` attribute to the element.\n     * Default: checkbox\n     */\n    @Input()\n    role = 'checkbox';\n\n    /** Current selection state of the checkbox component */\n    @Input()\n    set value(value: T) {\n        this.writeValue(value);\n    }\n\n    get value(): T {\n        return this.checkboxValue;\n    }\n\n    /** Sets the `aria-labelledby` attribute to the element. */\n    @Input()\n    ariaLabelledBy: Nullable<string>;\n\n    /** Sets the `aria-describedby` attribute to the element. */\n    @Input()\n    ariaDescribedBy: Nullable<string>;\n\n    /** sets checkbox tooltip */\n    @Input()\n    title: Nullable<string>;\n\n    /** Sets [id] property of input, binds input with input label using [for] property. */\n    @Input()\n    inputId = `fd-checkbox-${checkboxUniqueId++}`;\n\n    /** State of control, changes visual appearance of control. */\n    @Input()\n    state?: FormStates;\n\n    /** Sets [name] property of input. */\n    @Input()\n    name: string;\n\n    /** Sets text of control label. */\n    @Input()\n    label: string;\n\n    /** Allows to disable/enable control. */\n    @Input()\n    disabled: boolean;\n\n    /** Disables editibility */\n    @Input()\n    readonly: boolean;\n\n    /** Enables controls third state. */\n    @Input()\n    tristate = false;\n\n    /** Allows to prevent user from manually selecting controls third state. */\n    @Input()\n    tristateSelectable = false;\n\n    /** Assigns given class to checkbox label element */\n    @Input()\n    labelClass: string;\n\n    /** If it is mandatory field */\n    @Input()\n    required = false;\n\n    /** Whether the checkbox should be rendered in display-only mode. */\n    @Input()\n    displayOnly = false;\n\n    /** Sets values returned by control. */\n    @Input()\n    set values(checkboxValues: FdCheckboxValues) {\n        this._values = { ...FD_CHECKBOX_VALUES_DEFAULT, ...(checkboxValues ?? {}) };\n    }\n\n    get values(): FdCheckboxValues {\n        return this._values;\n    }\n\n    /** Whether checkbox should be rendered standalone (without any text). */\n    @HostBinding('class.fd-checkbox--standalone')\n    @Input()\n    standalone = false;\n\n    /** @hidden */\n    @HostBinding('style.position')\n    readonly position = 'relative';\n\n    /** @hidden */\n    @HostBinding('style.outline')\n    readonly outline = 'none';\n\n    /** Emits event on focus change */\n    @Output() focusChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    /** @hidden */\n    @ViewChild('domPortal')\n    private readonly _domPortalContent: ElementRef<HTMLElement>;\n\n    /** @hidden */\n    @ViewChild(CdkPortalOutlet, { static: false })\n    private readonly _portalOutlet: CdkPortalOutlet;\n\n    /** Stores current checkbox value. */\n    checkboxValue: T;\n    /** Stores current checkbox state. */\n    checkboxState: FdCheckboxTypes;\n\n    /** @hidden */\n    _projectedContent = false;\n\n    /** @hidden Used to define if control is in 'indeterminate' state.*/\n    get isIndeterminate(): boolean {\n        return this.checkboxState === 'indeterminate';\n    }\n\n    /** @hidden Used to define if control is in 'checked' / 'unchecked' state. */\n    get isChecked(): boolean {\n        return this.checkboxState === 'checked' || this.checkboxState === 'force-checked';\n    }\n\n    /** @hidden */\n    _domPortal: DomPortal<HTMLElement>;\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden values returned by control. */\n    private _values: FdCheckboxValues = { ...FD_CHECKBOX_VALUES_DEFAULT };\n\n    /** @hidden */\n    constructor(\n        public elementRef: ElementRef<Element>,\n        @Attribute('tabIndexValue') public tabIndexValue: number = 0,\n        private _changeDetectorRef: ChangeDetectorRef,\n        private renderer: Renderer2,\n        readonly _contentDensityObserver: ContentDensityObserver\n    ) {\n        this.tabIndexValue = tabIndexValue;\n    }\n\n    /** @hidden Reference to callback provided by FormControl.*/\n    public onTouched = (): void => {};\n    /** @hidden Reference to callback provided by FormControl.*/\n    public onValueChange: (value: T) => void = () => {};\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._contentDensityObserver.consume(\n            {\n                elementRef: this.inputElement\n            },\n            {\n                elementRef: this.labelElement\n            }\n        );\n\n        this._domPortal = new DomPortal(this._domPortalContent);\n        this._projectedContent = !!this._domPortal.element.innerHTML.trim();\n        this._changeDetectorRef.detectChanges();\n        this._portalOutlet?.attach(this._domPortal);\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n\n    /**\n     * @hidden ControlValueAccessor interface\n     * - sets new control value\n     * - updates control state\n     */\n    writeValue(value: T): void {\n        this.checkboxValue = value;\n        this._setState();\n        this._detectChanges();\n    }\n\n    /** @hidden ControlValueAccessor interface method - sets onValueChange callback.*/\n    registerOnChange(fn: (value: T) => void): void {\n        this.onValueChange = fn;\n    }\n\n    /** @hidden ControlValueAccessor interface method - sets onTouched callback.*/\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    /** @hidden Called by FormControl - used to disable / enable control.*/\n    setDisabledState(disabled: boolean): void {\n        this.disabled = disabled;\n        this._detectChanges();\n    }\n\n    /** @hidden Called by FormControl - used to disable editablity.*/\n    setReadOnlyState(readonly: boolean): void {\n        this.readonly = readonly;\n        this._detectChanges();\n    }\n\n    /** @hidden */\n    setStyleState(state: FormStates): void {\n        this.state = state;\n        this._detectChanges();\n    }\n\n    /**\n     * @hidden\n     * Based on current control state:\n     * - sets next control value\n     * - emits new control value\n     * - updates control state based on new control value\n     * */\n    nextValue(previousValue?: FdCheckboxTypes): void {\n        switch (previousValue || this.checkboxState) {\n            case 'checked':\n                this.checkboxValue = this.values.falseValue;\n                break;\n            case 'unchecked':\n                this.checkboxValue =\n                    this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n                break;\n            case 'indeterminate':\n            case 'force-checked':\n                this.checkboxValue = this.values.trueValue;\n                this.renderer.setProperty(this.inputElement.nativeElement, 'checked', 'true');\n                break;\n            default:\n                this.checkboxValue =\n                    this.tristate && this.tristateSelectable ? this.values.thirdStateValue : this.values.trueValue;\n                break;\n        }\n        this._setState();\n        this.onValueChange(this.checkboxValue);\n        this._detectChanges();\n    }\n\n    /** @hidden handles blur event */\n    _onBlur(): void {\n        if (typeof this.onTouched === 'function') {\n            this.onTouched();\n        }\n        this.focusChange.emit(false);\n    }\n\n    /** @hidden handles focus event */\n    _onFocus(): void {\n        this.focusChange.emit(true);\n    }\n\n    /** @hidden handles click on the label associated with native checkbox input */\n    _onLabelClick(event: MouseEvent): void {\n        // We have to stop propagation for click events on the input label.\n        // By default, when a user clicks on a label element, a generated click event will be\n        // dispatched on the associated input element. This will lead to duplicated \"click\" event dispatched from the component\n        event.stopPropagation();\n\n        // If we have display-only mode, stop any possible actions by label click event.\n        this._handleDisplayAndReadOnly(event);\n    }\n\n    /**\n     * @hidden\n     * Event handler for cases when checkbox was toggled with the help of keyboard.\n     * @param event\n     */\n    _onLabelKeydown(event: Event): void {\n        // If we have display-only mode, stop any possible actions by label click event.\n        this._handleDisplayAndReadOnly(event);\n    }\n\n    /** @hidden handles click on the native checkbox input */\n    _onInputClick(event: MouseEvent): void {\n        // When there's a click event dispatched from the input, we have to catch it, process and then re-dispatch it further.\n        // This is needed in order to set the value to the component before any external listeners will receive it.\n        // Otherwise checkbox might be out of sync.\n        event.stopPropagation();\n        if (this.displayOnly || this.readonly) {\n            return;\n        }\n        this.nextValue();\n        this.elementRef.nativeElement.dispatchEvent(new MouseEvent(event.type, event));\n    }\n\n    /** @hidden */\n    private _handleDisplayAndReadOnly(event: Event): void {\n        if (!this.displayOnly && !this.readonly) {\n            return;\n        }\n        event.preventDefault();\n        event.stopImmediatePropagation();\n\n        if (this.readonly) {\n            this.inputElement.nativeElement.focus();\n        }\n    }\n\n    /** @hidden Based on current control value sets new control state. */\n    private _setState(): void {\n        if (shallowEqual(this.checkboxValue, this.values.trueValue)) {\n            this.checkboxState = 'checked';\n        } else if (shallowEqual(this.checkboxValue, this.values.falseValue)) {\n            this.checkboxState = 'unchecked';\n        } else if (this.tristate && shallowEqual(this.checkboxValue, this.values.thirdStateValue)) {\n            this.checkboxState = 'indeterminate';\n        } else if (!this.checkboxValue) {\n            this.checkboxState = 'unchecked';\n        }\n    }\n\n    /** Method to trigger change detection in component */\n    private _detectChanges(): void {\n        if (!this._changeDetectorRef['destroyed']) {\n            this._changeDetectorRef.detectChanges();\n        }\n    }\n}\n","<input\n    #inputElement\n    type=\"checkbox\"\n    class=\"fd-checkbox\"\n    [id]=\"inputId\"\n    [name]=\"name\"\n    [disabled]=\"disabled || displayOnly\"\n    [readonly]=\"readonly\"\n    [indeterminate]=\"isIndeterminate\"\n    [checked]=\"isChecked\"\n    [attr.tabindex]=\"tabIndexValue\"\n    [attr.role]=\"role\"\n    [attr.aria-checked]=\"isChecked ? 'true' : isIndeterminate ? 'mixed' : 'false'\"\n    [attr.aria-label]=\"ariaLabel\"\n    [attr.aria-labelledby]=\"ariaLabelledBy\"\n    [attr.aria-describedby]=\"ariaDescribedBy\"\n    [attr.aria-disabled]=\"disabled\"\n    [attr.aria-readonly]=\"readonly\"\n    [attr.aria-required]=\"required\"\n    [ngClass]=\"[displayOnly ? 'is-display' : disabled ? 'is-disabled' : '', state ? 'is-' + state : '']\"\n    (click)=\"_onInputClick($event)\"\n    (blur)=\"_onBlur()\"\n    (focus)=\"_onFocus()\"\n    (keyup.enter)=\"_onLabelKeydown($event)\"\n    (keyup.space)=\"_onLabelKeydown($event)\"\n/>\n<label\n    class=\"fd-checkbox__label\"\n    #labelElement\n    [for]=\"inputId\"\n    [class]=\"labelClass\"\n    [attr.title]=\"title\"\n    [class.fd-checkbox__label--required]=\"required\"\n    [class.fd-checkbox__label--wrap]=\"wrapLabel && valignLabel === 'middle'\"\n    [class.fd-checkbox__label--wrap-top-aligned]=\"wrapLabel && valignLabel === 'top'\"\n    (keyup.enter)=\"_onLabelKeydown($event)\"\n    (keyup.space)=\"_onLabelKeydown($event)\"\n    (click)=\"_onLabelClick($event)\"\n>\n    <span class=\"fd-checkbox__checkmark\" aria-hidden=\"true\"></span>\n    @if (label || _projectedContent) {\n        <div class=\"fd-checkbox__label-container\">\n            @if (label) {\n                <span class=\"fd-checkbox__text\">\n                    {{ label }}\n                </span>\n            } @else {\n                <span class=\"fd-checkbox__text\">\n                    <ng-template cdkPortalOutlet></ng-template>\n                </span>\n            }\n        </div>\n    }\n</label>\n<span [attr.hidden]=\"!_projectedContent ? true : null\" #domPortal>\n    <ng-content></ng-content>\n</span>\n","import { NgModule } from '@angular/core';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [ContentDensityModule, CheckboxComponent],\n    exports: [CheckboxComponent, ContentDensityModule]\n})\nexport class CheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}