94 lines
2.1 KiB
TypeScript
94 lines
2.1 KiB
TypeScript
|
|
import emitter from './eventhub';
|
|
import { extendObject } from '../utils/objects';
|
|
import { generateId } from '../utils/numbers';
|
|
|
|
|
|
export const event_showNotification = 'zero.notification.show';
|
|
export const event_hideNotifications = 'zero.notification.hideall';
|
|
|
|
export type NotificationType = 'default' | 'success' | 'error' | 'warning';
|
|
|
|
export interface NotificationOptions
|
|
{
|
|
type?: NotificationType,
|
|
label?: string,
|
|
text?: string,
|
|
persistent?: boolean,
|
|
duration?: number
|
|
}
|
|
|
|
export interface NotificationMessage extends NotificationOptions
|
|
{
|
|
id: string
|
|
}
|
|
|
|
|
|
export function show(label: string, text?: string, options?: NotificationOptions)
|
|
{
|
|
return sendInternal('default', label, text, options);
|
|
}
|
|
|
|
export function success(label: string, text?: string, options?: NotificationOptions)
|
|
{
|
|
return sendInternal('success', label, text, options);
|
|
}
|
|
|
|
export function warning(label: string, text?: string, options?: NotificationOptions)
|
|
{
|
|
return sendInternal('warning', label, text, options);
|
|
}
|
|
|
|
export function error(label: string, text?: string, options?: NotificationOptions)
|
|
{
|
|
return sendInternal('error', label, text, options);
|
|
}
|
|
|
|
export function hideAll()
|
|
{
|
|
emitter.emit(event_hideNotifications);
|
|
}
|
|
|
|
|
|
function sendInternal(type: NotificationType, label: string, text?: string, options?: NotificationOptions)
|
|
{
|
|
options = options || {} as NotificationOptions;
|
|
options.label = label;
|
|
options.text = text;
|
|
options.type = type;
|
|
return send(options);
|
|
}
|
|
|
|
|
|
export function send(options: NotificationOptions)
|
|
{
|
|
options = extendObject({
|
|
|
|
type: 'default',
|
|
label: null,
|
|
text: null,
|
|
persistent: false,
|
|
duration: 3000
|
|
//close: () =>
|
|
//{
|
|
// clearTimeout(options.timeout);
|
|
// me.close(this.instances.indexOf(options));
|
|
//}
|
|
}, options) as NotificationOptions;
|
|
|
|
//options.timeout = setTimeout(() =>
|
|
//{
|
|
// options.close();
|
|
//}, options.duration);
|
|
|
|
//this.instances.push(options);
|
|
|
|
emitter.emit(event_showNotification, {
|
|
id: generateId(),
|
|
type: options.type,
|
|
label: options.label,
|
|
text: options.text,
|
|
persistent: options.persistent,
|
|
duration: options.duration
|
|
} as NotificationMessage);
|
|
} |