{"version":3,"file":"primeng-radiobutton.umd.js","sources":["../../src/app/components/radiobutton/radiobutton.ts","../../src/app/components/radiobutton/primeng-radiobutton.ts"],"sourcesContent":["import {NgModule,Component,Input,Output,ElementRef,EventEmitter,forwardRef,ViewChild,ChangeDetectorRef,ChangeDetectionStrategy, Injectable, Injector, OnInit, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor, NgControl} from '@angular/forms';\n\nexport const RADIO_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => RadioButton),\n    multi: true\n};\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class RadioControlRegistry {\n    private accessors: any[] = [];\n\n    add(control: NgControl, accessor: RadioButton) {\n        this.accessors.push([control, accessor]);\n    }\n\n    remove(accessor: RadioButton) {\n        this.accessors = this.accessors.filter((c) => {\n            return c[1] !== accessor;\n        })\n    }\n\n    select(accessor: RadioButton) {\n        this.accessors.forEach((c) => {\n            if (this.isSameGroup(c, accessor) && c[1] !== accessor) {\n                c[1].writeValue(accessor.value);\n            }\n        });\n    }\n\n    private isSameGroup(controlPair: [NgControl, RadioButton], accessor: RadioButton): boolean {\n        if (!controlPair[0].control) {\n            return false;\n        }\n\n        return controlPair[0].control.root === accessor.control.control.root && controlPair[1].name === accessor.name;\n    }\n}\n\n@Component({\n    selector: 'p-radioButton',\n    template: `\n        <div [ngStyle]=\"style\" [ngClass]=\"{'p-radiobutton p-component':true,'p-radiobutton-checked': checked, 'p-radiobutton-disabled': disabled, 'p-radiobutton-focused': focused}\" [class]=\"styleClass\">\n            <div class=\"p-hidden-accessible\">\n                <input #rb type=\"radio\" [attr.id]=\"inputId\" [attr.name]=\"name\" [attr.value]=\"value\" [attr.tabindex]=\"tabindex\" [attr.aria-checked]=\"checked\" [attr.aria-label]=\"ariaLabel\"\n                    [attr.aria-labelledby]=\"ariaLabelledBy\" [checked]=\"checked\" (change)=\"onChange($event)\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" [disabled]=\"disabled\">\n            </div>\n            <div (click)=\"handleClick($event, rb, true)\" [ngClass]=\"{'p-radiobutton-box':true, 'p-highlight': checked, 'p-disabled': disabled, 'p-focus': focused}\">\n                <span class=\"p-radiobutton-icon\"></span>\n            </div>\n        </div>\n        <label (click)=\"select($event)\" [class]=\"labelStyleClass\"\n            [ngClass]=\"{'p-radiobutton-label':true, 'p-radiobutton-label-active':rb.checked, 'p-disabled':disabled, 'p-radiobutton-label-focus':focused}\"\n            *ngIf=\"label\" [attr.for]=\"inputId\">{{label}}</label>\n    `,\n    providers: [RADIO_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RadioButton implements ControlValueAccessor, OnInit, OnDestroy {\n\n    @Input() value: any;\n\n    @Input() formControlName: string;\n\n    @Input() name: string;\n\n    @Input() disabled: boolean;\n\n    @Input() label: string;\n\n    @Input() tabindex: number;\n\n    @Input() inputId: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() ariaLabel: string;\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() labelStyleClass: string;\n\n    @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('rb') inputViewChild: ElementRef;\n\n    public onModelChange: Function = () => {};\n\n    public onModelTouched: Function = () => {};\n\n    public checked: boolean;\n\n    public focused: boolean;\n\n    control: NgControl;\n\n    constructor(public cd: ChangeDetectorRef, private injector: Injector, private registry: RadioControlRegistry) {}\n\n    ngOnInit() {\n        this.control = this.injector.get(NgControl);\n        this.checkName();\n        this.registry.add(this.control, this);\n    }\n    \n    handleClick(event, radioButton, focus) {\n        event.preventDefault();\n\n        if (this.disabled) {\n            return;\n        }\n\n        this.select(event);\n\n        if (focus) {\n            radioButton.focus();\n        }\n    }\n    \n    select(event) {\n        if (!this.disabled) {\n            this.inputViewChild.nativeElement.checked = true;\n            this.checked = true;\n            this.onModelChange(this.value);\n            this.registry.select(this);\n            this.onClick.emit(event);\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.checked = (value == this.value);\n\n        if (this.inputViewChild && this.inputViewChild.nativeElement) {\n            this.inputViewChild.nativeElement.checked = this.checked;\n        }\n\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    onInputFocus(event) {\n        this.focused = true;\n        this.onFocus.emit(event);\n    }\n\n    onInputBlur(event) {\n        this.focused = false;\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onChange(event) {\n        this.select(event);\n    }\n\n    focus() {\n        this.inputViewChild.nativeElement.focus();\n    }\n\n    ngOnDestroy() {\n        this.registry.remove(this);\n    }\n\n    private checkName() {\n        if (this.name && this.formControlName && this.name !== this.formControlName) {\n            this.throwNameError();\n        }\n        if (!this.name && this.formControlName) {\n            this.name = this.formControlName;\n        }\n    }\n\n    private throwNameError() {\n        throw new Error(`\n          If you define both a name and a formControlName attribute on your radio button, their values\n          must match. Ex: <p-radioButton formControlName=\"food\" name=\"food\"></p-radioButton>\n        `);\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [RadioButton],\n    declarations: [RadioButton]\n})\nexport class RadioButtonModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NG_VALUE_ACCESSOR","forwardRef","Injectable","EventEmitter","NgControl","Component","ChangeDetectionStrategy","Input","Output","ViewChild","CommonModule","NgModule"],"mappings":"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"}