UNPKG

27.1 kBSource Map (JSON)View Raw
1{"version":3,"sources":["ng://primeng/listbox/listbox.ts"],"names":["LISTBOX_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","Listbox","multi","el","cd","this","checkbox","filter","filterMode","metaKeySelection","showToggleAll","onChange","EventEmitter","onClick","onDblClick","onModelChange","onModelTouched","disabledSelectedOptions","Object","defineProperty","prototype","_options","val","opts","optionLabel","ObjectUtils","generateSelectItems","_filterValue","ngAfterContentInit","_this","templates","forEach","item","getType","itemTemplate","template","writeValue","value","setDisabledSelectedOptions","markForCheck","registerOnChange","fn","registerOnTouched","setDisabledState","disabled","onOptionClick","event","option","readonly","multiple","onOptionClickCheckbox","onOptionClickMultiple","onOptionClickSingle","emit","originalEvent","optionTouched","onOptionTouchEnd","onOptionDoubleClick","selected","isSelected","valueChanged","metaKey","ctrlKey","removeOption","__spread","equals","dataKey","_b","__values","_c","next","done","filterValue","allFilteredSelected","optionCount","getEnabledOptionCount","disabledSelectedOptionCount","length","options","count","allSelected","getFilteredOptions","opt","isItemVisible","onFilter","target","toggleAll","allChecked","i","push","preventDefault","FilterUtils","label","filterLocale","onInputFocus","focus","onInputBlur","onOptionKeyDown","currentTarget","which","nextItem","findNextItem","prevItem","findPrevItem","nextElementSibling","DomHandler","hasClass","isHidden","previousElementSibling","filteredOptions","onHeaderCheckboxFocus","headerCheckboxFocus","onHeaderCheckboxBlur","ElementRef","ChangeDetectorRef","__decorate","Input","Output","ViewChild","ContentChild","Header","Footer","ContentChildren","PrimeTemplate","Component","selector","providers","changeDetection","ChangeDetectionStrategy","Default","ListboxModule","NgModule","imports","CommonModule","SharedModule","exports","declarations"],"mappings":"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","sourcesContent":["import { NgModule, Component, ElementRef, Input, Output, EventEmitter, AfterContentInit, ContentChildren, ContentChild, QueryList, TemplateRef,forwardRef, ChangeDetectorRef, ViewChild, ChangeDetectionStrategy } 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';\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]=\"{'ui-listbox ui-inputtext ui-widget ui-widget-content ui-corner-all':true,'ui-state-disabled':disabled,'ui-state-focus':focus}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n <div class=\"ui-helper-hidden-accessible\">\n <input type=\"text\" readonly=\"readonly\" (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\">\n </div>\n <div class=\"ui-widget-header ui-corner-all ui-listbox-header ui-helper-clearfix\" *ngIf=\"headerFacet\">\n <ng-content select=\"p-header\"></ng-content>\n </div>\n <div class=\"ui-widget-header ui-corner-all ui-listbox-header ui-helper-clearfix\" *ngIf=\"(checkbox && multiple && showToggleAll) || filter\" [ngClass]=\"{'ui-listbox-header-w-checkbox': checkbox}\">\n <div class=\"ui-chkbox ui-widget\" *ngIf=\"checkbox && multiple && showToggleAll\">\n <div class=\"ui-helper-hidden-accessible\">\n <input type=\"checkbox\" readonly=\"readonly\" [checked]=\"allChecked\" (focus)=\"onHeaderCheckboxFocus()\" (blur)=\"onHeaderCheckboxBlur()\" (keydown.space)=\"toggleAll($event)\">\n </div>\n <div #headerchkbox class=\"ui-chkbox-box ui-widget ui-corner-all ui-state-default\" [ngClass]=\"{'ui-state-active': allChecked, 'ui-state-focus': headerCheckboxFocus}\" (click)=\"toggleAll($event)\">\n <span class=\"ui-chkbox-icon ui-clickable\" [ngClass]=\"{'pi pi-check':allChecked}\"></span>\n </div>\n </div>\n <div class=\"ui-listbox-filter-container\" *ngIf=\"filter\">\n <input type=\"text\" [value]=\"filterValue||''\" (input)=\"onFilter($event)\" class=\"ui-inputtext ui-widget ui-state-default ui-corner-all\" [disabled]=\"disabled\" [attr.placeholder]=\"filterPlaceHolder\" [attr.aria-label]=\"ariaFilterLabel\">\n <span class=\"ui-listbox-filter-icon pi pi-search\"></span>\n </div>\n </div>\n <div class=\"ui-listbox-list-wrapper\" [ngStyle]=\"listStyle\">\n <ul class=\"ui-listbox-list\" role=\"listbox\" aria-multiselectable=\"multiple\">\n <li *ngFor=\"let option of options; let i = index;\" [style.display]=\"isItemVisible(option) ? 'block' : 'none'\" [attr.tabindex]=\"option.disabled ? null : '0'\"\n [ngClass]=\"{'ui-listbox-item ui-corner-all':true,'ui-state-highlight':isSelected(option), 'ui-state-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=\"ui-chkbox ui-widget\" *ngIf=\"checkbox && multiple\">\n <div class=\"ui-chkbox-box ui-widget ui-corner-all ui-state-default\" [ngClass]=\"{'ui-state-active':isSelected(option)}\">\n <span class=\"ui-chkbox-icon ui-clickable\" [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=\"ui-listbox-footer ui-widget-header ui-corner-all\" *ngIf=\"footerFacet\">\n <ng-content select=\"p-footer\"></ng-content>\n </div>\n </div>\n `,\n providers: [LISTBOX_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.Default\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() 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 _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 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 }\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 onInputFocus(event) {\n this.focus = true;\n }\n\n onInputBlur(event) {\n this.focus = false;\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, 'ui-state-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, 'ui-state-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],\n exports: [Listbox, SharedModule],\n declarations: [Listbox]\n})\nexport class ListboxModule { }\n\n"]}
\No newline at end of file