Flag
<gstock-flag>
|
GstockFlag
Título
Use el atributo title para agregar un título al flag.
<gstock-flag title="Flag" open> Nothing fancy here, just a simple flag. </gstock-flag>
Para un título personalizado con HTML, use el slot title.
<gstock-flag open>
<div class="title" slot="title">
<gstock-icon name="bell" size="small"></gstock-icon>
Flag
</div>
Nothing fancy here, just a simple flag.
</gstock-flag>
<style>
.title {
display: flex;
color: var(--gstock-color-text-brand);
align-items: center;
gap: var(--gstock-legacy-spacing-gap-sm);
}
</style>
Duración
Utilice el atributo duration para ocultar automáticamente un flag
después de un período de tiempo. Esto es útil para mensajes con bandera que no
requieren reconocimiento.
<gstock-button>Show Flag</gstock-button>
<gstock-flag duration="3000" closable>
This flag will automatically hide itself after three seconds, unless you interact with it.
</gstock-flag>
<script type="module">
const flag = document.querySelector('gstock-flag');
const button = document.querySelector('gstock-button');
button.addEventListener('click', () => flag.show());
</script>
Color
Utilice el atributo color para cambiar el color del flag.
<gstock-flag title="Your changes have been saved" color="success" open>
You can safely exit the app now.
</gstock-flag>
<br />
<gstock-flag title="Your settings have been updated" color="information" open>
Settings will take effect on next login.
</gstock-flag>
<br />
<gstock-flag title="Your session has ended" color="warning" open>
Please login again to continue.
</gstock-flag>
<br />
<gstock-flag title="Your account has been deleted" color="danger" open>
We're very sorry to see you go!
</gstock-flag>
Cerrable
Agregue el atributo closable para mostrar un botón de cierre que
ocultará el flag.
<gstock-flag title="Closable" open closable> You can close this flag any time! </gstock-flag>
<script type="module">
const flag = document.querySelector('gstock-flag');
flag.addEventListener('gstock-after-hide-event', () => {
setTimeout(() => (flag.open = true), 2000);
});
</script>
Cuenta regresiva
Agregue el atributo countdown para mostrar una cuenta regresiva de
duración que mostrará el flag.
<gstock-button class="rtl">RTL countdown</gstock-button>
<gstock-button class="ltr">LTR countdown</gstock-button>
<gstock-flag title="RTL Countdown" duration="4000" countdown="rtl" closable>
This is a flag with RTL countdown
</gstock-flag>
<gstock-flag title="LTR Countdown" duration="4000" countdown="ltr" closable>
This is a flag with LTR countdown
</gstock-flag>
<script type="module">
const flagRTL = document.querySelector('gstock-flag[countdown="rtl"]');
const flagLTR = document.querySelector('gstock-flag[countdown="ltr"]');
const buttonRTL = document.querySelector('gstock-button.rtl');
const buttonLRT = document.querySelector('gstock-button.ltr');
buttonRTL.addEventListener('click', () => flagRTL.show());
buttonLRT.addEventListener('click', () => flagLTR.show());
</script>
Pausables
Agregue el atributo pauseable para mostrar un botón de pausa/reanudar
que ocultará el flag.
<gstock-button>Show Flag</gstock-button>
<gstock-flag title="Pauseable" duration="6000" pauseable closable>
You can pause/resume this flag any time!
</gstock-flag>
<script type="module">
const flag = document.querySelector('gstock-flag');
const button = document.querySelector('gstock-button');
button.addEventListener('click', () => flag.show());
</script>
Icono personalizado
Use el atributo icon para agregar un icono personalizado. De forma
predeterminada, cuando se establece el atributo color, el flag mostrará
el icono para ese color, pero puede personalizar un icono usando el atributo
icon.
<gstock-flag title="Custom Icon" icon="bell" open>
Nothing fancy here, just a simple flag.
</gstock-flag>
Para un icono personalizado con HTML, use el slot icon.
<gstock-flag title="Custom Icon" open>
<gstock-icon class="icon" slot="icon" name="bell"></gstock-icon>
Nothing fancy here, just a simple flag.
</gstock-flag>
<style>
.icon {
color: var(--gstock-legacy-color-semantic-warning-500);
}
</style>
Notificaciones emergentes
Para mostrar un flag como una notificación emergente, o “toast”, cree el flag y
llame a su método toast(). Esto moverá el flag fuera de su posición en
el DOM y dentro de
la pila de notificaciones emergentes
donde se mostrará. Una vez descartado, se eliminará completamente del DOM. Para
reutilizar una notificación emergente, guarde una referencia a ella y llame a
toast() nuevamente más tarde.
Siempre debe usar el atributo closable para que los usuarios puedan
descartar la notificación. También es común establecer una
duration razonable cuando la notificación no requiere reconocimiento.
<gstock-button color="success">Success</gstock-button>
<gstock-button color="information">Information</gstock-button>
<gstock-button color="warning">Warning</gstock-button>
<gstock-button color="danger">Danger</gstock-button>
<gstock-flag
title="Your changes have been saved"
color="success"
duration="5000"
closable
countdown="rtl"
pauseable>
You can safely exit the app now.
</gstock-flag>
<gstock-flag
title="Your settings have been updated"
color="information"
duration="5000"
closable
countdown="rtl"
pauseable>
Settings will take effect on next login.
</gstock-flag>
<gstock-flag
title="Your session has ended"
color="warning"
duration="5000"
closable
countdown="rtl"
pauseable>
Please login again to continue.
</gstock-flag>
<gstock-flag
title="Your account has been deleted"
color="danger"
duration="5000"
closable
countdown="rtl"
pauseable>
We're very sorry to see you go!
</gstock-flag>
<script type="module">
['success', 'information', 'warning', 'danger'].map(color => {
const button = document.querySelector(`gstock-button[color="${color}"]`);
const flag = document.querySelector(`gstock-flag[color="${color}"]`);
button.addEventListener('click', () => flag.toast());
});
</script>
Creación de notificaciones emergentes imperativamente
Para mayor comodidad, puede crear una utilidad que emita notificaciones emergentes
con una llamada a función en lugar de componerlas en su HTML. Para hacer esto,
genere el flag con JavaScript, agréguelo al cuerpo y llame al método
toast() como se muestra en el siguiente ejemplo.
<gstock-button>Create Toast</gstock-button>
<script type="module">
const button = document.querySelector('gstock-button');
let count = 0;
// Always escape HTML for text arguments!
function escapeHtml(html) {
const div = document.createElement('div');
div.textContent = html;
return div.innerHTML;
}
// Custom function to emit toast notifications
function notify(message, type = 'info', duration = 3000) {
const flag = Object.assign(document.createElement('gstock-flag'), {
closable: true,
duration: duration,
type,
title: 'Flag',
innerHTML: escapeHtml(message),
});
document.body.append(flag);
return flag.toast();
}
button.addEventListener('click', () => {
notify(`This is custom toast #${++count}`);
});
</script>
La pila de notificaciones emergentes
La pila de notificaciones emergentes es un elemento singleton de posición fija creado y gestionado internamente por el componente de flag. Se agregará y eliminará del DOM según sea necesario cuando se muestren notificaciones emergentes. Cuando más de una notificación emergente sea visible, se apilarán verticalmente en la pila de notificaciones emergentes.
De forma predeterminada, la pila de notificaciones emergentes se posiciona en la
parte superior derecha de la ventana gráfica. Puede cambiar su posición apuntando a
.gstock-toast-stack en su hoja de estilos. Para hacer que las
notificaciones emergentes aparezcan en la parte superior izquierda de la ventana
gráfica, por ejemplo, use los siguientes estilos.
.gstock-toast-stack {
left: 0;
right: auto;
}
Por diseño, no es posible mostrar notificaciones emergentes en más de una pila simultáneamente. Tal comportamiento es confuso y ofrece una mala experiencia de usuario.