d110c4916c
* Introduce setting to collapse field by default * Fix schema order * Change wording from adjective to imperative sounds a bit less clunky * Update rslib/src/notetype/schema11.rs (dae) * Keep settings in single column * Add back Toggle Visual Editor string * Add RichTextBadge component and show it conditionally * Reverse input order depending on default setting * Make PlainTextInput border-radius responsive to toggle states * Prevent first Collapsible transition differently * Focus inputs after Collapsible transition The double tick calls are just a temporary solution until I find the exact moment an input is focusable again. * Use requestAnimationFrame to await focusable state Note: Svelte tick doesn't seem to work in this scenario.
37 lines
943 B
TypeScript
37 lines
943 B
TypeScript
// Copyright: Ankitects Pty Ltd and contributors
|
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
import type { PlainTextInputAPI } from "./plain-text-input";
|
|
import type { RichTextInputAPI } from "./rich-text-input";
|
|
|
|
function isFontElement(element: Element): element is HTMLFontElement {
|
|
return element.tagName === "FONT";
|
|
}
|
|
|
|
/**
|
|
* Avoid both HTMLFontElement and .color, as they are both deprecated
|
|
*/
|
|
export function withFontColor(
|
|
element: Element,
|
|
callback: (color: string) => void,
|
|
): boolean {
|
|
if (isFontElement(element)) {
|
|
callback(element.color);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/***
|
|
* Required for field inputs wrapped in Collapsible
|
|
*/
|
|
export async function refocusInput(
|
|
api: RichTextInputAPI | PlainTextInputAPI,
|
|
): Promise<void> {
|
|
do {
|
|
await new Promise(window.requestAnimationFrame);
|
|
} while (!api.focusable);
|
|
api.refocus();
|
|
}
|