UNPKG

primeng

Version:

PrimeNG is an open source UI library for Angular featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeB

1 lines 26 kB
{"version":3,"file":"primeng-radiobutton.mjs","sources":["../../src/radiobutton/style/radiobuttonstyle.ts","../../src/radiobutton/radiobutton.ts","../../src/radiobutton/primeng-radiobutton.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst theme = ({ dt }) => `\n.p-radiobutton {\n position: relative;\n display: inline-flex;\n user-select: none;\n vertical-align: bottom;\n width: ${dt('radiobutton.width')};\n height: ${dt('radiobutton.height')};\n}\n\n.p-radiobutton-input {\n cursor: pointer;\n appearance: none;\n position: absolute;\n top: 0;\n inset-inline-start: 0;\n width: 100%;\n height: 100%;\n padding: 0;\n margin: 0;\n opacity: 0;\n z-index: 1;\n outline: 0 none;\n border: 1px solid transparent;\n border-radius: 50%;\n}\n\n.p-radiobutton-box {\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n border: 1px solid ${dt('radiobutton.border.color')};\n background: ${dt('radiobutton.background')};\n width: ${dt('radiobutton.width')};\n height: ${dt('radiobutton.height')};\n transition: background ${dt('radiobutton.transition.duration')}, color ${dt('radiobutton.transition.duration')}, border-color ${dt('radiobutton.transition.duration')}, box-shadow ${dt('radiobutton.transition.duration')}, outline-color ${dt(\n 'radiobutton.transition.duration'\n )};\n outline-color: transparent;\n box-shadow: ${dt('radiobutton.shadow')};\n}\n\n.p-radiobutton-icon {\n transition-duration: ${dt('radiobutton.transition.duration')};\n background: transparent;\n font-size: ${dt('radiobutton.icon.size')};\n width: ${dt('radiobutton.icon.size')};\n height: ${dt('radiobutton.icon.size')};\n border-radius: 50%;\n backface-visibility: hidden;\n transform: translateZ(0) scale(0.1);\n}\n\n.p-radiobutton:not(.p-disabled):has(.p-radiobutton-input:hover) .p-radiobutton-box {\n border-color: ${dt('radiobutton.hover.border.color')};\n}\n\n.p-radiobutton-checked .p-radiobutton-box {\n border-color: ${dt('radiobutton.checked.border.color')};\n background: ${dt('radiobutton.checked.background')};\n}\n\n.p-radiobutton-checked .p-radiobutton-box .p-radiobutton-icon {\n background: ${dt('radiobutton.icon.checked.color')};\n transform: translateZ(0) scale(1, 1);\n visibility: visible;\n}\n\n.p-radiobutton-checked:not(.p-disabled):has(.p-radiobutton-input:hover) .p-radiobutton-box {\n border-color: ${dt('radiobutton.checked.hover.border.color')};\n background: ${dt('radiobutton.checked.hover.background')};\n}\n\n.p-radiobutton:not(.p-disabled):has(.p-radiobutton-input:hover).p-radiobutton-checked .p-radiobutton-box .p-radiobutton-icon {\n background: ${dt('radiobutton.icon.checked.hover.color')};\n}\n\n.p-radiobutton:not(.p-disabled):has(.p-radiobutton-input:focus-visible) .p-radiobutton-box {\n border-color: ${dt('radiobutton.focus.border.color')};\n box-shadow: ${dt('radiobutton.focus.ring.shadow')};\n outline: ${dt('radiobutton.focus.ring.width')} ${dt('radiobutton.focus.ring.style')} ${dt('radiobutton.focus.ring.color')};\n outline-offset: ${dt('radiobutton.focus.ring.offset')};\n}\n\n.p-radiobutton-checked:not(.p-disabled):has(.p-radiobutton-input:focus-visible) .p-radiobutton-box {\n border-color: ${dt('radiobutton.checked.focus.border.color')};\n}\n\np-radiobutton.ng-invalid.ng-dirty .p-radiobutton-box {\n border-color: ${dt('radiobutton.invalid.border.color')};\n}\n\n.p-radiobutton.p-variant-filled .p-radiobutton-box {\n background: ${dt('radiobutton.filled.background')};\n}\n\n.p-radiobutton.p-variant-filled.p-radiobutton-checked .p-radiobutton-box {\n background: ${dt('radiobutton.checked.background')};\n}\n\n.p-radiobutton.p-variant-filled:not(.p-disabled):has(.p-radiobutton-input:hover).p-radiobutton-checked .p-radiobutton-box {\n background: ${dt('radiobutton.checked.hover.background')};\n}\n\n.p-radiobutton.p-disabled {\n opacity: 1;\n}\n\n.p-radiobutton.p-disabled .p-radiobutton-box {\n background: ${dt('radiobutton.disabled.background')};\n border-color: ${dt('radiobutton.checked.disabled.border.color')};\n}\n\n.p-radiobutton-checked.p-disabled .p-radiobutton-box .p-radiobutton-icon {\n background: ${dt('radiobutton.icon.disabled.color')};\n}\n\n.p-radiobutton-sm,\n.p-radiobutton-sm .p-radiobutton-box {\n width: ${dt('radiobutton.sm.width')};\n height: ${dt('radiobutton.sm.height')};\n}\n\n.p-radiobutton-sm .p-radiobutton-icon {\n font-size: ${dt('radiobutton.icon.sm.size')};\n width: ${dt('radiobutton.icon.sm.size')};\n height: ${dt('radiobutton.icon.sm.size')};\n}\n\n.p-radiobutton-lg,\n.p-radiobutton-lg .p-radiobutton-box {\n width: ${dt('radiobutton.lg.width')};\n height: ${dt('radiobutton.lg.height')};\n}\n\n.p-radiobutton-lg .p-radiobutton-icon {\n font-size: ${dt('radiobutton.icon.lg.size')};\n width: ${dt('radiobutton.icon.lg.size')};\n height: ${dt('radiobutton.icon.lg.size')};\n}\n`;\n\nconst classes = {\n root: ({ instance, props }) => [\n 'p-radiobutton p-component',\n {\n 'p-radiobutton-checked': instance.checked,\n 'p-disabled': props.disabled,\n 'p-invalid': props.invalid,\n 'p-variant-filled': props.variant ? props.variant === 'filled' : instance.config.inputStyle === 'filled' || instance.config.inputVariant === 'filled'\n }\n ],\n box: 'p-radiobutton-box',\n input: 'p-radiobutton-input',\n icon: 'p-radiobutton-icon'\n};\n\n@Injectable()\nexport class RadioButtonStyle extends BaseStyle {\n name = 'radiobutton';\n\n theme = theme;\n\n classes = classes;\n}\n\n/**\n *\n * RadioButton is an extension to standard radio button element with theming.\n *\n * [Live Demo](https://www.primeng.org/radiobutton/)\n *\n * @module radiobuttonstyle\n *\n */\nexport enum RadioButtonClasses {\n /**\n * Class name of the root element\n */\n root = 'p-radiobutton',\n /**\n * Class name of the box element\n */\n box = 'p-radiobutton-box',\n /**\n * Class name of the input element\n */\n input = 'p-radiobutton-input',\n /**\n * Class name of the icon element\n */\n icon = 'p-radiobutton-icon'\n}\n\nexport interface RadioButtonStyle extends BaseStyle {}\n","import { CommonModule } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, inject, Injectable, Injector, Input, NgModule, numberAttribute, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { SharedModule } from 'primeng/api';\nimport { AutoFocus } from 'primeng/autofocus';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Nullable } from 'primeng/ts-helpers';\nimport { RadioButtonClickEvent } from './radiobutton.interface';\nimport { RadioButtonStyle } from './style/radiobuttonstyle';\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 as any).control.control.root && controlPair[1].name === accessor.name;\n }\n}\n/**\n * RadioButton is an extension to standard radio button element with theming.\n * @group Components\n */\n@Component({\n selector: 'p-radioButton, p-radiobutton, p-radio-button',\n standalone: true,\n imports: [CommonModule, AutoFocus, SharedModule],\n template: `\n <div\n [ngStyle]=\"style\"\n [ngClass]=\"{\n 'p-radiobutton p-component': true,\n 'p-radiobutton-checked': checked,\n 'p-disabled': disabled,\n 'p-variant-filled': variant === 'filled' || config.inputStyle() === 'filled' || config.inputVariant() === 'filled',\n 'p-radiobutton-sm p-inputfield-sm': size === 'small',\n 'p-radiobutton-lg p-inputfield-lg': size === 'large'\n }\"\n [class]=\"styleClass\"\n [attr.data-pc-name]=\"'radiobutton'\"\n [attr.data-pc-section]=\"'root'\"\n >\n <input\n #input\n [attr.id]=\"inputId\"\n type=\"radio\"\n class=\"p-radiobutton-input\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [value]=\"value\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-checked]=\"checked\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onChange($event)\"\n [pAutoFocus]=\"autofocus\"\n />\n <div class=\"p-radiobutton-box\" [attr.data-pc-section]=\"'input'\">\n <div class=\"p-radiobutton-icon\" [attr.data-pc-section]=\"'icon'\"></div>\n </div>\n </div>\n `,\n providers: [RADIO_VALUE_ACCESSOR, RadioButtonStyle],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RadioButton extends BaseComponent implements ControlValueAccessor, OnInit, OnDestroy {\n /**\n * Value of the radiobutton.\n * @group Props\n */\n @Input() value: any;\n /**\n * The name of the form control.\n * @group Props\n */\n @Input() formControlName: string | undefined;\n /**\n * Name of the radiobutton group.\n * @group Props\n */\n @Input() name: string | undefined;\n /**\n * When present, it specifies that the element should be disabled.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\n /**\n * Specifies the input variant of the component.\n * @group Props\n */\n @Input() variant: 'filled' | 'outlined';\n /**\n * Defines the size of the component.\n * @group Props\n */\n @Input() size: 'large' | 'small';\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n @Input({ transform: numberAttribute }) tabindex: number | undefined;\n /**\n * Identifier of the focus input to match a label defined for the component.\n * @group Props\n */\n @Input() inputId: string | undefined;\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n @Input() ariaLabelledBy: string | undefined;\n /**\n * Used to define a string that labels the input element.\n * @group Props\n */\n @Input() ariaLabel: string | undefined;\n /**\n * Inline style of the component.\n * @group Props\n */\n @Input() style: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the component.\n * @group Props\n */\n @Input() styleClass: string | undefined;\n /**\n * When present, it specifies that the component should automatically get focus on load.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) autofocus: boolean | undefined;\n /**\n * Allows to select a boolean value.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) binary: boolean | undefined;\n /**\n * Callback to invoke on radio button click.\n * @param {RadioButtonClickEvent} event - Custom click event.\n * @group Emits\n */\n @Output() onClick: EventEmitter<RadioButtonClickEvent> = new EventEmitter<RadioButtonClickEvent>();\n /**\n * Callback to invoke when the receives focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n @Output() onFocus: EventEmitter<Event> = new EventEmitter<Event>();\n /**\n * Callback to invoke when the loses focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n @Output() onBlur: EventEmitter<Event> = new EventEmitter<Event>();\n\n @ViewChild('input') inputViewChild!: ElementRef;\n\n public onModelChange: Function = () => {};\n\n public onModelTouched: Function = () => {};\n\n public checked: Nullable<boolean>;\n\n public focused: Nullable<boolean>;\n\n control: Nullable<NgControl>;\n\n _componentStyle = inject(RadioButtonStyle);\n\n injector = inject(Injector);\n\n registry = inject(RadioControlRegistry);\n\n ngOnInit() {\n super.ngOnInit();\n this.control = this.injector.get(NgControl);\n this.checkName();\n this.registry.add(this.control, this);\n }\n\n onChange(event) {\n if (!this.disabled) {\n this.select(event);\n }\n }\n\n select(event: Event) {\n if (!this.disabled) {\n this.checked = true;\n this.onModelChange(this.value);\n this.registry.select(this);\n this.onClick.emit({ originalEvent: event, value: this.value });\n }\n }\n\n writeValue(value: any): void {\n if (!this.binary) {\n this.checked = value == this.value;\n } else {\n this.checked = !!value;\n }\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: Event) {\n this.focused = true;\n this.onFocus.emit(event);\n }\n\n onInputBlur(event: Event) {\n this.focused = false;\n this.onModelTouched();\n this.onBlur.emit(event);\n }\n\n /**\n * Applies focus to input field.\n * @group Method\n */\n public focus() {\n this.inputViewChild.nativeElement.focus();\n }\n\n ngOnDestroy() {\n this.registry.remove(this);\n super.ngOnDestroy();\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: [RadioButton, SharedModule],\n exports: [RadioButton, SharedModule]\n})\nexport class RadioButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}