| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // TODO: This file was created by bulk-decaffeinate.
- // Sanity-check the conversion and remove this comment.
- /*
- * decaffeinate suggestions:
- * DS002: Fix invalid constructor
- * DS206: Consider reworking classes to avoid initClass
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md
- */
- const Cls = (app.views.Notif = class Notif extends app.View {
- static initClass() {
- this.className = '_notif';
- this.activeClass = '_in';
- this.attributes =
- {role: 'alert'};
-
- this.defautOptions =
- {autoHide: 15000};
-
- this.events =
- {click: 'onClick'};
- }
- constructor(type, options) {
- this.onClick = this.onClick.bind(this);
- this.type = type;
- if (options == null) { options = {}; }
- this.options = options;
- this.options = $.extend({}, this.constructor.defautOptions, this.options);
- super(...arguments);
- }
- init() {
- this.show();
- }
- show() {
- if (this.timeout) {
- clearTimeout(this.timeout);
- this.timeout = this.delay(this.hide, this.options.autoHide);
- } else {
- this.render();
- this.position();
- this.activate();
- this.appendTo(document.body);
- this.el.offsetWidth; // force reflow
- this.addClass(this.constructor.activeClass);
- if (this.options.autoHide) { this.timeout = this.delay(this.hide, this.options.autoHide); }
- }
- }
- hide() {
- clearTimeout(this.timeout);
- this.timeout = null;
- this.detach();
- }
- render() {
- this.html(this.tmpl(`notif${this.type}`));
- }
- position() {
- const notifications = $$(`.${app.views.Notif.className}`);
- if (notifications.length) {
- const lastNotif = notifications[notifications.length - 1];
- this.el.style.top = lastNotif.offsetTop + lastNotif.offsetHeight + 16 + 'px';
- }
- }
- onClick(event) {
- if (event.which !== 1) { return; }
- const target = $.eventTarget(event);
- if (target.hasAttribute('data-behavior')) { return; }
- if ((target.tagName !== 'A') || target.classList.contains('_notif-close')) {
- $.stopEvent(event);
- this.hide();
- }
- }
- });
- Cls.initClass();
|