mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-04 04:10:33 +03:00
42b30ac613
no issue - clicks on the iframe never bubble out of the iframe so weren't captured by the dropdown-closing event listener - added an event listener directly on the iframe's body element when we render the iframe's content that manually calls out to our generic dropdown closing method
29 lines
901 B
JavaScript
29 lines
901 B
JavaScript
import $ from 'jquery';
|
|
import classic from 'ember-classic-decorator';
|
|
// This is used by the dropdown initializer to manage closing & toggling
|
|
import BodyEventListener from 'ghost-admin/mixins/body-event-listener';
|
|
import Evented from '@ember/object/evented';
|
|
import Service from '@ember/service';
|
|
import {action} from '@ember/object';
|
|
|
|
@classic
|
|
export default class DropdownService extends 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();
|
|
}
|
|
}
|
|
|
|
@action
|
|
closeDropdowns() {
|
|
this.trigger('close');
|
|
}
|
|
|
|
@action
|
|
toggleDropdown(dropdownName, dropdownButton) {
|
|
this.trigger('toggle', {target: dropdownName, button: dropdownButton});
|
|
}
|
|
}
|