From 3ada82f713393f1544f35a479bf39b2cf98d9491 Mon Sep 17 00:00:00 2001 From: Jarek Radosz Date: Thu, 14 Jul 2022 02:57:24 +0200 Subject: [PATCH] DEV: Use native `element.closest()` (#17482) --- .../discourse/app/components/d-modal-body.js | 6 +++--- .../app/components/featured-topic.js | 6 +++--- .../discourse/app/components/topic-list.js | 20 +++++++++---------- .../app/mixins/card-contents-base.js | 9 +++++---- .../discourse/app/widgets/home-logo.js | 2 +- .../javascripts/discourse/app/widgets/link.js | 2 +- .../discourse/app/widgets/topic-admin-menu.js | 2 +- .../javascripts/widgets/discourse-poll.js | 2 +- 8 files changed, 25 insertions(+), 24 deletions(-) diff --git a/app/assets/javascripts/discourse/app/components/d-modal-body.js b/app/assets/javascripts/discourse/app/components/d-modal-body.js index 1b51515aea7..f01bc23aa9a 100644 --- a/app/assets/javascripts/discourse/app/components/d-modal-body.js +++ b/app/assets/javascripts/discourse/app/components/d-modal-body.js @@ -15,10 +15,10 @@ export default Component.extend({ this._clearFlash(); } - let fixedParent = $(this.element).closest(".d-modal.fixed-modal"); - if (fixedParent.length) { + let fixedParent = this.element.closest(".d-modal.fixed-modal"); + if (fixedParent) { this.set("fixed", true); - fixedParent.modal("show"); + $(fixedParent).modal("show"); } scheduleOnce("afterRender", this, this._afterFirstRender); diff --git a/app/assets/javascripts/discourse/app/components/featured-topic.js b/app/assets/javascripts/discourse/app/components/featured-topic.js index 451bf1eecb9..efda1689ca5 100644 --- a/app/assets/javascripts/discourse/app/components/featured-topic.js +++ b/app/assets/javascripts/discourse/app/components/featured-topic.js @@ -1,14 +1,14 @@ import Component from "@ember/component"; + export default Component.extend({ classNameBindings: [":featured-topic"], attributeBindings: ["topic.id:data-topic-id"], click(e) { - const $target = $(e.target); - if ($target.closest(".last-posted-at").length) { + if (e.target.closest(".last-posted-at")) { this.appEvents.trigger("topic-entrance:show", { topic: this.topic, - position: $target.offset(), + position: $(e.target).offset(), }); return false; } diff --git a/app/assets/javascripts/discourse/app/components/topic-list.js b/app/assets/javascripts/discourse/app/components/topic-list.js index e06f9c18e41..74fe6518cfb 100644 --- a/app/assets/javascripts/discourse/app/components/topic-list.js +++ b/app/assets/javascripts/discourse/app/components/topic-list.js @@ -164,10 +164,10 @@ export default Component.extend(LoadMore, { click(e) { const onClick = (sel, callback) => { - let target = $(e.target).closest(sel); + let target = e.target.closest(sel); - if (target.length === 1) { - callback.apply(this, [target]); + if (target) { + callback.call(this, target); } }; @@ -186,8 +186,8 @@ export default Component.extend(LoadMore, { $("input.bulk-select:checked").click(); }); - onClick("th.sortable", function (e2) { - this.changeSort(e2.data("sort-order")); + onClick("th.sortable", function (element) { + this.changeSort(element.dataset.sortOrder); this.rerender(); }); @@ -210,15 +210,15 @@ export default Component.extend(LoadMore, { keyDown(e) { if (e.key === "Enter" || e.key === " ") { let onKeyDown = (sel, callback) => { - let target = $(e.target).closest(sel); + let target = e.target.closest(sel); - if (target.length === 1) { - callback.apply(this, [target]); + if (target) { + callback.call(this, target); } }; - onKeyDown("th.sortable", (e2) => { - this.changeSort(e2.data("sort-order")); + onKeyDown("th.sortable", (element) => { + this.changeSort(element.dataset.sortOrder); this.rerender(); }); } diff --git a/app/assets/javascripts/discourse/app/mixins/card-contents-base.js b/app/assets/javascripts/discourse/app/mixins/card-contents-base.js index cc798fd4b60..602a983ca45 100644 --- a/app/assets/javascripts/discourse/app/mixins/card-contents-base.js +++ b/app/assets/javascripts/discourse/app/mixins/card-contents-base.js @@ -345,11 +345,12 @@ export default Mixin.create({ @bind _clickOutsideHandler(event) { if (this.visible) { - const $target = $(event.target); if ( - $target.closest(`[data-${this.elementId}]`).data(this.elementId) || - $target.closest(`a.${this.triggeringLinkClass}`).length > 0 || - $target.closest(`#${this.elementId}`).length > 0 + event.target + .closest(`[data-${this.elementId}]`) + ?.getAttribute(`data-${this.elementId}`) || + event.target.closest(`a.${this.triggeringLinkClass}`) || + event.target.closest(`#${this.elementId}`) ) { return; } diff --git a/app/assets/javascripts/discourse/app/widgets/home-logo.js b/app/assets/javascripts/discourse/app/widgets/home-logo.js index 87dc1db548d..32db00bbc2a 100644 --- a/app/assets/javascripts/discourse/app/widgets/home-logo.js +++ b/app/assets/javascripts/discourse/app/widgets/home-logo.js @@ -136,7 +136,7 @@ export default createWidget("home-logo", { } e.preventDefault(); - DiscourseURL.routeToTag($(e.target).closest("a")[0]); + DiscourseURL.routeToTag(e.target.closest("a")); return false; }, }); diff --git a/app/assets/javascripts/discourse/app/widgets/link.js b/app/assets/javascripts/discourse/app/widgets/link.js index 3d69dfcd41b..4817c8e3dda 100644 --- a/app/assets/javascripts/discourse/app/widgets/link.js +++ b/app/assets/javascripts/discourse/app/widgets/link.js @@ -131,6 +131,6 @@ export default createWidget("link", { this.sendWidgetEvent("linkClicked", this.attrs); } - return DiscourseURL.routeToTag($(e.target).closest("a")[0]); + return DiscourseURL.routeToTag(e.target.closest("a")); }, }); diff --git a/app/assets/javascripts/discourse/app/widgets/topic-admin-menu.js b/app/assets/javascripts/discourse/app/widgets/topic-admin-menu.js index 064d790e3e3..0a468a18e00 100644 --- a/app/assets/javascripts/discourse/app/widgets/topic-admin-menu.js +++ b/app/assets/javascripts/discourse/app/widgets/topic-admin-menu.js @@ -81,7 +81,7 @@ createWidget("topic-admin-menu-button", { if (e === undefined) { $button = $(".keyboard-target-admin-menu"); } else { - $button = $(e.target).closest("button"); + $button = $(e.target.closest("button")); } const position = $button.position(), diff --git a/plugins/poll/assets/javascripts/widgets/discourse-poll.js b/plugins/poll/assets/javascripts/widgets/discourse-poll.js index 915309ea0b2..04565e05273 100644 --- a/plugins/poll/assets/javascripts/widgets/discourse-poll.js +++ b/plugins/poll/assets/javascripts/widgets/discourse-poll.js @@ -70,7 +70,7 @@ createWidget("discourse-poll-option", { }, click(e) { - if ($(e.target).closest("a").length === 0) { + if (!e.target.closest("a")) { this.sendWidgetAction("toggleOption", this.attrs.option); } },