1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-09 02:42:47 +00:00
Files
seahub/frontend/src/components/toast/toaster.js
杨顺强 ccab6f1552 Update react version 3 (#7453)
* update react version

* update reactstrap

* optimize code

* update react-select version

* update react-responsive

* update react-chartjs version

* update qrocde version

* update seafile-editor version

* update tldraw editor version

* fix code bug
2025-02-14 14:04:25 +08:00

72 lines
1.7 KiB
JavaScript

import React from 'react';
import { createRoot } from 'react-dom/client';
import ToastManager from './toastManager';
import './toaster.css';
const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
/**
* The Toaster manages the interactionsb between
* the ToasterManger and the toast API.
*/
export default class Toaster {
constructor() {
if (!isBrowser) return;
const container = document.createElement('div');
container.setAttribute('data-evergreen-toaster-container', '');
document.body.appendChild(container);
const root = createRoot(container);
root.render(
<ToastManager
bindNotify={this._bindNotify}
bindGetToasts={this._bindGetToasts}
bindCloseAll={this._bindCloseAll}
/>
);
}
_bindNotify = handler => {
this.notifyHandler = handler;
};
_bindGetToasts = handler => {
this.getToastsHandler = handler;
};
_bindCloseAll = handler => {
this.closeAllHandler = handler;
};
getToasts = () => {
return this.getToastsHandler();
};
closeAll = () => {
return this.closeAllHandler();
};
notify = (title, settings = {}) => {
return this.notifyHandler(title, { ...settings, intent: 'none' });
};
notifyInProgress = (title, settings = {}) => {
return this.notifyHandler(title, { ...settings, intent: 'notify-in-progress' });
};
success = (title, settings = {}) => {
return this.notifyHandler(title, { ...settings, intent: 'success' });
};
warning = (title, settings = {}) => {
return this.notifyHandler(title, { ...settings, intent: 'warning' });
};
danger = (title, settings = {}) => {
return this.notifyHandler(title, { ...settings, intent: 'danger' });
};
}