From cfbe16f9cc2b4a5bf6b027867ded8a0b6263da08 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 19 Oct 2023 10:14:49 -0500 Subject: [PATCH] DEV: Add option to float-kit toast to force auto-close (#24022) --- app/assets/javascripts/float-kit/addon/lib/constants.js | 1 + .../javascripts/float-kit/addon/lib/d-toast-instance.js | 5 +++++ app/assets/javascripts/float-kit/addon/services/toasts.js | 2 ++ 3 files changed, 8 insertions(+) diff --git a/app/assets/javascripts/float-kit/addon/lib/constants.js b/app/assets/javascripts/float-kit/addon/lib/constants.js index 6590e1820d8..f66b722ca1d 100644 --- a/app/assets/javascripts/float-kit/addon/lib/constants.js +++ b/app/assets/javascripts/float-kit/addon/lib/constants.js @@ -70,6 +70,7 @@ import DDefaultToast from "float-kit/components/d-default-toast"; export const TOAST = { options: { autoClose: true, + forceAutoClose: false, duration: 3000, component: DDefaultToast, }, diff --git a/app/assets/javascripts/float-kit/addon/lib/d-toast-instance.js b/app/assets/javascripts/float-kit/addon/lib/d-toast-instance.js index a6ae5dc8c67..d5f62069e09 100644 --- a/app/assets/javascripts/float-kit/addon/lib/d-toast-instance.js +++ b/app/assets/javascripts/float-kit/addon/lib/d-toast-instance.js @@ -46,6 +46,11 @@ export default class DToastInstance { @action cancelAutoClose() { + if (this.options.forceAutoClose) { + // Return early so that we do not cancel the autoClose timer. + return; + } + cancel(this.autoCloseHandler); } } diff --git a/app/assets/javascripts/float-kit/addon/services/toasts.js b/app/assets/javascripts/float-kit/addon/services/toasts.js index 792ec9f399a..533aaf1d63c 100644 --- a/app/assets/javascripts/float-kit/addon/services/toasts.js +++ b/app/assets/javascripts/float-kit/addon/services/toasts.js @@ -14,6 +14,8 @@ export default class Toasts extends Service { * * @param {Object} [options] - options passed to the toast component as `@toast` argument * @param {String} [options.duration] - The duration (ms) of the toast, will be closed after this time + * @param {Boolean} [options.autoClose=true] - When true, the toast will autoClose after the duration + * @param {Boolean} [options.forceAutoClose=false] - When true, toast will still autoClose following mouseover event * @param {ComponentClass} [options.component] - A component to render, will use `DDefaultToast` if not provided * @param {String} [options.class] - A class added to the d-toast element * @param {Object} [options.data] - An object which will be passed as the `@data` argument to the component