mirror of
https://github.com/discourse/discourse.git
synced 2025-05-02 01:14:41 +08:00
FIX: Restore user-cards in composer preview (#27514)
The ability to display them was lost in 91456ad2cbbf767f71aedffb6b556617df64342f
This commit is contained in:
parent
96a0781bc1
commit
e29dfe1380
@ -354,15 +354,17 @@ export default Component.extend(TextareaTextManipulation, {
|
|||||||
if (event.target.tagName === "A") {
|
if (event.target.tagName === "A") {
|
||||||
if (event.target.classList.contains("mention")) {
|
if (event.target.classList.contains("mention")) {
|
||||||
this.appEvents.trigger(
|
this.appEvents.trigger(
|
||||||
"click.discourse-preview-user-card-mention",
|
"d-editor:preview-click-user-card",
|
||||||
$(event.target)
|
event.target,
|
||||||
|
event
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.target.classList.contains("mention-group")) {
|
if (event.target.classList.contains("mention-group")) {
|
||||||
this.appEvents.trigger(
|
this.appEvents.trigger(
|
||||||
"click.discourse-preview-group-card-mention-group",
|
"d-editor:preview-click-group-card",
|
||||||
$(event.target)
|
event.target,
|
||||||
|
event
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,8 @@ export default class Participant extends Component {
|
|||||||
this.appEvents.trigger(
|
this.appEvents.trigger(
|
||||||
`topic-header:trigger-${this.args.type}-card`,
|
`topic-header:trigger-${this.args.type}-card`,
|
||||||
this.args.username,
|
this.args.username,
|
||||||
e.target
|
e.target,
|
||||||
|
e
|
||||||
);
|
);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,6 @@ export default Mixin.create({
|
|||||||
siteSettings: service(),
|
siteSettings: service(),
|
||||||
|
|
||||||
elementId: null, //click detection added for data-{elementId}
|
elementId: null, //click detection added for data-{elementId}
|
||||||
triggeringLinkClass: null, //the <a> classname where this card should appear
|
|
||||||
_showCallback: null, //username - load up data for when show is called
|
_showCallback: null, //username - load up data for when show is called
|
||||||
|
|
||||||
visible: false,
|
visible: false,
|
||||||
@ -85,6 +84,7 @@ export default Mixin.create({
|
|||||||
});
|
});
|
||||||
|
|
||||||
document.querySelector(".card-cloak")?.classList.remove("hidden");
|
document.querySelector(".card-cloak")?.classList.remove("hidden");
|
||||||
|
|
||||||
this.appEvents.trigger("user-card:show", { username });
|
this.appEvents.trigger("user-card:show", { username });
|
||||||
this._positionCard(target, event);
|
this._positionCard(target, event);
|
||||||
this._showCallback(username).then((user) => {
|
this._showCallback(username).then((user) => {
|
||||||
@ -102,9 +102,6 @@ export default Mixin.create({
|
|||||||
didInsertElement() {
|
didInsertElement() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
|
|
||||||
const previewClickEvent = `click.discourse-preview-${this.elementId}-${this.triggeringLinkClass}`;
|
|
||||||
this.setProperties({ previewClickEvent });
|
|
||||||
|
|
||||||
document.addEventListener("mousedown", this._clickOutsideHandler);
|
document.addEventListener("mousedown", this._clickOutsideHandler);
|
||||||
document.addEventListener("keyup", this._escListener);
|
document.addEventListener("keyup", this._escListener);
|
||||||
|
|
||||||
@ -114,7 +111,11 @@ export default Mixin.create({
|
|||||||
.addEventListener("click", this._cardClickHandler);
|
.addEventListener("click", this._cardClickHandler);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.appEvents.on(previewClickEvent, this, "_previewClick");
|
this.appEvents.on(
|
||||||
|
`d-editor:preview-click-${this.elementId}`,
|
||||||
|
this,
|
||||||
|
"_previewClick"
|
||||||
|
);
|
||||||
|
|
||||||
this.appEvents.on(
|
this.appEvents.on(
|
||||||
`topic-header:trigger-${this.elementId}`,
|
`topic-header:trigger-${this.elementId}`,
|
||||||
@ -167,9 +168,9 @@ export default Mixin.create({
|
|||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
||||||
_topicHeaderTrigger(username, target) {
|
_topicHeaderTrigger(username, target, event) {
|
||||||
this.setProperties({ isDocked: true });
|
this.set("isDocked", true);
|
||||||
return this._show(username, target);
|
return this._show(username, target, event);
|
||||||
},
|
},
|
||||||
|
|
||||||
@bind
|
@bind
|
||||||
@ -185,8 +186,8 @@ export default Mixin.create({
|
|||||||
window.removeEventListener(MOBILE_SCROLL_EVENT, this._onScroll);
|
window.removeEventListener(MOBILE_SCROLL_EVENT, this._onScroll);
|
||||||
},
|
},
|
||||||
|
|
||||||
_previewClick(target) {
|
_previewClick(target, event) {
|
||||||
return this._show(target.innerText.replace(/^@/, ""), target);
|
return this._show(target.innerText.replace(/^@/, ""), target, event);
|
||||||
},
|
},
|
||||||
|
|
||||||
_positionCard(target, event) {
|
_positionCard(target, event) {
|
||||||
@ -271,7 +272,11 @@ export default Mixin.create({
|
|||||||
.removeEventListener("click", this._cardClickHandler);
|
.removeEventListener("click", this._cardClickHandler);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.appEvents.off(this.previewClickEvent, this, "_previewClick");
|
this.appEvents.off(
|
||||||
|
`d-editor:preview-click-${this.elementId}`,
|
||||||
|
this,
|
||||||
|
"_previewClick"
|
||||||
|
);
|
||||||
|
|
||||||
this.appEvents.off(
|
this.appEvents.off(
|
||||||
`topic-header:trigger-${this.elementId}`,
|
`topic-header:trigger-${this.elementId}`,
|
||||||
|
@ -51,7 +51,8 @@ createWidget("topic-header-participant", {
|
|||||||
this.appEvents.trigger(
|
this.appEvents.trigger(
|
||||||
`topic-header:trigger-${this.attrs.type}-card`,
|
`topic-header:trigger-${this.attrs.type}-card`,
|
||||||
this.attrs.username,
|
this.attrs.username,
|
||||||
e.target
|
e.target,
|
||||||
|
e
|
||||||
);
|
);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
},
|
},
|
||||||
|
20
spec/system/composer_spec.rb
Normal file
20
spec/system/composer_spec.rb
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
describe "Composer", type: :system do
|
||||||
|
fab!(:user) { Fabricate(:user, refresh_auto_groups: true) }
|
||||||
|
let(:composer) { PageObjects::Components::Composer.new }
|
||||||
|
|
||||||
|
before { sign_in(user) }
|
||||||
|
|
||||||
|
it "displays user cards in preview" do
|
||||||
|
page.visit "/new-topic"
|
||||||
|
|
||||||
|
expect(composer).to be_opened
|
||||||
|
|
||||||
|
composer.fill_content("@#{user.username}")
|
||||||
|
# binding.pry
|
||||||
|
composer.preview.find("a.mention").click
|
||||||
|
|
||||||
|
page.has_css?("#user-card")
|
||||||
|
end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user