mirror of
https://github.com/discourse/discourse.git
synced 2025-06-15 09:31:31 +08:00
DEV: Do not rerender widgets on mouseup/mousedown (#21300)
Ran into an issue with these hooks preventing click events on anchors from completing (because the triggered rerender cancels the click). See: https://github.com/discourse/discourse-header-search/pull/24 This change should have no effect on existing usage of these hooks. Current usage is limited to: - legacy navigation (should be a no-op) - reactions plugin (should be a no-op) - discourse-header-search (will fix the issue!)
This commit is contained in:
@ -192,6 +192,7 @@ export const DefaultNotificationItem = createWidget(
|
|||||||
method: "PUT",
|
method: "PUT",
|
||||||
data: { id: this.attrs.id },
|
data: { id: this.attrs.id },
|
||||||
});
|
});
|
||||||
|
this.scheduleRerender();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -263,13 +263,20 @@ WidgetClickHook.setupDocumentCallback = function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$(document).on("mousedown.discourse-widget", (e) => {
|
$(document).on("mousedown.discourse-widget", (e) => {
|
||||||
nodeCallback(e.target, MOUSE_DOWN_ATTRIBUTE_NAME, (w) => {
|
nodeCallback(
|
||||||
w.mouseDown(e);
|
e.target,
|
||||||
});
|
MOUSE_DOWN_ATTRIBUTE_NAME,
|
||||||
|
(w) => {
|
||||||
|
w.mouseDown(e);
|
||||||
|
},
|
||||||
|
{ rerender: false }
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on("mouseup.discourse-widget", (e) => {
|
$(document).on("mouseup.discourse-widget", (e) => {
|
||||||
nodeCallback(e.target, MOUSE_UP_ATTRIBUTE_NAME, (w) => w.mouseUp(e));
|
nodeCallback(e.target, MOUSE_UP_ATTRIBUTE_NAME, (w) => w.mouseUp(e), {
|
||||||
|
rerender: false,
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on("mousemove.discourse-widget", (e) => {
|
$(document).on("mousemove.discourse-widget", (e) => {
|
||||||
|
@ -55,7 +55,11 @@ module(
|
|||||||
assert.ok(!exists("li.read"));
|
assert.ok(!exists("li.read"));
|
||||||
|
|
||||||
await triggerEvent("li", "mouseup", { button: 1, which: 2 });
|
await triggerEvent("li", "mouseup", { button: 1, which: 2 });
|
||||||
assert.strictEqual(count("li.read"), 1);
|
assert.strictEqual(
|
||||||
|
count("li.read"),
|
||||||
|
1,
|
||||||
|
"only one item is marked as read"
|
||||||
|
);
|
||||||
assert.strictEqual(requests, 1);
|
assert.strictEqual(requests, 1);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user