Added showDropdown/hideDropdown events

This commit is contained in:
Samuel Jack 2017-03-02 16:13:53 +00:00
parent 930f84c005
commit 00af5279e9
5 changed files with 543 additions and 485 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -653,6 +653,8 @@ class Choices {
this.input.focus();
}
triggerEvent(this.passedElement, "showDropdown", {});
return this;
}
@ -678,6 +680,8 @@ class Choices {
this.input.blur();
}
triggerEvent(this.passedElement, "hideDropdown", {});
return this;
}

View file

@ -386,6 +386,52 @@ describe('Choices', () => {
expect(document.activeElement === this.choices.input && container.classList.contains(openState)).toBe(false);
});
it('should trigger showDropdown on dropdown opening', function() {
this.choices = new Choices(this.input);
const container = this.choices.containerOuter;
const showDropdownSpy = jasmine.createSpy('showDropdownSpy');
const passedElement = this.choices.passedElement;
passedElement.addEventListener('showDropdown', showDropdownSpy);
this.choices.input.focus();
this.choices._onClick({
target: container,
ctrlKey: false,
preventDefault: () => {}
});
expect(showDropdownSpy).toHaveBeenCalled();
});
it('should trigger hideDropdown on dropdown closing', function() {
this.choices = new Choices(this.input);
const container = this.choices.containerOuter;
const hideDropdownSpy = jasmine.createSpy('hideDropdownSpy');
const passedElement = this.choices.passedElement;
passedElement.addEventListener('hideDropdown', hideDropdownSpy);
this.choices.input.focus();
this.choices._onClick({
target: container,
ctrlKey: false,
preventDefault: () => {}
});
this.choices._onClick({
target: container,
ctrlKey: false,
preventDefault: () => {}
});
expect(hideDropdownSpy).toHaveBeenCalled();
});
it('should filter choices when searching', function() {
this.choices = new Choices(this.input);