mirror of https://github.com/zulip/zulip.git
global: Specialize jQuery .val() for elements with known value types.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
06e8d1fb16
commit
eefd7feafa
|
@ -22,7 +22,21 @@ declare namespace JQueryValidation {
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
||||||
interface JQuery {
|
interface JQuery<TElement = HTMLElement> {
|
||||||
|
// Specialize .val() for elements with known value types.
|
||||||
|
// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/66801
|
||||||
|
val():
|
||||||
|
| (TElement extends HTMLSelectElement & {type: "select-one"}
|
||||||
|
? string
|
||||||
|
: TElement extends HTMLSelectElement & {type: "select-multiple"}
|
||||||
|
? string[]
|
||||||
|
: TElement extends HTMLSelectElement
|
||||||
|
? string | string[]
|
||||||
|
: TElement extends {value: string | number}
|
||||||
|
? TElement["value"]
|
||||||
|
: string | number | string[])
|
||||||
|
| undefined;
|
||||||
|
|
||||||
expectOne(): this;
|
expectOne(): this;
|
||||||
get_offset_to_window(): DOMRect;
|
get_offset_to_window(): DOMRect;
|
||||||
tab(action?: string): this; // From web/third/bootstrap
|
tab(action?: string): this; // From web/third/bootstrap
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import assert from "minimalistic-assert";
|
|
||||||
|
|
||||||
// How to determine the direction of a paragraph (P1-P3): https://www.unicode.org/reports/tr9/tr9-35.html#The_Paragraph_Level
|
// How to determine the direction of a paragraph (P1-P3): https://www.unicode.org/reports/tr9/tr9-35.html#The_Paragraph_Level
|
||||||
// Embedding level: https://www.unicode.org/reports/tr9/tr9-35.html#BD2
|
// Embedding level: https://www.unicode.org/reports/tr9/tr9-35.html#BD2
|
||||||
|
@ -142,8 +141,7 @@ export function get_direction(str: string): "ltr" | "rtl" {
|
||||||
|
|
||||||
export function set_rtl_class_for_textarea($textarea: JQuery<HTMLTextAreaElement>): void {
|
export function set_rtl_class_for_textarea($textarea: JQuery<HTMLTextAreaElement>): void {
|
||||||
// Set the rtl class if the text has an rtl direction, remove it otherwise
|
// Set the rtl class if the text has an rtl direction, remove it otherwise
|
||||||
let text = $textarea.val();
|
let text = $textarea.val()!;
|
||||||
assert(typeof text === "string", "Passed HTML element must be a textarea.");
|
|
||||||
if (text.startsWith("```quote")) {
|
if (text.startsWith("```quote")) {
|
||||||
text = text.slice(8);
|
text = text.slice(8);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue