import Component from "@glimmer/component"; import { concat, hash } from "@ember/helper"; import { htmlSafe } from "@ember/template"; import { modifier as modifierFn } from "ember-modifier"; import concatClass from "discourse/helpers/concat-class"; import closeOnClickOutside from "discourse/modifiers/close-on-click-outside"; import TrapTab from "discourse/modifiers/trap-tab"; import DFloatPortal from "float-kit/components/d-float-portal"; import { getScrollParent } from "float-kit/lib/get-scroll-parent"; import FloatKitApplyFloatingUi from "float-kit/modifiers/apply-floating-ui"; import FloatKitCloseOnEscape from "float-kit/modifiers/close-on-escape"; export default class DFloatBody extends Component { closeOnScroll = modifierFn(() => { const firstScrollParent = getScrollParent(this.trigger); const handler = () => { this.args.instance.close(); }; firstScrollParent.addEventListener("scroll", handler, { passive: true }); return () => { firstScrollParent.removeEventListener("scroll", handler); }; }); get supportsCloseOnClickOutside() { return this.args.instance.expanded && this.options.closeOnClickOutside; } get supportsCloseOnEscape() { return this.args.instance.expanded && this.options.closeOnEscape; } get supportsCloseOnScroll() { return this.args.instance.expanded && this.options.closeOnScroll; } get trigger() { return this.args.instance?.trigger; } get content() { return this.args.instance?.content; } get options() { return this.args.instance.options; } }