UNPKG

28.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"primeng-listbox.js","sources":["../../src/app/components/listbox/listbox.ts","../../src/app/components/listbox/primeng-listbox.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, Input, Output, EventEmitter, AfterContentInit, ContentChildren, ContentChild, QueryList, TemplateRef,forwardRef, ChangeDetectorRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SelectItem } from 'primeng/api';\nimport { SharedModule, PrimeTemplate, Footer, Header } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\nimport { ObjectUtils } from 'primeng/utils';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { FilterUtils } from 'primeng/utils';\nimport { RippleModule } from 'primeng/ripple'; \n\nexport const LISTBOX_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Listbox),\n multi: true\n};\n\n@Component({\n selector: 'p-listbox',\n template: `\n <div [ngClass]=\"'p-listbox p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\">\n <div class=\"p-listbox-header\" *ngIf=\"headerFacet || headerTemplate\">\n <ng-content select=\"p-header\"></ng-content>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </div>\n <div class=\"p-listbox-header\" *ngIf=\"(checkbox && multiple && showToggleAll) || filter\">\n <div class=\"p-checkbox p-component\" *ngIf=\"checkbox && multiple && showToggleAll\">\n <div class=\"p-hidden-accessible\">\n <input type=\"checkbox\" readonly=\"readonly\" [checked]=\"allChecked\" (focus)=\"onHeaderCheckboxFocus()\" (blur)=\"onHeaderCheckboxBlur()\" (keydown.space)=\"toggleAll($event)\">\n </div>\n <div #headerchkbox class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight': allChecked, 'p-focus': headerCheckboxFocus}\" (click)=\"toggleAll($event)\">\n <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':allChecked}\"></span>\n </div>\n </div>\n <div class=\"p-listbox-filter-container\" *ngIf=\"filter\">\n <input type=\"text\" [value]=\"filterValue||''\" (input)=\"onFilter($event)\" class=\"p-listbox-filter p-inputtext p-component\" [disabled]=\"disabled\" [attr.placeholder]=\"filterPlaceHolder\" [attr.aria-label]=\"ariaFilterLabel\">\n <span class=\"p-listbox-filter-icon pi pi-search\"></span>\n </div>\n </div>\n <div [ngClass]=\"'p-listbox-list-wrapper'\" [ngStyle]=\"listStyle\" [class]=\"listStyleClass\">\n <ul class=\"p-listbox-list\" role=\"listbox\" aria-multiselectable=\"multiple\">\n <li *ngFor=\"let option of options; let i = index;\" [style.display]=\"isItemVisible(option) ? 'flex' : 'none'\" [attr.tabindex]=\"option.disabled ? null : '0'\" pRipple\n [ngClass]=\"{'p-listbox-item':true,'p-highlight':isSelected(option), 'p-disabled': option.disabled}\" role=\"option\" [attr.aria-label]=\"option.label\"\n [attr.aria-selected]=\"isSelected(option)\" (click)=\"onOptionClick($event,option)\" (dblclick)=\"onOptionDoubleClick($event,option)\" (touchend)=\"onOptionTouchEnd($event,option)\" (keydown)=\"onOptionKeyDown($event,option)\">\n <div class=\"p-checkbox p-component\" *ngIf=\"checkbox && multiple\">\n <div class=\"p-checkbox-box\" [ngClass]=\"{'p-highlight':isSelected(option)}\">\n <span class=\"p-checkbox-icon\" [ngClass]=\"{'pi pi-check':isSelected(option)}\"></span>\n </div>\n </div>\n <span *ngIf=\"!itemTemplate\">{{option.label}}</span>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: option, index: i}\"></ng-container>\n </li>\n </ul>\n </div>\n <div class=\"p-listbox-footer\" *ngIf=\"footerFacet || footerTemplate\">\n <ng-content select=\"p-footer\"></ng-content>\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n </div>\n `,\n providers: [LISTBOX_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./listbox.css']\n})\nexport class Listbox implements AfterContentInit, ControlValueAccessor {\n\n @Input() multiple: boolean;\n\n @Input() style: any;\n\n @Input() styleClass: string;\n\n @Input() listStyle: any;\n\n @Input() listStyleClass: string;\n\n @Input() readonly: boolean;\n\n @Input() disabled: boolean;\n\n @Input() checkbox: boolean = false;\n\n @Input() filter: boolean = false;\n\n @Input() filterMode: string = 'contains';\n\n @Input() filterLocale: string;\n\n @Input() metaKeySelection: boolean = true;\n\n @Input() dataKey: string;\n\n @Input() showToggleAll: boolean = true;\n\n @Input() optionLabel: string;\n\n @Input() ariaFilterLabel: string;\n\n @Input() filterPlaceHolder: string;\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n @Output() onClick: EventEmitter<any> = new EventEmitter();\n\n @Output() onDblClick: EventEmitter<any> = new EventEmitter();\n\n @ViewChild('headerchkbox') headerCheckboxViewChild: ElementRef;\n\n @ContentChild(Header) headerFacet;\n\n @ContentChild(Footer) footerFacet;\n\n @ContentChildren(PrimeTemplate) templates: QueryList<any>;\n\n public itemTemplate: TemplateRef<any>;\n\n public headerTemplate: TemplateRef<any>;\n\n public footerTemplate: TemplateRef<any>;\n\n public _filterValue: string;\n\n public filtered: boolean;\n\n public value: any;\n\n public onModelChange: Function = () => { };\n\n public onModelTouched: Function = () => { };\n\n public optionTouched: boolean;\n\n public focus: boolean;\n\n public _options: any[];\n\n public headerCheckboxFocus: boolean;\n\n public disabledSelectedOptions: SelectItem[] = [];\n\n constructor(public el: ElementRef, public cd: ChangeDetectorRef) { }\n\n @Input() get options(): any[] {\n return this._options;\n }\n\n set options(val: any[]) {\n let opts = this.optionLabel ? ObjectUtils.generateSelectItems(val, this.optionLabel) : val;\n this._options = opts;\n }\n\n @Input() get filterValue(): string {\n return this._filterValue;\n }\n\n set filterValue(val: string) {\n this._filterValue = val;\n }\n\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'item':\n this.itemTemplate = item.template;\n break;\n\n case 'header':\n this.headerTemplate = item.template;\n break;\n\n case 'footer':\n this.footerTemplate = item.template;\n break;\n\n default:\n this.itemTemplate = item.template;\n break;\n }\n });\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.setDisabledSelectedOptions();\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 onOptionClick(event, option) {\n if (this.disabled || option.disabled || this.readonly) {\n return;\n }\n\n if (this.multiple) {\n if (this.checkbox)\n this.onOptionClickCheckbox(event, option);\n else\n this.onOptionClickMultiple(event, option);\n }\n else {\n this.onOptionClickSingle(event, option);\n }\n this.onClick.emit({\n originalEvent: event,\n option: option,\n value: this.value\n });\n this.optionTouched = false;\n }\n\n onOptionTouchEnd(event, option) {\n if (this.disabled || option.disabled || this.readonly) {\n return;\n }\n\n this.optionTouched = true;\n }\n\n onOptionDoubleClick(event: Event, option: SelectItem): any {\n if (this.disabled || option.disabled || this.readonly) {\n return;\n }\n\n this.onDblClick.emit({\n originalEvent: event,\n option: option,\n value: this.value\n })\n }\n\n onOptionClickSingle(event, option) {\n let selected = this.isSelected(option);\n let valueChanged = false;\n let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = (event.metaKey || event.ctrlKey);\n\n if (selected) {\n if (metaKey) {\n this.value = null;\n valueChanged = true;\n }\n }\n else {\n this.value = option.value;\n valueChanged = true;\n }\n }\n else {\n this.value = selected ? null : option.value;\n valueChanged = true;\n }\n\n if (valueChanged) {\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n\n onOptionClickMultiple(event, option) {\n let selected = this.isSelected(option);\n let valueChanged = false;\n let metaSelection = this.optionTouched ? false : this.metaKeySelection;\n\n if (metaSelection) {\n let metaKey = (event.metaKey || event.ctrlKey);\n\n if (selected) {\n if (metaKey) {\n this.removeOption(option);\n }\n else {\n this.value = [option.value];\n }\n valueChanged = true;\n }\n else {\n this.value = (metaKey) ? this.value || [] : [];\n this.value = [...this.value, option.value];\n valueChanged = true;\n }\n }\n else {\n if (selected) {\n this.removeOption(option);\n }\n else {\n this.value = [...this.value || [], option.value];\n }\n\n valueChanged = true;\n }\n\n if (valueChanged) {\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n }\n\n onOptionClickCheckbox(event, option) {\n if (this.disabled || this.readonly) {\n return;\n }\n\n let selected = this.isSelected(option);\n\n if (selected) {\n this.removeOption(option);\n }\n else {\n this.value = this.value ? this.value : [];\n this.value = [...this.value, option.value];\n }\n\n this.onModelChange(this.value);\n this.onChange.emit({\n originalEvent: event,\n value: this.value\n });\n }\n\n removeOption(option: any): void {\n this.value = this.value.filter(val => !ObjectUtils.equals(val, option.value, this.dataKey));\n }\n\n isSelected(option: SelectItem) {\n let selected = false;\n\n if (this.multiple) {\n if (this.value) {\n for (let val of this.value) {\n if (ObjectUtils.equals(val, option.value, this.dataKey)) {\n selected = true;\n break;\n }\n }\n }\n }\n else {\n selected = ObjectUtils.equals(this.value, option.value, this.dataKey);\n }\n\n return selected;\n }\n\n get allChecked(): boolean {\n if (this.filterValue) {\n return this.allFilteredSelected();\n }\n else {\n let optionCount = this.getEnabledOptionCount();\n let disabledSelectedOptionCount = this.disabledSelectedOptions.length;\n\n return this.value && this.options && (this.value.length > 0 && this.value.length == optionCount + disabledSelectedOptionCount);\n }\n }\n\n getEnabledOptionCount(): number {\n if (this.options) {\n let count = 0;\n for (let opt of this.options) {\n if (!opt.disabled) {\n count++;\n }\n }\n\n return count;\n }\n else {\n return 0;\n }\n }\n\n allFilteredSelected(): boolean {\n let allSelected: boolean;\n let options = this.filterValue ? this.getFilteredOptions() : this.options;\n\n if (this.value && options && options.length)  {\n allSelected = true;\n for (let opt of this.options) {\n if (this.isItemVisible(opt)) {\n if (!this.isSelected(opt)) {\n allSelected = false;\n break;\n }\n }\n }\n }\n\n return allSelected;\n }\n\n onFilter(event) {\n this._filterValue = event.target.value;\n }\n\n toggleAll(event) {\n if (this.disabled || this.readonly || !this.options || this.options.length === 0) {\n return;\n }\n\n if (this.allChecked) {\n if (this.disabledSelectedOptions && this.disabledSelectedOptions.length > 0) {\n let value = [];\n value = [...this.disabledSelectedOptions];\n this.value = value;\n }\n else {\n this.value = [];\n }\n }\n else {\n if (this.options) {\n this.value = [];\n if (this.disabledSelectedOptions && this.disabledSelectedOptions.length > 0) {\n this.value = [...this.disabledSelectedOptions];\n }\n\n for (let i = 0; i < this.options.length; i++) {\n let opt = this.options[i];\n if (this.isItemVisible(opt) && !opt.disabled) {\n this.value.push(opt.value);\n }\n }\n }\n }\n\n this.onModelChange(this.value);\n this.onChange.emit({ originalEvent: event, value: this.value });\n event.preventDefault();\n }\n\n isItemVisible(option: SelectItem): boolean {\n if (this.filterValue) {\n let visible;\n\n if (this.filterMode) {\n visible = FilterUtils[this.filterMode](option.label, this.filterValue, this.filterLocale);\n }\n else {\n visible = true;\n }\n\n return visible;\n }\n else {\n return true;\n }\n }\n\n onOptionKeyDown(event:KeyboardEvent, option) {\n if (this.readonly) {\n return;\n }\n\n let item = <HTMLLIElement> event.currentTarget;\n\n switch(event.which) {\n //down\n case 40:\n var nextItem = this.findNextItem(item);\n if (nextItem) {\n nextItem.focus();\n }\n\n event.preventDefault();\n break;\n\n //up\n case 38:\n var prevItem = this.findPrevItem(item);\n if (prevItem) {\n prevItem.focus();\n }\n\n event.preventDefault();\n break;\n\n //enter\n case 13:\n this.onOptionClick(event, option);\n event.preventDefault();\n break;\n }\n }\n\n findNextItem(item) {\n let nextItem = item.nextElementSibling;\n\n if (nextItem)\n return DomHandler.hasClass(nextItem, 'p-disabled') || DomHandler.isHidden(nextItem) ? this.findNextItem(nextItem) : nextItem;\n else\n return null;\n }\n\n findPrevItem(item) {\n let prevItem = item.previousElementSibling;\n\n if (prevItem)\n return DomHandler.hasClass(prevItem, 'p-disabled') || DomHandler.isHidden(prevItem) ? this.findPrevItem(prevItem) : prevItem;\n else\n return null;\n }\n\n getFilteredOptions() {\n let filteredOptions = [];\n if (this.filterValue) {\n for (let i = 0; i < this.options.length; i++) {\n let opt = this.options[i];\n if (this.isItemVisible(opt) && !opt.disabled) {\n filteredOptions.push(opt);\n }\n }\n return filteredOptions;\n }\n else {\n return this.options;\n }\n }\n\n onHeaderCheckboxFocus() {\n this.headerCheckboxFocus = true;\n }\n\n onHeaderCheckboxBlur() {\n this.headerCheckboxFocus = false;\n }\n\n setDisabledSelectedOptions(){\n if (this.options) {\n this.disabledSelectedOptions = [];\n if (this.value) {\n for (let opt of this.options) {\n if (opt.disabled && this.isSelected(opt)) {\n this.disabledSelectedOptions.push(opt.value);\n }\n }\n }\n }\n }\n}\n\n@NgModule({\n imports: [CommonModule, SharedModule, RippleModule],\n exports: [Listbox, SharedModule],\n declarations: [Listbox]\n})\nexport class ListboxModule { }\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
\No newline at end of file