mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 08:26:11 +00:00
input_pill: Fix backspace with selected text.
The logic added in b57ebe717e introduced
a different bug, namely that if you had selected text in the input,
Backspace would delete the input pill itself, not your selected text.
Fix this, without re-introducing the old bug, by checking explicitly
if there's a range selected before inspecting anchorOffset.
Also improve the comments.
Fixes #19544.
This commit is contained in:
@@ -339,11 +339,14 @@ export function create<T>(opts: InputPillCreateOptions<T>): InputPillContainer<T
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the user backspaces and there is input, just do normal char
|
const selection = window.getSelection();
|
||||||
// deletion, otherwise delete the last pill in the sequence.
|
// If no text is selected, and the cursor is just to the
|
||||||
|
// right of the last pill (with or without text in the
|
||||||
|
// input), then backspace deletes the last pill.
|
||||||
if (
|
if (
|
||||||
|
selection?.type !== "range" &&
|
||||||
e.key === "Backspace" &&
|
e.key === "Backspace" &&
|
||||||
(funcs.value(e.target).length === 0 || window.getSelection()?.anchorOffset === 0)
|
(funcs.value(e.target).length === 0 || selection?.anchorOffset === 0)
|
||||||
) {
|
) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
funcs.removeLastPill();
|
funcs.removeLastPill();
|
||||||
@@ -355,7 +358,7 @@ export function create<T>(opts: InputPillCreateOptions<T>): InputPillContainer<T
|
|||||||
// should switch to focus the last pill in the list.
|
// should switch to focus the last pill in the list.
|
||||||
// the rest of the events then will be taken care of in the function
|
// the rest of the events then will be taken care of in the function
|
||||||
// below that handles events on the ".pill" class.
|
// below that handles events on the ".pill" class.
|
||||||
if (e.key === "ArrowLeft" && window.getSelection()?.anchorOffset === 0) {
|
if (e.key === "ArrowLeft" && selection?.anchorOffset === 0) {
|
||||||
store.$parent.find(".pill").last().trigger("focus");
|
store.$parent.find(".pill").last().trigger("focus");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user