mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-01 13:54:35 +03:00
6dabb84e0a
closes https://github.com/TryGhost/Ghost/issues/8269 - swaps the usage of our custom `gh-dropdown` component in the user menu dropdown for the `ember-wormhole` based `ember-basic-dropdown` that is used elsewhere in the app and will fully replace `gh-dropdown` in the future - adds `gh-basic-dropdown` component that extends from `ember-basic-dropdown` and hooks into our `dropdown` service so that we can programatically close dropdowns from disparate areas of the app - modifies the `body-event-listener` mixin to pass the click event through to it's consumers - modifies the `bodyClick` handler in the `dropdown` service to check if the click actually originated from an ember-basic-dropdown element - this body click handler will go away once we've fully switched to `gh-basic-dropdown` - adds `ember-native-dom-helpers` to provide consistency between acceptance and integration tests (this is the start of another refactor, eventually this addon will disappear as part of ember's [grand testing unification project](https://github.com/rwjblue/rfcs/blob/42/text/0000-grand-testing-unification.md))
24 lines
748 B
JavaScript
24 lines
748 B
JavaScript
import Service from 'ember-service';
|
|
import Evented from 'ember-evented';
|
|
// This is used by the dropdown initializer to manage closing & toggling
|
|
import BodyEventListener from 'ghost-admin/mixins/body-event-listener';
|
|
import $ from 'jquery';
|
|
|
|
export default Service.extend(Evented, BodyEventListener, {
|
|
bodyClick(event) {
|
|
let dropdownSelector = '.ember-basic-dropdown-trigger, .ember-basic-dropdown-content';
|
|
|
|
if ($(event.target).closest(dropdownSelector).length <= 0) {
|
|
this.closeDropdowns();
|
|
}
|
|
},
|
|
|
|
closeDropdowns() {
|
|
this.trigger('close');
|
|
},
|
|
|
|
toggleDropdown(dropdownName, dropdownButton) {
|
|
this.trigger('toggle', {target: dropdownName, button: dropdownButton});
|
|
}
|
|
});
|