294 lines
12 KiB
JavaScript
294 lines
12 KiB
JavaScript
Livewire.on('reload-page', e => setTimeout(() => window.location.reload(), e.delay || 0));
|
|
|
|
// // import { showToast } from '../ui/toast.js'
|
|
//
|
|
// // — Livewire-Hooks (global)
|
|
// // document.addEventListener('livewire:init', () => {
|
|
// // if (window.Livewire?.on) {
|
|
// // window.Livewire.on('toast', (payload = {}) => showToast(payload))
|
|
// // }
|
|
// // })
|
|
//
|
|
// document.addEventListener('livewire:init', () => {
|
|
// // Neu: Livewire v3 Browser-Events
|
|
// window.addEventListener('toast', (e) => {
|
|
// const d = e?.detail || {};
|
|
// showToastGlass(d);
|
|
// });
|
|
//
|
|
// // Optional: Update/Dismiss/Clear per Event
|
|
// window.addEventListener('toast.update', (e) => {
|
|
// const d = e?.detail || {};
|
|
// if (d.id) window.toastraGlass?.update(d.id, d);
|
|
// });
|
|
// window.addEventListener('toast.clear', (e) => {
|
|
// window.toastraGlass?.clear(e?.detail?.position);
|
|
// });
|
|
// });
|
|
//
|
|
//
|
|
// // document.addEventListener('livewire:init', (e) => {
|
|
// // console.log(e)
|
|
// //
|
|
// // window.addEventListener('toast-reload', (e) => {
|
|
// // console.log(e)
|
|
// // setTimeout(() => window.location.reload(), e.delay || 0)
|
|
// // });
|
|
// // });
|
|
//
|
|
// // Adapter: normalisiert Payload und ruft toastraGlass
|
|
// function showToastGlass({
|
|
// id,
|
|
// type, state, // "success" | "warning" | "error" ODER "done" | "failed" | "running"
|
|
// text, message, title, // Textquellen
|
|
// badge, domain,
|
|
// position = 'bottom-right',
|
|
// duration = 0, // 0 = stehen lassen; bei done/failed auto auf 6000ms
|
|
// } = {}) {
|
|
// // Map: type -> state
|
|
// const t = (type || state || 'done').toLowerCase();
|
|
// const map = {success: 'done', ok: 'done', error: 'failed', danger: 'failed', info: 'queued', warning: 'queued'};
|
|
// const st = ['done', 'failed', 'running', 'queued'].includes(t) ? t : (map[t] || 'queued');
|
|
//
|
|
// const msg = message || text || title || '';
|
|
// const _id = id || ('toast-' + Date.now());
|
|
//
|
|
// if (window.toastraGlass?.show) {
|
|
// window.toastraGlass.show({
|
|
// id: _id,
|
|
// state: st, // queued|running|done|failed → färbt Badge/Icon
|
|
// badge, // z.B. "DNS", "Signup"
|
|
// domain, // optional: kleine Überschrift rechts
|
|
// message: msg,
|
|
// position,
|
|
// duration, // 0 = stehen lassen; sonst ms
|
|
// });
|
|
// } else if (window.toastr) {
|
|
// // Fallback: alte toastr API
|
|
// const level = (type || (st === 'failed' ? 'error' : st === 'done' ? 'success' : 'info'));
|
|
// window.toastr[level](msg, badge || domain || '');
|
|
// } else {
|
|
// // Minimal-Fallback
|
|
// const box = document.createElement('div');
|
|
// box.className = 'fixed top-4 right-4 z-[9999] rounded-xl bg-emerald-500/90 text-white px-4 py-3 backdrop-blur shadow-lg border border-white/10';
|
|
// box.textContent = msg || 'OK';
|
|
// document.body.appendChild(box);
|
|
// setTimeout(() => box.remove(), 3500);
|
|
// }
|
|
//
|
|
// return _id;
|
|
// }
|
|
//
|
|
// // — Session-Flash vom Backend (einmal pro Page-Load)
|
|
// function bootstrapFlashFromLayout() {
|
|
// const el = document.getElementById('__flash')
|
|
// if (!el) return
|
|
// try {
|
|
// const data = JSON.parse(el.textContent || '{}')
|
|
// if (data?.toast) showToast(data.toast)
|
|
// } catch {
|
|
// }
|
|
// }
|
|
//
|
|
// document.addEventListener('DOMContentLoaded', bootstrapFlashFromLayout)
|
|
//
|
|
// // — Optional: Echo/WebSocket-Kanal für „Push-Toasts“
|
|
// function setupEchoToasts() {
|
|
// if (!window.Echo) return
|
|
// // userId wird im Layout in das JSON injiziert (siehe unten)
|
|
// const el = document.getElementById('__flash')
|
|
// let uid = null
|
|
// try {
|
|
// uid = JSON.parse(el?.textContent || '{}')?.userId ?? null
|
|
// } catch {
|
|
// }
|
|
// if (!uid) return
|
|
//
|
|
// window.Echo.private(`users.${uid}`)
|
|
// .listen('.ToastPushed', (e) => {
|
|
// // e: { type, text, title }
|
|
// showToast(e)
|
|
// })
|
|
// }
|
|
//
|
|
// document.addEventListener('DOMContentLoaded', setupEchoToasts)
|
|
//
|
|
// // — Optional: global machen, falls du manuell aus JS/Blade rufen willst
|
|
// // window.showToast = showToast
|
|
//
|
|
//
|
|
// // document.addEventListener('livewire:init', () => {
|
|
// // Livewire.on('toastra:show', (payload) => {
|
|
// // // optionaler "mute" pro Nutzer lokal:
|
|
// // if (localStorage.getItem('toast:hide:' + payload.id)) return;
|
|
// //
|
|
// // const id = window.toastraGlass.show({
|
|
// // id: payload.id,
|
|
// // state: payload.state, // queued|running|done|failed
|
|
// // badge: payload.badge,
|
|
// // domain: payload.domain,
|
|
// // message: payload.message,
|
|
// // position: payload.position || 'bottom-center',
|
|
// // duration: payload.duration ?? 0,
|
|
// // close: payload.close !== false,
|
|
// // });
|
|
// //
|
|
// // // Wenn der User X klickt, markiere lokal als verborgen:
|
|
// // window.addEventListener('toastra:closed:' + id, () => {
|
|
// // localStorage.setItem('toast:hide:' + id, '1');
|
|
// // }, { once: true });
|
|
// // });
|
|
// // });
|
|
// // document.addEventListener('livewire:init', () => {
|
|
// // Livewire.on('notify', (payload) => {
|
|
// // const o = Array.isArray(payload) ? payload[0] : payload;
|
|
// // window.toastraGlass?.show({
|
|
// // id: o.id, state: o.state, badge: o.badge, domain: o.domain,
|
|
// // message: o.message, position: o.position || 'bottom-right',
|
|
// // duration: Number(o.duration ?? 0), close: o.close !== false,
|
|
// // finalNote: (o.state === 'done' || o.state === 'failed')
|
|
// // ? 'Diese Meldung verschwindet automatisch.' : ''
|
|
// // });
|
|
// // });
|
|
// // });
|
|
// // document.addEventListener('livewire:init', () => {
|
|
// // Livewire.on('notify', (payload) => {
|
|
// // // Livewire liefert das Event als Array mit einem Objekt
|
|
// // const o = Array.isArray(payload) ? payload[0] : payload;
|
|
// //
|
|
// // // Ein Aufruf reicht: gleiche id => ersetzt bestehenden Toast
|
|
// // window.toastraGlass?.show({
|
|
// // id: o.id,
|
|
// // state: o.state, // queued|running|done|failed
|
|
// // badge: o.badge, // z.B. CERTBOT
|
|
// // domain: o.domain, // z.B. mail.example.com
|
|
// // message: o.message,
|
|
// // position: o.position || 'bottom-right',
|
|
// // duration: Number(o.duration ?? 0),
|
|
// // close: o.close !== false,
|
|
// // // optional kannst du finalNote je nach state setzen:
|
|
// // finalNote: (o.state === 'done' || o.state === 'failed')
|
|
// // ? 'Diese Meldung verschwindet automatisch.'
|
|
// // : ''
|
|
// // });
|
|
// // });
|
|
// // });
|
|
//
|
|
// // document.addEventListener('livewire:init', () => {
|
|
// // Livewire.on('notify', (payload) => {
|
|
// // const e = Array.isArray(payload) ? payload[0] : payload;
|
|
// //
|
|
// // // e.state: 'queued'|'running'|'done'|'failed'
|
|
// // window.toastraGlass.show({
|
|
// // id: e.id || ('toast-'+Date.now()),
|
|
// // state: e.state || 'queued',
|
|
// // badge: e.badge || (e.type ? String(e.type).toUpperCase() : null),
|
|
// // domain: e.domain || '',
|
|
// // message: e.message ?? e.text ?? '',
|
|
// // position: e.position || 'bottom-right',
|
|
// // duration: typeof e.duration === 'number' ? e.duration : (['done','failed'].includes(e.state) ? 6000 : 0),
|
|
// // close: e.close ?? true,
|
|
// // finalNote: (['done','failed'].includes(e.state) ? 'Diese Meldung verschwindet nach Aktualisierung automatisch.' : '')
|
|
// // });
|
|
// // });
|
|
// // });
|
|
//
|
|
//
|
|
// // document.addEventListener('livewire:init', () => {
|
|
// // Livewire.on('notify', (event) => {
|
|
// // const p = Array.isArray(event) ? event[0] : event;
|
|
// //
|
|
// // window.toastraGlass.show({
|
|
// // id: p.id || ('toast-'+Date.now()),
|
|
// // state: (p.type || 'info'), // info|update|success|warning|error
|
|
// // title: p.title || '',
|
|
// // domain: p.domain || '',
|
|
// // message: p.message ?? p.text ?? '',
|
|
// // badge: p.badge || null,
|
|
// // duration: (typeof p.duration === 'number' ? p.duration : 0), // 0 = bleibt
|
|
// // position: p.position || 'bottom-center', // top-left|top-center|top-right|bottom-*
|
|
// // close: (p.close ?? true),
|
|
// // });
|
|
// // });
|
|
// // });
|
|
//
|
|
// // document.addEventListener('livewire:init', () => {
|
|
// // // 1) Events aus PHP/Livewire-Komponenten
|
|
// // Livewire.on('notify', (payload) => {
|
|
// // const e = payload[0] || payload;
|
|
// // toastra.notify({
|
|
// // id: e.id,
|
|
// // badge: e.badge || null,
|
|
// // replace: true,
|
|
// // title: e.title,
|
|
// // text: e.text,
|
|
// // subtitle: e.subtitle || null,
|
|
// // type: e.type,
|
|
// // // classname: e.classname,
|
|
// // duration: e.duration ?? 0,
|
|
// // close: e.close ?? true,
|
|
// // icon: e.icon || null,
|
|
// // });
|
|
// // });
|
|
// //
|
|
// // document.addEventListener('notify', (e) => {
|
|
// // console.log(e.detail);
|
|
// // });
|
|
// // // 2) Reine Browser-Events (für Konsole/JS)
|
|
// // // window.addEventListener('notify', (ev) => {
|
|
// // // const e = ev.detail || {};
|
|
// // // toastra.notify({
|
|
// // // id: e.id, replace: true,
|
|
// // // title: e.title, text: e.message,
|
|
// // // type: e.type, duration: e.duration ?? 0,
|
|
// // // close: e.close ?? true, icon: e.icon || null,
|
|
// // // });
|
|
// // // });
|
|
// // });
|
|
// //
|
|
// // // document.addEventListener('notify', (e) => {
|
|
// // // const d = e.detail;
|
|
// // // toastra.notify({
|
|
// // // id: d.id,
|
|
// // // title: d.title,
|
|
// // // text: d.text || d.message || '', // fallback
|
|
// // // type: d.type,
|
|
// // // duration: d.duration ?? 0,
|
|
// // // close: d.close ?? true,
|
|
// // // });
|
|
// // // });
|
|
// //
|
|
// // // document.addEventListener('livewire:init', () => {
|
|
// // // // Livewire.on('notify', (event) => {
|
|
// // // // toastra.notify({
|
|
// // // // title: event[0].title,
|
|
// // // // text: event[0].message,
|
|
// // // // type: event[0].type,
|
|
// // // // duration: event[0].duration,
|
|
// // // // close: event[0].close
|
|
// // // // });
|
|
// // // // });
|
|
// // //
|
|
// // // Livewire.on('notify', (payload) => {
|
|
// // // const e = payload[0] || payload;
|
|
// // // toastra.notify({
|
|
// // // id: e.id,
|
|
// // // replace: true,
|
|
// // // title: e.title,
|
|
// // // text: e.message,
|
|
// // // type: e.type,
|
|
// // // duration: e.duration ?? 0,
|
|
// // // close: e.close ?? true,
|
|
// // // icon: e.icon || null
|
|
// // // });
|
|
// // // });
|
|
// // //
|
|
// // // Livewire.on('notify-replace', (event) => {
|
|
// // // const opts = event[0] || {};
|
|
// // // const wrap = document.getElementById('notification');
|
|
// // // if (wrap) wrap.innerHTML = '';
|
|
// // // toastra.notify(opts);
|
|
// // // });
|
|
// // //
|
|
// // // });
|