improve focus setting and keystrokes

This commit is contained in:
marlon-erler
2026-04-13 10:26:03 +00:00
parent 3cb771ed3a
commit 92cb02e113
10 changed files with 36 additions and 6 deletions
+5
View File
@@ -7,12 +7,14 @@ import CoreViewModel from "../../ViewModel/Global/coreViewModel";
import ChatMessageViewModel from "../../ViewModel/Chat/chatMessageViewModel";
import { ChatMessage } from "../Components/chatMessage";
import { MessageFilterModal } from "../Modals/messageFilterModal";
import { setFocusWithDelay } from "../utility";
export function MessagePage(
coreViewModel: CoreViewModel,
messagePageViewModel: MessagePageViewModel,
) {
messagePageViewModel.loadData();
const ChatMessageViewModelToView: React.StateItemConverter<
ChatMessageViewModel
> = (chatMessageViewModel: ChatMessageViewModel) => {
@@ -49,6 +51,8 @@ export function MessagePage(
);
setTimeout(() => scrollDown(true), 100);
setFocusWithDelay();
return (
<div id="message-page">
<div class="pane-wrapper">
@@ -82,6 +86,7 @@ export function MessagePage(
<div class="content-width-constraint">
<div class="input-width-constraint">
<input
id="focused"
bind:value={
messagePageViewModel.composingMessage
}
+2
View File
@@ -450,6 +450,7 @@ function TransferDataInputModal(
}
</span>
<input
on:enter={fileTransferViewModel.prepareReceivingData}
bind:value={
fileTransferViewModel.receivingTransferChannel
}
@@ -467,6 +468,7 @@ function TransferDataInputModal(
}
</span>
<input
on:enter={fileTransferViewModel.prepareReceivingData}
bind:value={
fileTransferViewModel.receivingTransferKey
}
+4 -3
View File
@@ -1,12 +1,10 @@
import * as React from "bloatless-react";
import SearchViewModel from "../../ViewModel/Utility/searchViewModel";
import { StringToOption } from "../Components/option";
import { v4 } from "uuid";
import CoreViewModel from "../../ViewModel/Global/coreViewModel";
import MessagePageViewModel from "../../ViewModel/Pages/messagePageViewModel";
import { MessageReactionFilterButton } from "../Components/messageReactionFilterButton";
import { ReactionSymbols } from "../../Model/Chat/chatModel";
import { setFocusWithDelay } from "../utility";
export function MessageFilterModal<T>(
coreViewModel: CoreViewModel,
@@ -18,6 +16,8 @@ export function MessageFilterModal<T>(
() => messagePageViewModel.reactionFilter.value == undefined,
);
messagePageViewModel.isFilterModalOpen.subscribe(setFocusWithDelay);
return (
<div class="modal" toggle:open={messagePageViewModel.isFilterModalOpen}>
<div>
@@ -30,6 +30,7 @@ export function MessageFilterModal<T>(
</h2>
<div class="flex-row width-input">
<input
id="focused"
placeholder={
coreViewModel.translations.general.searchLabel
}
+4
View File
@@ -4,6 +4,7 @@ import SearchViewModel from "../../ViewModel/Utility/searchViewModel";
import { StringToOption } from "../Components/option";
import { v4 } from "uuid";
import CoreViewModel from "../../ViewModel/Global/coreViewModel";
import { setFocusWithDelay } from "../utility";
export function SearchModal<T>(
coreViewModel: CoreViewModel,
@@ -18,6 +19,8 @@ export function SearchModal<T>(
const suggestionId = v4();
isOpen.subscribe(setFocusWithDelay);
return (
<div class="modal" toggle:open={isOpen} extended>
<div>
@@ -25,6 +28,7 @@ export function SearchModal<T>(
<h2>{headline}</h2>
<div class="flex-row width-input">
<input
id="focused"
placeholder={
coreViewModel.translations.general.searchLabel
}
+1
View File
@@ -2,6 +2,7 @@ export enum CommonKeys {
Home = " ",
Filter = "=",
Reset = "-",
Options = ".",
CloseOrCancel = "backspace",
Apply = "enter",
Settings = ",",
+2
View File
@@ -11,6 +11,8 @@ export function reload() {
}
export function setFocus() {
const focusedInModal = document.querySelector(".modal[open] #focused") as HTMLElement;
if (focusedInModal) return focusedInModal.focus();
document.getElementById("focused")?.focus();
}
@@ -155,6 +155,7 @@ export default class FileTransferViewModel extends Context {
};
prepareReceivingData = (): void => {
if (this.cannotPrepareToReceive.value == true) return;
this.presentedModal.value = FileTransferModals.ReceptionDisplay;
this.filePathsReceived.clear();
+1 -1
View File
@@ -24,7 +24,7 @@ export default class HomeViewModel extends Context {
this.settingsViewModel.showSettingsModal,
);
this.registerKeyStroke(
"d",
"t",
this.fileTransferViewModel.showDirectionSelectionModal,
);
this.registerKeyStroke("e", this.storageViewModel.showStorageModal);
+4 -1
View File
@@ -8,6 +8,7 @@ import BoardViewModel, { BoardPageTypes } from "./boardViewModel";
import ChatViewModel, { ChatPageTypes } from "../Chat/chatViewModel";
import CoreViewModel, { Context, ContextHost } from "../Global/coreViewModel";
import { IndexManager } from "../../Model/Utility/utility";
import { CommonKeys } from "../../View/keystrokes";
export default class TaskPageViewModel extends ContextHost<string> {
contextDebugDescription = "task-page";
@@ -181,8 +182,10 @@ export default class TaskPageViewModel extends ContextHost<string> {
// context
this.chatViewModel.registerContext(ChatPageTypes.Tasks, this);
this.selectedBoardId.subscribeSilent(this.updateContexts);
// keystrokes
this.registerKeyStroke(CommonKeys.Options, this.toggleBoardList);
}
}