| /** 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 |
| } |