| (async function () { |
| var items = [ |
| { |
| title: "first", |
| index: 0 |
| }, |
| { |
| title: "second", |
| index: 1 |
| }, |
| { |
| title: "third", |
| index: 2 |
| }, |
| { |
| title: "fourth", |
| index: 3 |
| }, |
| { |
| title: "disabled 4.5", |
| disabled: true, |
| index: 4 |
| }, |
| { |
| title: "fifth", |
| index: 5 |
| }, |
| { |
| title: "sixth", |
| index: 6 |
| }, |
| { |
| title: "seventh", |
| index: 7 |
| }, |
| { |
| title: "eighth", |
| index: 8 |
| } |
| ]; |
| |
| class Delegate { |
| titleFor(item) { |
| return item.title; |
| } |
| |
| createElementForItem(item) { |
| var element = createElement("div"); |
| element.textContent = this.titleFor(item); |
| return element; |
| } |
| |
| isItemSelectable(item) { |
| return !item.disabled; |
| } |
| |
| itemSelected(item) { |
| if (item !== null) |
| TestRunner.addResult("Item selected: " + this.titleFor(item)); |
| } |
| |
| highlightedItemChanged(from, to, fromElement, toElement) { |
| if (to !== null) |
| TestRunner.addResult("Item highlighted: " + this.titleFor(to)); |
| } |
| }; |
| |
| function pressKey(key) { |
| var element = document.deepActiveElement(); |
| if (!element) |
| return; |
| TestRunner.addResult(key); |
| element.dispatchEvent(TestRunner.createKeyEvent(key)); |
| } |
| var model = new UI.ListModel(); |
| var dropDown = new UI.SoftDropDown(model, new Delegate()); |
| for (var i = items.length - 1; i >= 0; i--) |
| model.insertWithComparator(items[i], (a, b) => a.index - b.index); |
| |
| UI.inspectorView.element.appendChild(dropDown.element); |
| dropDown.selectItem(items[5]); |
| TestRunner.addResult("Showing drop down"); |
| dropDown.element.dispatchEvent(new Event("mousedown")); |
| pressKey('ArrowDown'); |
| pressKey('ArrowDown'); |
| pressKey('ArrowDown'); |
| pressKey('ArrowUp'); |
| pressKey('ArrowUp'); |
| pressKey('ArrowUp'); |
| pressKey('ArrowDown'); |
| pressKey('ArrowDown'); |
| pressKey('f'); |
| pressKey('f'); |
| pressKey('t'); |
| TestRunner.completeTest(); |
| })(); |