@ablogcms/notify
v3.2.28-beta.0
Published
管理画面のトースト通知状態管理
Keywords
Readme
@ablogcms/notify
管理画面の通知(notify)ドメイン層。キュー・重複抑制・タイマー pause/resume を持つ store と、
notify() 公開 API、既定プレゼンター ToastPresenter(見た目は @ablogcms/components/toast)を提供する。
通知(notify)と表示コンポーネント(プレゼンター)は一対多の関係で分離されており、
NotificationContainer の presenter prop で表示形式を差し替えられる。
使い方
import { notify } from '@ablogcms/notify';
notify.info('保存しました');
notify.success('公開しました');
notify.danger('エラーが発生しました'); // 既定で自動消滅しない(duration: 0)
notify.warning('確認してください');
notify.success('削除しました', {
description: 'ゴミ箱に移動しました。',
action: { label: '元に戻す', onClick: ({ dismiss }) => { restore(); dismiss(); } },
});
notify.promise(uploadFile(), {
loading: 'アップロード中…',
success: 'アップロードが完了しました',
error: (err) => `失敗しました: ${err.message}`,
});
notify.update(id, { type: 'success', title: '完了しました' });
notify.dismiss(id); // id 省略で全消しnotify(content, options?)/.success/.info/.warning/.danger: 通知を追加する(options.idを指定すると同 id の既存通知を更新する重複抑制になる)。notify.promise(promise, { loading, success, error }): Promise の状態遷移に合わせて通知を更新する。notify.update(id, options)/notify.dismiss(id?): 表示中の通知を更新・消去する。options.autoHide/options.onHideはduration/onCloseの@deprecatedエイリアスとして 引き続き動作する。NotificationContainer: 実際に通知を DOM へレンダリングするコンポーネント。ページに 1 度だけ マウントすれば、以降のnotify.*呼び出しに反応して表示される。presenter(既定ToastPresenter)・placement・limit・duration・overlap・labelを指定できる。
