azure-devops-ui
Version:
React components for building web UI in Azure DevOps
1 lines • 1.22 kB
JavaScript
import{ObservableArray,ObservableCollection,ObservableLike}from"../Core/Observable";import{format}from"../Core/Util/String";import{wrapListBoxItems}from"../ListBox";import*as Resources from"../Resources.Dropdown";class EditableDropdownItemProvider{constructor(e,t){this.itemCollection=new ObservableCollection,ObservableLike.isObservable(e)?this.listItems=e:this.listItems=new ObservableArray(wrapListBoxItems(e)||e),this.itemCollection.push(this.listItems),this.extraItem=new ObservableArray,this.itemCollection.push(this.extraItem),this.selection=t}get length(){return this.itemCollection.length}get value(){return this.itemCollection.value}get hasExtraItem(){return 0<this.extraItem.length}subscribe(e,t){return this.itemCollection.subscribe(e,t)}unsubscribe(e,t){return this.itemCollection.unsubscribe(e,t)}setTextValue(t){var e;this.hasExtraItem&&this.extraItem.splice(0,1),!t||-1!==(e=this.listItems.value.findIndex(e=>e.text===t))&&this.selection.selectable(e)||this.extraItem.push({id:t,text:format(Resources.UseItem,t),className:editableDropdownExtraItemClassName})}}const editableDropdownExtraItemClassName="editable-dropdown-extra-item";export{EditableDropdownItemProvider,editableDropdownExtraItemClassName};