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 22.7 kB
{"version":3,"file":"primeng-selectbutton.mjs","sources":["../../src/selectbutton/style/selectbuttonstyle.ts","../../src/selectbutton/selectbutton.ts","../../src/selectbutton/primeng-selectbutton.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BaseStyle } from 'primeng/base';\n\nconst theme = ({ dt }) => `\n.p-selectbutton {\n display: inline-flex;\n user-select: none;\n vertical-align: bottom;\n outline-color: transparent;\n border-radius: ${dt('selectbutton.border.radius')};\n}\n\n.p-selectbutton .p-togglebutton {\n border-radius: 0;\n border-width: 1px 1px 1px 0;\n}\n\n.p-selectbutton .p-togglebutton:focus-visible {\n position: relative;\n z-index: 1;\n}\n\n.p-selectbutton .p-togglebutton:first-child {\n border-inline-start-width: 1px;\n border-start-start-radius: ${dt('selectbutton.border.radius')};\n border-end-start-radius: ${dt('selectbutton.border.radius')};\n}\n\n.p-selectbutton .p-togglebutton:last-child {\n border-start-end-radius: ${dt('selectbutton.border.radius')};\n border-end-end-radius: ${dt('selectbutton.border.radius')};\n}\n\n.p-selectbutton.ng-invalid.ng-dirty {\n outline: 1px solid ${dt('selectbutton.invalid.border.color')};\n outline-offset: 0;\n}\n`;\n\nconst classes = {\n root: ({ props }) => [\n 'p-selectbutton p-component',\n {\n 'p-invalid': props.invalid\n }\n ]\n};\n\n@Injectable()\nexport class SelectButtonStyle extends BaseStyle {\n name = 'selectbutton';\n\n theme = theme;\n\n classes = classes;\n}\n\n/**\n *\n * SelectButton is used to choose single or multiple items from a list using buttons.\n *\n * [Live Demo](https://www.primeng.org/selectbutton/)\n *\n * @module selectbuttonstyle\n *\n */\nexport enum SelectButtonClasses {\n /**\n * Class name of the root element\n */\n root = 'p-selectbutton'\n}\n\nexport interface SelectButtonStyle extends BaseStyle {}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n NgModule,\n numberAttribute,\n Output,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { equals, resolveFieldData } from '@primeuix/utils';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { ToggleButton } from 'primeng/togglebutton';\nimport { SelectButtonChangeEvent, SelectButtonOptionClickEvent } from './selectbutton.interface';\nimport { SelectButtonStyle } from './style/selectbuttonstyle';\n\nexport const SELECTBUTTON_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectButton),\n multi: true\n};\n/**\n * SelectButton is used to choose single or multiple items from a list using buttons.\n * @group Components\n */\n@Component({\n selector: 'p-selectButton, p-selectbutton, p-select-button',\n standalone: true,\n imports: [ToggleButton, FormsModule, CommonModule, SharedModule],\n template: `\n @for (option of options; track option; let i = $index) {\n <p-toggleButton\n [autofocus]=\"autofocus\"\n [styleClass]=\"styleClass\"\n [ngModel]=\"isSelected(option)\"\n [onLabel]=\"this.getOptionLabel(option)\"\n [offLabel]=\"this.getOptionLabel(option)\"\n [disabled]=\"disabled || isOptionDisabled(option)\"\n (onChange)=\"onOptionSelect($event, option, i)\"\n [allowEmpty]=\"allowEmpty\"\n [size]=\"size\"\n >\n @if (itemTemplate || _itemTemplate) {\n <ng-template #content>\n <ng-container *ngTemplateOutlet=\"itemTemplate || _itemTemplate; context: { $implicit: option, index: i }\"></ng-container>\n </ng-template>\n }\n </p-toggleButton>\n }\n `,\n providers: [SELECTBUTTON_VALUE_ACCESSOR, SelectButtonStyle],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.p-selectbutton]': 'true',\n '[class.p-component]': 'true',\n '[style]': 'style',\n '[attr.role]': '\"group\"',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n '[attr.data-pc-section]': \"'root'\",\n '[attr.data-pc-name]': \"'selectbutton'\"\n }\n})\nexport class SelectButton extends BaseComponent implements AfterContentInit, ControlValueAccessor {\n /**\n * An array of selectitems to display as the available options.\n * @group Props\n */\n @Input() options: any[] | undefined;\n /**\n * Name of the label field of an option.\n * @group Props\n */\n @Input() optionLabel: string | undefined;\n /**\n * Name of the value field of an option.\n * @group Props\n */\n @Input() optionValue: string | undefined;\n /**\n * Name of the disabled field of an option.\n * @group Props\n */\n @Input() optionDisabled: string | undefined;\n /**\n * Whether selection can be cleared.\n * @group Props\n */\n get unselectable(): boolean {\n return this._unselectable;\n }\n private _unselectable: boolean = false;\n\n @Input({ transform: booleanAttribute })\n set unselectable(value: boolean) {\n this._unselectable = value;\n this.allowEmpty = !value;\n }\n\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n @Input({ transform: numberAttribute }) tabindex: number = 0;\n /**\n * When specified, allows selecting multiple values.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) multiple: boolean | undefined;\n /**\n * Whether selection can not be cleared.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) allowEmpty: boolean = true;\n /**\n * Inline style of the component.\n * @group Props\n */\n @Input() style: any;\n /**\n * Style class of the component.\n * @group Props\n */\n @Input() styleClass: 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 * Defines the size of the component.\n * @group Props\n */\n @Input() size: 'large' | 'small';\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 * A property to uniquely identify a value in options.\n * @group Props\n */\n @Input() dataKey: 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 * Callback to invoke on input click.\n * @param {SelectButtonOptionClickEvent} event - Custom click event.\n * @group Emits\n */\n @Output() onOptionClick: EventEmitter<SelectButtonOptionClickEvent> = new EventEmitter<SelectButtonOptionClickEvent>();\n /**\n * Callback to invoke on selection change.\n * @param {SelectButtonChangeEvent} event - Custom change event.\n * @group Emits\n */\n @Output() onChange: EventEmitter<SelectButtonChangeEvent> = new EventEmitter<SelectButtonChangeEvent>();\n /**\n * Template of an item in the list.\n * @group Templates\n */\n @ContentChild('item', { descendants: false }) itemTemplate: TemplateRef<any>;\n\n _itemTemplate: TemplateRef<any> | undefined;\n\n get equalityKey() {\n return this.optionValue ? null : this.dataKey;\n }\n\n value: any;\n\n onModelChange: Function = () => {};\n\n onModelTouched: Function = () => {};\n\n focusedIndex: number = 0;\n\n _componentStyle = inject(SelectButtonStyle);\n\n getOptionLabel(option: any) {\n return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option.label != undefined ? option.label : option;\n }\n\n getOptionValue(option: any) {\n return this.optionValue ? resolveFieldData(option, this.optionValue) : this.optionLabel || option.value === undefined ? option : option.value;\n }\n\n isOptionDisabled(option: any) {\n return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : option.disabled !== undefined ? option.disabled : false;\n }\n\n writeValue(value: any): void {\n this.value = value;\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 onOptionSelect(event, option, index) {\n if (this.disabled || this.isOptionDisabled(option)) {\n return;\n }\n\n let selected = this.isSelected(option);\n\n if (selected && this.unselectable) {\n return;\n }\n\n let optionValue = this.getOptionValue(option);\n let newValue;\n\n if (this.multiple) {\n if (selected) newValue = this.value.filter((val) => !equals(val, optionValue, this.equalityKey));\n else newValue = this.value ? [...this.value, optionValue] : [optionValue];\n } else {\n if (selected && !this.allowEmpty) {\n return;\n }\n newValue = selected ? null : optionValue;\n }\n\n this.focusedIndex = index;\n this.value = newValue;\n this.onModelChange(this.value);\n\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n\n this.onOptionClick.emit({\n originalEvent: event,\n option: option,\n index: index\n });\n }\n\n changeTabIndexes(event, direction) {\n let firstTabableChild, index;\n\n for (let i = 0; i <= this.el.nativeElement.children.length - 1; i++) {\n if (this.el.nativeElement.children[i].getAttribute('tabindex') === '0') firstTabableChild = { elem: this.el.nativeElement.children[i], index: i };\n }\n\n if (direction === 'prev') {\n if (firstTabableChild.index === 0) index = this.el.nativeElement.children.length - 1;\n else index = firstTabableChild.index - 1;\n } else {\n if (firstTabableChild.index === this.el.nativeElement.children.length - 1) index = 0;\n else index = firstTabableChild.index + 1;\n }\n\n this.focusedIndex = index;\n this.el.nativeElement.children[index].focus();\n }\n\n onFocus(event: Event, index: number) {\n this.focusedIndex = index;\n }\n\n onBlur() {\n this.onModelTouched();\n }\n\n removeOption(option: any): void {\n this.value = this.value.filter((val: any) => !equals(val, this.getOptionValue(option), this.dataKey));\n }\n\n isSelected(option: any) {\n let selected = false;\n const optionValue = this.getOptionValue(option);\n\n if (this.multiple) {\n if (this.value && Array.isArray(this.value)) {\n for (let val of this.value) {\n if (equals(val, optionValue, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n } else {\n selected = equals(this.getOptionValue(option), this.value, this.equalityKey);\n }\n\n return selected;\n }\n\n @ContentChildren(PrimeTemplate) templates: QueryList<PrimeTemplate> | undefined;\n\n ngAfterContentInit() {\n (this.templates as QueryList<PrimeTemplate>).forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this._itemTemplate = item.template;\n break;\n }\n });\n }\n}\n\n@NgModule({\n imports: [SelectButton, SharedModule],\n exports: [SelectButton, SharedModule]\n})\nexport class SelectButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}