blob: e57f1f29aaa391af33b8569bf5361d604df0a01d [file] [log] [blame]
/** errorMessage dispatches an event with the error message in it.
* <p>
* Use this function in conjunction with the
* {@linkcode module:elements-sk/error-toast-sk} element.
* </p>
*
* @evt error-sk The event has a detail of the form:
*
* <pre>
* {
* message: "some string",
* duration: (duration in milliseconds),
* }
* </pre>
*
* @param message The value of 'message' is expected to be a string,
* an Object with a field 'message', an Object with a field 'resp'
* that is an instance of window.Response, or an Object.
* @param duration The number of milliseconds the message should be
* displayed.
*
*/
export async function errorMessage(
message: string | {message: string} | {resp: Response} | object, duration: number = 10000,
) {
if ((message as {resp: Response}).resp instanceof window.Response) {
message = await (message as {resp: Response}).resp.text();
} else if (typeof message === 'object') {
message =
// for handling Errors {name:String, message:String}
(message as {message: string}).message
// for everything else
|| JSON.stringify(message);
}
const detail: ErrorSkEventDetail = {
message: message,
duration: duration,
};
document.dispatchEvent(new CustomEvent<ErrorSkEventDetail>('error-sk', {
detail: detail,
bubbles: true,
}));
}
/** Defines the structure of the "error-sk" custom event's detail field. */
export interface ErrorSkEventDetail {
readonly message: string,
readonly duration: number
}