mirror of
https://github.com/status-im/consul.git
synced 2025-01-10 05:45:46 +00:00
a6c990c6fe
* Upgrade @hashicorp/design-system-tokens to 1.9.0 * Upgrade @hashicorp/design-system-components to 1.8.1 * Upgrade @hashicorp/design-system-components and ember-in-viewport * Explicitly install ember-modifier@4.1.0 * rename copy-button * Fix how cleanup is done in with-copyable * Update aria-menu modifier for new structure * Update css-prop modifier to new structure * Convert did-upsert to regular class modifier * Update notification modifier for new structure * Update on-oustside modifier for new structure * Move destroy handler registration in with-copyable * Update style modifier for new structure * Update validate modifier for new structure * Guard against setting on destroyed object * Upgrade @hashicorp/design-system-components to 2.14.1 * Remove debugger * Guard against null in aria-menu * Fix undefined hash in validate addon * Upgrade ember-on-resize-modifier * Fix copy button import, missing import and array destructuring --------- Co-authored-by: wenincode <tyler.wendlandt@hashicorp.com>
49 lines
1.1 KiB
JavaScript
49 lines
1.1 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
import Modifier from 'ember-modifier';
|
|
import { inject as service } from '@ember/service';
|
|
import { registerDestructor } from '@ember/destroyable';
|
|
|
|
function cleanup(instance) {
|
|
if (instance && instance?.named?.sticky) {
|
|
instance.notify?.clearMessages();
|
|
}
|
|
}
|
|
export default class NotificationModifier extends Modifier {
|
|
@service('flashMessages') notify;
|
|
|
|
modify(element, _, named) {
|
|
this.named = named;
|
|
element.setAttribute('role', 'alert');
|
|
element.dataset['notification'] = null;
|
|
|
|
const options = {
|
|
timeout: 6000,
|
|
extendedTimeout: 300,
|
|
...named,
|
|
};
|
|
options.dom = element.outerHTML;
|
|
element.remove();
|
|
this.notify.clearMessages();
|
|
if (typeof options.after === 'function') {
|
|
Promise.resolve()
|
|
.then((_) => options.after())
|
|
.catch((e) => {
|
|
if (e.name !== 'TransitionAborted') {
|
|
throw e;
|
|
}
|
|
})
|
|
.then((_) => {
|
|
this.notify.add(options);
|
|
});
|
|
} else {
|
|
this.notify.add(options);
|
|
}
|
|
|
|
registerDestructor(this, cleanup);
|
|
}
|
|
}
|