mirror of
https://gitee.com/vant-contrib/vant-weapp.git
synced 2025-04-06 03:58:05 +08:00
48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
import { RED, WHITE } from '../common/color';
|
|
|
|
interface NotifyOptions {
|
|
color?: string;
|
|
zIndex?: number;
|
|
message: string;
|
|
context?: any;
|
|
duration?: number;
|
|
selector?: string;
|
|
background?: string;
|
|
safeAreaInsetTop?: boolean;
|
|
}
|
|
|
|
const defaultOptions = {
|
|
selector: '#van-notify',
|
|
message: '',
|
|
duration: 3000,
|
|
zIndex: 110,
|
|
color: WHITE,
|
|
background: RED
|
|
};
|
|
|
|
function parseOptions(message: NotifyOptions | string): NotifyOptions {
|
|
return typeof message === 'string' ? { message } : message;
|
|
}
|
|
|
|
function getContext() {
|
|
const pages = getCurrentPages();
|
|
return pages[pages.length - 1];
|
|
}
|
|
|
|
export default function Notify(options: NotifyOptions | string) {
|
|
options = Object.assign({}, defaultOptions, parseOptions(options));
|
|
|
|
const context = options.context || getContext();
|
|
const notify = context.selectComponent(options.selector);
|
|
|
|
delete options.context;
|
|
delete options.selector;
|
|
|
|
if (notify) {
|
|
notify.set(options);
|
|
notify.show();
|
|
} else {
|
|
console.warn('未找到 van-notify 节点,请确认 selector 及 context 是否正确');
|
|
}
|
|
}
|