riyadhafraa
f62969dc53
Task #515 : Reply to a note from the popup without leaving the page
...
The floating "new note" popup's Reply button used to navigate to
/notes?thread=X&reply=1, yanking the user out of whatever page they
were on (Tasks, Calendar, etc.). Now Reply opens an inline composer
inside the popup card itself.
Changes (artifacts/tx-os/src/components/notes/incoming-note-popup.tsx):
- New composerOpen / replyText / justSent state, reset whenever the
popup head rotates so a half-typed reply never leaks across payloads.
- handleReply now opens the inline composer and focuses the textarea
(rAF) instead of routing. Acknowledge (mark-as-read) is deferred to
successful send so Cancel keeps the note unread.
- handleSubmitReply uses the existing useReplyToNote hook. Resolves
recipientUserId from replyPayload.replier.id for the reply variant
(owner replying back), undefined for the note variant (recipient
replying — server infers the original sender).
- On success: brief on-card "Reply sent" confirmation (aria-live),
then auto-dismiss after 700ms. On failure: destructive toast with
the textarea preserved.
- Composer textarea: Enter (or Cmd/Ctrl+Enter) sends, Shift+Enter
inserts a newline. Esc cancels the composer and is handled by the
popup's global keydown listener so it works whether focus is in the
textarea or on the Send/Cancel buttons. dir="auto" so the user's
reply renders RTL/LTR per its own characters.
- pointerdown/click stopPropagation on the composer wrapper so typing
doesn't accidentally drag the card.
Locale keys added to ar.json + en.json under notes.popup:
inlineReplyPlaceholder, sendReply, cancelReply, replySending,
replySent, replyFailed.
Pre-existing failing tests (groups-crud, executive-meetings-
notifications, executive-meetings-postpone-race) are unrelated to
this change.
2026-05-12 11:58:37 +00:00
..
2026-05-11 18:30:03 +00:00
2026-04-22 10:53:54 +00:00
2026-05-03 19:01:50 +00:00
2026-04-27 11:46:39 +00:00
2026-05-01 18:57:48 +00:00
2026-05-04 06:13:12 +00:00
2026-04-21 12:45:31 +00:00
2026-04-21 13:35:00 +00:00
2026-04-21 17:32:28 +00:00
2026-04-21 17:34:45 +00:00
2026-04-21 17:37:46 +00:00
2026-04-21 17:50:23 +00:00
2026-04-21 18:00:59 +00:00
2026-04-21 18:00:59 +00:00
2026-04-21 18:02:45 +00:00
2026-04-22 06:42:23 +00:00
2026-04-22 10:57:10 +00:00
2026-04-27 09:06:23 +00:00
2026-04-27 11:11:43 +00:00
2026-04-27 11:28:14 +00:00
2026-04-28 08:02:41 +00:00
2026-04-28 09:03:59 +00:00
2026-04-28 20:58:08 +00:00
2026-04-28 21:03:02 +00:00
2026-04-29 06:28:41 +00:00
2026-04-29 06:28:41 +00:00
2026-04-29 06:28:41 +00:00
2026-04-29 07:09:50 +00:00
2026-04-29 10:46:32 +00:00
2026-04-29 10:46:32 +00:00
2026-04-29 10:46:32 +00:00
2026-04-29 12:22:40 +00:00
2026-04-29 12:22:40 +00:00
2026-04-29 13:24:16 +00:00
2026-04-29 14:52:25 +00:00
2026-04-29 17:36:32 +00:00
2026-04-29 17:36:32 +00:00
2026-04-29 18:22:49 +00:00
2026-04-29 18:35:49 +00:00
2026-04-29 18:51:11 +00:00
2026-04-29 18:57:26 +00:00
2026-04-29 19:13:34 +00:00
2026-04-29 19:13:34 +00:00
2026-04-29 19:28:13 +00:00
2026-04-30 05:52:39 +00:00
2026-04-30 06:39:45 +00:00
2026-04-30 07:25:15 +00:00
2026-04-30 09:28:56 +00:00
2026-04-30 09:57:18 +00:00
2026-04-30 11:20:30 +00:00
2026-04-30 12:20:50 +00:00
2026-04-30 12:47:50 +00:00
2026-04-30 12:47:50 +00:00
2026-04-30 18:07:52 +00:00
2026-04-30 18:07:52 +00:00
2026-04-30 18:29:42 +00:00
2026-05-01 07:43:38 +00:00
2026-05-01 08:18:29 +00:00
2026-05-01 08:18:29 +00:00
2026-05-01 08:18:29 +00:00
2026-05-01 09:01:21 +00:00
2026-05-01 13:12:00 +00:00
2026-05-01 14:23:01 +00:00
2026-05-01 15:03:18 +00:00
2026-05-01 15:03:18 +00:00
2026-05-01 15:24:59 +00:00
2026-05-01 15:24:59 +00:00
2026-05-01 18:00:00 +00:00
2026-05-01 18:23:29 +00:00
2026-05-01 18:37:16 +00:00
2026-05-01 18:46:35 +00:00
2026-05-01 18:57:48 +00:00
2026-05-01 19:55:39 +00:00
2026-05-01 19:55:39 +00:00
2026-05-01 19:55:39 +00:00
2026-05-01 21:30:16 +00:00
2026-05-01 21:30:16 +00:00
2026-05-02 08:39:00 +00:00
2026-05-02 09:03:03 +00:00
2026-05-02 09:34:57 +00:00
2026-05-02 10:32:39 +00:00
2026-05-03 06:22:54 +00:00
2026-05-03 08:01:55 +00:00
2026-05-03 09:35:43 +00:00
2026-05-03 09:35:43 +00:00
2026-05-03 09:47:11 +00:00
2026-05-03 10:00:45 +00:00
2026-05-03 10:06:28 +00:00
2026-05-03 10:09:29 +00:00
2026-05-03 10:51:13 +00:00
2026-05-03 10:51:13 +00:00
2026-05-03 11:19:56 +00:00
2026-05-03 11:33:43 +00:00
2026-05-03 11:49:10 +00:00
2026-05-03 11:49:10 +00:00
2026-05-03 11:53:52 +00:00
2026-05-03 12:05:52 +00:00
2026-05-03 12:05:52 +00:00
2026-05-03 12:05:55 +00:00
2026-05-03 12:39:01 +00:00
2026-05-03 12:39:01 +00:00
2026-05-03 12:48:03 +00:00
2026-05-03 12:48:03 +00:00
2026-05-03 12:49:15 +00:00
2026-05-03 12:49:59 +00:00
2026-05-03 12:59:13 +00:00
2026-05-03 13:54:24 +00:00
2026-05-03 14:34:29 +00:00
2026-05-03 15:06:14 +00:00
2026-05-03 15:26:38 +00:00
2026-05-03 15:26:38 +00:00
2026-05-03 15:55:29 +00:00
2026-05-03 15:55:29 +00:00
2026-05-03 16:02:10 +00:00
2026-05-03 17:43:07 +00:00
2026-05-03 17:43:07 +00:00
2026-05-03 18:37:48 +00:00
2026-05-03 19:17:44 +00:00
2026-05-03 19:27:11 +00:00
2026-05-03 19:38:33 +00:00
2026-05-04 06:34:58 +00:00
2026-05-04 06:44:02 +00:00
2026-05-04 07:03:37 +00:00
2026-05-04 07:15:12 +00:00
2026-05-04 07:50:43 +00:00
2026-05-04 08:09:03 +00:00
2026-05-04 10:59:48 +00:00
2026-05-04 11:57:42 +00:00
2026-05-04 13:02:49 +00:00
2026-05-04 13:06:45 +00:00
2026-05-04 13:22:13 +00:00
2026-05-04 13:22:13 +00:00
2026-05-04 14:06:03 +00:00
2026-05-04 14:20:12 +00:00
2026-05-04 15:57:11 +00:00
2026-05-04 16:01:59 +00:00
2026-05-04 16:04:55 +00:00
2026-05-04 16:09:18 +00:00
2026-05-04 16:09:18 +00:00
2026-05-04 16:09:18 +00:00
2026-05-04 16:15:49 +00:00
2026-05-04 16:22:41 +00:00
2026-05-04 17:50:11 +00:00
2026-05-04 17:55:36 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:27:21 +00:00
2026-05-05 07:35:42 +00:00
2026-05-05 07:35:42 +00:00
2026-05-05 07:41:57 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 09:47:06 +00:00
2026-05-05 13:25:49 +00:00
2026-05-05 14:18:33 +00:00
2026-05-05 14:25:31 +00:00
2026-05-06 07:08:39 +00:00
2026-05-06 08:48:23 +00:00
2026-05-06 09:25:10 +00:00
2026-05-06 10:19:47 +00:00
2026-05-07 07:52:50 +00:00
2026-05-07 07:52:50 +00:00
2026-05-07 07:52:50 +00:00
2026-05-07 08:39:14 +00:00
2026-05-07 08:55:19 +00:00
2026-05-07 09:13:11 +00:00
2026-05-07 10:09:56 +00:00
2026-05-07 10:09:56 +00:00
2026-05-07 15:04:10 +00:00
2026-05-07 15:10:51 +00:00
2026-05-09 10:40:30 +00:00
2026-05-10 07:23:51 +00:00
2026-05-10 07:23:51 +00:00
2026-05-10 07:33:02 +00:00
2026-05-10 08:55:52 +00:00
2026-05-10 09:28:51 +00:00
2026-05-10 09:42:53 +00:00
2026-05-10 11:07:15 +00:00
2026-05-10 13:46:22 +00:00
2026-05-10 13:59:26 +00:00
2026-05-10 13:59:26 +00:00
2026-05-10 14:05:06 +00:00
2026-05-10 14:11:23 +00:00
2026-05-10 14:11:23 +00:00
2026-05-10 14:19:56 +00:00
2026-05-10 14:39:35 +00:00
2026-05-10 15:22:45 +00:00
2026-05-10 15:27:40 +00:00
2026-05-10 15:33:55 +00:00
2026-05-10 15:33:55 +00:00
2026-05-10 16:00:33 +00:00
2026-05-11 07:56:19 +00:00
2026-05-11 07:56:19 +00:00
2026-05-11 07:56:19 +00:00
2026-05-11 07:59:41 +00:00
2026-05-11 10:23:45 +00:00
2026-05-11 10:23:45 +00:00
2026-05-11 14:06:04 +00:00
2026-05-11 14:35:19 +00:00
2026-05-11 14:35:19 +00:00
2026-05-11 15:02:35 +00:00
2026-05-11 15:31:39 +00:00
2026-05-11 15:47:37 +00:00
2026-05-11 18:30:03 +00:00
2026-05-12 08:45:58 +00:00
2026-05-12 09:00:51 +00:00
2026-05-12 09:05:51 +00:00
2026-05-12 09:15:17 +00:00
2026-05-12 09:27:57 +00:00
2026-05-12 09:33:57 +00:00
2026-05-12 09:47:05 +00:00
2026-05-12 10:22:30 +00:00
2026-05-12 10:29:59 +00:00
2026-05-12 10:51:31 +00:00
2026-05-12 11:18:00 +00:00
2026-05-12 11:50:09 +00:00
2026-05-12 11:58:37 +00:00
2026-05-01 14:58:31 +00:00
2026-05-01 22:03:02 +00:00
2026-05-01 11:18:40 +00:00
2026-04-27 11:46:39 +00:00
2026-05-05 14:31:00 +00:00
2026-05-04 11:12:09 +00:00
2026-05-04 09:40:36 +00:00
2026-05-04 09:40:36 +00:00
2026-05-04 09:59:03 +00:00
2026-05-04 08:22:32 +00:00
2026-05-04 09:24:37 +00:00
2026-04-21 18:17:39 +00:00
2026-04-22 08:13:45 +00:00
2026-05-03 14:19:06 +00:00
2026-05-03 19:11:49 +00:00
2026-05-04 07:29:50 +00:00
2026-05-05 07:41:57 +00:00
2026-04-27 11:46:39 +00:00