add keystrokes for exiting reply view

This commit is contained in:
vd
2026-10-09 23:09:44 +02:00
parent 6ef6996522
commit 94697f5876
5 changed files with 87 additions and 81 deletions
+4 -1
View File
@@ -5150,6 +5150,8 @@
this.registerKeyStroke("backspace" /* CloseOrCancel */, () => {
if (this.isFilterModalOpen.value == true) {
this.hideFilterModal();
} else if (this.replyViewSelectedMessage.value != void 0) {
this.resetReplyView();
} else {
this.replyingMessage.value = void 0;
}
@@ -7289,7 +7291,8 @@
{
class: "ghost",
"on:click": messagePageViewModel.resetReplyView,
"toggle:hidden": messagePageViewModel.isReplyViewInactive
"toggle:hidden": messagePageViewModel.isReplyViewInactive,
ctkeystroke: getKeySymbol("backspace" /* CloseOrCancel */)
},
/* @__PURE__ */ createElement("span", { class: "icon" }, "arrow_back")
), /* @__PURE__ */ createElement(
Vendored
+1 -1
View File
@@ -1,4 +1,4 @@
const VERSION = "2610 Beta 26"
const VERSION = "2610 Beta 27"
function processUrl(event) {
const url = event.request.url;
+1 -1
View File
@@ -1 +1 @@
2610 Beta 26
2610 Beta 27
+78 -77
View File
@@ -111,83 +111,84 @@ export function MessagePage(
on:click={messagePageViewModel.resetReplyView}
toggle:hidden={
messagePageViewModel.isReplyViewInactive
}
>
<span class="icon">arrow_back</span>
</button>
<span
class="title ellipsis width-100 flex"
subscribe:innerText={title}
></span>
<span>
<button
class="ghost inset-outline"
on:click={messagePageViewModel.showFilterModal}
aria-label={
coreViewModel.translations.chatPage.message
.filterMessagesButtonAudioLabel
}
toggle:selected={
messagePageViewModel.isFilterActive
}
ctkeystroke={getKeySymbol(CommonKeys.Filter)}
>
<span class="icon">filter_alt</span>
</button>
</span>
</div>
<div class="content">
{messageContainer}
<div id="composer">
<div class="content-width-constraint">
<div
class="reply-preview-wrapper"
children:set={replyPreview}
></div>
<div class="input-width-constraint">
<input
id="focused"
class="blur"
bind:value={
messagePageViewModel.composingMessage
}
on:enter={
messagePageViewModel.sendMessage
}
placeholder={
coreViewModel.translations.chatPage
.message
.composerInputPlaceholder
}
></input>
<button
class="primary blur"
aria-label={
coreViewModel.translations.chatPage
.message
.sendMessageButtonAudioLabel
}
on:click={
messagePageViewModel.sendMessage
}
toggle:disabled={
messagePageViewModel.cannotSendMessage
}
>
<span class="icon">send</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
}
ctkeystroke={getKeySymbol(CommonKeys.CloseOrCancel)}
>
<span class="icon">arrow_back</span>
</button>
<span
class="title ellipsis width-100 flex"
subscribe:innerText={title}
></span>
<span>
<button
class="ghost inset-outline"
on:click={messagePageViewModel.showFilterModal}
aria-label={
coreViewModel.translations.chatPage.message
.filterMessagesButtonAudioLabel
}
toggle:selected={
messagePageViewModel.isFilterActive
}
ctkeystroke={getKeySymbol(CommonKeys.Filter)}
>
<span class="icon">filter_alt</span>
</button>
</span>
</div>
<div class="content">
{messageContainer}
<div id="composer">
<div class="content-width-constraint">
<div
class="reply-preview-wrapper"
children:set={replyPreview}
></div>
<div class="input-width-constraint">
<input
id="focused"
class="blur"
bind:value={
messagePageViewModel.composingMessage
}
on:enter={
messagePageViewModel.sendMessage
}
placeholder={
coreViewModel.translations.chatPage
.message
.composerInputPlaceholder
}
></input>
<button
class="primary blur"
aria-label={
coreViewModel.translations.chatPage
.message
.sendMessageButtonAudioLabel
}
on:click={
messagePageViewModel.sendMessage
}
toggle:disabled={
messagePageViewModel.cannotSendMessage
}
>
<span class="icon">send</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
{MessageFilterModal(
coreViewModel,
messagePageViewModel,
ChatMessageViewModelToView,
)}
</div>
{MessageFilterModal(
coreViewModel,
messagePageViewModel,
ChatMessageViewModelToView,
)}
</div>
);
}
+3 -1
View File
@@ -245,7 +245,9 @@ export default class MessagePageViewModel extends Context {
this.registerKeyStroke(CommonKeys.CloseOrCancel, () => {
if (this.isFilterModalOpen.value == true) {
this.hideFilterModal();
} else {
} else if (this.replyViewSelectedMessage.value != undefined) {
this.resetReplyView();
} else {
this.replyingMessage.value = undefined;
}
});