From 20e049bcbc29c2a508c76c3e91fc551289ef9b01 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Thu, 9 May 2024 10:54:37 +0200 Subject: [PATCH] DEV: Minor refactor of d-menu/d-tooltip (#26942) * `menuInstance` cached getter -> prop * `next()` and a `trigger` check -> gone * `allowedProperties` action -> getter * `keys` -> `entries` * update the `service` import * flatten the object spread structures --- .../float-kit/addon/components/d-menu.gjs | 40 ++++++------------- .../float-kit/addon/components/d-tooltip.gjs | 35 ++++++---------- 2 files changed, 25 insertions(+), 50 deletions(-) diff --git a/app/assets/javascripts/float-kit/addon/components/d-menu.gjs b/app/assets/javascripts/float-kit/addon/components/d-menu.gjs index 689bf90728a..a477572f245 100644 --- a/app/assets/javascripts/float-kit/addon/components/d-menu.gjs +++ b/app/assets/javascripts/float-kit/addon/components/d-menu.gjs @@ -1,10 +1,7 @@ import Component from "@glimmer/component"; -import { cached } from "@glimmer/tracking"; import { getOwner } from "@ember/application"; import { concat } from "@ember/helper"; -import { action } from "@ember/object"; -import { next } from "@ember/runloop"; -import { inject as service } from "@ember/service"; +import { service } from "@ember/service"; import { modifier } from "ember-modifier"; import { and } from "truth-helpers"; import DButton from "discourse/components/d-button"; @@ -19,25 +16,16 @@ export default class DMenu extends Component { @service menu; @service site; - registerTrigger = modifier((element) => { - if (!this.menuInstance.trigger) { - next(() => { - this.menuInstance.trigger = element; - this.options.onRegisterApi?.(this.menuInstance); - }); - } + menuInstance = new DMenuInstance(getOwner(this), { + ...this.allowedProperties, + autoUpdate: true, + listeners: true, }); - @cached - get menuInstance() { - return new DMenuInstance(getOwner(this), { - ...this.allowedProperties(), - ...{ - autoUpdate: true, - listeners: true, - }, - }); - } + registerTrigger = modifier((element) => { + this.menuInstance.trigger = element; + this.options.onRegisterApi?.(this.menuInstance); + }); get menuId() { return `d-menu-${this.menuInstance.id}`; @@ -54,18 +42,17 @@ export default class DMenu extends Component { }; } - @action - allowedProperties() { + get allowedProperties() { const properties = {}; - Object.keys(MENU.options).forEach((key) => { - const value = MENU.options[key]; + for (const [key, value] of Object.entries(MENU.options)) { properties[key] = this.args[key] ?? value; - }); + } return properties; }